]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote-tracking branch 'upstream/develop' into 1601-dfrn
authorMichael Vogel <icarus@dabo.de>
Thu, 21 Jan 2016 22:05:02 +0000 (23:05 +0100)
committerMichael Vogel <icarus@dabo.de>
Thu, 21 Jan 2016 22:05:02 +0000 (23:05 +0100)
79 files changed:
boot.php
database.sql
doc/Settings.md
doc/database.md
doc/database/db_gcontact.md
doc/database/db_item.md
doc/database/db_oembed.md [new file with mode: 0644]
doc/database/db_parsed_url.md [new file with mode: 0644]
doc/database/db_thread.md
doc/database/db_unique_contacts.md [deleted file]
friendica_test_data.sql
htconfig.php
include/Contact.php
include/Photo.php
include/Scrape.php
include/acl_selectors.php
include/api.php
include/bbcode.php
include/config.php
include/conversation.php
include/cron.php
include/dbstructure.php
include/diaspora.php
include/discover_poco.php
include/features.php
include/group.php
include/identity.php
include/items.php
include/like.php
include/network.php
include/notifier.php
include/oembed.php
include/ostatus.php
include/plaintext.php
include/queue.php
include/remoteupdate.php [deleted file]
include/socgraph.php
include/text.php
include/threads.php
index.php
js/main.js
library/Chart.js-1.0.2/Chart.min.js [new file with mode: 0644]
library/Chart.js-1.0.2/LICENSE.md [new file with mode: 0644]
library/Chart.js-1.0.2/README.md [new file with mode: 0644]
mod/admin.php
mod/community.php
mod/contacts.php
mod/dirfind.php
mod/display.php
mod/follow.php
mod/friendica.php
mod/item.php
mod/network.php
mod/newmember.php
mod/parse_url.php
mod/poco.php
mod/settings.php
update.php
util/messages.po
view/de/messages.po
view/de/strings.php
view/fonts/shashape.css
view/global.css
view/nl/messages.po
view/nl/strings.php
view/templates/admin_aside.tpl
view/templates/admin_federation.tpl [new file with mode: 0644]
view/templates/admin_logs.tpl
view/templates/admin_plugins.tpl
view/templates/admin_remoteupdate.tpl [deleted file]
view/templates/admin_settings_features.tpl [new file with mode: 0644]
view/templates/admin_settings_head.tpl [new file with mode: 0644]
view/templates/admin_viewlogs.tpl [new file with mode: 0644]
view/templates/events.tpl
view/templates/events_reminder.tpl
view/templates/profile_advanced.tpl
view/theme/vier/style.css
view/theme/vier/style.php
view/theme/vier/templates/profile_advanced.tpl

index 497a97b0eca04a7c0062ef75e07c1cc934cce0ab..2242ba476d85f06e811eb872b4f435f5c2625ec0 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -36,7 +36,7 @@ define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_CODENAME',     'Asparagus');
 define ( 'FRIENDICA_VERSION',      '3.5-dev' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1191      );
+define ( 'DB_UPDATE_VERSION',      1193      );
 
 /**
  * @brief Constant with a HTML line break.
@@ -467,6 +467,7 @@ class App {
        public  $is_tablet;
        public  $is_friendica_app;
        public  $performance = array();
+       public  $callstack = array();
 
        public $nav_sel;
 
@@ -554,6 +555,12 @@ class App {
                $this->performance["marktime"] = 0;
                $this->performance["markstart"] = microtime(true);
 
+               $this->callstack["database"] = array();
+               $this->callstack["network"] = array();
+               $this->callstack["file"] = array();
+               $this->callstack["rendering"] = array();
+               $this->callstack["parser"] = array();
+
                $this->config = array();
                $this->page = array();
                $this->pager= array();
@@ -903,6 +910,10 @@ class App {
        }
 
        function get_cached_avatar_image($avatar_image){
+               return $avatar_image;
+
+               // The following code is deactivated. It doesn't seem to make any sense and it slows down the system.
+               /*
                if($this->cached_profile_image[$avatar_image])
                        return $this->cached_profile_image[$avatar_image];
 
@@ -922,6 +933,7 @@ class App {
                        }
                }
                return $this->cached_profile_image[$avatar_image];
+               */
        }
 
 
@@ -1016,6 +1028,20 @@ class App {
 
                $this->performance[$value] += (float)$duration;
                $this->performance["marktime"] += (float)$duration;
+
+               // Trace the different functions with their timestamps
+               $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
+
+               array_shift($trace);
+
+               $function = array();
+               foreach ($trace AS $func)
+                       $function[] = $func["function"];
+
+               $function = implode(", ", $function);
+
+               $this->callstack[$value][$function] += (float)$duration;
+
        }
 
        function mark_timestamp($mark) {
index e3768c1efb67432fed9159ef1bfaee5a3b5176dc..70b315ea244f0be305b8647be65e3e1f4fee2c73 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
--- Friendica 3.4.2 (Lily of the valley)
--- DB_UPDATE_VERSION 1190
+-- Friendica 3.5-dev (Asparagus)
+-- DB_UPDATE_VERSION 1193
 -- ------------------------------------------
 
 
@@ -8,20 +8,21 @@
 -- TABLE addon
 --
 CREATE TABLE IF NOT EXISTS `addon` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `name` varchar(255) NOT NULL DEFAULT '',
        `version` varchar(255) NOT NULL DEFAULT '',
        `installed` tinyint(1) NOT NULL DEFAULT 0,
        `hidden` tinyint(1) NOT NULL DEFAULT 0,
        `timestamp` bigint(20) NOT NULL DEFAULT 0,
-       `plugin_admin` tinyint(1) NOT NULL DEFAULT 0
+       `plugin_admin` tinyint(1) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE attach
 --
 CREATE TABLE IF NOT EXISTS `attach` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `hash` varchar(64) NOT NULL DEFAULT '',
        `filename` varchar(255) NOT NULL DEFAULT '',
@@ -33,28 +34,31 @@ CREATE TABLE IF NOT EXISTS `attach` (
        `allow_cid` mediumtext NOT NULL,
        `allow_gid` mediumtext NOT NULL,
        `deny_cid` mediumtext NOT NULL,
-       `deny_gid` mediumtext NOT NULL
+       `deny_gid` mediumtext NOT NULL,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE auth_codes
 --
 CREATE TABLE IF NOT EXISTS `auth_codes` (
-       `id` varchar(40) NOT NULL PRIMARY KEY,
+       `id` varchar(40) NOT NULL,
        `client_id` varchar(20) NOT NULL DEFAULT '',
        `redirect_uri` varchar(200) NOT NULL DEFAULT '',
        `expires` int(11) NOT NULL DEFAULT 0,
-       `scope` varchar(250) NOT NULL DEFAULT ''
+       `scope` varchar(250) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE cache
 --
 CREATE TABLE IF NOT EXISTS `cache` (
-       `k` varchar(255) NOT NULL PRIMARY KEY,
+       `k` varchar(255) NOT NULL,
        `v` text NOT NULL,
        `expire_mode` int(11) NOT NULL DEFAULT 0,
        `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`k`),
         INDEX `updated` (`updated`)
 ) DEFAULT CHARSET=utf8;
 
@@ -62,34 +66,37 @@ CREATE TABLE IF NOT EXISTS `cache` (
 -- TABLE challenge
 --
 CREATE TABLE IF NOT EXISTS `challenge` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `challenge` varchar(255) NOT NULL DEFAULT '',
        `dfrn-id` varchar(255) NOT NULL DEFAULT '',
        `expire` int(11) NOT NULL DEFAULT 0,
        `type` varchar(255) NOT NULL DEFAULT '',
-       `last_update` varchar(255) NOT NULL DEFAULT ''
+       `last_update` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE clients
 --
 CREATE TABLE IF NOT EXISTS `clients` (
-       `client_id` varchar(20) NOT NULL PRIMARY KEY,
+       `client_id` varchar(20) NOT NULL,
        `pw` varchar(20) NOT NULL DEFAULT '',
        `redirect_uri` varchar(200) NOT NULL DEFAULT '',
        `name` text,
        `icon` text,
-       `uid` int(11) NOT NULL DEFAULT 0
+       `uid` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`client_id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE config
 --
 CREATE TABLE IF NOT EXISTS `config` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `cat` varchar(255) NOT NULL DEFAULT '',
        `k` varchar(255) NOT NULL DEFAULT '',
        `v` text NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `cat_k` (`cat`(30),`k`(30))
 ) DEFAULT CHARSET=utf8;
 
@@ -97,7 +104,7 @@ CREATE TABLE IF NOT EXISTS `config` (
 -- TABLE contact
 --
 CREATE TABLE IF NOT EXISTS `contact` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `self` tinyint(1) NOT NULL DEFAULT 0,
@@ -162,6 +169,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
        `notify_new_posts` tinyint(1) NOT NULL DEFAULT 0,
        `fetch_further_information` tinyint(1) NOT NULL DEFAULT 0,
        `ffi_keyword_blacklist` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -169,7 +177,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
 -- TABLE conv
 --
 CREATE TABLE IF NOT EXISTS `conv` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `guid` varchar(64) NOT NULL DEFAULT '',
        `recips` mediumtext NOT NULL,
        `uid` int(11) NOT NULL DEFAULT 0,
@@ -177,6 +185,7 @@ CREATE TABLE IF NOT EXISTS `conv` (
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `subject` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -184,27 +193,29 @@ CREATE TABLE IF NOT EXISTS `conv` (
 -- TABLE deliverq
 --
 CREATE TABLE IF NOT EXISTS `deliverq` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `cmd` varchar(32) NOT NULL DEFAULT '',
        `item` int(11) NOT NULL DEFAULT 0,
-       `contact` int(11) NOT NULL DEFAULT 0
+       `contact` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE dsprphotoq
 --
 CREATE TABLE IF NOT EXISTS `dsprphotoq` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `msg` mediumtext NOT NULL,
-       `attempt` tinyint(4) NOT NULL DEFAULT 0
+       `attempt` tinyint(4) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE event
 --
 CREATE TABLE IF NOT EXISTS `event` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `cid` int(11) NOT NULL DEFAULT 0,
        `uri` varchar(255) NOT NULL DEFAULT '',
@@ -223,6 +234,7 @@ CREATE TABLE IF NOT EXISTS `event` (
        `allow_gid` mediumtext NOT NULL,
        `deny_cid` mediumtext NOT NULL,
        `deny_gid` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -230,7 +242,7 @@ CREATE TABLE IF NOT EXISTS `event` (
 -- TABLE fcontact
 --
 CREATE TABLE IF NOT EXISTS `fcontact` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `url` varchar(255) NOT NULL DEFAULT '',
        `name` varchar(255) NOT NULL DEFAULT '',
        `photo` varchar(255) NOT NULL DEFAULT '',
@@ -246,6 +258,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
        `alias` varchar(255) NOT NULL DEFAULT '',
        `pubkey` text NOT NULL,
        `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`),
         INDEX `addr` (`addr`)
 ) DEFAULT CHARSET=utf8;
 
@@ -253,20 +266,22 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
 -- TABLE ffinder
 --
 CREATE TABLE IF NOT EXISTS `ffinder` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `cid` int(10) unsigned NOT NULL DEFAULT 0,
-       `fid` int(10) unsigned NOT NULL DEFAULT 0
+       `fid` int(10) unsigned NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE fserver
 --
 CREATE TABLE IF NOT EXISTS `fserver` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `server` varchar(255) NOT NULL DEFAULT '',
        `posturl` varchar(255) NOT NULL DEFAULT '',
        `key` text NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `server` (`server`)
 ) DEFAULT CHARSET=utf8;
 
@@ -274,7 +289,7 @@ CREATE TABLE IF NOT EXISTS `fserver` (
 -- TABLE fsuggest
 --
 CREATE TABLE IF NOT EXISTS `fsuggest` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `cid` int(11) NOT NULL DEFAULT 0,
        `name` varchar(255) NOT NULL DEFAULT '',
@@ -282,16 +297,18 @@ CREATE TABLE IF NOT EXISTS `fsuggest` (
        `request` varchar(255) NOT NULL DEFAULT '',
        `photo` varchar(255) NOT NULL DEFAULT '',
        `note` text NOT NULL,
-       `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
+       `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE gcign
 --
 CREATE TABLE IF NOT EXISTS `gcign` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `gcid` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `gcid` (`gcid`)
 ) DEFAULT CHARSET=utf8;
@@ -300,7 +317,7 @@ CREATE TABLE IF NOT EXISTS `gcign` (
 -- TABLE gcontact
 --
 CREATE TABLE IF NOT EXISTS `gcontact` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `name` varchar(255) NOT NULL DEFAULT '',
        `nick` varchar(255) NOT NULL DEFAULT '',
        `url` varchar(255) NOT NULL DEFAULT '',
@@ -315,11 +332,17 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
        `about` text NOT NULL,
        `keywords` text NOT NULL,
        `gender` varchar(32) NOT NULL DEFAULT '',
+       `birthday` varchar(32) NOT NULL DEFAULT '0000-00-00',
        `community` tinyint(1) NOT NULL DEFAULT 0,
+       `hide` tinyint(1) NOT NULL DEFAULT 0,
+       `nsfw` tinyint(1) NOT NULL DEFAULT 0,
        `network` varchar(255) NOT NULL DEFAULT '',
        `addr` varchar(255) NOT NULL DEFAULT '',
+       `notify` text NOT NULL,
+       `alias` varchar(255) NOT NULL DEFAULT '',
        `generation` tinyint(3) NOT NULL DEFAULT 0,
        `server_url` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `nurl` (`nurl`),
         INDEX `updated` (`updated`)
 ) DEFAULT CHARSET=utf8;
@@ -328,12 +351,13 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
 -- TABLE glink
 --
 CREATE TABLE IF NOT EXISTS `glink` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `cid` int(11) NOT NULL DEFAULT 0,
        `uid` int(11) NOT NULL DEFAULT 0,
        `gcid` int(11) NOT NULL DEFAULT 0,
        `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`),
         INDEX `gcid` (`gcid`),
         INDEX `zcid` (`zcid`)
@@ -343,11 +367,12 @@ CREATE TABLE IF NOT EXISTS `glink` (
 -- TABLE group
 --
 CREATE TABLE IF NOT EXISTS `group` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `visible` tinyint(1) NOT NULL DEFAULT 0,
        `deleted` tinyint(1) NOT NULL DEFAULT 0,
        `name` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -355,10 +380,11 @@ CREATE TABLE IF NOT EXISTS `group` (
 -- TABLE group_member
 --
 CREATE TABLE IF NOT EXISTS `group_member` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `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`)
 ) DEFAULT CHARSET=utf8;
 
@@ -366,7 +392,7 @@ CREATE TABLE IF NOT EXISTS `group_member` (
 -- TABLE gserver
 --
 CREATE TABLE IF NOT EXISTS `gserver` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `url` varchar(255) NOT NULL DEFAULT '',
        `nurl` varchar(255) NOT NULL DEFAULT '',
        `version` varchar(255) NOT NULL DEFAULT '',
@@ -381,6 +407,7 @@ CREATE TABLE IF NOT EXISTS `gserver` (
        `last_poco_query` datetime DEFAULT '0000-00-00 00:00:00',
        `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`)
 ) DEFAULT CHARSET=utf8;
 
@@ -388,11 +415,12 @@ CREATE TABLE IF NOT EXISTS `gserver` (
 -- TABLE guid
 --
 CREATE TABLE IF NOT EXISTS `guid` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `guid` varchar(255) NOT NULL DEFAULT '',
        `plink` varchar(255) NOT NULL DEFAULT '',
        `uri` varchar(255) NOT NULL DEFAULT '',
        `network` varchar(32) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `guid` (`guid`),
         INDEX `plink` (`plink`),
         INDEX `uri` (`uri`)
@@ -402,11 +430,12 @@ CREATE TABLE IF NOT EXISTS `guid` (
 -- TABLE hook
 --
 CREATE TABLE IF NOT EXISTS `hook` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `hook` varchar(255) NOT NULL DEFAULT '',
        `file` varchar(255) NOT NULL DEFAULT '',
        `function` varchar(255) NOT NULL DEFAULT '',
        `priority` int(11) unsigned NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `hook_file_function` (`hook`(30),`file`(60),`function`(30))
 ) DEFAULT CHARSET=utf8;
 
@@ -414,7 +443,7 @@ CREATE TABLE IF NOT EXISTS `hook` (
 -- TABLE intro
 --
 CREATE TABLE IF NOT EXISTS `intro` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `fid` int(11) NOT NULL DEFAULT 0,
        `contact-id` int(11) NOT NULL DEFAULT 0,
@@ -424,18 +453,20 @@ CREATE TABLE IF NOT EXISTS `intro` (
        `hash` varchar(255) NOT NULL DEFAULT '',
        `datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `blocked` tinyint(1) NOT NULL DEFAULT 1,
-       `ignore` tinyint(1) NOT NULL DEFAULT 0
+       `ignore` tinyint(1) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE item
 --
 CREATE TABLE IF NOT EXISTS `item` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `guid` varchar(255) NOT NULL DEFAULT '',
        `uri` varchar(255) NOT NULL DEFAULT '',
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `contact-id` int(11) NOT NULL DEFAULT 0,
+       `gcontact-id` int(11) unsigned NOT NULL DEFAULT 0,
        `type` varchar(255) NOT NULL DEFAULT '',
        `wall` tinyint(1) NOT NULL DEFAULT 0,
        `gravity` tinyint(1) NOT NULL DEFAULT 0,
@@ -493,6 +524,7 @@ CREATE TABLE IF NOT EXISTS `item` (
        `rendered-hash` varchar(32) NOT NULL DEFAULT '',
        `rendered-html` mediumtext NOT NULL,
        `global` tinyint(1) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `guid` (`guid`),
         INDEX `uri` (`uri`),
         INDEX `parent` (`parent`),
@@ -509,6 +541,7 @@ CREATE TABLE IF NOT EXISTS `item` (
         INDEX `uid_thrparent` (`uid`,`thr-parent`),
         INDEX `uid_parenturi` (`uid`,`parent-uri`),
         INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`),
+        INDEX `gcontactid_uid_created` (`gcontact-id`,`uid`,`created`),
         INDEX `wall_body` (`wall`,`body`(6)),
         INDEX `uid_visible_moderated_created` (`uid`,`visible`,`moderated`,`created`),
         INDEX `uid_uri` (`uid`,`uri`),
@@ -531,11 +564,12 @@ CREATE TABLE IF NOT EXISTS `item` (
 -- TABLE item_id
 --
 CREATE TABLE IF NOT EXISTS `item_id` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `iid` int(11) NOT NULL DEFAULT 0,
        `uid` int(11) NOT NULL DEFAULT 0,
        `sid` varchar(255) NOT NULL DEFAULT '',
        `service` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `sid` (`sid`),
         INDEX `service` (`service`),
@@ -546,17 +580,18 @@ CREATE TABLE IF NOT EXISTS `item_id` (
 -- TABLE locks
 --
 CREATE TABLE IF NOT EXISTS `locks` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `name` varchar(128) NOT NULL DEFAULT '',
        `locked` tinyint(1) NOT NULL DEFAULT 0,
-       `created` datetime DEFAULT '0000-00-00 00:00:00'
+       `created` datetime DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE mail
 --
 CREATE TABLE IF NOT EXISTS `mail` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `guid` varchar(64) NOT NULL DEFAULT '',
        `from-name` varchar(255) NOT NULL DEFAULT '',
@@ -573,6 +608,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
        `uri` varchar(255) NOT NULL DEFAULT '',
        `parent-uri` varchar(255) NOT NULL DEFAULT '',
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `guid` (`guid`),
         INDEX `convid` (`convid`),
@@ -585,7 +621,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
 -- TABLE mailacct
 --
 CREATE TABLE IF NOT EXISTS `mailacct` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `server` varchar(255) NOT NULL DEFAULT '',
        `port` int(11) NOT NULL DEFAULT 0,
@@ -597,16 +633,18 @@ CREATE TABLE IF NOT EXISTS `mailacct` (
        `action` int(11) NOT NULL DEFAULT 0,
        `movetofolder` varchar(255) NOT NULL DEFAULT '',
        `pubmail` tinyint(1) NOT NULL DEFAULT 0,
-       `last_check` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
+       `last_check` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE manage
 --
 CREATE TABLE IF NOT EXISTS `manage` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `mid` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `uid_mid` (`uid`,`mid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -614,7 +652,7 @@ CREATE TABLE IF NOT EXISTS `manage` (
 -- TABLE notify
 --
 CREATE TABLE IF NOT EXISTS `notify` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `hash` varchar(64) NOT NULL DEFAULT '',
        `type` int(11) NOT NULL DEFAULT 0,
        `name` varchar(255) NOT NULL DEFAULT '',
@@ -629,6 +667,7 @@ CREATE TABLE IF NOT EXISTS `notify` (
        `seen` tinyint(1) NOT NULL DEFAULT 0,
        `verb` varchar(255) NOT NULL DEFAULT '',
        `otype` varchar(16) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -636,24 +675,50 @@ CREATE TABLE IF NOT EXISTS `notify` (
 -- TABLE notify-threads
 --
 CREATE TABLE IF NOT EXISTS `notify-threads` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `notify-id` int(11) NOT NULL DEFAULT 0,
        `master-parent-item` int(10) unsigned NOT NULL DEFAULT 0,
        `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`)
 ) DEFAULT CHARSET=utf8;
 
+--
+-- TABLE oembed
+--
+CREATE TABLE IF NOT EXISTS `oembed` (
+       `url` varchar(255) NOT NULL,
+       `content` text NOT NULL,
+       `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`url`),
+        INDEX `created` (`created`)
+) DEFAULT CHARSET=utf8;
+
+--
+-- TABLE parsed_url
+--
+CREATE TABLE IF NOT EXISTS `parsed_url` (
+       `url` varchar(255) NOT NULL,
+       `guessing` tinyint(1) NOT NULL DEFAULT 0,
+       `oembed` tinyint(1) NOT NULL DEFAULT 0,
+       `content` text NOT NULL,
+       `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`url`,`guessing`,`oembed`),
+        INDEX `created` (`created`)
+) DEFAULT CHARSET=utf8;
+
 --
 -- TABLE pconfig
 --
 CREATE TABLE IF NOT EXISTS `pconfig` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `cat` varchar(255) NOT NULL DEFAULT '',
        `k` varchar(255) NOT NULL DEFAULT '',
        `v` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid_cat_k` (`uid`,`cat`(30),`k`(30))
 ) DEFAULT CHARSET=utf8;
 
@@ -661,7 +726,7 @@ CREATE TABLE IF NOT EXISTS `pconfig` (
 -- TABLE photo
 --
 CREATE TABLE IF NOT EXISTS `photo` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `contact-id` int(10) unsigned NOT NULL DEFAULT 0,
        `guid` varchar(64) NOT NULL DEFAULT '',
@@ -683,6 +748,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
        `allow_gid` mediumtext NOT NULL,
        `deny_cid` mediumtext NOT NULL,
        `deny_gid` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `resource-id` (`resource-id`),
         INDEX `guid` (`guid`)
@@ -692,7 +758,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
 -- TABLE poll
 --
 CREATE TABLE IF NOT EXISTS `poll` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `q0` mediumtext NOT NULL,
        `q1` mediumtext NOT NULL,
@@ -704,6 +770,7 @@ CREATE TABLE IF NOT EXISTS `poll` (
        `q7` mediumtext NOT NULL,
        `q8` mediumtext NOT NULL,
        `q9` mediumtext NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`)
 ) DEFAULT CHARSET=utf8;
 
@@ -711,9 +778,10 @@ CREATE TABLE IF NOT EXISTS `poll` (
 -- TABLE poll_result
 --
 CREATE TABLE IF NOT EXISTS `poll_result` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `poll_id` int(11) NOT NULL DEFAULT 0,
        `choice` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `poll_id` (`poll_id`),
         INDEX `choice` (`choice`)
 ) DEFAULT CHARSET=utf8;
@@ -722,7 +790,7 @@ CREATE TABLE IF NOT EXISTS `poll_result` (
 -- TABLE profile
 --
 CREATE TABLE IF NOT EXISTS `profile` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `profile-name` varchar(255) NOT NULL DEFAULT '',
        `is-default` tinyint(1) NOT NULL DEFAULT 0,
@@ -763,6 +831,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`)
 ) DEFAULT CHARSET=utf8;
 
@@ -770,39 +839,42 @@ CREATE TABLE IF NOT EXISTS `profile` (
 -- TABLE profile_check
 --
 CREATE TABLE IF NOT EXISTS `profile_check` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `cid` int(10) unsigned NOT NULL DEFAULT 0,
        `dfrn_id` varchar(255) NOT NULL DEFAULT '',
        `sec` varchar(255) NOT NULL DEFAULT '',
-       `expire` int(11) NOT NULL DEFAULT 0
+       `expire` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE push_subscriber
 --
 CREATE TABLE IF NOT EXISTS `push_subscriber` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `callback_url` varchar(255) NOT NULL DEFAULT '',
        `topic` varchar(255) NOT NULL DEFAULT '',
        `nickname` varchar(255) NOT NULL DEFAULT '',
        `push` int(11) NOT NULL DEFAULT 0,
        `last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-       `secret` varchar(255) NOT NULL DEFAULT ''
+       `secret` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE queue
 --
 CREATE TABLE IF NOT EXISTS `queue` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `cid` int(11) NOT NULL DEFAULT 0,
        `network` varchar(32) NOT NULL DEFAULT '',
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `content` mediumtext NOT NULL,
        `batch` tinyint(1) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `cid` (`cid`),
         INDEX `created` (`created`),
         INDEX `last` (`last`),
@@ -814,21 +886,23 @@ CREATE TABLE IF NOT EXISTS `queue` (
 -- TABLE register
 --
 CREATE TABLE IF NOT EXISTS `register` (
-       `id` int(11) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) unsigned NOT NULL auto_increment,
        `hash` varchar(255) NOT NULL DEFAULT '',
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `uid` int(11) unsigned NOT NULL DEFAULT 0,
        `password` varchar(255) NOT NULL DEFAULT '',
-       `language` varchar(16) NOT NULL DEFAULT ''
+       `language` varchar(16) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE search
 --
 CREATE TABLE IF NOT EXISTS `search` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `term` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `term` (`term`)
 ) DEFAULT CHARSET=utf8;
@@ -837,10 +911,11 @@ CREATE TABLE IF NOT EXISTS `search` (
 -- TABLE session
 --
 CREATE TABLE IF NOT EXISTS `session` (
-       `id` bigint(20) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` bigint(20) unsigned NOT NULL auto_increment,
        `sid` varchar(255) NOT NULL DEFAULT '',
        `data` text NOT NULL,
        `expire` int(10) unsigned NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`),
         INDEX `sid` (`sid`),
         INDEX `expire` (`expire`)
 ) DEFAULT CHARSET=utf8;
@@ -849,12 +924,13 @@ CREATE TABLE IF NOT EXISTS `session` (
 -- TABLE sign
 --
 CREATE TABLE IF NOT EXISTS `sign` (
-       `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `id` int(10) unsigned NOT NULL auto_increment,
        `iid` int(10) unsigned NOT NULL DEFAULT 0,
        `retract_iid` int(10) unsigned NOT NULL DEFAULT 0,
        `signed_text` mediumtext NOT NULL,
        `signature` text NOT NULL,
        `signer` varchar(255) NOT NULL DEFAULT '',
+        PRIMARY KEY(`id`),
         INDEX `iid` (`iid`),
         INDEX `retract_iid` (`retract_iid`)
 ) DEFAULT CHARSET=utf8;
@@ -863,12 +939,13 @@ CREATE TABLE IF NOT EXISTS `sign` (
 -- TABLE spam
 --
 CREATE TABLE IF NOT EXISTS `spam` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `uid` int(11) NOT NULL DEFAULT 0,
        `spam` int(11) NOT NULL DEFAULT 0,
        `ham` int(11) NOT NULL DEFAULT 0,
        `term` varchar(255) NOT NULL DEFAULT '',
        `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `spam` (`spam`),
         INDEX `ham` (`ham`),
@@ -879,7 +956,7 @@ CREATE TABLE IF NOT EXISTS `spam` (
 -- TABLE term
 --
 CREATE TABLE IF NOT EXISTS `term` (
-       `tid` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
+       `tid` int(10) unsigned NOT NULL auto_increment,
        `oid` int(10) unsigned NOT NULL DEFAULT 0,
        `otype` tinyint(3) unsigned NOT NULL DEFAULT 0,
        `type` tinyint(3) unsigned NOT NULL DEFAULT 0,
@@ -891,6 +968,7 @@ CREATE TABLE IF NOT EXISTS `term` (
        `global` tinyint(1) NOT NULL DEFAULT 0,
        `aid` int(10) unsigned NOT NULL DEFAULT 0,
        `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`),
@@ -903,9 +981,10 @@ CREATE TABLE IF NOT EXISTS `term` (
 -- TABLE thread
 --
 CREATE TABLE IF NOT EXISTS `thread` (
-       `iid` int(10) unsigned NOT NULL DEFAULT 0 PRIMARY KEY,
+       `iid` int(10) unsigned NOT NULL DEFAULT 0,
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `contact-id` int(11) unsigned NOT NULL DEFAULT 0,
+       `gcontact-id` int(11) unsigned NOT NULL DEFAULT 0,
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
@@ -926,12 +1005,15 @@ CREATE TABLE IF NOT EXISTS `thread` (
        `forum_mode` tinyint(1) NOT NULL DEFAULT 0,
        `mention` tinyint(1) NOT NULL DEFAULT 0,
        `network` varchar(32) NOT NULL DEFAULT '',
+        PRIMARY KEY(`iid`),
         INDEX `created` (`created`),
         INDEX `commented` (`commented`),
         INDEX `uid_network_commented` (`uid`,`network`,`commented`),
         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`)
@@ -941,33 +1023,20 @@ CREATE TABLE IF NOT EXISTS `thread` (
 -- TABLE tokens
 --
 CREATE TABLE IF NOT EXISTS `tokens` (
-       `id` varchar(40) NOT NULL PRIMARY KEY,
+       `id` varchar(40) NOT NULL,
        `secret` text NOT NULL,
        `client_id` varchar(20) NOT NULL DEFAULT '',
        `expires` int(11) NOT NULL DEFAULT 0,
        `scope` varchar(200) NOT NULL DEFAULT '',
-       `uid` int(11) NOT NULL DEFAULT 0
-) DEFAULT CHARSET=utf8;
-
---
--- TABLE unique_contacts
---
-CREATE TABLE IF NOT EXISTS `unique_contacts` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
-       `url` varchar(255) NOT NULL DEFAULT '',
-       `nick` varchar(255) NOT NULL DEFAULT '',
-       `name` varchar(255) NOT NULL DEFAULT '',
-       `avatar` varchar(255) NOT NULL DEFAULT '',
-       `location` varchar(255) NOT NULL DEFAULT '',
-       `about` text NOT NULL,
-        INDEX `url` (`url`)
+       `uid` int(11) NOT NULL DEFAULT 0,
+        PRIMARY KEY(`id`)
 ) DEFAULT CHARSET=utf8;
 
 --
 -- TABLE user
 --
 CREATE TABLE IF NOT EXISTS `user` (
-       `uid` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `uid` int(11) NOT NULL auto_increment,
        `guid` varchar(64) NOT NULL DEFAULT '',
        `username` varchar(255) NOT NULL DEFAULT '',
        `password` varchar(255) NOT NULL DEFAULT '',
@@ -1009,6 +1078,7 @@ CREATE TABLE IF NOT EXISTS `user` (
        `deny_cid` mediumtext NOT NULL,
        `deny_gid` mediumtext NOT NULL,
        `openidserver` text NOT NULL,
+        PRIMARY KEY(`uid`),
         INDEX `nickname` (`nickname`)
 ) DEFAULT CHARSET=utf8;
 
@@ -1016,8 +1086,9 @@ CREATE TABLE IF NOT EXISTS `user` (
 -- TABLE userd
 --
 CREATE TABLE IF NOT EXISTS `userd` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `username` varchar(255) NOT NULL,
+        PRIMARY KEY(`id`),
         INDEX `username` (`username`)
 ) DEFAULT CHARSET=utf8;
 
@@ -1025,12 +1096,13 @@ CREATE TABLE IF NOT EXISTS `userd` (
 -- TABLE workerqueue
 --
 CREATE TABLE IF NOT EXISTS `workerqueue` (
-       `id` int(11) NOT NULL auto_increment PRIMARY KEY,
+       `id` int(11) NOT NULL auto_increment,
        `parameter` text NOT NULL,
        `priority` tinyint(3) unsigned NOT NULL DEFAULT 0,
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `pid` int(11) NOT NULL DEFAULT 0,
        `executed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY(`id`),
         INDEX `created` (`created`)
 ) DEFAULT CHARSET=utf8;
 
index ae7d916078c8017a2d7243ebbf1ab097a88e335d..86254cb29e37f65dfbe521ba32813100356dd0aa 100644 (file)
@@ -24,6 +24,9 @@ You are not required to provide the year.
 System settings
 ---
 
+**Settings should be done in the admin panel** (/admin).
+Those settings found in the database, will always override the settings added to the ``.htconfig.php`` file.
+
 ###Language
 
 Please see util/README for information on creating language translations.
@@ -219,6 +222,8 @@ LOGGER_DEBUG will show a good deal of information about system activity but will
 You may also select LOGGER_ALL but due to the volume of information we recommend only enabling this when you are tracking down a specific problem.
 Other log levels are possible but are not being used at the present time. 
 
+Please be aware that turning on the logging can fill up the disk space on your server relatively quick.
+You should take preventions with e.g. [logrotate](https://en.wikipedia.org/wiki/Log_rotation) or similar tools.
 
 ###PHP error logging
 
@@ -237,4 +242,6 @@ The vast majority of issues reported at these levels are completely harmless.
 Please report to the developers any errors you encounter in the logs using the recommended settings above.
 They generally indicate issues which need to be resolved. 
 
-If you encounter a blank (white) page when using the application, view the PHP logs - as this almost always indicates an error has occurred.  
+If you encounter a blank (white) page when using the application, view the PHP logs - as this almost always indicates an error has occurred.
+
+*Note*: PHP logging cannot be activated from the admin panel but has to be configured from the ``.htconfig.php`` file.
index 1893f77d0cb3362a763d96b0a3673c83b77a55e1..a0b28f4e84dbf331300cadeec7498bb1a57c1fa7 100644 (file)
@@ -38,6 +38,8 @@ Database Tables
 | [manage](help/database/db_manage)                    | table of accounts that can "su" each other       |
 | [notify](help/database/db_notify)                    | notifications                                    |
 | [notify-threads](help/database/db_notify-threads)    |                                                  |
+| [oembed](help/database/db_oembed)                    | cache for OEmbed queries                         |
+| [parsed_url](help/database/db_parsed_url)            | cache for "parse_url" queries                    |
 | [pconfig](help/database/db_pconfig)                  | personal (per user) configuration storage        |
 | [photo](help/database/db_photo)                      | photo storage                                    |
 | [poll](help/database/db_poll)                        | data for polls                                   |
@@ -54,7 +56,6 @@ Database Tables
 | [term](help/database/db_term)                        | item taxonomy (categories, tags, etc.) table     |
 | [thread](help/database/db_thread)                    |                                                  |
 | [tokens](help/database/db_tokens)                    | OAuth usage                                      |
-| [unique_contacts](help/database/db_unique_contacts)  |                                                  |
 | [user](help/database/db_user)                        | local user table                                 |
 | [userd](help/database/db_userd)                      |                                                  |
 | [workerqueue](help/database/db_workerqueue)          |                                                  |
index 8e9de43c96fb99827970be4c99a810fd9f796627..c47e72622816f760c7e3f07f83b94456fb15f276 100644 (file)
@@ -18,9 +18,14 @@ Table gcontact
 | about        |                                    | text             | NO   |     | NULL                |                |
 | keywords     | puplic keywords (interests)        | text             | NO   |     | NULL                |                |
 | gender       |                                    | varchar(32)      | NO   |     |                     |                |
+| birthday     |                                    | varchar(32)      | NO   |     | 0000-00-00          |                |
 | community    | 1 if contact is forum account      | tinyint(1)       | NO   |     | 0                   |                |
+| hide         | 1 = should be hidden from search   | tinyint(1)       | NO   |     | 0                   |                |
+| nsfw         | 1 = contact posts nsfw content     | tinyint(1)       | NO   |     | 0                   |                |
 | network      | social network protocol            | varchar(255)     | NO   |     |                     |                |
 | addr         |                                    | varchar(255)     | NO   |     |                     |                |
+| notify       |                                    | text             | NO   |     |                     |                |
+| alias        |                                    | varchar(255)     | NO   |     |                     |                |
 | generation   |                                    | tinyint(3)       | NO   |     | 0                   |                |
 | server_url   | baseurl of the contacts server     | varchar(255)     | NO   |     |                     |                |
 
index 3ed986a78151eaa8c51aae4f1e07819b16ce3a43..00fa213c8999778284a15ce17b15e5c355826ef7 100644 (file)
@@ -8,6 +8,7 @@ Table item
 | uri           |                                                                                                                                                            | varchar(255)        | NO   | MUL |                     |                |
 | uid           | user.id which owns this copy of the item                                                                                                                   | int(10) unsigned    | NO   | MUL | 0                   |                |
 | contact-id    | contact.id                                                                                                                                                 | int(11)             | NO   | MUL | 0                   |                |
+| gcontact-id   | ID of the global contact                                                                                                                                   | int(11)             | NO   | MUL | 0                   |                |
 | type          |                                                                                                                                                            | varchar(255)        | NO   |     |                     |                |
 | wall          | This item was posted to the wall of uid                                                                                                                    | tinyint(1)          | NO   | MUL | 0                   |                |
 | gravity       |                                                                                                                                                            | tinyint(1)          | NO   |     | 0                   |                |
diff --git a/doc/database/db_oembed.md b/doc/database/db_oembed.md
new file mode 100644 (file)
index 0000000..5e994ec
--- /dev/null
@@ -0,0 +1,10 @@
+Table oembed
+============
+
+| Field        | Description                        | Type         | Null | Key | Default             | Extra |
+| ------------ | ---------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
+| url          | page url                           | varchar(255) | NO   | PRI | NULL                |       |
+| content      | OEmbed data of the page            | text         | NO   |     | NULL                |       |
+| created      | datetime of creation               | datetime     | NO   | MUL | 0000-00-00 00:00:00 |       |
+
+Return to [database documentation](help/database)
diff --git a/doc/database/db_parsed_url.md b/doc/database/db_parsed_url.md
new file mode 100644 (file)
index 0000000..ada42c2
--- /dev/null
@@ -0,0 +1,12 @@
+Table parsed_url
+================
+
+| Field        | Description                        | Type         | Null | Key | Default             | Extra |
+| ------------ | ---------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
+| url          | page url                           | varchar(255) | NO   | PRI | NULL                |       |
+| guessing     | is the "guessing" mode active?     | tinyint(1)   | NO   | PRI | 0                   |       |
+| oembed       | is the data the result of oembed?  | tinyint(1)   | NO   | PRI | 0                   |       |
+| content      | page data                          | text         | NO   |     | NULL                |       |
+| created      | datetime of creation               | datetime     | NO   | MUL | 0000-00-00 00:00:00 |       |
+
+Return to [database documentation](help/database)
index 78af5cb37aa9d8c089e8d86cc413fd00a3b4361f..4c912bec101f6ddaa858c80721757dcc8bde58e5 100644 (file)
@@ -1,30 +1,31 @@
 Table thread
 ============
 
-| Field      | Description      | Type             | Null | Key | Default             | Extra |
-|------------|------------------|------------------|------|-----|---------------------|-------|
-| iid        | sequential ID    | int(10) unsigned | NO   | PRI | 0                   |       |
-| uid        |                  | int(10) unsigned | NO   | MUL | 0                   |       |
-| contact-id |                  | int(11) unsigned | NO   |     | 0                   |       |
-| created    |                  | datetime         | NO   | MUL | 0000-00-00 00:00:00 |       |
-| edited     |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
-| commented  |                  | datetime         | NO   | MUL | 0000-00-00 00:00:00 |       |
-| received   |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
-| changed    |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
-| wall       |                  | tinyint(1)       | NO   | MUL | 0                   |       |
-| private    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| pubmail    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| moderated  |                  | tinyint(1)       | NO   |     | 0                   |       |
-| visible    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| spam       |                  | tinyint(1)       | NO   |     | 0                   |       |
-| starred    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| ignored    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| bookmark   |                  | tinyint(1)       | NO   |     | 0                   |       |
-| unseen     |                  | tinyint(1)       | NO   |     | 1                   |       |
-| deleted    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| origin     |                  | tinyint(1)       | NO   |     | 0                   |       |
-| forum_mode |                  | tinyint(1)       | NO   |     | 0                   |       |
-| mention    |                  | tinyint(1)       | NO   |     | 0                   |       |
-| network    |                  | varchar(32)      | NO   |     |                     |       |
+| Field       | Description      | Type             | Null | Key | Default             | Extra |
+|-------------|------------------|------------------|------|-----|---------------------|-------|
+| iid         | sequential ID    | int(10) unsigned | NO   | PRI | 0                   |       |
+| uid         |                  | int(10) unsigned | NO   | MUL | 0                   |       |
+| contact-id  |                  | int(11) unsigned | NO   |     | 0                   |       |
+| gcontact-id | Global Contact   | int(11) unsigned | NO   |     | 0                   |       |
+| created     |                  | datetime         | NO   | MUL | 0000-00-00 00:00:00 |       |
+| edited      |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
+| commented   |                  | datetime         | NO   | MUL | 0000-00-00 00:00:00 |       |
+| received    |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
+| changed     |                  | datetime         | NO   |     | 0000-00-00 00:00:00 |       |
+| wall        |                  | tinyint(1)       | NO   | MUL | 0                   |       |
+| private     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| pubmail     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| moderated   |                  | tinyint(1)       | NO   |     | 0                   |       |
+| visible     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| spam        |                  | tinyint(1)       | NO   |     | 0                   |       |
+| starred     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| ignored     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| bookmark    |                  | tinyint(1)       | NO   |     | 0                   |       |
+| unseen      |                  | tinyint(1)       | NO   |     | 1                   |       |
+| deleted     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| origin      |                  | tinyint(1)       | NO   |     | 0                   |       |
+| forum_mode  |                  | tinyint(1)       | NO   |     | 0                   |       |
+| mention     |                  | tinyint(1)       | NO   |     | 0                   |       |
+| network     |                  | varchar(32)      | NO   |     |                     |       |
 
 Return to [database documentation](help/database)
diff --git a/doc/database/db_unique_contacts.md b/doc/database/db_unique_contacts.md
deleted file mode 100644 (file)
index 491da6a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Table unique_contacts
-=====================
-
-| Field    | Description      | Type         | Null | Key | Default | Extra          |
-|----------|------------------|--------------|------|-----|---------|----------------|
-| id       | sequential ID    | int(11)      | NO   | PRI | NULL    | auto_increment |
-| url      |                  | varchar(255) | NO   | MUL |         |                |
-| nick     |                  | varchar(255) | NO   |     |         |                |
-| name     |                  | varchar(255) | NO   |     |         |                |
-| avatar   |                  | varchar(255) | NO   |     |         |                |
-| location |                  | varchar(255) | NO   |     |         |                |
-| about    |                  | text         | NO   |     | NULL    |                |
-
-Return to [database documentation](help/database)
index c39a0576514c2524ce778d6dd79ebac855a1693e..45080e44d0fd9a3f92e4d53417184634a7a1a957 100644 (file)
@@ -1657,35 +1657,6 @@ LOCK TABLES `tokens` WRITE;
 /*!40000 ALTER TABLE `tokens` ENABLE KEYS */;
 UNLOCK TABLES;
 
---
--- Table structure for table `unique_contacts`
---
-
-DROP TABLE IF EXISTS `unique_contacts`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unique_contacts` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `url` varchar(255) NOT NULL DEFAULT '',
-  `nick` varchar(255) NOT NULL DEFAULT '',
-  `name` varchar(255) NOT NULL DEFAULT '',
-  `avatar` varchar(255) NOT NULL DEFAULT '',
-  `location` varchar(255) NOT NULL DEFAULT '',
-  `about` text NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `url` (`url`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `unique_contacts`
---
-
-LOCK TABLES `unique_contacts` WRITE;
-/*!40000 ALTER TABLE `unique_contacts` DISABLE KEYS */;
-/*!40000 ALTER TABLE `unique_contacts` ENABLE KEYS */;
-UNLOCK TABLES;
-
 --
 -- Table structure for table `user`
 --
index 508de9a3234932503cd6a6ea0b0e74937d1bb9d5..fe6c0d82ee4562275a88beb8b301870b5c0b4543 100644 (file)
@@ -57,7 +57,7 @@ $a->config['system']['huburl'] = '[internal]';
 
 // allowed themes (change this from admin panel after installation)
 
-$a->config['system']['allowed_themes'] = 'dispy,quattro,vier,darkzero,duepuntozero,greenzero,purplezero,slackr,diabook';
+$a->config['system']['allowed_themes'] = 'quattro,vier,duepuntozero';
 
 // default system theme
 
index a3cbbfed15265c765a8bd6278e1f6c160e4f76fe..93d6237cbf421c826fec164b44e4fb96d1682f01 100644 (file)
@@ -205,59 +205,46 @@ function get_contact_details_by_url($url, $uid = -1) {
                if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND
                        in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
                        proc_run('php',"include/update_gcontact.php", $profile["gid"]);
-
-       } else {
-               $r = q("SELECT `url`, `name`, `nick`, `avatar` AS `photo`, `location`, `about` FROM `unique_contacts` WHERE `url` = '%s'",
-                       dbesc(normalise_link($url)));
-
-               if (count($r)) {
-                       $profile = $r[0];
-                       $profile["keywords"] = "";
-                       $profile["gender"] = "";
-                       $profile["community"] = false;
-                       $profile["network"] = "";
-                       $profile["addr"] = "";
-               }
        }
 
        // Fetching further contact data from the contact table
        $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` = '%s'",
                dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"]));
 
-       if (!count($r))
+       if (!count($r) AND !isset($profile))
                $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
                        dbesc(normalise_link($url)), intval($uid));
 
-       if (!count($r))
+       if (!count($r) AND !isset($profile))
                $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0",
                        dbesc(normalise_link($url)));
 
        if ($r) {
-               if (isset($r[0]["url"]) AND $r[0]["url"])
+               if (!isset($profile["url"]) AND $r[0]["url"])
                        $profile["url"] = $r[0]["url"];
-               if (isset($r[0]["name"]) AND $r[0]["name"])
+               if (!isset($profile["name"]) AND $r[0]["name"])
                        $profile["name"] = $r[0]["name"];
-               if (isset($r[0]["nick"]) AND $r[0]["nick"] AND ($profile["nick"] == ""))
+               if (!isset($profile["nick"]) AND $r[0]["nick"])
                        $profile["nick"] = $r[0]["nick"];
-               if (isset($r[0]["addr"]) AND $r[0]["addr"] AND ($profile["addr"] == ""))
+               if (!isset($profile["addr"]) AND $r[0]["addr"])
                        $profile["addr"] = $r[0]["addr"];
-               if (isset($r[0]["photo"]) AND $r[0]["photo"])
+               if (!isset($profile["photo"]) AND $r[0]["photo"])
                        $profile["photo"] = $r[0]["photo"];
-               if (isset($r[0]["location"]) AND $r[0]["location"])
+               if (!isset($profile["location"]) AND $r[0]["location"])
                        $profile["location"] = $r[0]["location"];
-               if (isset($r[0]["about"]) AND $r[0]["about"])
+               if (!isset($profile["about"]) AND $r[0]["about"])
                        $profile["about"] = $r[0]["about"];
-               if (isset($r[0]["keywords"]) AND $r[0]["keywords"])
+               if (!isset($profile["keywords"]) AND $r[0]["keywords"])
                        $profile["keywords"] = $r[0]["keywords"];
-               if (isset($r[0]["gender"]) AND $r[0]["gender"])
+               if (!isset($profile["gender"]) AND $r[0]["gender"])
                        $profile["gender"] = $r[0]["gender"];
                if (isset($r[0]["forum"]) OR isset($r[0]["prv"]))
                        $profile["community"] = ($r[0]["forum"] OR $r[0]["prv"]);
-               if (isset($r[0]["network"]) AND $r[0]["network"])
+               if (!isset($profile["network"]) AND $r[0]["network"])
                        $profile["network"] = $r[0]["network"];
-               if (isset($r[0]["addr"]) AND $r[0]["addr"])
+               if (!isset($profile["addr"]) AND $r[0]["addr"])
                        $profile["addr"] = $r[0]["addr"];
-               if (isset($r[0]["bd"]) AND $r[0]["bd"])
+               if (!isset($profile["bd"]) AND $r[0]["bd"])
                        $profile["bd"] = $r[0]["bd"];
                if ($r[0]["uid"] == 0)
                        $profile["cid"] = 0;
@@ -415,6 +402,7 @@ function get_contact($url, $uid = 0) {
        $contactid = 0;
 
        // is it an address in the format user@server.tld?
+       /// @todo use gcontact and/or the addr field for a lookup
        if (!strstr($url, "http") OR strstr($url, "@")) {
                $data = probe_url($url);
                $url = $data["url"];
@@ -513,3 +501,165 @@ function get_contact($url, $uid = 0) {
 
        return $contactid;
 }
+
+/**
+ * @brief Returns posts from a given gcontact
+ *
+ * @param App $a argv application class
+ * @param int $gcontact_id Global contact
+ *
+ * @return string posts in HTML
+ */
+function posts_from_gcontact($a, $gcontact_id) {
+
+       require_once('include/conversation.php');
+
+       // There are no posts with "uid = 0" with connector networks
+       // This speeds up the query a lot
+       $r = q("SELECT `network` FROM `gcontact` WHERE `id` = %d", dbesc($gcontact_id));
+       if (in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, "")))
+               $sql = "(`item`.`uid` = 0 OR  (`item`.`uid` = %d AND `item`.`private`))";
+       else
+               $sql = "`item`.`uid` = %d";
+
+       if(get_config('system', 'old_pager')) {
+               $r = q("SELECT COUNT(*) AS `total` FROM `item`
+                       WHERE `gcontact-id` = %d and $sql",
+                       intval($gcontact_id),
+                       intval(local_user()));
+
+               $a->set_pager_total($r[0]['total']);
+       }
+
+       $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`)
+               WHERE `gcontact-id` = %d AND $sql AND
+                       NOT `deleted` AND NOT `moderated` AND `visible`
+               ORDER BY `item`.`created` DESC LIMIT %d, %d",
+               intval($gcontact_id),
+               intval(local_user()),
+               intval($a->pager['start']),
+               intval($a->pager['itemspage'])
+       );
+
+       $o = conversation($a,$r,'community',false);
+
+       if(!get_config('system', 'old_pager')) {
+               $o .= alt_pager($a,count($r));
+       } else {
+               $o .= paginate($a);
+       }
+
+       return $o;
+}
+
+/**
+ * @brief set the gcontact-id in all item entries
+ *
+ * This job has to be started multiple times until all entries are set.
+ * It isn't started in the update function since it would consume too much time and can be done in the background.
+ */
+function item_set_gcontact() {
+       define ('POST_UPDATE_VERSION', 1192);
+
+       // Was the script completed?
+       if (get_config("system", "post_update_version") >= POST_UPDATE_VERSION)
+               return;
+
+       // Check if the first step is done (Setting "gcontact-id" in the item table)
+       $r = q("SELECT `author-link`, `author-name`, `author-avatar`, `uid`, `network` FROM `item` WHERE `gcontact-id` = 0 LIMIT 1000");
+       if (!$r) {
+               // Are there unfinished entries in the thread table?
+               $r = q("SELECT COUNT(*) AS `total` FROM `thread`
+                       INNER JOIN `item` ON `item`.`id` =`thread`.`iid`
+                       WHERE `thread`.`gcontact-id` = 0 AND
+                               (`thread`.`uid` IN (SELECT `uid` from `user`) OR `thread`.`uid` = 0)");
+
+               if ($r AND ($r[0]["total"] == 0)) {
+                       set_config("system", "post_update_version", POST_UPDATE_VERSION);
+                       return false;
+               }
+
+               // Update the thread table from the item table
+               q("UPDATE `thread` INNER JOIN `item` ON `item`.`id`=`thread`.`iid`
+                               SET `thread`.`gcontact-id` = `item`.`gcontact-id`
+                       WHERE `thread`.`gcontact-id` = 0 AND
+                               (`thread`.`uid` IN (SELECT `uid` from `user`) OR `thread`.`uid` = 0)");
+
+               return false;
+       }
+
+       $item_arr = array();
+       foreach ($r AS $item) {
+               $index = $item["author-link"]."-".$item["uid"];
+               $item_arr[$index] = array("author-link" => $item["author-link"],
+                                               "uid" => $item["uid"],
+                                               "network" => $item["network"]);
+       }
+
+       // Set the "gcontact-id" in the item table and add a new gcontact entry if needed
+       foreach($item_arr AS $item) {
+               $gcontact_id = get_gcontact_id(array("url" => $item['author-link'], "network" => $item['network'],
+                                               "photo" => $item['author-avatar'], "name" => $item['author-name']));
+               q("UPDATE `item` SET `gcontact-id` = %d WHERE `uid` = %d AND `author-link` = '%s' AND `gcontact-id` = 0",
+                       intval($gcontact_id), intval($item["uid"]), dbesc($item["author-link"]));
+       }
+       return true;
+}
+
+/**
+ * @brief Returns posts from a given contact
+ *
+ * @param App $a argv application class
+ * @param int $contact_id contact
+ *
+ * @return string posts in HTML
+ */
+function posts_from_contact($a, $contact_id) {
+
+       require_once('include/conversation.php');
+
+       $r = q("SELECT `url` FROM `contact` WHERE `id` = %d", intval($contact_id));
+       if (!$r)
+               return false;
+
+       $contact = $r[0];
+
+       if(get_config('system', 'old_pager')) {
+               $r = q("SELECT COUNT(*) AS `total` FROM `item`
+                       WHERE `item`.`uid` = %d AND `author-link` IN ('%s', '%s')",
+                       intval(local_user()),
+                       dbesc(str_replace("https://", "http://", $contact["url"])),
+                       dbesc(str_replace("http://", "https://", $contact["url"])));
+
+               $a->set_pager_total($r[0]['total']);
+       }
+
+       $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 (`uid_contactid_created`)
+               WHERE `item`.`uid` = %d AND `contact-id` = %d
+                       AND `author-link` IN ('%s', '%s')
+                       AND NOT `deleted` AND NOT `moderated` AND `visible`
+               ORDER BY `item`.`created` DESC LIMIT %d, %d",
+               intval(local_user()),
+               intval($contact_id),
+               dbesc(str_replace("https://", "http://", $contact["url"])),
+               dbesc(str_replace("http://", "https://", $contact["url"])),
+               intval($a->pager['start']),
+               intval($a->pager['itemspage'])
+       );
+
+       $o .= conversation($a,$r,'community',false);
+
+       if(!get_config('system', 'old_pager'))
+               $o .= alt_pager($a,count($r));
+       else
+               $o .= paginate($a);
+
+       return $o;
+}
+?>
index 30424747da82a33af4ee88c733e0b712f9967e0b..5fdd682e74e4925d40f7514b07c9f75c91a15d47 100644 (file)
@@ -792,15 +792,19 @@ function get_photo_info($url) {
 
                $filesize = strlen($img_str);
 
-               $tempfile = tempnam(get_temppath(), "cache");
+               if (function_exists("getimagesizefromstring"))
+                       $data = getimagesizefromstring($img_str);
+               else {
+                       $tempfile = tempnam(get_temppath(), "cache");
 
-               $a = get_app();
-               $stamp1 = microtime(true);
-               file_put_contents($tempfile, $img_str);
-               $a->save_timestamp($stamp1, "file");
+                       $a = get_app();
+                       $stamp1 = microtime(true);
+                       file_put_contents($tempfile, $img_str);
+                       $a->save_timestamp($stamp1, "file");
 
-               $data = getimagesize($tempfile);
-               unlink($tempfile);
+                       $data = getimagesize($tempfile);
+                       unlink($tempfile);
+               }
 
                if ($data)
                        $data["size"] = $filesize;
index cb192c77c2cd5c8c21580a51efe36920b8474076..9cc7086157516c01f0050abe3d4a25f260026bf5 100644 (file)
@@ -559,10 +559,11 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
                                $pubkey = $hcard_key;
                }
        }
-
        if($diaspora && $diaspora_base && $diaspora_guid) {
-               if($mode == PROBE_DIASPORA || ! $notify) {
-                       $notify = $diaspora_base . 'receive/users/' . $diaspora_guid;
+               $diaspora_notify = $diaspora_base.'receive/users/'.$diaspora_guid;
+
+               if($mode == PROBE_DIASPORA || ! $notify || ($notify == $diaspora_notify)) {
+                       $notify = $diaspora_notify;
                        $batch  = $diaspora_base . 'receive/public' ;
                }
                if(strpos($url,'@'))
index 4ef3d05ea3959fb9ba46070436f7c33e2b034612..69181b7359bcb1ab68af4e84892782156771bf8c 100644 (file)
@@ -20,7 +20,7 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
 
        $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n";
 
-       $r = q("SELECT * FROM `group` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
+       $r = q("SELECT `id`, `name` FROM `group` WHERE NOT `deleted` AND `uid` = %d ORDER BY `name` ASC",
                intval(local_user())
        );
 
@@ -309,7 +309,7 @@ function populate_acl($user = null, $show_jotnets = false) {
                $pubmail_enabled = false;
 
                if(! $mail_disabled) {
-                       $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
+                       $r = q("SELECT `pubmail` FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
                                intval(local_user())
                        );
                        if(count($r)) {
@@ -407,7 +407,7 @@ function acl_lookup(&$a, $out_type = 'json') {
                $search = $_REQUEST['query'];
        }
 
-//     logger("Searching for ".$search." - type ".$type, LOGGER_DEBUG);
+       logger("Searching for ".$search." - type ".$type, LOGGER_DEBUG);
 
        if ($search!=""){
                $sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
@@ -503,7 +503,7 @@ function acl_lookup(&$a, $out_type = 'json') {
                }
        }
 
-       if ($type=='' || $type=='c'){
+       if ($type==''){
 
                $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact`
                        WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
@@ -514,6 +514,17 @@ function acl_lookup(&$a, $out_type = 'json') {
                        dbesc(NETWORK_OSTATUS), dbesc(NETWORK_STATUSNET)
                );
        }
+       elseif ($type=='c'){
+
+               $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact`
+                       WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
+                       AND NOT (`network` IN ('%s'))
+                       $sql_extra2
+                       ORDER BY `name` ASC ",
+                       intval(local_user()),
+                       dbesc(NETWORK_STATUSNET)
+               );
+       }
        elseif($type == 'm') {
                $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
                        WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
index 790894d3fba2c0365c57557960ca581cf9e31a46..3bc7c8bab90db41ff9e4401c8763747abd0a112b 100644 (file)
         *              Contact url or False if contact id is unknown
         */
        function api_unique_id_to_url($id){
-               $r = q("SELECT `url` FROM `unique_contacts` WHERE `id`=%d LIMIT 1",
+               $r = q("SELECT `url` FROM `gcontact` WHERE `id`=%d LIMIT 1",
                        intval($id));
                if ($r)
                        return ($r[0]["url"]);
                        $r = array();
 
                        if ($url != "")
-                               $r = q("SELECT * FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", $url);
-                       elseif ($nick != "")
-                               $r = q("SELECT * FROM `unique_contacts` WHERE `nick`='%s' LIMIT 1", $nick);
+                               $r = q("SELECT * FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($url)));
 
                        if ($r) {
                                // If no nick where given, extract it from the address
                                        'id_str' => (string) $r[0]["id"],
                                        'name' => $r[0]["name"],
                                        'screen_name' => (($r[0]['nick']) ? $r[0]['nick'] : $r[0]['name']),
-                                       'location' => NULL,
-                                       'description' => NULL,
+                                       'location' => $r[0]["location"],
+                                       'description' => $r[0]["about"],
                                        'url' => $r[0]["url"],
                                        'protected' => false,
                                        'followers_count' => 0,
                                        'friends_count' => 0,
                                        'listed_count' => 0,
-                                       'created_at' => api_date(0),
+                                       'created_at' => api_date($r[0]["created"]),
                                        'favourites_count' => 0,
                                        'utc_offset' => 0,
                                        'time_zone' => 'UTC',
                                        'contributors_enabled' => false,
                                        'is_translator' => false,
                                        'is_translation_enabled' => false,
-                                       'profile_image_url' => $r[0]["avatar"],
-                                       'profile_image_url_https' => $r[0]["avatar"],
+                                       'profile_image_url' => $r[0]["photo"],
+                                       'profile_image_url_https' => $r[0]["photo"],
                                        'following' => false,
                                        'follow_request_sent' => false,
                                        'notifications' => false,
                                        'uid' => 0,
                                        'cid' => 0,
                                        'self' => 0,
-                                       'network' => '',
+                                       'network' => $r[0]["network"],
                                );
 
                                return $ret;
                        $uinfo[0]['nick'] = api_get_nick($uinfo[0]["url"]);
                }
 
-               // Fetching unique id
-               $r = q("SELECT id FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
-
-               // If not there, then add it
-               if (count($r) == 0) {
-                       q("INSERT INTO `unique_contacts` (`url`, `name`, `nick`, `avatar`) VALUES ('%s', '%s', '%s', '%s')",
-                               dbesc(normalise_link($uinfo[0]['url'])), dbesc($uinfo[0]['name']),dbesc($uinfo[0]['nick']), dbesc($uinfo[0]['micro']));
-
-                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
-               }
-
                $network_name = network_to_name($uinfo[0]['network'], $uinfo[0]['url']);
 
+               $gcontact_id  = get_gcontact_id(array("url" => $uinfo[0]['url'], "network" => $uinfo[0]['network'],
+                                                       "photo" => $uinfo[0]['micro'], "name" => $uinfo[0]['name']));
+
                $ret = Array(
-                       'id' => intval($r[0]['id']),
-                       'id_str' => (string) intval($r[0]['id']),
+                       'id' => intval($gcontact_id),
+                       'id_str' => (string) intval($gcontact_id),
                        'name' => (($uinfo[0]['name']) ? $uinfo[0]['name'] : $uinfo[0]['nick']),
                        'screen_name' => (($uinfo[0]['nick']) ? $uinfo[0]['nick'] : $uinfo[0]['name']),
                        'location' => ($usr) ? $usr[0]['default-location'] : $network_name,
 
        function api_item_get_user(&$a, $item) {
 
-               $author = q("SELECT * FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
-                       dbesc(normalise_link($item['author-link'])));
-
-               if (count($author) == 0) {
-                       q("INSERT INTO `unique_contacts` (`url`, `name`, `avatar`) VALUES ('%s', '%s', '%s')",
-                               dbesc(normalise_link($item["author-link"])), dbesc($item["author-name"]), dbesc($item["author-avatar"]));
-
-                       $author = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
-                               dbesc(normalise_link($item['author-link'])));
-               } else if ($item["author-link"].$item["author-name"] != $author[0]["url"].$author[0]["name"]) {
-                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `name` = '%s' AND `avatar` = '%s' AND url = '%s'",
-                               dbesc($item["author-name"]), dbesc($item["author-avatar"]),
-                               dbesc(normalise_link($item["author-link"])));
+               // Make sure that there is an entry in the global contacts for author and owner
+               get_gcontact_id(array("url" => $item['author-link'], "network" => $item['network'],
+                                       "photo" => $item['author-avatar'], "name" => $item['author-name']));
 
-                       if (!$r)
-                               q("UPDATE `unique_contacts` SET `name` = '%s', `avatar` = '%s' WHERE `url` = '%s'",
-                                       dbesc($item["author-name"]), dbesc($item["author-avatar"]),
-                                       dbesc(normalise_link($item["author-link"])));
-               }
-
-               $owner = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
-                       dbesc(normalise_link($item['owner-link'])));
-
-               if (count($owner) == 0) {
-                       q("INSERT INTO `unique_contacts` (`url`, `name`, `avatar`) VALUES ('%s', '%s', '%s')",
-                               dbesc(normalise_link($item["owner-link"])), dbesc($item["owner-name"]), dbesc($item["owner-avatar"]));
-
-                       $owner = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
-                               dbesc(normalise_link($item['owner-link'])));
-               } else if ($item["owner-link"].$item["owner-name"] != $owner[0]["url"].$owner[0]["name"]) {
-                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `name` = '%s' AND `avatar` = '%s' AND url = '%s'",
-                               dbesc($item["owner-name"]), dbesc($item["owner-avatar"]),
-                               dbesc(normalise_link($item["owner-link"])));
-
-                       if (!$r)
-                               q("UPDATE `unique_contacts` SET `name` = '%s', `avatar` = '%s' WHERE `url` = '%s'",
-                                       dbesc($item["owner-name"]), dbesc($item["owner-avatar"]),
-                                       dbesc(normalise_link($item["owner-link"])));
-               }
+               get_gcontact_id(array("url" => $item['owner-link'], "network" => $item['network'],
+                                       "photo" => $item['owner-avatar'], "name" => $item['owner-name']));
 
                // Comments in threads may appear as wall-to-wall postings.
                // So only take the owner at the top posting.
                                $in_reply_to_status_id= intval($lastwall['parent']);
                                $in_reply_to_status_id_str = (string) intval($lastwall['parent']);
 
-                               $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($lastwall['item-author'])));
+                               $r = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($lastwall['item-author'])));
                                if ($r) {
                                        if ($r[0]['nick'] == "")
                                                $r[0]['nick'] = api_get_nick($r[0]["url"]);
                                        $in_reply_to_status_id = intval($lastwall['parent']);
                                        $in_reply_to_status_id_str = (string) intval($lastwall['parent']);
 
-                                       $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($reply[0]['item-author'])));
+                                       $r = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($reply[0]['item-author'])));
                                        if ($r) {
                                                if ($r[0]['nick'] == "")
                                                        $r[0]['nick'] = api_get_nick($r[0]["url"]);
                $userlist = array();
 
                if (isset($_GET["q"])) {
-                       $r = q("SELECT id FROM `unique_contacts` WHERE `name`='%s'", dbesc($_GET["q"]));
+                       $r = q("SELECT id FROM `gcontact` WHERE `name`='%s'", dbesc($_GET["q"]));
                        if (!count($r))
-                               $r = q("SELECT `id` FROM `unique_contacts` WHERE `nick`='%s'", dbesc($_GET["q"]));
+                               $r = q("SELECT `id` FROM `gcontact` WHERE `nick`='%s'", dbesc($_GET["q"]));
 
                        if (count($r)) {
                                foreach ($r AS $user) {
                                        intval(api_user()),
                                        intval($in_reply_to_status_id));
                                if ($r) {
-                                       $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($r[0]['author-link'])));
+                                       $r = q("SELECT * FROM `gcontact` WHERE `url` = '%s'", dbesc(normalise_link($r[0]['author-link'])));
 
                                        if ($r) {
                                                if ($r[0]['nick'] == "")
 
                $stringify_ids = (x($_REQUEST,'stringify_ids')?$_REQUEST['stringify_ids']:false);
 
-               $r = q("SELECT `unique_contacts`.`id` FROM `contact`, `unique_contacts` WHERE `contact`.`nurl` = `unique_contacts`.`url` AND `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` $sql_extra",
+               $r = q("SELECT `gcontact`.`id` FROM `contact`, `gcontact` WHERE `contact`.`nurl` = `gcontact`.`nurl` AND `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` $sql_extra",
                        intval(api_user())
                );
 
 
                //}
 
-               if ($nick != "") {
-                       q("UPDATE `unique_contacts` SET `nick` = '%s' WHERE `nick` != '%s' AND url = '%s'",
-                               dbesc($nick), dbesc($nick), dbesc(normalise_link($profile)));
+               if ($nick != "")
                        return($nick);
-               }
 
                return(false);
        }
index b68a7c5b188ec74c7e181fd9056a2f8e76084fe5..6a44e19ec446e87bcef9b83f53cab95d4af85299 100644 (file)
@@ -3,6 +3,7 @@ require_once("include/oembed.php");
 require_once('include/event.php');
 require_once('include/map.php');
 require_once('mod/proxy.php');
+require_once('include/Contact.php');
 
 function bb_PictureCacheExt($matches) {
        if (strpos($matches[3], "data:image/") === 0)
@@ -541,8 +542,23 @@ function bb_ShareAttributes($share, $simplehtml) {
                $reldate = (($posted) ? " " . relative_date($posted) : '');
        }
 
-       $userid = GetProfileUsername($profile,$author, false);
-       $userid_compact = GetProfileUsername($profile,$author, true);
+       $data = get_contact_details_by_url($profile);
+
+       if (isset($data["name"]) AND isset($data["addr"]))
+               $userid_compact = $data["name"]." (".$data["addr"].")";
+       else
+               $userid_compact = GetProfileUsername($profile,$author, true);
+
+       if (isset($data["addr"]))
+               $userid = $data["addr"];
+       else
+               $userid = GetProfileUsername($profile,$author, false);
+
+       if (isset($data["name"]))
+               $author = $data["name"];
+
+       if (isset($data["photo"]))
+               $avatar = $data["photo"];
 
        $preshare = trim($share[1]);
 
index 05bcea6212d7769359febba441b6b79c36bfc161..b27274e9a946671f321062bf0d78827b6f8ac784 100644 (file)
@@ -19,7 +19,7 @@ if(! function_exists('load_config')) {
 function load_config($family) {
        global $a;
 
-       $r = q("SELECT * FROM `config` WHERE `cat` = '%s'", dbesc($family));
+       $r = q("SELECT `v`, `k` FROM `config` WHERE `cat` = '%s'", dbesc($family));
        if(count($r)) {
                foreach($r as $rr) {
                        $k = $rr['k'];
@@ -170,7 +170,7 @@ function set_config($family,$key,$value) {
 if(! function_exists('load_pconfig')) {
 function load_pconfig($uid,$family) {
        global $a;
-       $r = q("SELECT * FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d",
+       $r = q("SELECT `v`,`k` FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d",
                dbesc($family),
                intval($uid)
        );
index 7eae1e052e0523552f05f0f6ef64eec37215065a..6c33be84fb33971d1f9a167e7607e244487268c0 100644 (file)
@@ -811,16 +811,16 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
        if((local_user()) && (local_user() == $item['uid'])) {
                if(isset($a->contacts) && x($a->contacts,$clean_url)) {
                        if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
-                               $best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
+                               $best_url = 'redir/'.$a->contacts[$clean_url]['id'];
                                $sparkle = true;
                        } else
                                $best_url = $a->contacts[$clean_url]['url'];
                }
        } elseif (local_user()) {
-               $r = q("SELECT `id`, `network` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s'",
+               $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1",
                        dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
                if ($r) {
-                       $best_url = $a->get_baseurl($ssl_state).'/redir/'.$r[0]['id'];
+                       $best_url = 'redir/'.$r[0]['id'];
                        $sparkle = true;
                }
        }
@@ -876,7 +876,7 @@ function item_photo_menu($item){
                if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
                        $cid = $item['contact-id'];
                } else {
-                       $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' ORDER BY `uid` DESC LIMIT 1",
+                       $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
                                intval(local_user()), dbesc(normalise_link($item['author-link'])));
                        if ($r) {
                                $cid = $r[0]["id"];
index a6e81f6bfd2710b2ecbedd8fff3751071697c74a..bf3243cb60f9513bec0d6eeca5af44296a97f738 100644 (file)
@@ -133,9 +133,8 @@ function cron_run(&$argv, &$argc){
        // Check every conversation
        check_conversations(false);
 
-       // Follow your friends from your legacy OStatus account
-       // Doesn't work
-       // ostatus_check_follow_friends();
+       // Set the gcontact-id in the item table if missing
+       item_set_gcontact();
 
        // update nodeinfo data
        nodeinfo_cron();
@@ -159,75 +158,11 @@ function cron_run(&$argv, &$argc){
                proc_run('php','include/expire.php');
        }
 
-       $last = get_config('system','cache_last_cleared');
-
-       if($last) {
-               $next = $last + (3600); // Once per hour
-               $clear_cache = ($next <= time());
-       } else
-               $clear_cache = true;
-
-       if ($clear_cache) {
-               // clear old cache
-               Cache::clear();
-
-               // clear old item cache files
-               clear_cache();
-
-               // clear cache for photos
-               clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
-
-               // clear smarty cache
-               clear_cache($a->get_basepath()."/view/smarty3/compiled", $a->get_basepath()."/view/smarty3/compiled");
-
-               // clear cache for image proxy
-               if (!get_config("system", "proxy_disabled")) {
-                       clear_cache($a->get_basepath(), $a->get_basepath()."/proxy");
-
-                       $cachetime = get_config('system','proxy_cache_time');
-                       if (!$cachetime) $cachetime = PROXY_DEFAULT_TIME;
-
-                       q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%" AND `created` < NOW() - INTERVAL %d SECOND', $cachetime);
-               }
-
-               // Maximum table size in megabyte
-               $max_tablesize = intval(get_config('system','optimize_max_tablesize')) * 1000000;
-               if ($max_tablesize == 0)
-                       $max_tablesize = 100 * 1000000; // Default are 100 MB
-
-               // Minimum fragmentation level in percent
-               $fragmentation_level = intval(get_config('system','optimize_fragmentation')) / 100;
-               if ($fragmentation_level == 0)
-                       $fragmentation_level = 0.3; // Default value is 30%
-
-               // Optimize some tables that need to be optimized
-               $r = q("SHOW TABLE STATUS");
-               foreach($r as $table) {
+       // Clear cache entries
+       cron_clear_cache($a);
 
-                       // Don't optimize tables that are too large
-                       if ($table["Data_length"] > $max_tablesize)
-                               continue;
-
-                       // Don't optimize empty tables
-                       if ($table["Data_length"] == 0)
-                               continue;
-
-                       // Calculate fragmentation
-                       $fragmentation = $table["Data_free"] / $table["Data_length"];
-
-                       logger("Table ".$table["Name"]." - Fragmentation level: ".round($fragmentation * 100, 2), LOGGER_DEBUG);
-
-                       // Don't optimize tables that needn't to be optimized
-                       if ($fragmentation < $fragmentation_level)
-                               continue;
-
-                       // So optimize it
-                       logger("Optimize Table ".$table["Name"], LOGGER_DEBUG);
-                       q("OPTIMIZE TABLE `%s`", dbesc($table["Name"]));
-               }
-
-               set_config('system','cache_last_cleared', time());
-       }
+       // Repair missing Diaspora values in contacts
+       cron_repair_diaspora($a);
 
        $manual_id  = 0;
        $generation = 0;
@@ -373,6 +308,115 @@ function cron_run(&$argv, &$argc){
        return;
 }
 
+/**
+ * @brief Clear cache entries
+ *
+ * @param App $a
+ */
+function cron_clear_cache(&$a) {
+
+       $last = get_config('system','cache_last_cleared');
+
+       if($last) {
+               $next = $last + (3600); // Once per hour
+               $clear_cache = ($next <= time());
+       } else
+               $clear_cache = true;
+
+       if (!$clear_cache)
+               return;
+
+       // clear old cache
+       Cache::clear();
+
+       // clear old item cache files
+       clear_cache();
+
+       // clear cache for photos
+       clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
+
+       // clear smarty cache
+       clear_cache($a->get_basepath()."/view/smarty3/compiled", $a->get_basepath()."/view/smarty3/compiled");
+
+       // clear cache for image proxy
+       if (!get_config("system", "proxy_disabled")) {
+               clear_cache($a->get_basepath(), $a->get_basepath()."/proxy");
+
+               $cachetime = get_config('system','proxy_cache_time');
+               if (!$cachetime) $cachetime = PROXY_DEFAULT_TIME;
+
+               q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%" AND `created` < NOW() - INTERVAL %d SECOND', $cachetime);
+       }
+
+       // Delete the cached OEmbed entries that are older than one year
+       q("DELETE FROM `oembed` WHERE `created` < NOW() - INTERVAL 1 YEAR");
+
+       // Delete the cached "parse_url" entries that are older than one year
+       q("DELETE FROM `parsed_url` WHERE `created` < NOW() - INTERVAL 1 YEAR");
+
+       // Maximum table size in megabyte
+       $max_tablesize = intval(get_config('system','optimize_max_tablesize')) * 1000000;
+       if ($max_tablesize == 0)
+               $max_tablesize = 100 * 1000000; // Default are 100 MB
+
+       // Minimum fragmentation level in percent
+       $fragmentation_level = intval(get_config('system','optimize_fragmentation')) / 100;
+       if ($fragmentation_level == 0)
+               $fragmentation_level = 0.3; // Default value is 30%
+
+       // Optimize some tables that need to be optimized
+       $r = q("SHOW TABLE STATUS");
+       foreach($r as $table) {
+
+               // Don't optimize tables that are too large
+               if ($table["Data_length"] > $max_tablesize)
+                       continue;
+
+               // Don't optimize empty tables
+               if ($table["Data_length"] == 0)
+                       continue;
+
+               // Calculate fragmentation
+               $fragmentation = $table["Data_free"] / $table["Data_length"];
+
+               logger("Table ".$table["Name"]." - Fragmentation level: ".round($fragmentation * 100, 2), LOGGER_DEBUG);
+
+               // Don't optimize tables that needn't to be optimized
+               if ($fragmentation < $fragmentation_level)
+                       continue;
+
+               // So optimize it
+               logger("Optimize Table ".$table["Name"], LOGGER_DEBUG);
+               q("OPTIMIZE TABLE `%s`", dbesc($table["Name"]));
+       }
+
+       set_config('system','cache_last_cleared', time());
+}
+
+/**
+ * @brief Repair missing values in Diaspora contacts
+ *
+ * @param App $a
+ */
+function cron_repair_diaspora(&$a) {
+       $r = q("SELECT `id`, `url` FROM `contact`
+               WHERE `network` = '%s' AND (`batch` = '' OR `notify` = '' OR `poll` = '' OR pubkey = '')
+                       ORDER BY RAND() LIMIT 50", dbesc(NETWORK_DIASPORA));
+       if ($r) {
+               foreach ($r AS $contact) {
+                       if (poco_reachable($contact["url"])) {
+                               $data = probe_url($contact["url"]);
+                               if ($data["network"] == NETWORK_DIASPORA) {
+                                       logger("Repair contact ".$contact["id"]." ".$contact["url"], LOGGER_DEBUG);
+                                       q("UPDATE `contact` SET `batch` = '%s', `notify` = '%s', `poll` = '%s', pubkey = '%s' WHERE `id` = %d",
+                                               dbesc($data["batch"]), dbesc($data["notify"]), dbesc($data["poll"]), dbesc($data["pubkey"]),
+                                               intval($contact["id"]));
+                               }
+                       }
+               }
+       }
+}
+
 if (array_search(__file__,get_included_files())===0){
        cron_run($_SERVER["argv"],$_SERVER["argc"]);
        killme();
index 851eb23284685f2ffb932a512b9d32946d8550fb..43dfbd7b353185d9ad5f87ab19a82fbb7b061316 100644 (file)
@@ -666,9 +666,14 @@ function db_definition() {
                                        "about" => array("type" => "text", "not null" => "1"),
                                        "keywords" => array("type" => "text", "not null" => "1"),
                                        "gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""),
+                                       "birthday" => array("type" => "varchar(32)", "not null" => "1", "default" => "0000-00-00"),
                                        "community" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
+                                       "hide" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
+                                       "nsfw" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
                                        "network" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+                                       "notify" => array("type" => "text", "not null" => "1"),
+                                       "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "generation" => array("type" => "tinyint(3)", "not null" => "1", "default" => "0"),
                                        "server_url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        ),
@@ -795,6 +800,7 @@ function db_definition() {
                                        "uri" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"),
                                        "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
+                                       "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
                                        "type" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "wall" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
                                        "gravity" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
@@ -871,6 +877,7 @@ function db_definition() {
                                        "uid_thrparent" => array("uid","thr-parent"),
                                        "uid_parenturi" => array("uid","parent-uri"),
                                        "uid_contactid_created" => array("uid","contact-id","created"),
+                                       "gcontactid_uid_created" => array("gcontact-id","uid","created"),
                                        "wall_body" => array("wall","body(6)"),
                                        "uid_visible_moderated_created" => array("uid","visible","moderated","created"),
                                        "uid_uri" => array("uid","uri"),
@@ -1014,6 +1021,30 @@ function db_definition() {
                                        "receiver-uid" => array("receiver-uid"),
                                        )
                        );
+       $database["oembed"] = array(
+                       "fields" => array(
+                                       "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
+                                       "content" => array("type" => "text", "not null" => "1"),
+                                       "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
+                                       ),
+                       "indexes" => array(
+                                       "PRIMARY" => array("url"),
+                                       "created" => array("created"),
+                                       )
+                       );
+       $database["parsed_url"] = array(
+                       "fields" => array(
+                                       "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
+                                       "guessing" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
+                                       "oembed" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
+                                       "content" => array("type" => "text", "not null" => "1"),
+                                       "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
+                                       ),
+                       "indexes" => array(
+                                       "PRIMARY" => array("url", "guessing", "oembed"),
+                                       "created" => array("created"),
+                                       )
+                       );
        $database["pconfig"] = array(
                        "fields" => array(
                                        "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
@@ -1287,6 +1318,7 @@ function db_definition() {
                                        "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "primary" => "1"),
                                        "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"),
                                        "contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
+                                       "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
                                        "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
@@ -1316,6 +1348,8 @@ function db_definition() {
                                        "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"),
@@ -1334,21 +1368,6 @@ function db_definition() {
                                        "PRIMARY" => array("id"),
                                        )
                        );
-       $database["unique_contacts"] = array(
-                       "fields" => array(
-                                       "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
-                                       "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
-                                       "nick" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
-                                       "name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
-                                       "avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
-                                       "location" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
-                                       "about" => array("type" => "text", "not null" => "1"),
-                                       ),
-                       "indexes" => array(
-                                       "PRIMARY" => array("id"),
-                                       "url" => array("url"),
-                                       )
-                       );
        $database["user"] = array(
                        "fields" => array(
                                        "uid" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
index 75e4a7106bd064622c59401b60acf43d0ae9d2e2..b72239c4ceab1255dc7f297f831231747f6884c7 100644 (file)
@@ -826,6 +826,23 @@ function diaspora_plink($addr, $guid) {
        return 'https://'.substr($addr,strpos($addr,'@')+1).'/posts/'.$guid;
 }
 
+function diaspora_repair_signature($signature, $handle = "", $level = 1) {
+
+       if ($signature == "")
+               return($signature);
+
+       if (base64_encode(base64_decode(base64_decode($signature))) == base64_decode($signature)) {
+               $signature = base64_decode($signature);
+               logger("Repaired double encoded signature from Diaspora/Hubzilla handle ".$handle." - level ".$level, LOGGER_DEBUG);
+
+               // Do a recursive call to be able to fix even multiple levels
+               if ($level < 10)
+                       $signature = diaspora_repair_signature($signature, $handle, ++$level);
+       }
+
+       return($signature);
+}
+
 function diaspora_post($importer,$xml,$msg) {
 
        $a = get_app();
@@ -1565,18 +1582,19 @@ function diaspora_comment($importer,$xml,$msg) {
                //);
        //}
 
-       if(($parent_item['origin']) && (! $parent_author_signature)) {
+       // If we are the origin of the parent we store the original signature and notify our followers
+       if($parent_item['origin']) {
+               $author_signature_base64 = base64_encode($author_signature);
+               $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle);
+
                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                        intval($message_id),
                        dbesc($signed_data),
-                       dbesc(base64_encode($author_signature)),
+                       dbesc($author_signature_base64),
                        dbesc($diaspora_handle)
                );
 
-               // if the message isn't already being relayed, notify others
-               // the existence of parent_author_signature means the parent_author or owner
-               // is already relaying.
-
+               // notify others
                proc_run('php','include/notifier.php','comment-import',$message_id);
        }
 
@@ -1973,11 +1991,15 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
                                           array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
 
        if(strpos($parent_item['body'],$link_text) === false) {
+
+               $parent_item['body'] = $link_text . $parent_item['body'];
+
                $r = q("UPDATE `item` SET `body` = '%s', `visible` = 1 WHERE `id` = %d AND `uid` = %d",
-                       dbesc($link_text . $parent_item['body']),
+                       dbesc($parent_item['body']),
                        intval($parent_item['id']),
                        intval($parent_item['uid'])
                );
+               put_item_in_cache($parent_item, true);
                update_thread($parent_item['id']);
        }
 
@@ -2222,21 +2244,21 @@ EOT;
        //      );
        //}
 
-       if(! $parent_author_signature) {
+       // If we are the origin of the parent we store the original signature and notify our followers
+       if($parent_item['origin']) {
+               $author_signature_base64 = base64_encode($author_signature);
+               $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle);
+
                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                        intval($message_id),
                        dbesc($signed_data),
-                       dbesc(base64_encode($author_signature)),
+                       dbesc($author_signature_base64),
                        dbesc($diaspora_handle)
                );
-       }
-
-       // if the message isn't already being relayed, notify others
-       // the existence of parent_author_signature means the parent_author or owner
-       // is already relaying. The parent_item['origin'] indicates the message was created on our system
 
-       if(($parent_item['origin']) && (! $parent_author_signature))
+               // notify others
                proc_run('php','include/notifier.php','comment-import',$message_id);
+       }
 
        return;
 }
@@ -2332,8 +2354,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
                        return;
                }
 
-       }
-       else {
+       } else {
 
                $sig_decode = base64_decode($sig);
 
@@ -2367,7 +2388,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
                                        intval($r[0]['parent'])
                                );
                                if(count($p)) {
-                                       if(($p[0]['origin']) && (! $parent_author_signature)) {
+                                       if($p[0]['origin']) {
                                                q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                                                        $r[0]['id'],
                                                        dbesc($signed_data),
@@ -2407,10 +2428,10 @@ function diaspora_profile($importer,$xml,$msg) {
        if(! $contact)
                return;
 
-       if($contact['blocked']) {
-               logger('diaspora_post: Ignoring this author.');
-               return 202;
-       }
+       //if($contact['blocked']) {
+       //      logger('diaspora_post: Ignoring this author.');
+       //      return 202;
+       //}
 
        $name = unxmlify($xml->first_name) . ((strlen($xml->last_name)) ? ' ' . unxmlify($xml->last_name) : '');
        $image_url = unxmlify($xml->image_url);
@@ -2418,6 +2439,8 @@ function diaspora_profile($importer,$xml,$msg) {
        $location = diaspora2bb(unxmlify($xml->location));
        $about = diaspora2bb(unxmlify($xml->bio));
        $gender = unxmlify($xml->gender);
+       $searchable = (unxmlify($xml->searchable) == "true");
+       $nsfw = (unxmlify($xml->nsfw) == "true");
        $tags = unxmlify($xml->tag_string);
 
        $tags = explode("#", $tags);
@@ -2432,6 +2455,8 @@ function diaspora_profile($importer,$xml,$msg) {
        $keywords = implode(", ", $keywords);
 
        $handle_parts = explode("@", $diaspora_handle);
+       $nick = $handle_parts[0];
+
        if($name === '') {
                $name = $handle_parts[0];
        }
@@ -2466,10 +2491,12 @@ function diaspora_profile($importer,$xml,$msg) {
        /// @TODO Update name on item['author-name'] if the name changed. See consume_feed()
        /// (Not doing this currently because D* protocol is scheduled for revision soon).
 
-       $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s', `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d",
+       $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s', `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d",
                dbesc($name),
+               dbesc($nick),
+               dbesc($diaspora_handle),
                dbesc(datetime_convert()),
-               dbesc($images[0]),
+               dbesc($image_url),
                dbesc($images[1]),
                dbesc($images[2]),
                dbesc(datetime_convert()),
@@ -2482,26 +2509,17 @@ function diaspora_profile($importer,$xml,$msg) {
                intval($importer['uid'])
        );
 
-       if (unxmlify($xml->searchable) == "true") {
+       if ($searchable) {
                require_once('include/socgraph.php');
-               poco_check($contact['url'], $name, NETWORK_DIASPORA, $images[0], $about, $location, $gender, $keywords, "",
+               poco_check($contact['url'], $name, NETWORK_DIASPORA, $image_url, $about, $location, $gender, $keywords, "",
                        datetime_convert(), 2, $contact['id'], $importer['uid']);
        }
 
-       $profileurl = "";
-       $author = q("SELECT * FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
-                       dbesc(normalise_link($contact['url'])));
-
-       if (count($author) == 0) {
-               q("INSERT INTO `unique_contacts` (`url`, `name`, `avatar`, `location`, `about`) VALUES ('%s', '%s', '%s', '%s', '%s')",
-                       dbesc(normalise_link($contact['url'])), dbesc($name), dbesc($location), dbesc($about), dbesc($images[0]));
-
-               $author = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
-                       dbesc(normalise_link($contact['url'])));
-       } else if (normalise_link($contact['url']).$name.$location.$about != normalise_link($author[0]["url"]).$author[0]["name"].$author[0]["location"].$author[0]["about"]) {
-               q("UPDATE unique_contacts SET name = '%s', avatar = '%s', `location` = '%s', `about` = '%s' WHERE url = '%s'",
-               dbesc($name), dbesc($images[0]), dbesc($location), dbesc($about), dbesc(normalise_link($contact['url'])));
-       }
+       update_gcontact(array("url" => $contact['url'], "network" => NETWORK_DIASPORA, "generation" => 2,
+                               "photo" => $image_url, "name" => $name, "location" => $location,
+                               "about" => $about, "birthday" => $birthday, "gender" => $gender,
+                               "addr" => $diaspora_handle, "nick" => $nick, "keywords" => $keywords,
+                               "hide" => !$searchable, "nsfw" => $nsfw));
 
 /*     if($r) {
                if($oldphotos) {
@@ -2643,11 +2661,12 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
        }
 
        logger('diaspora_send_status: '.$owner['username'].' -> '.$contact['name'].' base message: '.$msg, LOGGER_DATA);
+       logger('send guid '.$item['guid'], LOGGER_DEBUG);
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
        //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
 
-       $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch);
+       $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']);
 
        logger('diaspora_send_status: guid: '.$item['guid'].' result '.$return_code, LOGGER_DEBUG);
 
@@ -2758,10 +2777,12 @@ function diaspora_send_images($item,$owner,$contact,$images,$public_batch = fals
 
 
                logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA);
+               logger('send guid '.$r[0]['guid'], LOGGER_DEBUG);
+
                $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
                //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
 
-               diaspora_transmit($owner,$contact,$slap,$public_batch);
+               diaspora_transmit($owner,$contact,$slap,$public_batch,false,$r[0]['guid']);
        }
 
 }
@@ -2815,7 +2836,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
        // sign it
 
        if($like)
-               $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $myaddr;
+               $signed_text =  $positive . ';' . $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $myaddr;
        else
                $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $myaddr;
 
@@ -2832,11 +2853,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
        ));
 
        logger('diaspora_followup: base message: ' . $msg, LOGGER_DATA);
+       logger('send guid '.$item['guid'], LOGGER_DEBUG);
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
        //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
 
-       return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+       return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']));
 }
 
 
@@ -2847,9 +2869,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
 //     $theiraddr = $contact['addr'];
 
-       $body = $item['body'];
-       $text = html_entity_decode(bb2diaspora($body));
-
        // Diaspora doesn't support threaded comments, but some
        // versions of Diaspora (i.e. Diaspora-pistos) support
        // likes on comments
@@ -2900,61 +2919,53 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        // fetch the original signature if the relayable was created by a Diaspora
        // or DFRN user. Relayables for other networks are not supported.
 
-/*     $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
+       $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE " . $sql_sign_id . " = %d LIMIT 1",
                intval($item['id'])
        );
-       if(count($r)) { 
+       if(count($r)) {
                $orig_sign = $r[0];
                $signed_text = $orig_sign['signed_text'];
                $authorsig = $orig_sign['signature'];
                $handle = $orig_sign['signer'];
+
+               // Split the signed text
+               $signed_parts = explode(";", $signed_text);
+
+               // Remove the parent guid
+               array_shift($signed_parts);
+
+               // Remove the comment guid
+               array_shift($signed_parts);
+
+               // Remove the handle
+               array_pop($signed_parts);
+
+               // Glue the parts together
+               $text = implode(";", $signed_parts);
        }
        else {
+               // This part is meant for cases where we don't have the signatur. (Which shouldn't happen with posts from Diaspora and Friendica)
+               // This means that the comment won't be accepted by newer Diaspora servers
 
-               // Author signature information (for likes, comments, and retractions of likes or comments,
-               // whether from Diaspora or Friendica) must be placed in the `sign` table before this 
-               // function is called
-               logger('diaspora_send_relay: original author signature not found, cannot send relayable');
-               return;
-       }*/
-
-       /* Since the author signature is only checked by the parent, not by the relay recipients,
-        * I think it may not be necessary for us to do so much work to preserve all the original
-        * signatures. The important thing that Diaspora DOES need is the original creator's handle.
-        * Let's just generate that and forget about all the original author signature stuff.
-        *
-        * Note: this might be more of an problem if we want to support likes on comments for older
-        * versions of Diaspora (diaspora-pistos), but since there are a number of problems with
-        * doing that, let's ignore it for now.
-        *
-        * Currently, only DFRN contacts are supported. StatusNet shouldn't be hard, but it hasn't
-        * been done yet
-        */
-
-       $handle = diaspora_handle_from_contact($item['contact-id']);
-       if(! $handle)
-               return;
+               $body = $item['body'];
+               $text = html_entity_decode(bb2diaspora($body));
 
+               $handle = diaspora_handle_from_contact($item['contact-id']);
+               if(! $handle)
+                       return;
 
-       if($relay_retract)
-               $sender_signed_text = $item['guid'] . ';' . $target_type;
-       elseif($like)
-               $sender_signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle;
-       else
-               $sender_signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle;
+               if($relay_retract)
+                       $signed_text = $item['guid'] . ';' . $target_type;
+               elseif($like)
+                       $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle;
+               else
+                       $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle;
 
-       // Sign the relayable with the top-level owner's signature
-       //
-       // We'll use the $sender_signed_text that we just created, instead of the $signed_text
-       // stored in the database, because that provides the best chance that Diaspora will
-       // be able to reconstruct the signed text the same way we did. This is particularly a
-       // concern for the comment, whose signed text includes the text of the comment. The
-       // smallest change in the text of the comment, including removing whitespace, will
-       // make the signature verification fail. Since we translate from BB code to Diaspora's
-       // markup at the top of this function, which is AFTER we placed the original $signed_text
-       // in the database, it's hazardous to trust the original $signed_text.
+               $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
+       }
 
-       $parentauthorsig = base64_encode(rsa_sign($sender_signed_text,$owner['uprvkey'],'sha256'));
+       // Sign the relayable with the top-level owner's signature
+       $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
 
        $msg = replace_macros($tpl,array(
                '$guid' => xmlify($item['guid']),
@@ -2968,12 +2979,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        ));
 
        logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
-
+       logger('send guid '.$item['guid'], LOGGER_DEBUG);
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
        //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
 
-       return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+       return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']));
 
 }
 
@@ -3005,10 +3016,12 @@ function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) {
                '$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')))
        ));
 
+       logger('send guid '.$item['guid'], LOGGER_DEBUG);
+
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
        //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
 
-       return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+       return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']));
 }
 
 function diaspora_send_mail($item,$owner,$contact) {
@@ -3065,16 +3078,17 @@ function diaspora_send_mail($item,$owner,$contact) {
        }
 
        logger('diaspora_conversation: ' . print_r($xmsg,true), LOGGER_DATA);
+       logger('send guid '.$item['guid'], LOGGER_DEBUG);
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false)));
        //$slap = 'xml=' . urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false));
 
-       return(diaspora_transmit($owner,$contact,$slap,false));
+       return(diaspora_transmit($owner,$contact,$slap,false,false,$item['guid']));
 
 
 }
 
-function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false) {
+function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false,$guid = "") {
 
        $enabled = intval(get_config('system','diaspora_enabled'));
        if(! $enabled) {
@@ -3087,9 +3101,9 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false)
        if(! $dest_url) {
                logger('diaspora_transmit: no url for contact: ' . $contact['id'] . ' batch mode =' . $public_batch);
                return 0;
-       } 
+       }
 
-       logger('diaspora_transmit: ' . $logid . ' ' . $dest_url);
+       logger('diaspora_transmit: '.$logid.'-'.$guid.' '.$dest_url);
 
        if( (! $queue_run) && (was_recently_delayed($contact['id'])) ) {
                $return_code = 0;
@@ -3104,7 +3118,7 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false)
                }
        }
 
-       logger('diaspora_transmit: ' . $logid . ' returns: ' . $return_code);
+       logger('diaspora_transmit: '.$logid.'-'.$guid.' returns: '.$return_code);
 
        if((! $return_code) || (($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {
                logger('diaspora_transmit: queue message');
index 6293317d3f4401e9ec71b0fe213f14ad669193e9..a8f670334b5d66a00d8fc5022d584472dfa85b80 100644 (file)
@@ -76,11 +76,18 @@ function discover_poco_run(&$argv, &$argc){
                update_suggestions();
        elseif (($mode == 2) AND get_config('system','poco_completion'))
                discover_users();
-       elseif (($mode == 1) AND ($search != "") and get_config('system','poco_local_search'))
+       elseif (($mode == 1) AND ($search != "") and get_config('system','poco_local_search')) {
                discover_directory($search);
-       elseif (($mode == 0) AND ($search == "") and (get_config('system','poco_discovery') > 0))
+               gs_search_user($search);
+       } elseif (($mode == 0) AND ($search == "") and (get_config('system','poco_discovery') > 0)) {
+               // Query Friendica and Hubzilla servers for their users
                poco_discover();
 
+               // Query GNU Social servers for their users ("statistics" addon has to be enabled on the GS server)
+               if (!get_config('system','ostatus_disabled'))
+                       gs_discover();
+       }
+
        logger('end '.$search);
 
        return;
@@ -128,7 +135,7 @@ function discover_users() {
                else
                        $server_url = poco_detect_server($user["url"]);
 
-               if (poco_check_server($server_url, $gcontacts[0]["network"])) {
+               if (($server_url == "") OR poco_check_server($server_url, $gcontacts[0]["network"])) {
                        logger('Check user '.$user["url"]);
                        poco_last_updated($user["url"], true);
 
@@ -191,6 +198,36 @@ function discover_directory($search) {
        Cache::set("dirsearch:".$search, time(), CACHE_DAY);
 }
 
+/**
+ * @brief Search for GNU Social user with gstools.org
+ *
+ * @param str $search User name
+ */
+function gs_search_user($search) {
+
+       $a = get_app();
+
+       $url = "http://gstools.org/api/users_search/".urlencode($search);
+
+       $result = z_fetch_url($url);
+       if (!$result["success"])
+               return false;
+
+       $contacts = json_decode($result["body"]);
+
+       if ($contacts->status == 'ERROR')
+               return false;
+
+       foreach($contacts->data AS $user) {
+               $contact = probe_url($user->site_address."/".$user->name);
+               if ($contact["network"] != NETWORK_PHANTOM) {
+                       $contact["about"] = $user->description;
+                       update_gcontact($contact);
+               }
+       }
+}
+
+
 if (array_search(__file__,get_included_files())===0){
   discover_poco_run($_SERVER["argv"],$_SERVER["argc"]);
   killme();
index 2639604576cf5951f956fa3abfdad55d0e951b01..87a9b46d5ab71dbd5e995cfb65fff58d7d45d7c3 100644 (file)
@@ -1,23 +1,25 @@
 <?php
 
 /**
- * @file include/features.php * 
+ * @file include/features.php
  * @brief Features management
  */
 
 /**
  * @brief check if feature is enabled
  * 
- * return boolean
+ * @return boolean
  */
 function feature_enabled($uid,$feature) {
-       //return true;
 
-       $x = get_pconfig($uid,'feature',$feature);
+       $x = get_config('feature_lock',$feature);
        if($x === false) {
-               $x = get_config('feature',$feature);
-               if($x === false)
-                       $x = get_feature_default($feature);
+               $x = get_pconfig($uid,'feature',$feature);
+               if($x === false) {
+                       $x = get_config('feature',$feature);
+                       if($x === false)
+                               $x = get_feature_default($feature);
+               }
        }
        $arr = array('uid' => $uid, 'feature' => $feature, 'enabled' => $x);
        call_hooks('feature_enabled',$arr);
@@ -42,14 +44,17 @@ function get_feature_default($feature) {
 }
 
 /**
- * @ brief get a list of all available features
+ * @brief Get a list of all available features
+ * 
  * The array includes the setting group, the setting name,
  * explainations for the setting and if it's enabled or disabled
  * by default
  * 
+ * @param bool $filtered True removes any locked features
+ * 
  * @return array
  */
-function get_features() {
+function get_features($filtered = true) {
 
        $arr = array(
 
@@ -57,56 +62,78 @@ function get_features() {
                'general' => array(
                        t('General Features'),
                        //array('expire',         t('Content Expiration'),              t('Remove old posts/comments after a period of time')),
-                       array('multi_profiles', t('Multiple Profiles'),                 t('Ability to create multiple profiles'),false),
-                       array('photo_location', t('Photo Location'),                    t('Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map.'),false),
+                       array('multi_profiles', t('Multiple Profiles'),                 t('Ability to create multiple profiles'), false, get_config('feature_lock','multi_profiles')),
+                       array('photo_location', t('Photo Location'),                    t('Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map.'), false, get_config('feature_lock','photo_location')),
                ),
 
                // Post composition
                'composition' => array(
                        t('Post Composition Features'),
-                       array('richtext',       t('Richtext Editor'),                   t('Enable richtext editor'),false),
-                       array('preview',        t('Post Preview'),                      t('Allow previewing posts and comments before publishing them'),false),
-                       array('aclautomention', t('Auto-mention Forums'),               t('Add/remove mention when a fourm page is selected/deselected in ACL window.'),false),
+                       array('richtext',       t('Richtext Editor'),                   t('Enable richtext editor'), false, get_config('feature_lock','richtext')),
+                       array('preview',        t('Post Preview'),                      t('Allow previewing posts and comments before publishing them'), false, get_config('feature_lock','preview')),
+                       array('aclautomention', t('Auto-mention Forums'),               t('Add/remove mention when a fourm page is selected/deselected in ACL window.'), false, get_config('feature_lock','aclautomention')),
                ),
 
                // Network sidebar widgets
                'widgets' => array(
                        t('Network Sidebar Widgets'),
-                       array('archives',       t('Search by Date'),                    t('Ability to select posts by date ranges'),false),
-                       array('forumlist_widget', t('List Forums'),                     t('Enable widget to display the forums your are connected with'),true),
-                       array('groups',         t('Group Filter'),                      t('Enable widget to display Network posts only from selected group'),false),
-                       array('networks',       t('Network Filter'),                    t('Enable widget to display Network posts only from selected network'),false),
-                       array('savedsearch',    t('Saved Searches'),                    t('Save search terms for re-use'),false),
+                       array('archives',       t('Search by Date'),                    t('Ability to select posts by date ranges'), false, get_config('feature_lock','archives')),
+                       array('forumlist_widget', t('List Forums'),                     t('Enable widget to display the forums your are connected with'), true, get_config('feature_lock','forumlist_widget')),
+                       array('groups',         t('Group Filter'),                      t('Enable widget to display Network posts only from selected group'), false, get_config('feature_lock','groups')),
+                       array('networks',       t('Network Filter'),                    t('Enable widget to display Network posts only from selected network'), false, get_config('feature_lock','networks')),
+                       array('savedsearch',    t('Saved Searches'),                    t('Save search terms for re-use'), false, get_config('feature_lock','savedsearch')),
                ),
 
                // Network tabs
                'net_tabs' => array(
                        t('Network Tabs'),
-                       array('personal_tab',   t('Network Personal Tab'),              t('Enable tab to display only Network posts that you\'ve interacted on'),false),
-                       array('new_tab',        t('Network New Tab'),                   t('Enable tab to display only new Network posts (from the last 12 hours)'),false),
-                       array('link_tab',       t('Network Shared Links Tab'),          t('Enable tab to display only Network posts with links in them'),false),
+                       array('personal_tab',   t('Network Personal Tab'),              t('Enable tab to display only Network posts that you\'ve interacted on'), false, get_config('feature_lock','personal_tab')),
+                       array('new_tab',        t('Network New Tab'),                   t('Enable tab to display only new Network posts (from the last 12 hours)'), false, get_config('feature_lock','new_tab')),
+                       array('link_tab',       t('Network Shared Links Tab'),          t('Enable tab to display only Network posts with links in them'), false, get_config('feature_lock','link_tab')),
                ),
 
                // Item tools
                'tools' => array(
                        t('Post/Comment Tools'),
-                       array('multi_delete',   t('Multiple Deletion'),                 t('Select and delete multiple posts/comments at once'),false),
-                       array('edit_posts',     t('Edit Sent Posts'),                   t('Edit and correct posts and comments after sending'),false),
-                       array('commtag',        t('Tagging'),                           t('Ability to tag existing posts'),false),
-                       array('categories',     t('Post Categories'),                   t('Add categories to your posts'),false),
-                       array('filing',         t('Saved Folders'),                     t('Ability to file posts under folders'),false),
-                       array('dislike',        t('Dislike Posts'),                     t('Ability to dislike posts/comments')),
-                       array('star_posts',     t('Star Posts'),                        t('Ability to mark special posts with a star indicator'),false),
-                       array('ignore_posts',   t('Mute Post Notifications'),           t('Ability to mute notifications for a thread'),false),
+                       array('multi_delete',   t('Multiple Deletion'),                 t('Select and delete multiple posts/comments at once'), false, get_config('feature_lock','multi_delete')),
+                       array('edit_posts',     t('Edit Sent Posts'),                   t('Edit and correct posts and comments after sending'), false, get_config('feature_lock','edit_posts')),
+                       array('commtag',        t('Tagging'),                           t('Ability to tag existing posts'), false, get_config('feature_lock','commtag')),
+                       array('categories',     t('Post Categories'),                   t('Add categories to your posts'), false, get_config('feature_lock','categories')),
+                       array('filing',         t('Saved Folders'),                     t('Ability to file posts under folders'), false, get_config('feature_lock','filing')),
+                       array('dislike',        t('Dislike Posts'),                     t('Ability to dislike posts/comments'), false, get_config('feature_lock','dislike')),
+                       array('star_posts',     t('Star Posts'),                        t('Ability to mark special posts with a star indicator'), false, get_config('feature_lock','star_posts')),
+                       array('ignore_posts',   t('Mute Post Notifications'),           t('Ability to mute notifications for a thread'), false, get_config('feature_lock','ignore_posts')),
                ),
 
                // Advanced Profile Settings
                'advanced_profile' => array(
                        t('Advanced Profile Settings'),
-                       array('forumlist_profile', t('List Forums'),                    t('Show visitors public community forums at the Advanced Profile Page'),false),
+                       array('forumlist_profile', t('List Forums'),                    t('Show visitors public community forums at the Advanced Profile Page'), false, get_config('feature_lock','forumlist_profile')),
                ),
        );
 
+       // removed any locked features and remove the entire category if this makes it empty
+
+       if($filtered) {
+               foreach($arr as $k => $x) {
+                       $has_items = false;
+                       $kquantity = count($arr[$k]);
+                       for($y = 0; $y < $kquantity; $y ++) {
+                               if(is_array($arr[$k][$y])) {
+                                       if($arr[$k][$y][4] === false) {
+                                               $has_items = true;
+                                       }
+                                       else {
+                                               unset($arr[$k][$y]);
+                                       }
+                               }
+                       }
+                       if(! $has_items) {
+                               unset($arr[$k]);
+                       }
+               }
+       }
+
        call_hooks('get_features',$arr);
        return $arr;
 }
index fd1c97dfde47d1af8c665b03eac51370428a7940..a1375e00dfa678f18368a407583d9d96e0625916 100644 (file)
@@ -297,17 +297,26 @@ function group_side($every="contacts",$each="group",$editmode = "standard", $gro
        return $o;
 }
 
-function expand_groups($a,$check_dead = false) {
+function expand_groups($a,$check_dead = false, $use_gcontact = false) {
        if(! (is_array($a) && count($a)))
                return array();
        $groups = implode(',', $a);
        $groups = dbesc($groups);
-       $r = q("SELECT `contact-id` FROM `group_member` WHERE `gid` IN ( $groups )");
+
+       if ($use_gcontact)
+               $r = q("SELECT `gcontact`.`id` AS `contact-id` FROM `group_member`
+                               INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id`
+                               INNER JOIN `gcontact` ON `gcontact`.`nurl` = `contact`.`nurl`
+                       WHERE `gid` IN ($groups)");
+       else
+               $r = q("SELECT `contact-id` FROM `group_member` WHERE `gid` IN ( $groups )");
+
+
        $ret = array();
        if(count($r))
                foreach($r as $rr)
                        $ret[] = $rr['contact-id'];
-       if($check_dead) {
+       if($check_dead AND !$use_gcontact) {
                require_once('include/acl_selectors.php');
                $ret = prune_deadguys($ret);
        }
@@ -366,4 +375,4 @@ function groups_count_unseen() {
        );
 
        return $r;
-}
\ No newline at end of file
+}
index fb405b90f17b278ea035cf11f0cb4846f7504d65..fdd28f81ce40f4f3f2bee76b5a9f826ef54113d8 100644 (file)
@@ -300,6 +300,7 @@ function profile_sidebar($profile, $block = 0) {
                $account_type = "";
 
        if((x($profile,'address') == 1)
+                       || (x($profile,'location') == 1)
                        || (x($profile,'locality') == 1)
                        || (x($profile,'region') == 1)
                        || (x($profile,'postal-code') == 1)
@@ -368,6 +369,8 @@ function profile_sidebar($profile, $block = 0) {
 
        if (isset($p["address"]))
                $p["address"] = bbcode($p["address"]);
+       else
+               $p["address"] = bbcode($p["location"]);
 
        if (isset($p["photo"]))
                $p["photo"] = proxy_url($p["photo"], false, PROXY_SIZE_SMALL);
index 02942db97dea7ae13c5a622bc684a4920eb4be40..7931b8c3d4119ae61060ff6ccea24fc6766b8b06 100644 (file)
@@ -945,8 +945,9 @@ function add_page_info_data($data) {
                $a = get_app();
                $hashtags = "\n";
                foreach ($data["keywords"] AS $keyword) {
-                       $hashtag = str_replace(array(" ", "+", "/", ".", "#", "'"),
-                                               array("","", "", "", "", ""), $keyword);
+                       /// @todo make a positive list of allowed characters
+                       $hashtag = str_replace(array(" ", "+", "/", ".", "#", "'", "’", "`", "(", ")", "„", "“"),
+                                               array("","", "", "", "", "", "", "", "", "", "", ""), $keyword);
                        $hashtags .= "#[url=".$a->get_baseurl()."/search?tag=".rawurlencode($hashtag)."]".$hashtag."[/url] ";
                }
        }
@@ -957,12 +958,7 @@ function add_page_info_data($data) {
 function query_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
        require_once("mod/parse_url.php");
 
-       $data = Cache::get("parse_url:".$url);
-       if (is_null($data)){
-               $data = parseurl_getsiteinfo($url, true);
-               Cache::set("parse_url:".$url,serialize($data), CACHE_DAY);
-       } else
-               $data = unserialize($data);
+       $data = parseurl_getsiteinfo_cached($url, true);
 
        if ($photo != "")
                $data["images"][0]["src"] = $photo;
@@ -1328,6 +1324,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                logger("item_store: Set network to ".$arr["network"]." for ".$arr["uri"], LOGGER_DEBUG);
        }
 
+       if ($arr["gcontact-id"] == 0)
+               $arr["gcontact-id"] = get_gcontact_id(array("url" => $arr['author-link'], "network" => $arr['network'],
+                                                        "photo" => $arr['author-avatar'], "name" => $arr['author-name']));
+
        if ($arr['guid'] != "") {
                // Checking if there is already an item with the same guid
                logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG);
@@ -1599,6 +1599,14 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                );
 
        if($dsprsig) {
+
+                // Friendica servers lower than 3.4.3-2 had double encoded the signature ...
+               // We can check for this condition when we decode and encode the stuff again.
+               if (base64_encode(base64_decode(base64_decode($dsprsig->signature))) == base64_decode($dsprsig->signature)) {
+                       $dsprsig->signature = base64_decode($dsprsig->signature);
+                       logger("Repaired double encoded signature from handle ".$dsprsig->signer, LOGGER_DEBUG);
+               }
+
                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                        intval($current_post),
                        dbesc($dsprsig->signed_text),
@@ -2633,7 +2641,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
 
                logger('consume_feed: feed item count = ' . $feed->get_item_quantity());
 
-       // in inverse date order
+               // in inverse date order
                if ($datedir)
                        $items = array_reverse($feed->get_items());
                else
index 6aef0cb5b8b3b4421e8ac25c764def3a0ac1d764..646e0727be4ec63f09773ed6fddea299ed635db0 100644 (file)
@@ -279,6 +279,9 @@ function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact)
                $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
                $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
 
+               // This code could never had worked (the return values form the queries were used in a wrong way.
+               // Additionally it is needlessly complicated. Either the contact is owner or not. And we have this data already.
+/*
                // Get contact's private key if he's a user of the local Friendica server
                $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
                        dbesc($contact['url'])
@@ -289,9 +292,15 @@ function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact)
                        $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
                                intval($contact_uid)
                        );
+*/
+               // Is the contact the owner? Then fetch the private key
+               if ($contact['self'] AND ($contact['uid'] > 0)) {
+                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
+                               intval($contact['uid'])
+                       );
 
-                       if( $r)
-                               $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256'));
+                       if($r)
+                               $authorsig = base64_encode(rsa_sign($signed_text,$r[0]['prvkey'],'sha256'));
                }
 
                if(! isset($authorsig))
@@ -329,6 +338,10 @@ function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) {
                $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
                $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
 
+
+               // This code could never had worked (the return values form the queries were used in a wrong way.
+               // Additionally it is needlessly complicated. Either the contact is owner or not. And we have this data already.
+/*
                // Get contact's private key if he's a user of the local Friendica server
                $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
                        dbesc($contact['url'])
@@ -343,6 +356,17 @@ function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) {
                        if( $r)
                                $contact_uprvkey = $r['prvkey'];
                }
+*/
+
+               // Is the contact the owner? Then fetch the private key
+               if ($contact['self'] AND ($contact['uid'] > 0)) {
+                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
+                               intval($contact['uid'])
+                       );
+
+                       if($r)
+                               $contact_uprvkey = $r[0]['prvkey'];
+               }
 
                $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1",
                        intval($post_id)
@@ -353,7 +377,7 @@ function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) {
                                intval($r[0]['parent'])
                        );
                        if( $p) {
-                               $signed_text = $r[0]['guid'] . ';Post;' . $p[0]['guid'] . ';true;' . $diaspora_handle;
+                               $signed_text = 'true;'.$r[0]['guid'].';Post;'.$p[0]['guid'].';'.$diaspora_handle;
 
                                if(isset($contact_uprvkey))
                                        $authorsig = base64_encode(rsa_sign($signed_text,$contact_uprvkey,'sha256'));
index ac5191b259c876306ebd8ae898b94a52cdbc0540..611f00632f4a5d507008b7d9308fa33704f77206 100644 (file)
@@ -1246,6 +1246,9 @@ function original_url($url, $depth=1, $fetchbody = false) {
 
        $a->save_timestamp($stamp1, "network");
 
+       if ($http_code == 0)
+               return($url);
+
        if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302"))
                AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) {
                if ($curl_info['redirect_url'] != "")
index 92e48c355404a0f4bc1fb97451ea097d47f3f8b8..6c42f19c6aec66c22d0f2522b15f13a8382b7ea8 100644 (file)
@@ -535,7 +535,7 @@ function notifier_run(&$argv, &$argc){
 
        if($public_message) {
 
-               if (!$followup)
+               if (!$followup AND $top_level)
                        $r0 = diaspora_fetch_relay();
                else
                        $r0 = array();
index c848a4580c9dafc407c649fc2a36e0e2130eb399..b1770f68903408034053997dff8a0495081d89aa 100755 (executable)
@@ -13,7 +13,13 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
 
        $a = get_app();
 
-       $txt = Cache::get($a->videowidth . $embedurl);
+       $r = q("SELECT * FROM `oembed` WHERE `url` = '%s'",
+               dbesc(normalise_link($embedurl)));
+
+       if ($r)
+               $txt = $r[0]["content"];
+       else
+               $txt = Cache::get($a->videowidth . $embedurl);
 
        // These media files should now be caught in bbcode.php
        // left here as a fallback in case this is called from another source
@@ -66,8 +72,14 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
 
                if ($txt[0]!="{")
                        $txt='{"type":"error"}';
-               else    //save in cache
+               else {  //save in cache
+                       $j = json_decode($txt);
+                       if ($j->type != "error")
+                               q("INSERT INTO `oembed` (`url`, `content`, `created`) VALUES ('%s', '%s', '%s')",
+                                       dbesc(normalise_link($embedurl)), dbesc($txt), dbesc(datetime_convert()));
+
                        Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY);
+               }
        }
 
        $j = json_decode($txt);
@@ -85,7 +97,7 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
        // If fetching information doesn't work, then improve via internal functions
        if (($j->type == "error") OR ($no_rich_type AND ($j->type == "rich"))) {
                require_once("mod/parse_url.php");
-               $data = parseurl_getsiteinfo($embedurl, true, false);
+               $data = parseurl_getsiteinfo_cached($embedurl, true, false);
                $j->type = $data["type"];
 
                if ($j->type == "photo") {
index 1087596e2f23aed16322d0826ab66d8ca5fd7170..b7799fa9df24f3907d63036324de5ce6b5958e05 100644 (file)
@@ -129,45 +129,57 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch)
 
        if ($r AND !$onlyfetch) {
                // Update contact data
-               $update_contact = ($r[0]['name-date'] < datetime_convert('','','now -12 hours'));
-               if ($update_contact) {
-                       logger("Update contact data for contact ".$contact["id"], LOGGER_DEBUG);
 
-                       $value = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
-                       if ($value != "")
-                               $contact["name"] = $value;
+               $value = $xpath->query("atom:link[@rel='salmon']", $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["notify"] = $value;
+
+               $value = $xpath->evaluate('atom:author/uri/text()', $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["alias"] = $value;
+
+               $value = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["name"] = $value;
+
+               $value = $xpath->evaluate('atom:author/poco:preferredUsername/text()', $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["nick"] = $value;
+
+               $value = $xpath->evaluate('atom:author/poco:note/text()', $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["about"] = html2bbcode($value);
 
-                       $value = $xpath->evaluate('atom:author/poco:preferredUsername/text()', $context)->item(0)->nodeValue;
-                       if ($value != "")
-                               $contact["nick"] = $value;
+               $value = $xpath->evaluate('atom:author/poco:address/poco:formatted/text()', $context)->item(0)->nodeValue;
+               if ($value != "")
+                       $contact["location"] = $value;
 
-                       $value = $xpath->evaluate('atom:author/poco:note/text()', $context)->item(0)->nodeValue;
-                       if ($value != "")
-                               $contact["about"] = html2bbcode($value);
+               if (($contact["name"] != $r[0]["name"]) OR ($contact["nick"] != $r[0]["nick"]) OR ($contact["about"] != $r[0]["about"]) OR ($contact["location"] != $r[0]["location"])) {
 
-                       $value = $xpath->evaluate('atom:author/poco:address/poco:formatted/text()', $context)->item(0)->nodeValue;
-                       if ($value != "")
-                               $contact["location"] = $value;
+                       logger("Update contact data for contact ".$contact["id"], LOGGER_DEBUG);
 
                        q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `name-date` = '%s' WHERE `id` = %d AND `network` = '%s'",
                                dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["about"]), dbesc($contact["location"]),
                                dbesc(datetime_convert()), intval($contact["id"]), dbesc(NETWORK_OSTATUS));
 
                        poco_check($contact["url"], $contact["name"], $contact["network"], $author["author-avatar"], $contact["about"], $contact["location"],
-                                       "", "", "", datetime_convert(), 2, $contact["id"], $contact["uid"]);
+                                               "", "", "", datetime_convert(), 2, $contact["id"], $contact["uid"]);
                }
 
-               $update_photo = ($r[0]['avatar-date'] < datetime_convert('','','now -12 hours'));
-
-               if ($update_photo AND isset($author["author-avatar"])) {
+               if (isset($author["author-avatar"]) AND ($author["author-avatar"] != $r[0]['photo'])) {
                        logger("Update profile picture for contact ".$contact["id"], LOGGER_DEBUG);
 
                        $photos = import_profile_photo($author["author-avatar"], $importer["uid"], $contact["id"]);
 
                        q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d AND `network` = '%s'",
-                               dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]),
+                               dbesc($author["author-avatar"]), dbesc($photos[1]), dbesc($photos[2]),
                                dbesc(datetime_convert()), intval($contact["id"]), dbesc(NETWORK_OSTATUS));
                }
+
+               /// @todo Add the "addr" field
+               $contact["generation"] = 2;
+               $contact["photo"] = $author["author-avatar"];
+               update_gcontact($contact);
        }
 
        return($author);
@@ -1447,9 +1459,12 @@ function ostatus_entry($doc, $item, $owner, $toplevel = false, $repeat = false)
                $repeated_owner["about"] = "";
                $repeated_owner["uid"] = 0;
 
-               $r =q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", normalise_link($repeated_item["author-link"]));
+               // Fetch the missing data from the global contacts
+               $r =q("SELECT * FROM `gcontact` WHERE `nurl` = '%s'", normalise_link($repeated_item["author-link"]));
                if ($r) {
-                       $repeated_owner["nick"] = $r[0]["nick"];
+                       if ($r[0]["nick"] != "")
+                               $repeated_owner["nick"] = $r[0]["nick"];
+
                        $repeated_owner["location"] = $r[0]["location"];
                        $repeated_owner["about"] = $r[0]["about"];
                }
index cb56850d4f3cec833eacab9953527df603c3ac74..05431bee2d27d2b6ca601d9f0a93d02e873c9590 100644 (file)
@@ -90,6 +90,14 @@ function get_attached_data($body) {
                                $post["text"] = $body;
                        }
                }
+
+               if (preg_match_all("(\[url\]([$URLSearchString]*)\[\/url\])ism", $body, $links,  PREG_SET_ORDER)) {
+                       if (count($links) == 1) {
+                               $post["type"] = "text";
+                               $post["url"] = $links[0][1];
+                               $post["text"] = $body;
+                       }
+               }
                if (!isset($post["type"])) {
                        $post["type"] = "text";
                        $post["text"] = trim($body);
@@ -129,9 +137,17 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
        require_once("include/html2plain.php");
        require_once("include/network.php");
 
+       // Remove the hash tags
+       $URLSearchString = "^\[\]";
+       $body = preg_replace("/([#@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$1$3', $b["body"]);
+
+       // Add an URL element if the text contains a raw link
+       $body = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url]$2[/url]', $body);
+
        // At first look at data that is attached via "type-..." stuff
        // This will hopefully replaced with a dedicated bbcode later
-       $post = get_attached_data($b["body"]);
+       //$post = get_attached_data($b["body"]);
+       $post = get_attached_data($body);
 
        if (($b["title"] != "") AND ($post["text"] != ""))
                $post["text"] = trim($b["title"]."\n\n".$post["text"]);
@@ -146,6 +162,8 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
        if ($includedlinks) {
                if ($post["type"] == "link")
                        $link = $post["url"];
+               elseif ($post["type"] == "text")
+                       $link = $post["url"];
                elseif ($post["type"] == "video")
                        $link = $post["url"];
                elseif ($post["type"] == "photo")
@@ -161,8 +179,22 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
                // But: if the link is beyond the limit, then it has to be added.
                if (($link != "") AND strstr($msg, $link)) {
                        $pos = strpos($msg, $link);
-                       if (($limit == 0) OR ($pos < $limit))
+
+                       // Will the text be shortened in the link?
+                       // Or is the link the last item in the post?
+                       if (($limit > 0) AND ($pos < $limit) AND (($pos + 23 > $limit) OR ($pos + strlen($link) == strlen($msg))))
+                               $msg = trim(str_replace($link, "", $msg));
+                       elseif (($limit == 0) OR ($pos < $limit)) {
+                               // The limit has to be increased since it will be shortened - but not now
+                               // Only do it with Twitter (htmlmode = 8)
+                               if (($limit > 0) AND (strlen($link) > 23) AND ($htmlmode == 8))
+                                       $limit = $limit - 23 + strlen($link);
+
                                $link = "";
+
+                               if ($post["type"] == "text")
+                                       unset($post["url"]);
+                       }
                }
        }
 
@@ -178,7 +210,9 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
 
                if (iconv_strlen($msg, "UTF-8") > $limit) {
 
-                       if (!isset($post["url"])) {
+                       if (($post["type"] == "text") AND isset($post["url"]))
+                               $post["url"] = $b["plink"];
+                       elseif (!isset($post["url"])) {
                                $limit = $limit - 23;
                                $post["url"] = $b["plink"];
                        } elseif (strpos($b["body"], "[share") !== false)
index cb5fe28ad9bc5e1fee4ab55fdcdb43f0b2c27ed4..f40768f0d0b26abfbb5559f323eff611725c7809 100644 (file)
@@ -52,6 +52,8 @@ function queue_run(&$argv, &$argc){
                $queue_id = 0;
 
        $deadguys = array();
+       $deadservers = array();
+       $serverlist = array();
 
        logger('queue: start');
 
@@ -95,7 +97,7 @@ function queue_run(&$argv, &$argc){
                // For the first 12 hours we'll try to deliver every 15 minutes
                // After that, we'll only attempt delivery once per hour.
 
-               $r = q("SELECT `id` FROM `queue` WHERE (( `created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( `last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR ))");
+               $r = q("SELECT `id` FROM `queue` WHERE ((`created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE) OR (`last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR)) ORDER BY `cid`, `created`");
        }
        if(! $r){
                return;
@@ -116,7 +118,7 @@ function queue_run(&$argv, &$argc){
                // so check again if this entry still needs processing
 
                if($queue_id) {
-                       $qi = q("select * from queue where `id` = %d limit 1",
+                       $qi = q("SELECT * FROM `queue` WHERE `id` = %d LIMIT 1",
                                intval($queue_id)
                        );
                }
@@ -142,8 +144,18 @@ function queue_run(&$argv, &$argc){
                        continue;
                }
 
-               if (!poco_reachable($c[0]['url'])) {
-                       logger('queue: skipping probably dead url: ' . $c[0]['url']);
+               $server = poco_detect_server($c[0]['url']);
+
+               if (($server != "") AND !in_array($server, $serverlist)) {
+                       logger("Check server ".$server." (".$c[0]["network"].")");
+                       if (!poco_check_server($server, $c[0]["network"], true))
+                               $deadservers[] = $server;
+
+                       $serverlist[] = $server;
+               }
+
+               if (($server != "") AND in_array($server, $deadservers)) {
+                       logger('queue: skipping known dead server: '.$server);
                        update_queue_time($q_item['id']);
                        continue;
                }
@@ -166,37 +178,39 @@ function queue_run(&$argv, &$argc){
 
                switch($contact['network']) {
                        case NETWORK_DFRN:
-                               logger('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
+                               logger('queue: dfrndelivery: item '.$q_item['id'].' for '.$contact['name'].' <'.$contact['url'].'>');
                                $deliver_status = dfrn_deliver($owner,$contact,$data);
 
                                if($deliver_status == (-1)) {
                                        update_queue_time($q_item['id']);
                                        $deadguys[] = $contact['notify'];
-                               }
-                               else {
+                               } else
                                        remove_queue_item($q_item['id']);
-                               }
+
                                break;
                        case NETWORK_OSTATUS:
                                if($contact['notify']) {
-                                       logger('queue: slapdelivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
+                                       logger('queue: slapdelivery: item '.$q_item['id'].' for '.$contact['name'].' <'.$contact['url'].'>');
                                        $deliver_status = slapper($owner,$contact['notify'],$data);
 
-                                       if($deliver_status == (-1))
+                                       if($deliver_status == (-1)) {
                                                update_queue_time($q_item['id']);
-                                       else
+                                               $deadguys[] = $contact['notify'];
+                                       } else
                                                remove_queue_item($q_item['id']);
                                }
                                break;
                        case NETWORK_DIASPORA:
                                if($contact['notify']) {
-                                       logger('queue: diaspora_delivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
+                                       logger('queue: diaspora_delivery: item '.$q_item['id'].' for '.$contact['name'].' <'.$contact['url'].'>');
                                        $deliver_status = diaspora_transmit($owner,$contact,$data,$public,true);
 
-                                       if($deliver_status == (-1))
+                                       if($deliver_status == (-1)) {
                                                update_queue_time($q_item['id']);
-                                       else
+                                               $deadguys[] = $contact['notify'];
+                                       } else
                                                remove_queue_item($q_item['id']);
+
                                }
                                break;
 
@@ -212,6 +226,7 @@ function queue_run(&$argv, &$argc){
                                break;
 
                }
+               logger('Deliver status '.$deliver_status.' for item '.$q_item['id'].' to '.$contact['name'].' <'.$contact['url'].'>');
        }
 
        return;
diff --git a/include/remoteupdate.php b/include/remoteupdate.php
deleted file mode 100644 (file)
index 9effc9b..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-/* update friendica */
-define('APIBASE', 'http://github.com/api/v2/');
-define('F9KREPO', 'friendica/friendica');
-
-$up_totalfiles = 0;
-$up_countfiles = 0;
-$up_lastp = -1;
-
-function checkUpdate(){
-       $r = fetch_url( APIBASE."json/repos/show/".F9KREPO."/tags" );
-       $tags = json_decode($r);
-       
-       $tag = 0.0;
-       foreach ($tags->tags as $i=>$v){
-               $i = (float)$i;
-               if ($i>$tag) $tag=$i;
-       }
-       
-       if ($tag==0.0) return false;
-       $f = fetch_url("https://raw.github.com/".F9KREPO."/".$tag."/boot.php","r");
-       preg_match("|'FRIENDICA_VERSION', *'([^']*)'|", $f, $m);
-       $version =  $m[1];
-       
-       $lv = explode(".", FRIENDICA_VERSION);
-       $rv = explode(".",$version);
-       foreach($lv as $i=>$v){
-               if ((int)$lv[$i] < (int)$rv[$i]) {
-                       return array($tag, $version, "https://github.com/friendica/friendica/zipball/".$tag);
-                       break;
-               }
-       }
-       return false;
-}
-function canWeWrite(){
-       $bd = dirname(dirname(__file__));
-       return is_writable( $bd."/boot.php" );
-}
-
-function out($txt){ echo "§".$txt."§"; ob_end_flush(); flush();}
-
-function up_count($path){
-    $file_count = 0;
-    $dir_handle = opendir($path);
-    if (!$dir_handle) return -1;
-    while ($file = readdir($dir_handle)) {
-        if ($file == '.' || $file == '..') continue;
-               $file_count++;
-        
-        if (is_dir($path . $file)){      
-            $file_count += up_count($path . $file . DIRECTORY_SEPARATOR);
-        }
-        
-    }
-    closedir($dir_handle);
-    return $file_count;
-}
-
-
-
-function up_unzip($file, $folder="/tmp"){
-       $folder.="/";
-       $zip = zip_open($file);
-       if ($zip) {
-         while ($zip_entry = zip_read($zip)) {
-               $zip_entry_name = zip_entry_name($zip_entry);
-               if (substr($zip_entry_name,strlen($zip_entry_name)-1,1)=="/"){
-                       mkdir($folder.$zip_entry_name,0777, true);
-               } else {
-                       $fp = fopen($folder.$zip_entry_name, "w");
-                       if (zip_entry_open($zip, $zip_entry, "r")) {
-                         $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
-                         fwrite($fp,"$buf");
-                         zip_entry_close($zip_entry);
-                         fclose($fp);
-                       }
-               }
-         }
-         zip_close($zip);
-       }       
-}
-
-/**
- * Walk recoursively in a folder and call a callback function on every
- * dir entry.
- * args:
- *     $dir            string          base dir to walk
- *     $callback       function        callback function
- *  $sort              int                     0: ascending, 1: descending
- *     $cb_argv        any                     extra value passed to callback
- * 
- * callback signature:
- * function name($fn, $dir [, $argv])
- *     $fn             string          full dir entry name
- *     $dir    string          start dir path
- *  $argv      any                     user value to callback
- * 
- */
-function up_walktree($dir, $callback=Null, $sort=0, $cb_argv=Null ,  $startdir=Null){
-       if (is_null($callback)) return;
-       if (is_null($startdir)) $startdir = $dir;
-       $res = scandir($dir, $sort);
-       foreach($res as $i=>$v){
-               if ($v!="." && $v!=".."){
-                       $fn = $dir."/".$v;
-                       if ($sort==0) $callback($fn, $startdir, $cb_argv);      
-                       if (is_dir($fn)) up_walktree($fn, $callback, $sort, $cb_argv, $startdir);
-                       if ($sort==1) $callback($fn, $startdir, $cb_argv);      
-               }
-       }
-       
-}
-
-function up_copy($fn, $dir){
-       global $up_countfiles, $up_totalfiles, $up_lastp;
-       $up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100);
-       
-       if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return;  
-       $ddest = dirname(dirname(__file__));
-       $fd = str_replace($dir, $ddest, $fn);
-       
-       if (is_dir($fn) && !is_dir($fd)) {
-               $re=mkdir($fd,0777,true);
-       }
-       if (!is_dir($fn)){
-               $re=copy($fn, $fd);
-       }
-       
-       if ($re===false) { 
-               out("ERROR. Abort."); 
-               killme();
-       }
-       out("copy@Copy@$prc%");
-}
-
-function up_ftp($fn, $dir, $argv){
-       global $up_countfiles, $up_totalfiles, $up_lastp;
-       $up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100);
-
-       if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return;
-       
-       list($ddest, $conn_id) = $argv;
-       $l = strlen($ddest)-1;
-       if (substr($ddest,$l,1)=="/") $ddest = substr($ddest,0,$l);
-       $fd = str_replace($dir, $ddest, $fn);
-       
-       if (is_dir($fn)){
-               if (ftp_nlist($conn_id, $fd)===false) { 
-                       $ret = ftp_mkdir($conn_id, $fd);
-               } else {
-                       $ret=true;
-               }
-       } else {
-               $ret = ftp_put($conn_id, $fd, $fn, FTP_BINARY); 
-       }
-       if (!$ret) { 
-               out("ERROR. Abort."); 
-               killme();
-       } 
-       out("copy@Copy@$prc%");
-}
-
-function up_rm($fn, $dir){
-       if (is_dir($fn)){
-               rmdir($fn);
-       } else {
-               unlink($fn);
-       }
-}
-
-function up_dlfile($url, $file) {
-       $in = fopen ($url, "r");
-       $out = fopen ($file, "w");
-       
-       $fs = filesize($url);
-       
-
-       if (!$in || !$out) return false;
-       
-       $s=0; $count=0;
-       while (!feof ($in)) {
-               $line = fgets ($in, 1024);
-               fwrite( $out, $line);
-               
-               $count++; $s += strlen($line);
-               if ($count==50){
-                       $count=0;
-                       $sp=$s/1024.0; $ex="Kb";
-                       if ($sp>1024) { $sp=$sp/1024; $ex="Mb"; }
-                       if ($sp>1024) { $sp=$sp/1024; $ex="Gb"; }
-                       $sp = ((int)($sp*100))/100;
-                       out("dwl@Download@".$sp.$ex);
-               }
-       }
-       fclose($in);
-       return true;
-}
-
-function doUpdate($remotefile, $ftpdata=false){
-       global $up_totalfiles;
-       
-       
-       $localtmpfile = tempnam("/tmp", "fk");
-       out("dwl@Download@starting...");
-       $rt= up_dlfile($remotefile, $localtmpfile);
-       if ($rt==false || filesize($localtmpfile)==0){
-               out("dwl@Download@ERROR.");
-               unlink($localtmpfile);
-               return;
-       }
-       out("dwl@Download@Ok.");
-       
-       out("unzip@Unzip@");
-       $tmpdirname = $localfile."ex";
-       mkdir($tmpdirname);
-       up_unzip($localtmpfile, $tmpdirname);
-       $basedir = glob($tmpdirname."/*"); $basedir=$basedir[0];
-       out ("unzip@Unzip@Ok.");
-       
-       $up_totalfiles = up_count($basedir."/");
-       
-       if (canWeWrite()){
-               out("copy@Copy@");
-               up_walktree($basedir, 'up_copy');
-       }
-       if ($ftpdata!==false && is_array($ftpdata) && $ftpdata['ftphost']!="" ){
-               out("ftpcon@Connect to FTP@");
-               $conn_id = ftp_connect($ftpdata['ftphost']);
-               $login_result = ftp_login($conn_id, $ftpdata['ftpuser'], $ftpdata['ftppwd']);
-               
-               if ((!$conn_id) || (!$login_result)) { 
-                       out("ftpcon@Connect to FTP@FAILED");
-                       up_clean($tmpdirname, $localtmpfile); 
-                       return;
-               } else {
-                       out("ftpcon@Connect to FTP@Ok.");
-               }
-               out("copy@Copy@");
-               up_walktree($basedir, 'up_ftp', 0, array( $ftpdata['ftppath'], $conn_id));
-               ftp_close($conn_id);
-       }
-
-       up_clean($tmpdirname, $localtmpfile); 
-       
-}
-
-function up_clean($tmpdirname, $localtmpfile){
-       out("clean@Clean up@");
-       unlink($localtmpfile);
-       up_walktree($tmpdirname, 'up_rm', 1);
-       rmdir($tmpdirname);
-       out("clean@Clean up@Ok.");
-}
index 89b09515ed0c73776a683c15064de44263950ba0..4532abb39b2543678f26114dd852ce5b8bbcc575 100644 (file)
@@ -227,6 +227,8 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
                $server_url = $x[0]["server_url"];
                $nick = $x[0]["nick"];
                $addr = $x[0]["addr"];
+               $alias =  $x[0]["alias"];
+               $notify =  $x[0]["notify"];
        } else {
                $created = "0000-00-00 00:00:00";
                $server_url = "";
@@ -234,6 +236,8 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
                $urlparts = parse_url($profile_url);
                $nick = end(explode("/", $urlparts["path"]));
                $addr = "";
+               $alias = "";
+               $notify = "";
        }
 
        if ((($network == "") OR ($name == "") OR ($addr == "") OR ($profile_photo == "") OR ($server_url == "") OR $alternate)
@@ -246,6 +250,8 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
                $name = $data["name"];
                $nick = $data["nick"];
                $addr = $data["addr"];
+               $alias = $data["alias"];
+               $notify = $data["notify"];
                $profile_url = $data["url"];
                $profile_photo = $data["photo"];
                $server_url = $data["baseurl"];
@@ -301,12 +307,19 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
                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
+                               `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),
@@ -320,34 +333,44 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
                                dbesc($about),
                                dbesc($keywords),
                                dbesc($gender),
+                               dbesc($alias),
+                               dbesc($notify),
                                intval($generation),
                                intval($generation),
                                dbesc(normalise_link($profile_url))
                        );
                }
        } else {
-               q("INSERT INTO `gcontact` (`name`, `nick`, `addr`, `network`, `url`, `nurl`, `photo`, `connect`, `server_url`, `created`, `updated`, `location`, `about`, `keywords`, `gender`, `generation`)
-                       VALUES ('%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),
-                       intval($generation)
-               );
-               $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+               // 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'];
        }
@@ -380,11 +403,11 @@ 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)
-       );
+       //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;
 }
@@ -698,6 +721,10 @@ function poco_to_boolean($val) {
 
 function poco_check_server($server_url, $network = "", $force = false) {
 
+       // Unify the server address
+       $server_url = trim($server_url, "/");
+       $server_url = str_replace("/index.php", "", $server_url);
+
        if ($server_url == "")
                return false;
 
@@ -769,17 +796,23 @@ function poco_check_server($server_url, $network = "", $force = false) {
                // Test for Diaspora
                $serverret = z_fetch_url($server_url);
 
-               $lines = explode("\n",$serverret["header"]);
-               if(count($lines))
-                       foreach($lines as $line) {
-                               $line = trim($line);
-                               if(stristr($line,'X-Diaspora-Version:')) {
-                                       $platform = "Diaspora";
-                                       $version = trim(str_replace("X-Diaspora-Version:", "", $line));
-                                       $version = trim(str_replace("x-diaspora-version:", "", $version));
-                                       $network = NETWORK_DIASPORA;
+               if (!$serverret["success"] OR ($serverret["body"] == ""))
+                       $failure = true;
+               else {
+                       $lines = explode("\n",$serverret["header"]);
+                       if(count($lines))
+                               foreach($lines as $line) {
+                                       $line = trim($line);
+                                       if(stristr($line,'X-Diaspora-Version:')) {
+                                               $platform = "Diaspora";
+                                               $version = trim(str_replace("X-Diaspora-Version:", "", $line));
+                                               $version = trim(str_replace("x-diaspora-version:", "", $version));
+                                               $network = NETWORK_DIASPORA;
+                                               $versionparts = explode("-", $version);
+                                               $version = $versionparts[0];
+                                       }
                                }
-                       }
+               }
        }
 
        if (!$failure) {
@@ -1290,18 +1323,30 @@ function poco_discover_federation() {
                        return;
        }
 
+       // Discover Friendica, Hubzilla and Diaspora servers
        $serverdata = fetch_url("http://the-federation.info/pods.json");
 
-       if (!$serverdata)
-               return;
+       if ($serverdata) {
+               $servers = json_decode($serverdata);
 
-       $servers = json_decode($serverdata);
+               foreach($servers->pods AS $server)
+                       poco_check_server("https://".$server->host);
+       }
 
-       foreach($servers->pods AS $server)
-               poco_check_server("https://".$server->host);
+       // Discover GNU Social Servers
+       if (!get_config('system','ostatus_disabled')) {
+               $serverdata = "http://gstools.org/api/get_open_instances/";
 
-       set_config('poco','last_federation_discovery', time());
+               $result = z_fetch_url($serverdata);
+               if ($result["success"]) {
+                       $servers = json_decode($result["body"]);
+
+                       foreach($servers->data AS $server)
+                               poco_check_server($server->instance_address);
+               }
+       }
 
+       set_config('poco','last_federation_discovery', time());
 }
 
 function poco_discover($complete = false) {
@@ -1481,4 +1526,232 @@ function poco_discover_server($data, $default_generation = 0) {
        }
        return $success;
 }
+
+/**
+ * @brief Fetch the gcontact id, add an entry if not existed
+ *
+ * @param arr $contact contact array
+ * @return bool|int Returns false if not found, integer if contact was found
+ */
+function get_gcontact_id($contact) {
+
+       $gcontact_id = 0;
+
+       if ($contact["network"] == NETWORK_STATUSNET)
+               $contact["network"] = NETWORK_OSTATUS;
+
+       $r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+               dbesc(normalise_link($contact["url"])));
+
+       if ($r)
+               $gcontact_id = $r[0]["id"];
+       else {
+               q("INSERT INTO `gcontact` (`name`, `nick`, `addr` , `network`, `url`, `nurl`, `photo`, `created`, `updated`, `location`, `about`, `generation`)
+                       VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
+                       dbesc($contact["name"]),
+                       dbesc($contact["nick"]),
+                       dbesc($contact["addr"]),
+                       dbesc($contact["network"]),
+                       dbesc($contact["url"]),
+                       dbesc(normalise_link($contact["url"])),
+                       dbesc($contact["photo"]),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       dbesc($contact["location"]),
+                       dbesc($contact["about"]),
+                       intval($contact["generation"])
+               );
+
+               $r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+                       dbesc(normalise_link($contact["url"])));
+
+               if ($r)
+                       $gcontact_id = $r[0]["id"];
+       }
+
+       return $gcontact_id;
+}
+
+/**
+ * @brief Updates the gcontact table from a given array
+ *
+ * @param arr $contact contact array
+ * @return bool|int Returns false if not found, integer if contact was found
+ */
+function update_gcontact($contact) {
+
+       /// @todo update contact table as well
+
+       $gcontact_id = get_gcontact_id($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`
+               FROM `gcontact` WHERE `id` = %d LIMIT 1",
+               intval($gcontact_id));
+
+       if ($contact["generation"] == 0)
+               $contact["generation"] = $r[0]["generation"];
+
+       if ($contact["photo"] == "")
+               $contact["photo"] = $r[0]["photo"];
+
+       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"];
+
+       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"])) {
+
+               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'
+                               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()),
+                       dbesc(normalise_link($contact["url"])), intval($contact["generation"]));
+       }
+
+       return $gcontact_id;
+}
+
+/**
+ * @brief Updates the gcontact entry from probe
+ *
+ * @param str $url profile link
+ */
+function update_gcontact_from_probe($url) {
+       $data = probe_url($url);
+
+       if ($data["network"] != NETWORK_PHANTOM)
+               update_gcontact($data);
+}
+
+/**
+ * @brief Fetches users of given GNU Social server
+ *
+ * If the "Statistics" plugin is enabled (See http://gstools.org/ for details) we query user data with this.
+ *
+ * @param str $server Server address
+ */
+function gs_fetch_users($server) {
+
+       logger("Fetching users from GNU Social server ".$server, LOGGER_DEBUG);
+
+       $a = get_app();
+
+       $url = $server."/main/statistics";
+
+       $result = z_fetch_url($url);
+       if (!$result["success"])
+               return false;
+
+       $statistics = json_decode($result["body"]);
+
+       if (is_object($statistics->config)) {
+               if ($statistics->config->instance_with_ssl)
+                       $server = "https://";
+               else
+                       $server = "http://";
+
+               $server .= $statistics->config->instance_address;
+
+               $hostname = $statistics->config->instance_address;
+       } else {
+               if ($statistics->instance_with_ssl)
+                       $server = "https://";
+               else
+                       $server = "http://";
+
+               $server .= $statistics->instance_address;
+
+               $hostname = $statistics->instance_address;
+       }
+
+       if (is_object($statistics->users))
+               foreach ($statistics->users AS $nick => $user) {
+                       $profile_url = $server."/".$user->nickname;
+
+                       $contact = array("url" => $profile_url,
+                                       "name" => $user->fullname,
+                                       "addr" => $user->nickname."@".$hostname,
+                                       "nick" => $user->nickname,
+                                       "about" => $user->bio,
+                                       "network" => NETWORK_OSTATUS,
+                                       "photo" => $a->get_baseurl()."/images/person-175.jpg");
+                       get_gcontact_id($contact);
+               }
+}
+
+/**
+ * @brief Asking GNU Social server on a regular base for their user data
+ *
+ */
+function gs_discover() {
+
+       $requery_days = intval(get_config("system", "poco_requery_days"));
+
+       $last_update = date("c", time() - (60 * 60 * 24 * $requery_days));
+
+       $r = q("SELECT `nurl`, `url` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `network` = '%s' AND `last_poco_query` < '%s' ORDER BY RAND() LIMIT 5",
+               dbesc(NETWORK_OSTATUS), dbesc($last_update));
+
+       if (!$r)
+               return;
+
+       foreach ($r AS $server) {
+               gs_fetch_users($server["url"]);
+               q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
+       }
+}
 ?>
index 1b03c39d26775b08fc4c30231bbab7bb956c7d59..fc5e79294f261bfbe1942b42a7daad69f46f3aeb 100644 (file)
@@ -20,10 +20,10 @@ function replace_macros($s,$r) {
        $stamp1 = microtime(true);
 
        $a = get_app();
-       
+
        // pass $baseurl to all templates
        $r['$baseurl'] = z_root();
-       
+
 
        $t = $a->template_engine();
        try {
@@ -895,9 +895,9 @@ function contact_block() {
                $micropro = Null;
 
        } else {
-               $r = q("SELECT * FROM `contact`
-                               WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0
-                                       AND `hidden` = 0 AND `archive` = 0
+               $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `micro`, `network` FROM `contact`
+                               WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending`
+                                       AND NOT `hidden` AND NOT `archive`
                                AND `network` IN ('%s', '%s', '%s') ORDER BY RAND() LIMIT %d",
                                intval($a->profile['uid']),
                                dbesc(NETWORK_DFRN),
@@ -1415,7 +1415,14 @@ function prepare_body(&$item,$attach = false, $preview = false) {
        $item['hashtags'] = $hashtags;
        $item['mentions'] = $mentions;
 
-       put_item_in_cache($item, true);
+       // Update the cached values if there is no "zrl=..." on the links
+       $update = (!local_user() and !remote_user() and ($item["uid"] == 0));
+
+       // Or update it if the current viewer is the intented viewer
+       if (($item["uid"] == local_user()) AND ($item["uid"] != 0))
+               $update = true;
+
+       put_item_in_cache($item, $update);
        $s = $item["rendered-html"];
 
        $prep_arr = array('item' => $item, 'html' => $s, 'preview' => $preview);
index c12f43bb81154c62256b9fac99a823d8ee144e84..0320eaa018e98b28a04179f79aae2b020bbd68da 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 function add_thread($itemid, $onlyshadow = false) {
-       $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`,
+       $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
                        `deleted`, `origin`, `forum_mode`, `mention`, `network`  FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
 
        if (!$items)
@@ -66,6 +66,7 @@ function add_thread($itemid, $onlyshadow = false) {
 
                        unset($item[0]['id']);
                        $item[0]['uid'] = 0;
+                       $item[0]['origin'] = 0;
                        $item[0]['contact-id'] = get_contact($item[0]['author-link'], 0);
                        $public_shadow = item_store($item[0], false, false, true);
 
@@ -111,8 +112,8 @@ function update_thread_uri($itemuri, $uid) {
 }
 
 function update_thread($itemid, $setmention = false) {
-       $items = q("SELECT `uid`, `guid`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`,
-                       `deleted`, `origin`, `forum_mode`, `network`  FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
+       $items = q("SELECT `uid`, `guid`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
+                       `deleted`, `origin`, `forum_mode`, `network`, `rendered-html`, `rendered-hash` FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
 
        if (!$items)
                return;
@@ -125,7 +126,7 @@ function update_thread($itemid, $setmention = false) {
        $sql = "";
 
        foreach ($item AS $field => $data)
-               if (!in_array($field, array("guid", "title", "body"))) {
+               if (!in_array($field, array("guid", "title", "body", "rendered-html", "rendered-hash"))) {
                        if ($sql != "")
                                $sql .= ", ";
 
@@ -142,9 +143,11 @@ function update_thread($itemid, $setmention = false) {
        if (!$items)
                return;
 
-       $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s' WHERE `id` = %d",
+       $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s' WHERE `id` = %d",
                        dbesc($item["title"]),
                        dbesc($item["body"]),
+                       dbesc($item["rendered-html"]),
+                       dbesc($item["rendered-hash"]),
                        intval($items[0]["id"])
                );
        logger("Updating public shadow for post ".$items[0]["id"]." - guid ".$item["guid"]." Result: ".print_r($result, true), LOGGER_DEBUG);
index 89ed058465db00a7e7e9177e65632d95b6042b85..bf926d1fe76f166c7c240036560c86223d8f7814 100644 (file)
--- a/index.php
+++ b/index.php
@@ -556,6 +556,7 @@ EOT;
 $page    = $a->page;
 $profile = $a->profile;
 
+header("X-Friendica-Version: ".FRIENDICA_VERSION);
 header("Content-type: text/html; charset=utf-8");
 
 
index 2e65ef23169cc615beba87c115354cb493072c30..d1fd3765fbc94bcfedd049aa4e99047d99eee913 100644 (file)
                        'inline' : true,
                        'transition' : 'elastic'
                });
-
+               $("a.ajax-popupbox").colorbox({
+                       'transition' : 'elastic'
+               });
 
                /* notifications template */
                var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
diff --git a/library/Chart.js-1.0.2/Chart.min.js b/library/Chart.js-1.0.2/Chart.min.js
new file mode 100644 (file)
index 0000000..3a0a2c8
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+ * Chart.js
+ * http://chartjs.org/
+ * Version: 1.0.2
+ *
+ * Copyright 2015 Nick Downie
+ * Released under the MIT license
+ * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
+ */
+(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;var i=function(t,i){return t["offset"+i]?t["offset"+i]:document.defaultView.getComputedStyle(t).getPropertyValue(i)},e=this.width=i(t.canvas,"Width"),n=this.height=i(t.canvas,"Height");t.canvas.width=e,t.canvas.height=n;var e=this.width=t.canvas.width,n=this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n<t.length;n++)i.apply(e,[t[n],n].concat(s))}else for(var o in t)i.apply(e,[t[o],o].concat(s))},o=s.clone=function(t){var i={};return n(t,function(e,s){t.hasOwnProperty(s)&&(i[s]=e)}),i},a=s.extend=function(t){return n(Array.prototype.slice.call(arguments,1),function(i){n(i,function(e,s){i.hasOwnProperty(s)&&(t[s]=e)})}),t},h=s.merge=function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift({}),a.apply(null,t)},l=s.indexOf=function(t,i){if(Array.prototype.indexOf)return t.indexOf(i);for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1},r=(s.where=function(t,i){var e=[];return s.each(t,function(t){i(t)&&e.push(t)}),e},s.findNextWhere=function(t,i,e){e||(e=-1);for(var s=e+1;s<t.length;s++){var n=t[s];if(i(n))return n}},s.findPreviousWhere=function(t,i,e){e||(e=t.length);for(var s=e-1;s>=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof define&&define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),S=s.radians=function(t){return t*(Math.PI/180)},x=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=y(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),S=Math.round(f/v);(S>a||a>2*S)&&!h;)if(S>a)v*=2,S=Math.round(f/v),S%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,S=Math.round(f/v)}else v/=2,S=Math.round(f/v);return h&&(S=o,v=f/S),{steps:S,stepValue:v,min:p,max:p+S*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join("       ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("   ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),w=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)))},easeOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin(2*(1*t-i)*Math.PI/e)+1)},easeInOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:2==(t/=.5)?1:(e||(e=.3*1.5),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-w.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*w.easeInBounce(2*t):.5*w.easeOutBounce(2*t-1)+.5}}),b=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),L=(s.animationLoop=function(t,i,e,s,n,o){var a=0,h=w[e]||w.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=b(l):n.apply(o)};b(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),k=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},F=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},L(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){k(t.chart.canvas,e,i)})}),R=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},T=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},A=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),M=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},W=s.fontString=function(t,i,e){return i+" "+t+"px "+e},z=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},B=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return M(this.chart),this},stop:function(){return P(this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=R(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:T(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,A(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),F(this,this.events);var t=this.chart.canvas;t.width=this.chart.width,t.height=this.chart.height,t.style.removeProperty?(t.style.removeProperty("width"),t.style.removeProperty("height")):(t.style.removeAttribute("width"),t.style.removeAttribute("height")),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),this.options.customTooltips&&this.options.customTooltips(!1),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&t[h].hasValue()&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx,custom:this.options.customTooltips}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart,custom:this.options.customTooltips}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)<Math.pow(e,2)},draw:function(){if(this.display){var t=this.ctx;t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.closePath(),t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.fillStyle=this.fillColor,t.fill(),t.stroke()}}}),e.Arc=e.Element.extend({inRange:function(t,i){var e=s.getAngleFromPoint(this,{x:t,y:i}),n=e.angle>=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=this.caretPadding=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;if(t.fillStyle=this.fillColor,this.custom)this.custom(this);else{switch(this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}B(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=W(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=z(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){if(this.custom)this.custom(this);else{B(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?z(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),t<this.yLabelWidth&&this.calculateXLabelRotation()},calculateXLabelRotation:function(){this.ctx.font=this.font;var t,i,e=this.ctx.measureText(this.xLabels[0]).width,s=this.ctx.measureText(this.xLabels[this.xLabels.length-1]).width;if(this.xScalePaddingRight=s/2+3,this.xScalePaddingLeft=e/2>this.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=z(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(S(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(S(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/Math.max(this.valuesCount-(this.offsetGridLines?0:1),1),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a),l=this.showHorizontalLines;t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),0!==o||l||(l=!0),l&&t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),l&&(t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+x(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+x(this.lineWidth),o=this.xLabelRotation>0,a=this.showVerticalLines;0!==e||a||(a=!0),a&&t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),a&&(t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*S(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;i<this.valuesCount;i++)t=this.getPointPosition(i,d),e=this.ctx.measureText(C(this.templateString,{value:this.labels[i]})).width+5,0===i||i===this.valuesCount/2?(s=e/2,t.x+s>p&&(p=t.x+s,n=i),t.x-s<g&&(g=t.x-s,a=i)):i<this.valuesCount/2?t.x+e>p&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e<g&&(g=t.x-e,a=i);l=g,r=Math.ceil(p-this.width),o=this.getIndexAngle(n),h=this.getIndexAngle(a),c=r/Math.sin(o+Math.PI/2),u=l/Math.sin(h+Math.PI/2),c=f(c)?c:0,u=f(u)?u:0,this.drawingArea=d-(u+c)/2,this.setCenterPoint(u,c)},setCenterPoint:function(t,i){var e=this.width-i-this.drawingArea,s=t+this.drawingArea;this.xCenter=(s+e)/2,this.yCenter=this.height/2},getIndexAngle:function(t){var i=2*Math.PI/this.valuesCount;return t*i-Math.PI/2},getPointPosition:function(t,i){var e=this.getIndexAngle(t);return{x:Math.cos(e)*i+this.xCenter,y:Math.sin(e)*i+this.yCenter}},draw:function(){if(this.display){var t=this.ctx;if(n(this.yLabels,function(i,e){if(e>0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a<this.valuesCount;a++)s=this.getPointPosition(a,this.calculateCenterOffset(this.min+e*this.stepValue)),0===a?t.moveTo(s.x,s.y):t.lineTo(s.x,s.y);t.closePath(),t.stroke()}if(this.showLabels){if(t.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.showLabelBackdrop){var h=t.measureText(i).width;t.fillStyle=this.backdropColor,t.fillRect(this.xCenter-h/2-this.backdropPaddingX,o-this.fontSize/2-this.backdropPaddingY,h+2*this.backdropPaddingX,this.fontSize+2*this.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.fontColor,t.fillText(i,this.xCenter,o)}}},this),!this.lineArc){t.lineWidth=this.angleLineWidth,t.strokeStyle=this.angleLineColor;for(var i=this.valuesCount-1;i>=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.bars.push(new this.BarClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<this.datasets.length;a++)for(i=0;i<this.datasets[a].bars.length;i++)if(this.datasets[a].bars[i].inRange(n.x,n.y))return e.each(this.datasets,o),s;return s},buildScale:function(t){var i=this,s=function(){var t=[];return i.eachBars(function(i){t.push(i.value)}),t},n={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(s(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.barShowStroke?this.options.barStrokeWidth:0,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(n,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new this.ScaleClass(n)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].bars.push(new this.BarClass({value:t,label:i,x:this.scale.calculateBarX(this.datasets.length,e,this.scale.valuesCount+1),y:this.scale.endPoint,width:this.scale.calculateBarWidth(this.datasets.length),base:this.scale.endPoint,strokeColor:this.datasets[e].strokeColor,fillColor:this.datasets[e].fillColor}))
+},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.bars.shift()},this),this.update()},reflow:function(){e.extend(this.BarClass.prototype,{y:this.scale.endPoint,base:this.scale.endPoint});var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();this.chart.ctx;this.scale.draw(i),e.each(this.datasets,function(t,s){e.each(t.bars,function(t,e){t.hasValue()&&(t.base=this.scale.endPoint,t.transition({x:this.scale.calculateBarX(this.datasets.length,s,e),y:this.scale.calculateY(t.value),width:this.scale.calculateBarWidth(this.datasets.length)},i).draw())},this)},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(Math.abs(t)/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=Math.abs(t.value)},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle)},this)}}),i.types.Doughnut.extend({name:"Pie",defaults:e.merge(s,{percentageInnerCutout:0})})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,bezierCurve:!0,bezierCurveTension:.4,pointDot:!0,pointDotRadius:4,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)<Math.pow(this.radius+this.hitDetectionRadius,2)}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this),this.buildScale(t.labels),this.eachPoints(function(t,i){e.extend(t,{x:this.scale.calculateX(i),y:this.scale.endPoint}),t.save()},this)},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachPoints(function(t){t.save()}),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.datasets,function(t){e.each(t.points,function(t){t.inRange(s.x,s.y)&&i.push(t)})},this),i},buildScale:function(t){var s=this,n=function(){var t=[];return s.eachPoints(function(i){t.push(i.value)}),t},o={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(n(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.pointDotRadius+this.options.pointDotStrokeWidth,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(o,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new i.Scale(o)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:this.scale.calculateX(this.scale.valuesCount+1),y:this.scale.endPoint,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.points.shift()},this),this.update()},reflow:function(){var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();var s=this.chart.ctx,n=function(t){return null!==t.value},o=function(t,i,s){return e.findNextWhere(i,n,s)||t},a=function(t,i,s){return e.findPreviousWhere(i,n,s)||t};this.scale.draw(i),e.each(this.datasets,function(t){var h=e.where(t.points,n);e.each(t.points,function(t,e){t.hasValue()&&t.transition({y:this.scale.calculateY(t.value),x:this.scale.calculateX(e)},i)},this),this.options.bezierCurve&&e.each(h,function(t,i){var s=i>0&&i<h.length-1?this.options.bezierCurveTension:0;t.controlPoints=e.splineCurve(a(t,h,i),t,o(t,h,i),s),t.controlPoints.outer.y>this.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.y<this.scale.startPoint&&(t.controlPoints.outer.y=this.scale.startPoint),t.controlPoints.inner.y>this.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y<this.scale.startPoint&&(t.controlPoints.inner.y=this.scale.startPoint)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(h,function(t,i){if(0===i)s.moveTo(t.x,t.y);else if(this.options.bezierCurve){var e=a(t,h,i);s.bezierCurveTo(e.controlPoints.outer.x,e.controlPoints.outer.y,t.controlPoints.inner.x,t.controlPoints.inner.y,t.x,t.y)}else s.lineTo(t.x,t.y)},this),s.stroke(),this.options.datasetFill&&h.length>0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle),t.draw()},this),this.scale.draw()}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers;i.Type.extend({name:"Radar",defaults:{scaleShowLine:!0,angleShowLineOut:!0,scaleShowLabels:!1,scaleBeginAtZero:!0,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:10,pointLabelFontColor:"#666",pointDot:!0,pointDotRadius:3,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this);
\ No newline at end of file
diff --git a/library/Chart.js-1.0.2/LICENSE.md b/library/Chart.js-1.0.2/LICENSE.md
new file mode 100644 (file)
index 0000000..e10bc0f
--- /dev/null
@@ -0,0 +1,7 @@
+Copyright (c) 2013-2015 Nick Downie
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/library/Chart.js-1.0.2/README.md b/library/Chart.js-1.0.2/README.md
new file mode 100644 (file)
index 0000000..7c4fa8b
--- /dev/null
@@ -0,0 +1,20 @@
+# Chart.js 
+
+[![Build Status](https://travis-ci.org/nnnick/Chart.js.svg?branch=master)](https://travis-ci.org/nnnick/Chart.js) [![Code Climate](https://codeclimate.com/github/nnnick/Chart.js/badges/gpa.svg)](https://codeclimate.com/github/nnnick/Chart.js)
+
+
+*Simple HTML5 Charts using the canvas element* [chartjs.org](http://www.chartjs.org)
+
+## Documentation
+
+You can find documentation at [chartjs.org/docs](http://www.chartjs.org/docs/). The markdown files that build the site are available under `/docs`. Please note - in some of the json examples of configuration you might notice some liquid tags - this is just for the generating the site html, please disregard.
+
+## Bugs, issues and contributing
+
+Before submitting an issue or a pull request to the project, please take a moment to look over the [contributing guidelines](https://github.com/nnnick/Chart.js/blob/master/CONTRIBUTING.md) first.
+
+For support using Chart.js, please post questions with the [`chartjs` tag on Stack Overflow](http://stackoverflow.com/questions/tagged/chartjs).
+
+## License
+
+Chart.js is available under the [MIT license](http://opensource.org/licenses/MIT).
index 9e330fd1dc0380bf127d61be8016a67cbb10c8f4..e9e6323680bf0280eba6fb4ce5bf9cbd0fac13c2 100644 (file)
@@ -1,15 +1,27 @@
 <?php
 
  /**
-  * Friendica admin
-  */
-require_once("include/remoteupdate.php");
+ * @file mod/admin.php
+ * 
+ * @brief Friendica admin
+ */
+
+
 require_once("include/enotify.php");
 require_once("include/text.php");
 
-
 /**
+ * @brief Process send data from the admin panels subpages
+ *
+ * This function acts as relais for processing the data send from the subpages
+ * of the admin panel. Depending on the 1st parameter of the url (argv[1])
+ * specialized functions are called to process the data from the subpages.
+ *
+ * The function itself does not return anything, but the subsequencely function
+ * return the HTML for the pages of the admin panel.
+ *
  * @param App $a
+ *
  */
 function admin_post(&$a){
 
@@ -26,7 +38,7 @@ function admin_post(&$a){
 
 
        // urls
-       if ($a->argc > 1){
+       if($a->argc > 1) {
                switch ($a->argv[1]){
                        case 'site':
                                admin_page_site_post($a);
@@ -35,8 +47,8 @@ function admin_post(&$a){
                                admin_page_users_post($a);
                                break;
                        case 'plugins':
-                               if ($a->argc > 2 &&
-                                       is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")){
+                               if($a->argc > 2 &&
+                                       is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")) {
                                                @include_once("addon/".$a->argv[2]."/".$a->argv[2].".php");
                                                if(function_exists($a->argv[2].'_plugin_admin_post')) {
                                                        $func = $a->argv[2].'_plugin_admin_post';
@@ -47,14 +59,14 @@ function admin_post(&$a){
                                return; // NOTREACHED
                                break;
                        case 'themes':
-                               if ($a->argc < 2) {
+                               if($a->argc < 2) {
                                        if(is_ajax()) return;
                                        goaway($a->get_baseurl(true) . '/admin/' );
                                        return;
                                }
 
                                $theme = $a->argv[2];
-                               if (is_file("view/theme/$theme/config.php")){
+                               if(is_file("view/theme/$theme/config.php")){
                                        function __call_theme_admin_post(&$a, $theme) {
                                                $orig_theme = $a->theme;
                                                $orig_page = $a->page;
@@ -66,7 +78,7 @@ function admin_post(&$a){
 
                                                $init = $theme."_init";
                                                if(function_exists($init)) $init($a);
-                                               if(function_exists("theme_admin_post")){
+                                               if(function_exists("theme_admin_post")) {
                                                        $admin_form = theme_admin_post($a);
                                                }
 
@@ -83,15 +95,15 @@ function admin_post(&$a){
                                goaway($a->get_baseurl(true) . '/admin/themes/' . $theme );
                                return;
                                break;
+                       case 'features':
+                               admin_page_features_post($a);
+                               break;
                        case 'logs':
                                admin_page_logs_post($a);
                                break;
                        case 'dbsync':
                                admin_page_dbsync_post($a);
                                break;
-                       case 'update':
-                               admin_page_remoteupdate_post($a);
-                               break;
                }
        }
 
@@ -100,6 +112,19 @@ function admin_post(&$a){
 }
 
 /**
+ * @brief Generates content of the admin panel pages
+ *
+ * This function generates the content for the admin panel. It consists of the
+ * aside menu (same for the entire admin panel) and the code for the soecified
+ * subpage of the panel.
+ *
+ * The structure of the adress is: /admin/subpage/details though "details" is
+ * only necessary for some subpages, like themes or addons where it is the name
+ * of one theme resp. addon from which the details should be shown. Content for
+ * the subpages is generated in separate functions for each of the subpages.
+ *
+ * The returned string hold the generated HTML code of the page.
+ *
  * @param App $a
  * @return string
  */
@@ -118,55 +143,62 @@ function admin_content(&$a) {
        //      apc_delete($toDelete);
        //}
 
-       /**
+       // Header stuff
+       $a->page['htmlhead'] .= replace_macros(get_markup_template('admin_settings_head.tpl'), array());
+
+       /*
         * Side bar links
         */
-
+       $aside_tools = array();
        // array( url, name, extra css classes )
-       $aside = Array(
-               'site'   =>     Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"),
-               'users'  =>     Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
-               'plugins'=>     Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
-               'themes' =>     Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
-               'dbsync' =>     Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
-               'queue'  =>     Array($a->get_baseurl(true)."/admin/queue/", t('Inspect Queue'), "queue"),
-               //'update' =>   Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
+       // not part of $aside to make the template more adjustable
+       $aside_sub = array(
+               'site'   =>     array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"),
+               'users'  =>     array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
+               'plugins'=>     array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
+               'themes' =>     array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
+               'features' =>   array($a->get_baseurl(true)."/admin/features/", t("Additional features") , "features"),
+               'dbsync' =>     array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
+               'queue'  =>     array($a->get_baseurl(true)."/admin/queue/", t('Inspect Queue'), "queue"),
+               'federation' => array($a->get_baseurl(true)."/admin/federation/", t('Federation Statistics'), "federation"),
        );
 
        /* get plugins admin page */
 
        $r = q("SELECT `name` FROM `addon` WHERE `plugin_admin`=1 ORDER BY `name`");
-       $aside['plugins_admin']=Array();
+       $aside_tools['plugins_admin']=array();
        foreach ($r as $h){
                $plugin =$h['name'];
-               $aside['plugins_admin'][] = Array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin");
+               $aside_tools['plugins_admin'][] = array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin");
                // temp plugins with admin
                $a->plugins_admin[] = $plugin;
        }
 
-       $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs");
-       $aside['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe');
-       $aside['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger');
+       $aside_tools['logs'] = array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs");
+       $aside_tools['viewlogs'] = array($a->get_baseurl(true)."/admin/viewlogs/", t("View Logs"), 'viewlogs');
+       $aside_tools['diagnostics_probe'] = array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe');
+       $aside_tools['diagnostics_webfinger'] = array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger');
 
        $t = get_markup_template("admin_aside.tpl");
        $a->page['aside'] .= replace_macros( $t, array(
-                       '$admin' => $aside,
-                       '$admtxt' => t('Admin'),
-                       '$plugadmtxt' => t('Plugin Features'),
-                       '$logtxt' => t('Logs'),
-                       '$diagnosticstxt' => t('diagnostics'),
-                       '$h_pending' => t('User registrations waiting for confirmation'),
-                       '$admurl'=> $a->get_baseurl(true)."/admin/"
+               '$admin' => $aside_tools,
+               '$subpages' => $aside_sub,
+               '$admtxt' => t('Admin'),
+               '$plugadmtxt' => t('Plugin Features'),
+               '$logtxt' => t('Logs'),
+               '$diagnosticstxt' => t('diagnostics'),
+               '$h_pending' => t('User registrations waiting for confirmation'),
+               '$admurl'=> $a->get_baseurl(true)."/admin/"
        ));
 
 
 
-       /**
+       /*
         * Page content
         */
        $o = '';
        // urls
-       if ($a->argc > 1){
+       if($a->argc > 1) {
                switch ($a->argv[1]){
                        case 'site':
                                $o = admin_page_site($a);
@@ -180,17 +212,23 @@ function admin_content(&$a) {
                        case 'themes':
                                $o = admin_page_themes($a);
                                break;
+                       case 'features':
+                               $o = admin_page_features($a);
+                               break;
                        case 'logs':
                                $o = admin_page_logs($a);
                                break;
+                       case 'viewlogs':
+                               $o = admin_page_viewlogs($a);
+                               break;
                        case 'dbsync':
                                $o = admin_page_dbsync($a);
                                break;
-                       case 'update':
-                               $o = admin_page_remoteupdate($a);
-                               break;
                        case 'queue':
-                               $o = admin_page_queue($a);
+                               $o = admin_page_queue($a);
+                               break;
+                       case 'federation':
+                               $o = admin_page_federation($a);
                                break;
                        default:
                                notice( t("Item not found.") );
@@ -209,13 +247,135 @@ function admin_content(&$a) {
 }
 
 /**
- * Admin Inspect Queue Page
+ * @brief Subpage with some stats about "the federation" network
+ *
+ * This function generates the "Federation Statistics" subpage for the admin
+ * panel. The page lists some numbers to the part of "The Federation" known to
+ * the node. This data includes the different connected networks (e.g.
+ * Diaspora, Hubzilla, GNU Social) and the used versions in the different
+ * networks.
+ *
+ * The returned string contains the HTML code of the subpage for display.
+ *
  * @param App $a
- * return string
+ * @return string
+ */
+function admin_page_federation(&$a) {
+       // get counts on active friendica, diaspora, redmatrix, hubzilla, gnu
+       // social and statusnet nodes this node is knowing
+       //
+       // We are looking for the following platforms in the DB, "Red" should find
+       // all variants of that platform ID string as the q() function is stripping
+       // off one % two of them are needed in the query
+       // Add more platforms if you like, when one returns 0 known nodes it is not
+       // displayed on the stats page.
+       $platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet');
+       $counts = array();
+
+       foreach ($platforms as $p) {
+               // get a total count for the platform, the name and version of the
+               // highest version and the protocol tpe
+               $c = q('SELECT count(*) AS total, platform, network, version FROM gserver
+                       WHERE platform LIKE "%s" AND last_contact > last_failure
+                       ORDER BY version ASC;', $p);
+
+               // what versions for that platform do we know at all?
+               // again only the active nodes
+               $v = q('SELECT count(*) AS total, version FROM gserver
+                       WHERE last_contact > last_failure AND platform LIKE "%s" 
+                       GROUP BY version
+                       ORDER BY version;', $p);
+
+               //
+               // clean up version numbers
+               //
+               // in the DB the Diaspora versions have the format x.x.x.x-xx the last
+               // part (-xx) should be removed to clean up the versions from the "head
+               // commit" information and combined into a single entry for x.x.x.x
+               if($p=='Diaspora') {
+                       $newV = array();
+                       $newVv = array();
+                       foreach($v as $vv) {
+                               $newVC = $vv['total'];
+                               $newVV = $vv['version'];
+                               $posDash = strpos($newVV, '-');
+                               if($posDash) 
+                                       $newVV = substr($newVV, 0, $posDash);
+                               if(isset($newV[$newVV]))
+                                       $newV[$newVV] += $newVC; 
+                               else
+                                       $newV[$newVV] = $newVC; 
+                       }
+                       foreach ($newV as $key => $value) {
+                               array_push($newVv, array('total'=>$value, 'version'=>$key));
+                       }
+                       $v = $newVv;
+               }
+
+               // early friendica versions have the format x.x.xxxx where xxxx is the
+               // DB version stamp; those should be operated out and versions be
+               // conbined
+               if($p=='Friendica') {
+                       $newV = array();
+                       $newVv = array();
+                       foreach ($v as $vv) {
+                               $newVC = $vv['total'];
+                               $newVV = $vv['version'];
+                               $lastDot = strrpos($newVV,'.');
+                               $len = strlen($newVV)-1;
+                               if(($lastDot == $len-4) && (!strrpos($newVV,'-rc')==$len-3))
+                                       $newVV = substr($newVV, 0, $lastDot);
+                               if(isset($newV[$newVV]))
+                                       $newV[$newVV] += $newVC;
+                               else
+                                       $newV[$newVV] = $newVC;
+                       }
+                       foreach ($newV as $key => $value) {
+                               array_push($newVv, array('total'=>$value, 'version'=>$key));
+                       }
+                       $v = $newVv;
+               }
+
+               // the 3rd array item is needed for the JavaScript graphs as JS does
+               // not like some characters in the names of variables...
+               $counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p));
+       }
+
+       // some helpful text
+       $intro = t('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.');
+       $hint = t('The <em>Auto Discovered Contact Directory</em> feature is not enabled, it will improve the data displayed here.');
+
+       // load the template, replace the macros and return the page content
+       $t = get_markup_template("admin_federation.tpl");
+       return replace_macros($t, array(
+               '$title' => t('Administration'),
+               '$page' => t('Federation Statistics'),
+               '$intro' => $intro,
+               '$hint' => $hint,
+               '$autoactive' => get_config('system', 'poco_completion'),
+               '$counts' => $counts,
+               '$version' => FRIENDICA_VERSION,
+               '$legendtext' => t('Currently this node is aware of nodes from the following platforms:'),
+               '$baseurl' => $a->get_baseurl(),
+       ));
+}
+
+/**
+ * @brief Admin Inspect Queue Page
+ *
+ * Generates a page for the admin to have a look into the current queue of
+ * postings that are not deliverabke. Shown are the name and url of the
+ * recipient, the delivery network and the dates when the posting was generated
+ * and the last time tried to deliver the posting.
+ *
+ * The returned string holds the content of the page.
+ *
+ * @param App $a
+ * @return string
  */
 function admin_page_queue(&$a) {
-       // get content from the queue table
-       $r = q("SELECT c.name,c.nurl,q.id,q.network,q.created,q.last from queue as q, contact as c where c.id=q.cid order by q.cid, q.created;");
+       // get content from the queue table
+       $r = q("SELECT c.name,c.nurl,q.id,q.network,q.created,q.last from queue as q, contact as c where c.id=q.cid order by q.cid, q.created;");
 
        $t = get_markup_template("admin_queue.tpl");
        return replace_macros($t, array(
@@ -232,20 +392,27 @@ function admin_page_queue(&$a) {
                '$entries' => $r,
        ));
 }
+
 /**
- * Admin Summary Page
+ * @brief Admin Summary Page
+ *
+ * The summary page is the "start page" of the admin panel. It gives the admin
+ * a first overview of the open adminastrative tasks.
+ *
+ * The returned string contains the HTML content of the generated page.
+ *
  * @param App $a
  * @return string
  */
 function admin_page_summary(&$a) {
        $r = q("SELECT `page-flags`, COUNT(uid) as `count` FROM `user` GROUP BY `page-flags`");
-       $accounts = Array(
-               Array( t('Normal Account'), 0),
-               Array( t('Soapbox Account'), 0),
-               Array( t('Community/Celebrity Account'), 0),
-               Array( t('Automatic Friend Account'), 0),
-               Array( t('Blog Account'), 0),
-               Array( t('Private Forum'), 0)
+       $accounts = array(
+               array( t('Normal Account'), 0),
+               array( t('Soapbox Account'), 0),
+               array( t('Community/Celebrity Account'), 0),
+               array( t('Automatic Friend Account'), 0),
+               array( t('Blog Account'), 0),
+               array( t('Private Forum'), 0)
        );
 
        $users=0;
@@ -272,37 +439,37 @@ function admin_page_summary(&$a) {
                '$title' => t('Administration'),
                '$page' => t('Summary'),
                '$queues' => $queues,
-               '$users' => Array( t('Registered users'), $users),
+               '$users' => array( t('Registered users'), $users),
                '$accounts' => $accounts,
-               '$pending' => Array( t('Pending registrations'), $pending),
-               '$version' => Array( t('Version'), FRIENDICA_VERSION),
+               '$pending' => array( t('Pending registrations'), $pending),
+               '$version' => array( t('Version'), FRIENDICA_VERSION),
                '$baseurl' => $a->get_baseurl(),
                '$platform' => FRIENDICA_PLATFORM,
                '$codename' => FRIENDICA_CODENAME,
                '$build' =>  get_config('system','build'),
-               '$plugins' => Array( t('Active plugins'), $a->plugins )
+               '$plugins' => array( t('Active plugins'), $a->plugins )
        ));
 }
 
-
 /**
- * Admin Site Page
- *  @param App $a
+ * @brief Process send data from Admin Site Page
+ * 
+ * @param App $a
  */
-function admin_page_site_post(&$a){
-       if (!x($_POST,"page_site")){
+function admin_page_site_post(&$a) {
+       if(!x($_POST,"page_site")) {
                return;
        }
 
        check_form_security_token_redirectOnErr('/admin/site', 'admin_site');
 
        // relocate
-       if (x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!=""){
+       if(x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!="") {
                $new_url = $_POST['relocate_url'];
                $new_url = rtrim($new_url,"/");
 
                $parsed = @parse_url($new_url);
-               if (!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) {
+               if(!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) {
                        notice(t("Can not parse base url. Must have at least <scheme>://<domain>"));
                        goaway($a->get_baseurl(true) . '/admin/site' );
                }
@@ -331,7 +498,7 @@ function admin_page_site_post(&$a){
 
                        $q = sprintf("UPDATE %s SET %s;", $table_name, $upds);
                        $r = q($q);
-                       if (!$r) {
+                       if(!$r) {
                                notice( "Failed updating '$table_name': " . $db->error );
                                goaway($a->get_baseurl(true) . '/admin/site' );
                        }
@@ -341,7 +508,7 @@ function admin_page_site_post(&$a){
                update_table("profile", array('photo', 'thumb'), $old_url, $new_url);
                update_table("term", array('url'), $old_url, $new_url);
                update_table("contact", array('photo','thumb','micro','url','nurl','request','notify','poll','confirm','poco'), $old_url, $new_url);
-               update_table("unique_contacts", array('url'), $old_url, $new_url);
+               update_table("gcontact", array('photo','url','nurl','server_url'), $old_url, $new_url);
                update_table("item", array('owner-link','owner-avatar','author-name','author-link','author-avatar','body','plink','tag'), $old_url, $new_url);
 
                // update config
@@ -367,7 +534,7 @@ function admin_page_site_post(&$a){
        $banner                 =       ((x($_POST,'banner'))                   ? trim($_POST['banner'])                        : false);
        $shortcut_icon          =       ((x($_POST,'shortcut_icon'))            ? notags(trim($_POST['shortcut_icon']))         : '');
        $touch_icon             =       ((x($_POST,'touch_icon'))               ? notags(trim($_POST['touch_icon']))            : '');
-       $info                   =       ((x($_POST,'info'))                     ? trim($_POST['info'])                  : false);
+       $info                   =       ((x($_POST,'info'))                     ? trim($_POST['info'])                          : false);
        $language               =       ((x($_POST,'language'))                 ? notags(trim($_POST['language']))              : '');
        $theme                  =       ((x($_POST,'theme'))                    ? notags(trim($_POST['theme']))                 : '');
        $theme_mobile           =       ((x($_POST,'theme_mobile'))             ? notags(trim($_POST['theme_mobile']))          : '');
@@ -386,13 +553,13 @@ function admin_page_site_post(&$a){
        $allowed_email          =       ((x($_POST,'allowed_email'))            ? notags(trim($_POST['allowed_email']))         : '');
        $block_public           =       ((x($_POST,'block_public'))             ? True                                          : False);
        $force_publish          =       ((x($_POST,'publish_all'))              ? True                                          : False);
-       $global_directory       =       ((x($_POST,'directory'))                ? notags(trim($_POST['directory']))     : '');
+       $global_directory       =       ((x($_POST,'directory'))                ? notags(trim($_POST['directory']))             : '');
        $thread_allow           =       ((x($_POST,'thread_allow'))             ? True                                          : False);
-       $newuser_private                =       ((x($_POST,'newuser_private'))          ? True                                          : False);
-       $enotify_no_content             =       ((x($_POST,'enotify_no_content'))       ? True                                          : False);
-       $private_addons                 =       ((x($_POST,'private_addons'))           ? True                                          : False);
-       $disable_embedded               =       ((x($_POST,'disable_embedded'))         ? True                                          : False);
-       $allow_users_remote_self        =       ((x($_POST,'allow_users_remote_self'))          ? True                                          : False);
+       $newuser_private                =       ((x($_POST,'newuser_private'))          ? True                                  : False);
+       $enotify_no_content             =       ((x($_POST,'enotify_no_content'))       ? True                                  : False);
+       $private_addons                 =       ((x($_POST,'private_addons'))           ? True                                  : False);
+       $disable_embedded               =       ((x($_POST,'disable_embedded'))         ? True                                  : False);
+       $allow_users_remote_self        =       ((x($_POST,'allow_users_remote_self'))  ? True                                  : False);
 
        $no_multi_reg           =       ((x($_POST,'no_multi_reg'))             ? True                                          : False);
        $no_openid              =       !((x($_POST,'no_openid'))               ? True                                          : False);
@@ -438,13 +605,13 @@ function admin_page_site_post(&$a){
        $proxy_disabled         =       ((x($_POST,'proxy_disabled'))           ? True                                          : False);
        $old_pager              =       ((x($_POST,'old_pager'))                ? True                                          : False);
        $only_tag_search        =       ((x($_POST,'only_tag_search'))          ? True                                          : False);
-       $rino                   =       ((x($_POST,'rino'))                             ? intval($_POST['rino'])                                : 0);
+       $rino                   =       ((x($_POST,'rino'))                     ? intval($_POST['rino'])                        : 0);
        $embedly                =       ((x($_POST,'embedly'))                  ? notags(trim($_POST['embedly']))               : '');
 
-       if ($a->get_path() != "")
+       if($a->get_path() != "")
                $diaspora_enabled = false;
 
-       if (!$thread_allow)
+       if(!$thread_allow)
                $ostatus_disabled = true;
 
        if($ssl_policy != intval(get_config('system','ssl_policy'))) {
@@ -508,7 +675,7 @@ function admin_page_site_post(&$a){
        set_config('system','shortcut_icon',$shortcut_icon);
        set_config('system','touch_icon',$touch_icon);
 
-       if ($banner==""){
+       if($banner=="") {
                // don't know why, but del_config doesn't work...
                q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1",
                        dbesc("system"),
@@ -517,19 +684,21 @@ function admin_page_site_post(&$a){
        } else {
                set_config('system','banner', $banner);
        }
-       if ($info=="") {
+
+       if($info=="") {
                del_config('config','info');
        } else {
                set_config('config','info',$info);
        }
        set_config('system','language', $language);
        set_config('system','theme', $theme);
-       if ( $theme_mobile === '---' ) {
+
+       if( $theme_mobile === '---' ) {
                del_config('system','mobile-theme');
        } else {
                set_config('system','mobile-theme', $theme_mobile);
                }
-               if ( $singleuser === '---' ) {
+               if( $singleuser === '---' ) {
                        del_config('system','singleuser');
                } else {
                        set_config('system','singleuser', $singleuser);
@@ -585,7 +754,7 @@ function admin_page_site_post(&$a){
        set_config('system','only_tag_search', $only_tag_search);
 
 
-       if ($rino==2 and !function_exists('mcrypt_create_iv')){
+       if($rino==2 and !function_exists('mcrypt_create_iv')) {
                notice(t("RINO2 needs mcrypt php extension to work."));
        } else {
                set_config('system','rino_encrypt', $rino);
@@ -601,6 +770,10 @@ function admin_page_site_post(&$a){
 }
 
 /**
+ * @brief Generate Admin Site subpage
+ *
+ * This function generates the main configuration page of the admin panel.
+ *
  * @param  App $a
  * @return string
  */
@@ -609,25 +782,25 @@ function admin_page_site(&$a) {
        /* Installed langs */
        $lang_choices = get_avaiable_languages();
 
-       if (strlen(get_config('system','directory_submit_url')) AND
+       if(strlen(get_config('system','directory_submit_url')) AND
                !strlen(get_config('system','directory'))) {
-               set_config('system','directory', dirname(get_config('system','directory_submit_url')));
-               del_config('system','directory_submit_url');
+                       set_config('system','directory', dirname(get_config('system','directory_submit_url')));
+                       del_config('system','directory_submit_url');
        }
 
        /* Installed themes */
        $theme_choices = array();
        $theme_choices_mobile = array();
        $theme_choices_mobile["---"] = t("No special theme for mobile devices");
-       $files = glob('view/theme/*'); /**/
+       $files = glob('view/theme/*');
        if($files) {
                foreach($files as $file) {
-                       if (intval(file_exists($file . '/unsupported')))
+                       if(intval(file_exists($file . '/unsupported')))
                                continue;
 
                        $f = basename($file);
                        $theme_name = ((file_exists($file . '/experimental')) ?  sprintf("%s - \x28Experimental\x29", $f) : $f);
-                       if (file_exists($file . '/mobile')) {
+                       if(file_exists($file . '/mobile')) {
                                $theme_choices_mobile[$f] = $theme_name;
                        } else {
                                $theme_choices[$f] = $theme_name;
@@ -690,7 +863,7 @@ function admin_page_site(&$a) {
        //echo "<pre>"; var_dump($lang_choices); die("</pre>");
 
        /* Register policy */
-       $register_choices = Array(
+       $register_choices = array(
                REGISTER_CLOSED => t("Closed"),
                REGISTER_APPROVE => t("Requires approval"),
                REGISTER_OPEN => t("Open")
@@ -702,7 +875,7 @@ function admin_page_site(&$a) {
                SSL_POLICY_SELFSIGN => t("Self-signed certificate, use SSL for local links only (discouraged)")
        );
 
-       if ($a->config['hostname'] == "")
+       if($a->config['hostname'] == "")
                $a->config['hostname'] = $a->get_hostname();
 
        $diaspora_able = ($a->get_path() == "");
@@ -727,7 +900,7 @@ function admin_page_site(&$a) {
                '$banner'               => array('banner', t("Banner/Logo"), $banner, ""),
                '$shortcut_icon'        => array('shortcut_icon', t("Shortcut icon"), get_config('system','shortcut_icon'),  t("Link to an icon that will be used for browsers.")),
                '$touch_icon'           => array('touch_icon', t("Touch icon"), get_config('system','touch_icon'),  t("Link to an icon that will be used for tablets and mobiles.")),
-               '$info' => array('info',t('Additional Info'), $info, sprintf(t('For public servers: you can add additional information here that will be listed at %s/siteinfo.'), get_server())),
+               '$info'                 => array('info',t('Additional Info'), $info, sprintf(t('For public servers: you can add additional information here that will be listed at %s/siteinfo.'), get_server())),
                '$language'             => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
                '$theme'                => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
                '$theme_mobile'         => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile-theme'), t("Theme for mobile devices"), $theme_choices_mobile),
@@ -737,8 +910,8 @@ function admin_page_site(&$a) {
                '$hide_help'            => array('hide_help', t("Hide help entry from navigation menu"), get_config('system','hide_help'), t("Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly.")),
                '$singleuser'           => array('singleuser', t("Single user instance"), get_config('system','singleuser'), t("Make this instance multi-user or single-user for the named user"), $user_names),
                '$maximagesize'         => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
-               '$maximagelength'               => array('maximagelength', t("Maximum image length"), get_config('system','max_image_length'), t("Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.")),
-               '$jpegimagequality'             => array('jpegimagequality', t("JPEG image quality"), get_config('system','jpeg_quality'), t("Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality.")),
+               '$maximagelength'       => array('maximagelength', t("Maximum image length"), get_config('system','max_image_length'), t("Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.")),
+               '$jpegimagequality'     => array('jpegimagequality', t("JPEG image quality"), get_config('system','jpeg_quality'), t("Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality.")),
 
                '$register_policy'      => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices),
                '$daily_registrations'  => array('max_daily_registrations', t("Maximum Daily Registrations"), get_config('system', 'max_daily_registrations'), t("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.")),
@@ -754,7 +927,7 @@ function admin_page_site(&$a) {
                '$enotify_no_content'   => array('enotify_no_content', t("Don't include post content in email notifications"), get_config('system','enotify_no_content'), t("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.")),
                '$private_addons'       => array('private_addons', t("Disallow public access to addons listed in the apps menu."), get_config('config','private_addons'), t("Checking this box will restrict addons listed in the apps menu to members only.")),
                '$disable_embedded'     => array('disable_embedded', t("Don't embed private images in posts"), get_config('system','disable_embedded'), t("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.")),
-               '$allow_users_remote_self'      => array('allow_users_remote_self', t('Allow Users to set remote_self'), get_config('system','allow_users_remote_self'), t('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.')),
+               '$allow_users_remote_self' => array('allow_users_remote_self', t('Allow Users to set remote_self'), get_config('system','allow_users_remote_self'), t('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.')),
                '$no_multi_reg'         => array('no_multi_reg', t("Block multiple registrations"),  get_config('system','block_extended_register'), t("Disallow users to register additional accounts for use as pages.")),
                '$no_openid'            => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), t("OpenID support for registration and logins.")),
                '$no_regfullname'       => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), t("Force users to register with a space between firstname and lastname in Full name, as an antispam measure")),
@@ -762,12 +935,12 @@ function admin_page_site(&$a) {
                '$community_page_style' => array('community_page_style', t("Community Page Style"), get_config('system','community_page_style'), t("Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."), $community_page_style_choices),
                '$max_author_posts_community_page' => array('max_author_posts_community_page', t("Posts per user on community page"), get_config('system','max_author_posts_community_page'), t("The maximum number of posts per user on the community page. (Not valid for 'Global Community')")),
                '$ostatus_disabled'     => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28StatusNet, GNU Social etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),
-               '$ostatus_poll_interval'        => array('ostatus_poll_interval', t("OStatus conversation completion interval"), (string) intval(get_config('system','ostatus_poll_interval')), t("How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."), $ostatus_poll_choices),
+               '$ostatus_poll_interval' => array('ostatus_poll_interval', t("OStatus conversation completion interval"), (string) intval(get_config('system','ostatus_poll_interval')), t("How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."), $ostatus_poll_choices),
                '$ostatus_not_able'     => t("OStatus support can only be enabled if threading is enabled."),
                '$diaspora_able'        => $diaspora_able,
                '$diaspora_not_able'    => t("Diaspora support can't be enabled because Friendica was installed into a sub directory."),
-               '$diaspora_enabled'     => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),
-               '$dfrn_only'            => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")),
+               '$diaspora_enabled'     => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),
+               '$dfrn_only'            => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")),
                '$verifyssl'            => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.")),
                '$proxyuser'            => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
                '$proxy'                => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
@@ -805,13 +978,24 @@ function admin_page_site(&$a) {
                '$rino'                 => array('rino', t("RINO Encryption"), intval(get_config('system','rino_encrypt')), t("Encryption layer between nodes."), array("Disabled", "RINO1 (deprecated)", "RINO2")),
                '$embedly'              => array('embedly', t("Embedly API key"), get_config('system','embedly'), t("<a href='http://embed.ly'>Embedly</a> is used to fetch additional data for web pages. This is an optional parameter.")),
 
-               '$form_security_token' => get_form_security_token("admin_site")
+               '$form_security_token'  => get_form_security_token("admin_site")
 
        ));
 
 }
 
-
+/**
+ * @brief Generates admin panel subpage for DB syncronization
+ *
+ * This page checks if the database of friendica is in sync with the specs.
+ * Should this not be the case, it attemps to sync the structure and notifies
+ * the admin if the automatic process was failing.
+ *
+ * The returned string holds the HTML code of the page.
+ *
+ * @param App $a
+ * @return string
+ **/
 function admin_page_dbsync(&$a) {
 
        $o = '';
@@ -828,17 +1012,17 @@ function admin_page_dbsync(&$a) {
        if(($a->argc > 2) AND (intval($a->argv[2]) OR ($a->argv[2] === 'check'))) {
                require_once("include/dbstructure.php");
                $retval = update_structure(false, true);
-               if (!$retval) {
+               if(!$retval) {
                        $o .= sprintf(t("Database structure update %s was successfully applied."), DB_UPDATE_VERSION)."<br />";
                        set_config('database', 'dbupdate_'.DB_UPDATE_VERSION, 'success');
                } else
                        $o .= sprintf(t("Executing of database structure update %s failed with error: %s"),
                                        DB_UPDATE_VERSION, $retval)."<br />";
-               if ($a->argv[2] === 'check')
+               if($a->argv[2] === 'check')
                        return $o;
        }
 
-       if ($a->argc > 2 && intval($a->argv[2])) {
+       if($a->argc > 2 && intval($a->argv[2])) {
                require_once('update.php');
                $func = 'update_' . intval($a->argv[2]);
                if(function_exists($func)) {
@@ -891,20 +1075,20 @@ function admin_page_dbsync(&$a) {
 }
 
 /**
- * Users admin page
- *
+ * @brief Process data send by Users admin page
+ * 
  * @param App $a
  */
 function admin_page_users_post(&$a){
-       $pending = ( x($_POST, 'pending') ? $_POST['pending'] : Array() );
-       $users = ( x($_POST, 'user') ? $_POST['user'] : Array() );
-       $nu_name = ( x($_POST, 'new_user_name') ? $_POST['new_user_name'] : '');
-       $nu_nickname = ( x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : '');
-       $nu_email = ( x($_POST, 'new_user_email') ? $_POST['new_user_email'] : '');
+       $pending        =       ( x($_POST, 'pending')                  ? $_POST['pending']             : array() );
+       $users          =       ( x($_POST, 'user')                     ? $_POST['user']                : array() );
+       $nu_name        =       ( x($_POST, 'new_user_name')            ? $_POST['new_user_name']       : '');
+       $nu_nickname    =       ( x($_POST, 'new_user_nickname')        ? $_POST['new_user_nickname']   : '');
+       $nu_email       =       ( x($_POST, 'new_user_email')           ? $_POST['new_user_email']      : '');
 
        check_form_security_token_redirectOnErr('/admin/users', 'admin_users');
 
-       if (!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) {
+       if(!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) {
                require_once('include/user.php');
 
                $result = create_user( array('username'=>$nu_name, 'email'=>$nu_email, 'nickname'=>$nu_nickname, 'verified'=>1)  );
@@ -954,7 +1138,7 @@ function admin_page_users_post(&$a){
 
        }
 
-       if (x($_POST,'page_users_block')){
+       if(x($_POST,'page_users_block')) {
                foreach($users as $uid){
                        q("UPDATE `user` SET `blocked`=1-`blocked` WHERE `uid`=%s",
                                intval( $uid )
@@ -962,7 +1146,7 @@ function admin_page_users_post(&$a){
                }
                notice( sprintf( tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)) );
        }
-       if (x($_POST,'page_users_delete')){
+       if(x($_POST,'page_users_delete')) {
                require_once("include/Contact.php");
                foreach($users as $uid){
                        user_remove($uid);
@@ -970,13 +1154,13 @@ function admin_page_users_post(&$a){
                notice( sprintf( tt("%s user deleted", "%s users deleted", count($users)), count($users)) );
        }
 
-       if (x($_POST,'page_users_approve')){
+       if(x($_POST,'page_users_approve')) {
                require_once("mod/regmod.php");
                foreach($pending as $hash){
                        user_allow($hash);
                }
        }
-       if (x($_POST,'page_users_deny')){
+       if(x($_POST,'page_users_deny')) {
                require_once("mod/regmod.php");
                foreach($pending as $hash){
                        user_deny($hash);
@@ -987,14 +1171,22 @@ function admin_page_users_post(&$a){
 }
 
 /**
+ * @brief Admin panel subpage for User management
+ *
+ * This function generates the admin panel page for user management of the
+ * node. It offers functionality to add/block/delete users and offers some
+ * statistics about the userbase.
+ *
+ * The returned string holds the HTML code of the page.
+ *
  * @param App $a
  * @return string
  */
 function admin_page_users(&$a){
-       if ($a->argc>2) {
+       if($a->argc>2) {
                $uid = $a->argv[3];
                $user = q("SELECT username, blocked FROM `user` WHERE `uid`=%d", intval($uid));
-               if (count($user)==0){
+               if(count($user)==0) {
                        notice( 'User not found' . EOL);
                        goaway($a->get_baseurl(true) . '/admin/users' );
                        return ''; // NOTREACHED
@@ -1030,14 +1222,12 @@ function admin_page_users(&$a){
 
 
        /* get users */
-
        $total = q("SELECT count(*) as total FROM `user` where 1");
        if(count($total)) {
                $a->set_pager_total($total[0]['total']);
                $a->set_pager_itemspage(100);
        }
 
-
        $users = q("SELECT `user` . * , `contact`.`name` , `contact`.`url` , `contact`.`micro`, `lastitem`.`lastitem_date`, `user`.`account_expired`
                                FROM
                                        (SELECT MAX(`item`.`changed`) as `lastitem_date`, `item`.`uid`
@@ -1058,7 +1248,7 @@ function admin_page_users(&$a){
 
        $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email']));
        $_setup_users = function ($e) use ($adminlist){
-               $accounts = Array(
+               $accounts = array(
                        t('Normal Account'),
                        t('Soapbox Account'),
                        t('Community/Celebrity Account'),
@@ -1080,11 +1270,11 @@ function admin_page_users(&$a){
        // Get rid of dashes in key names, Smarty3 can't handle them
        // and extracting deleted users
 
-       $tmp_users = Array();
-       $deleted = Array();
+       $tmp_users = array();
+       $deleted = array();
 
        while(count($users)) {
-               $new_user = Array();
+               $new_user = array();
                foreach( array_pop($users) as $k => $v) {
                        $k = str_replace('-','_',$k);
                        $new_user[$k] = $v;
@@ -1137,9 +1327,9 @@ function admin_page_users(&$a){
                '$pending' => $pending,
                'deleted' => $deleted,
                '$users' => $users,
-               '$newusername'  => array('new_user_name', t("Name"), '', t("Name of the new user.")),
-               '$newusernickname'  => array('new_user_nickname', t("Nickname"), '', t("Nickname of the new user.")),
-               '$newuseremail'  => array('new_user_email', t("Email"), '', t("Email address of the new user."), '', '', 'email'),
+               '$newusername' => array('new_user_name', t("Name"), '', t("Name of the new user.")),
+               '$newusernickname' => array('new_user_nickname', t("Nickname"), '', t("Nickname of the new user.")),
+               '$newuseremail' => array('new_user_email', t("Email"), '', t("Email address of the new user."), '', '', 'email'),
        ));
        $o .= paginate($a);
        return $o;
@@ -1147,29 +1337,39 @@ function admin_page_users(&$a){
 
 
 /**
- * Plugins admin page
+ * @brief Plugins admin page
+ *
+ * This function generates the admin panel page for managing plugins on the
+ * friendica node. If a plugin name is given a single page showing the details
+ * for this addon is generated. If no name is given, a list of available
+ * plugins is shown.
+ *
+ * The template used for displaying the list of plugins and the details of the
+ * plugin are the same as used for the templates.
+ *
+ * The returned string returned hulds the HTML code of the page.
  *
  * @param App $a
  * @return string
  */
 function admin_page_plugins(&$a){
 
-       /**
+       /*
         * Single plugin
         */
-       if ($a->argc == 3){
+       if($a->argc == 3) {
                $plugin = $a->argv[2];
-               if (!is_file("addon/$plugin/$plugin.php")){
+               if(!is_file("addon/$plugin/$plugin.php")) {
                        notice( t("Item not found.") );
                        return '';
                }
 
-               if (x($_GET,"a") && $_GET['a']=="t"){
+               if(x($_GET,"a") && $_GET['a']=="t") {
                        check_form_security_token_redirectOnErr('/admin/plugins', 'admin_themes', 't');
 
                        // Toggle plugin status
                        $idx = array_search($plugin, $a->plugins);
-                       if ($idx !== false){
+                       if($idx !== false) {
                                unset($a->plugins[$idx]);
                                uninstall_plugin($plugin);
                                info( sprintf( t("Plugin %s disabled."), $plugin ) );
@@ -1182,25 +1382,26 @@ function admin_page_plugins(&$a){
                        goaway($a->get_baseurl(true) . '/admin/plugins' );
                        return ''; // NOTREACHED
                }
+
                // display plugin details
                require_once('library/markdown.php');
 
-               if (in_array($plugin, $a->plugins)){
+               if(in_array($plugin, $a->plugins)) {
                        $status="on"; $action= t("Disable");
                } else {
                        $status="off"; $action= t("Enable");
                }
 
                $readme=Null;
-               if (is_file("addon/$plugin/README.md")){
+               if(is_file("addon/$plugin/README.md")) {
                        $readme = file_get_contents("addon/$plugin/README.md");
                        $readme = Markdown($readme);
-               } else if (is_file("addon/$plugin/README")){
+               } elseif(is_file("addon/$plugin/README")) {
                        $readme = "<pre>". file_get_contents("addon/$plugin/README") ."</pre>";
                }
 
                $admin_form="";
-               if (is_array($a->plugins_admin) && in_array($plugin, $a->plugins_admin)){
+               if(is_array($a->plugins_admin) && in_array($plugin, $a->plugins_admin)) {
                        @require_once("addon/$plugin/$plugin.php");
                        $func = $plugin.'_plugin_admin';
                        $func($a, $admin_form);
@@ -1233,11 +1434,11 @@ function admin_page_plugins(&$a){
 
 
 
-       /**
+       /*
         * List plugins
         */
 
-       if (x($_GET,"a") && $_GET['a']=="r"){
+       if(x($_GET,"a") && $_GET['a']=="r") {
                check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/plugins', 'admin_themes', 't');
                reload_plugins();
                info("Plugins reloaded");
@@ -1245,23 +1446,23 @@ function admin_page_plugins(&$a){
        }
 
        $plugins = array();
-       $files = glob("addon/*/"); /* */
+       $files = glob("addon/*/");
        if($files) {
                foreach($files as $file) {
-                       if (is_dir($file)){
+                       if(is_dir($file)) {
                                list($tmp, $id)=array_map("trim", explode("/",$file));
                                $info = get_plugin_info($id);
                                $show_plugin = true;
 
                                // If the addon is unsupported, then only show it, when it is enabled
-                               if ((strtolower($info["status"]) == "unsupported") AND !in_array($id,  $a->plugins))
+                               if((strtolower($info["status"]) == "unsupported") AND !in_array($id,  $a->plugins))
                                        $show_plugin = false;
 
                                // Override the above szenario, when the admin really wants to see outdated stuff
-                               if (get_config("system", "show_unsupported_addons"))
+                               if(get_config("system", "show_unsupported_addons"))
                                        $show_plugin = true;
 
-                               if ($show_plugin)
+                               if($show_plugin)
                                        $plugins[] = array($id, (in_array($id,  $a->plugins)?"on":"off") , $info);
                        }
                }
@@ -1276,6 +1477,8 @@ function admin_page_plugins(&$a){
                '$baseurl' => $a->get_baseurl(true),
                '$function' => 'plugins',
                '$plugins' => $plugins,
+               '$pcount' => count($plugins), 
+               '$noplugshint' => sprintf( t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s'), 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
                '$form_security_token' => get_form_security_token("admin_themes"),
        ));
 }
@@ -1340,7 +1543,17 @@ function rebuild_theme_table($themes) {
 
 
 /**
- * Themes admin page
+ * @brief Themes admin page
+ *
+ * This function generates the admin panel page to control the themes available
+ * on the friendica node. If the name of a theme is given as parameter a page
+ * with the details for the theme is shown. Otherwise a list of available
+ * themes is generated.
+ *
+ * The template used for displaying the list of themes and the details of the
+ * themes are the same as used for the plugins.
+ *
+ * The returned string contains the HTML code of the admin panel page.
  *
  * @param App $a
  * @return string
@@ -1356,7 +1569,7 @@ function admin_page_themes(&$a){
                                $allowed_themes[] = trim($x);
 
        $themes = array();
-       $files = glob('view/theme/*'); /* */
+       $files = glob('view/theme/*');
        if($files) {
                foreach($files as $file) {
                        $f = basename($file);
@@ -1364,7 +1577,7 @@ function admin_page_themes(&$a){
                        $is_supported = 1-(intval(file_exists($file . '/unsupported')));
                        $is_allowed = intval(in_array($f,$allowed_themes));
 
-                       if ($is_allowed OR $is_supported OR get_config("system", "show_unsupported_themes"))
+                       if($is_allowed OR $is_supported OR get_config("system", "show_unsupported_themes"))
                                $themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
                }
        }
@@ -1374,18 +1587,18 @@ function admin_page_themes(&$a){
                return '';
        }
 
-       /**
+       /*
         * Single theme
         */
 
-       if ($a->argc == 3){
+       if($a->argc == 3) {
                $theme = $a->argv[2];
-               if(! is_dir("view/theme/$theme")){
+               if(! is_dir("view/theme/$theme")) {
                        notice( t("Item not found.") );
                        return '';
                }
 
-               if (x($_GET,"a") && $_GET['a']=="t"){
+               if(x($_GET,"a") && $_GET['a']=="t") {
                        check_form_security_token_redirectOnErr('/admin/themes', 'admin_themes', 't');
 
                        // Toggle theme status
@@ -1409,22 +1622,22 @@ function admin_page_themes(&$a){
                // display theme details
                require_once('library/markdown.php');
 
-               if (theme_status($themes,$theme)) {
+               if(theme_status($themes,$theme)) {
                        $status="on"; $action= t("Disable");
                } else {
                        $status="off"; $action= t("Enable");
                }
 
                $readme=Null;
-               if (is_file("view/theme/$theme/README.md")){
+               if(is_file("view/theme/$theme/README.md")) {
                        $readme = file_get_contents("view/theme/$theme/README.md");
                        $readme = Markdown($readme);
-               } else if (is_file("view/theme/$theme/README")){
+               } elseif(is_file("view/theme/$theme/README")) {
                        $readme = "<pre>". file_get_contents("view/theme/$theme/README") ."</pre>";
                }
 
                $admin_form="";
-               if (is_file("view/theme/$theme/config.php")){
+               if(is_file("view/theme/$theme/config.php")) {
                        function __get_theme_admin_form(&$a, $theme) {
                                $orig_theme = $a->theme;
                                $orig_page = $a->page;
@@ -1436,7 +1649,7 @@ function admin_page_themes(&$a){
 
                                $init = $theme."_init";
                                if(function_exists($init)) $init($a);
-                               if(function_exists("theme_admin")){
+                               if(function_exists("theme_admin")) {
                                        $admin_form = theme_admin($a);
                                }
 
@@ -1452,6 +1665,7 @@ function admin_page_themes(&$a){
                if(! stristr($screenshot[0],$theme))
                        $screenshot = null;
 
+
                $t = get_markup_template("admin_plugins_details.tpl");
                return replace_macros($t, array(
                        '$title' => t('Administration'),
@@ -1459,7 +1673,6 @@ function admin_page_themes(&$a){
                        '$toggle' => t('Toggle'),
                        '$settings' => t('Settings'),
                        '$baseurl' => $a->get_baseurl(true),
-
                        '$plugin' => $theme,
                        '$status' => $status,
                        '$action' => $action,
@@ -1477,11 +1690,11 @@ function admin_page_themes(&$a){
 
 
        // reload active themes
-       if (x($_GET,"a") && $_GET['a']=="r"){
+       if(x($_GET,"a") && $_GET['a']=="r") {
                check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/themes', 'admin_themes', 't');
-               if ($themes) {
+               if($themes) {
                        foreach($themes as $th) {
-                               if ($th['allowed']) {
+                               if($th['allowed']) {
                                        uninstall_theme($th['name']);
                                        install_theme($th['name']);
                                }
@@ -1491,7 +1704,7 @@ function admin_page_themes(&$a){
                goaway($a->get_baseurl().'/admin/themes');
        }
 
-       /**
+       /*
         * List themes
         */
 
@@ -1512,6 +1725,8 @@ function admin_page_themes(&$a){
                '$baseurl' => $a->get_baseurl(true),
                '$function' => 'themes',
                '$plugins' => $xthemes,
+               '$pcount' => count($themes),
+               '$noplugshint' => sprintf(t('No themes found on the system. They should be paced in %1$s'),'<code>/view/themes</code>'),
                '$experimental' => t('[Experimental]'),
                '$unsupported' => t('[Unsupported]'),
                '$form_security_token' => get_form_security_token("admin_themes"),
@@ -1520,24 +1735,21 @@ function admin_page_themes(&$a){
 
 
 /**
- * Logs admin page
- *
+ * @brief Prosesses data send by Logs admin page
+ * 
  * @param App $a
  */
-
 function admin_page_logs_post(&$a) {
-       if (x($_POST,"page_logs")) {
+       if(x($_POST,"page_logs")) {
                check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
 
-               $logfile                =       ((x($_POST,'logfile'))          ? notags(trim($_POST['logfile']))       : '');
-               $debugging              =       ((x($_POST,'debugging'))        ? true                                                          : false);
-               $loglevel               =       ((x($_POST,'loglevel'))         ? intval(trim($_POST['loglevel']))      : 0);
+               $logfile        =       ((x($_POST,'logfile'))          ? notags(trim($_POST['logfile']))       : '');
+               $debugging      =       ((x($_POST,'debugging'))        ? true                                  : false);
+               $loglevel       =       ((x($_POST,'loglevel'))         ? intval(trim($_POST['loglevel']))      : 0);
 
                set_config('system','logfile', $logfile);
                set_config('system','debugging',  $debugging);
                set_config('system','loglevel', $loglevel);
-
-
        }
 
        info( t("Log settings updated.") );
@@ -1546,12 +1758,24 @@ function admin_page_logs_post(&$a) {
 }
 
 /**
+ * @brief Generates admin panel subpage for configuration of the logs
+ *
+ * This function take the view/templates/admin_logs.tpl file and generates a
+ * page where admin can configure the logging of friendica.
+ *
+ * Displaying the log is separated from the log config as the logfile can get
+ * big depending on the settings and changing settings regarding the logs can
+ * thus waste bandwidth.
+ *
+ * The string returned contains the content of the template file with replaced
+ * macros.
+ *
  * @param App $a
  * @return string
  */
 function admin_page_logs(&$a){
 
-       $log_choices = Array(
+       $log_choices = array(
                LOGGER_NORMAL => 'Normal',
                LOGGER_TRACE => 'Trace',
                LOGGER_DEBUG => 'Debug',
@@ -1561,13 +1785,51 @@ function admin_page_logs(&$a){
 
        $t = get_markup_template("admin_logs.tpl");
 
-       $f = get_config('system','logfile');
+       return replace_macros($t, array(
+               '$title' => t('Administration'),
+               '$page' => t('Logs'),
+               '$submit' => t('Save Settings'),
+               '$clear' => t('Clear'),
+               '$baseurl' => $a->get_baseurl(true),
+               '$logname' =>  get_config('system','logfile'),
+
+               // name, label, value, help string, extra data...
+               '$debugging' => array('debugging', t("Enable Debugging"),get_config('system','debugging'), ""),
+               '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendica top-level directory.")),
+               '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
+
+               '$form_security_token' => get_form_security_token("admin_logs"),
+               '$phpheader' => t("PHP logging"),
+               '$phphint' => t("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 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."),
+               '$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE );\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
+       ));
+}
 
+/**
+ * @brief Generates admin panel subpage to view the Friendica log
+ *
+ * This function loads the template view/templates/admin_viewlogs.tpl to
+ * display the systemlog content. The filename for the systemlog of friendica
+ * is relative to the base directory and taken from the config entry 'logfile'
+ * in the 'system' category.
+ *
+ * Displaying the log is separated from the log config as the logfile can get
+ * big depending on the settings and changing settings regarding the logs can
+ * thus waste bandwidth.
+ *
+ * The string returned contains the content of the template file with replaced
+ * macros.
+ *
+ * @param App $a
+ * @return string
+ */
+function admin_page_viewlogs(&$a){
+       $t = get_markup_template("admin_viewlogs.tpl");
+       $f = get_config('system','logfile');
        $data = '';
 
        if(!file_exists($f)) {
-               $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is
-readable.");
+               $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is readable.");
        }
        else {
                $fp = fopen($f, 'r');
@@ -1577,8 +1839,7 @@ readable.");
                else {
                        $fstat = fstat($fp);
                        $size = $fstat['size'];
-                       if($size != 0)
-                       {
+                       if($size != 0) {
                                if($size > 5000000 || $size < 0)
                                        $size = 5000000;
                                $seek = fseek($fp,0-$size,SEEK_END);
@@ -1591,80 +1852,94 @@ readable.");
                        fclose($fp);
                }
        }
-
        return replace_macros($t, array(
                '$title' => t('Administration'),
-               '$page' => t('Logs'),
-               '$submit' => t('Save Settings'),
-               '$clear' => t('Clear'),
+               '$page' => t('View Logs'),
                '$data' => $data,
-               '$baseurl' => $a->get_baseurl(true),
-               '$logname' =>  get_config('system','logfile'),
-
-                                                                       // name, label, value, help string, extra data...
-               '$debugging'            => array('debugging', t("Enable Debugging"),get_config('system','debugging'), ""),
-               '$logfile'                      => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendica top-level directory.")),
-               '$loglevel'             => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
-
-               '$form_security_token' => get_form_security_token("admin_logs"),
+               '$logname' =>  get_config('system','logfile')
        ));
 }
 
 /**
+ * @brief Prosesses data send by the features admin page
+ * 
  * @param App $a
  */
-function admin_page_remoteupdate_post(&$a) {
-       // this function should be called via ajax post
-       if(!is_site_admin()) {
-               return;
-       }
+function admin_page_features_post(&$a) {
 
+       check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features');
 
-       if (x($_POST,'remotefile') && $_POST['remotefile']!=""){
-               $remotefile = $_POST['remotefile'];
-               $ftpdata = (x($_POST['ftphost'])?$_POST:false);
-               doUpdate($remotefile, $ftpdata);
-       } else {
-               echo "No remote file to download. Abort!";
+       logger('postvars: ' . print_r($_POST,true),LOGGER_DATA);
+
+       $arr = array();
+       $features = get_features(false);
+
+       foreach($features as $fname => $fdata) {
+               foreach(array_slice($fdata,1) as $f) {
+                       $feature = $f[0];
+                       $feature_state = 'feature_' . $feature;
+                       $featurelock = 'featurelock_' . $feature;
+
+                       if(x($_POST[$feature_state]))
+                               $val = intval($_POST['feature_' . $feature]);
+                       else
+                               $val = 0;
+                       set_config('feature',$feature,$val);
+
+                       if(x($_POST[$featurelock]))
+                               set_config('feature_lock',$feature,$val);
+                       else
+                               del_config('feature_lock',$feature);
+               }
        }
 
-       killme();
+       goaway($a->get_baseurl(true) . '/admin/features' );
+       return; // NOTREACHED
 }
 
 /**
+ * @brief Subpage for global additional feature management
+ * 
+ * This functin generates the subpage 'Manage Additional Features'
+ * for the admin panel. At this page the admin can set preferences
+ * for the user settings of the 'additional features'. If needed this 
+ * preferences can be locked through the admin.
+ * 
+ * The returned string contains the HTML code of the subpage 'Manage
+ * Additional Features'
+ * 
  * @param App $a
  * @return string
  */
-function admin_page_remoteupdate(&$a) {
-       if(!is_site_admin()) {
-               return login(false);
-       }
-
-       $canwrite = canWeWrite();
-       $canftp = function_exists('ftp_connect');
+function admin_page_features(&$a) {
+       
+       if((argc() > 1) && (argv(1) === 'features')) {
+               $arr = array();
+               $features = get_features(false);
+
+               foreach($features as $fname => $fdata) {
+                       $arr[$fname] = array();
+                       $arr[$fname][0] = $fdata[0];
+                       foreach(array_slice($fdata,1) as $f) {
+
+                               $set = get_config('feature',$f[0]);
+                               if($set === false)
+                                       $set = $f[3];
+                               $arr[$fname][1][] = array(
+                                       array('feature_' .$f[0],$f[1],$set,$f[2],array(t('Off'),t('On'))),
+                                       array('featurelock_' .$f[0],sprintf( t('Lock feature %s'),$f[1]),(($f[4] !== false) ? "1" : ''),'',array(t('Off'),t('On')))
+                               );
+                       }
+               }
+               
+               $tpl = get_markup_template("admin_settings_features.tpl");
+               $o .= replace_macros($tpl, array(
+                       '$form_security_token' => get_form_security_token("admin_manage_features"),
+                       '$title' => t('Manage Additional Features'),
+                       '$features' => $arr,
+                       '$submit' => t('Save Settings'),
+               ));
 
-       $needupdate = true;
-       $u = checkUpdate();
-       if (!is_array($u)){
-               $needupdate = false;
-               $u = array('','','');
+               return $o;
        }
-
-       $tpl = get_markup_template("admin_remoteupdate.tpl");
-       return replace_macros($tpl, array(
-               '$baseurl' => $a->get_baseurl(true),
-               '$submit' => t("Update now"),
-               '$close' => t("Close"),
-               '$localversion' => FRIENDICA_VERSION,
-               '$remoteversion' => $u[1],
-               '$needupdate' => $needupdate,
-               '$canwrite' => $canwrite,
-               '$canftp'       => $canftp,
-               '$ftphost'      => array('ftphost', t("FTP Host"), '',''),
-               '$ftppath'      => array('ftppath', t("FTP Path"), '/',''),
-               '$ftpuser'      => array('ftpuser', t("FTP User"), '',''),
-               '$ftppwd'       => array('ftppwd', t("FTP Password"), '',''),
-               '$remotefile'=>array('remotefile','', $u['2'],''),
-       ));
-
 }
index d6f87762bdefefda35ecdb15ec387c7711a439a9..b6d72a35555a64f375b1402fc3188c93357c3579 100644 (file)
@@ -14,6 +14,10 @@ function community_content(&$a, $update = 0) {
 
        $o = '';
 
+       // Currently the community page isn't able to handle update requests
+       if ($update)
+               return;
+
        if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
                notice( t('Public access denied.') . EOL);
                return;
@@ -143,14 +147,13 @@ function community_getpublicitems($start, $itemspage) {
        $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` WHERE `item`.`uid` = 0 AND `item`.`id` = `item`.`parent`
-               AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
-               AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
-               ORDER BY `item`.`received` DESC LIMIT %d, %d",
+               FROM `thread`
+               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+               WHERE `thread`.`uid` = 0
+               ORDER BY `thread`.`created` DESC LIMIT %d, %d",
                intval($start),
                intval($itemspage)
        );
 
        return($r);
-
 }
index 0a8aad9d722137493003a0b3cded94f5b450a473..38e03459e6924964fa455f71ed1afccb96bc6e6e 100644 (file)
@@ -125,7 +125,7 @@ function contacts_batch_actions(&$a){
                }
        }
        if ($count_actions>0) {
-               info ( sprintf( tt("%d contact edited.", "%d contacts edited", $count_actions), $count_actions) );
+               info ( sprintf( tt("%d contact edited.", "%d contacts edited.", $count_actions), $count_actions) );
        }
 
        if(x($_SESSION,'return_url'))
@@ -302,7 +302,7 @@ function _contact_update_profile($contact_id) {
                        `uri-date` = '%s',
                        `avatar-date` = '%s'
                        WHERE `id` = %d",
-                       dbesc($photos[0]),
+                       dbesc($data["photo"]),
                        dbesc($photos[1]),
                        dbesc($photos[2]),
                        dbesc(datetime_convert()),
@@ -311,6 +311,8 @@ function _contact_update_profile($contact_id) {
                        intval($contact_id)
                );
 
+       // Update the entry in the gcontact table
+       update_gcontact_from_probe($data["url"]);
 }
 
 function _contact_block($contact_id, $orig_record) {
@@ -345,7 +347,6 @@ function _contact_archive($contact_id, $orig_record) {
        return $r;
 }
 function _contact_drop($contact_id, $orig_record) {
-       require_once('include/Contact.php');
        $a = get_app();
 
        terminate_friendship($a->user,$a->contact,$orig_record);
@@ -890,50 +891,24 @@ function contacts_tab($a, $contact_id, $active_tab) {
 
 function contact_posts($a, $contact_id) {
 
-       require_once('include/conversation.php');
-
-       $r = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id));
+       $r = q("SELECT `url` FROM `contact` WHERE `id` = %d", intval($contact_id));
        if ($r) {
                $contact = $r[0];
                $a->page['aside'] = "";
                profile_load($a, "", 0, get_contact_details_by_url($contact["url"]));
-       }
-
-       if(get_config('system', 'old_pager')) {
-               $r = q("SELECT COUNT(*) AS `total` FROM `item`
-                       WHERE `item`.`uid` = %d AND `author-link` IN ('%s', '%s')",
-                       intval(local_user()),
-                       dbesc(str_replace("https://", "http://", $contact["url"])),
-                       dbesc(str_replace("http://", "https://", $contact["url"])));
-
-               $a->set_pager_total($r[0]['total']);
-       }
-
-       $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 (uid_contactid_created)
-               WHERE `item`.`uid` = %d AND `contact-id` = %d
-                       AND `author-link` IN ('%s', '%s')
-               ORDER BY `item`.`created` DESC LIMIT %d, %d",
-               intval(local_user()),
-               intval($contact_id),
-               dbesc(str_replace("https://", "http://", $contact["url"])),
-               dbesc(str_replace("http://", "https://", $contact["url"])),
-               intval($a->pager['start']),
-               intval($a->pager['itemspage'])
-       );
+       } else
+               $profile = "";
 
        $tab_str = contacts_tab($a, $contact_id, 1);
 
        $o .= $tab_str;
 
-       $o .= conversation($a,$r,'community',false);
+       if ($contact["url"]) {
+               $r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+                       dbesc(normalise_link($contact["url"])));
 
-       if(!get_config('system', 'old_pager')) {
-               $o .= alt_pager($a,count($r));
-       } else {
-               $o .= paginate($a);
+               if ($r[0]["id"] <> 0)
+                       $o .= posts_from_gcontact($a, $r[0]["id"]);
        }
 
        return $o;
index 3f9c82576a3bf02845082e266ba1dfb0e66095cf..0dfe4d67a9b61960623d963f0f58718ccbabe2be 100644 (file)
@@ -94,9 +94,15 @@ function dirfind_content(&$a, $prefix = "") {
                        else
                                $ostatus = NETWORK_DFRN;
 
-                       $count = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND
-                                       (`url` REGEXP '%s' OR `name` REGEXP '%s' OR `location` REGEXP '%s' OR
-                                               `about` REGEXP '%s' OR `keywords` REGEXP '%s')".$extra_sql,
+                       $count = q("SELECT count(*) AS `total` FROM `gcontact`
+                                       LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
+                                               AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
+                                               AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
+                                       WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
+                                       ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
+                                       (`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`location` REGEXP '%s' OR
+                                               `gcontact`.`about` REGEXP '%s' OR `gcontact`.`keywords` REGEXP '%s') $extra_sql",
+                                       intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
                                        dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
                                        dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)),
                                        dbesc(escape_tags($search)), dbesc(escape_tags($search)));
@@ -106,8 +112,8 @@ function dirfind_content(&$a, $prefix = "") {
                                        LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
                                                AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
                                                AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
-                                       WHERE `gcontact`.`network` IN ('%s', '%s', '%s') AND
-                                       ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)) AND
+                                       WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
+                                       ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
                                        (`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`location` REGEXP '%s' OR
                                                `gcontact`.`about` REGEXP '%s' OR `gcontact`.`keywords` REGEXP '%s') $extra_sql
                                                GROUP BY `gcontact`.`nurl`
index 6d1f417e710ad8b861ebd9f99dda8f9633b4d92c..ca57af923332e8bad1d51534e1ed41deeb02249f 100644 (file)
@@ -154,42 +154,53 @@ function display_fetchauthor($a, $item) {
                $profiledata["about"] = "";
        }
 
-       // Fetching further contact data from the contact table
-       $r = q("SELECT `uid`, `network`, `photo`, `nick`, `location`, `about` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` = '%s'",
-               dbesc(normalise_link($profiledata["url"])), intval($item["uid"]), dbesc($item["network"]));
-
-       if (!count($r))
-               $r = q("SELECT `uid`, `network`, `photo`, `nick`, `location`, `about` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
-                       dbesc(normalise_link($profiledata["url"])), intval($item["uid"]));
+       // Don't show details from Diaspora contacts if you don't follow the contact
+       $showdetails = ($profiledata["network"] != NETWORK_DIASPORA);
 
+       // Fetching further contact data from the contact table
+       $r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`
+               FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` = '%s' AND `rel` IN (%d, %d)",
+               dbesc(normalise_link($profiledata["url"])), intval(local_user()), dbesc($item["network"]),
+               intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
        if (!count($r))
-               $r = q("SELECT `uid`, `network`, `photo`, `nick`, `location`, `about` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0",
-                       dbesc(normalise_link($profiledata["url"])));
+               $r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`
+                       FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `rel` IN (%d, %d)",
+                       dbesc(normalise_link($profiledata["url"])), intval(local_user()),
+                       intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
 
        if (count($r)) {
-               if ((($r[0]["uid"] != local_user()) OR !local_user()) AND ($profiledata["network"] == NETWORK_DIASPORA)) {
-                       $r[0]["location"] = "";
-                       $r[0]["about"] = "";
-               }
-
+               $profiledata["name"] = $r[0]["name"];
                $profiledata["photo"] = $r[0]["photo"];
-               $profiledata["address"] = $r[0]["location"];
-               $profiledata["about"] = $r[0]["about"];
-               if ($r[0]["nick"] != "")
-                       $profiledata["nickname"] = $r[0]["nick"];
-       }
+               $profiledata["nickname"] = $r[0]["nick"];
+               $profiledata["addr"] = $r[0]["addr"];
+               $profiledata["keywords"] = $r[0]["keywords"];
+               $profiledata["network"] = $r[0]["network"];
 
-       // Fetching profile data from unique contacts
-       $r = q("SELECT `avatar`, `nick`, `location`, `about` FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($profiledata["url"])));
-       if (count($r)) {
-               if ($profiledata["photo"] == "")
-                       $profiledata["photo"] = $r[0]["avatar"];
-               if (($profiledata["address"] == "") AND ($profiledata["network"] != NETWORK_DIASPORA))
+               if (local_user() OR $showdetails) {
+                       $showdetails = true;
                        $profiledata["address"] = $r[0]["location"];
-               if (($profiledata["about"] == "") AND ($profiledata["network"] != NETWORK_DIASPORA))
                        $profiledata["about"] = $r[0]["about"];
-               if (($profiledata["nickname"] == "") AND ($r[0]["nick"] != ""))
+                       $profiledata["gender"] = $r[0]["gender"];
+               }
+       }
+
+       // Fetching profile data from global contacts
+       if ($profiledata["network"] != NETWORK_FEED) {
+               $r = q("SELECT `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`, `network` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profiledata["url"])));
+               if (count($r)) {
+                       $profiledata["name"] = $r[0]["name"];
+                       $profiledata["photo"] = $r[0]["photo"];
                        $profiledata["nickname"] = $r[0]["nick"];
+                       $profiledata["addr"] = $r[0]["addr"];
+                       $profiledata["keywords"] = $r[0]["keywords"];
+                       $profiledata["network"] = $r[0]["network"];
+
+                       if ($showdetails) {
+                               $profiledata["address"] = $r[0]["location"];
+                               $profiledata["about"] = $r[0]["about"];
+                               $profiledata["gender"] = $r[0]["gender"];
+                       }
+               }
        }
 
        if (local_user()) {
@@ -329,6 +340,10 @@ function display_content(&$a, $update = 0) {
                return;
        }
 
+       // Why do we need this on the display page? We don't have the possibility to write new content here.
+       // Ad editing of posts work without this as well.
+       // We should remove this completely for the 3.5.1 release.
+       /*
        if ($is_owner) {
                $x = array(
                        'is_owner' => true,
@@ -344,6 +359,7 @@ function display_content(&$a, $update = 0) {
                );
                $o .= status_editor($a,$x,0,true);
        }
+       */
 
        $sql_extra = item_permissions_sql($a->profile['uid'],$remote_contact,$groups);
 
index cc08831285e74fb69ed6aef54deafce7c5f67543..b92a0d980fb57e1150214c07aee7e5b590277c05 100644 (file)
@@ -2,6 +2,7 @@
 
 require_once('include/Scrape.php');
 require_once('include/follow.php');
+require_once('include/Contact.php');
 require_once('include/contact_selectors.php');
 
 function follow_content(&$a) {
@@ -75,15 +76,18 @@ function follow_content(&$a) {
        }
 
        $myaddr = $r[0]["url"];
+       $gcontact_id = 0;
 
        // Makes the connection request for friendica contacts easier
        $_SESSION["fastlane"] = $ret["url"];
 
-       $r = q("SELECT `location`, `about`, `keywords` FROM `gcontact` WHERE `nurl` = '%s'",
+       $r = q("SELECT `id`, `location`, `about`, `keywords` FROM `gcontact` WHERE `nurl` = '%s'",
                normalise_link($ret["url"]));
 
        if (!$r)
                $r = array(array("location" => "", "about" => "", "keywords" => ""));
+       else
+               $gcontact_id = $r[0]["id"];
 
        if($ret['network'] === NETWORK_DIASPORA) {
                $r[0]["location"] = "";
@@ -95,11 +99,12 @@ function follow_content(&$a) {
        if ($ret["addr"] != "")
                $header .= " <".$ret["addr"].">";
 
-       $header .= " (".network_to_name($ret['network'], $ret['url']).")";
+       //$header .= " (".network_to_name($ret['network'], $ret['url']).")";
+       $header = t("Connect/Follow");
 
        $o  = replace_macros($tpl,array(
                        '$header' => htmlentities($header),
-                       '$photo' => proxy_url($ret["photo"], false, PROXY_SIZE_SMALL),
+                       //'$photo' => proxy_url($ret["photo"], false, PROXY_SIZE_SMALL),
                        '$desc' => "",
                        '$pls_answer' => t('Please answer the following:'),
                        '$does_know_you' => array('knowyou', sprintf(t('Does %s know you?'),$ret["name"]), false, '', array(t('No'),t('Yes'))),
@@ -121,13 +126,26 @@ function follow_content(&$a) {
                        '$url_label' => t("Profile URL"),
                        '$myaddr' => $myaddr,
                        '$request' => $request,
-                       '$location' => bbcode($r[0]["location"]),
+                       /*'$location' => bbcode($r[0]["location"]),
                        '$location_label' => t("Location:"),
                        '$about' => bbcode($r[0]["about"], false, false),
-                       '$about_label' => t("About:"),
+                       '$about_label' => t("About:"), */
                        '$keywords' => $r[0]["keywords"],
                        '$keywords_label' => t("Tags:")
        ));
+
+       $a->page['aside'] = "";
+       profile_load($a, "", 0, get_contact_details_by_url($ret["url"]));
+
+       // Show last public posts
+       if ($gcontact_id <> 0) {
+               $o .= replace_macros(get_markup_template('section_title.tpl'),
+                                               array('$title' => t('Status Messages and Posts')
+               ));
+
+               $o .= posts_from_gcontact($a, $gcontact_id);
+       }
+
        return $o;
 }
 
index 9fa203f58d0baa47dfada5b283986a265c104da7..aad5964baf6e5d1ddf737e88f46b636cb255d6d7 100644 (file)
@@ -29,10 +29,21 @@ function friendica_init(&$a) {
                                        $visible_plugins[] = $rr['name'];
                }
 
+               load_config('feature_lock');
+               $locked_features = array();
+               if(is_array($a->config['feature_lock']) && count($a->config['feature_lock'])) {
+                       foreach($a->config['feature_lock'] as $k => $v) {
+                               if($k === 'config_loaded')
+                                       continue;
+                               $locked_features[$k] = intval($v);
+                       }
+               }
+
                $data = Array(
                        'version' => FRIENDICA_VERSION,
                        'url' => z_root(),
                        'plugins' => $visible_plugins,
+                       'locked_features' => $locked_features,
                        'register_policy' =>  $register_policy[$a->config['register_policy']],
                        'admin' => $admin,
                        'site_name' => $a->config['sitename'],
index f25ea36b2c0c13ed9a08a24e968b8a3741bf4fcf..8c5a479646ec992c98bd0b701e2a3cbdc51d012a 100644 (file)
@@ -137,14 +137,25 @@ function item_post(&$a) {
                                AND (normalise_link($parent_contact["url"]) != normalise_link($thrparent[0]["author-link"]))) {
                                $parent_contact = null;
 
-                               require_once("include/Scrape.php");
-                               $probed_contact = probe_url($thrparent[0]["author-link"]);
-                               if ($probed_contact["network"] != NETWORK_FEED) {
-                                       $parent_contact = $probed_contact;
-                                       $parent_contact["nurl"] = normalise_link($probed_contact["url"]);
-                                       $parent_contact["thumb"] = $probed_contact["photo"];
-                                       $parent_contact["micro"] = $probed_contact["photo"];
-                                       $parent_contact["addr"] = $probed_contact["addr"];
+                               $r = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+                                       dbesc(normalise_link($thrparent[0]["author-link"])));
+                               if (count($r)) {
+                                       $parent_contact = $r[0];
+                                       $parent_contact["thumb"] = $parent_contact["photo"];
+                                       $parent_contact["micro"] = $parent_contact["photo"];
+                                       unset($parent_contact["id"]);
+                               }
+
+                               if (!isset($parent_contact["nick"])) {
+                                       require_once("include/Scrape.php");
+                                       $probed_contact = probe_url($thrparent[0]["author-link"]);
+                                       if ($probed_contact["network"] != NETWORK_FEED) {
+                                               $parent_contact = $probed_contact;
+                                               $parent_contact["nurl"] = normalise_link($probed_contact["url"]);
+                                               $parent_contact["thumb"] = $probed_contact["photo"];
+                                               $parent_contact["micro"] = $probed_contact["photo"];
+                                               $parent_contact["addr"] = $probed_contact["addr"];
+                                       }
                                }
                                logger('no contact found: '.print_r($thrparent, true), LOGGER_DEBUG);
                        } else
@@ -693,7 +704,8 @@ function item_post(&$a) {
        $datarray['postopts']      = $postopts;
        $datarray['origin']        = $origin;
        $datarray['moderated']     = $allow_moderated;
-
+       $datarray['gcontact-id']   = get_gcontact_id(array("url" => $datarray['author-link'], "network" => $datarray['network'],
+                                                       "photo" => $datarray['author-avatar'], "name" => $datarray['author-name']));
        /**
         * These fields are for the convenience of plugins...
         * 'self' if true indicates the owner is posting on their own wall
@@ -888,7 +900,7 @@ function item_post(&$a) {
 
 
                // Store the comment signature information in case we need to relay to Diaspora
-               store_diaspora_comment_sig($datarray, $author, ($self ? $a->user['prvkey'] : false), $parent_item, $post_id);
+               store_diaspora_comment_sig($datarray, $author, ($self ? $user['prvkey'] : false), $parent_item, $post_id);
 
        } else {
                $parent = $post_id;
@@ -1060,6 +1072,8 @@ function item_content(&$a) {
  * @return boolean true if replaced, false if not replaced
  */
 function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") {
+       require_once("include/Scrape.php");
+       require_once("include/socgraph.php");
 
        $replaced = false;
        $r = null;
@@ -1094,122 +1108,115 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo
                $stat = false;
                //get the person's name
                $name = substr($tag,1);
-               //is it a link or a full dfrn address?
-               if((strpos($name,'@')) || (strpos($name,'http://'))) {
-                       $newname = $name;
-                       //get the profile links
-                       $links = @lrdd($name);
-                       if(count($links)) {
-                               //for all links, collect how is to inform and how's profile is to link
-                               foreach($links as $link) {
-                                       if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
-                                               $profile = $link['@attributes']['href'];
-                                       if($link['@attributes']['rel'] === 'salmon') {
-                                               if(strlen($inform))
-                                                       $inform .= ',';
-                                               $inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']);
-                                       }
-                               }
-                       }
-               } elseif (($network != NETWORK_OSTATUS) AND ($network != NETWORK_TWITTER) AND
-                       ($network != NETWORK_STATUSNET) AND ($network != NETWORK_APPNET)) {
-                       //if it is a name rather than an address
-                       $newname = $name;
-                       $alias = '';
-                       $tagcid = 0;
-                       //is it some generated name?
-                       if(strrpos($newname,'+')) {
-                               //get the id
-                               $tagcid = intval(substr($newname,strrpos($newname,'+') + 1));
-                               //remove the next word from tag's name
-                               if(strpos($name,' ')) {
-                                       $name = substr($name,0,strpos($name,' '));
+
+               // Sometimes the tag detection doesn't seem to work right
+               // This is some workaround
+               $nameparts = explode(" ", $name);
+               $name = $nameparts[0];
+
+               // Try to detect the contact in various ways
+               if ((strpos($name,'@')) || (strpos($name,'http://'))) {
+                       // Is it in format @user@domain.tld or @http://domain.tld/...?
+
+                       // First check the contact table for the address
+                       $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `contact` WHERE `addr` = '%s' AND `uid` = %d LIMIT 1",
+                                       dbesc($name),
+                                       intval($profile_uid)
+                       );
+
+                       // Then check in the contact table for the url
+                       if (!$r)
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `notify`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
+                                               dbesc(normalise_link($name)),
+                                               intval($profile_uid)
+                               );
+
+                       // Then check in the global contacts for the address
+                       if (!$r)
+                               $r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `addr` = '%s' LIMIT 1", dbesc($name));
+
+                       // Then check in the global contacts for the url
+                       if (!$r)
+                               $r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", dbesc(normalise_link($name)));
+
+                       // If the data isn't complete then refetch the data
+                       if ($r AND ($r[0]["network"] == NETWORK_OSTATUS) AND (($r[0]["notify"] == "") OR ($r[0]["alias"] == "")))
+                               $r = false;
+
+                       if (!$r) {
+                               $probed = probe_url($name);
+                               if (isset($probed["url"])) {
+                                       update_gcontact($probed);
+                                       $r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+                                               dbesc(normalise_link($probed["url"])));
                                }
                        }
-                       if($tagcid) { //if there was an id
-                               //select contact with that id from the logged in user's contact list
-                               $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+               } else {
+                       $r = false;
+                       if (strrpos($name,'+')) {
+                               // Is it in format @nick+number?
+                               $tagcid = intval(substr($name,strrpos($name,'+') + 1));
+
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                                intval($tagcid),
                                                intval($profile_uid)
                                );
                        }
-                       else {
-                               $newname = str_replace('_',' ',$name);
-
-                               // At first try to fetch a contact according to the given network
-                               if ($network != "") {
-                                       //select someone from this user's contacts by name
-                                       $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `network` = '%s' AND `uid` = %d LIMIT 1",
-                                                       dbesc($newname),
-                                                       dbesc($network),
-                                                       intval($profile_uid)
-                                       );
-                                       if(! $r) {
-                                               //select someone by attag or nick and the name passed in
-                                               $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `network` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
-                                                               dbesc($name),
-                                                               dbesc($name),
-                                                               dbesc($network),
-                                                               intval($profile_uid)
-                                               );
-                                       }
-                               } else
-                                       $r = false;
-
-                               if(! $r) {
-                                       //select someone from this user's contacts by name
-                                       $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
-                                                       dbesc($newname),
-                                                       intval($profile_uid)
-                                       );
-                               }
 
-                               if(! $r) {
-                                       //select someone by attag or nick and the name passed in
-                                       $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
-                                                       dbesc($name),
-                                                       dbesc($name),
-                                                       intval($profile_uid)
-                                       );
-                               }
-                       }
-/*                     } elseif(strstr($name,'_') || strstr($name,' ')) { //no id
-                               //get the real name
-                               $newname = str_replace('_',' ',$name);
-                               //select someone from this user's contacts by name
-                               $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
+                       //select someone by attag or nick and the name passed in the current network
+                       if(!$r AND ($network != ""))
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `network` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
+                                               dbesc($name),
+                                               dbesc($name),
+                                               dbesc($network),
+                                               intval($profile_uid)
+                               );
+
+                       //select someone from this user's contacts by name in the current network
+                       if (!$r AND ($network != ""))
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `name` = '%s' AND `network` = '%s' AND `uid` = %d LIMIT 1",
                                                dbesc($newname),
+                                               dbesc($network),
                                                intval($profile_uid)
                                );
-                       } else {
-                               //select someone by attag or nick and the name passed in
-                               $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
+
+                       //select someone by attag or nick and the name passed in
+                       if(!$r)
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
                                                dbesc($name),
                                                dbesc($name),
                                                intval($profile_uid)
                                );
-                       }*/
-                       //$r is set, if someone could be selected
-                       if(count($r)) {
-                               $profile = $r[0]['url'];
-                               //set newname to nick, find alias
-                               if(($r[0]['network'] === NETWORK_OSTATUS) OR ($r[0]['network'] === NETWORK_TWITTER)
-                                       OR ($r[0]['network'] === NETWORK_STATUSNET) OR ($r[0]['network'] === NETWORK_APPNET)) {
-                                       $newname = $r[0]['nick'];
-                                       $stat = true;
-                                       if($r[0]['alias'])
-                                               $alias = $r[0]['alias'];
-                               }
-                               else
-                                       $newname = $r[0]['name'];
-                               //add person's id to $inform
-                               if(strlen($inform))
-                                       $inform .= ',';
-                               $inform .= 'cid:' . $r[0]['id'];
-                       }
+
+
+                       //select someone from this user's contacts by name
+                       if(!$r)
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
+                                               dbesc($newname),
+                                               intval($profile_uid)
+                               );
+               }
+
+               if ($r) {
+                       if(strlen($inform) AND (isset($r[0]["notify"]) OR isset($r[0]["id"])))
+                               $inform .= ',';
+
+                       if (isset($r[0]["id"]))
+                               $inform .= 'cid:' . $r[0]["id"];
+                       elseif (isset($r[0]["notify"]))
+                               $inform  .= $r[0]["notify"];
+
+                       $profile = $r[0]["url"];
+                       $alias   = $r[0]["alias"];
+                       $newname = $r[0]["nick"];
+                       if (($newname == "") OR (($r[0]["network"] != NETWORK_OSTATUS) AND ($r[0]["network"] != NETWORK_TWITTER)
+                               AND ($r[0]["network"] != NETWORK_STATUSNET) AND ($r[0]["network"] != NETWORK_APPNET)))
+                               $newname = $r[0]["name"];
                }
+
                //if there is an url for this persons profile
                if(isset($profile)) {
+
                        $replaced = true;
                        //create profile link
                        $profile = str_replace(',','%2c',$profile);
@@ -1264,7 +1271,7 @@ function store_diaspora_comment_sig($datarray, $author, $uprvkey, $parent_item,
        $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $diaspora_handle;
 
        if( $uprvkey !== false )
-               $authorsig = base64_encode(rsa_sign($signed_text,$uprvkey,'sha256'));
+               $authorsig = rsa_sign($signed_text,$uprvkey,'sha256');
        else
                $authorsig = '';
 
index a85e498db2ce7ea037eb0c067e367ea3b0287055..a07c5868ec995d467bd3eaa9ea9da3762c2a7cac 100644 (file)
@@ -312,6 +312,9 @@ function network_content(&$a, $update = 0) {
                return login(false);
        }
 
+       // Rawmode is used for fetching new content at the end of the page
+       $rawmode = (isset($_GET["mode"]) AND ($_GET["mode"] == "raw"));
+
        /// @TODO Is this really necessary? $a is already available to hooks
        $arr = array('query' => $a->query_string);
        call_hooks('network_content_init', $arr);
@@ -470,7 +473,7 @@ function network_content(&$a, $update = 0) {
        }
        set_pconfig(local_user(), 'network.view', 'net.selected', ($nets ? $nets : 'all'));
 
-       if(! $update) {
+       if(!$update AND !$rawmode) {
                if($group) {
                        if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
                                notice( sprintf( tt('Warning: This group contains %s member from an insecure network.',
@@ -549,27 +552,30 @@ function network_content(&$a, $update = 0) {
                }
 
                $contacts = expand_groups(array($group));
-
-               $contact_str_self = "";
+               $gcontacts = expand_groups(array($group), false, true);
 
                if((is_array($contacts)) && count($contacts)) {
+                       $contact_str_self = "";
+                       $gcontact_str_self = "";
+
                        $contact_str = implode(',',$contacts);
-                       $self = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", intval($_SESSION['uid']));
-                       if (count($self))
-                               $contact_str_self = ",".$self[0]["id"];
-               }
-               else {
-                       $contact_str = ' 0 ';
+                       $gcontact_str = implode(',',$gcontacts);
+                       $self = q("SELECT `contact`.`id`, `gcontact`.`id` AS `gid` FROM `contact`
+                                       INNER JOIN `gcontact` ON `gcontact`.`nurl` = `contact`.`nurl`
+                                       WHERE `uid` = %d AND `self`", intval($_SESSION['uid']));
+                       if (count($self)) {
+                               $contact_str_self = $self[0]["id"];
+                               $gcontact_str_self = $self[0]["gid"];
+                       }
+
+                       $sql_post_table = " INNER JOIN `item` AS `temp1` ON `temp1`.`id` = ".$sql_table.".".$sql_parent;
+                       $sql_extra3 .= " AND ($sql_table.`contact-id` IN ($contact_str) ";
+                       $sql_extra3 .= " OR ($sql_table.`contact-id` = '$contact_str_self' AND `temp1`.`allow_gid` LIKE '".protect_sprintf('%<'.intval($group).'>%')."' AND `temp1`.`private`))";
+               } else {
+                       $sql_extra3 .= " AND false ";
                        info( t('Group is empty'));
                }
 
-               //$sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE (`contact-id` IN ($contact_str) OR `allow_gid` like '".protect_sprintf('%<'.intval($group).'>%')."') and deleted = 0 ORDER BY `created` DESC) AS `temp1` ON $sql_table.$sql_parent = `temp1`.`parent` ";
-
-               $sql_extra3 .= " AND `contact-id` IN ($contact_str$contact_str_self) ";
-               $sql_extra3 .= " AND EXISTS (SELECT `id` FROM `item` WHERE (`contact-id` IN ($contact_str)
-                               OR `allow_gid` LIKE '".protect_sprintf('%<'.intval($group).'>%')."') AND `deleted` = 0
-                               AND `parent` = $sql_table.$sql_parent) ";
-
                $o = replace_macros(get_markup_template("section_title.tpl"),array(
                        '$title' => sprintf( t('Group: %s'), $r[0]['name'])
                )) . $o;
@@ -582,11 +588,7 @@ function network_content(&$a, $update = 0) {
                        intval($cid)
                );
                if(count($r)) {
-                       $sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item`
-                                           WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." AND `deleted` = 0
-                                           ORDER BY `item`.`received` DESC) AS `temp1`
-                                           ON $sql_table.$sql_parent = `temp1`.`parent` ";
-                       $sql_extra = "";
+                       $sql_extra = " AND ".$sql_table.".`contact-id` = ".intval($cid);
 
                        $entries[0] = array(
                                'id' => 'network',
@@ -668,7 +670,7 @@ function network_content(&$a, $update = 0) {
        }
 
        if($conv)
-               $sql_extra3 .= " AND `mention`";
+               $sql_extra3 .= " AND $sql_table.`mention`";
 
        if($update) {
 
index 8028e7e08d9f263cfa3a40a274a8843f1294a14a..aa55c3a098804f7e77e696e07167ecf35c9c7ad1 100644 (file)
@@ -45,11 +45,6 @@ function newmember_content(&$a) {
 
        $o .= '<ul>';
 
-       if(in_array('facebook', $a->plugins))
-               $o .= '<li>' . '<a target="newmember" href="facebook">' . t('Facebook') . '</a><br />' . t("Authorise the Facebook Connector if you currently have a Facebook account and we will \x28optionally\x29 import all your Facebook friends and conversations.") . '</li>' . EOL;
-       else
-               $o .= '<li>' . '<a target="newmember" href="help/Installing-Connectors">' . t('Facebook') . '</a><br />' . t("<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web.") . '</li>' . EOL;
-
     $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
        
        if(! $mail_disabled)
index 28869b4c128d7ecd3d1f5b8436297b8b11aad5c5..a1ca5a3db5e2e1c831d35bada4b52a3502b54183 100644 (file)
@@ -56,7 +56,15 @@ function completeurl($url, $scheme) {
 
 function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
 
-       $data = Cache::get("parse_url:".$no_guessing.":".$do_oembed.":".$url);
+       if ($url == "")
+               return false;
+
+       $r = q("SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
+               dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed));
+
+       if ($r)
+               $data = $r[0]["content"];
+
        if (!is_null($data)) {
                $data = unserialize($data);
                return $data;
@@ -64,13 +72,15 @@ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = tr
 
        $data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
 
-       Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data), CACHE_DAY);
+       q("INSERT INTO `parsed_url` (`url`, `guessing`, `oembed`, `content`, `created`) VALUES ('%s', %d, %d, '%s', '%s')",
+               dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed), dbesc(serialize($data)), dbesc(datetime_convert()));
 
        return $data;
 }
 
 function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
        require_once("include/network.php");
+       require_once("include/Photo.php");
 
        $a = get_app();
 
@@ -321,7 +331,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
                        $attr[$attribute->name] = $attribute->value;
 
                        $src = completeurl($attr["src"], $url);
-                       $photodata = @getimagesize($src);
+                       $photodata = get_photo_info($src);
 
                        if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) {
                                if ($photodata[0] > 300) {
@@ -338,12 +348,12 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
                        }
 
                }
-    } else {
+    } elseif ($siteinfo["image"] != "") {
                $src = completeurl($siteinfo["image"], $url);
 
                unset($siteinfo["image"]);
 
-               $photodata = @getimagesize($src);
+               $photodata = get_photo_info($src);
 
                if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10))
                        $siteinfo["images"][] = array("src"=>$src,
index ae03aef2cdba27e352834301bde64db12b1149dc..0a1b392169b22dbf3e5748bb4ebbbebc8aa65a25 100644 (file)
@@ -61,8 +61,7 @@ function poco_init(&$a) {
                $update_limit =  date("Y-m-d H:i:s",strtotime($_GET['updatedSince']));
 
        if ($global) {
-               //$r = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `updated` >= '%s' AND ((`last_contact` >= `last_failure`) OR (`updated` >= `last_failure`))  AND `network` IN ('%s')",
-               $r = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `updated` >= '%s' AND `updated` >= `last_failure`  AND `network` IN ('%s', '%s', '%s')",
+               $r = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `updated` >= '%s' AND `updated` >= `last_failure` AND NOT `hide` AND `network` IN ('%s', '%s', '%s')",
                        dbesc($update_limit),
                        dbesc(NETWORK_DFRN),
                        dbesc(NETWORK_DIASPORA),
@@ -94,8 +93,7 @@ function poco_init(&$a) {
 
        if ($global) {
                logger("Start global query", LOGGER_DEBUG);
-               //$r = q("SELECT * FROM `gcontact` WHERE `updated` > '%s' AND `network` IN ('%s') AND ((`last_contact` >= `last_failure`) OR (`updated` > `last_failure`)) LIMIT %d, %d",
-               $r = q("SELECT * FROM `gcontact` WHERE `updated` > '%s' AND `network` IN ('%s', '%s', '%s') AND `updated` > `last_failure`
+               $r = q("SELECT * FROM `gcontact` WHERE `updated` > '%s' AND NOT `hide` AND `network` IN ('%s', '%s', '%s') AND `updated` > `last_failure`
                        ORDER BY `updated` DESC LIMIT %d, %d",
                        dbesc($update_limit),
                        dbesc(NETWORK_DFRN),
index 02a6955a00ff9dcf59eeeaf917d4dae25a1d45c7..3efdbf6bde68fe192f07f9d458164ce9d783b292 100644 (file)
@@ -43,57 +43,67 @@ function settings_init(&$a) {
                        'selected'      =>  (($a->argc == 1) && ($a->argv[0] === 'settings')?'active':''),
                        'accesskey' => 'o',
                ),
-               array(
-                       'label' => t('Additional features'),
-                       'url'   => $a->get_baseurl(true).'/settings/features',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
-                       'accesskey' => 't',
-               ),
-               array(
-                       'label' => t('Display'),
-                       'url'   => $a->get_baseurl(true).'/settings/display',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
-                       'accesskey' => 'i',
-               ),
+       );
 
-               array(
-                       'label' => t('Social Networks'),
-                       'url'   => $a->get_baseurl(true).'/settings/connectors',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
-                       'accesskey' => 'w',
-               ),
-               array(
-                       'label' => t('Plugins'),
-                       'url'   => $a->get_baseurl(true).'/settings/addon',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
-                       'accesskey' => 'l',
-               ),
-               array(
-                       'label' => t('Delegations'),
-                       'url'   => $a->get_baseurl(true).'/delegate',
-                       'selected'      => (($a->argc == 1) && ($a->argv[0] === 'delegate')?'active':''),
-                       'accesskey' => 'd',
-               ),
-               array(
-                       'label' => t('Connected apps'),
-                       'url' => $a->get_baseurl(true) . '/settings/oauth',
-                       'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
-                       'accesskey' => 'b',
-               ),
-               array(
-                       'label' => t('Export personal data'),
-                       'url' => $a->get_baseurl(true) . '/uexport',
-                       'selected' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
-                       'accesskey' => 'e',
-               ),
-               array(
-                       'label' => t('Remove account'),
-                       'url' => $a->get_baseurl(true) . '/removeme',
-                       'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
-                       'accesskey' => 'r',
-               )
+       if(get_features()) {
+               $tabs[] =       array(
+                                       'label' => t('Additional features'),
+                                       'url'   => $a->get_baseurl(true).'/settings/features',
+                                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
+                                       'accesskey' => 't',
+                               );
+       }
+
+       $tabs[] =       array(
+               'label' => t('Display'),
+               'url'   => $a->get_baseurl(true).'/settings/display',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
+               'accesskey' => 'i',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Social Networks'),
+               'url'   => $a->get_baseurl(true).'/settings/connectors',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
+               'accesskey' => 'w',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Plugins'),
+               'url'   => $a->get_baseurl(true).'/settings/addon',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
+               'accesskey' => 'l',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Delegations'),
+               'url'   => $a->get_baseurl(true).'/delegate',
+               'selected'      => (($a->argc == 1) && ($a->argv[0] === 'delegate')?'active':''),
+               'accesskey' => 'd',
        );
 
+       $tabs[] =       array(
+               'label' => t('Connected apps'),
+               'url' => $a->get_baseurl(true) . '/settings/oauth',
+               'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
+               'accesskey' => 'b',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Export personal data'),
+               'url' => $a->get_baseurl(true) . '/uexport',
+               'selected' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
+               'accesskey' => 'e',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Remove account'),
+               'url' => $a->get_baseurl(true) . '/removeme',
+               'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
+               'accesskey' => 'r',
+       );
+
+
        $tabtpl = get_markup_template("generic_links_widget.tpl");
        $a->page['aside'] = replace_macros($tabtpl, array(
                '$title' => t('Settings'),
@@ -622,7 +632,6 @@ function settings_post(&$a) {
 }
 
 
-if(! function_exists('settings_content')) {
 function settings_content(&$a) {
 
        $o = '';
@@ -747,7 +756,7 @@ function settings_content(&$a) {
                        $arr[$fname] = array();
                        $arr[$fname][0] = $fdata[0];
                        foreach(array_slice($fdata,1) as $f) {
-                               $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(get_pconfig(local_user(),'feature',$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
+                               $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(feature_enabled(local_user(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
                        }
                }
 
@@ -1287,5 +1296,5 @@ function settings_content(&$a) {
 
        return $o;
 
-}}
+}
 
index caa167617cd7abf9a2f9c3cf8808484c69880f54..a825c82e9294657529aad6917f8d5cf56ce8a1ce 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1191 );
+define( 'UPDATE_VERSION' , 1193 );
 
 /**
  *
index 71148e8272fdd7916f7858e505564f222943c096..498a5bc5bc2d1c082831b20a04a12ae5f34ebd79 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-27 08:40+0100\n"
+"POT-Creation-Date: 2016-01-20 17:52+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"
@@ -18,26 +18,26 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 
-#: mod/contacts.php:50 include/identity.php:389
+#: mod/contacts.php:50 include/identity.php:395
 msgid "Network:"
 msgstr ""
 
-#: mod/contacts.php:51 mod/contacts.php:986 mod/videos.php:37
-#: mod/viewcontacts.php:105 mod/dirfind.php:208 mod/network.php:596
+#: mod/contacts.php:51 mod/contacts.php:961 mod/videos.php:37
+#: mod/viewcontacts.php:105 mod/dirfind.php:214 mod/network.php:598
 #: mod/allfriends.php:77 mod/match.php:82 mod/directory.php:172
 #: mod/common.php:123 mod/suggest.php:95 mod/photos.php:41
-#: include/identity.php:295
+#: include/identity.php:298
 msgid "Forum"
 msgstr ""
 
 #: mod/contacts.php:128
 #, php-format
 msgid "%d contact edited."
-msgid_plural "%d contacts edited"
+msgid_plural "%d contacts edited."
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/contacts.php:159 mod/contacts.php:382
+#: mod/contacts.php:159 mod/contacts.php:383
 msgid "Could not access contact record."
 msgstr ""
 
@@ -49,14 +49,14 @@ msgstr ""
 msgid "Contact updated."
 msgstr ""
 
-#: mod/contacts.php:208 mod/dfrn_request.php:578
+#: mod/contacts.php:208 mod/dfrn_request.php:575
 msgid "Failed to update contact record."
 msgstr ""
 
-#: mod/contacts.php:364 mod/manage.php:96 mod/display.php:493
+#: mod/contacts.php:365 mod/manage.php:96 mod/display.php:509
 #: mod/profile_photo.php:19 mod/profile_photo.php:175 mod/profile_photo.php:186
-#: mod/profile_photo.php:199 mod/ostatus_subscribe.php:9 mod/follow.php:10
-#: mod/follow.php:72 mod/follow.php:137 mod/item.php:169 mod/item.php:181
+#: mod/profile_photo.php:199 mod/ostatus_subscribe.php:9 mod/follow.php:11
+#: mod/follow.php:73 mod/follow.php:155 mod/item.php:180 mod/item.php:192
 #: mod/group.php:19 mod/dfrn_confirm.php:55 mod/fsuggest.php:78
 #: mod/wall_upload.php:77 mod/wall_upload.php:80 mod/viewcontacts.php:40
 #: mod/notifications.php:69 mod/message.php:45 mod/message.php:181
@@ -64,129 +64,129 @@ msgstr ""
 #: mod/allfriends.php:12 mod/events.php:165 mod/wallmessage.php:9
 #: mod/wallmessage.php:33 mod/wallmessage.php:79 mod/wallmessage.php:103
 #: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/settings.php:20
-#: mod/settings.php:116 mod/settings.php:637 mod/register.php:42
+#: mod/settings.php:126 mod/settings.php:646 mod/register.php:42
 #: mod/delegate.php:12 mod/common.php:18 mod/mood.php:114 mod/suggest.php:58
 #: mod/profiles.php:165 mod/profiles.php:615 mod/editpost.php:10 mod/api.php:26
 #: 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:5070 index.php:383
+#: include/items.php:5077 index.php:383
 msgid "Permission denied."
 msgstr ""
 
-#: mod/contacts.php:403
+#: mod/contacts.php:404
 msgid "Contact has been blocked"
 msgstr ""
 
-#: mod/contacts.php:403
+#: mod/contacts.php:404
 msgid "Contact has been unblocked"
 msgstr ""
 
-#: mod/contacts.php:414
+#: mod/contacts.php:415
 msgid "Contact has been ignored"
 msgstr ""
 
-#: mod/contacts.php:414
+#: mod/contacts.php:415
 msgid "Contact has been unignored"
 msgstr ""
 
-#: mod/contacts.php:426
+#: mod/contacts.php:427
 msgid "Contact has been archived"
 msgstr ""
 
-#: mod/contacts.php:426
+#: mod/contacts.php:427
 msgid "Contact has been unarchived"
 msgstr ""
 
-#: mod/contacts.php:453 mod/contacts.php:801
+#: mod/contacts.php:454 mod/contacts.php:802
 msgid "Do you really want to delete this contact?"
 msgstr ""
 
-#: mod/contacts.php:455 mod/follow.php:105 mod/message.php:216
-#: mod/settings.php:1094 mod/settings.php:1100 mod/settings.php:1108
-#: mod/settings.php:1112 mod/settings.php:1117 mod/settings.php:1123
-#: mod/settings.php:1129 mod/settings.php:1135 mod/settings.php:1161
-#: mod/settings.php:1162 mod/settings.php:1163 mod/settings.php:1164
-#: mod/settings.php:1165 mod/dfrn_request.php:850 mod/register.php:238
+#: mod/contacts.php:456 mod/follow.php:110 mod/message.php:216
+#: mod/settings.php:1103 mod/settings.php:1109 mod/settings.php:1117
+#: mod/settings.php:1121 mod/settings.php:1126 mod/settings.php:1132
+#: mod/settings.php:1138 mod/settings.php:1144 mod/settings.php:1170
+#: 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:4902
+#: mod/profiles.php:687 mod/api.php:105 include/items.php:4909
 msgid "Yes"
 msgstr ""
 
-#: mod/contacts.php:458 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:116
+#: mod/contacts.php:459 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121
 #: mod/videos.php:131 mod/message.php:219 mod/fbrowser.php:93
-#: mod/fbrowser.php:128 mod/settings.php:651 mod/settings.php:677
-#: mod/dfrn_request.php:864 mod/suggest.php:32 mod/editpost.php:148
-#: mod/photos.php:247 mod/photos.php:336 include/conversation.php:1221
-#: include/items.php:4905
+#: 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
 msgid "Cancel"
 msgstr ""
 
-#: mod/contacts.php:470
+#: mod/contacts.php:471
 msgid "Contact has been removed."
 msgstr ""
 
-#: mod/contacts.php:511
+#: mod/contacts.php:512
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr ""
 
-#: mod/contacts.php:515
+#: mod/contacts.php:516
 #, php-format
 msgid "You are sharing with %s"
 msgstr ""
 
-#: mod/contacts.php:520
+#: mod/contacts.php:521
 #, php-format
 msgid "%s is sharing with you"
 msgstr ""
 
-#: mod/contacts.php:540
+#: mod/contacts.php:541
 msgid "Private communications are not available for this contact."
 msgstr ""
 
-#: mod/contacts.php:543 mod/admin.php:647
+#: mod/contacts.php:544 mod/admin.php:820
 msgid "Never"
 msgstr ""
 
-#: mod/contacts.php:547
+#: mod/contacts.php:548
 msgid "(Update was successful)"
 msgstr ""
 
-#: mod/contacts.php:547
+#: mod/contacts.php:548
 msgid "(Update was not successful)"
 msgstr ""
 
-#: mod/contacts.php:549
+#: mod/contacts.php:550
 msgid "Suggest friends"
 msgstr ""
 
-#: mod/contacts.php:553
+#: mod/contacts.php:554
 #, php-format
 msgid "Network type: %s"
 msgstr ""
 
-#: mod/contacts.php:566
+#: mod/contacts.php:567
 msgid "Communications lost with this contact!"
 msgstr ""
 
-#: mod/contacts.php:569
+#: mod/contacts.php:570
 msgid "Fetch further information for feeds"
 msgstr ""
 
-#: mod/contacts.php:570 mod/admin.php:656
+#: mod/contacts.php:571 mod/admin.php:829
 msgid "Disabled"
 msgstr ""
 
-#: mod/contacts.php:570
+#: mod/contacts.php:571
 msgid "Fetch information"
 msgstr ""
 
-#: mod/contacts.php:570
+#: mod/contacts.php:571
 msgid "Fetch information and keywords"
 msgstr ""
 
-#: mod/contacts.php:586 mod/manage.php:143 mod/fsuggest.php:107
+#: mod/contacts.php:587 mod/manage.php:143 mod/fsuggest.php:107
 #: mod/message.php:342 mod/message.php:525 mod/crepair.php:196
 #: mod/events.php:574 mod/content.php:712 mod/install.php:261
 #: mod/install.php:299 mod/mood.php:137 mod/profiles.php:696
@@ -195,307 +195,308 @@ msgstr ""
 #: mod/photos.php:1678 mod/photos.php:1766 object/Item.php:710
 #: view/theme/cleanzero/config.php:80 view/theme/dispy/config.php:70
 #: view/theme/quattro/config.php:64 view/theme/diabook/config.php:148
-#: view/theme/diabook/theme.php:633 view/theme/clean/config.php:83
-#: view/theme/vier/config.php:107 view/theme/duepuntozero/config.php:59
+#: view/theme/diabook/theme.php:633 view/theme/vier/config.php:107
+#: view/theme/duepuntozero/config.php:59
 msgid "Submit"
 msgstr ""
 
-#: mod/contacts.php:587
+#: mod/contacts.php:588
 msgid "Profile Visibility"
 msgstr ""
 
-#: mod/contacts.php:588
+#: mod/contacts.php:589
 #, php-format
 msgid ""
 "Please choose the profile you would like to display to %s when viewing your "
 "profile securely."
 msgstr ""
 
-#: mod/contacts.php:589
+#: mod/contacts.php:590
 msgid "Contact Information / Notes"
 msgstr ""
 
-#: mod/contacts.php:590
+#: mod/contacts.php:591
 msgid "Edit contact notes"
 msgstr ""
 
-#: mod/contacts.php:595 mod/contacts.php:977 mod/viewcontacts.php:97
+#: mod/contacts.php:596 mod/contacts.php:952 mod/viewcontacts.php:97
 #: mod/nogroup.php:41
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr ""
 
-#: mod/contacts.php:596
+#: mod/contacts.php:597
 msgid "Block/Unblock contact"
 msgstr ""
 
-#: mod/contacts.php:597
+#: mod/contacts.php:598
 msgid "Ignore contact"
 msgstr ""
 
-#: mod/contacts.php:598
+#: mod/contacts.php:599
 msgid "Repair URL settings"
 msgstr ""
 
-#: mod/contacts.php:599
+#: mod/contacts.php:600
 msgid "View conversations"
 msgstr ""
 
-#: mod/contacts.php:601
+#: mod/contacts.php:602
 msgid "Delete contact"
 msgstr ""
 
-#: mod/contacts.php:605
+#: mod/contacts.php:606
 msgid "Last update:"
 msgstr ""
 
-#: mod/contacts.php:607
+#: mod/contacts.php:608
 msgid "Update public posts"
 msgstr ""
 
-#: mod/contacts.php:609 mod/admin.php:1656
+#: mod/contacts.php:610
 msgid "Update now"
 msgstr ""
 
-#: mod/contacts.php:611 mod/dirfind.php:190 mod/allfriends.php:65
-#: mod/match.php:71 mod/suggest.php:82 include/contact_widgets.php:32
-#: include/Contact.php:310 include/conversation.php:924
+#: mod/contacts.php:612 mod/follow.php:103 mod/dirfind.php:196
+#: mod/allfriends.php:65 mod/match.php:71 mod/suggest.php:82
+#: include/contact_widgets.php:32 include/Contact.php:297
+#: include/conversation.php:924
 msgid "Connect/Follow"
 msgstr ""
 
-#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864
-#: mod/admin.php:1120
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1310
 msgid "Unblock"
 msgstr ""
 
-#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864
-#: mod/admin.php:1119
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1309
 msgid "Block"
 msgstr ""
 
-#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
 msgid "Unignore"
 msgstr ""
 
-#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
 #: mod/notifications.php:54 mod/notifications.php:179 mod/notifications.php:259
 msgid "Ignore"
 msgstr ""
 
-#: mod/contacts.php:618
+#: mod/contacts.php:619
 msgid "Currently blocked"
 msgstr ""
 
-#: mod/contacts.php:619
+#: mod/contacts.php:620
 msgid "Currently ignored"
 msgstr ""
 
-#: mod/contacts.php:620
+#: mod/contacts.php:621
 msgid "Currently archived"
 msgstr ""
 
-#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:251
+#: mod/contacts.php:622 mod/notifications.php:172 mod/notifications.php:251
 msgid "Hide this contact from others"
 msgstr ""
 
-#: mod/contacts.php:621
+#: mod/contacts.php:622
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr ""
 
-#: mod/contacts.php:622
+#: mod/contacts.php:623
 msgid "Notification for new posts"
 msgstr ""
 
-#: mod/contacts.php:622
+#: mod/contacts.php:623
 msgid "Send a notification of every new post of this contact"
 msgstr ""
 
-#: mod/contacts.php:625
+#: mod/contacts.php:626
 msgid "Blacklisted keywords"
 msgstr ""
 
-#: mod/contacts.php:625
+#: mod/contacts.php:626
 msgid ""
 "Comma separated list of keywords that should not be converted to hashtags, "
 "when \"Fetch information and keywords\" is selected"
 msgstr ""
 
-#: mod/contacts.php:632 mod/follow.php:121 mod/notifications.php:255
+#: mod/contacts.php:633 mod/follow.php:126 mod/notifications.php:255
 msgid "Profile URL"
 msgstr ""
 
-#: mod/contacts.php:635 mod/follow.php:125 mod/notifications.php:244
-#: mod/events.php:566 mod/directory.php:145 include/identity.php:304
-#: include/bb2diaspora.php:170 include/event.php:36 include/event.php:60
+#: mod/contacts.php:636 mod/notifications.php:244 mod/events.php:566
+#: mod/directory.php:145 include/identity.php:308 include/bb2diaspora.php:170
+#: include/event.php:36 include/event.php:60
 msgid "Location:"
 msgstr ""
 
-#: mod/contacts.php:637 mod/follow.php:127 mod/notifications.php:246
-#: mod/directory.php:153 include/identity.php:313 include/identity.php:630
+#: mod/contacts.php:638 mod/notifications.php:246 mod/directory.php:153
+#: include/identity.php:317 include/identity.php:631
 msgid "About:"
 msgstr ""
 
-#: mod/contacts.php:639 mod/follow.php:129 mod/notifications.php:248
-#: include/identity.php:624
+#: mod/contacts.php:640 mod/follow.php:134 mod/notifications.php:248
+#: include/identity.php:625
 msgid "Tags:"
 msgstr ""
 
-#: mod/contacts.php:684
+#: mod/contacts.php:685
 msgid "Suggestions"
 msgstr ""
 
-#: mod/contacts.php:687
+#: mod/contacts.php:688
 msgid "Suggest potential friends"
 msgstr ""
 
-#: mod/contacts.php:692 mod/group.php:192
+#: mod/contacts.php:693 mod/group.php:192
 msgid "All Contacts"
 msgstr ""
 
-#: mod/contacts.php:695
+#: mod/contacts.php:696
 msgid "Show all contacts"
 msgstr ""
 
-#: mod/contacts.php:700
+#: mod/contacts.php:701
 msgid "Unblocked"
 msgstr ""
 
-#: mod/contacts.php:703
+#: mod/contacts.php:704
 msgid "Only show unblocked contacts"
 msgstr ""
 
-#: mod/contacts.php:709
+#: mod/contacts.php:710
 msgid "Blocked"
 msgstr ""
 
-#: mod/contacts.php:712
+#: mod/contacts.php:713
 msgid "Only show blocked contacts"
 msgstr ""
 
-#: mod/contacts.php:718
+#: mod/contacts.php:719
 msgid "Ignored"
 msgstr ""
 
-#: mod/contacts.php:721
+#: mod/contacts.php:722
 msgid "Only show ignored contacts"
 msgstr ""
 
-#: mod/contacts.php:727
+#: mod/contacts.php:728
 msgid "Archived"
 msgstr ""
 
-#: mod/contacts.php:730
+#: mod/contacts.php:731
 msgid "Only show archived contacts"
 msgstr ""
 
-#: mod/contacts.php:736
+#: mod/contacts.php:737
 msgid "Hidden"
 msgstr ""
 
-#: mod/contacts.php:739
+#: mod/contacts.php:740
 msgid "Only show hidden contacts"
 msgstr ""
 
-#: mod/contacts.php:792 mod/contacts.php:840 mod/viewcontacts.php:116
+#: mod/contacts.php:793 mod/contacts.php:841 mod/viewcontacts.php:116
 #: include/identity.php:741 include/identity.php:744 include/text.php:1012
 #: include/nav.php:123 include/nav.php:187 view/theme/diabook/theme.php:125
 msgid "Contacts"
 msgstr ""
 
-#: mod/contacts.php:796
+#: mod/contacts.php:797
 msgid "Search your contacts"
 msgstr ""
 
-#: mod/contacts.php:797
+#: mod/contacts.php:798
 msgid "Finding: "
 msgstr ""
 
-#: mod/contacts.php:798 mod/directory.php:210 include/contact_widgets.php:34
+#: mod/contacts.php:799 mod/directory.php:210 include/contact_widgets.php:34
 msgid "Find"
 msgstr ""
 
-#: mod/contacts.php:804 mod/settings.php:146 mod/settings.php:676
+#: mod/contacts.php:805 mod/settings.php:156 mod/settings.php:685
 msgid "Update"
 msgstr ""
 
-#: mod/contacts.php:807 mod/contacts.php:878
+#: mod/contacts.php:808 mod/contacts.php:879
 msgid "Archive"
 msgstr ""
 
-#: mod/contacts.php:807 mod/contacts.php:878
+#: mod/contacts.php:808 mod/contacts.php:879
 msgid "Unarchive"
 msgstr ""
 
-#: mod/contacts.php:808 mod/group.php:171 mod/admin.php:1118
-#: mod/content.php:440 mod/content.php:743 mod/settings.php:713
+#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1308
+#: 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"
 msgstr ""
 
-#: mod/contacts.php:821 include/identity.php:686 include/nav.php:75
+#: mod/contacts.php:822 include/identity.php:686 include/nav.php:75
 msgid "Status"
 msgstr ""
 
-#: mod/contacts.php:824 include/identity.php:689
+#: mod/contacts.php:825 mod/follow.php:143 include/identity.php:689
 msgid "Status Messages and Posts"
 msgstr ""
 
-#: mod/contacts.php:829 mod/profperm.php:104 mod/newmember.php:32
-#: include/identity.php:578 include/identity.php:664 include/identity.php:694
+#: mod/contacts.php:830 mod/profperm.php:104 mod/newmember.php:32
+#: include/identity.php:579 include/identity.php:665 include/identity.php:694
 #: include/nav.php:76 view/theme/diabook/theme.php:124
 msgid "Profile"
 msgstr ""
 
-#: mod/contacts.php:832 include/identity.php:697
+#: mod/contacts.php:833 include/identity.php:697
 msgid "Profile Details"
 msgstr ""
 
-#: mod/contacts.php:843
+#: mod/contacts.php:844
 msgid "View all contacts"
 msgstr ""
 
-#: mod/contacts.php:849 mod/common.php:134
+#: mod/contacts.php:850 mod/common.php:134
 msgid "Common Friends"
 msgstr ""
 
-#: mod/contacts.php:852
+#: mod/contacts.php:853
 msgid "View all common friends"
 msgstr ""
 
-#: mod/contacts.php:856
+#: mod/contacts.php:857
 msgid "Repair"
 msgstr ""
 
-#: mod/contacts.php:859
+#: mod/contacts.php:860
 msgid "Advanced Contact Settings"
 msgstr ""
 
-#: mod/contacts.php:867
+#: mod/contacts.php:868
 msgid "Toggle Blocked status"
 msgstr ""
 
-#: mod/contacts.php:874
+#: mod/contacts.php:875
 msgid "Toggle Ignored status"
 msgstr ""
 
-#: mod/contacts.php:881
+#: mod/contacts.php:882
 msgid "Toggle Archive status"
 msgstr ""
 
-#: mod/contacts.php:949
+#: mod/contacts.php:924
 msgid "Mutual Friendship"
 msgstr ""
 
-#: mod/contacts.php:953
+#: mod/contacts.php:928
 msgid "is a fan of yours"
 msgstr ""
 
-#: mod/contacts.php:957
+#: mod/contacts.php:932
 msgid "you are a fan of"
 msgstr ""
 
-#: mod/contacts.php:978 mod/nogroup.php:42
+#: mod/contacts.php:953 mod/nogroup.php:42
 msgid "Edit contact"
 msgstr ""
 
@@ -545,23 +546,23 @@ msgstr ""
 msgid "All Contacts (with secure profile access)"
 msgstr ""
 
-#: mod/display.php:82 mod/display.php:280 mod/display.php:497
-#: mod/viewsrc.php:15 mod/admin.php:196 mod/admin.php:1163 mod/admin.php:1384
-#: mod/notice.php:15 include/items.php:4861
+#: 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
 msgid "Item not found."
 msgstr ""
 
-#: mod/display.php:209 mod/videos.php:197 mod/viewcontacts.php:35
-#: mod/community.php:18 mod/dfrn_request.php:779 mod/search.php:93
+#: mod/display.php:220 mod/videos.php:197 mod/viewcontacts.php:35
+#: mod/community.php:22 mod/dfrn_request.php:786 mod/search.php:93
 #: mod/search.php:99 mod/directory.php:37 mod/photos.php:976
 msgid "Public access denied."
 msgstr ""
 
-#: mod/display.php:328 mod/profile.php:155
+#: mod/display.php:339 mod/profile.php:155
 msgid "Access to this profile has been restricted."
 msgstr ""
 
-#: mod/display.php:490
+#: mod/display.php:506
 msgid "Item has been removed."
 msgstr ""
 
@@ -596,8 +597,8 @@ msgid ""
 "join."
 msgstr ""
 
-#: mod/newmember.php:22 mod/admin.php:1215 mod/admin.php:1460
-#: mod/settings.php:99 include/nav.php:182 view/theme/diabook/theme.php:544
+#: mod/newmember.php:22 mod/admin.php:1416 mod/admin.php:1674
+#: mod/settings.php:109 include/nav.php:182 view/theme/diabook/theme.php:544
 #: view/theme/diabook/theme.php:648
 msgid "Settings"
 msgstr ""
@@ -658,60 +659,44 @@ msgstr ""
 msgid "Connecting"
 msgstr ""
 
-#: mod/newmember.php:49 mod/newmember.php:51 include/contact_selectors.php:81
-msgid "Facebook"
-msgstr ""
-
-#: mod/newmember.php:49
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr ""
-
 #: mod/newmember.php:51
-msgid ""
-"<em>If</em> this is your own personal server, installing the Facebook addon "
-"may ease your transition to the free social web."
-msgstr ""
-
-#: mod/newmember.php:56
 msgid "Importing Emails"
 msgstr ""
 
-#: mod/newmember.php:56
+#: mod/newmember.php:51
 msgid ""
 "Enter your email access information on your Connector Settings page if you "
 "wish to import and interact with friends or mailing lists from your email "
 "INBOX"
 msgstr ""
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid "Go to Your Contacts Page"
 msgstr ""
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid ""
 "Your Contacts page is your gateway to managing friendships and connecting "
 "with friends on other networks. Typically you enter their address or site "
 "URL in the <em>Add New Contact</em> dialog."
 msgstr ""
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid "Go to Your Site's Directory"
 msgstr ""
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid ""
 "The Directory page lets you find other people in this network or other "
 "federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
 "their profile page. Provide your own Identity Address if requested."
 msgstr ""
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid "Finding New People"
 msgstr ""
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid ""
 "On the side panel of the Contacts page are several tools to find new "
 "friends. We can match people by interest, look up people by name or "
@@ -720,41 +705,41 @@ msgid ""
 "hours."
 msgstr ""
 
-#: mod/newmember.php:66 include/group.php:283
+#: mod/newmember.php:61 include/group.php:283
 msgid "Groups"
 msgstr ""
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid "Group Your Contacts"
 msgstr ""
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid ""
 "Once you have made some friends, organize them into private conversation "
 "groups from the sidebar of your Contacts page and then you can interact with "
 "each group privately on your Network page."
 msgstr ""
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid "Why Aren't My Posts Public?"
 msgstr ""
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid ""
 "Friendica respects your privacy. By default, your posts will only show up to "
 "people you've added as friends. For more information, see the help section "
 "from the link above."
 msgstr ""
 
-#: mod/newmember.php:78
+#: mod/newmember.php:73
 msgid "Getting Help"
 msgstr ""
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid "Go to the Help Section"
 msgstr ""
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid ""
 "Our <strong>help</strong> pages may be consulted for detail on other program "
 "features and resources."
@@ -769,7 +754,7 @@ msgid ""
 "Account not found and OpenID registration is not permitted on this site."
 msgstr ""
 
-#: mod/openid.php:93 include/auth.php:112 include/auth.php:175
+#: mod/openid.php:93 include/auth.php:118 include/auth.php:181
 msgid "Login failed."
 msgstr ""
 
@@ -855,18 +840,18 @@ msgstr ""
 msgid "Image upload failed."
 msgstr ""
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
 #: include/conversation.php:130 include/conversation.php:266
-#: include/text.php:1993 include/diaspora.php:2147
+#: include/text.php:2000 include/diaspora.php:2151
 #: view/theme/diabook/theme.php:471
 msgid "photo"
 msgstr ""
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168 mod/like.php:346
-#: include/conversation.php:125 include/conversation.php:134
-#: include/conversation.php:261 include/conversation.php:270
-#: include/diaspora.php:2147 view/theme/diabook/theme.php:466
-#: view/theme/diabook/theme.php:475
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
+#: include/like.php:325 include/conversation.php:125
+#: include/conversation.php:134 include/conversation.php:261
+#: include/conversation.php:270 include/diaspora.php:2151
+#: view/theme/diabook/theme.php:466 view/theme/diabook/theme.php:475
 msgid "status"
 msgstr ""
 
@@ -927,7 +912,7 @@ msgstr ""
 msgid "Keep this window open until done."
 msgstr ""
 
-#: mod/filer.php:30 include/conversation.php:1133 include/conversation.php:1151
+#: mod/filer.php:30 include/conversation.php:1132 include/conversation.php:1150
 msgid "Save to Folder:"
 msgstr ""
 
@@ -939,54 +924,54 @@ msgstr ""
 msgid "Save"
 msgstr ""
 
-#: mod/follow.php:18 mod/dfrn_request.php:863
+#: mod/follow.php:19 mod/dfrn_request.php:870
 msgid "Submit Request"
 msgstr ""
 
-#: mod/follow.php:29
+#: mod/follow.php:30
 msgid "You already added this contact."
 msgstr ""
 
-#: mod/follow.php:38
+#: mod/follow.php:39
 msgid "Diaspora support isn't enabled. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:45
+#: mod/follow.php:46
 msgid "OStatus support is disabled. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:52
+#: mod/follow.php:53
 msgid "The network type couldn't be detected. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:104 mod/dfrn_request.php:849
+#: mod/follow.php:109 mod/dfrn_request.php:856
 msgid "Please answer the following:"
 msgstr ""
 
-#: mod/follow.php:105 mod/dfrn_request.php:850
+#: mod/follow.php:110 mod/dfrn_request.php:857
 #, php-format
 msgid "Does %s know you?"
 msgstr ""
 
-#: mod/follow.php:105 mod/settings.php:1094 mod/settings.php:1100
-#: mod/settings.php:1108 mod/settings.php:1112 mod/settings.php:1117
-#: mod/settings.php:1123 mod/settings.php:1129 mod/settings.php:1135
-#: mod/settings.php:1161 mod/settings.php:1162 mod/settings.php:1163
-#: mod/settings.php:1164 mod/settings.php:1165 mod/dfrn_request.php:850
+#: mod/follow.php:110 mod/settings.php:1103 mod/settings.php:1109
+#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1126
+#: mod/settings.php:1132 mod/settings.php:1138 mod/settings.php:1144
+#: mod/settings.php:1170 mod/settings.php:1171 mod/settings.php:1172
+#: mod/settings.php:1173 mod/settings.php:1174 mod/dfrn_request.php:857
 #: mod/register.php:239 mod/profiles.php:658 mod/profiles.php:662
 #: mod/profiles.php:687 mod/api.php:106
 msgid "No"
 msgstr ""
 
-#: mod/follow.php:106 mod/dfrn_request.php:854
+#: mod/follow.php:111 mod/dfrn_request.php:861
 msgid "Add a personal note:"
 msgstr ""
 
-#: mod/follow.php:112 mod/dfrn_request.php:860
+#: mod/follow.php:117 mod/dfrn_request.php:867
 msgid "Your Identity Address:"
 msgstr ""
 
-#: mod/follow.php:162
+#: mod/follow.php:180
 msgid "Contact added"
 msgstr ""
 
@@ -994,38 +979,38 @@ msgstr ""
 msgid "Unable to locate original post."
 msgstr ""
 
-#: mod/item.php:318
+#: mod/item.php:329
 msgid "Empty post discarded."
 msgstr ""
 
-#: mod/item.php:456 mod/wall_upload.php:213 mod/wall_upload.php:227
-#: mod/wall_upload.php:234 include/Photo.php:954 include/Photo.php:969
-#: include/Photo.php:976 include/Photo.php:998 include/message.php:145
+#: mod/item.php:467 mod/wall_upload.php:213 mod/wall_upload.php:227
+#: mod/wall_upload.php:234 include/Photo.php:958 include/Photo.php:973
+#: include/Photo.php:980 include/Photo.php:1002 include/message.php:145
 msgid "Wall Photos"
 msgstr ""
 
-#: mod/item.php:830
+#: mod/item.php:842
 msgid "System error. Post not saved."
 msgstr ""
 
-#: mod/item.php:959
+#: mod/item.php:971
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social network."
 msgstr ""
 
-#: mod/item.php:961
+#: mod/item.php:973
 #, php-format
 msgid "You may visit them online at %s"
 msgstr ""
 
-#: mod/item.php:962
+#: mod/item.php:974
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr ""
 
-#: mod/item.php:966
+#: mod/item.php:978
 #, php-format
 msgid "%s posted an update."
 msgstr ""
@@ -1074,7 +1059,7 @@ msgstr ""
 msgid "Members"
 msgstr ""
 
-#: mod/group.php:193 mod/network.php:563 mod/content.php:130
+#: mod/group.php:193 mod/network.php:576 mod/content.php:130
 msgid "Group is empty"
 msgstr ""
 
@@ -1176,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:734 include/items.php:4273
+#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4280
 msgid "[Name Withheld]"
 msgstr ""
 
@@ -1185,7 +1170,7 @@ msgstr ""
 msgid "%1$s has joined %2$s"
 msgstr ""
 
-#: mod/profile.php:21 include/identity.php:53
+#: mod/profile.php:21 include/identity.php:51
 msgid "Requested profile is not available."
 msgstr ""
 
@@ -1209,7 +1194,7 @@ msgstr ""
 msgid "Access to this item is restricted."
 msgstr ""
 
-#: mod/videos.php:383 include/text.php:1465
+#: mod/videos.php:383 include/text.php:1472
 msgid "View Video"
 msgstr ""
 
@@ -1245,7 +1230,7 @@ msgstr ""
 
 #: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86
 #: mod/wall_upload.php:122 mod/wall_upload.php:125 mod/wall_attach.php:17
-#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1735
+#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1781
 msgid "Invalid request."
 msgstr ""
 
@@ -1303,7 +1288,7 @@ msgid ""
 "Password reset failed."
 msgstr ""
 
-#: mod/lostpass.php:109 boot.php:1310
+#: mod/lostpass.php:109 boot.php:1444
 msgid "Password Reset"
 msgstr ""
 
@@ -1379,37 +1364,6 @@ msgstr ""
 msgid "Reset"
 msgstr ""
 
-#: mod/like.php:170 include/conversation.php:122 include/conversation.php:258
-#: include/text.php:1991 view/theme/diabook/theme.php:463
-msgid "event"
-msgstr ""
-
-#: mod/like.php:187 include/conversation.php:141 include/diaspora.php:2163
-#: view/theme/diabook/theme.php:480
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:189 include/conversation.php:144
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:191
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:193
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:195
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr ""
-
 #: mod/ping.php:265
 msgid "{0} wants to be your friend"
 msgstr ""
@@ -1438,11 +1392,11 @@ msgstr ""
 msgid "System"
 msgstr ""
 
-#: mod/notifications.php:87 mod/admin.php:228 include/nav.php:154
+#: mod/notifications.php:87 mod/admin.php:388 include/nav.php:154
 msgid "Network"
 msgstr ""
 
-#: mod/notifications.php:93 mod/network.php:381
+#: mod/notifications.php:93 mod/network.php:384
 msgid "Personal"
 msgstr ""
 
@@ -1484,7 +1438,7 @@ msgstr ""
 msgid "if applicable"
 msgstr ""
 
-#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1116
+#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1306
 msgid "Approve"
 msgstr ""
 
@@ -1534,8 +1488,8 @@ msgstr ""
 msgid "New Follower"
 msgstr ""
 
-#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:306
-#: include/identity.php:589
+#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:310
+#: include/identity.php:590
 msgid "Gender:"
 msgstr ""
 
@@ -1706,7 +1660,7 @@ msgstr ""
 
 #: mod/message.php:290 mod/message.php:298 mod/message.php:427
 #: mod/message.php:435 mod/wallmessage.php:127 mod/wallmessage.php:135
-#: include/conversation.php:1129 include/conversation.php:1147
+#: include/conversation.php:1128 include/conversation.php:1146
 msgid "Please enter a link URL:"
 msgstr ""
 
@@ -1728,19 +1682,19 @@ msgid "Your message:"
 msgstr ""
 
 #: mod/message.php:339 mod/message.php:523 mod/wallmessage.php:154
-#: mod/editpost.php:110 include/conversation.php:1184
+#: mod/editpost.php:110 include/conversation.php:1183
 msgid "Upload photo"
 msgstr ""
 
 #: mod/message.php:340 mod/message.php:524 mod/wallmessage.php:155
-#: mod/editpost.php:114 include/conversation.php:1188
+#: mod/editpost.php:114 include/conversation.php:1187
 msgid "Insert web link"
 msgstr ""
 
 #: mod/message.php:341 mod/message.php:526 mod/content.php:501
 #: mod/content.php:885 mod/wallmessage.php:156 mod/editpost.php:124
 #: mod/photos.php:1610 object/Item.php:396 include/conversation.php:713
-#: include/conversation.php:1202
+#: include/conversation.php:1201
 msgid "Please wait"
 msgstr ""
 
@@ -1756,7 +1710,7 @@ msgstr ""
 msgid "Delete message"
 msgstr ""
 
-#: mod/message.php:507 mod/message.php:582
+#: mod/message.php:507 mod/message.php:584
 msgid "Delete conversation"
 msgstr ""
 
@@ -1770,26 +1724,26 @@ msgstr ""
 msgid "Send Reply"
 msgstr ""
 
-#: mod/message.php:555
+#: mod/message.php:557
 #, php-format
 msgid "Unknown sender - %s"
 msgstr ""
 
-#: mod/message.php:558
+#: mod/message.php:560
 #, php-format
 msgid "You and %s"
 msgstr ""
 
-#: mod/message.php:561
+#: mod/message.php:563
 #, php-format
 msgid "%s and You"
 msgstr ""
 
-#: mod/message.php:585
+#: mod/message.php:587
 msgid "D, d M Y - g:i A"
 msgstr ""
 
-#: mod/message.php:588
+#: mod/message.php:590
 #, php-format
 msgid "%d message"
 msgid_plural "%d messages"
@@ -1841,8 +1795,8 @@ msgstr ""
 msgid "Refetch contact data"
 msgstr ""
 
-#: mod/crepair.php:170 mod/admin.php:1114 mod/admin.php:1126 mod/admin.php:1127
-#: mod/admin.php:1140 mod/settings.php:652 mod/settings.php:678
+#: 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
 msgid "Name"
 msgstr ""
 
@@ -1892,7 +1846,7 @@ msgid ""
 "entries from this contact."
 msgstr ""
 
-#: mod/bookmarklet.php:12 boot.php:1296 include/nav.php:91
+#: mod/bookmarklet.php:12 boot.php:1430 include/nav.php:91
 msgid "Login"
 msgstr ""
 
@@ -1904,24 +1858,24 @@ msgstr ""
 msgid "Access denied."
 msgstr ""
 
-#: mod/dirfind.php:188 mod/allfriends.php:80 mod/match.php:85
-#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:209
+#: mod/dirfind.php:194 mod/allfriends.php:80 mod/match.php:85
+#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:212
 msgid "Connect"
 msgstr ""
 
-#: mod/dirfind.php:189 mod/allfriends.php:64 mod/match.php:70
-#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:296
-#: include/Contact.php:309 include/Contact.php:351 include/conversation.php:912
+#: mod/dirfind.php:195 mod/allfriends.php:64 mod/match.php:70
+#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:283
+#: include/Contact.php:296 include/Contact.php:338 include/conversation.php:912
 #: include/conversation.php:926
 msgid "View Profile"
 msgstr ""
 
-#: mod/dirfind.php:218
+#: mod/dirfind.php:224
 #, php-format
 msgid "People Search - %s"
 msgstr ""
 
-#: mod/dirfind.php:225 mod/match.php:105
+#: mod/dirfind.php:231 mod/match.php:105
 msgid "No matches"
 msgstr ""
 
@@ -1944,776 +1898,806 @@ msgstr ""
 msgid "Contacts who are not members of a group"
 msgstr ""
 
-#: mod/admin.php:80
+#: mod/admin.php:92
 msgid "Theme settings updated."
 msgstr ""
 
-#: mod/admin.php:127 mod/admin.php:713
+#: mod/admin.php:156 mod/admin.php:886
 msgid "Site"
 msgstr ""
 
-#: mod/admin.php:128 mod/admin.php:657 mod/admin.php:1109 mod/admin.php:1124
+#: mod/admin.php:157 mod/admin.php:830 mod/admin.php:1299 mod/admin.php:1314
 msgid "Users"
 msgstr ""
 
-#: mod/admin.php:129 mod/admin.php:1213 mod/admin.php:1273 mod/settings.php:66
+#: mod/admin.php:158 mod/admin.php:1414 mod/admin.php:1474 mod/settings.php:72
 msgid "Plugins"
 msgstr ""
 
-#: mod/admin.php:130 mod/admin.php:1458 mod/admin.php:1509
+#: mod/admin.php:159 mod/admin.php:1672 mod/admin.php:1722
 msgid "Themes"
 msgstr ""
 
-#: mod/admin.php:131
+#: mod/admin.php:160 mod/settings.php:50
+msgid "Additional features"
+msgstr ""
+
+#: mod/admin.php:161
 msgid "DB updates"
 msgstr ""
 
-#: mod/admin.php:132 mod/admin.php:223
+#: mod/admin.php:162 mod/admin.php:383
 msgid "Inspect Queue"
 msgstr ""
 
-#: mod/admin.php:147 mod/admin.php:156 mod/admin.php:1597
+#: mod/admin.php:163 mod/admin.php:352
+msgid "Federation Statistics"
+msgstr ""
+
+#: mod/admin.php:177 mod/admin.php:188 mod/admin.php:1790
 msgid "Logs"
 msgstr ""
 
-#: mod/admin.php:148
+#: mod/admin.php:178 mod/admin.php:1857
+msgid "View Logs"
+msgstr ""
+
+#: mod/admin.php:179
 msgid "probe address"
 msgstr ""
 
-#: mod/admin.php:149
+#: mod/admin.php:180
 msgid "check webfinger"
 msgstr ""
 
-#: mod/admin.php:154 include/nav.php:194
+#: mod/admin.php:186 include/nav.php:194
 msgid "Admin"
 msgstr ""
 
-#: mod/admin.php:155
+#: mod/admin.php:187
 msgid "Plugin Features"
 msgstr ""
 
-#: mod/admin.php:157
+#: mod/admin.php:189
 msgid "diagnostics"
 msgstr ""
 
-#: mod/admin.php:158
+#: mod/admin.php:190
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
-#: mod/admin.php:222 mod/admin.php:272 mod/admin.php:712 mod/admin.php:1108
-#: mod/admin.php:1212 mod/admin.php:1272 mod/admin.php:1457 mod/admin.php:1508
-#: mod/admin.php:1596
+#: mod/admin.php:345
+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
+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
 msgid "Administration"
 msgstr ""
 
-#: mod/admin.php:225
+#: 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:226
+#: mod/admin.php:386
 msgid "Recipient Name"
 msgstr ""
 
-#: mod/admin.php:227
+#: mod/admin.php:387
 msgid "Recipient Profile"
 msgstr ""
 
-#: mod/admin.php:229
+#: mod/admin.php:389
 msgid "Created"
 msgstr ""
 
-#: mod/admin.php:230
+#: mod/admin.php:390
 msgid "Last Tried"
 msgstr ""
 
-#: mod/admin.php:231
+#: mod/admin.php:391
 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:243 mod/admin.php:1062
+#: mod/admin.php:410 mod/admin.php:1252
 msgid "Normal Account"
 msgstr ""
 
-#: mod/admin.php:244 mod/admin.php:1063
+#: mod/admin.php:411 mod/admin.php:1253
 msgid "Soapbox Account"
 msgstr ""
 
-#: mod/admin.php:245 mod/admin.php:1064
+#: mod/admin.php:412 mod/admin.php:1254
 msgid "Community/Celebrity Account"
 msgstr ""
 
-#: mod/admin.php:246 mod/admin.php:1065
+#: mod/admin.php:413 mod/admin.php:1255
 msgid "Automatic Friend Account"
 msgstr ""
 
-#: mod/admin.php:247
+#: mod/admin.php:414
 msgid "Blog Account"
 msgstr ""
 
-#: mod/admin.php:248
+#: mod/admin.php:415
 msgid "Private Forum"
 msgstr ""
 
-#: mod/admin.php:267
+#: mod/admin.php:434
 msgid "Message queues"
 msgstr ""
 
-#: mod/admin.php:273
+#: mod/admin.php:440
 msgid "Summary"
 msgstr ""
 
-#: mod/admin.php:275
+#: mod/admin.php:442
 msgid "Registered users"
 msgstr ""
 
-#: mod/admin.php:277
+#: mod/admin.php:444
 msgid "Pending registrations"
 msgstr ""
 
-#: mod/admin.php:278
+#: mod/admin.php:445
 msgid "Version"
 msgstr ""
 
-#: mod/admin.php:283
+#: mod/admin.php:450
 msgid "Active plugins"
 msgstr ""
 
-#: mod/admin.php:306
+#: mod/admin.php:473
 msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr ""
 
-#: mod/admin.php:589
+#: mod/admin.php:758
 msgid "RINO2 needs mcrypt php extension to work."
 msgstr ""
 
-#: mod/admin.php:597
+#: mod/admin.php:766
 msgid "Site settings updated."
 msgstr ""
 
-#: mod/admin.php:621 mod/settings.php:903
+#: mod/admin.php:794 mod/settings.php:912
 msgid "No special theme for mobile devices"
 msgstr ""
 
-#: mod/admin.php:640
+#: mod/admin.php:813
 msgid "No community page"
 msgstr ""
 
-#: mod/admin.php:641
+#: mod/admin.php:814
 msgid "Public postings from users of this site"
 msgstr ""
 
-#: mod/admin.php:642
+#: mod/admin.php:815
 msgid "Global community page"
 msgstr ""
 
-#: mod/admin.php:648
+#: mod/admin.php:821
 msgid "At post arrival"
 msgstr ""
 
-#: mod/admin.php:649 include/contact_selectors.php:56
+#: mod/admin.php:822 include/contact_selectors.php:56
 msgid "Frequently"
 msgstr ""
 
-#: mod/admin.php:650 include/contact_selectors.php:57
+#: mod/admin.php:823 include/contact_selectors.php:57
 msgid "Hourly"
 msgstr ""
 
-#: mod/admin.php:651 include/contact_selectors.php:58
+#: mod/admin.php:824 include/contact_selectors.php:58
 msgid "Twice daily"
 msgstr ""
 
-#: mod/admin.php:652 include/contact_selectors.php:59
+#: mod/admin.php:825 include/contact_selectors.php:59
 msgid "Daily"
 msgstr ""
 
-#: mod/admin.php:658
+#: mod/admin.php:831
 msgid "Users, Global Contacts"
 msgstr ""
 
-#: mod/admin.php:659
+#: mod/admin.php:832
 msgid "Users, Global Contacts/fallback"
 msgstr ""
 
-#: mod/admin.php:663
+#: mod/admin.php:836
 msgid "One month"
 msgstr ""
 
-#: mod/admin.php:664
+#: mod/admin.php:837
 msgid "Three months"
 msgstr ""
 
-#: mod/admin.php:665
+#: mod/admin.php:838
 msgid "Half a year"
 msgstr ""
 
-#: mod/admin.php:666
+#: mod/admin.php:839
 msgid "One year"
 msgstr ""
 
-#: mod/admin.php:671
+#: mod/admin.php:844
 msgid "Multi user instance"
 msgstr ""
 
-#: mod/admin.php:694
+#: mod/admin.php:867
 msgid "Closed"
 msgstr ""
 
-#: mod/admin.php:695
+#: mod/admin.php:868
 msgid "Requires approval"
 msgstr ""
 
-#: mod/admin.php:696
+#: mod/admin.php:869
 msgid "Open"
 msgstr ""
 
-#: mod/admin.php:700
+#: mod/admin.php:873
 msgid "No SSL policy, links will track page SSL state"
 msgstr ""
 
-#: mod/admin.php:701
+#: mod/admin.php:874
 msgid "Force all links to use SSL"
 msgstr ""
 
-#: mod/admin.php:702
+#: mod/admin.php:875
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr ""
 
-#: mod/admin.php:714 mod/admin.php:1274 mod/admin.php:1510 mod/admin.php:1598
-#: mod/settings.php:650 mod/settings.php:760 mod/settings.php:804
-#: mod/settings.php:873 mod/settings.php:960 mod/settings.php:1195
+#: 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/settings.php:813 mod/settings.php:882 mod/settings.php:969
+#: mod/settings.php:1204
 msgid "Save Settings"
 msgstr ""
 
-#: mod/admin.php:715 mod/register.php:263
+#: mod/admin.php:888 mod/register.php:263
 msgid "Registration"
 msgstr ""
 
-#: mod/admin.php:716
+#: mod/admin.php:889
 msgid "File upload"
 msgstr ""
 
-#: mod/admin.php:717
+#: mod/admin.php:890
 msgid "Policies"
 msgstr ""
 
-#: mod/admin.php:718
+#: mod/admin.php:891
 msgid "Advanced"
 msgstr ""
 
-#: mod/admin.php:719
+#: mod/admin.php:892
 msgid "Auto Discovered Contact Directory"
 msgstr ""
 
-#: mod/admin.php:720
+#: mod/admin.php:893
 msgid "Performance"
 msgstr ""
 
-#: mod/admin.php:721
+#: mod/admin.php:894
 msgid ""
 "Relocate - WARNING: advanced function. Could make this server unreachable."
 msgstr ""
 
-#: mod/admin.php:724
+#: mod/admin.php:897
 msgid "Site name"
 msgstr ""
 
-#: mod/admin.php:725
+#: mod/admin.php:898
 msgid "Host name"
 msgstr ""
 
-#: mod/admin.php:726
+#: mod/admin.php:899
 msgid "Sender Email"
 msgstr ""
 
-#: mod/admin.php:726
+#: mod/admin.php:899
 msgid ""
 "The email address your server shall use to send notification emails from."
 msgstr ""
 
-#: mod/admin.php:727
+#: mod/admin.php:900
 msgid "Banner/Logo"
 msgstr ""
 
-#: mod/admin.php:728
+#: mod/admin.php:901
 msgid "Shortcut icon"
 msgstr ""
 
-#: mod/admin.php:728
+#: mod/admin.php:901
 msgid "Link to an icon that will be used for browsers."
 msgstr ""
 
-#: mod/admin.php:729
+#: mod/admin.php:902
 msgid "Touch icon"
 msgstr ""
 
-#: mod/admin.php:729
+#: mod/admin.php:902
 msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr ""
 
-#: mod/admin.php:730
+#: mod/admin.php:903
 msgid "Additional Info"
 msgstr ""
 
-#: mod/admin.php:730
+#: mod/admin.php:903
 #, php-format
 msgid ""
 "For public servers: you can add additional information here that will be "
 "listed at %s/siteinfo."
 msgstr ""
 
-#: mod/admin.php:731
+#: mod/admin.php:904
 msgid "System language"
 msgstr ""
 
-#: mod/admin.php:732
+#: mod/admin.php:905
 msgid "System theme"
 msgstr ""
 
-#: mod/admin.php:732
+#: mod/admin.php:905
 msgid ""
 "Default system theme - may be over-ridden by user profiles - <a href='#' "
 "id='cnftheme'>change theme settings</a>"
 msgstr ""
 
-#: mod/admin.php:733
+#: mod/admin.php:906
 msgid "Mobile system theme"
 msgstr ""
 
-#: mod/admin.php:733
+#: mod/admin.php:906
 msgid "Theme for mobile devices"
 msgstr ""
 
-#: mod/admin.php:734
+#: mod/admin.php:907
 msgid "SSL link policy"
 msgstr ""
 
-#: mod/admin.php:734
+#: mod/admin.php:907
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr ""
 
-#: mod/admin.php:735
+#: mod/admin.php:908
 msgid "Force SSL"
 msgstr ""
 
-#: mod/admin.php:735
+#: mod/admin.php:908
 msgid ""
 "Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
 "to endless loops."
 msgstr ""
 
-#: mod/admin.php:736
+#: mod/admin.php:909
 msgid "Old style 'Share'"
 msgstr ""
 
-#: mod/admin.php:736
+#: mod/admin.php:909
 msgid "Deactivates the bbcode element 'share' for repeating items."
 msgstr ""
 
-#: mod/admin.php:737
+#: mod/admin.php:910
 msgid "Hide help entry from navigation menu"
 msgstr ""
 
-#: mod/admin.php:737
+#: mod/admin.php:910
 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:738
+#: mod/admin.php:911
 msgid "Single user instance"
 msgstr ""
 
-#: mod/admin.php:738
+#: mod/admin.php:911
 msgid "Make this instance multi-user or single-user for the named user"
 msgstr ""
 
-#: mod/admin.php:739
+#: mod/admin.php:912
 msgid "Maximum image size"
 msgstr ""
 
-#: mod/admin.php:739
+#: mod/admin.php:912
 msgid ""
 "Maximum size in bytes of uploaded images. Default is 0, which means no "
 "limits."
 msgstr ""
 
-#: mod/admin.php:740
+#: mod/admin.php:913
 msgid "Maximum image length"
 msgstr ""
 
-#: mod/admin.php:740
+#: mod/admin.php:913
 msgid ""
 "Maximum length in pixels of the longest side of uploaded images. Default is "
 "-1, which means no limits."
 msgstr ""
 
-#: mod/admin.php:741
+#: mod/admin.php:914
 msgid "JPEG image quality"
 msgstr ""
 
-#: mod/admin.php:741
+#: mod/admin.php:914
 msgid ""
 "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
 "100, which is full quality."
 msgstr ""
 
-#: mod/admin.php:743
+#: mod/admin.php:916
 msgid "Register policy"
 msgstr ""
 
-#: mod/admin.php:744
+#: mod/admin.php:917
 msgid "Maximum Daily Registrations"
 msgstr ""
 
-#: mod/admin.php:744
+#: mod/admin.php:917
 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:745
+#: mod/admin.php:918
 msgid "Register text"
 msgstr ""
 
-#: mod/admin.php:745
+#: mod/admin.php:918
 msgid "Will be displayed prominently on the registration page."
 msgstr ""
 
-#: mod/admin.php:746
+#: mod/admin.php:919
 msgid "Accounts abandoned after x days"
 msgstr ""
 
-#: mod/admin.php:746
+#: mod/admin.php:919
 msgid ""
 "Will not waste system resources polling external sites for abandonded "
 "accounts. Enter 0 for no time limit."
 msgstr ""
 
-#: mod/admin.php:747
+#: mod/admin.php:920
 msgid "Allowed friend domains"
 msgstr ""
 
-#: mod/admin.php:747
+#: mod/admin.php:920
 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:748
+#: mod/admin.php:921
 msgid "Allowed email domains"
 msgstr ""
 
-#: mod/admin.php:748
+#: mod/admin.php:921
 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:749
+#: mod/admin.php:922
 msgid "Block public"
 msgstr ""
 
-#: mod/admin.php:749
+#: mod/admin.php:922
 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:750
+#: mod/admin.php:923
 msgid "Force publish"
 msgstr ""
 
-#: mod/admin.php:750
+#: mod/admin.php:923
 msgid ""
 "Check to force all profiles on this site to be listed in the site directory."
 msgstr ""
 
-#: mod/admin.php:751
+#: mod/admin.php:924
 msgid "Global directory URL"
 msgstr ""
 
-#: mod/admin.php:751
+#: mod/admin.php:924
 msgid ""
 "URL to the global directory. If this is not set, the global directory is "
 "completely unavailable to the application."
 msgstr ""
 
-#: mod/admin.php:752
+#: mod/admin.php:925
 msgid "Allow threaded items"
 msgstr ""
 
-#: mod/admin.php:752
+#: mod/admin.php:925
 msgid "Allow infinite level threading for items on this site."
 msgstr ""
 
-#: mod/admin.php:753
+#: mod/admin.php:926
 msgid "Private posts by default for new users"
 msgstr ""
 
-#: mod/admin.php:753
+#: mod/admin.php:926
 msgid ""
 "Set default post permissions for all new members to the default privacy "
 "group rather than public."
 msgstr ""
 
-#: mod/admin.php:754
+#: mod/admin.php:927
 msgid "Don't include post content in email notifications"
 msgstr ""
 
-#: mod/admin.php:754
+#: mod/admin.php:927
 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:755
+#: mod/admin.php:928
 msgid "Disallow public access to addons listed in the apps menu."
 msgstr ""
 
-#: mod/admin.php:755
+#: mod/admin.php:928
 msgid ""
 "Checking this box will restrict addons listed in the apps menu to members "
 "only."
 msgstr ""
 
-#: mod/admin.php:756
+#: mod/admin.php:929
 msgid "Don't embed private images in posts"
 msgstr ""
 
-#: mod/admin.php:756
+#: mod/admin.php:929
 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:757
+#: mod/admin.php:930
 msgid "Allow Users to set remote_self"
 msgstr ""
 
-#: mod/admin.php:757
+#: mod/admin.php:930
 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:758
+#: mod/admin.php:931
 msgid "Block multiple registrations"
 msgstr ""
 
-#: mod/admin.php:758
+#: mod/admin.php:931
 msgid "Disallow users to register additional accounts for use as pages."
 msgstr ""
 
-#: mod/admin.php:759
+#: mod/admin.php:932
 msgid "OpenID support"
 msgstr ""
 
-#: mod/admin.php:759
+#: mod/admin.php:932
 msgid "OpenID support for registration and logins."
 msgstr ""
 
-#: mod/admin.php:760
+#: mod/admin.php:933
 msgid "Fullname check"
 msgstr ""
 
-#: mod/admin.php:760
+#: mod/admin.php:933
 msgid ""
 "Force users to register with a space between firstname and lastname in Full "
 "name, as an antispam measure"
 msgstr ""
 
-#: mod/admin.php:761
+#: mod/admin.php:934
 msgid "UTF-8 Regular expressions"
 msgstr ""
 
-#: mod/admin.php:761
+#: mod/admin.php:934
 msgid "Use PHP UTF8 regular expressions"
 msgstr ""
 
-#: mod/admin.php:762
+#: mod/admin.php:935
 msgid "Community Page Style"
 msgstr ""
 
-#: mod/admin.php:762
+#: mod/admin.php:935
 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:763
+#: mod/admin.php:936
 msgid "Posts per user on community page"
 msgstr ""
 
-#: mod/admin.php:763
+#: mod/admin.php:936
 msgid ""
 "The maximum number of posts per user on the community page. (Not valid for "
 "'Global Community')"
 msgstr ""
 
-#: mod/admin.php:764
+#: mod/admin.php:937
 msgid "Enable OStatus support"
 msgstr ""
 
-#: mod/admin.php:764
+#: mod/admin.php:937
 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:765
+#: mod/admin.php:938
 msgid "OStatus conversation completion interval"
 msgstr ""
 
-#: mod/admin.php:765
+#: mod/admin.php:938
 msgid ""
 "How often shall the poller check for new entries in OStatus conversations? "
 "This can be a very ressource task."
 msgstr ""
 
-#: mod/admin.php:766
+#: mod/admin.php:939
 msgid "OStatus support can only be enabled if threading is enabled."
 msgstr ""
 
-#: mod/admin.php:768
+#: mod/admin.php:941
 msgid ""
 "Diaspora support can't be enabled because Friendica was installed into a sub "
 "directory."
 msgstr ""
 
-#: mod/admin.php:769
+#: mod/admin.php:942
 msgid "Enable Diaspora support"
 msgstr ""
 
-#: mod/admin.php:769
+#: mod/admin.php:942
 msgid "Provide built-in Diaspora network compatibility."
 msgstr ""
 
-#: mod/admin.php:770
+#: mod/admin.php:943
 msgid "Only allow Friendica contacts"
 msgstr ""
 
-#: mod/admin.php:770
+#: mod/admin.php:943
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
 msgstr ""
 
-#: mod/admin.php:771
+#: mod/admin.php:944
 msgid "Verify SSL"
 msgstr ""
 
-#: mod/admin.php:771
+#: mod/admin.php:944
 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:772
+#: mod/admin.php:945
 msgid "Proxy user"
 msgstr ""
 
-#: mod/admin.php:773
+#: mod/admin.php:946
 msgid "Proxy URL"
 msgstr ""
 
-#: mod/admin.php:774
+#: mod/admin.php:947
 msgid "Network timeout"
 msgstr ""
 
-#: mod/admin.php:774
+#: mod/admin.php:947
 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr ""
 
-#: mod/admin.php:775
+#: mod/admin.php:948
 msgid "Delivery interval"
 msgstr ""
 
-#: mod/admin.php:775
+#: mod/admin.php:948
 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:776
+#: mod/admin.php:949
 msgid "Poll interval"
 msgstr ""
 
-#: mod/admin.php:776
+#: mod/admin.php:949
 msgid ""
 "Delay background polling processes by this many seconds to reduce system "
 "load. If 0, use delivery interval."
 msgstr ""
 
-#: mod/admin.php:777
+#: mod/admin.php:950
 msgid "Maximum Load Average"
 msgstr ""
 
-#: mod/admin.php:777
+#: mod/admin.php:950
 msgid ""
 "Maximum system load before delivery and poll processes are deferred - "
 "default 50."
 msgstr ""
 
-#: mod/admin.php:778
+#: mod/admin.php:951
 msgid "Maximum Load Average (Frontend)"
 msgstr ""
 
-#: mod/admin.php:778
+#: mod/admin.php:951
 msgid "Maximum system load before the frontend quits service - default 50."
 msgstr ""
 
-#: mod/admin.php:779
+#: mod/admin.php:952
 msgid "Maximum table size for optimization"
 msgstr ""
 
-#: mod/admin.php:779
+#: mod/admin.php:952
 msgid ""
 "Maximum table size (in MB) for the automatic optimization - default 100 MB. "
 "Enter -1 to disable it."
 msgstr ""
 
-#: mod/admin.php:780
+#: mod/admin.php:953
 msgid "Minimum level of fragmentation"
 msgstr ""
 
-#: mod/admin.php:780
+#: mod/admin.php:953
 msgid ""
 "Minimum fragmenation level to start the automatic optimization - default "
 "value is 30%."
 msgstr ""
 
-#: mod/admin.php:782
+#: mod/admin.php:955
 msgid "Periodical check of global contacts"
 msgstr ""
 
-#: mod/admin.php:782
+#: mod/admin.php:955
 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:783
+#: mod/admin.php:956
 msgid "Days between requery"
 msgstr ""
 
-#: mod/admin.php:783
+#: mod/admin.php:956
 msgid "Number of days after which a server is requeried for his contacts."
 msgstr ""
 
-#: mod/admin.php:784
+#: mod/admin.php:957
 msgid "Discover contacts from other servers"
 msgstr ""
 
-#: mod/admin.php:784
+#: mod/admin.php:957
 msgid ""
 "Periodically query other servers for contacts. You can choose between "
 "'users': the users on the remote system, 'Global Contacts': active contacts "
@@ -2723,32 +2707,32 @@ msgid ""
 "Global Contacts'."
 msgstr ""
 
-#: mod/admin.php:785
+#: mod/admin.php:958
 msgid "Timeframe for fetching global contacts"
 msgstr ""
 
-#: mod/admin.php:785
+#: mod/admin.php:958
 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:786
+#: mod/admin.php:959
 msgid "Search the local directory"
 msgstr ""
 
-#: mod/admin.php:786
+#: mod/admin.php:959
 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:788
+#: mod/admin.php:961
 msgid "Publish server information"
 msgstr ""
 
-#: mod/admin.php:788
+#: mod/admin.php:961
 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 "
@@ -2756,204 +2740,204 @@ msgid ""
 "href='http://the-federation.info/'>the-federation.info</a> for details."
 msgstr ""
 
-#: mod/admin.php:790
+#: mod/admin.php:963
 msgid "Use MySQL full text engine"
 msgstr ""
 
-#: mod/admin.php:790
+#: mod/admin.php:963
 msgid ""
 "Activates the full text engine. Speeds up search - but can only search for "
 "four and more characters."
 msgstr ""
 
-#: mod/admin.php:791
+#: mod/admin.php:964
 msgid "Suppress Language"
 msgstr ""
 
-#: mod/admin.php:791
+#: mod/admin.php:964
 msgid "Suppress language information in meta information about a posting."
 msgstr ""
 
-#: mod/admin.php:792
+#: mod/admin.php:965
 msgid "Suppress Tags"
 msgstr ""
 
-#: mod/admin.php:792
+#: mod/admin.php:965
 msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr ""
 
-#: mod/admin.php:793
+#: mod/admin.php:966
 msgid "Path to item cache"
 msgstr ""
 
-#: mod/admin.php:793
+#: mod/admin.php:966
 msgid "The item caches buffers generated bbcode and external images."
 msgstr ""
 
-#: mod/admin.php:794
+#: mod/admin.php:967
 msgid "Cache duration in seconds"
 msgstr ""
 
-#: mod/admin.php:794
+#: mod/admin.php:967
 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:795
+#: mod/admin.php:968
 msgid "Maximum numbers of comments per post"
 msgstr ""
 
-#: mod/admin.php:795
+#: mod/admin.php:968
 msgid "How much comments should be shown for each post? Default value is 100."
 msgstr ""
 
-#: mod/admin.php:796
+#: mod/admin.php:969
 msgid "Path for lock file"
 msgstr ""
 
-#: mod/admin.php:796
+#: mod/admin.php:969
 msgid ""
 "The lock file is used to avoid multiple pollers at one time. Only define a "
 "folder here."
 msgstr ""
 
-#: mod/admin.php:797
+#: mod/admin.php:970
 msgid "Temp path"
 msgstr ""
 
-#: mod/admin.php:797
+#: mod/admin.php:970
 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:798
+#: mod/admin.php:971
 msgid "Base path to installation"
 msgstr ""
 
-#: mod/admin.php:798
+#: mod/admin.php:971
 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:799
+#: mod/admin.php:972
 msgid "Disable picture proxy"
 msgstr ""
 
-#: mod/admin.php:799
+#: mod/admin.php:972
 msgid ""
 "The picture proxy increases performance and privacy. It shouldn't be used on "
 "systems with very low bandwith."
 msgstr ""
 
-#: mod/admin.php:800
+#: mod/admin.php:973
 msgid "Enable old style pager"
 msgstr ""
 
-#: mod/admin.php:800
+#: mod/admin.php:973
 msgid ""
 "The old style pager has page numbers but slows down massively the page speed."
 msgstr ""
 
-#: mod/admin.php:801
+#: mod/admin.php:974
 msgid "Only search in tags"
 msgstr ""
 
-#: mod/admin.php:801
+#: mod/admin.php:974
 msgid "On large systems the text search can slow down the system extremely."
 msgstr ""
 
-#: mod/admin.php:803
+#: mod/admin.php:976
 msgid "New base url"
 msgstr ""
 
-#: mod/admin.php:803
+#: mod/admin.php:976
 msgid ""
 "Change base url for this server. Sends relocate message to all DFRN contacts "
 "of all users."
 msgstr ""
 
-#: mod/admin.php:805
+#: mod/admin.php:978
 msgid "RINO Encryption"
 msgstr ""
 
-#: mod/admin.php:805
+#: mod/admin.php:978
 msgid "Encryption layer between nodes."
 msgstr ""
 
-#: mod/admin.php:806
+#: mod/admin.php:979
 msgid "Embedly API key"
 msgstr ""
 
-#: mod/admin.php:806
+#: mod/admin.php:979
 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:824
+#: mod/admin.php:1008
 msgid "Update has been marked successful"
 msgstr ""
 
-#: mod/admin.php:832
+#: mod/admin.php:1016
 #, php-format
 msgid "Database structure update %s was successfully applied."
 msgstr ""
 
-#: mod/admin.php:835
+#: mod/admin.php:1019
 #, php-format
 msgid "Executing of database structure update %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:847
+#: mod/admin.php:1031
 #, php-format
 msgid "Executing %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:850
+#: mod/admin.php:1034
 #, php-format
 msgid "Update %s was successfully applied."
 msgstr ""
 
-#: mod/admin.php:854
+#: mod/admin.php:1038
 #, php-format
 msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr ""
 
-#: mod/admin.php:856
+#: mod/admin.php:1040
 #, php-format
 msgid "There was no additional update function %s that needed to be called."
 msgstr ""
 
-#: mod/admin.php:875
+#: mod/admin.php:1059
 msgid "No failed updates."
 msgstr ""
 
-#: mod/admin.php:876
+#: mod/admin.php:1060
 msgid "Check database structure"
 msgstr ""
 
-#: mod/admin.php:881
+#: mod/admin.php:1065
 msgid "Failed Updates"
 msgstr ""
 
-#: mod/admin.php:882
+#: mod/admin.php:1066
 msgid ""
 "This does not include updates prior to 1139, which did not return a status."
 msgstr ""
 
-#: mod/admin.php:883
+#: mod/admin.php:1067
 msgid "Mark success (if update was manually applied)"
 msgstr ""
 
-#: mod/admin.php:884
+#: mod/admin.php:1068
 msgid "Attempt to execute this update step automatically"
 msgstr ""
 
-#: mod/admin.php:916
+#: mod/admin.php:1100
 #, php-format
 msgid ""
 "\n"
@@ -2961,7 +2945,7 @@ msgid ""
 "\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/admin.php:919
+#: mod/admin.php:1103
 #, php-format
 msgid ""
 "\n"
@@ -2997,232 +2981,254 @@ msgid ""
 "\t\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/admin.php:951 include/user.php:423
+#: mod/admin.php:1135 include/user.php:423
 #, php-format
 msgid "Registration details for %s"
 msgstr ""
 
-#: mod/admin.php:963
+#: mod/admin.php:1147
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/admin.php:970
+#: mod/admin.php:1154
 #, php-format
 msgid "%s user deleted"
 msgid_plural "%s users deleted"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/admin.php:1009
+#: mod/admin.php:1201
 #, php-format
 msgid "User '%s' deleted"
 msgstr ""
 
-#: mod/admin.php:1017
+#: mod/admin.php:1209
 #, php-format
 msgid "User '%s' unblocked"
 msgstr ""
 
-#: mod/admin.php:1017
+#: mod/admin.php:1209
 #, php-format
 msgid "User '%s' blocked"
 msgstr ""
 
-#: mod/admin.php:1110
+#: mod/admin.php:1300
 msgid "Add User"
 msgstr ""
 
-#: mod/admin.php:1111
+#: mod/admin.php:1301
 msgid "select all"
 msgstr ""
 
-#: mod/admin.php:1112
+#: mod/admin.php:1302
 msgid "User registrations waiting for confirm"
 msgstr ""
 
-#: mod/admin.php:1113
+#: mod/admin.php:1303
 msgid "User waiting for permanent deletion"
 msgstr ""
 
-#: mod/admin.php:1114
+#: mod/admin.php:1304
 msgid "Request date"
 msgstr ""
 
-#: mod/admin.php:1114 mod/admin.php:1126 mod/admin.php:1127 mod/admin.php:1142
+#: mod/admin.php:1304 mod/admin.php:1316 mod/admin.php:1317 mod/admin.php:1332
 #: include/contact_selectors.php:79 include/contact_selectors.php:86
 msgid "Email"
 msgstr ""
 
-#: mod/admin.php:1115
+#: mod/admin.php:1305
 msgid "No registrations."
 msgstr ""
 
-#: mod/admin.php:1117
+#: mod/admin.php:1307
 msgid "Deny"
 msgstr ""
 
-#: mod/admin.php:1121
+#: mod/admin.php:1311
 msgid "Site admin"
 msgstr ""
 
-#: mod/admin.php:1122
+#: mod/admin.php:1312
 msgid "Account expired"
 msgstr ""
 
-#: mod/admin.php:1125
+#: mod/admin.php:1315
 msgid "New User"
 msgstr ""
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Register date"
 msgstr ""
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Last login"
 msgstr ""
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Last item"
 msgstr ""
 
-#: mod/admin.php:1126
+#: mod/admin.php:1316
 msgid "Deleted since"
 msgstr ""
 
-#: mod/admin.php:1127 mod/settings.php:41
+#: mod/admin.php:1317 mod/settings.php:41
 msgid "Account"
 msgstr ""
 
-#: mod/admin.php:1129
+#: mod/admin.php:1319
 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:1130
+#: mod/admin.php:1320
 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:1140
+#: mod/admin.php:1330
 msgid "Name of the new user."
 msgstr ""
 
-#: mod/admin.php:1141
+#: mod/admin.php:1331
 msgid "Nickname"
 msgstr ""
 
-#: mod/admin.php:1141
+#: mod/admin.php:1331
 msgid "Nickname of the new user."
 msgstr ""
 
-#: mod/admin.php:1142
+#: mod/admin.php:1332
 msgid "Email address of the new user."
 msgstr ""
 
-#: mod/admin.php:1175
+#: mod/admin.php:1375
 #, php-format
 msgid "Plugin %s disabled."
 msgstr ""
 
-#: mod/admin.php:1179
+#: mod/admin.php:1379
 #, php-format
 msgid "Plugin %s enabled."
 msgstr ""
 
-#: mod/admin.php:1189 mod/admin.php:1413
+#: mod/admin.php:1390 mod/admin.php:1626
 msgid "Disable"
 msgstr ""
 
-#: mod/admin.php:1191 mod/admin.php:1415
+#: mod/admin.php:1392 mod/admin.php:1628
 msgid "Enable"
 msgstr ""
 
-#: mod/admin.php:1214 mod/admin.php:1459
+#: mod/admin.php:1415 mod/admin.php:1673
 msgid "Toggle"
 msgstr ""
 
-#: mod/admin.php:1222 mod/admin.php:1469
+#: mod/admin.php:1423 mod/admin.php:1682
 msgid "Author: "
 msgstr ""
 
-#: mod/admin.php:1223 mod/admin.php:1470
+#: mod/admin.php:1424 mod/admin.php:1683
 msgid "Maintainer: "
 msgstr ""
 
-#: mod/admin.php:1275
-#: view/smarty3/compiled/f835364006028b1061f37be121c9bd9db5fa50a9.file.admin_plugins.tpl.php:42
+#: mod/admin.php:1476
 msgid "Reload active plugins"
 msgstr ""
 
-#: mod/admin.php:1373
+#: mod/admin.php:1481
+#, php-format
+msgid ""
+"There are currently no plugins available on your node. You can find the "
+"official plugin repository at %1$s and might find other interesting plugins "
+"in the open plugin registry at %2$s"
+msgstr ""
+
+#: mod/admin.php:1586
 msgid "No themes found."
 msgstr ""
 
-#: mod/admin.php:1451
+#: mod/admin.php:1664
 msgid "Screenshot"
 msgstr ""
 
-#: mod/admin.php:1511
+#: mod/admin.php:1724
 msgid "Reload active themes"
 msgstr ""
 
-#: mod/admin.php:1515
+#: mod/admin.php:1729
+#, php-format
+msgid "No themes found on the system. They should be paced in %1$s"
+msgstr ""
+
+#: mod/admin.php:1730
 msgid "[Experimental]"
 msgstr ""
 
-#: mod/admin.php:1516
+#: mod/admin.php:1731
 msgid "[Unsupported]"
 msgstr ""
 
-#: mod/admin.php:1543
+#: mod/admin.php:1755
 msgid "Log settings updated."
 msgstr ""
 
-#: mod/admin.php:1599
+#: mod/admin.php:1792
 msgid "Clear"
 msgstr ""
 
-#: mod/admin.php:1605
+#: mod/admin.php:1797
 msgid "Enable Debugging"
 msgstr ""
 
-#: mod/admin.php:1606
+#: mod/admin.php:1798
 msgid "Log file"
 msgstr ""
 
-#: mod/admin.php:1606
+#: mod/admin.php:1798
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr ""
 
-#: mod/admin.php:1607
+#: mod/admin.php:1799
 msgid "Log level"
 msgstr ""
 
-#: mod/admin.php:1657 include/acl_selectors.php:348
-msgid "Close"
+#: mod/admin.php:1802
+msgid "PHP logging"
 msgstr ""
 
-#: mod/admin.php:1663
-msgid "FTP Host"
+#: mod/admin.php:1803
+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 "
+"'error_log' line is relative to the friendica top-level directory and must "
+"be writeable by the web server. The option '1' for 'log_errors' and "
+"'display_errors' is to enable these options, set to '0' to disable them."
 msgstr ""
 
-#: mod/admin.php:1664
-msgid "FTP Path"
+#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+msgid "Off"
 msgstr ""
 
-#: mod/admin.php:1665
-msgid "FTP User"
+#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+msgid "On"
 msgstr ""
 
-#: mod/admin.php:1666
-msgid "FTP Password"
+#: mod/admin.php:1930
+#, php-format
+msgid "Lock feature %s"
+msgstr ""
+
+#: mod/admin.php:1938
+msgid "Manage Additional Features"
 msgstr ""
 
 #: mod/network.php:146
@@ -3234,7 +3240,7 @@ msgstr ""
 msgid "Remove term"
 msgstr ""
 
-#: mod/network.php:200 mod/search.php:34 include/features.php:79
+#: mod/network.php:200 mod/search.php:34 include/features.php:84
 msgid "Saved Searches"
 msgstr ""
 
@@ -3242,51 +3248,51 @@ msgstr ""
 msgid "add"
 msgstr ""
 
-#: mod/network.php:362
+#: mod/network.php:365
 msgid "Commented Order"
 msgstr ""
 
-#: mod/network.php:365
+#: mod/network.php:368
 msgid "Sort by Comment Date"
 msgstr ""
 
-#: mod/network.php:370
+#: mod/network.php:373
 msgid "Posted Order"
 msgstr ""
 
-#: mod/network.php:373
+#: mod/network.php:376
 msgid "Sort by Post Date"
 msgstr ""
 
-#: mod/network.php:384
+#: mod/network.php:387
 msgid "Posts that mention or involve you"
 msgstr ""
 
-#: mod/network.php:392
+#: mod/network.php:395
 msgid "New"
 msgstr ""
 
-#: mod/network.php:395
+#: mod/network.php:398
 msgid "Activity Stream - by date"
 msgstr ""
 
-#: mod/network.php:403
+#: mod/network.php:406
 msgid "Shared Links"
 msgstr ""
 
-#: mod/network.php:406
+#: mod/network.php:409
 msgid "Interesting Links"
 msgstr ""
 
-#: mod/network.php:414
+#: mod/network.php:417
 msgid "Starred"
 msgstr ""
 
-#: mod/network.php:417
+#: mod/network.php:420
 msgid "Favourite Posts"
 msgstr ""
 
-#: mod/network.php:476
+#: mod/network.php:479
 #, php-format
 msgid "Warning: This group contains %s member from an insecure network."
 msgid_plural ""
@@ -3294,24 +3300,24 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/network.php:479
+#: mod/network.php:482
 msgid "Private messages to this group are at risk of public disclosure."
 msgstr ""
 
-#: mod/network.php:546 mod/content.php:119
+#: mod/network.php:549 mod/content.php:119
 msgid "No such group"
 msgstr ""
 
-#: mod/network.php:574 mod/content.php:135
+#: mod/network.php:580 mod/content.php:135
 #, php-format
 msgid "Group: %s"
 msgstr ""
 
-#: mod/network.php:606
+#: mod/network.php:608
 msgid "Private messages to this person are at risk of public disclosure."
 msgstr ""
 
-#: mod/network.php:611
+#: mod/network.php:613
 msgid "Invalid contact."
 msgstr ""
 
@@ -3355,11 +3361,11 @@ msgstr ""
 msgid "Sat"
 msgstr ""
 
-#: mod/events.php:208 mod/settings.php:939 include/text.php:1274
+#: mod/events.php:208 mod/settings.php:948 include/text.php:1274
 msgid "Sunday"
 msgstr ""
 
-#: mod/events.php:209 mod/settings.php:939 include/text.php:1274
+#: mod/events.php:209 mod/settings.php:948 include/text.php:1274
 msgid "Monday"
 msgstr ""
 
@@ -3499,7 +3505,7 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
-#: mod/events.php:421 include/text.php:1721 include/text.php:1728
+#: mod/events.php:421 include/text.php:1728 include/text.php:1735
 msgid "link to source"
 msgstr ""
 
@@ -3562,7 +3568,7 @@ msgstr ""
 
 #: mod/events.php:572 mod/content.php:721 mod/editpost.php:145
 #: mod/photos.php:1631 mod/photos.php:1679 mod/photos.php:1767
-#: object/Item.php:719 include/conversation.php:1217
+#: object/Item.php:719 include/conversation.php:1216
 msgid "Preview"
 msgstr ""
 
@@ -3606,15 +3612,15 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: mod/content.php:607 object/Item.php:421 object/Item.php:434
-#: include/text.php:1997
+#: include/text.php:2004
 msgid "comment"
 msgid_plural "comments"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/content.php:608 boot.php:788 object/Item.php:422
+#: mod/content.php:608 boot.php:870 object/Item.php:422
 #: include/contact_widgets.php:242 include/forums.php:110
-#: include/items.php:5181 view/theme/vier/theme.php:264
+#: include/items.php:5188 view/theme/vier/theme.php:264
 msgid "show more"
 msgstr ""
 
@@ -3652,7 +3658,7 @@ msgid "This is you"
 msgstr ""
 
 #: mod/content.php:711 mod/photos.php:1629 mod/photos.php:1677
-#: mod/photos.php:1765 boot.php:787 object/Item.php:393 object/Item.php:709
+#: mod/photos.php:1765 boot.php:869 object/Item.php:393 object/Item.php:709
 msgid "Comment"
 msgstr ""
 
@@ -3688,7 +3694,7 @@ msgstr ""
 msgid "Video"
 msgstr ""
 
-#: mod/content.php:730 mod/settings.php:712 object/Item.php:122
+#: mod/content.php:730 mod/settings.php:721 object/Item.php:122
 #: object/Item.php:124
 msgid "Edit"
 msgstr ""
@@ -4083,19 +4089,19 @@ msgid ""
 "your site allow private mail from unknown senders."
 msgstr ""
 
-#: mod/help.php:31
+#: mod/help.php:41
 msgid "Help:"
 msgstr ""
 
-#: mod/help.php:36 include/nav.php:113 view/theme/vier/theme.php:302
+#: mod/help.php:47 include/nav.php:113 view/theme/vier/theme.php:302
 msgid "Help"
 msgstr ""
 
-#: mod/help.php:42 mod/p.php:16 mod/p.php:25 index.php:270
+#: mod/help.php:53 mod/p.php:16 mod/p.php:25 index.php:270
 msgid "Not Found"
 msgstr ""
 
-#: mod/help.php:45 index.php:273
+#: mod/help.php:56 index.php:273
 msgid "Page not found."
 msgstr ""
 
@@ -4142,16 +4148,16 @@ msgstr ""
 msgid "link"
 msgstr ""
 
-#: mod/community.php:23
+#: mod/community.php:27
 msgid "Not available."
 msgstr ""
 
-#: mod/community.php:32 include/nav.php:136 include/nav.php:138
+#: mod/community.php:36 include/nav.php:136 include/nav.php:138
 #: view/theme/diabook/theme.php:129
 msgid "Community"
 msgstr ""
 
-#: mod/community.php:62 mod/community.php:71 mod/search.php:228
+#: mod/community.php:66 mod/community.php:75 mod/search.php:228
 msgid "No results."
 msgstr ""
 
@@ -4159,846 +4165,836 @@ msgstr ""
 msgid "everybody"
 msgstr ""
 
-#: mod/settings.php:47
-msgid "Additional features"
-msgstr ""
-
-#: mod/settings.php:53
+#: mod/settings.php:58
 msgid "Display"
 msgstr ""
 
-#: mod/settings.php:60 mod/settings.php:855
+#: mod/settings.php:65 mod/settings.php:864
 msgid "Social Networks"
 msgstr ""
 
-#: mod/settings.php:72 include/nav.php:180
+#: mod/settings.php:79 include/nav.php:180
 msgid "Delegations"
 msgstr ""
 
-#: mod/settings.php:78
+#: mod/settings.php:86
 msgid "Connected apps"
 msgstr ""
 
-#: mod/settings.php:84 mod/uexport.php:85
+#: mod/settings.php:93 mod/uexport.php:85
 msgid "Export personal data"
 msgstr ""
 
-#: mod/settings.php:90
+#: mod/settings.php:100
 msgid "Remove account"
 msgstr ""
 
-#: mod/settings.php:143
+#: mod/settings.php:153
 msgid "Missing some important data!"
 msgstr ""
 
-#: mod/settings.php:256
+#: mod/settings.php:266
 msgid "Failed to connect with email account using the settings provided."
 msgstr ""
 
-#: mod/settings.php:261
+#: mod/settings.php:271
 msgid "Email settings updated."
 msgstr ""
 
-#: mod/settings.php:276
+#: mod/settings.php:286
 msgid "Features updated"
 msgstr ""
 
-#: mod/settings.php:343
+#: mod/settings.php:353
 msgid "Relocate message has been send to your contacts"
 msgstr ""
 
-#: mod/settings.php:357 include/user.php:39
+#: mod/settings.php:367 include/user.php:39
 msgid "Passwords do not match. Password unchanged."
 msgstr ""
 
-#: mod/settings.php:362
+#: mod/settings.php:372
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr ""
 
-#: mod/settings.php:370
+#: mod/settings.php:380
 msgid "Wrong password."
 msgstr ""
 
-#: mod/settings.php:381
+#: mod/settings.php:391
 msgid "Password changed."
 msgstr ""
 
-#: mod/settings.php:383
+#: mod/settings.php:393
 msgid "Password update failed. Please try again."
 msgstr ""
 
-#: mod/settings.php:452
+#: mod/settings.php:462
 msgid " Please use a shorter name."
 msgstr ""
 
-#: mod/settings.php:454
+#: mod/settings.php:464
 msgid " Name too short."
 msgstr ""
 
-#: mod/settings.php:463
+#: mod/settings.php:473
 msgid "Wrong Password"
 msgstr ""
 
-#: mod/settings.php:468
+#: mod/settings.php:478
 msgid " Not valid email."
 msgstr ""
 
-#: mod/settings.php:474
+#: mod/settings.php:484
 msgid " Cannot change to that email."
 msgstr ""
 
-#: mod/settings.php:530
+#: mod/settings.php:540
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr ""
 
-#: mod/settings.php:534
+#: mod/settings.php:544
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr ""
 
-#: mod/settings.php:573
+#: mod/settings.php:583
 msgid "Settings updated."
 msgstr ""
 
-#: mod/settings.php:649 mod/settings.php:675 mod/settings.php:711
+#: mod/settings.php:658 mod/settings.php:684 mod/settings.php:720
 msgid "Add application"
 msgstr ""
 
-#: mod/settings.php:653 mod/settings.php:679
+#: mod/settings.php:662 mod/settings.php:688
 msgid "Consumer Key"
 msgstr ""
 
-#: mod/settings.php:654 mod/settings.php:680
+#: mod/settings.php:663 mod/settings.php:689
 msgid "Consumer Secret"
 msgstr ""
 
-#: mod/settings.php:655 mod/settings.php:681
+#: mod/settings.php:664 mod/settings.php:690
 msgid "Redirect"
 msgstr ""
 
-#: mod/settings.php:656 mod/settings.php:682
+#: mod/settings.php:665 mod/settings.php:691
 msgid "Icon url"
 msgstr ""
 
-#: mod/settings.php:667
+#: mod/settings.php:676
 msgid "You can't edit this application."
 msgstr ""
 
-#: mod/settings.php:710
+#: mod/settings.php:719
 msgid "Connected Apps"
 msgstr ""
 
-#: mod/settings.php:714
+#: mod/settings.php:723
 msgid "Client key starts with"
 msgstr ""
 
-#: mod/settings.php:715
+#: mod/settings.php:724
 msgid "No name"
 msgstr ""
 
-#: mod/settings.php:716
+#: mod/settings.php:725
 msgid "Remove authorization"
 msgstr ""
 
-#: mod/settings.php:728
+#: mod/settings.php:737
 msgid "No Plugin settings configured"
 msgstr ""
 
-#: mod/settings.php:736
+#: mod/settings.php:745
 msgid "Plugin Settings"
 msgstr ""
 
-#: mod/settings.php:750
-msgid "Off"
-msgstr ""
-
-#: mod/settings.php:750
-msgid "On"
-msgstr ""
-
-#: mod/settings.php:758
+#: mod/settings.php:767
 msgid "Additional Features"
 msgstr ""
 
-#: mod/settings.php:768 mod/settings.php:772
+#: mod/settings.php:777 mod/settings.php:781
 msgid "General Social Media Settings"
 msgstr ""
 
-#: mod/settings.php:778
+#: mod/settings.php:787
 msgid "Disable intelligent shortening"
 msgstr ""
 
-#: mod/settings.php:780
+#: mod/settings.php:789
 msgid ""
 "Normally the system tries to find the best link to add to shortened posts. "
 "If this option is enabled then every shortened post will always point to the "
 "original friendica post."
 msgstr ""
 
-#: mod/settings.php:786
+#: mod/settings.php:795
 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
 msgstr ""
 
-#: mod/settings.php:788
+#: mod/settings.php:797
 msgid ""
 "If you receive a message from an unknown OStatus user, this option decides "
 "what to do. If it is checked, a new contact will be created for every "
 "unknown user."
 msgstr ""
 
-#: mod/settings.php:797
+#: mod/settings.php:806
 msgid "Your legacy GNU Social account"
 msgstr ""
 
-#: mod/settings.php:799
+#: mod/settings.php:808
 msgid ""
 "If you enter your old GNU Social/Statusnet account name here (in the format "
 "user@domain.tld), your contacts will be added automatically. The field will "
 "be emptied when done."
 msgstr ""
 
-#: mod/settings.php:802
+#: mod/settings.php:811
 msgid "Repair OStatus subscriptions"
 msgstr ""
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr ""
 
-#: mod/settings.php:811 mod/dfrn_request.php:858
+#: mod/settings.php:820 mod/dfrn_request.php:865
 #: include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr ""
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 msgid "enabled"
 msgstr ""
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 msgid "disabled"
 msgstr ""
 
-#: mod/settings.php:812
+#: mod/settings.php:821
 msgid "GNU Social (OStatus)"
 msgstr ""
 
-#: mod/settings.php:848
+#: mod/settings.php:857
 msgid "Email access is disabled on this site."
 msgstr ""
 
-#: mod/settings.php:860
+#: mod/settings.php:869
 msgid "Email/Mailbox Setup"
 msgstr ""
 
-#: mod/settings.php:861
+#: mod/settings.php:870
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr ""
 
-#: mod/settings.php:862
+#: mod/settings.php:871
 msgid "Last successful email check:"
 msgstr ""
 
-#: mod/settings.php:864
+#: mod/settings.php:873
 msgid "IMAP server name:"
 msgstr ""
 
-#: mod/settings.php:865
+#: mod/settings.php:874
 msgid "IMAP port:"
 msgstr ""
 
-#: mod/settings.php:866
+#: mod/settings.php:875
 msgid "Security:"
 msgstr ""
 
-#: mod/settings.php:866 mod/settings.php:871
+#: mod/settings.php:875 mod/settings.php:880
 msgid "None"
 msgstr ""
 
-#: mod/settings.php:867
+#: mod/settings.php:876
 msgid "Email login name:"
 msgstr ""
 
-#: mod/settings.php:868
+#: mod/settings.php:877
 msgid "Email password:"
 msgstr ""
 
-#: mod/settings.php:869
+#: mod/settings.php:878
 msgid "Reply-to address:"
 msgstr ""
 
-#: mod/settings.php:870
+#: mod/settings.php:879
 msgid "Send public posts to all email contacts:"
 msgstr ""
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Action after import:"
 msgstr ""
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Mark as seen"
 msgstr ""
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Move to folder"
 msgstr ""
 
-#: mod/settings.php:872
+#: mod/settings.php:881
 msgid "Move to folder:"
 msgstr ""
 
-#: mod/settings.php:958
+#: mod/settings.php:967
 msgid "Display Settings"
 msgstr ""
 
-#: mod/settings.php:964 mod/settings.php:982
+#: mod/settings.php:973 mod/settings.php:991
 msgid "Display Theme:"
 msgstr ""
 
-#: mod/settings.php:965
+#: mod/settings.php:974
 msgid "Mobile Theme:"
 msgstr ""
 
-#: mod/settings.php:966
+#: mod/settings.php:975
 msgid "Update browser every xx seconds"
 msgstr ""
 
-#: mod/settings.php:966
+#: mod/settings.php:975
 msgid "Minimum of 10 seconds. Enter -1 to disable it."
 msgstr ""
 
-#: mod/settings.php:967
+#: mod/settings.php:976
 msgid "Number of items to display per page:"
 msgstr ""
 
-#: mod/settings.php:967 mod/settings.php:968
+#: mod/settings.php:976 mod/settings.php:977
 msgid "Maximum of 100 items"
 msgstr ""
 
-#: mod/settings.php:968
+#: mod/settings.php:977
 msgid "Number of items to display per page when viewed from mobile device:"
 msgstr ""
 
-#: mod/settings.php:969
+#: mod/settings.php:978
 msgid "Don't show emoticons"
 msgstr ""
 
-#: mod/settings.php:970
+#: mod/settings.php:979
 msgid "Calendar"
 msgstr ""
 
-#: mod/settings.php:971
+#: mod/settings.php:980
 msgid "Beginning of week:"
 msgstr ""
 
-#: mod/settings.php:972
+#: mod/settings.php:981
 msgid "Don't show notices"
 msgstr ""
 
-#: mod/settings.php:973
+#: mod/settings.php:982
 msgid "Infinite scroll"
 msgstr ""
 
-#: mod/settings.php:974
+#: mod/settings.php:983
 msgid "Automatic updates only at the top of the network page"
 msgstr ""
 
-#: mod/settings.php:976 view/theme/cleanzero/config.php:82
+#: mod/settings.php:985 view/theme/cleanzero/config.php:82
 #: view/theme/dispy/config.php:72 view/theme/quattro/config.php:66
-#: view/theme/diabook/config.php:150 view/theme/clean/config.php:85
-#: view/theme/vier/config.php:109 view/theme/duepuntozero/config.php:61
+#: view/theme/diabook/config.php:150 view/theme/vier/config.php:109
+#: view/theme/duepuntozero/config.php:61
 msgid "Theme settings"
 msgstr ""
 
-#: mod/settings.php:1053
+#: mod/settings.php:1062
 msgid "User Types"
 msgstr ""
 
-#: mod/settings.php:1054
+#: mod/settings.php:1063
 msgid "Community Types"
 msgstr ""
 
-#: mod/settings.php:1055
+#: mod/settings.php:1064
 msgid "Normal Account Page"
 msgstr ""
 
-#: mod/settings.php:1056
+#: mod/settings.php:1065
 msgid "This account is a normal personal profile"
 msgstr ""
 
-#: mod/settings.php:1059
+#: mod/settings.php:1068
 msgid "Soapbox Page"
 msgstr ""
 
-#: mod/settings.php:1060
+#: mod/settings.php:1069
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr ""
 
-#: mod/settings.php:1063
+#: mod/settings.php:1072
 msgid "Community Forum/Celebrity Account"
 msgstr ""
 
-#: mod/settings.php:1064
+#: mod/settings.php:1073
 msgid "Automatically approve all connection/friend requests as read-write fans"
 msgstr ""
 
-#: mod/settings.php:1067
+#: mod/settings.php:1076
 msgid "Automatic Friend Page"
 msgstr ""
 
-#: mod/settings.php:1068
+#: mod/settings.php:1077
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr ""
 
-#: mod/settings.php:1071
+#: mod/settings.php:1080
 msgid "Private Forum [Experimental]"
 msgstr ""
 
-#: mod/settings.php:1072
+#: mod/settings.php:1081
 msgid "Private forum - approved members only"
 msgstr ""
 
-#: mod/settings.php:1084
+#: mod/settings.php:1093
 msgid "OpenID:"
 msgstr ""
 
-#: mod/settings.php:1084
+#: mod/settings.php:1093
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr ""
 
-#: mod/settings.php:1094
+#: mod/settings.php:1103
 msgid "Publish your default profile in your local site directory?"
 msgstr ""
 
-#: mod/settings.php:1100
+#: mod/settings.php:1109
 msgid "Publish your default profile in the global social directory?"
 msgstr ""
 
-#: mod/settings.php:1108
+#: mod/settings.php:1117
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr ""
 
-#: mod/settings.php:1112 include/acl_selectors.php:331
+#: mod/settings.php:1121 include/acl_selectors.php:331
 msgid "Hide your profile details from unknown viewers?"
 msgstr ""
 
-#: mod/settings.php:1112
+#: mod/settings.php:1121
 msgid ""
 "If enabled, posting public messages to Diaspora and other networks isn't "
 "possible."
 msgstr ""
 
-#: mod/settings.php:1117
+#: mod/settings.php:1126
 msgid "Allow friends to post to your profile page?"
 msgstr ""
 
-#: mod/settings.php:1123
+#: mod/settings.php:1132
 msgid "Allow friends to tag your posts?"
 msgstr ""
 
-#: mod/settings.php:1129
+#: mod/settings.php:1138
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr ""
 
-#: mod/settings.php:1135
+#: mod/settings.php:1144
 msgid "Permit unknown people to send you private mail?"
 msgstr ""
 
-#: mod/settings.php:1143
+#: mod/settings.php:1152
 msgid "Profile is <strong>not published</strong>."
 msgstr ""
 
-#: mod/settings.php:1151
+#: mod/settings.php:1160
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr ""
 
-#: mod/settings.php:1158
+#: mod/settings.php:1167
 msgid "Automatically expire posts after this many days:"
 msgstr ""
 
-#: mod/settings.php:1158
+#: mod/settings.php:1167
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr ""
 
-#: mod/settings.php:1159
+#: mod/settings.php:1168
 msgid "Advanced expiration settings"
 msgstr ""
 
-#: mod/settings.php:1160
+#: mod/settings.php:1169
 msgid "Advanced Expiration"
 msgstr ""
 
-#: mod/settings.php:1161
+#: mod/settings.php:1170
 msgid "Expire posts:"
 msgstr ""
 
-#: mod/settings.php:1162
+#: mod/settings.php:1171
 msgid "Expire personal notes:"
 msgstr ""
 
-#: mod/settings.php:1163
+#: mod/settings.php:1172
 msgid "Expire starred posts:"
 msgstr ""
 
-#: mod/settings.php:1164
+#: mod/settings.php:1173
 msgid "Expire photos:"
 msgstr ""
 
-#: mod/settings.php:1165
+#: mod/settings.php:1174
 msgid "Only expire posts by others:"
 msgstr ""
 
-#: mod/settings.php:1193
+#: mod/settings.php:1202
 msgid "Account Settings"
 msgstr ""
 
-#: mod/settings.php:1201
+#: mod/settings.php:1210
 msgid "Password Settings"
 msgstr ""
 
-#: mod/settings.php:1202 mod/register.php:274
+#: mod/settings.php:1211 mod/register.php:274
 msgid "New Password:"
 msgstr ""
 
-#: mod/settings.php:1203 mod/register.php:275
+#: mod/settings.php:1212 mod/register.php:275
 msgid "Confirm:"
 msgstr ""
 
-#: mod/settings.php:1203
+#: mod/settings.php:1212
 msgid "Leave password fields blank unless changing"
 msgstr ""
 
-#: mod/settings.php:1204
+#: mod/settings.php:1213
 msgid "Current Password:"
 msgstr ""
 
-#: mod/settings.php:1204 mod/settings.php:1205
+#: mod/settings.php:1213 mod/settings.php:1214
 msgid "Your current password to confirm the changes"
 msgstr ""
 
-#: mod/settings.php:1205
+#: mod/settings.php:1214
 msgid "Password:"
 msgstr ""
 
-#: mod/settings.php:1209
+#: mod/settings.php:1218
 msgid "Basic Settings"
 msgstr ""
 
-#: mod/settings.php:1210 include/identity.php:587
+#: mod/settings.php:1219 include/identity.php:588
 msgid "Full Name:"
 msgstr ""
 
-#: mod/settings.php:1211
+#: mod/settings.php:1220
 msgid "Email Address:"
 msgstr ""
 
-#: mod/settings.php:1212
+#: mod/settings.php:1221
 msgid "Your Timezone:"
 msgstr ""
 
-#: mod/settings.php:1213
+#: mod/settings.php:1222
 msgid "Your Language:"
 msgstr ""
 
-#: mod/settings.php:1213
+#: mod/settings.php:1222
 msgid ""
 "Set the language we use to show you friendica interface and to send you "
 "emails"
 msgstr ""
 
-#: mod/settings.php:1214
+#: mod/settings.php:1223
 msgid "Default Post Location:"
 msgstr ""
 
-#: mod/settings.php:1215
+#: mod/settings.php:1224
 msgid "Use Browser Location:"
 msgstr ""
 
-#: mod/settings.php:1218
+#: mod/settings.php:1227
 msgid "Security and Privacy Settings"
 msgstr ""
 
-#: mod/settings.php:1220
+#: mod/settings.php:1229
 msgid "Maximum Friend Requests/Day:"
 msgstr ""
 
-#: mod/settings.php:1220 mod/settings.php:1250
+#: mod/settings.php:1229 mod/settings.php:1259
 msgid "(to prevent spam abuse)"
 msgstr ""
 
-#: mod/settings.php:1221
+#: mod/settings.php:1230
 msgid "Default Post Permissions"
 msgstr ""
 
-#: mod/settings.php:1222
+#: mod/settings.php:1231
 msgid "(click to open/close)"
 msgstr ""
 
-#: mod/settings.php:1231 mod/photos.php:1199 mod/photos.php:1584
+#: mod/settings.php:1240 mod/photos.php:1199 mod/photos.php:1584
 msgid "Show to Groups"
 msgstr ""
 
-#: mod/settings.php:1232 mod/photos.php:1200 mod/photos.php:1585
+#: mod/settings.php:1241 mod/photos.php:1200 mod/photos.php:1585
 msgid "Show to Contacts"
 msgstr ""
 
-#: mod/settings.php:1233
+#: mod/settings.php:1242
 msgid "Default Private Post"
 msgstr ""
 
-#: mod/settings.php:1234
+#: mod/settings.php:1243
 msgid "Default Public Post"
 msgstr ""
 
-#: mod/settings.php:1238
+#: mod/settings.php:1247
 msgid "Default Permissions for New Posts"
 msgstr ""
 
-#: mod/settings.php:1250
+#: mod/settings.php:1259
 msgid "Maximum private messages per day from unknown people:"
 msgstr ""
 
-#: mod/settings.php:1253
+#: mod/settings.php:1262
 msgid "Notification Settings"
 msgstr ""
 
-#: mod/settings.php:1254
+#: mod/settings.php:1263
 msgid "By default post a status message when:"
 msgstr ""
 
-#: mod/settings.php:1255
+#: mod/settings.php:1264
 msgid "accepting a friend request"
 msgstr ""
 
-#: mod/settings.php:1256
+#: mod/settings.php:1265
 msgid "joining a forum/community"
 msgstr ""
 
-#: mod/settings.php:1257
+#: mod/settings.php:1266
 msgid "making an <em>interesting</em> profile change"
 msgstr ""
 
-#: mod/settings.php:1258
+#: mod/settings.php:1267
 msgid "Send a notification email when:"
 msgstr ""
 
-#: mod/settings.php:1259
+#: mod/settings.php:1268
 msgid "You receive an introduction"
 msgstr ""
 
-#: mod/settings.php:1260
+#: mod/settings.php:1269
 msgid "Your introductions are confirmed"
 msgstr ""
 
-#: mod/settings.php:1261
+#: mod/settings.php:1270
 msgid "Someone writes on your profile wall"
 msgstr ""
 
-#: mod/settings.php:1262
+#: mod/settings.php:1271
 msgid "Someone writes a followup comment"
 msgstr ""
 
-#: mod/settings.php:1263
+#: mod/settings.php:1272
 msgid "You receive a private message"
 msgstr ""
 
-#: mod/settings.php:1264
+#: mod/settings.php:1273
 msgid "You receive a friend suggestion"
 msgstr ""
 
-#: mod/settings.php:1265
+#: mod/settings.php:1274
 msgid "You are tagged in a post"
 msgstr ""
 
-#: mod/settings.php:1266
+#: mod/settings.php:1275
 msgid "You are poked/prodded/etc. in a post"
 msgstr ""
 
-#: mod/settings.php:1268
+#: mod/settings.php:1277
 msgid "Activate desktop notifications"
 msgstr ""
 
-#: mod/settings.php:1268
+#: mod/settings.php:1277
 msgid "Show desktop popup on new notifications"
 msgstr ""
 
-#: mod/settings.php:1270
+#: mod/settings.php:1279
 msgid "Text-only notification emails"
 msgstr ""
 
-#: mod/settings.php:1272
+#: mod/settings.php:1281
 msgid "Send text only notification emails, without the html part"
 msgstr ""
 
-#: mod/settings.php:1274
+#: mod/settings.php:1283
 msgid "Advanced Account/Page Type Settings"
 msgstr ""
 
-#: mod/settings.php:1275
+#: mod/settings.php:1284
 msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
-#: mod/settings.php:1278
+#: mod/settings.php:1287
 msgid "Relocate"
 msgstr ""
 
-#: mod/settings.php:1279
+#: mod/settings.php:1288
 msgid ""
 "If you have moved this profile from another server, and some of your "
 "contacts don't receive your updates, try pushing this button."
 msgstr ""
 
-#: mod/settings.php:1280
+#: mod/settings.php:1289
 msgid "Resend relocate message to contacts"
 msgstr ""
 
-#: mod/dfrn_request.php:95
+#: mod/dfrn_request.php:96
 msgid "This introduction has already been accepted."
 msgstr ""
 
-#: mod/dfrn_request.php:120 mod/dfrn_request.php:519
+#: mod/dfrn_request.php:119 mod/dfrn_request.php:516
 msgid "Profile location is not valid or does not contain profile information."
 msgstr ""
 
-#: mod/dfrn_request.php:125 mod/dfrn_request.php:524
+#: mod/dfrn_request.php:124 mod/dfrn_request.php:521
 msgid "Warning: profile location has no identifiable owner name."
 msgstr ""
 
-#: mod/dfrn_request.php:127 mod/dfrn_request.php:526
+#: mod/dfrn_request.php:126 mod/dfrn_request.php:523
 msgid "Warning: profile location has no profile photo."
 msgstr ""
 
-#: mod/dfrn_request.php:130 mod/dfrn_request.php:529
+#: mod/dfrn_request.php:129 mod/dfrn_request.php:526
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/dfrn_request.php:173
+#: mod/dfrn_request.php:172
 msgid "Introduction complete."
 msgstr ""
 
-#: mod/dfrn_request.php:215
+#: mod/dfrn_request.php:214
 msgid "Unrecoverable protocol error."
 msgstr ""
 
-#: mod/dfrn_request.php:243
+#: mod/dfrn_request.php:242
 msgid "Profile unavailable."
 msgstr ""
 
-#: mod/dfrn_request.php:268
+#: mod/dfrn_request.php:267
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr ""
 
-#: mod/dfrn_request.php:269
+#: mod/dfrn_request.php:268
 msgid "Spam protection measures have been invoked."
 msgstr ""
 
-#: mod/dfrn_request.php:270
+#: mod/dfrn_request.php:269
 msgid "Friends are advised to please try again in 24 hours."
 msgstr ""
 
-#: mod/dfrn_request.php:332
+#: mod/dfrn_request.php:331
 msgid "Invalid locator"
 msgstr ""
 
-#: mod/dfrn_request.php:341
+#: mod/dfrn_request.php:340
 msgid "Invalid email address."
 msgstr ""
 
-#: mod/dfrn_request.php:368
+#: mod/dfrn_request.php:367
 msgid "This account has not been configured for email. Request failed."
 msgstr ""
 
-#: mod/dfrn_request.php:464
-msgid "Unable to resolve your name at the provided location."
-msgstr ""
-
-#: mod/dfrn_request.php:477
+#: mod/dfrn_request.php:474
 msgid "You have already introduced yourself here."
 msgstr ""
 
-#: mod/dfrn_request.php:481
+#: mod/dfrn_request.php:478
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr ""
 
-#: mod/dfrn_request.php:502
+#: mod/dfrn_request.php:499
 msgid "Invalid profile URL."
 msgstr ""
 
-#: mod/dfrn_request.php:508 include/follow.php:72
+#: mod/dfrn_request.php:505 include/follow.php:72
 msgid "Disallowed profile URL."
 msgstr ""
 
-#: mod/dfrn_request.php:599
+#: mod/dfrn_request.php:596
 msgid "Your introduction has been sent."
 msgstr ""
 
-#: mod/dfrn_request.php:652
+#: mod/dfrn_request.php:636
+msgid ""
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
+msgstr ""
+
+#: mod/dfrn_request.php:659
 msgid "Please login to confirm introduction."
 msgstr ""
 
-#: mod/dfrn_request.php:662
+#: mod/dfrn_request.php:669
 msgid ""
 "Incorrect identity currently logged in. Please login to <strong>this</"
 "strong> profile."
 msgstr ""
 
-#: mod/dfrn_request.php:676 mod/dfrn_request.php:693
+#: mod/dfrn_request.php:683 mod/dfrn_request.php:700
 msgid "Confirm"
 msgstr ""
 
-#: mod/dfrn_request.php:688
+#: mod/dfrn_request.php:695
 msgid "Hide this contact"
 msgstr ""
 
-#: mod/dfrn_request.php:691
+#: mod/dfrn_request.php:698
 #, php-format
 msgid "Welcome home %s."
 msgstr ""
 
-#: mod/dfrn_request.php:692
+#: mod/dfrn_request.php:699
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr ""
 
-#: mod/dfrn_request.php:821
+#: mod/dfrn_request.php:828
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr ""
 
-#: mod/dfrn_request.php:842
+#: mod/dfrn_request.php:849
 #, php-format
 msgid ""
 "If you are not yet a member of the free social web, <a href=\"%s/siteinfo"
 "\">follow this link to find a public Friendica site and join us today</a>."
 msgstr ""
 
-#: mod/dfrn_request.php:847
+#: mod/dfrn_request.php:854
 msgid "Friend/Connection Request"
 msgstr ""
 
-#: mod/dfrn_request.php:848
+#: mod/dfrn_request.php:855
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr ""
 
-#: mod/dfrn_request.php:856 include/contact_selectors.php:76
+#: mod/dfrn_request.php:863 include/contact_selectors.php:76
 msgid "Friendica"
 msgstr ""
 
-#: mod/dfrn_request.php:857
+#: mod/dfrn_request.php:864
 msgid "StatusNet/Federated Social Web"
 msgstr ""
 
-#: mod/dfrn_request.php:859
+#: mod/dfrn_request.php:866
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search "
@@ -5086,7 +5082,7 @@ msgstr ""
 msgid "Choose a nickname: "
 msgstr ""
 
-#: mod/register.php:280 boot.php:1271 include/nav.php:108
+#: mod/register.php:280 boot.php:1405 include/nav.php:108
 msgid "Register"
 msgstr ""
 
@@ -5128,11 +5124,11 @@ msgstr ""
 msgid "Search results for: %s"
 msgstr ""
 
-#: mod/directory.php:149 include/identity.php:309 include/identity.php:609
+#: mod/directory.php:149 include/identity.php:313 include/identity.php:610
 msgid "Status:"
 msgstr ""
 
-#: mod/directory.php:151 include/identity.php:311 include/identity.php:620
+#: mod/directory.php:151 include/identity.php:315 include/identity.php:621
 msgid "Homepage:"
 msgstr ""
 
@@ -5460,7 +5456,7 @@ msgstr ""
 msgid "Since [date]:"
 msgstr ""
 
-#: mod/profiles.php:724 include/identity.php:618
+#: mod/profiles.php:724 include/identity.php:619
 msgid "Sexual Preference:"
 msgstr ""
 
@@ -5468,11 +5464,11 @@ msgstr ""
 msgid "Homepage URL:"
 msgstr ""
 
-#: mod/profiles.php:726 include/identity.php:622
+#: mod/profiles.php:726 include/identity.php:623
 msgid "Hometown:"
 msgstr ""
 
-#: mod/profiles.php:727 include/identity.php:626
+#: mod/profiles.php:727 include/identity.php:627
 msgid "Political Views:"
 msgstr ""
 
@@ -5488,11 +5484,11 @@ msgstr ""
 msgid "Private Keywords:"
 msgstr ""
 
-#: mod/profiles.php:731 include/identity.php:634
+#: mod/profiles.php:731 include/identity.php:635
 msgid "Likes:"
 msgstr ""
 
-#: mod/profiles.php:732 include/identity.php:636
+#: mod/profiles.php:732 include/identity.php:637
 msgid "Dislikes:"
 msgstr ""
 
@@ -5562,23 +5558,23 @@ msgstr ""
 msgid "Edit/Manage Profiles"
 msgstr ""
 
-#: mod/profiles.php:814 include/identity.php:257 include/identity.php:283
+#: mod/profiles.php:814 include/identity.php:260 include/identity.php:286
 msgid "Change profile photo"
 msgstr ""
 
-#: mod/profiles.php:815 include/identity.php:258
+#: mod/profiles.php:815 include/identity.php:261
 msgid "Create New Profile"
 msgstr ""
 
-#: mod/profiles.php:826 include/identity.php:268
+#: mod/profiles.php:826 include/identity.php:271
 msgid "Profile Image"
 msgstr ""
 
-#: mod/profiles.php:828 include/identity.php:271
+#: mod/profiles.php:828 include/identity.php:274
 msgid "visible to everybody"
 msgstr ""
 
-#: mod/profiles.php:829 include/identity.php:272
+#: mod/profiles.php:829 include/identity.php:275
 msgid "Edit visibility"
 msgstr ""
 
@@ -5590,55 +5586,55 @@ msgstr ""
 msgid "Edit post"
 msgstr ""
 
-#: mod/editpost.php:111 include/conversation.php:1185
+#: mod/editpost.php:111 include/conversation.php:1184
 msgid "upload photo"
 msgstr ""
 
-#: mod/editpost.php:112 include/conversation.php:1186
+#: mod/editpost.php:112 include/conversation.php:1185
 msgid "Attach file"
 msgstr ""
 
-#: mod/editpost.php:113 include/conversation.php:1187
+#: mod/editpost.php:113 include/conversation.php:1186
 msgid "attach file"
 msgstr ""
 
-#: mod/editpost.php:115 include/conversation.php:1189
+#: mod/editpost.php:115 include/conversation.php:1188
 msgid "web link"
 msgstr ""
 
-#: mod/editpost.php:116 include/conversation.php:1190
+#: mod/editpost.php:116 include/conversation.php:1189
 msgid "Insert video link"
 msgstr ""
 
-#: mod/editpost.php:117 include/conversation.php:1191
+#: mod/editpost.php:117 include/conversation.php:1190
 msgid "video link"
 msgstr ""
 
-#: mod/editpost.php:118 include/conversation.php:1192
+#: mod/editpost.php:118 include/conversation.php:1191
 msgid "Insert audio link"
 msgstr ""
 
-#: mod/editpost.php:119 include/conversation.php:1193
+#: mod/editpost.php:119 include/conversation.php:1192
 msgid "audio link"
 msgstr ""
 
-#: mod/editpost.php:120 include/conversation.php:1194
+#: mod/editpost.php:120 include/conversation.php:1193
 msgid "Set your location"
 msgstr ""
 
-#: mod/editpost.php:121 include/conversation.php:1195
+#: mod/editpost.php:121 include/conversation.php:1194
 msgid "set location"
 msgstr ""
 
-#: mod/editpost.php:122 include/conversation.php:1196
+#: mod/editpost.php:122 include/conversation.php:1195
 msgid "Clear browser location"
 msgstr ""
 
-#: mod/editpost.php:123 include/conversation.php:1197
+#: mod/editpost.php:123 include/conversation.php:1196
 msgid "clear location"
 msgstr ""
 
-#: mod/editpost.php:125 include/conversation.php:1203
+#: mod/editpost.php:125 include/conversation.php:1202
 msgid "Permission settings"
 msgstr ""
 
@@ -5646,15 +5642,15 @@ msgstr ""
 msgid "CC: email addresses"
 msgstr ""
 
-#: mod/editpost.php:134 include/conversation.php:1212
+#: mod/editpost.php:134 include/conversation.php:1211
 msgid "Public post"
 msgstr ""
 
-#: mod/editpost.php:137 include/conversation.php:1199
+#: mod/editpost.php:137 include/conversation.php:1198
 msgid "Set title"
 msgstr ""
 
-#: mod/editpost.php:139 include/conversation.php:1201
+#: mod/editpost.php:139 include/conversation.php:1200
 msgid "Categories (comma-separated list)"
 msgstr ""
 
@@ -5662,39 +5658,39 @@ msgstr ""
 msgid "Example: bob@example.com, mary@example.com"
 msgstr ""
 
-#: mod/friendica.php:59
+#: mod/friendica.php:70
 msgid "This is Friendica, version"
 msgstr ""
 
-#: mod/friendica.php:60
+#: mod/friendica.php:71
 msgid "running at web location"
 msgstr ""
 
-#: mod/friendica.php:62
+#: mod/friendica.php:73
 msgid ""
 "Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn "
 "more about the Friendica project."
 msgstr ""
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "Bug reports and issues: please visit"
 msgstr ""
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "the bugtracker at github"
 msgstr ""
 
-#: mod/friendica.php:65
+#: mod/friendica.php:76
 msgid ""
 "Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - "
 "dot com"
 msgstr ""
 
-#: mod/friendica.php:79
+#: mod/friendica.php:90
 msgid "Installed plugins/addons/apps:"
 msgstr ""
 
-#: mod/friendica.php:92
+#: mod/friendica.php:103
 msgid "No installed plugins/addons/apps"
 msgstr ""
 
@@ -6051,12 +6047,12 @@ msgstr ""
 msgid "Public photo"
 msgstr ""
 
-#: mod/photos.php:1609 include/conversation.php:1183
+#: mod/photos.php:1609 include/conversation.php:1182
 msgid "Share"
 msgstr ""
 
 #: mod/photos.php:1648 include/conversation.php:509
-#: include/conversation.php:1414
+#: include/conversation.php:1413
 msgid "Attending"
 msgid_plural "Attending"
 msgstr[0] ""
@@ -6130,60 +6126,60 @@ msgstr ""
 msgid "Item was not found."
 msgstr ""
 
-#: boot.php:786
+#: boot.php:868
 msgid "Delete this item?"
 msgstr ""
 
-#: boot.php:789
+#: boot.php:871
 msgid "show fewer"
 msgstr ""
 
-#: boot.php:1163
+#: boot.php:1292
 #, php-format
 msgid "Update %s failed. See error logs."
 msgstr ""
 
-#: boot.php:1270
+#: boot.php:1404
 msgid "Create a New Account"
 msgstr ""
 
-#: boot.php:1295 include/nav.php:72
+#: boot.php:1429 include/nav.php:72
 msgid "Logout"
 msgstr ""
 
-#: boot.php:1298
+#: boot.php:1432
 msgid "Nickname or Email address: "
 msgstr ""
 
-#: boot.php:1299
+#: boot.php:1433
 msgid "Password: "
 msgstr ""
 
-#: boot.php:1300
+#: boot.php:1434
 msgid "Remember me"
 msgstr ""
 
-#: boot.php:1303
+#: boot.php:1437
 msgid "Or login using OpenID: "
 msgstr ""
 
-#: boot.php:1309
+#: boot.php:1443
 msgid "Forgot your password?"
 msgstr ""
 
-#: boot.php:1312
+#: boot.php:1446
 msgid "Website Terms of Service"
 msgstr ""
 
-#: boot.php:1313
+#: boot.php:1447
 msgid "terms of service"
 msgstr ""
 
-#: boot.php:1315
+#: boot.php:1449
 msgid "Website Privacy Policy"
 msgstr ""
 
-#: boot.php:1316
+#: boot.php:1450
 msgid "privacy policy"
 msgstr ""
 
@@ -6245,25 +6241,25 @@ msgid ""
 "[pre]%s[/pre]"
 msgstr ""
 
-#: include/dbstructure.php:151
+#: include/dbstructure.php:153
 msgid "Errors encountered creating database tables."
 msgstr ""
 
-#: include/dbstructure.php:209
+#: include/dbstructure.php:230
 msgid "Errors encountered performing database changes."
 msgstr ""
 
-#: include/auth.php:38
+#: include/auth.php:44
 msgid "Logged out."
 msgstr ""
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid ""
 "We encountered a problem while logging in with the OpenID you provided. "
 "Please check the correct spelling of the ID."
 msgstr ""
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid "The error message was:"
 msgstr ""
 
@@ -6320,7 +6316,7 @@ msgstr ""
 msgid "All Networks"
 msgstr ""
 
-#: include/contact_widgets.php:141 include/features.php:97
+#: include/contact_widgets.php:141 include/features.php:102
 msgid "Saved Folders"
 msgstr ""
 
@@ -6339,194 +6335,194 @@ msgid_plural "%d contacts in common"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/features.php:58
+#: include/features.php:63
 msgid "General Features"
 msgstr ""
 
-#: include/features.php:60
+#: include/features.php:65
 msgid "Multiple Profiles"
 msgstr ""
 
-#: include/features.php:60
+#: include/features.php:65
 msgid "Ability to create multiple profiles"
 msgstr ""
 
-#: include/features.php:61
+#: include/features.php:66
 msgid "Photo Location"
 msgstr ""
 
-#: include/features.php:61
+#: include/features.php:66
 msgid ""
 "Photo metadata is normally stripped. This extracts the location (if present) "
 "prior to stripping metadata and links it to a map."
 msgstr ""
 
-#: include/features.php:66
+#: include/features.php:71
 msgid "Post Composition Features"
 msgstr ""
 
-#: include/features.php:67
+#: include/features.php:72
 msgid "Richtext Editor"
 msgstr ""
 
-#: include/features.php:67
+#: include/features.php:72
 msgid "Enable richtext editor"
 msgstr ""
 
-#: include/features.php:68
+#: include/features.php:73
 msgid "Post Preview"
 msgstr ""
 
-#: include/features.php:68
+#: include/features.php:73
 msgid "Allow previewing posts and comments before publishing them"
 msgstr ""
 
-#: include/features.php:69
+#: include/features.php:74
 msgid "Auto-mention Forums"
 msgstr ""
 
-#: include/features.php:69
+#: include/features.php:74
 msgid ""
 "Add/remove mention when a fourm page is selected/deselected in ACL window."
 msgstr ""
 
-#: include/features.php:74
+#: include/features.php:79
 msgid "Network Sidebar Widgets"
 msgstr ""
 
-#: include/features.php:75
+#: include/features.php:80
 msgid "Search by Date"
 msgstr ""
 
-#: include/features.php:75
+#: include/features.php:80
 msgid "Ability to select posts by date ranges"
 msgstr ""
 
-#: include/features.php:76 include/features.php:106
+#: include/features.php:81 include/features.php:111
 msgid "List Forums"
 msgstr ""
 
-#: include/features.php:76
+#: include/features.php:81
 msgid "Enable widget to display the forums your are connected with"
 msgstr ""
 
-#: include/features.php:77
+#: include/features.php:82
 msgid "Group Filter"
 msgstr ""
 
-#: include/features.php:77
+#: include/features.php:82
 msgid "Enable widget to display Network posts only from selected group"
 msgstr ""
 
-#: include/features.php:78
+#: include/features.php:83
 msgid "Network Filter"
 msgstr ""
 
-#: include/features.php:78
+#: include/features.php:83
 msgid "Enable widget to display Network posts only from selected network"
 msgstr ""
 
-#: include/features.php:79
+#: include/features.php:84
 msgid "Save search terms for re-use"
 msgstr ""
 
-#: include/features.php:84
+#: include/features.php:89
 msgid "Network Tabs"
 msgstr ""
 
-#: include/features.php:85
+#: include/features.php:90
 msgid "Network Personal Tab"
 msgstr ""
 
-#: include/features.php:85
+#: include/features.php:90
 msgid "Enable tab to display only Network posts that you've interacted on"
 msgstr ""
 
-#: include/features.php:86
+#: include/features.php:91
 msgid "Network New Tab"
 msgstr ""
 
-#: include/features.php:86
+#: include/features.php:91
 msgid "Enable tab to display only new Network posts (from the last 12 hours)"
 msgstr ""
 
-#: include/features.php:87
+#: include/features.php:92
 msgid "Network Shared Links Tab"
 msgstr ""
 
-#: include/features.php:87
+#: include/features.php:92
 msgid "Enable tab to display only Network posts with links in them"
 msgstr ""
 
-#: include/features.php:92
+#: include/features.php:97
 msgid "Post/Comment Tools"
 msgstr ""
 
-#: include/features.php:93
+#: include/features.php:98
 msgid "Multiple Deletion"
 msgstr ""
 
-#: include/features.php:93
+#: include/features.php:98
 msgid "Select and delete multiple posts/comments at once"
 msgstr ""
 
-#: include/features.php:94
+#: include/features.php:99
 msgid "Edit Sent Posts"
 msgstr ""
 
-#: include/features.php:94
+#: include/features.php:99
 msgid "Edit and correct posts and comments after sending"
 msgstr ""
 
-#: include/features.php:95
+#: include/features.php:100
 msgid "Tagging"
 msgstr ""
 
-#: include/features.php:95
+#: include/features.php:100
 msgid "Ability to tag existing posts"
 msgstr ""
 
-#: include/features.php:96
+#: include/features.php:101
 msgid "Post Categories"
 msgstr ""
 
-#: include/features.php:96
+#: include/features.php:101
 msgid "Add categories to your posts"
 msgstr ""
 
-#: include/features.php:97
+#: include/features.php:102
 msgid "Ability to file posts under folders"
 msgstr ""
 
-#: include/features.php:98
+#: include/features.php:103
 msgid "Dislike Posts"
 msgstr ""
 
-#: include/features.php:98
+#: include/features.php:103
 msgid "Ability to dislike posts/comments"
 msgstr ""
 
-#: include/features.php:99
+#: include/features.php:104
 msgid "Star Posts"
 msgstr ""
 
-#: include/features.php:99
+#: include/features.php:104
 msgid "Ability to mark special posts with a star indicator"
 msgstr ""
 
-#: include/features.php:100
+#: include/features.php:105
 msgid "Mute Post Notifications"
 msgstr ""
 
-#: include/features.php:100
+#: include/features.php:105
 msgid "Ability to mute notifications for a thread"
 msgstr ""
 
-#: include/features.php:105
+#: include/features.php:110
 msgid "Advanced Profile Settings"
 msgstr ""
 
-#: include/features.php:106
+#: include/features.php:111
 msgid "Show visitors public community forums at the Advanced Profile Page"
 msgstr ""
 
@@ -6685,134 +6681,134 @@ msgstr ""
 msgid "%1$d %2$s ago"
 msgstr ""
 
-#: include/datetime.php:474 include/items.php:2473
+#: include/datetime.php:474 include/items.php:2481
 #, php-format
 msgid "%s's birthday"
 msgstr ""
 
-#: include/datetime.php:475 include/items.php:2474
+#: include/datetime.php:475 include/items.php:2482
 #, php-format
 msgid "Happy Birthday %s"
 msgstr ""
 
-#: include/identity.php:44
+#: include/identity.php:42
 msgid "Requested account is not available."
 msgstr ""
 
-#: include/identity.php:97 include/identity.php:281 include/identity.php:661
+#: include/identity.php:95 include/identity.php:284 include/identity.php:662
 msgid "Edit profile"
 msgstr ""
 
-#: include/identity.php:241
+#: include/identity.php:244
 msgid "Atom feed"
 msgstr ""
 
-#: include/identity.php:246
+#: include/identity.php:249
 msgid "Message"
 msgstr ""
 
-#: include/identity.php:252 include/nav.php:185
+#: include/identity.php:255 include/nav.php:185
 msgid "Profiles"
 msgstr ""
 
-#: include/identity.php:252
+#: include/identity.php:255
 msgid "Manage/edit profiles"
 msgstr ""
 
-#: include/identity.php:421 include/identity.php:507
+#: include/identity.php:425 include/identity.php:509
 msgid "g A l F d"
 msgstr ""
 
-#: include/identity.php:422 include/identity.php:508
+#: include/identity.php:426 include/identity.php:510
 msgid "F d"
 msgstr ""
 
-#: include/identity.php:467 include/identity.php:554
+#: include/identity.php:471 include/identity.php:556
 msgid "[today]"
 msgstr ""
 
-#: include/identity.php:479
+#: include/identity.php:483
 msgid "Birthday Reminders"
 msgstr ""
 
-#: include/identity.php:480
+#: include/identity.php:484
 msgid "Birthdays this week:"
 msgstr ""
 
-#: include/identity.php:541
+#: include/identity.php:543
 msgid "[No description]"
 msgstr ""
 
-#: include/identity.php:565
+#: include/identity.php:567
 msgid "Event Reminders"
 msgstr ""
 
-#: include/identity.php:566
+#: include/identity.php:568
 msgid "Events this week:"
 msgstr ""
 
-#: include/identity.php:594
+#: include/identity.php:595
 msgid "j F, Y"
 msgstr ""
 
-#: include/identity.php:595
+#: include/identity.php:596
 msgid "j F"
 msgstr ""
 
-#: include/identity.php:602
+#: include/identity.php:603
 msgid "Birthday:"
 msgstr ""
 
-#: include/identity.php:606
+#: include/identity.php:607
 msgid "Age:"
 msgstr ""
 
-#: include/identity.php:615
+#: include/identity.php:616
 #, php-format
 msgid "for %1$d %2$s"
 msgstr ""
 
-#: include/identity.php:628
+#: include/identity.php:629
 msgid "Religion:"
 msgstr ""
 
-#: include/identity.php:632
+#: include/identity.php:633
 msgid "Hobbies/Interests:"
 msgstr ""
 
-#: include/identity.php:639
+#: include/identity.php:640
 msgid "Contact information and Social Networks:"
 msgstr ""
 
-#: include/identity.php:641
+#: include/identity.php:642
 msgid "Musical interests:"
 msgstr ""
 
-#: include/identity.php:643
+#: include/identity.php:644
 msgid "Books, literature:"
 msgstr ""
 
-#: include/identity.php:645
+#: include/identity.php:646
 msgid "Television:"
 msgstr ""
 
-#: include/identity.php:647
+#: include/identity.php:648
 msgid "Film/dance/culture/entertainment:"
 msgstr ""
 
-#: include/identity.php:649
+#: include/identity.php:650
 msgid "Love/Romance:"
 msgstr ""
 
-#: include/identity.php:651
+#: include/identity.php:652
 msgid "Work/employment:"
 msgstr ""
 
-#: include/identity.php:653
+#: include/identity.php:654
 msgid "School/education:"
 msgstr ""
 
-#: include/identity.php:657
+#: include/identity.php:658
 msgid "Forums:"
 msgstr ""
 
@@ -6828,6 +6824,38 @@ msgstr ""
 msgid "Only You Can See This"
 msgstr ""
 
+#: include/like.php:167 include/conversation.php:122
+#: include/conversation.php:258 include/text.php:1998
+#: view/theme/diabook/theme.php:463
+msgid "event"
+msgstr ""
+
+#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2167
+#: view/theme/diabook/theme.php:480
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:186 include/conversation.php:144
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:188
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:190
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:192
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr ""
+
 #: include/acl_selectors.php:325
 msgid "Post to Email"
 msgstr ""
@@ -6851,6 +6879,10 @@ msgstr ""
 msgid "don't show"
 msgstr ""
 
+#: include/acl_selectors.php:348
+msgid "Close"
+msgstr ""
+
 #: include/message.php:15 include/message.php:173
 msgid "[no subject]"
 msgstr ""
@@ -6859,31 +6891,31 @@ msgstr ""
 msgid "stopped following"
 msgstr ""
 
-#: include/Contact.php:350 include/conversation.php:911
+#: include/Contact.php:337 include/conversation.php:911
 msgid "View Status"
 msgstr ""
 
-#: include/Contact.php:352 include/conversation.php:913
+#: include/Contact.php:339 include/conversation.php:913
 msgid "View Photos"
 msgstr ""
 
-#: include/Contact.php:353 include/conversation.php:914
+#: include/Contact.php:340 include/conversation.php:914
 msgid "Network Posts"
 msgstr ""
 
-#: include/Contact.php:354 include/conversation.php:915
+#: include/Contact.php:341 include/conversation.php:915
 msgid "Edit Contact"
 msgstr ""
 
-#: include/Contact.php:355
+#: include/Contact.php:342
 msgid "Drop Contact"
 msgstr ""
 
-#: include/Contact.php:356 include/conversation.php:916
+#: include/Contact.php:343 include/conversation.php:916
 msgid "Send PM"
 msgstr ""
 
-#: include/Contact.php:357 include/conversation.php:920
+#: include/Contact.php:344 include/conversation.php:920
 msgid "Poke"
 msgstr ""
 
@@ -6946,153 +6978,153 @@ msgstr ""
 msgid "Follow Thread"
 msgstr ""
 
-#: include/conversation.php:1035
+#: include/conversation.php:1034
 #, php-format
 msgid "%s likes this."
 msgstr ""
 
-#: include/conversation.php:1038
+#: include/conversation.php:1037
 #, php-format
 msgid "%s doesn't like this."
 msgstr ""
 
-#: include/conversation.php:1041
+#: include/conversation.php:1040
 #, php-format
 msgid "%s attends."
 msgstr ""
 
-#: include/conversation.php:1044
+#: include/conversation.php:1043
 #, php-format
 msgid "%s doesn't attend."
 msgstr ""
 
-#: include/conversation.php:1047
+#: include/conversation.php:1046
 #, php-format
 msgid "%s attends maybe."
 msgstr ""
 
-#: include/conversation.php:1057
+#: include/conversation.php:1056
 msgid "and"
 msgstr ""
 
-#: include/conversation.php:1063
+#: include/conversation.php:1062
 #, php-format
 msgid ", and %d other people"
 msgstr ""
 
-#: include/conversation.php:1072
+#: include/conversation.php:1071
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this"
 msgstr ""
 
-#: include/conversation.php:1073
+#: include/conversation.php:1072
 #, php-format
 msgid "%s like this."
 msgstr ""
 
-#: include/conversation.php:1076
+#: include/conversation.php:1075
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this"
 msgstr ""
 
-#: include/conversation.php:1077
+#: include/conversation.php:1076
 #, php-format
 msgid "%s don't like this."
 msgstr ""
 
-#: include/conversation.php:1080
+#: include/conversation.php:1079
 #, php-format
 msgid "<span  %1$s>%2$d people</span> attend"
 msgstr ""
 
-#: include/conversation.php:1081
+#: include/conversation.php:1080
 #, php-format
 msgid "%s attend."
 msgstr ""
 
-#: include/conversation.php:1084
+#: include/conversation.php:1083
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't attend"
 msgstr ""
 
-#: include/conversation.php:1085
+#: include/conversation.php:1084
 #, php-format
 msgid "%s don't attend."
 msgstr ""
 
-#: include/conversation.php:1088
+#: include/conversation.php:1087
 #, php-format
 msgid "<span  %1$s>%2$d people</span> anttend maybe"
 msgstr ""
 
-#: include/conversation.php:1089
+#: include/conversation.php:1088
 #, php-format
 msgid "%s anttend maybe."
 msgstr ""
 
-#: include/conversation.php:1128 include/conversation.php:1146
+#: include/conversation.php:1127 include/conversation.php:1145
 msgid "Visible to <strong>everybody</strong>"
 msgstr ""
 
-#: include/conversation.php:1130 include/conversation.php:1148
+#: include/conversation.php:1129 include/conversation.php:1147
 msgid "Please enter a video link/URL:"
 msgstr ""
 
-#: include/conversation.php:1131 include/conversation.php:1149
+#: include/conversation.php:1130 include/conversation.php:1148
 msgid "Please enter an audio link/URL:"
 msgstr ""
 
-#: include/conversation.php:1132 include/conversation.php:1150
+#: include/conversation.php:1131 include/conversation.php:1149
 msgid "Tag term:"
 msgstr ""
 
-#: include/conversation.php:1134 include/conversation.php:1152
+#: include/conversation.php:1133 include/conversation.php:1151
 msgid "Where are you right now?"
 msgstr ""
 
-#: include/conversation.php:1135
+#: include/conversation.php:1134
 msgid "Delete item(s)?"
 msgstr ""
 
-#: include/conversation.php:1204
+#: include/conversation.php:1203
 msgid "permissions"
 msgstr ""
 
-#: include/conversation.php:1227
+#: include/conversation.php:1226
 msgid "Post to Groups"
 msgstr ""
 
-#: include/conversation.php:1228
+#: include/conversation.php:1227
 msgid "Post to Contacts"
 msgstr ""
 
-#: include/conversation.php:1229
+#: include/conversation.php:1228
 msgid "Private post"
 msgstr ""
 
-#: include/conversation.php:1386
+#: include/conversation.php:1385
 msgid "View all"
 msgstr ""
 
-#: include/conversation.php:1408
+#: include/conversation.php:1407
 msgid "Like"
 msgid_plural "Likes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1411
+#: include/conversation.php:1410
 msgid "Dislike"
 msgid_plural "Dislikes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1417
+#: include/conversation.php:1416
 msgid "Not Attending"
 msgid_plural "Not Attending"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1420 include/profile_selectors.php:6
+#: include/conversation.php:1419 include/profile_selectors.php:6
 msgid "Undecided"
 msgid_plural "Undecided"
 msgstr[0] ""
@@ -7294,66 +7326,58 @@ msgstr ""
 msgid "surprised"
 msgstr ""
 
-#: include/text.php:1497
+#: include/text.php:1504
 msgid "bytes"
 msgstr ""
 
-#: include/text.php:1529 include/text.php:1541
+#: include/text.php:1536 include/text.php:1548
 msgid "Click to open/close"
 msgstr ""
 
-#: include/text.php:1715
+#: include/text.php:1722
 msgid "View on separate page"
 msgstr ""
 
-#: include/text.php:1716
+#: include/text.php:1723
 msgid "view on separate page"
 msgstr ""
 
-#: include/text.php:1995
+#: include/text.php:2002
 msgid "activity"
 msgstr ""
 
-#: include/text.php:1998
+#: include/text.php:2005
 msgid "post"
 msgstr ""
 
-#: include/text.php:2166
+#: include/text.php:2173
 msgid "Item filed"
 msgstr ""
 
-#: include/bbcode.php:483 include/bbcode.php:1143 include/bbcode.php:1144
+#: include/bbcode.php:482 include/bbcode.php:1157 include/bbcode.php:1158
 msgid "Image/photo"
 msgstr ""
 
-#: include/bbcode.php:581
+#: include/bbcode.php:595
 #, php-format
 msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
 msgstr ""
 
-#: include/bbcode.php:615
+#: include/bbcode.php:629
 #, php-format
 msgid ""
 "<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a href="
 "\"%s\" target=\"_blank\">post</a>"
 msgstr ""
 
-#: include/bbcode.php:1103 include/bbcode.php:1123
+#: include/bbcode.php:1117 include/bbcode.php:1137
 msgid "$1 wrote:"
 msgstr ""
 
-#: include/bbcode.php:1152 include/bbcode.php:1153
+#: include/bbcode.php:1166 include/bbcode.php:1167
 msgid "Encrypted content"
 msgstr ""
 
-#: include/notifier.php:843 include/delivery.php:459
-msgid "(no subject)"
-msgstr ""
-
-#: include/notifier.php:853 include/delivery.php:470 include/enotify.php:37
-msgid "noreply"
-msgstr ""
-
 #: include/dba_pdo.php:72 include/dba.php:55
 #, php-format
 msgid "Cannot locate DNS info for database server '%s'"
@@ -7399,6 +7423,10 @@ msgstr ""
 msgid "RSS/Atom"
 msgstr ""
 
+#: include/contact_selectors.php:81
+msgid "Facebook"
+msgstr ""
+
 #: include/contact_selectors.php:82
 msgid "Zot!"
 msgstr ""
@@ -7443,7 +7471,7 @@ msgstr ""
 msgid "Redmatrix"
 msgstr ""
 
-#: include/Scrape.php:610
+#: include/Scrape.php:624
 msgid " on Last.fm"
 msgstr ""
 
@@ -7619,46 +7647,21 @@ msgstr ""
 msgid "Site map"
 msgstr ""
 
-#: include/api.php:345 include/api.php:356 include/api.php:465
-#: include/api.php:1184 include/api.php:1186
-msgid "User not found."
-msgstr ""
-
-#: include/api.php:832
+#: include/api.php:878
 #, php-format
 msgid "Daily posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:851
+#: include/api.php:897
 #, php-format
 msgid "Weekly posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:870
+#: include/api.php:916
 #, php-format
 msgid "Monthly posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:1393
-msgid "There is no status with this id."
-msgstr ""
-
-#: include/api.php:1467
-msgid "There is no conversation with this id."
-msgstr ""
-
-#: include/api.php:1746
-msgid "Invalid item."
-msgstr ""
-
-#: include/api.php:1756
-msgid "Invalid action. "
-msgstr ""
-
-#: include/api.php:1764
-msgid "DB error"
-msgstr ""
-
 #: include/user.php:48
 msgid "An invitation is required."
 msgstr ""
@@ -7721,8 +7724,7 @@ msgstr ""
 msgid "An error occurred during registration. Please try again."
 msgstr ""
 
-#: include/user.php:256 view/theme/clean/config.php:56
-#: view/theme/duepuntozero/config.php:44
+#: include/user.php:256 view/theme/duepuntozero/config.php:44
 msgid "default"
 msgstr ""
 
@@ -7782,15 +7784,23 @@ msgstr ""
 msgid "Sharing notification from Diaspora network"
 msgstr ""
 
-#: include/diaspora.php:2607
+#: include/diaspora.php:2608
 msgid "Attachments:"
 msgstr ""
 
-#: include/items.php:4900
+#: include/delivery.php:533
+msgid "(no subject)"
+msgstr ""
+
+#: include/delivery.php:544 include/enotify.php:37
+msgid "noreply"
+msgstr ""
+
+#: include/items.php:4907
 msgid "Do you really want to delete this item?"
 msgstr ""
 
-#: include/items.php:5175
+#: include/items.php:5182
 msgid "Archives"
 msgstr ""
 
@@ -8306,11 +8316,11 @@ msgstr ""
 msgid "Please visit %s to approve or reject the request."
 msgstr ""
 
-#: include/oembed.php:220
+#: include/oembed.php:226
 msgid "Embedded content"
 msgstr ""
 
-#: include/oembed.php:229
+#: include/oembed.php:235
 msgid "Embedding disabled"
 msgstr ""
 
@@ -8368,7 +8378,6 @@ msgid "Set theme width"
 msgstr ""
 
 #: view/theme/cleanzero/config.php:86 view/theme/quattro/config.php:68
-#: view/theme/clean/config.php:88
 msgid "Color scheme"
 msgstr ""
 
@@ -8490,56 +8499,6 @@ msgstr ""
 msgid "Show/hide boxes at right-hand column:"
 msgstr ""
 
-#: view/theme/clean/config.php:57
-msgid "Midnight"
-msgstr ""
-
-#: view/theme/clean/config.php:58
-msgid "Zenburn"
-msgstr ""
-
-#: view/theme/clean/config.php:59
-msgid "Bootstrap"
-msgstr ""
-
-#: view/theme/clean/config.php:60
-msgid "Shades of Pink"
-msgstr ""
-
-#: view/theme/clean/config.php:61
-msgid "Lime and Orange"
-msgstr ""
-
-#: view/theme/clean/config.php:62
-msgid "GeoCities Retro"
-msgstr ""
-
-#: view/theme/clean/config.php:86
-msgid "Background Image"
-msgstr ""
-
-#: view/theme/clean/config.php:86
-msgid ""
-"The URL to a picture (e.g. from your photo album) that should be used as "
-"background image."
-msgstr ""
-
-#: view/theme/clean/config.php:87
-msgid "Background Color"
-msgstr ""
-
-#: view/theme/clean/config.php:87
-msgid "HEX value for the background color. Don't include the #"
-msgstr ""
-
-#: view/theme/clean/config.php:89
-msgid "font size"
-msgstr ""
-
-#: view/theme/clean/config.php:89
-msgid "base font size for your interface"
-msgstr ""
-
 #: view/theme/vier/config.php:64
 msgid "Comma separated list of helper forums"
 msgstr ""
index f209b453f1e9c19f14f8fd9d47484b374628e397..e8b8532e9b5e2a848f77f69560c1919335794c95 100644 (file)
@@ -32,8 +32,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-27 08:40+0100\n"
-"PO-Revision-Date: 2016-01-03 07:15+0000\n"
+"POT-Creation-Date: 2016-01-20 17:52+0100\n"
+"PO-Revision-Date: 2016-01-21 10:53+0000\n"
 "Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
 "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
 "MIME-Version: 1.0\n"
@@ -42,26 +42,26 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: mod/contacts.php:50 include/identity.php:389
+#: mod/contacts.php:50 include/identity.php:395
 msgid "Network:"
 msgstr "Netzwerk"
 
-#: mod/contacts.php:51 mod/contacts.php:986 mod/videos.php:37
-#: mod/viewcontacts.php:105 mod/dirfind.php:208 mod/network.php:596
+#: mod/contacts.php:51 mod/contacts.php:961 mod/videos.php:37
+#: mod/viewcontacts.php:105 mod/dirfind.php:214 mod/network.php:598
 #: mod/allfriends.php:77 mod/match.php:82 mod/directory.php:172
 #: mod/common.php:123 mod/suggest.php:95 mod/photos.php:41
-#: include/identity.php:295
+#: include/identity.php:298
 msgid "Forum"
 msgstr "Forum"
 
 #: mod/contacts.php:128
 #, php-format
 msgid "%d contact edited."
-msgid_plural "%d contacts edited"
+msgid_plural "%d contacts edited."
 msgstr[0] "%d Kontakt bearbeitet."
-msgstr[1] "%d Kontakte bearbeitet"
+msgstr[1] "%d Kontakte bearbeitet."
 
-#: mod/contacts.php:159 mod/contacts.php:382
+#: mod/contacts.php:159 mod/contacts.php:383
 msgid "Could not access contact record."
 msgstr "Konnte nicht auf die Kontaktdaten zugreifen."
 
@@ -73,15 +73,15 @@ msgstr "Konnte das ausgewählte Profil nicht finden."
 msgid "Contact updated."
 msgstr "Kontakt aktualisiert."
 
-#: mod/contacts.php:208 mod/dfrn_request.php:578
+#: mod/contacts.php:208 mod/dfrn_request.php:575
 msgid "Failed to update contact record."
 msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
 
-#: mod/contacts.php:364 mod/manage.php:96 mod/display.php:493
+#: mod/contacts.php:365 mod/manage.php:96 mod/display.php:509
 #: mod/profile_photo.php:19 mod/profile_photo.php:175
 #: mod/profile_photo.php:186 mod/profile_photo.php:199
-#: mod/ostatus_subscribe.php:9 mod/follow.php:10 mod/follow.php:72
-#: mod/follow.php:137 mod/item.php:169 mod/item.php:181 mod/group.php:19
+#: mod/ostatus_subscribe.php:9 mod/follow.php:11 mod/follow.php:73
+#: mod/follow.php:155 mod/item.php:180 mod/item.php:192 mod/group.php:19
 #: mod/dfrn_confirm.php:55 mod/fsuggest.php:78 mod/wall_upload.php:77
 #: mod/wall_upload.php:80 mod/viewcontacts.php:40 mod/notifications.php:69
 #: mod/message.php:45 mod/message.php:181 mod/crepair.php:117
@@ -89,129 +89,129 @@ msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
 #: mod/allfriends.php:12 mod/events.php:165 mod/wallmessage.php:9
 #: mod/wallmessage.php:33 mod/wallmessage.php:79 mod/wallmessage.php:103
 #: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/settings.php:20
-#: mod/settings.php:116 mod/settings.php:637 mod/register.php:42
+#: mod/settings.php:126 mod/settings.php:646 mod/register.php:42
 #: mod/delegate.php:12 mod/common.php:18 mod/mood.php:114 mod/suggest.php:58
 #: mod/profiles.php:165 mod/profiles.php:615 mod/editpost.php:10
 #: mod/api.php:26 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:5070 index.php:383
+#: mod/uimport.php:23 mod/attach.php:33 include/items.php:5077 index.php:383
 msgid "Permission denied."
 msgstr "Zugriff verweigert."
 
-#: mod/contacts.php:403
+#: mod/contacts.php:404
 msgid "Contact has been blocked"
 msgstr "Kontakt wurde blockiert"
 
-#: mod/contacts.php:403
+#: mod/contacts.php:404
 msgid "Contact has been unblocked"
 msgstr "Kontakt wurde wieder freigegeben"
 
-#: mod/contacts.php:414
+#: mod/contacts.php:415
 msgid "Contact has been ignored"
 msgstr "Kontakt wurde ignoriert"
 
-#: mod/contacts.php:414
+#: mod/contacts.php:415
 msgid "Contact has been unignored"
 msgstr "Kontakt wird nicht mehr ignoriert"
 
-#: mod/contacts.php:426
+#: mod/contacts.php:427
 msgid "Contact has been archived"
 msgstr "Kontakt wurde archiviert"
 
-#: mod/contacts.php:426
+#: mod/contacts.php:427
 msgid "Contact has been unarchived"
 msgstr "Kontakt wurde aus dem Archiv geholt"
 
-#: mod/contacts.php:453 mod/contacts.php:801
+#: mod/contacts.php:454 mod/contacts.php:802
 msgid "Do you really want to delete this contact?"
 msgstr "Möchtest Du wirklich diesen Kontakt löschen?"
 
-#: mod/contacts.php:455 mod/follow.php:105 mod/message.php:216
-#: mod/settings.php:1094 mod/settings.php:1100 mod/settings.php:1108
-#: mod/settings.php:1112 mod/settings.php:1117 mod/settings.php:1123
-#: mod/settings.php:1129 mod/settings.php:1135 mod/settings.php:1161
-#: mod/settings.php:1162 mod/settings.php:1163 mod/settings.php:1164
-#: mod/settings.php:1165 mod/dfrn_request.php:850 mod/register.php:238
+#: mod/contacts.php:456 mod/follow.php:110 mod/message.php:216
+#: mod/settings.php:1103 mod/settings.php:1109 mod/settings.php:1117
+#: mod/settings.php:1121 mod/settings.php:1126 mod/settings.php:1132
+#: mod/settings.php:1138 mod/settings.php:1144 mod/settings.php:1170
+#: 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:4902
+#: mod/profiles.php:687 mod/api.php:105 include/items.php:4909
 msgid "Yes"
 msgstr "Ja"
 
-#: mod/contacts.php:458 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:116
+#: mod/contacts.php:459 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121
 #: mod/videos.php:131 mod/message.php:219 mod/fbrowser.php:93
-#: mod/fbrowser.php:128 mod/settings.php:651 mod/settings.php:677
-#: mod/dfrn_request.php:864 mod/suggest.php:32 mod/editpost.php:148
-#: mod/photos.php:247 mod/photos.php:336 include/conversation.php:1221
-#: include/items.php:4905
+#: 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
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: mod/contacts.php:470
+#: mod/contacts.php:471
 msgid "Contact has been removed."
 msgstr "Kontakt wurde entfernt."
 
-#: mod/contacts.php:511
+#: mod/contacts.php:512
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr "Du hast mit %s eine beidseitige Freundschaft"
 
-#: mod/contacts.php:515
+#: mod/contacts.php:516
 #, php-format
 msgid "You are sharing with %s"
 msgstr "Du teilst mit %s"
 
-#: mod/contacts.php:520
+#: mod/contacts.php:521
 #, php-format
 msgid "%s is sharing with you"
 msgstr "%s teilt mit Dir"
 
-#: mod/contacts.php:540
+#: mod/contacts.php:541
 msgid "Private communications are not available for this contact."
 msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar."
 
-#: mod/contacts.php:543 mod/admin.php:647
+#: mod/contacts.php:544 mod/admin.php:820
 msgid "Never"
 msgstr "Niemals"
 
-#: mod/contacts.php:547
+#: mod/contacts.php:548
 msgid "(Update was successful)"
 msgstr "(Aktualisierung war erfolgreich)"
 
-#: mod/contacts.php:547
+#: mod/contacts.php:548
 msgid "(Update was not successful)"
 msgstr "(Aktualisierung war nicht erfolgreich)"
 
-#: mod/contacts.php:549
+#: mod/contacts.php:550
 msgid "Suggest friends"
 msgstr "Kontakte vorschlagen"
 
-#: mod/contacts.php:553
+#: mod/contacts.php:554
 #, php-format
 msgid "Network type: %s"
 msgstr "Netzwerktyp: %s"
 
-#: mod/contacts.php:566
+#: mod/contacts.php:567
 msgid "Communications lost with this contact!"
 msgstr "Verbindungen mit diesem Kontakt verloren!"
 
-#: mod/contacts.php:569
+#: mod/contacts.php:570
 msgid "Fetch further information for feeds"
 msgstr "Weitere Informationen zu Feeds holen"
 
-#: mod/contacts.php:570 mod/admin.php:656
+#: mod/contacts.php:571 mod/admin.php:829
 msgid "Disabled"
 msgstr "Deaktiviert"
 
-#: mod/contacts.php:570
+#: mod/contacts.php:571
 msgid "Fetch information"
 msgstr "Beziehe Information"
 
-#: mod/contacts.php:570
+#: mod/contacts.php:571
 msgid "Fetch information and keywords"
 msgstr "Beziehe Information und Schlüsselworte"
 
-#: mod/contacts.php:586 mod/manage.php:143 mod/fsuggest.php:107
+#: mod/contacts.php:587 mod/manage.php:143 mod/fsuggest.php:107
 #: mod/message.php:342 mod/message.php:525 mod/crepair.php:196
 #: mod/events.php:574 mod/content.php:712 mod/install.php:261
 #: mod/install.php:299 mod/mood.php:137 mod/profiles.php:696
@@ -221,308 +221,308 @@ msgstr "Beziehe Information und Schlüsselworte"
 #: object/Item.php:710 view/theme/cleanzero/config.php:80
 #: view/theme/dispy/config.php:70 view/theme/quattro/config.php:64
 #: view/theme/diabook/config.php:148 view/theme/diabook/theme.php:633
-#: view/theme/clean/config.php:83 view/theme/vier/config.php:107
-#: view/theme/duepuntozero/config.php:59
+#: view/theme/vier/config.php:107 view/theme/duepuntozero/config.php:59
 msgid "Submit"
 msgstr "Senden"
 
-#: mod/contacts.php:587
+#: mod/contacts.php:588
 msgid "Profile Visibility"
 msgstr "Profil-Sichtbarkeit"
 
-#: mod/contacts.php:588
+#: mod/contacts.php:589
 #, php-format
 msgid ""
 "Please choose the profile you would like to display to %s when viewing your "
 "profile securely."
 msgstr "Bitte wähle eines Deiner Profile das angezeigt werden soll, wenn %s Dein Profil aufruft."
 
-#: mod/contacts.php:589
+#: mod/contacts.php:590
 msgid "Contact Information / Notes"
 msgstr "Kontakt Informationen / Notizen"
 
-#: mod/contacts.php:590
+#: mod/contacts.php:591
 msgid "Edit contact notes"
 msgstr "Notizen zum Kontakt bearbeiten"
 
-#: mod/contacts.php:595 mod/contacts.php:977 mod/viewcontacts.php:97
+#: mod/contacts.php:596 mod/contacts.php:952 mod/viewcontacts.php:97
 #: mod/nogroup.php:41
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr "Besuche %ss Profil [%s]"
 
-#: mod/contacts.php:596
+#: mod/contacts.php:597
 msgid "Block/Unblock contact"
 msgstr "Kontakt blockieren/freischalten"
 
-#: mod/contacts.php:597
+#: mod/contacts.php:598
 msgid "Ignore contact"
 msgstr "Ignoriere den Kontakt"
 
-#: mod/contacts.php:598
+#: mod/contacts.php:599
 msgid "Repair URL settings"
 msgstr "URL Einstellungen reparieren"
 
-#: mod/contacts.php:599
+#: mod/contacts.php:600
 msgid "View conversations"
 msgstr "Unterhaltungen anzeigen"
 
-#: mod/contacts.php:601
+#: mod/contacts.php:602
 msgid "Delete contact"
 msgstr "Lösche den Kontakt"
 
-#: mod/contacts.php:605
+#: mod/contacts.php:606
 msgid "Last update:"
 msgstr "Letzte Aktualisierung: "
 
-#: mod/contacts.php:607
+#: mod/contacts.php:608
 msgid "Update public posts"
 msgstr "Öffentliche Beiträge aktualisieren"
 
-#: mod/contacts.php:609 mod/admin.php:1656
+#: mod/contacts.php:610
 msgid "Update now"
 msgstr "Jetzt aktualisieren"
 
-#: mod/contacts.php:611 mod/dirfind.php:190 mod/allfriends.php:65
-#: mod/match.php:71 mod/suggest.php:82 include/contact_widgets.php:32
-#: include/Contact.php:310 include/conversation.php:924
+#: mod/contacts.php:612 mod/follow.php:103 mod/dirfind.php:196
+#: mod/allfriends.php:65 mod/match.php:71 mod/suggest.php:82
+#: include/contact_widgets.php:32 include/Contact.php:297
+#: include/conversation.php:924
 msgid "Connect/Follow"
 msgstr "Verbinden/Folgen"
 
-#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864
-#: mod/admin.php:1120
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1310
 msgid "Unblock"
 msgstr "Entsperren"
 
-#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864
-#: mod/admin.php:1119
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1309
 msgid "Block"
 msgstr "Sperren"
 
-#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
 msgid "Unignore"
 msgstr "Ignorieren aufheben"
 
-#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
 #: mod/notifications.php:54 mod/notifications.php:179
 #: mod/notifications.php:259
 msgid "Ignore"
 msgstr "Ignorieren"
 
-#: mod/contacts.php:618
+#: mod/contacts.php:619
 msgid "Currently blocked"
 msgstr "Derzeit geblockt"
 
-#: mod/contacts.php:619
+#: mod/contacts.php:620
 msgid "Currently ignored"
 msgstr "Derzeit ignoriert"
 
-#: mod/contacts.php:620
+#: mod/contacts.php:621
 msgid "Currently archived"
 msgstr "Momentan archiviert"
 
-#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:251
+#: mod/contacts.php:622 mod/notifications.php:172 mod/notifications.php:251
 msgid "Hide this contact from others"
 msgstr "Verbirg diesen Kontakt vor andere"
 
-#: mod/contacts.php:621
+#: mod/contacts.php:622
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein"
 
-#: mod/contacts.php:622
+#: mod/contacts.php:623
 msgid "Notification for new posts"
 msgstr "Benachrichtigung bei neuen Beiträgen"
 
-#: mod/contacts.php:622
+#: mod/contacts.php:623
 msgid "Send a notification of every new post of this contact"
 msgstr "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt."
 
-#: mod/contacts.php:625
+#: mod/contacts.php:626
 msgid "Blacklisted keywords"
 msgstr "Blacklistete Schlüsselworte "
 
-#: mod/contacts.php:625
+#: mod/contacts.php:626
 msgid ""
 "Comma separated list of keywords that should not be converted to hashtags, "
 "when \"Fetch information and keywords\" is selected"
 msgstr "Komma-Separierte Liste mit Schlüsselworten, die nicht in Hashtags konvertiert werden, wenn \"Beziehe Information und Schlüsselworte\" aktiviert wurde"
 
-#: mod/contacts.php:632 mod/follow.php:121 mod/notifications.php:255
+#: mod/contacts.php:633 mod/follow.php:126 mod/notifications.php:255
 msgid "Profile URL"
 msgstr "Profil URL"
 
-#: mod/contacts.php:635 mod/follow.php:125 mod/notifications.php:244
-#: mod/events.php:566 mod/directory.php:145 include/identity.php:304
-#: include/bb2diaspora.php:170 include/event.php:36 include/event.php:60
+#: mod/contacts.php:636 mod/notifications.php:244 mod/events.php:566
+#: mod/directory.php:145 include/identity.php:308 include/bb2diaspora.php:170
+#: include/event.php:36 include/event.php:60
 msgid "Location:"
 msgstr "Ort:"
 
-#: mod/contacts.php:637 mod/follow.php:127 mod/notifications.php:246
-#: mod/directory.php:153 include/identity.php:313 include/identity.php:630
+#: mod/contacts.php:638 mod/notifications.php:246 mod/directory.php:153
+#: include/identity.php:317 include/identity.php:631
 msgid "About:"
 msgstr "Über:"
 
-#: mod/contacts.php:639 mod/follow.php:129 mod/notifications.php:248
-#: include/identity.php:624
+#: mod/contacts.php:640 mod/follow.php:134 mod/notifications.php:248
+#: include/identity.php:625
 msgid "Tags:"
 msgstr "Tags"
 
-#: mod/contacts.php:684
+#: mod/contacts.php:685
 msgid "Suggestions"
 msgstr "Kontaktvorschläge"
 
-#: mod/contacts.php:687
+#: mod/contacts.php:688
 msgid "Suggest potential friends"
 msgstr "Freunde vorschlagen"
 
-#: mod/contacts.php:692 mod/group.php:192
+#: mod/contacts.php:693 mod/group.php:192
 msgid "All Contacts"
 msgstr "Alle Kontakte"
 
-#: mod/contacts.php:695
+#: mod/contacts.php:696
 msgid "Show all contacts"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:700
+#: mod/contacts.php:701
 msgid "Unblocked"
 msgstr "Ungeblockt"
 
-#: mod/contacts.php:703
+#: mod/contacts.php:704
 msgid "Only show unblocked contacts"
 msgstr "Nur nicht-blockierte Kontakte anzeigen"
 
-#: mod/contacts.php:709
+#: mod/contacts.php:710
 msgid "Blocked"
 msgstr "Geblockt"
 
-#: mod/contacts.php:712
+#: mod/contacts.php:713
 msgid "Only show blocked contacts"
 msgstr "Nur blockierte Kontakte anzeigen"
 
-#: mod/contacts.php:718
+#: mod/contacts.php:719
 msgid "Ignored"
 msgstr "Ignoriert"
 
-#: mod/contacts.php:721
+#: mod/contacts.php:722
 msgid "Only show ignored contacts"
 msgstr "Nur ignorierte Kontakte anzeigen"
 
-#: mod/contacts.php:727
+#: mod/contacts.php:728
 msgid "Archived"
 msgstr "Archiviert"
 
-#: mod/contacts.php:730
+#: mod/contacts.php:731
 msgid "Only show archived contacts"
 msgstr "Nur archivierte Kontakte anzeigen"
 
-#: mod/contacts.php:736
+#: mod/contacts.php:737
 msgid "Hidden"
 msgstr "Verborgen"
 
-#: mod/contacts.php:739
+#: mod/contacts.php:740
 msgid "Only show hidden contacts"
 msgstr "Nur verborgene Kontakte anzeigen"
 
-#: mod/contacts.php:792 mod/contacts.php:840 mod/viewcontacts.php:116
+#: mod/contacts.php:793 mod/contacts.php:841 mod/viewcontacts.php:116
 #: include/identity.php:741 include/identity.php:744 include/text.php:1012
 #: include/nav.php:123 include/nav.php:187 view/theme/diabook/theme.php:125
 msgid "Contacts"
 msgstr "Kontakte"
 
-#: mod/contacts.php:796
+#: mod/contacts.php:797
 msgid "Search your contacts"
 msgstr "Suche in deinen Kontakten"
 
-#: mod/contacts.php:797
+#: mod/contacts.php:798
 msgid "Finding: "
 msgstr "Funde: "
 
-#: mod/contacts.php:798 mod/directory.php:210 include/contact_widgets.php:34
+#: mod/contacts.php:799 mod/directory.php:210 include/contact_widgets.php:34
 msgid "Find"
 msgstr "Finde"
 
-#: mod/contacts.php:804 mod/settings.php:146 mod/settings.php:676
+#: mod/contacts.php:805 mod/settings.php:156 mod/settings.php:685
 msgid "Update"
 msgstr "Aktualisierungen"
 
-#: mod/contacts.php:807 mod/contacts.php:878
+#: mod/contacts.php:808 mod/contacts.php:879
 msgid "Archive"
 msgstr "Archivieren"
 
-#: mod/contacts.php:807 mod/contacts.php:878
+#: mod/contacts.php:808 mod/contacts.php:879
 msgid "Unarchive"
 msgstr "Aus Archiv zurückholen"
 
-#: mod/contacts.php:808 mod/group.php:171 mod/admin.php:1118
-#: mod/content.php:440 mod/content.php:743 mod/settings.php:713
+#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1308
+#: 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"
 msgstr "Löschen"
 
-#: mod/contacts.php:821 include/identity.php:686 include/nav.php:75
+#: mod/contacts.php:822 include/identity.php:686 include/nav.php:75
 msgid "Status"
 msgstr "Status"
 
-#: mod/contacts.php:824 include/identity.php:689
+#: mod/contacts.php:825 mod/follow.php:143 include/identity.php:689
 msgid "Status Messages and Posts"
 msgstr "Statusnachrichten und Beiträge"
 
-#: mod/contacts.php:829 mod/profperm.php:104 mod/newmember.php:32
-#: include/identity.php:578 include/identity.php:664 include/identity.php:694
+#: mod/contacts.php:830 mod/profperm.php:104 mod/newmember.php:32
+#: include/identity.php:579 include/identity.php:665 include/identity.php:694
 #: include/nav.php:76 view/theme/diabook/theme.php:124
 msgid "Profile"
 msgstr "Profil"
 
-#: mod/contacts.php:832 include/identity.php:697
+#: mod/contacts.php:833 include/identity.php:697
 msgid "Profile Details"
 msgstr "Profildetails"
 
-#: mod/contacts.php:843
+#: mod/contacts.php:844
 msgid "View all contacts"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:849 mod/common.php:134
+#: mod/contacts.php:850 mod/common.php:134
 msgid "Common Friends"
 msgstr "Gemeinsame Freunde"
 
-#: mod/contacts.php:852
+#: mod/contacts.php:853
 msgid "View all common friends"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:856
+#: mod/contacts.php:857
 msgid "Repair"
 msgstr "Reparieren"
 
-#: mod/contacts.php:859
+#: mod/contacts.php:860
 msgid "Advanced Contact Settings"
 msgstr "Fortgeschrittene Kontakteinstellungen"
 
-#: mod/contacts.php:867
+#: mod/contacts.php:868
 msgid "Toggle Blocked status"
 msgstr "Geblockt-Status ein-/ausschalten"
 
-#: mod/contacts.php:874
+#: mod/contacts.php:875
 msgid "Toggle Ignored status"
 msgstr "Ignoriert-Status ein-/ausschalten"
 
-#: mod/contacts.php:881
+#: mod/contacts.php:882
 msgid "Toggle Archive status"
 msgstr "Archiviert-Status ein-/ausschalten"
 
-#: mod/contacts.php:949
+#: mod/contacts.php:924
 msgid "Mutual Friendship"
 msgstr "Beidseitige Freundschaft"
 
-#: mod/contacts.php:953
+#: mod/contacts.php:928
 msgid "is a fan of yours"
 msgstr "ist ein Fan von dir"
 
-#: mod/contacts.php:957
+#: mod/contacts.php:932
 msgid "you are a fan of"
 msgstr "Du bist Fan von"
 
-#: mod/contacts.php:978 mod/nogroup.php:42
+#: mod/contacts.php:953 mod/nogroup.php:42
 msgid "Edit contact"
 msgstr "Kontakt bearbeiten"
 
@@ -572,23 +572,23 @@ msgstr "Sichtbar für"
 msgid "All Contacts (with secure profile access)"
 msgstr "Alle Kontakte (mit gesichertem Profilzugriff)"
 
-#: mod/display.php:82 mod/display.php:280 mod/display.php:497
-#: mod/viewsrc.php:15 mod/admin.php:196 mod/admin.php:1163 mod/admin.php:1384
-#: mod/notice.php:15 include/items.php:4861
+#: 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
 msgid "Item not found."
 msgstr "Beitrag nicht gefunden."
 
-#: mod/display.php:209 mod/videos.php:197 mod/viewcontacts.php:35
-#: mod/community.php:18 mod/dfrn_request.php:779 mod/search.php:93
+#: mod/display.php:220 mod/videos.php:197 mod/viewcontacts.php:35
+#: mod/community.php:22 mod/dfrn_request.php:786 mod/search.php:93
 #: mod/search.php:99 mod/directory.php:37 mod/photos.php:976
 msgid "Public access denied."
 msgstr "Öffentlicher Zugriff verweigert."
 
-#: mod/display.php:328 mod/profile.php:155
+#: mod/display.php:339 mod/profile.php:155
 msgid "Access to this profile has been restricted."
 msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt."
 
-#: mod/display.php:490
+#: mod/display.php:506
 msgid "Item has been removed."
 msgstr "Eintrag wurde entfernt."
 
@@ -623,8 +623,8 @@ msgid ""
 " join."
 msgstr "Auf der <em>Quick Start</em> Seite findest Du eine kurze Einleitung in die einzelnen Funktionen Deines Profils und die Netzwerk-Reiter, wo Du interessante Foren findest und neue Kontakte knüpfst."
 
-#: mod/newmember.php:22 mod/admin.php:1215 mod/admin.php:1460
-#: mod/settings.php:99 include/nav.php:182 view/theme/diabook/theme.php:544
+#: mod/newmember.php:22 mod/admin.php:1416 mod/admin.php:1674
+#: mod/settings.php:109 include/nav.php:182 view/theme/diabook/theme.php:544
 #: view/theme/diabook/theme.php:648
 msgid "Settings"
 msgstr "Einstellungen"
@@ -685,60 +685,44 @@ msgstr "Trage ein paar öffentliche Stichwörter in Dein Standardprofil ein, die
 msgid "Connecting"
 msgstr "Verbindungen knüpfen"
 
-#: mod/newmember.php:49 mod/newmember.php:51 include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: mod/newmember.php:49
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr "Richte die Verbindung zu Facebook ein, wenn Du im Augenblick ein Facebook-Konto hast und (optional) Deine Facebook-Freunde und -Unterhaltungen importieren willst."
-
 #: mod/newmember.php:51
-msgid ""
-"<em>If</em> this is your own personal server, installing the Facebook addon "
-"may ease your transition to the free social web."
-msgstr "<em>Wenn</em> dies Dein privater Server ist, könnte die Installation des Facebook Connectors Deinen Umzug ins freie soziale Netz angenehmer gestalten."
-
-#: mod/newmember.php:56
 msgid "Importing Emails"
 msgstr "Emails Importieren"
 
-#: mod/newmember.php:56
+#: mod/newmember.php:51
 msgid ""
 "Enter your email access information on your Connector Settings page if you "
 "wish to import and interact with friends or mailing lists from your email "
 "INBOX"
 msgstr "Gib Deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls Du E-Mails aus Deinem Posteingang importieren und mit Freunden und Mailinglisten interagieren willst."
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid "Go to Your Contacts Page"
 msgstr "Gehe zu deiner Kontakt-Seite"
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid ""
 "Your Contacts page is your gateway to managing friendships and connecting "
 "with friends on other networks. Typically you enter their address or site "
 "URL in the <em>Add New Contact</em> dialog."
 msgstr "Die Kontakte-Seite ist die Einstiegsseite, von der aus Du Kontakte verwalten und Dich mit Freunden in anderen Netzwerken verbinden kannst. Normalerweise gibst Du dazu einfach ihre Adresse oder die URL der Seite im Kasten <em>Neuen Kontakt hinzufügen</em> ein."
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid "Go to Your Site's Directory"
 msgstr "Gehe zum Verzeichnis Deiner Friendica Instanz"
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid ""
 "The Directory page lets you find other people in this network or other "
 "federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
 "their profile page. Provide your own Identity Address if requested."
 msgstr "Über die Verzeichnisseite kannst Du andere Personen auf diesem Server oder anderen verknüpften Seiten finden. Halte nach einem <em>Verbinden</em> oder <em>Folgen</em> Link auf deren Profilseiten Ausschau und gib Deine eigene Profiladresse an, falls Du danach gefragt wirst."
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid "Finding New People"
 msgstr "Neue Leute kennenlernen"
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid ""
 "On the side panel of the Contacts page are several tools to find new "
 "friends. We can match people by interest, look up people by name or "
@@ -747,41 +731,41 @@ msgid ""
 "hours."
 msgstr "Im seitlichen Bedienfeld der Kontakteseite gibt es diverse Werkzeuge, um neue Freunde zu finden. Wir können Menschen mit den gleichen Interessen finden, anhand von Namen oder Interessen suchen oder aber aufgrund vorhandener Kontakte neue Freunde vorschlagen.\nAuf einer brandneuen - soeben erstellten - Seite starten die Kontaktvorschläge innerhalb von 24 Stunden."
 
-#: mod/newmember.php:66 include/group.php:283
+#: mod/newmember.php:61 include/group.php:283
 msgid "Groups"
 msgstr "Gruppen"
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid "Group Your Contacts"
 msgstr "Gruppiere deine Kontakte"
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid ""
 "Once you have made some friends, organize them into private conversation "
 "groups from the sidebar of your Contacts page and then you can interact with"
 " each group privately on your Network page."
 msgstr "Sobald Du einige Freunde gefunden hast, organisiere sie in Gruppen zur privaten Kommunikation im Seitenmenü der Kontakte-Seite. Du kannst dann mit jeder dieser Gruppen von der Netzwerkseite aus privat interagieren."
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid "Why Aren't My Posts Public?"
 msgstr "Warum sind meine Beiträge nicht öffentlich?"
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid ""
 "Friendica respects your privacy. By default, your posts will only show up to"
 " people you've added as friends. For more information, see the help section "
 "from the link above."
 msgstr "Friendica respektiert Deine Privatsphäre. Mit der Grundeinstellung werden Deine Beiträge ausschließlich Deinen Kontakten angezeigt. Für weitere Informationen diesbezüglich lies Dir bitte den entsprechenden Abschnitt in der Hilfe unter dem obigen Link durch."
 
-#: mod/newmember.php:78
+#: mod/newmember.php:73
 msgid "Getting Help"
 msgstr "Hilfe bekommen"
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid "Go to the Help Section"
 msgstr "Zum Hilfe Abschnitt gehen"
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid ""
 "Our <strong>help</strong> pages may be consulted for detail on other program"
 " features and resources."
@@ -796,7 +780,7 @@ msgid ""
 "Account not found and OpenID registration is not permitted on this site."
 msgstr "Nutzerkonto wurde nicht gefunden und OpenID-Registrierung ist auf diesem Server nicht gestattet."
 
-#: mod/openid.php:93 include/auth.php:112 include/auth.php:175
+#: mod/openid.php:93 include/auth.php:118 include/auth.php:181
 msgid "Login failed."
 msgstr "Anmeldung fehlgeschlagen."
 
@@ -882,18 +866,18 @@ msgstr "Bild erfolgreich hochgeladen."
 msgid "Image upload failed."
 msgstr "Hochladen des Bildes gescheitert."
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
 #: include/conversation.php:130 include/conversation.php:266
-#: include/text.php:1993 include/diaspora.php:2147
+#: include/text.php:2000 include/diaspora.php:2151
 #: view/theme/diabook/theme.php:471
 msgid "photo"
 msgstr "Foto"
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168 mod/like.php:346
-#: include/conversation.php:125 include/conversation.php:134
-#: include/conversation.php:261 include/conversation.php:270
-#: include/diaspora.php:2147 view/theme/diabook/theme.php:466
-#: view/theme/diabook/theme.php:475
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
+#: include/like.php:325 include/conversation.php:125
+#: include/conversation.php:134 include/conversation.php:261
+#: include/conversation.php:270 include/diaspora.php:2151
+#: view/theme/diabook/theme.php:466 view/theme/diabook/theme.php:475
 msgid "status"
 msgstr "Status"
 
@@ -954,8 +938,8 @@ msgstr "Ignoriert"
 msgid "Keep this window open until done."
 msgstr "Lasse dieses Fenster offen, bis der Vorgang abgeschlossen ist."
 
-#: mod/filer.php:30 include/conversation.php:1133
-#: include/conversation.php:1151
+#: mod/filer.php:30 include/conversation.php:1132
+#: include/conversation.php:1150
 msgid "Save to Folder:"
 msgstr "In diesem Ordner speichern:"
 
@@ -968,54 +952,54 @@ msgstr "- auswählen -"
 msgid "Save"
 msgstr "Speichern"
 
-#: mod/follow.php:18 mod/dfrn_request.php:863
+#: mod/follow.php:19 mod/dfrn_request.php:870
 msgid "Submit Request"
 msgstr "Anfrage abschicken"
 
-#: mod/follow.php:29
+#: mod/follow.php:30
 msgid "You already added this contact."
 msgstr "Du hast den Kontakt bereits hinzugefügt."
 
-#: mod/follow.php:38
+#: mod/follow.php:39
 msgid "Diaspora support isn't enabled. Contact can't be added."
 msgstr "Diaspora Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."
 
-#: mod/follow.php:45
+#: mod/follow.php:46
 msgid "OStatus support is disabled. Contact can't be added."
 msgstr "OStatus Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."
 
-#: mod/follow.php:52
+#: mod/follow.php:53
 msgid "The network type couldn't be detected. Contact can't be added."
 msgstr "Der Netzwerktype wurde nicht erkannt. Der Kontakt kann nicht hinzugefügt werden."
 
-#: mod/follow.php:104 mod/dfrn_request.php:849
+#: mod/follow.php:109 mod/dfrn_request.php:856
 msgid "Please answer the following:"
 msgstr "Bitte beantworte folgendes:"
 
-#: mod/follow.php:105 mod/dfrn_request.php:850
+#: mod/follow.php:110 mod/dfrn_request.php:857
 #, php-format
 msgid "Does %s know you?"
 msgstr "Kennt %s Dich?"
 
-#: mod/follow.php:105 mod/settings.php:1094 mod/settings.php:1100
-#: mod/settings.php:1108 mod/settings.php:1112 mod/settings.php:1117
-#: mod/settings.php:1123 mod/settings.php:1129 mod/settings.php:1135
-#: mod/settings.php:1161 mod/settings.php:1162 mod/settings.php:1163
-#: mod/settings.php:1164 mod/settings.php:1165 mod/dfrn_request.php:850
+#: mod/follow.php:110 mod/settings.php:1103 mod/settings.php:1109
+#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1126
+#: mod/settings.php:1132 mod/settings.php:1138 mod/settings.php:1144
+#: mod/settings.php:1170 mod/settings.php:1171 mod/settings.php:1172
+#: mod/settings.php:1173 mod/settings.php:1174 mod/dfrn_request.php:857
 #: mod/register.php:239 mod/profiles.php:658 mod/profiles.php:662
 #: mod/profiles.php:687 mod/api.php:106
 msgid "No"
 msgstr "Nein"
 
-#: mod/follow.php:106 mod/dfrn_request.php:854
+#: mod/follow.php:111 mod/dfrn_request.php:861
 msgid "Add a personal note:"
 msgstr "Eine persönliche Notiz beifügen:"
 
-#: mod/follow.php:112 mod/dfrn_request.php:860
+#: mod/follow.php:117 mod/dfrn_request.php:867
 msgid "Your Identity Address:"
 msgstr "Adresse Deines Profils:"
 
-#: mod/follow.php:162
+#: mod/follow.php:180
 msgid "Contact added"
 msgstr "Kontakt hinzugefügt"
 
@@ -1023,39 +1007,39 @@ msgstr "Kontakt hinzugefügt"
 msgid "Unable to locate original post."
 msgstr "Konnte den Originalbeitrag nicht finden."
 
-#: mod/item.php:318
+#: mod/item.php:329
 msgid "Empty post discarded."
 msgstr "Leerer Beitrag wurde verworfen."
 
-#: mod/item.php:456 mod/wall_upload.php:213 mod/wall_upload.php:227
-#: mod/wall_upload.php:234 include/Photo.php:954 include/Photo.php:969
-#: include/Photo.php:976 include/Photo.php:998 include/message.php:145
+#: mod/item.php:467 mod/wall_upload.php:213 mod/wall_upload.php:227
+#: mod/wall_upload.php:234 include/Photo.php:958 include/Photo.php:973
+#: include/Photo.php:980 include/Photo.php:1002 include/message.php:145
 msgid "Wall Photos"
 msgstr "Pinnwand-Bilder"
 
-#: mod/item.php:830
+#: mod/item.php:842
 msgid "System error. Post not saved."
 msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden."
 
-#: mod/item.php:959
+#: mod/item.php:971
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social "
 "network."
 msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica."
 
-#: mod/item.php:961
+#: mod/item.php:973
 #, php-format
 msgid "You may visit them online at %s"
 msgstr "Du kannst sie online unter %s besuchen"
 
-#: mod/item.php:962
+#: mod/item.php:974
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr "Falls Du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem Du auf diese Nachricht antwortest."
 
-#: mod/item.php:966
+#: mod/item.php:978
 #, php-format
 msgid "%s posted an update."
 msgstr "%s hat ein Update veröffentlicht."
@@ -1104,7 +1088,7 @@ msgstr "Gruppeneditor"
 msgid "Members"
 msgstr "Mitglieder"
 
-#: mod/group.php:193 mod/network.php:563 mod/content.php:130
+#: mod/group.php:193 mod/network.php:576 mod/content.php:130
 msgid "Group is empty"
 msgstr "Gruppe ist leer"
 
@@ -1206,7 +1190,7 @@ msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werd
 msgid "Unable to update your contact profile details on our system"
 msgstr "Die Updates für Dein Profil konnten nicht gespeichert werden"
 
-#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:734 include/items.php:4273
+#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4280
 msgid "[Name Withheld]"
 msgstr "[Name unterdrückt]"
 
@@ -1215,7 +1199,7 @@ msgstr "[Name unterdrückt]"
 msgid "%1$s has joined %2$s"
 msgstr "%1$s ist %2$s beigetreten"
 
-#: mod/profile.php:21 include/identity.php:53
+#: mod/profile.php:21 include/identity.php:51
 msgid "Requested profile is not available."
 msgstr "Das angefragte Profil ist nicht vorhanden."
 
@@ -1239,7 +1223,7 @@ msgstr "Keine Videos  ausgewählt"
 msgid "Access to this item is restricted."
 msgstr "Zugriff zu diesem Eintrag wurde eingeschränkt."
 
-#: mod/videos.php:383 include/text.php:1465
+#: mod/videos.php:383 include/text.php:1472
 msgid "View Video"
 msgstr "Video ansehen"
 
@@ -1275,7 +1259,7 @@ msgstr "Schlage %s einen Kontakt vor"
 
 #: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86
 #: mod/wall_upload.php:122 mod/wall_upload.php:125 mod/wall_attach.php:17
-#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1735
+#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1781
 msgid "Invalid request."
 msgstr "Ungültige Anfrage"
 
@@ -1331,7 +1315,7 @@ msgid ""
 "Password reset failed."
 msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast Du bereits eine ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert."
 
-#: mod/lostpass.php:109 boot.php:1310
+#: mod/lostpass.php:109 boot.php:1444
 msgid "Password Reset"
 msgstr "Passwort zurücksetzen"
 
@@ -1405,37 +1389,6 @@ msgstr "Spitzname oder E-Mail:"
 msgid "Reset"
 msgstr "Zurücksetzen"
 
-#: mod/like.php:170 include/conversation.php:122 include/conversation.php:258
-#: include/text.php:1991 view/theme/diabook/theme.php:463
-msgid "event"
-msgstr "Event"
-
-#: mod/like.php:187 include/conversation.php:141 include/diaspora.php:2163
-#: view/theme/diabook/theme.php:480
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s mag %2$ss %3$s"
-
-#: mod/like.php:189 include/conversation.php:144
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s mag %2$ss %3$s nicht"
-
-#: mod/like.php:191
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr "%1$s nimmt an %2$ss %3$s teil."
-
-#: mod/like.php:193
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%1$s nimmt nicht an %2$ss %3$s teil."
-
-#: mod/like.php:195
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr "%1$s nimmt eventuell an %2$ss %3$s teil."
-
 #: mod/ping.php:265
 msgid "{0} wants to be your friend"
 msgstr "{0} möchte mit Dir in Kontakt treten"
@@ -1465,11 +1418,11 @@ msgstr "Verwerfen"
 msgid "System"
 msgstr "System"
 
-#: mod/notifications.php:87 mod/admin.php:228 include/nav.php:154
+#: mod/notifications.php:87 mod/admin.php:388 include/nav.php:154
 msgid "Network"
 msgstr "Netzwerk"
 
-#: mod/notifications.php:93 mod/network.php:381
+#: mod/notifications.php:93 mod/network.php:384
 msgid "Personal"
 msgstr "Persönlich"
 
@@ -1511,7 +1464,7 @@ msgstr "Neue-Kontakt Nachricht senden"
 msgid "if applicable"
 msgstr "falls anwendbar"
 
-#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1116
+#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1306
 msgid "Approve"
 msgstr "Genehmigen"
 
@@ -1561,8 +1514,8 @@ msgstr "Kontakt-/Freundschaftsanfrage"
 msgid "New Follower"
 msgstr "Neuer Bewunderer"
 
-#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:306
-#: include/identity.php:589
+#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:310
+#: include/identity.php:590
 msgid "Gender:"
 msgstr "Geschlecht:"
 
@@ -1733,7 +1686,7 @@ msgstr "Unterhaltung gelöscht."
 
 #: mod/message.php:290 mod/message.php:298 mod/message.php:427
 #: mod/message.php:435 mod/wallmessage.php:127 mod/wallmessage.php:135
-#: include/conversation.php:1129 include/conversation.php:1147
+#: include/conversation.php:1128 include/conversation.php:1146
 msgid "Please enter a link URL:"
 msgstr "Bitte gib die URL des Links ein:"
 
@@ -1755,19 +1708,19 @@ msgid "Your message:"
 msgstr "Deine Nachricht:"
 
 #: mod/message.php:339 mod/message.php:523 mod/wallmessage.php:154
-#: mod/editpost.php:110 include/conversation.php:1184
+#: mod/editpost.php:110 include/conversation.php:1183
 msgid "Upload photo"
 msgstr "Foto hochladen"
 
 #: mod/message.php:340 mod/message.php:524 mod/wallmessage.php:155
-#: mod/editpost.php:114 include/conversation.php:1188
+#: mod/editpost.php:114 include/conversation.php:1187
 msgid "Insert web link"
 msgstr "Einen Link einfügen"
 
 #: mod/message.php:341 mod/message.php:526 mod/content.php:501
 #: mod/content.php:885 mod/wallmessage.php:156 mod/editpost.php:124
 #: mod/photos.php:1610 object/Item.php:396 include/conversation.php:713
-#: include/conversation.php:1202
+#: include/conversation.php:1201
 msgid "Please wait"
 msgstr "Bitte warten"
 
@@ -1783,7 +1736,7 @@ msgstr "Nachricht nicht verfügbar."
 msgid "Delete message"
 msgstr "Nachricht löschen"
 
-#: mod/message.php:507 mod/message.php:582
+#: mod/message.php:507 mod/message.php:584
 msgid "Delete conversation"
 msgstr "Unterhaltung löschen"
 
@@ -1797,26 +1750,26 @@ msgstr "Sichere Kommunikation ist nicht verfügbar. <strong>Eventuell</strong> k
 msgid "Send Reply"
 msgstr "Antwort senden"
 
-#: mod/message.php:555
+#: mod/message.php:557
 #, php-format
 msgid "Unknown sender - %s"
 msgstr "'Unbekannter Absender - %s"
 
-#: mod/message.php:558
+#: mod/message.php:560
 #, php-format
 msgid "You and %s"
 msgstr "Du und %s"
 
-#: mod/message.php:561
+#: mod/message.php:563
 #, php-format
 msgid "%s and You"
 msgstr "%s und Du"
 
-#: mod/message.php:585
+#: mod/message.php:587
 msgid "D, d M Y - g:i A"
 msgstr "D, d. M Y - g:i A"
 
-#: mod/message.php:588
+#: mod/message.php:590
 #, php-format
 msgid "%d message"
 msgid_plural "%d messages"
@@ -1868,9 +1821,9 @@ msgstr "Zurück zum Kontakteditor"
 msgid "Refetch contact data"
 msgstr "Kontaktdaten neu laden"
 
-#: mod/crepair.php:170 mod/admin.php:1114 mod/admin.php:1126
-#: mod/admin.php:1127 mod/admin.php:1140 mod/settings.php:652
-#: mod/settings.php:678
+#: 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
 msgid "Name"
 msgstr "Name"
 
@@ -1920,7 +1873,7 @@ msgid ""
 "entries from this contact."
 msgstr "Markiere diesen Kontakt als remote_self (entferntes Konto), dies veranlasst Friendica alle Top-Level Beiträge dieses Kontakts an all Deine Kontakte zu senden."
 
-#: mod/bookmarklet.php:12 boot.php:1296 include/nav.php:91
+#: mod/bookmarklet.php:12 boot.php:1430 include/nav.php:91
 msgid "Login"
 msgstr "Anmeldung"
 
@@ -1932,24 +1885,24 @@ msgstr "Der Beitrag wurde angelegt"
 msgid "Access denied."
 msgstr "Zugriff verweigert."
 
-#: mod/dirfind.php:188 mod/allfriends.php:80 mod/match.php:85
-#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:209
+#: mod/dirfind.php:194 mod/allfriends.php:80 mod/match.php:85
+#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:212
 msgid "Connect"
 msgstr "Verbinden"
 
-#: mod/dirfind.php:189 mod/allfriends.php:64 mod/match.php:70
-#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:296
-#: include/Contact.php:309 include/Contact.php:351
+#: mod/dirfind.php:195 mod/allfriends.php:64 mod/match.php:70
+#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:283
+#: include/Contact.php:296 include/Contact.php:338
 #: include/conversation.php:912 include/conversation.php:926
 msgid "View Profile"
 msgstr "Profil anschauen"
 
-#: mod/dirfind.php:218
+#: mod/dirfind.php:224
 #, php-format
 msgid "People Search - %s"
 msgstr "Personensuche - %s"
 
-#: mod/dirfind.php:225 mod/match.php:105
+#: mod/dirfind.php:231 mod/match.php:105
 msgid "No matches"
 msgstr "Keine Übereinstimmungen"
 
@@ -1973,548 +1926,578 @@ msgstr "Dateien"
 msgid "Contacts who are not members of a group"
 msgstr "Kontakte, die keiner Gruppe zugewiesen sind"
 
-#: mod/admin.php:80
+#: mod/admin.php:92
 msgid "Theme settings updated."
 msgstr "Themeneinstellungen aktualisiert."
 
-#: mod/admin.php:127 mod/admin.php:713
+#: mod/admin.php:156 mod/admin.php:886
 msgid "Site"
 msgstr "Seite"
 
-#: mod/admin.php:128 mod/admin.php:657 mod/admin.php:1109 mod/admin.php:1124
+#: mod/admin.php:157 mod/admin.php:830 mod/admin.php:1299 mod/admin.php:1314
 msgid "Users"
 msgstr "Nutzer"
 
-#: mod/admin.php:129 mod/admin.php:1213 mod/admin.php:1273 mod/settings.php:66
+#: mod/admin.php:158 mod/admin.php:1414 mod/admin.php:1474 mod/settings.php:72
 msgid "Plugins"
 msgstr "Plugins"
 
-#: mod/admin.php:130 mod/admin.php:1458 mod/admin.php:1509
+#: mod/admin.php:159 mod/admin.php:1672 mod/admin.php:1722
 msgid "Themes"
 msgstr "Themen"
 
-#: mod/admin.php:131
+#: mod/admin.php:160 mod/settings.php:50
+msgid "Additional features"
+msgstr "Zusätzliche Features"
+
+#: mod/admin.php:161
 msgid "DB updates"
 msgstr "DB Updates"
 
-#: mod/admin.php:132 mod/admin.php:223
+#: mod/admin.php:162 mod/admin.php:383
 msgid "Inspect Queue"
 msgstr "Warteschlange Inspizieren"
 
-#: mod/admin.php:147 mod/admin.php:156 mod/admin.php:1597
+#: mod/admin.php:163 mod/admin.php:352
+msgid "Federation Statistics"
+msgstr "Federation Statistik"
+
+#: mod/admin.php:177 mod/admin.php:188 mod/admin.php:1790
 msgid "Logs"
 msgstr "Protokolle"
 
-#: mod/admin.php:148
+#: mod/admin.php:178 mod/admin.php:1857
+msgid "View Logs"
+msgstr "Protokolle anzeigen"
+
+#: mod/admin.php:179
 msgid "probe address"
 msgstr "Adresse untersuchen"
 
-#: mod/admin.php:149
+#: mod/admin.php:180
 msgid "check webfinger"
 msgstr "Webfinger überprüfen"
 
-#: mod/admin.php:154 include/nav.php:194
+#: mod/admin.php:186 include/nav.php:194
 msgid "Admin"
 msgstr "Administration"
 
-#: mod/admin.php:155
+#: mod/admin.php:187
 msgid "Plugin Features"
 msgstr "Plugin Features"
 
-#: mod/admin.php:157
+#: mod/admin.php:189
 msgid "diagnostics"
 msgstr "Diagnose"
 
-#: mod/admin.php:158
+#: mod/admin.php:190
 msgid "User registrations waiting for confirmation"
 msgstr "Nutzeranmeldungen die auf Bestätigung warten"
 
-#: mod/admin.php:222 mod/admin.php:272 mod/admin.php:712 mod/admin.php:1108
-#: mod/admin.php:1212 mod/admin.php:1272 mod/admin.php:1457 mod/admin.php:1508
-#: mod/admin.php:1596
+#: mod/admin.php:345
+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 "Diese Seite präsentiert einige Zahlen zu dem bekannten Teil des föderalen sozialen Netzwerks, von dem deine Friendica Installation ein Teil ist. Diese Zahlen sind nicht absolut und reflektieren nur den Teil des Netzwerks, den dein Knoten kennt."
+
+#: mod/admin.php:346
+msgid ""
+"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
+"will improve the data displayed here."
+msgstr "Die Funktion um <em>Automatisch ein Kontaktverzeichnis erstellen</em> ist nicht aktiv. Es wird die hier angezeigten Daten verbessern."
+
+#: 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
 msgid "Administration"
 msgstr "Administration"
 
-#: mod/admin.php:225
+#: mod/admin.php:358
+msgid "Currently this node is aware of nodes from the following platforms:"
+msgstr "Momentan kennt dieser Knoten andere Knoten der folgenden Plattformen:"
+
+#: mod/admin.php:385
 msgid "ID"
 msgstr "ID"
 
-#: mod/admin.php:226
+#: mod/admin.php:386
 msgid "Recipient Name"
 msgstr "Empfänger Name"
 
-#: mod/admin.php:227
+#: mod/admin.php:387
 msgid "Recipient Profile"
 msgstr "Empfänger Profil"
 
-#: mod/admin.php:229
+#: mod/admin.php:389
 msgid "Created"
 msgstr "Erstellt"
 
-#: mod/admin.php:230
+#: mod/admin.php:390
 msgid "Last Tried"
 msgstr "Zuletzt versucht"
 
-#: mod/admin.php:231
+#: mod/admin.php:391
 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 "Auf dieser Seite werden die in der Warteschlange eingereihten Beiträge aufgelistet. Bei diesen Beiträgen schlug die erste Zustellung fehl. Es wird später wiederholt versucht die Beiträge zuzustellen, bis sie schließlich gelöscht werden."
 
-#: mod/admin.php:243 mod/admin.php:1062
+#: mod/admin.php:410 mod/admin.php:1252
 msgid "Normal Account"
 msgstr "Normales Konto"
 
-#: mod/admin.php:244 mod/admin.php:1063
+#: mod/admin.php:411 mod/admin.php:1253
 msgid "Soapbox Account"
 msgstr "Marktschreier-Konto"
 
-#: mod/admin.php:245 mod/admin.php:1064
+#: mod/admin.php:412 mod/admin.php:1254
 msgid "Community/Celebrity Account"
 msgstr "Forum/Promi-Konto"
 
-#: mod/admin.php:246 mod/admin.php:1065
+#: mod/admin.php:413 mod/admin.php:1255
 msgid "Automatic Friend Account"
 msgstr "Automatisches Freundekonto"
 
-#: mod/admin.php:247
+#: mod/admin.php:414
 msgid "Blog Account"
 msgstr "Blog-Konto"
 
-#: mod/admin.php:248
+#: mod/admin.php:415
 msgid "Private Forum"
 msgstr "Privates Forum"
 
-#: mod/admin.php:267
+#: mod/admin.php:434
 msgid "Message queues"
 msgstr "Nachrichten-Warteschlangen"
 
-#: mod/admin.php:273
+#: mod/admin.php:440
 msgid "Summary"
 msgstr "Zusammenfassung"
 
-#: mod/admin.php:275
+#: mod/admin.php:442
 msgid "Registered users"
 msgstr "Registrierte Nutzer"
 
-#: mod/admin.php:277
+#: mod/admin.php:444
 msgid "Pending registrations"
 msgstr "Anstehende Anmeldungen"
 
-#: mod/admin.php:278
+#: mod/admin.php:445
 msgid "Version"
 msgstr "Version"
 
-#: mod/admin.php:283
+#: mod/admin.php:450
 msgid "Active plugins"
 msgstr "Aktive Plugins"
 
-#: mod/admin.php:306
+#: mod/admin.php:473
 msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr "Die Basis-URL konnte nicht analysiert werden. Sie muss mindestens aus <protokoll>://<domain> bestehen"
 
-#: mod/admin.php:589
+#: mod/admin.php:758
 msgid "RINO2 needs mcrypt php extension to work."
 msgstr "RINO2 benötigt die PHP Extension mcrypt."
 
-#: mod/admin.php:597
+#: mod/admin.php:766
 msgid "Site settings updated."
 msgstr "Seiteneinstellungen aktualisiert."
 
-#: mod/admin.php:621 mod/settings.php:903
+#: mod/admin.php:794 mod/settings.php:912
 msgid "No special theme for mobile devices"
 msgstr "Kein spezielles Theme für mobile Geräte verwenden."
 
-#: mod/admin.php:640
+#: mod/admin.php:813
 msgid "No community page"
 msgstr "Keine Gemeinschaftsseite"
 
-#: mod/admin.php:641
+#: mod/admin.php:814
 msgid "Public postings from users of this site"
 msgstr "Öffentliche Beiträge von Nutzer_innen dieser Seite"
 
-#: mod/admin.php:642
+#: mod/admin.php:815
 msgid "Global community page"
 msgstr "Globale Gemeinschaftsseite"
 
-#: mod/admin.php:648
+#: mod/admin.php:821
 msgid "At post arrival"
 msgstr "Beim Empfang von Nachrichten"
 
-#: mod/admin.php:649 include/contact_selectors.php:56
+#: mod/admin.php:822 include/contact_selectors.php:56
 msgid "Frequently"
 msgstr "immer wieder"
 
-#: mod/admin.php:650 include/contact_selectors.php:57
+#: mod/admin.php:823 include/contact_selectors.php:57
 msgid "Hourly"
 msgstr "Stündlich"
 
-#: mod/admin.php:651 include/contact_selectors.php:58
+#: mod/admin.php:824 include/contact_selectors.php:58
 msgid "Twice daily"
 msgstr "Zweimal täglich"
 
-#: mod/admin.php:652 include/contact_selectors.php:59
+#: mod/admin.php:825 include/contact_selectors.php:59
 msgid "Daily"
 msgstr "Täglich"
 
-#: mod/admin.php:658
+#: mod/admin.php:831
 msgid "Users, Global Contacts"
 msgstr "Nutzer, globale Kontakte"
 
-#: mod/admin.php:659
+#: mod/admin.php:832
 msgid "Users, Global Contacts/fallback"
 msgstr "Nutzer, globale Kontakte / Fallback"
 
-#: mod/admin.php:663
+#: mod/admin.php:836
 msgid "One month"
 msgstr "ein Monat"
 
-#: mod/admin.php:664
+#: mod/admin.php:837
 msgid "Three months"
 msgstr "drei Monate"
 
-#: mod/admin.php:665
+#: mod/admin.php:838
 msgid "Half a year"
 msgstr "ein halbes Jahr"
 
-#: mod/admin.php:666
+#: mod/admin.php:839
 msgid "One year"
 msgstr "ein Jahr"
 
-#: mod/admin.php:671
+#: mod/admin.php:844
 msgid "Multi user instance"
 msgstr "Mehrbenutzer Instanz"
 
-#: mod/admin.php:694
+#: mod/admin.php:867
 msgid "Closed"
 msgstr "Geschlossen"
 
-#: mod/admin.php:695
+#: mod/admin.php:868
 msgid "Requires approval"
 msgstr "Bedarf der Zustimmung"
 
-#: mod/admin.php:696
+#: mod/admin.php:869
 msgid "Open"
 msgstr "Offen"
 
-#: mod/admin.php:700
+#: mod/admin.php:873
 msgid "No SSL policy, links will track page SSL state"
 msgstr "Keine SSL Richtlinie, Links werden das verwendete Protokoll beibehalten"
 
-#: mod/admin.php:701
+#: mod/admin.php:874
 msgid "Force all links to use SSL"
 msgstr "SSL für alle Links erzwingen"
 
-#: mod/admin.php:702
+#: mod/admin.php:875
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr "Selbst-unterzeichnetes Zertifikat, SSL nur für lokale Links verwenden (nicht empfohlen)"
 
-#: mod/admin.php:714 mod/admin.php:1274 mod/admin.php:1510 mod/admin.php:1598
-#: mod/settings.php:650 mod/settings.php:760 mod/settings.php:804
-#: mod/settings.php:873 mod/settings.php:960 mod/settings.php:1195
+#: 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/settings.php:813 mod/settings.php:882 mod/settings.php:969
+#: mod/settings.php:1204
 msgid "Save Settings"
 msgstr "Einstellungen speichern"
 
-#: mod/admin.php:715 mod/register.php:263
+#: mod/admin.php:888 mod/register.php:263
 msgid "Registration"
 msgstr "Registrierung"
 
-#: mod/admin.php:716
+#: mod/admin.php:889
 msgid "File upload"
 msgstr "Datei hochladen"
 
-#: mod/admin.php:717
+#: mod/admin.php:890
 msgid "Policies"
 msgstr "Regeln"
 
-#: mod/admin.php:718
+#: mod/admin.php:891
 msgid "Advanced"
 msgstr "Erweitert"
 
-#: mod/admin.php:719
+#: mod/admin.php:892
 msgid "Auto Discovered Contact Directory"
 msgstr "Automatisch ein Kontaktverzeichnis erstellen"
 
-#: mod/admin.php:720
+#: mod/admin.php:893
 msgid "Performance"
 msgstr "Performance"
 
-#: mod/admin.php:721
+#: mod/admin.php:894
 msgid ""
 "Relocate - WARNING: advanced function. Could make this server unreachable."
 msgstr "Umsiedeln - WARNUNG: Könnte diesen Server unerreichbar machen."
 
-#: mod/admin.php:724
+#: mod/admin.php:897
 msgid "Site name"
 msgstr "Seitenname"
 
-#: mod/admin.php:725
+#: mod/admin.php:898
 msgid "Host name"
 msgstr "Host Name"
 
-#: mod/admin.php:726
+#: mod/admin.php:899
 msgid "Sender Email"
 msgstr "Absender für Emails"
 
-#: mod/admin.php:726
+#: mod/admin.php:899
 msgid ""
 "The email address your server shall use to send notification emails from."
 msgstr "Die E-Mail Adresse die dein Server zum Versenden von Benachrichtigungen verwenden soll."
 
-#: mod/admin.php:727
+#: mod/admin.php:900
 msgid "Banner/Logo"
 msgstr "Banner/Logo"
 
-#: mod/admin.php:728
+#: mod/admin.php:901
 msgid "Shortcut icon"
 msgstr "Shortcut Icon"
 
-#: mod/admin.php:728
+#: mod/admin.php:901
 msgid "Link to an icon that will be used for browsers."
 msgstr "Link zu einem Icon, das Browser verwenden werden."
 
-#: mod/admin.php:729
+#: mod/admin.php:902
 msgid "Touch icon"
 msgstr "Touch Icon"
 
-#: mod/admin.php:729
+#: mod/admin.php:902
 msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr "Link zu einem Icon das Tablets und Handies verwenden sollen."
 
-#: mod/admin.php:730
+#: mod/admin.php:903
 msgid "Additional Info"
 msgstr "Zusätzliche Informationen"
 
-#: mod/admin.php:730
+#: mod/admin.php:903
 #, php-format
 msgid ""
 "For public servers: you can add additional information here that will be "
 "listed at %s/siteinfo."
 msgstr "Für öffentliche Server kannst Du hier zusätzliche Informationen angeben, die dann auf %s/siteinfo angezeigt werden."
 
-#: mod/admin.php:731
+#: mod/admin.php:904
 msgid "System language"
 msgstr "Systemsprache"
 
-#: mod/admin.php:732
+#: mod/admin.php:905
 msgid "System theme"
 msgstr "Systemweites Theme"
 
-#: mod/admin.php:732
+#: mod/admin.php:905
 msgid ""
 "Default system theme - may be over-ridden by user profiles - <a href='#' "
 "id='cnftheme'>change theme settings</a>"
 msgstr "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"
 
-#: mod/admin.php:733
+#: mod/admin.php:906
 msgid "Mobile system theme"
 msgstr "Systemweites mobiles Theme"
 
-#: mod/admin.php:733
+#: mod/admin.php:906
 msgid "Theme for mobile devices"
 msgstr "Thema für mobile Geräte"
 
-#: mod/admin.php:734
+#: mod/admin.php:907
 msgid "SSL link policy"
 msgstr "Regeln für SSL Links"
 
-#: mod/admin.php:734
+#: mod/admin.php:907
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr "Bestimmt, ob generierte Links SSL verwenden müssen"
 
-#: mod/admin.php:735
+#: mod/admin.php:908
 msgid "Force SSL"
 msgstr "Erzwinge SSL"
 
-#: mod/admin.php:735
+#: mod/admin.php:908
 msgid ""
 "Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
 " to endless loops."
 msgstr "Erzinge alle Nicht-SSL Anfragen auf SSL - Achtung: auf manchen Systemen verursacht dies eine Endlosschleife."
 
-#: mod/admin.php:736
+#: mod/admin.php:909
 msgid "Old style 'Share'"
 msgstr "Altes \"Teilen\" Element"
 
-#: mod/admin.php:736
+#: mod/admin.php:909
 msgid "Deactivates the bbcode element 'share' for repeating items."
 msgstr "Deaktiviert das BBCode Element \"share\" beim Wiederholen von Beiträgen."
 
-#: mod/admin.php:737
+#: mod/admin.php:910
 msgid "Hide help entry from navigation menu"
 msgstr "Verberge den Menüeintrag für die Hilfe im Navigationsmenü"
 
-#: mod/admin.php:737
+#: mod/admin.php:910
 msgid ""
 "Hides the menu entry for the Help pages from the navigation menu. You can "
 "still access it calling /help directly."
 msgstr "Verbirgt den Menüeintrag für die Hilfe-Seiten im Navigationsmenü. Die Seiten können weiterhin über /help aufgerufen werden."
 
-#: mod/admin.php:738
+#: mod/admin.php:911
 msgid "Single user instance"
 msgstr "Ein-Nutzer Instanz"
 
-#: mod/admin.php:738
+#: mod/admin.php:911
 msgid "Make this instance multi-user or single-user for the named user"
 msgstr "Regelt ob es sich bei dieser Instanz um eine ein Personen Installation oder eine Installation mit mehr als einem Nutzer handelt."
 
-#: mod/admin.php:739
+#: mod/admin.php:912
 msgid "Maximum image size"
 msgstr "Maximale Bildgröße"
 
-#: mod/admin.php:739
+#: mod/admin.php:912
 msgid ""
 "Maximum size in bytes of uploaded images. Default is 0, which means no "
 "limits."
 msgstr "Maximale Uploadgröße von Bildern in Bytes. Standard ist 0, d.h. ohne Limit."
 
-#: mod/admin.php:740
+#: mod/admin.php:913
 msgid "Maximum image length"
 msgstr "Maximale Bildlänge"
 
-#: mod/admin.php:740
+#: mod/admin.php:913
 msgid ""
 "Maximum length in pixels of the longest side of uploaded images. Default is "
 "-1, which means no limits."
 msgstr "Maximale Länge in Pixeln der längsten Seite eines hoch geladenen Bildes. Grundeinstellung ist -1 was keine Einschränkung bedeutet."
 
-#: mod/admin.php:741
+#: mod/admin.php:914
 msgid "JPEG image quality"
 msgstr "Qualität des JPEG Bildes"
 
-#: mod/admin.php:741
+#: mod/admin.php:914
 msgid ""
 "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
 "100, which is full quality."
 msgstr "Hoch geladene JPEG Bilder werden mit dieser Qualität [0-100] gespeichert. Grundeinstellung ist 100, kein Qualitätsverlust."
 
-#: mod/admin.php:743
+#: mod/admin.php:916
 msgid "Register policy"
 msgstr "Registrierungsmethode"
 
-#: mod/admin.php:744
+#: mod/admin.php:917
 msgid "Maximum Daily Registrations"
 msgstr "Maximum täglicher Registrierungen"
 
-#: mod/admin.php:744
+#: mod/admin.php:917
 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 "Wenn die Registrierung weiter oben erlaubt ist, regelt dies die maximale Anzahl von Neuanmeldungen pro Tag. Wenn die Registrierung geschlossen ist, hat diese Einstellung keinen Effekt."
 
-#: mod/admin.php:745
+#: mod/admin.php:918
 msgid "Register text"
 msgstr "Registrierungstext"
 
-#: mod/admin.php:745
+#: mod/admin.php:918
 msgid "Will be displayed prominently on the registration page."
 msgstr "Wird gut sichtbar auf der Registrierungsseite angezeigt."
 
-#: mod/admin.php:746
+#: mod/admin.php:919
 msgid "Accounts abandoned after x days"
 msgstr "Nutzerkonten gelten nach x Tagen als unbenutzt"
 
-#: mod/admin.php:746
+#: mod/admin.php:919
 msgid ""
 "Will not waste system resources polling external sites for abandonded "
 "accounts. Enter 0 for no time limit."
 msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Konten nicht mehr benutzt werden. 0 eingeben für kein Limit."
 
-#: mod/admin.php:747
+#: mod/admin.php:920
 msgid "Allowed friend domains"
 msgstr "Erlaubte Domains für Kontakte"
 
-#: mod/admin.php:747
+#: mod/admin.php:920
 msgid ""
 "Comma separated list of domains which are allowed to establish friendships "
 "with this site. Wildcards are accepted. Empty to allow any domains"
 msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
 
-#: mod/admin.php:748
+#: mod/admin.php:921
 msgid "Allowed email domains"
 msgstr "Erlaubte Domains für E-Mails"
 
-#: mod/admin.php:748
+#: mod/admin.php:921
 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 "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
 
-#: mod/admin.php:749
+#: mod/admin.php:922
 msgid "Block public"
 msgstr "Öffentlichen Zugriff blockieren"
 
-#: mod/admin.php:749
+#: mod/admin.php:922
 msgid ""
 "Check to block public access to all otherwise public personal pages on this "
 "site unless you are currently logged in."
 msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist."
 
-#: mod/admin.php:750
+#: mod/admin.php:923
 msgid "Force publish"
 msgstr "Erzwinge Veröffentlichung"
 
-#: mod/admin.php:750
+#: mod/admin.php:923
 msgid ""
 "Check to force all profiles on this site to be listed in the site directory."
 msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen."
 
-#: mod/admin.php:751
+#: mod/admin.php:924
 msgid "Global directory URL"
 msgstr "URL des weltweiten Verzeichnisses"
 
-#: mod/admin.php:751
+#: mod/admin.php:924
 msgid ""
 "URL to the global directory. If this is not set, the global directory is "
 "completely unavailable to the application."
 msgstr "URL des weltweiten Verzeichnisses. Wenn diese nicht gesetzt ist, ist das Verzeichnis für die Applikation nicht erreichbar."
 
-#: mod/admin.php:752
+#: mod/admin.php:925
 msgid "Allow threaded items"
 msgstr "Erlaube Threads in Diskussionen"
 
-#: mod/admin.php:752
+#: mod/admin.php:925
 msgid "Allow infinite level threading for items on this site."
 msgstr "Erlaube ein unendliches Level für Threads auf dieser Seite."
 
-#: mod/admin.php:753
+#: mod/admin.php:926
 msgid "Private posts by default for new users"
 msgstr "Private Beiträge als Standard für neue Nutzer"
 
-#: mod/admin.php:753
+#: mod/admin.php:926
 msgid ""
 "Set default post permissions for all new members to the default privacy "
 "group rather than public."
 msgstr "Die Standard-Zugriffsrechte für neue Nutzer werden so gesetzt, dass als Voreinstellung in die private Gruppe gepostet wird anstelle von öffentlichen Beiträgen."
 
-#: mod/admin.php:754
+#: mod/admin.php:927
 msgid "Don't include post content in email notifications"
 msgstr "Inhalte von Beiträgen nicht in E-Mail-Benachrichtigungen versenden"
 
-#: mod/admin.php:754
+#: mod/admin.php:927
 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 "Inhalte von Beiträgen/Kommentaren/privaten Nachrichten/usw., zum Datenschutz nicht in E-Mail-Benachrichtigungen einbinden."
 
-#: mod/admin.php:755
+#: mod/admin.php:928
 msgid "Disallow public access to addons listed in the apps menu."
 msgstr "Öffentlichen Zugriff auf Addons im Apps Menü verbieten."
 
-#: mod/admin.php:755
+#: mod/admin.php:928
 msgid ""
 "Checking this box will restrict addons listed in the apps menu to members "
 "only."
 msgstr "Wenn ausgewählt werden die im Apps Menü aufgeführten Addons nur angemeldeten Nutzern der Seite zur Verfügung gestellt."
 
-#: mod/admin.php:756
+#: mod/admin.php:929
 msgid "Don't embed private images in posts"
 msgstr "Private Bilder nicht in Beiträgen einbetten."
 
-#: mod/admin.php:756
+#: mod/admin.php:929
 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 "
@@ -2522,228 +2505,228 @@ msgid ""
 "while."
 msgstr "Ersetze lokal gehostete private Fotos in Beiträgen nicht mit einer eingebetteten Kopie des Bildes. Dies bedeutet, dass Kontakte, die Beiträge mit privaten Fotos erhalten sich zunächst auf den jeweiligen Servern authentifizieren müssen bevor die Bilder geladen und angezeigt werden, was eine gewisse Zeit dauert."
 
-#: mod/admin.php:757
+#: mod/admin.php:930
 msgid "Allow Users to set remote_self"
 msgstr "Nutzern erlauben das remote_self Flag zu setzen"
 
-#: mod/admin.php:757
+#: mod/admin.php:930
 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 "Ist dies ausgewählt kann jeder Nutzer jeden seiner Kontakte als remote_self (entferntes Konto) im Kontakt reparieren Dialog markieren. Nach dem setzten dieses Flags werden alle Top-Level Beiträge dieser Kontakte automatisch in den Stream dieses Nutzers gepostet."
 
-#: mod/admin.php:758
+#: mod/admin.php:931
 msgid "Block multiple registrations"
 msgstr "Unterbinde Mehrfachregistrierung"
 
-#: mod/admin.php:758
+#: mod/admin.php:931
 msgid "Disallow users to register additional accounts for use as pages."
 msgstr "Benutzern nicht erlauben, weitere Konten als zusätzliche Profile anzulegen."
 
-#: mod/admin.php:759
+#: mod/admin.php:932
 msgid "OpenID support"
 msgstr "OpenID Unterstützung"
 
-#: mod/admin.php:759
+#: mod/admin.php:932
 msgid "OpenID support for registration and logins."
 msgstr "OpenID-Unterstützung für Registrierung und Login."
 
-#: mod/admin.php:760
+#: mod/admin.php:933
 msgid "Fullname check"
 msgstr "Namen auf Vollständigkeit überprüfen"
 
-#: mod/admin.php:760
+#: mod/admin.php:933
 msgid ""
 "Force users to register with a space between firstname and lastname in Full "
 "name, as an antispam measure"
 msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden."
 
-#: mod/admin.php:761
+#: mod/admin.php:934
 msgid "UTF-8 Regular expressions"
 msgstr "UTF-8 Reguläre Ausdrücke"
 
-#: mod/admin.php:761
+#: mod/admin.php:934
 msgid "Use PHP UTF8 regular expressions"
 msgstr "PHP UTF8 Ausdrücke verwenden"
 
-#: mod/admin.php:762
+#: mod/admin.php:935
 msgid "Community Page Style"
 msgstr "Art der Gemeinschaftsseite"
 
-#: mod/admin.php:762
+#: mod/admin.php:935
 msgid ""
 "Type of community page to show. 'Global community' shows every public "
 "posting from an open distributed network that arrived on this server."
 msgstr "Welche Art der Gemeinschaftsseite soll verwendet werden? Globale Gemeinschaftsseite zeigt alle öffentlichen Beiträge eines offenen dezentralen Netzwerks an die auf diesem Server eintreffen."
 
-#: mod/admin.php:763
+#: mod/admin.php:936
 msgid "Posts per user on community page"
 msgstr "Anzahl der Beiträge pro Benutzer auf der Gemeinschaftsseite"
 
-#: mod/admin.php:763
+#: mod/admin.php:936
 msgid ""
 "The maximum number of posts per user on the community page. (Not valid for "
 "'Global Community')"
 msgstr "Die Anzahl der Beiträge die von jedem Nutzer maximal auf der Gemeinschaftsseite angezeigt werden sollen. Dieser Parameter wird nicht für die Globale Gemeinschaftsseite genutzt."
 
-#: mod/admin.php:764
+#: mod/admin.php:937
 msgid "Enable OStatus support"
 msgstr "OStatus Unterstützung aktivieren"
 
-#: mod/admin.php:764
+#: mod/admin.php:937
 msgid ""
 "Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
 "communications in OStatus are public, so privacy warnings will be "
 "occasionally displayed."
 msgstr "Biete die eingebaute OStatus (iStatusNet, GNU Social, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt."
 
-#: mod/admin.php:765
+#: mod/admin.php:938
 msgid "OStatus conversation completion interval"
 msgstr "Intervall zum Vervollständigen von OStatus Unterhaltungen"
 
-#: mod/admin.php:765
+#: mod/admin.php:938
 msgid ""
 "How often shall the poller check for new entries in OStatus conversations? "
 "This can be a very ressource task."
 msgstr "Wie oft soll der Poller checken ob es neue Nachrichten in OStatus Unterhaltungen gibt die geladen werden müssen. Je nach Anzahl der OStatus Kontakte könnte dies ein sehr Ressourcen lastiger Job sein."
 
-#: mod/admin.php:766
+#: mod/admin.php:939
 msgid "OStatus support can only be enabled if threading is enabled."
 msgstr "OStatus Unterstützung kann nur aktiviert werden wenn \"Threading\" aktiviert ist. "
 
-#: mod/admin.php:768
+#: mod/admin.php:941
 msgid ""
 "Diaspora support can't be enabled because Friendica was installed into a sub"
 " directory."
 msgstr "Diaspora Unterstützung kann nicht aktiviert werden da Friendica in ein Unterverzeichnis installiert ist."
 
-#: mod/admin.php:769
+#: mod/admin.php:942
 msgid "Enable Diaspora support"
 msgstr "Diaspora Unterstützung aktivieren"
 
-#: mod/admin.php:769
+#: mod/admin.php:942
 msgid "Provide built-in Diaspora network compatibility."
 msgstr "Verwende die eingebaute Diaspora-Verknüpfung."
 
-#: mod/admin.php:770
+#: mod/admin.php:943
 msgid "Only allow Friendica contacts"
 msgstr "Nur Friendica-Kontakte erlauben"
 
-#: mod/admin.php:770
+#: mod/admin.php:943
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
 msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert."
 
-#: mod/admin.php:771
+#: mod/admin.php:944
 msgid "Verify SSL"
 msgstr "SSL Überprüfen"
 
-#: mod/admin.php:771
+#: mod/admin.php:944
 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 "Wenn gewollt, kann man hier eine strenge Zertifikatkontrolle einstellen. Das bedeutet, dass man zu keinen Seiten mit selbst unterzeichnetem SSL eine Verbindung herstellen kann."
 
-#: mod/admin.php:772
+#: mod/admin.php:945
 msgid "Proxy user"
 msgstr "Proxy Nutzer"
 
-#: mod/admin.php:773
+#: mod/admin.php:946
 msgid "Proxy URL"
 msgstr "Proxy URL"
 
-#: mod/admin.php:774
+#: mod/admin.php:947
 msgid "Network timeout"
 msgstr "Netzwerk Wartezeit"
 
-#: mod/admin.php:774
+#: mod/admin.php:947
 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)."
 
-#: mod/admin.php:775
+#: mod/admin.php:948
 msgid "Delivery interval"
 msgstr "Zustellungsintervall"
 
-#: mod/admin.php:775
+#: mod/admin.php:948
 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 "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared-Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
 
-#: mod/admin.php:776
+#: mod/admin.php:949
 msgid "Poll interval"
 msgstr "Abfrageintervall"
 
-#: mod/admin.php:776
+#: mod/admin.php:949
 msgid ""
 "Delay background polling processes by this many seconds to reduce system "
 "load. If 0, use delivery interval."
 msgstr "Verzögere Hintergrundprozesse um diese Anzahl an Sekunden, um die Systemlast zu reduzieren. Bei 0 Sekunden wird das Auslieferungsintervall verwendet."
 
-#: mod/admin.php:777
+#: mod/admin.php:950
 msgid "Maximum Load Average"
 msgstr "Maximum Load Average"
 
-#: mod/admin.php:777
+#: mod/admin.php:950
 msgid ""
 "Maximum system load before delivery and poll processes are deferred - "
 "default 50."
 msgstr "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50"
 
-#: mod/admin.php:778
+#: mod/admin.php:951
 msgid "Maximum Load Average (Frontend)"
 msgstr "Maximum Load Average (Frontend)"
 
-#: mod/admin.php:778
+#: mod/admin.php:951
 msgid "Maximum system load before the frontend quits service - default 50."
 msgstr "Maximale Systemlast bevor Vordergrundprozesse pausiert werden - Standard 50."
 
-#: mod/admin.php:779
+#: mod/admin.php:952
 msgid "Maximum table size for optimization"
 msgstr "Maximale Tabellengröße zur Optimierung"
 
-#: mod/admin.php:779
+#: mod/admin.php:952
 msgid ""
 "Maximum table size (in MB) for the automatic optimization - default 100 MB. "
 "Enter -1 to disable it."
 msgstr "Maximale Tabellengröße (in MB) für die automatische Optimierung - Standard 100 MB. Gib -1 für Deaktivierung ein."
 
-#: mod/admin.php:780
+#: mod/admin.php:953
 msgid "Minimum level of fragmentation"
 msgstr "Minimaler Fragmentationsgrad"
 
-#: mod/admin.php:780
+#: mod/admin.php:953
 msgid ""
 "Minimum fragmenation level to start the automatic optimization - default "
 "value is 30%."
 msgstr "Minimales Fragmentationsgrad von Datenbanktabellen um die automatische Optimierung einzuleiten - Standardwert ist 30%"
 
-#: mod/admin.php:782
+#: mod/admin.php:955
 msgid "Periodical check of global contacts"
 msgstr "Regelmäßig globale Kontakte überprüfen"
 
-#: mod/admin.php:782
+#: mod/admin.php:955
 msgid ""
 "If enabled, the global contacts are checked periodically for missing or "
 "outdated data and the vitality of the contacts and servers."
 msgstr "Wenn diese Option aktiviert ist, werden die globalen Kontakte regelmäßig auf fehlende oder veraltete Daten sowie auf Erreichbarkeit des Kontakts und des Servers überprüft."
 
-#: mod/admin.php:783
+#: mod/admin.php:956
 msgid "Days between requery"
 msgstr "Tage zwischen erneuten Abfragen"
 
-#: mod/admin.php:783
+#: mod/admin.php:956
 msgid "Number of days after which a server is requeried for his contacts."
 msgstr "Legt das Abfrageintervall fest, nachdem ein Server erneut nach Kontakten abgefragt werden soll."
 
-#: mod/admin.php:784
+#: mod/admin.php:957
 msgid "Discover contacts from other servers"
 msgstr "Neue Kontakte auf anderen Servern entdecken"
 
-#: mod/admin.php:784
+#: mod/admin.php:957
 msgid ""
 "Periodically query other servers for contacts. You can choose between "
 "'users': the users on the remote system, 'Global Contacts': active contacts "
@@ -2753,32 +2736,32 @@ msgid ""
 "Global Contacts'."
 msgstr "Regelmäßig andere Server nach potentiellen Kontakten absuchen. Du kannst zwischen 'Nutzern', den tatsächlichen Nutzern des anderen Systems und 'globalen Kontakten', aktiven Kontakten die auf dem System bekannt sind, wählen. Der Fallback-Mechanismus ist für ältere Friendica und Redmatrix Server gedacht, bei denen globale Kontakte noch nicht verfügbar sind. Durch den Fallbackmodus entsteht auf deinem Server eine wesentlich höhere Last, empfohlen wird der Modus 'Nutzer, globale Kontakte'."
 
-#: mod/admin.php:785
+#: mod/admin.php:958
 msgid "Timeframe for fetching global contacts"
 msgstr "Zeitfenster für globale Kontakte"
 
-#: mod/admin.php:785
+#: mod/admin.php:958
 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 "Wenn die Entdeckung neuer Kontakte aktiv ist, definiert dieses Zeitfenster den Zeitraum in dem globale Kontakte als aktiv gelten und von anderen Servern importiert werden."
 
-#: mod/admin.php:786
+#: mod/admin.php:959
 msgid "Search the local directory"
 msgstr "Lokales Verzeichnis durchsuchen"
 
-#: mod/admin.php:786
+#: mod/admin.php:959
 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 "Suche im lokalen Verzeichnis anstelle des globalen Verzeichnisses durchführen. Jede Suche wird im Hintergrund auch im globalen Verzeichnis durchgeführt umd die Suchresultate zu verbessern, wenn diese Suche wiederholt wird."
 
-#: mod/admin.php:788
+#: mod/admin.php:961
 msgid "Publish server information"
 msgstr "Server Informationen veröffentlichen"
 
-#: mod/admin.php:788
+#: mod/admin.php:961
 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 "
@@ -2786,205 +2769,205 @@ msgid ""
 " href='http://the-federation.info/'>the-federation.info</a> for details."
 msgstr "Wenn aktiviert, werden allgemeine Informationen über den Server und Nutzungsdaten veröffentlicht. Die Daten beinhalten den Namen sowie die Version des Servers, die Anzahl der Nutzer_innen mit öffentlichen Profilen, die Anzahl der Beiträge sowie aktivierte Protokolle und Connectoren. Für Details bitte <a href='http://the-federation.info/'>the-federation.info</a> aufrufen."
 
-#: mod/admin.php:790
+#: mod/admin.php:963
 msgid "Use MySQL full text engine"
 msgstr "Nutze MySQL full text engine"
 
-#: mod/admin.php:790
+#: mod/admin.php:963
 msgid ""
 "Activates the full text engine. Speeds up search - but can only search for "
 "four and more characters."
 msgstr "Aktiviert die 'full text engine'. Beschleunigt die Suche - aber es kann nur nach vier oder mehr Zeichen gesucht werden."
 
-#: mod/admin.php:791
+#: mod/admin.php:964
 msgid "Suppress Language"
 msgstr "Sprachinformation unterdrücken"
 
-#: mod/admin.php:791
+#: mod/admin.php:964
 msgid "Suppress language information in meta information about a posting."
 msgstr "Verhindert das Erzeugen der Meta-Information zur Spracherkennung eines Beitrags."
 
-#: mod/admin.php:792
+#: mod/admin.php:965
 msgid "Suppress Tags"
 msgstr "Tags Unterdrücken"
 
-#: mod/admin.php:792
+#: mod/admin.php:965
 msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr "Unterdrückt die Anzeige von Tags am Ende eines Beitrags."
 
-#: mod/admin.php:793
+#: mod/admin.php:966
 msgid "Path to item cache"
 msgstr "Pfad zum Eintrag Cache"
 
-#: mod/admin.php:793
+#: mod/admin.php:966
 msgid "The item caches buffers generated bbcode and external images."
 msgstr "Im Item-Cache werden externe Bilder und geparster BBCode zwischen gespeichert."
 
-#: mod/admin.php:794
+#: mod/admin.php:967
 msgid "Cache duration in seconds"
 msgstr "Cache-Dauer in Sekunden"
 
-#: mod/admin.php:794
+#: mod/admin.php:967
 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 "Wie lange sollen die gecachedten Dateien vorgehalten werden? Grundeinstellung sind 86400 Sekunden (ein Tag). Um den Item Cache zu deaktivieren, setze diesen Wert auf -1."
 
-#: mod/admin.php:795
+#: mod/admin.php:968
 msgid "Maximum numbers of comments per post"
 msgstr "Maximale Anzahl von Kommentaren pro Beitrag"
 
-#: mod/admin.php:795
+#: mod/admin.php:968
 msgid "How much comments should be shown for each post? Default value is 100."
 msgstr "Wie viele Kommentare sollen pro Beitrag angezeigt werden? Standardwert sind 100."
 
-#: mod/admin.php:796
+#: mod/admin.php:969
 msgid "Path for lock file"
 msgstr "Pfad für die Sperrdatei"
 
-#: mod/admin.php:796
+#: mod/admin.php:969
 msgid ""
 "The lock file is used to avoid multiple pollers at one time. Only define a "
 "folder here."
 msgstr "Die lock-Datei wird benutzt, damit nicht mehrere poller auf einmal laufen. Definiere hier einen Dateiverzeichnis."
 
-#: mod/admin.php:797
+#: mod/admin.php:970
 msgid "Temp path"
 msgstr "Temp Pfad"
 
-#: mod/admin.php:797
+#: mod/admin.php:970
 msgid ""
 "If you have a restricted system where the webserver can't access the system "
 "temp path, enter another path here."
 msgstr "Solltest du ein eingeschränktes System haben, auf dem der Webserver nicht auf das temp Verzeichnis des Systems zugreifen kann, setze hier einen anderen Pfad."
 
-#: mod/admin.php:798
+#: mod/admin.php:971
 msgid "Base path to installation"
 msgstr "Basis-Pfad zur Installation"
 
-#: mod/admin.php:798
+#: mod/admin.php:971
 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 "Falls das System nicht den korrekten Pfad zu deiner Installation gefunden hat, gib den richtigen Pfad bitte hier ein. Du solltest hier den Pfad nur auf einem eingeschränkten System angeben müssen, bei dem du mit symbolischen Links auf dein Webverzeichnis verweist."
 
-#: mod/admin.php:799
+#: mod/admin.php:972
 msgid "Disable picture proxy"
 msgstr "Bilder Proxy deaktivieren"
 
-#: mod/admin.php:799
+#: mod/admin.php:972
 msgid ""
 "The picture proxy increases performance and privacy. It shouldn't be used on"
 " systems with very low bandwith."
 msgstr "Der Proxy für Bilder verbessert die Leistung und Privatsphäre der Nutzer. Er sollte nicht auf Systemen verwendet werden, die nur über begrenzte Bandbreite verfügen."
 
-#: mod/admin.php:800
+#: mod/admin.php:973
 msgid "Enable old style pager"
 msgstr "Den Old-Style Pager aktiviren"
 
-#: mod/admin.php:800
+#: mod/admin.php:973
 msgid ""
 "The old style pager has page numbers but slows down massively the page "
 "speed."
 msgstr "Der Old-Style Pager zeigt Seitennummern an, verlangsamt aber auch drastisch das Laden einer Seite."
 
-#: mod/admin.php:801
+#: mod/admin.php:974
 msgid "Only search in tags"
 msgstr "Nur in Tags suchen"
 
-#: mod/admin.php:801
+#: mod/admin.php:974
 msgid "On large systems the text search can slow down the system extremely."
 msgstr "Auf großen Knoten kann die Volltext-Suche das System ausbremsen."
 
-#: mod/admin.php:803
+#: mod/admin.php:976
 msgid "New base url"
 msgstr "Neue Basis-URL"
 
-#: mod/admin.php:803
+#: mod/admin.php:976
 msgid ""
 "Change base url for this server. Sends relocate message to all DFRN contacts"
 " of all users."
 msgstr "Ändert die Basis-URL dieses Servers und sendet eine Umzugsmitteilung an alle DFRN Kontakte deiner Nutzer_innen."
 
-#: mod/admin.php:805
+#: mod/admin.php:978
 msgid "RINO Encryption"
 msgstr "RINO Verschlüsselung"
 
-#: mod/admin.php:805
+#: mod/admin.php:978
 msgid "Encryption layer between nodes."
 msgstr "Verschlüsselung zwischen Friendica Instanzen"
 
-#: mod/admin.php:806
+#: mod/admin.php:979
 msgid "Embedly API key"
 msgstr "Embedly  API Schlüssel"
 
-#: mod/admin.php:806
+#: mod/admin.php:979
 msgid ""
 "<a href='http://embed.ly'>Embedly</a> is used to fetch additional data for "
 "web pages. This is an optional parameter."
 msgstr "<a href='http://embed.ly'>Embedly</a> wird verwendet um zusätzliche Informationen von Webseiten zu laden. Dies ist ein optionaler Parameter."
 
-#: mod/admin.php:824
+#: mod/admin.php:1008
 msgid "Update has been marked successful"
 msgstr "Update wurde als erfolgreich markiert"
 
-#: mod/admin.php:832
+#: mod/admin.php:1016
 #, php-format
 msgid "Database structure update %s was successfully applied."
 msgstr "Das Update %s der Struktur der Datenbank wurde erfolgreich angewandt."
 
-#: mod/admin.php:835
+#: mod/admin.php:1019
 #, php-format
 msgid "Executing of database structure update %s failed with error: %s"
 msgstr "Das Update %s der Struktur der Datenbank schlug mit folgender Fehlermeldung fehl: %s"
 
-#: mod/admin.php:847
+#: mod/admin.php:1031
 #, php-format
 msgid "Executing %s failed with error: %s"
 msgstr "Die Ausführung von %s schlug fehl. Fehlermeldung: %s"
 
-#: mod/admin.php:850
+#: mod/admin.php:1034
 #, php-format
 msgid "Update %s was successfully applied."
 msgstr "Update %s war erfolgreich."
 
-#: mod/admin.php:854
+#: mod/admin.php:1038
 #, php-format
 msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr "Update %s hat keinen Status zurückgegeben. Unbekannter Status."
 
-#: mod/admin.php:856
+#: mod/admin.php:1040
 #, php-format
 msgid "There was no additional update function %s that needed to be called."
 msgstr "Es gab keine weitere Update-Funktion, die von %s ausgeführt werden musste."
 
-#: mod/admin.php:875
+#: mod/admin.php:1059
 msgid "No failed updates."
 msgstr "Keine fehlgeschlagenen Updates."
 
-#: mod/admin.php:876
+#: mod/admin.php:1060
 msgid "Check database structure"
 msgstr "Datenbank Struktur überprüfen"
 
-#: mod/admin.php:881
+#: mod/admin.php:1065
 msgid "Failed Updates"
 msgstr "Fehlgeschlagene Updates"
 
-#: mod/admin.php:882
+#: mod/admin.php:1066
 msgid ""
 "This does not include updates prior to 1139, which did not return a status."
 msgstr "Ohne Updates vor 1139, da diese keinen Status zurückgegeben haben."
 
-#: mod/admin.php:883
+#: mod/admin.php:1067
 msgid "Mark success (if update was manually applied)"
 msgstr "Als erfolgreich markieren (falls das Update manuell installiert wurde)"
 
-#: mod/admin.php:884
+#: mod/admin.php:1068
 msgid "Attempt to execute this update step automatically"
 msgstr "Versuchen, diesen Schritt automatisch auszuführen"
 
-#: mod/admin.php:916
+#: mod/admin.php:1100
 #, php-format
 msgid ""
 "\n"
@@ -2992,7 +2975,7 @@ msgid ""
 "\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr "\nHallo %1$s,\n\nauf %2$s wurde ein Account für Dich angelegt."
 
-#: mod/admin.php:919
+#: mod/admin.php:1103
 #, php-format
 msgid ""
 "\n"
@@ -3022,233 +3005,255 @@ msgid ""
 "\t\t\tThank you and welcome to %4$s."
 msgstr "\nNachfolgend die Anmelde-Details:\n\tAdresse der Seite:\t%1$s\n\tBenutzername:\t%2$s\n\tPasswort:\t%3$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nNun viel Spaß, gute Begegnungen und willkommen auf %4$s."
 
-#: mod/admin.php:951 include/user.php:423
+#: mod/admin.php:1135 include/user.php:423
 #, php-format
 msgid "Registration details for %s"
 msgstr "Details der Registration von %s"
 
-#: mod/admin.php:963
+#: mod/admin.php:1147
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
 msgstr[0] "%s Benutzer geblockt/freigegeben"
 msgstr[1] "%s Benutzer geblockt/freigegeben"
 
-#: mod/admin.php:970
+#: mod/admin.php:1154
 #, php-format
 msgid "%s user deleted"
 msgid_plural "%s users deleted"
 msgstr[0] "%s Nutzer gelöscht"
 msgstr[1] "%s Nutzer gelöscht"
 
-#: mod/admin.php:1009
+#: mod/admin.php:1201
 #, php-format
 msgid "User '%s' deleted"
 msgstr "Nutzer '%s' gelöscht"
 
-#: mod/admin.php:1017
+#: mod/admin.php:1209
 #, php-format
 msgid "User '%s' unblocked"
 msgstr "Nutzer '%s' entsperrt"
 
-#: mod/admin.php:1017
+#: mod/admin.php:1209
 #, php-format
 msgid "User '%s' blocked"
 msgstr "Nutzer '%s' gesperrt"
 
-#: mod/admin.php:1110
+#: mod/admin.php:1300
 msgid "Add User"
 msgstr "Nutzer hinzufügen"
 
-#: mod/admin.php:1111
+#: mod/admin.php:1301
 msgid "select all"
 msgstr "Alle auswählen"
 
-#: mod/admin.php:1112
+#: mod/admin.php:1302
 msgid "User registrations waiting for confirm"
 msgstr "Neuanmeldungen, die auf Deine Bestätigung warten"
 
-#: mod/admin.php:1113
+#: mod/admin.php:1303
 msgid "User waiting for permanent deletion"
 msgstr "Nutzer wartet auf permanente Löschung"
 
-#: mod/admin.php:1114
+#: mod/admin.php:1304
 msgid "Request date"
 msgstr "Anfragedatum"
 
-#: mod/admin.php:1114 mod/admin.php:1126 mod/admin.php:1127 mod/admin.php:1142
+#: mod/admin.php:1304 mod/admin.php:1316 mod/admin.php:1317 mod/admin.php:1332
 #: include/contact_selectors.php:79 include/contact_selectors.php:86
 msgid "Email"
 msgstr "E-Mail"
 
-#: mod/admin.php:1115
+#: mod/admin.php:1305
 msgid "No registrations."
 msgstr "Keine Neuanmeldungen."
 
-#: mod/admin.php:1117
+#: mod/admin.php:1307
 msgid "Deny"
 msgstr "Verwehren"
 
-#: mod/admin.php:1121
+#: mod/admin.php:1311
 msgid "Site admin"
 msgstr "Seitenadministrator"
 
-#: mod/admin.php:1122
+#: mod/admin.php:1312
 msgid "Account expired"
 msgstr "Account ist abgelaufen"
 
-#: mod/admin.php:1125
+#: mod/admin.php:1315
 msgid "New User"
 msgstr "Neuer Nutzer"
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Register date"
 msgstr "Anmeldedatum"
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Last login"
 msgstr "Letzte Anmeldung"
 
-#: mod/admin.php:1126 mod/admin.php:1127
+#: mod/admin.php:1316 mod/admin.php:1317
 msgid "Last item"
 msgstr "Letzter Beitrag"
 
-#: mod/admin.php:1126
+#: mod/admin.php:1316
 msgid "Deleted since"
 msgstr "Gelöscht seit"
 
-#: mod/admin.php:1127 mod/settings.php:41
+#: mod/admin.php:1317 mod/settings.php:41
 msgid "Account"
 msgstr "Nutzerkonto"
 
-#: mod/admin.php:1129
+#: mod/admin.php:1319
 msgid ""
 "Selected users will be deleted!\\n\\nEverything these users had posted on "
 "this site will be permanently deleted!\\n\\nAre you sure?"
 msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist Du sicher?"
 
-#: mod/admin.php:1130
+#: mod/admin.php:1320
 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 "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist Du sicher?"
 
-#: mod/admin.php:1140
+#: mod/admin.php:1330
 msgid "Name of the new user."
 msgstr "Name des neuen Nutzers"
 
-#: mod/admin.php:1141
+#: mod/admin.php:1331
 msgid "Nickname"
 msgstr "Spitzname"
 
-#: mod/admin.php:1141
+#: mod/admin.php:1331
 msgid "Nickname of the new user."
 msgstr "Spitznamen für den neuen Nutzer"
 
-#: mod/admin.php:1142
+#: mod/admin.php:1332
 msgid "Email address of the new user."
 msgstr "Email Adresse des neuen Nutzers"
 
-#: mod/admin.php:1175
+#: mod/admin.php:1375
 #, php-format
 msgid "Plugin %s disabled."
 msgstr "Plugin %s deaktiviert."
 
-#: mod/admin.php:1179
+#: mod/admin.php:1379
 #, php-format
 msgid "Plugin %s enabled."
 msgstr "Plugin %s aktiviert."
 
-#: mod/admin.php:1189 mod/admin.php:1413
+#: mod/admin.php:1390 mod/admin.php:1626
 msgid "Disable"
 msgstr "Ausschalten"
 
-#: mod/admin.php:1191 mod/admin.php:1415
+#: mod/admin.php:1392 mod/admin.php:1628
 msgid "Enable"
 msgstr "Einschalten"
 
-#: mod/admin.php:1214 mod/admin.php:1459
+#: mod/admin.php:1415 mod/admin.php:1673
 msgid "Toggle"
 msgstr "Umschalten"
 
-#: mod/admin.php:1222 mod/admin.php:1469
+#: mod/admin.php:1423 mod/admin.php:1682
 msgid "Author: "
 msgstr "Autor:"
 
-#: mod/admin.php:1223 mod/admin.php:1470
+#: mod/admin.php:1424 mod/admin.php:1683
 msgid "Maintainer: "
 msgstr "Betreuer:"
 
-#: mod/admin.php:1275
-#: view/smarty3/compiled/f835364006028b1061f37be121c9bd9db5fa50a9.file.admin_plugins.tpl.php:42
+#: mod/admin.php:1476
 msgid "Reload active plugins"
 msgstr "Aktive Plugins neu laden"
 
-#: mod/admin.php:1373
+#: mod/admin.php:1481
+#, php-format
+msgid ""
+"There are currently no plugins available on your node. You can find the "
+"official plugin repository at %1$s and might find other interesting plugins "
+"in the open plugin registry at %2$s"
+msgstr "Es sind derzeit keine Plugins auf diesem Knoten verfügbar. Du findest das offizielle Plugin-Repository unter %1$s und weitere eventuell interessante Plugins im offenen Plugins-Verzeichnis auf %2$s."
+
+#: mod/admin.php:1586
 msgid "No themes found."
 msgstr "Keine Themen gefunden."
 
-#: mod/admin.php:1451
+#: mod/admin.php:1664
 msgid "Screenshot"
 msgstr "Bildschirmfoto"
 
-#: mod/admin.php:1511
+#: mod/admin.php:1724
 msgid "Reload active themes"
 msgstr "Aktives Theme neu laden"
 
-#: mod/admin.php:1515
+#: mod/admin.php:1729
+#, php-format
+msgid "No themes found on the system. They should be paced in %1$s"
+msgstr "Es wurden keine Themes auf dem System gefunden. Diese sollten in %1$s patziert werden."
+
+#: mod/admin.php:1730
 msgid "[Experimental]"
 msgstr "[Experimentell]"
 
-#: mod/admin.php:1516
+#: mod/admin.php:1731
 msgid "[Unsupported]"
 msgstr "[Nicht unterstützt]"
 
-#: mod/admin.php:1543
+#: mod/admin.php:1755
 msgid "Log settings updated."
 msgstr "Protokolleinstellungen aktualisiert."
 
-#: mod/admin.php:1599
+#: mod/admin.php:1792
 msgid "Clear"
 msgstr "löschen"
 
-#: mod/admin.php:1605
+#: mod/admin.php:1797
 msgid "Enable Debugging"
 msgstr "Protokoll führen"
 
-#: mod/admin.php:1606
+#: mod/admin.php:1798
 msgid "Log file"
 msgstr "Protokolldatei"
 
-#: mod/admin.php:1606
+#: mod/admin.php:1798
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis."
 
-#: mod/admin.php:1607
+#: mod/admin.php:1799
 msgid "Log level"
 msgstr "Protokoll-Level"
 
-#: mod/admin.php:1657 include/acl_selectors.php:348
-msgid "Close"
-msgstr "Schließen"
+#: mod/admin.php:1802
+msgid "PHP logging"
+msgstr "PHP Protokollieren"
 
-#: mod/admin.php:1663
-msgid "FTP Host"
-msgstr "FTP Host"
+#: mod/admin.php:1803
+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 "
+"'error_log' line is relative to the friendica top-level directory and must "
+"be writeable by the web server. The option '1' for 'log_errors' and "
+"'display_errors' is to enable these options, set to '0' to disable them."
+msgstr "Um PHP Warnungen und Fehler zu protokollieren, kannst du die folgenden Zeilen zur .htconfig.php Datei deiner Installation hinzufügen. Den Dateinamen der Log-Datei legst du in der Zeile mit dem 'error_log' fest,  Er ist relativ zum Friendica-Stammverzeichnis und muss schreibbar durch den Webserver sein. Eine \"1\" als Option für die Punkte 'log_errors' und 'display_errors' aktiviert die Funktionen zum Protokollieren bzw. Anzeigen der Fehler, eine \"0\" deaktiviert sie."
 
-#: mod/admin.php:1664
-msgid "FTP Path"
-msgstr "FTP Pfad"
+#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+msgid "Off"
+msgstr "Aus"
 
-#: mod/admin.php:1665
-msgid "FTP User"
-msgstr "FTP Nutzername"
+#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+msgid "On"
+msgstr "An"
+
+#: mod/admin.php:1930
+#, php-format
+msgid "Lock feature %s"
+msgstr "Feature festlegen: %s"
 
-#: mod/admin.php:1666
-msgid "FTP Password"
-msgstr "FTP Passwort"
+#: mod/admin.php:1938
+msgid "Manage Additional Features"
+msgstr "Zusätzliche Features Verwalten"
 
 #: mod/network.php:146
 #, php-format
@@ -3259,7 +3264,7 @@ msgstr "Suchergebnisse für: %s"
 msgid "Remove term"
 msgstr "Begriff entfernen"
 
-#: mod/network.php:200 mod/search.php:34 include/features.php:79
+#: mod/network.php:200 mod/search.php:34 include/features.php:84
 msgid "Saved Searches"
 msgstr "Gespeicherte Suchen"
 
@@ -3267,51 +3272,51 @@ msgstr "Gespeicherte Suchen"
 msgid "add"
 msgstr "hinzufügen"
 
-#: mod/network.php:362
+#: mod/network.php:365
 msgid "Commented Order"
 msgstr "Neueste Kommentare"
 
-#: mod/network.php:365
+#: mod/network.php:368
 msgid "Sort by Comment Date"
 msgstr "Nach Kommentardatum sortieren"
 
-#: mod/network.php:370
+#: mod/network.php:373
 msgid "Posted Order"
 msgstr "Neueste Beiträge"
 
-#: mod/network.php:373
+#: mod/network.php:376
 msgid "Sort by Post Date"
 msgstr "Nach Beitragsdatum sortieren"
 
-#: mod/network.php:384
+#: mod/network.php:387
 msgid "Posts that mention or involve you"
 msgstr "Beiträge, in denen es um Dich geht"
 
-#: mod/network.php:392
+#: mod/network.php:395
 msgid "New"
 msgstr "Neue"
 
-#: mod/network.php:395
+#: mod/network.php:398
 msgid "Activity Stream - by date"
 msgstr "Aktivitäten-Stream - nach Datum"
 
-#: mod/network.php:403
+#: mod/network.php:406
 msgid "Shared Links"
 msgstr "Geteilte Links"
 
-#: mod/network.php:406
+#: mod/network.php:409
 msgid "Interesting Links"
 msgstr "Interessante Links"
 
-#: mod/network.php:414
+#: mod/network.php:417
 msgid "Starred"
 msgstr "Markierte"
 
-#: mod/network.php:417
+#: mod/network.php:420
 msgid "Favourite Posts"
 msgstr "Favorisierte Beiträge"
 
-#: mod/network.php:476
+#: mod/network.php:479
 #, php-format
 msgid "Warning: This group contains %s member from an insecure network."
 msgid_plural ""
@@ -3319,24 +3324,24 @@ msgid_plural ""
 msgstr[0] "Warnung: Diese Gruppe beinhaltet %s Person aus einem unsicheren Netzwerk."
 msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus unsicheren Netzwerken."
 
-#: mod/network.php:479
+#: mod/network.php:482
 msgid "Private messages to this group are at risk of public disclosure."
 msgstr "Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten."
 
-#: mod/network.php:546 mod/content.php:119
+#: mod/network.php:549 mod/content.php:119
 msgid "No such group"
 msgstr "Es gibt keine solche Gruppe"
 
-#: mod/network.php:574 mod/content.php:135
+#: mod/network.php:580 mod/content.php:135
 #, php-format
 msgid "Group: %s"
 msgstr "Gruppe: %s"
 
-#: mod/network.php:606
+#: mod/network.php:608
 msgid "Private messages to this person are at risk of public disclosure."
 msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen."
 
-#: mod/network.php:611
+#: mod/network.php:613
 msgid "Invalid contact."
 msgstr "Ungültiger Kontakt."
 
@@ -3380,11 +3385,11 @@ msgstr "Fr"
 msgid "Sat"
 msgstr "Sa"
 
-#: mod/events.php:208 mod/settings.php:939 include/text.php:1274
+#: mod/events.php:208 mod/settings.php:948 include/text.php:1274
 msgid "Sunday"
 msgstr "Sonntag"
 
-#: mod/events.php:209 mod/settings.php:939 include/text.php:1274
+#: mod/events.php:209 mod/settings.php:948 include/text.php:1274
 msgid "Monday"
 msgstr "Montag"
 
@@ -3524,7 +3529,7 @@ msgstr "l, F j"
 msgid "Edit event"
 msgstr "Veranstaltung bearbeiten"
 
-#: mod/events.php:421 include/text.php:1721 include/text.php:1728
+#: mod/events.php:421 include/text.php:1728 include/text.php:1735
 msgid "link to source"
 msgstr "Link zum Originalbeitrag"
 
@@ -3587,7 +3592,7 @@ msgstr "Veranstaltung teilen"
 
 #: mod/events.php:572 mod/content.php:721 mod/editpost.php:145
 #: mod/photos.php:1631 mod/photos.php:1679 mod/photos.php:1767
-#: object/Item.php:719 include/conversation.php:1217
+#: object/Item.php:719 include/conversation.php:1216
 msgid "Preview"
 msgstr "Vorschau"
 
@@ -3631,15 +3636,15 @@ msgstr[0] "%d Kommentar"
 msgstr[1] "%d Kommentare"
 
 #: mod/content.php:607 object/Item.php:421 object/Item.php:434
-#: include/text.php:1997
+#: include/text.php:2004
 msgid "comment"
 msgid_plural "comments"
 msgstr[0] "Kommentar"
 msgstr[1] "Kommentare"
 
-#: mod/content.php:608 boot.php:788 object/Item.php:422
+#: mod/content.php:608 boot.php:870 object/Item.php:422
 #: include/contact_widgets.php:242 include/forums.php:110
-#: include/items.php:5181 view/theme/vier/theme.php:264
+#: include/items.php:5188 view/theme/vier/theme.php:264
 msgid "show more"
 msgstr "mehr anzeigen"
 
@@ -3677,7 +3682,7 @@ msgid "This is you"
 msgstr "Das bist Du"
 
 #: mod/content.php:711 mod/photos.php:1629 mod/photos.php:1677
-#: mod/photos.php:1765 boot.php:787 object/Item.php:393 object/Item.php:709
+#: mod/photos.php:1765 boot.php:869 object/Item.php:393 object/Item.php:709
 msgid "Comment"
 msgstr "Kommentar"
 
@@ -3713,7 +3718,7 @@ msgstr "Link"
 msgid "Video"
 msgstr "Video"
 
-#: mod/content.php:730 mod/settings.php:712 object/Item.php:122
+#: mod/content.php:730 mod/settings.php:721 object/Item.php:122
 #: object/Item.php:124
 msgid "Edit"
 msgstr "Bearbeiten"
@@ -4109,19 +4114,19 @@ msgid ""
 "your site allow private mail from unknown senders."
 msgstr "Wenn Du möchtest, dass %s Dir antworten kann, überprüfe Deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern."
 
-#: mod/help.php:31
+#: mod/help.php:41
 msgid "Help:"
 msgstr "Hilfe:"
 
-#: mod/help.php:36 include/nav.php:113 view/theme/vier/theme.php:302
+#: mod/help.php:47 include/nav.php:113 view/theme/vier/theme.php:302
 msgid "Help"
 msgstr "Hilfe"
 
-#: mod/help.php:42 mod/p.php:16 mod/p.php:25 index.php:270
+#: mod/help.php:53 mod/p.php:16 mod/p.php:25 index.php:270
 msgid "Not Found"
 msgstr "Nicht gefunden"
 
-#: mod/help.php:45 index.php:273
+#: mod/help.php:56 index.php:273
 msgid "Page not found."
 msgstr "Seite nicht gefunden."
 
@@ -4168,16 +4173,16 @@ msgstr "Profilübereinstimmungen"
 msgid "link"
 msgstr "Link"
 
-#: mod/community.php:23
+#: mod/community.php:27
 msgid "Not available."
 msgstr "Nicht verfügbar."
 
-#: mod/community.php:32 include/nav.php:136 include/nav.php:138
+#: mod/community.php:36 include/nav.php:136 include/nav.php:138
 #: view/theme/diabook/theme.php:129
 msgid "Community"
 msgstr "Gemeinschaft"
 
-#: mod/community.php:62 mod/community.php:71 mod/search.php:228
+#: mod/community.php:66 mod/community.php:75 mod/search.php:228
 msgid "No results."
 msgstr "Keine Ergebnisse."
 
@@ -4185,822 +4190,812 @@ msgstr "Keine Ergebnisse."
 msgid "everybody"
 msgstr "jeder"
 
-#: mod/settings.php:47
-msgid "Additional features"
-msgstr "Zusätzliche Features"
-
-#: mod/settings.php:53
+#: mod/settings.php:58
 msgid "Display"
 msgstr "Anzeige"
 
-#: mod/settings.php:60 mod/settings.php:855
+#: mod/settings.php:65 mod/settings.php:864
 msgid "Social Networks"
 msgstr "Soziale Netzwerke"
 
-#: mod/settings.php:72 include/nav.php:180
+#: mod/settings.php:79 include/nav.php:180
 msgid "Delegations"
 msgstr "Delegationen"
 
-#: mod/settings.php:78
+#: mod/settings.php:86
 msgid "Connected apps"
 msgstr "Verbundene Programme"
 
-#: mod/settings.php:84 mod/uexport.php:85
+#: mod/settings.php:93 mod/uexport.php:85
 msgid "Export personal data"
 msgstr "Persönliche Daten exportieren"
 
-#: mod/settings.php:90
+#: mod/settings.php:100
 msgid "Remove account"
 msgstr "Konto löschen"
 
-#: mod/settings.php:143
+#: mod/settings.php:153
 msgid "Missing some important data!"
 msgstr "Wichtige Daten fehlen!"
 
-#: mod/settings.php:256
+#: mod/settings.php:266
 msgid "Failed to connect with email account using the settings provided."
 msgstr "Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich."
 
-#: mod/settings.php:261
+#: mod/settings.php:271
 msgid "Email settings updated."
 msgstr "E-Mail Einstellungen bearbeitet."
 
-#: mod/settings.php:276
+#: mod/settings.php:286
 msgid "Features updated"
 msgstr "Features aktualisiert"
 
-#: mod/settings.php:343
+#: mod/settings.php:353
 msgid "Relocate message has been send to your contacts"
 msgstr "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet."
 
-#: mod/settings.php:357 include/user.php:39
+#: mod/settings.php:367 include/user.php:39
 msgid "Passwords do not match. Password unchanged."
 msgstr "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert."
 
-#: mod/settings.php:362
+#: mod/settings.php:372
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert."
 
-#: mod/settings.php:370
+#: mod/settings.php:380
 msgid "Wrong password."
 msgstr "Falsches Passwort."
 
-#: mod/settings.php:381
+#: mod/settings.php:391
 msgid "Password changed."
 msgstr "Passwort geändert."
 
-#: mod/settings.php:383
+#: mod/settings.php:393
 msgid "Password update failed. Please try again."
 msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."
 
-#: mod/settings.php:452
+#: mod/settings.php:462
 msgid " Please use a shorter name."
 msgstr " Bitte verwende einen kürzeren Namen."
 
-#: mod/settings.php:454
+#: mod/settings.php:464
 msgid " Name too short."
 msgstr " Name ist zu kurz."
 
-#: mod/settings.php:463
+#: mod/settings.php:473
 msgid "Wrong Password"
 msgstr "Falsches Passwort"
 
-#: mod/settings.php:468
+#: mod/settings.php:478
 msgid " Not valid email."
 msgstr " Keine gültige E-Mail."
 
-#: mod/settings.php:474
+#: mod/settings.php:484
 msgid " Cannot change to that email."
 msgstr "Ändern der E-Mail nicht möglich. "
 
-#: mod/settings.php:530
+#: mod/settings.php:540
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt."
 
-#: mod/settings.php:534
+#: mod/settings.php:544
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte."
 
-#: mod/settings.php:573
+#: mod/settings.php:583
 msgid "Settings updated."
 msgstr "Einstellungen aktualisiert."
 
-#: mod/settings.php:649 mod/settings.php:675 mod/settings.php:711
+#: mod/settings.php:658 mod/settings.php:684 mod/settings.php:720
 msgid "Add application"
 msgstr "Programm hinzufügen"
 
-#: mod/settings.php:653 mod/settings.php:679
+#: mod/settings.php:662 mod/settings.php:688
 msgid "Consumer Key"
 msgstr "Consumer Key"
 
-#: mod/settings.php:654 mod/settings.php:680
+#: mod/settings.php:663 mod/settings.php:689
 msgid "Consumer Secret"
 msgstr "Consumer Secret"
 
-#: mod/settings.php:655 mod/settings.php:681
+#: mod/settings.php:664 mod/settings.php:690
 msgid "Redirect"
 msgstr "Umleiten"
 
-#: mod/settings.php:656 mod/settings.php:682
+#: mod/settings.php:665 mod/settings.php:691
 msgid "Icon url"
 msgstr "Icon URL"
 
-#: mod/settings.php:667
+#: mod/settings.php:676
 msgid "You can't edit this application."
 msgstr "Du kannst dieses Programm nicht bearbeiten."
 
-#: mod/settings.php:710
+#: mod/settings.php:719
 msgid "Connected Apps"
 msgstr "Verbundene Programme"
 
-#: mod/settings.php:714
+#: mod/settings.php:723
 msgid "Client key starts with"
 msgstr "Anwenderschlüssel beginnt mit"
 
-#: mod/settings.php:715
+#: mod/settings.php:724
 msgid "No name"
 msgstr "Kein Name"
 
-#: mod/settings.php:716
+#: mod/settings.php:725
 msgid "Remove authorization"
 msgstr "Autorisierung entziehen"
 
-#: mod/settings.php:728
+#: mod/settings.php:737
 msgid "No Plugin settings configured"
 msgstr "Keine Plugin-Einstellungen konfiguriert"
 
-#: mod/settings.php:736
+#: mod/settings.php:745
 msgid "Plugin Settings"
 msgstr "Plugin-Einstellungen"
 
-#: mod/settings.php:750
-msgid "Off"
-msgstr "Aus"
-
-#: mod/settings.php:750
-msgid "On"
-msgstr "An"
-
-#: mod/settings.php:758
+#: mod/settings.php:767
 msgid "Additional Features"
 msgstr "Zusätzliche Features"
 
-#: mod/settings.php:768 mod/settings.php:772
+#: mod/settings.php:777 mod/settings.php:781
 msgid "General Social Media Settings"
 msgstr "Allgemeine Einstellungen zu Sozialen Medien"
 
-#: mod/settings.php:778
+#: mod/settings.php:787
 msgid "Disable intelligent shortening"
 msgstr "Intelligentes Link kürzen ausschalten"
 
-#: mod/settings.php:780
+#: mod/settings.php:789
 msgid ""
 "Normally the system tries to find the best link to add to shortened posts. "
 "If this option is enabled then every shortened post will always point to the"
 " original friendica post."
 msgstr "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt."
 
-#: mod/settings.php:786
+#: mod/settings.php:795
 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
 msgstr "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen"
 
-#: mod/settings.php:788
+#: mod/settings.php:797
 msgid ""
 "If you receive a message from an unknown OStatus user, this option decides "
 "what to do. If it is checked, a new contact will be created for every "
 "unknown user."
 msgstr "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,."
 
-#: mod/settings.php:797
+#: mod/settings.php:806
 msgid "Your legacy GNU Social account"
 msgstr "Dein alter GNU Social Account"
 
-#: mod/settings.php:799
+#: mod/settings.php:808
 msgid ""
 "If you enter your old GNU Social/Statusnet account name here (in the format "
 "user@domain.tld), your contacts will be added automatically. The field will "
 "be emptied when done."
 msgstr "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden."
 
-#: mod/settings.php:802
+#: mod/settings.php:811
 msgid "Repair OStatus subscriptions"
 msgstr "OStatus Abonnements reparieren"
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s"
 
-#: mod/settings.php:811 mod/dfrn_request.php:858
+#: mod/settings.php:820 mod/dfrn_request.php:865
 #: include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr "Diaspora"
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 msgid "enabled"
 msgstr "eingeschaltet"
 
-#: mod/settings.php:811 mod/settings.php:812
+#: mod/settings.php:820 mod/settings.php:821
 msgid "disabled"
 msgstr "ausgeschaltet"
 
-#: mod/settings.php:812
+#: mod/settings.php:821
 msgid "GNU Social (OStatus)"
 msgstr "GNU Social (OStatus)"
 
-#: mod/settings.php:848
+#: mod/settings.php:857
 msgid "Email access is disabled on this site."
 msgstr "Zugriff auf E-Mails für diese Seite deaktiviert."
 
-#: mod/settings.php:860
+#: mod/settings.php:869
 msgid "Email/Mailbox Setup"
 msgstr "E-Mail/Postfach-Einstellungen"
 
-#: mod/settings.php:861
+#: mod/settings.php:870
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an."
 
-#: mod/settings.php:862
+#: mod/settings.php:871
 msgid "Last successful email check:"
 msgstr "Letzter erfolgreicher E-Mail Check"
 
-#: mod/settings.php:864
+#: mod/settings.php:873
 msgid "IMAP server name:"
 msgstr "IMAP-Server-Name:"
 
-#: mod/settings.php:865
+#: mod/settings.php:874
 msgid "IMAP port:"
 msgstr "IMAP-Port:"
 
-#: mod/settings.php:866
+#: mod/settings.php:875
 msgid "Security:"
 msgstr "Sicherheit:"
 
-#: mod/settings.php:866 mod/settings.php:871
+#: mod/settings.php:875 mod/settings.php:880
 msgid "None"
 msgstr "Keine"
 
-#: mod/settings.php:867
+#: mod/settings.php:876
 msgid "Email login name:"
 msgstr "E-Mail-Login-Name:"
 
-#: mod/settings.php:868
+#: mod/settings.php:877
 msgid "Email password:"
 msgstr "E-Mail-Passwort:"
 
-#: mod/settings.php:869
+#: mod/settings.php:878
 msgid "Reply-to address:"
 msgstr "Reply-to Adresse:"
 
-#: mod/settings.php:870
+#: mod/settings.php:879
 msgid "Send public posts to all email contacts:"
 msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Action after import:"
 msgstr "Aktion nach Import:"
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Mark as seen"
 msgstr "Als gelesen markieren"
 
-#: mod/settings.php:871
+#: mod/settings.php:880
 msgid "Move to folder"
 msgstr "In einen Ordner verschieben"
 
-#: mod/settings.php:872
+#: mod/settings.php:881
 msgid "Move to folder:"
 msgstr "In diesen Ordner verschieben:"
 
-#: mod/settings.php:958
+#: mod/settings.php:967
 msgid "Display Settings"
 msgstr "Anzeige-Einstellungen"
 
-#: mod/settings.php:964 mod/settings.php:982
+#: mod/settings.php:973 mod/settings.php:991
 msgid "Display Theme:"
 msgstr "Theme:"
 
-#: mod/settings.php:965
+#: mod/settings.php:974
 msgid "Mobile Theme:"
 msgstr "Mobiles Theme"
 
-#: mod/settings.php:966
+#: mod/settings.php:975
 msgid "Update browser every xx seconds"
 msgstr "Browser alle xx Sekunden aktualisieren"
 
-#: mod/settings.php:966
+#: mod/settings.php:975
 msgid "Minimum of 10 seconds. Enter -1 to disable it."
 msgstr "Minimum sind 10 Sekeunden. Gib -1 ein um abzuschalten."
 
-#: mod/settings.php:967
+#: mod/settings.php:976
 msgid "Number of items to display per page:"
 msgstr "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: "
 
-#: mod/settings.php:967 mod/settings.php:968
+#: mod/settings.php:976 mod/settings.php:977
 msgid "Maximum of 100 items"
 msgstr "Maximal 100 Beiträge"
 
-#: mod/settings.php:968
+#: mod/settings.php:977
 msgid "Number of items to display per page when viewed from mobile device:"
 msgstr "Zahl der Beiträge, die pro Netzwerkseite auf mobilen Geräten angezeigt werden sollen:"
 
-#: mod/settings.php:969
+#: mod/settings.php:978
 msgid "Don't show emoticons"
 msgstr "Keine Smilies anzeigen"
 
-#: mod/settings.php:970
+#: mod/settings.php:979
 msgid "Calendar"
 msgstr "Kalender"
 
-#: mod/settings.php:971
+#: mod/settings.php:980
 msgid "Beginning of week:"
 msgstr "Wochenbeginn:"
 
-#: mod/settings.php:972
+#: mod/settings.php:981
 msgid "Don't show notices"
 msgstr "Info-Popups nicht anzeigen"
 
-#: mod/settings.php:973
+#: mod/settings.php:982
 msgid "Infinite scroll"
 msgstr "Endloses Scrollen"
 
-#: mod/settings.php:974
+#: mod/settings.php:983
 msgid "Automatic updates only at the top of the network page"
 msgstr "Automatische Updates nur, wenn Du oben auf der Netzwerkseite bist."
 
-#: mod/settings.php:976 view/theme/cleanzero/config.php:82
+#: mod/settings.php:985 view/theme/cleanzero/config.php:82
 #: view/theme/dispy/config.php:72 view/theme/quattro/config.php:66
-#: view/theme/diabook/config.php:150 view/theme/clean/config.php:85
-#: view/theme/vier/config.php:109 view/theme/duepuntozero/config.php:61
+#: view/theme/diabook/config.php:150 view/theme/vier/config.php:109
+#: view/theme/duepuntozero/config.php:61
 msgid "Theme settings"
 msgstr "Themeneinstellungen"
 
-#: mod/settings.php:1053
+#: mod/settings.php:1062
 msgid "User Types"
 msgstr "Nutzer Art"
 
-#: mod/settings.php:1054
+#: mod/settings.php:1063
 msgid "Community Types"
 msgstr "Gemeinschafts Art"
 
-#: mod/settings.php:1055
+#: mod/settings.php:1064
 msgid "Normal Account Page"
 msgstr "Normales Konto"
 
-#: mod/settings.php:1056
+#: mod/settings.php:1065
 msgid "This account is a normal personal profile"
 msgstr "Dieses Konto ist ein normales persönliches Profil"
 
-#: mod/settings.php:1059
+#: mod/settings.php:1068
 msgid "Soapbox Page"
 msgstr "Marktschreier-Konto"
 
-#: mod/settings.php:1060
+#: mod/settings.php:1069
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert"
 
-#: mod/settings.php:1063
+#: mod/settings.php:1072
 msgid "Community Forum/Celebrity Account"
 msgstr "Forum/Promi-Konto"
 
-#: mod/settings.php:1064
+#: mod/settings.php:1073
 msgid ""
 "Automatically approve all connection/friend requests as read-write fans"
 msgstr "Kontaktanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert"
 
-#: mod/settings.php:1067
+#: mod/settings.php:1076
 msgid "Automatic Friend Page"
 msgstr "Automatische Freunde Seite"
 
-#: mod/settings.php:1068
+#: mod/settings.php:1077
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr "Kontaktanfragen werden automatisch als Freund akzeptiert"
 
-#: mod/settings.php:1071
+#: mod/settings.php:1080
 msgid "Private Forum [Experimental]"
 msgstr "Privates Forum [Versuchsstadium]"
 
-#: mod/settings.php:1072
+#: mod/settings.php:1081
 msgid "Private forum - approved members only"
 msgstr "Privates Forum, nur für Mitglieder"
 
-#: mod/settings.php:1084
+#: mod/settings.php:1093
 msgid "OpenID:"
 msgstr "OpenID:"
 
-#: mod/settings.php:1084
+#: mod/settings.php:1093
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID."
 
-#: mod/settings.php:1094
+#: mod/settings.php:1103
 msgid "Publish your default profile in your local site directory?"
 msgstr "Darf Dein Standardprofil im Verzeichnis dieses Servers veröffentlicht werden?"
 
-#: mod/settings.php:1100
+#: mod/settings.php:1109
 msgid "Publish your default profile in the global social directory?"
 msgstr "Darf Dein Standardprofil im weltweiten Verzeichnis veröffentlicht werden?"
 
-#: mod/settings.php:1108
+#: mod/settings.php:1117
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?"
 
-#: mod/settings.php:1112 include/acl_selectors.php:331
+#: mod/settings.php:1121 include/acl_selectors.php:331
 msgid "Hide your profile details from unknown viewers?"
 msgstr "Profil-Details vor unbekannten Betrachtern verbergen?"
 
-#: mod/settings.php:1112
+#: mod/settings.php:1121
 msgid ""
 "If enabled, posting public messages to Diaspora and other networks isn't "
 "possible."
 msgstr "Wenn aktiviert, ist das senden öffentliche Nachrichten zu Diaspora und anderen Netzwerken nicht möglich"
 
-#: mod/settings.php:1117
+#: mod/settings.php:1126
 msgid "Allow friends to post to your profile page?"
 msgstr "Dürfen Deine Kontakte auf Deine Pinnwand schreiben?"
 
-#: mod/settings.php:1123
+#: mod/settings.php:1132
 msgid "Allow friends to tag your posts?"
 msgstr "Dürfen Deine Kontakte Deine Beiträge mit Schlagwörtern versehen?"
 
-#: mod/settings.php:1129
+#: mod/settings.php:1138
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
 
-#: mod/settings.php:1135
+#: mod/settings.php:1144
 msgid "Permit unknown people to send you private mail?"
 msgstr "Dürfen Dir Unbekannte private Nachrichten schicken?"
 
-#: mod/settings.php:1143
+#: mod/settings.php:1152
 msgid "Profile is <strong>not published</strong>."
 msgstr "Profil ist <strong>nicht veröffentlicht</strong>."
 
-#: mod/settings.php:1151
+#: mod/settings.php:1160
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr "Die Adresse deines Profils lautet <strong>'%s'</strong> oder '%s'."
 
-#: mod/settings.php:1158
+#: mod/settings.php:1167
 msgid "Automatically expire posts after this many days:"
 msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:"
 
-#: mod/settings.php:1158
+#: mod/settings.php:1167
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht."
 
-#: mod/settings.php:1159
+#: mod/settings.php:1168
 msgid "Advanced expiration settings"
 msgstr "Erweiterte Verfallseinstellungen"
 
-#: mod/settings.php:1160
+#: mod/settings.php:1169
 msgid "Advanced Expiration"
 msgstr "Erweitertes Verfallen"
 
-#: mod/settings.php:1161
+#: mod/settings.php:1170
 msgid "Expire posts:"
 msgstr "Beiträge verfallen lassen:"
 
-#: mod/settings.php:1162
+#: mod/settings.php:1171
 msgid "Expire personal notes:"
 msgstr "Persönliche Notizen verfallen lassen:"
 
-#: mod/settings.php:1163
+#: mod/settings.php:1172
 msgid "Expire starred posts:"
 msgstr "Markierte Beiträge verfallen lassen:"
 
-#: mod/settings.php:1164
+#: mod/settings.php:1173
 msgid "Expire photos:"
 msgstr "Fotos verfallen lassen:"
 
-#: mod/settings.php:1165
+#: mod/settings.php:1174
 msgid "Only expire posts by others:"
 msgstr "Nur Beiträge anderer verfallen:"
 
-#: mod/settings.php:1193
+#: mod/settings.php:1202
 msgid "Account Settings"
 msgstr "Kontoeinstellungen"
 
-#: mod/settings.php:1201
+#: mod/settings.php:1210
 msgid "Password Settings"
 msgstr "Passwort-Einstellungen"
 
-#: mod/settings.php:1202 mod/register.php:274
+#: mod/settings.php:1211 mod/register.php:274
 msgid "New Password:"
 msgstr "Neues Passwort:"
 
-#: mod/settings.php:1203 mod/register.php:275
+#: mod/settings.php:1212 mod/register.php:275
 msgid "Confirm:"
 msgstr "Bestätigen:"
 
-#: mod/settings.php:1203
+#: mod/settings.php:1212
 msgid "Leave password fields blank unless changing"
 msgstr "Lass die Passwort-Felder leer, außer Du willst das Passwort ändern"
 
-#: mod/settings.php:1204
+#: mod/settings.php:1213
 msgid "Current Password:"
 msgstr "Aktuelles Passwort:"
 
-#: mod/settings.php:1204 mod/settings.php:1205
+#: mod/settings.php:1213 mod/settings.php:1214
 msgid "Your current password to confirm the changes"
 msgstr "Dein aktuelles Passwort um die Änderungen zu bestätigen"
 
-#: mod/settings.php:1205
+#: mod/settings.php:1214
 msgid "Password:"
 msgstr "Passwort:"
 
-#: mod/settings.php:1209
+#: mod/settings.php:1218
 msgid "Basic Settings"
 msgstr "Grundeinstellungen"
 
-#: mod/settings.php:1210 include/identity.php:587
+#: mod/settings.php:1219 include/identity.php:588
 msgid "Full Name:"
 msgstr "Kompletter Name:"
 
-#: mod/settings.php:1211
+#: mod/settings.php:1220
 msgid "Email Address:"
 msgstr "E-Mail-Adresse:"
 
-#: mod/settings.php:1212
+#: mod/settings.php:1221
 msgid "Your Timezone:"
 msgstr "Deine Zeitzone:"
 
-#: mod/settings.php:1213
+#: mod/settings.php:1222
 msgid "Your Language:"
 msgstr "Deine Sprache:"
 
-#: mod/settings.php:1213
+#: mod/settings.php:1222
 msgid ""
 "Set the language we use to show you friendica interface and to send you "
 "emails"
 msgstr "Wähle die Sprache, in der wir Dir die Friendica-Oberfläche präsentieren sollen und Dir E-Mail schicken"
 
-#: mod/settings.php:1214
+#: mod/settings.php:1223
 msgid "Default Post Location:"
 msgstr "Standardstandort:"
 
-#: mod/settings.php:1215
+#: mod/settings.php:1224
 msgid "Use Browser Location:"
 msgstr "Standort des Browsers verwenden:"
 
-#: mod/settings.php:1218
+#: mod/settings.php:1227
 msgid "Security and Privacy Settings"
 msgstr "Sicherheits- und Privatsphäre-Einstellungen"
 
-#: mod/settings.php:1220
+#: mod/settings.php:1229
 msgid "Maximum Friend Requests/Day:"
 msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:"
 
-#: mod/settings.php:1220 mod/settings.php:1250
+#: mod/settings.php:1229 mod/settings.php:1259
 msgid "(to prevent spam abuse)"
 msgstr "(um SPAM zu vermeiden)"
 
-#: mod/settings.php:1221
+#: mod/settings.php:1230
 msgid "Default Post Permissions"
 msgstr "Standard-Zugriffsrechte für Beiträge"
 
-#: mod/settings.php:1222
+#: mod/settings.php:1231
 msgid "(click to open/close)"
 msgstr "(klicke zum öffnen/schließen)"
 
-#: mod/settings.php:1231 mod/photos.php:1199 mod/photos.php:1584
+#: mod/settings.php:1240 mod/photos.php:1199 mod/photos.php:1584
 msgid "Show to Groups"
 msgstr "Zeige den Gruppen"
 
-#: mod/settings.php:1232 mod/photos.php:1200 mod/photos.php:1585
+#: mod/settings.php:1241 mod/photos.php:1200 mod/photos.php:1585
 msgid "Show to Contacts"
 msgstr "Zeige den Kontakten"
 
-#: mod/settings.php:1233
+#: mod/settings.php:1242
 msgid "Default Private Post"
 msgstr "Privater Standardbeitrag"
 
-#: mod/settings.php:1234
+#: mod/settings.php:1243
 msgid "Default Public Post"
 msgstr "Öffentlicher Standardbeitrag"
 
-#: mod/settings.php:1238
+#: mod/settings.php:1247
 msgid "Default Permissions for New Posts"
 msgstr "Standardberechtigungen für neue Beiträge"
 
-#: mod/settings.php:1250
+#: mod/settings.php:1259
 msgid "Maximum private messages per day from unknown people:"
 msgstr "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:"
 
-#: mod/settings.php:1253
+#: mod/settings.php:1262
 msgid "Notification Settings"
 msgstr "Benachrichtigungseinstellungen"
 
-#: mod/settings.php:1254
+#: mod/settings.php:1263
 msgid "By default post a status message when:"
 msgstr "Standardmäßig eine Statusnachricht posten, wenn:"
 
-#: mod/settings.php:1255
+#: mod/settings.php:1264
 msgid "accepting a friend request"
 msgstr "– Du eine Kontaktanfrage akzeptierst"
 
-#: mod/settings.php:1256
+#: mod/settings.php:1265
 msgid "joining a forum/community"
 msgstr "– Du einem Forum/einer Gemeinschaftsseite beitrittst"
 
-#: mod/settings.php:1257
+#: mod/settings.php:1266
 msgid "making an <em>interesting</em> profile change"
 msgstr "– Du eine <em>interessante</em> Änderung an Deinem Profil durchführst"
 
-#: mod/settings.php:1258
+#: mod/settings.php:1267
 msgid "Send a notification email when:"
 msgstr "Benachrichtigungs-E-Mail senden wenn:"
 
-#: mod/settings.php:1259
+#: mod/settings.php:1268
 msgid "You receive an introduction"
 msgstr "– Du eine Kontaktanfrage erhältst"
 
-#: mod/settings.php:1260
+#: mod/settings.php:1269
 msgid "Your introductions are confirmed"
 msgstr "– eine Deiner Kontaktanfragen akzeptiert wurde"
 
-#: mod/settings.php:1261
+#: mod/settings.php:1270
 msgid "Someone writes on your profile wall"
 msgstr "– jemand etwas auf Deine Pinnwand schreibt"
 
-#: mod/settings.php:1262
+#: mod/settings.php:1271
 msgid "Someone writes a followup comment"
 msgstr "– jemand auch einen Kommentar verfasst"
 
-#: mod/settings.php:1263
+#: mod/settings.php:1272
 msgid "You receive a private message"
 msgstr "– Du eine private Nachricht erhältst"
 
-#: mod/settings.php:1264
+#: mod/settings.php:1273
 msgid "You receive a friend suggestion"
 msgstr "– Du eine Empfehlung erhältst"
 
-#: mod/settings.php:1265
+#: mod/settings.php:1274
 msgid "You are tagged in a post"
 msgstr "– Du in einem Beitrag erwähnt wirst"
 
-#: mod/settings.php:1266
+#: mod/settings.php:1275
 msgid "You are poked/prodded/etc. in a post"
 msgstr "– Du von jemandem angestupst oder sonstwie behandelt wirst"
 
-#: mod/settings.php:1268
+#: mod/settings.php:1277
 msgid "Activate desktop notifications"
 msgstr "Desktop Benachrichtigungen einschalten"
 
-#: mod/settings.php:1268
+#: mod/settings.php:1277
 msgid "Show desktop popup on new notifications"
 msgstr "Desktop Benachrichtigungen einschalten"
 
-#: mod/settings.php:1270
+#: mod/settings.php:1279
 msgid "Text-only notification emails"
 msgstr "Benachrichtigungs E-Mail als Rein-Text."
 
-#: mod/settings.php:1272
+#: mod/settings.php:1281
 msgid "Send text only notification emails, without the html part"
 msgstr "Sende Benachrichtigungs E-Mail als Rein-Text - ohne HTML-Teil"
 
-#: mod/settings.php:1274
+#: mod/settings.php:1283
 msgid "Advanced Account/Page Type Settings"
 msgstr "Erweiterte Konto-/Seitentyp-Einstellungen"
 
-#: mod/settings.php:1275
+#: mod/settings.php:1284
 msgid "Change the behaviour of this account for special situations"
 msgstr "Verhalten dieses Kontos in bestimmten Situationen:"
 
-#: mod/settings.php:1278
+#: mod/settings.php:1287
 msgid "Relocate"
 msgstr "Umziehen"
 
-#: mod/settings.php:1279
+#: mod/settings.php:1288
 msgid ""
 "If you have moved this profile from another server, and some of your "
 "contacts don't receive your updates, try pushing this button."
 msgstr "Wenn Du Dein Profil von einem anderen Server umgezogen hast und einige Deiner Kontakte Deine Beiträge nicht erhalten, verwende diesen Button."
 
-#: mod/settings.php:1280
+#: mod/settings.php:1289
 msgid "Resend relocate message to contacts"
 msgstr "Umzugsbenachrichtigung erneut an Kontakte senden"
 
-#: mod/dfrn_request.php:95
+#: mod/dfrn_request.php:96
 msgid "This introduction has already been accepted."
 msgstr "Diese Kontaktanfrage wurde bereits akzeptiert."
 
-#: mod/dfrn_request.php:120 mod/dfrn_request.php:519
+#: mod/dfrn_request.php:119 mod/dfrn_request.php:516
 msgid "Profile location is not valid or does not contain profile information."
 msgstr "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung."
 
-#: mod/dfrn_request.php:125 mod/dfrn_request.php:524
+#: mod/dfrn_request.php:124 mod/dfrn_request.php:521
 msgid "Warning: profile location has no identifiable owner name."
 msgstr "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden."
 
-#: mod/dfrn_request.php:127 mod/dfrn_request.php:526
+#: mod/dfrn_request.php:126 mod/dfrn_request.php:523
 msgid "Warning: profile location has no profile photo."
 msgstr "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse."
 
-#: mod/dfrn_request.php:130 mod/dfrn_request.php:529
+#: mod/dfrn_request.php:129 mod/dfrn_request.php:526
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] "%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden"
 msgstr[1] "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden"
 
-#: mod/dfrn_request.php:173
+#: mod/dfrn_request.php:172
 msgid "Introduction complete."
 msgstr "Kontaktanfrage abgeschlossen."
 
-#: mod/dfrn_request.php:215
+#: mod/dfrn_request.php:214
 msgid "Unrecoverable protocol error."
 msgstr "Nicht behebbarer Protokollfehler."
 
-#: mod/dfrn_request.php:243
+#: mod/dfrn_request.php:242
 msgid "Profile unavailable."
 msgstr "Profil nicht verfügbar."
 
-#: mod/dfrn_request.php:268
+#: mod/dfrn_request.php:267
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr "%s hat heute zu viele Freundschaftsanfragen erhalten."
 
-#: mod/dfrn_request.php:269
+#: mod/dfrn_request.php:268
 msgid "Spam protection measures have been invoked."
 msgstr "Maßnahmen zum Spamschutz wurden ergriffen."
 
-#: mod/dfrn_request.php:270
+#: mod/dfrn_request.php:269
 msgid "Friends are advised to please try again in 24 hours."
 msgstr "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen."
 
-#: mod/dfrn_request.php:332
+#: mod/dfrn_request.php:331
 msgid "Invalid locator"
 msgstr "Ungültiger Locator"
 
-#: mod/dfrn_request.php:341
+#: mod/dfrn_request.php:340
 msgid "Invalid email address."
 msgstr "Ungültige E-Mail-Adresse."
 
-#: mod/dfrn_request.php:368
+#: mod/dfrn_request.php:367
 msgid "This account has not been configured for email. Request failed."
 msgstr "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen."
 
-#: mod/dfrn_request.php:464
-msgid "Unable to resolve your name at the provided location."
-msgstr "Konnte Deinen Namen an der angegebenen Stelle nicht finden."
-
-#: mod/dfrn_request.php:477
+#: mod/dfrn_request.php:474
 msgid "You have already introduced yourself here."
 msgstr "Du hast Dich hier bereits vorgestellt."
 
-#: mod/dfrn_request.php:481
+#: mod/dfrn_request.php:478
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr "Es scheint so, als ob Du bereits mit %s befreundet bist."
 
-#: mod/dfrn_request.php:502
+#: mod/dfrn_request.php:499
 msgid "Invalid profile URL."
 msgstr "Ungültige Profil-URL."
 
-#: mod/dfrn_request.php:508 include/follow.php:72
+#: mod/dfrn_request.php:505 include/follow.php:72
 msgid "Disallowed profile URL."
 msgstr "Nicht erlaubte Profil-URL."
 
-#: mod/dfrn_request.php:599
+#: mod/dfrn_request.php:596
 msgid "Your introduction has been sent."
 msgstr "Deine Kontaktanfrage wurde gesendet."
 
-#: mod/dfrn_request.php:652
+#: mod/dfrn_request.php:636
+msgid ""
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
+msgstr "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems.   "
+
+#: mod/dfrn_request.php:659
 msgid "Please login to confirm introduction."
 msgstr "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen."
 
-#: mod/dfrn_request.php:662
+#: mod/dfrn_request.php:669
 msgid ""
 "Incorrect identity currently logged in. Please login to "
 "<strong>this</strong> profile."
 msgstr "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit <strong>diesem</strong> Profil an."
 
-#: mod/dfrn_request.php:676 mod/dfrn_request.php:693
+#: mod/dfrn_request.php:683 mod/dfrn_request.php:700
 msgid "Confirm"
 msgstr "Bestätigen"
 
-#: mod/dfrn_request.php:688
+#: mod/dfrn_request.php:695
 msgid "Hide this contact"
 msgstr "Verberge diesen Kontakt"
 
-#: mod/dfrn_request.php:691
+#: mod/dfrn_request.php:698
 #, php-format
 msgid "Welcome home %s."
 msgstr "Willkommen zurück %s."
 
-#: mod/dfrn_request.php:692
+#: mod/dfrn_request.php:699
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr "Bitte bestätige Deine Kontaktanfrage bei %s."
 
-#: mod/dfrn_request.php:821
+#: mod/dfrn_request.php:828
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:"
 
-#: mod/dfrn_request.php:842
+#: mod/dfrn_request.php:849
 #, php-format
 msgid ""
 "If you are not yet a member of the free social web, <a "
@@ -5008,25 +5003,25 @@ msgid ""
 "join us today</a>."
 msgstr "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, <a href=\"%s/siteinfo\">folge diesem Link</a> um einen öffentlichen Friendica-Server zu finden und beizutreten."
 
-#: mod/dfrn_request.php:847
+#: mod/dfrn_request.php:854
 msgid "Friend/Connection Request"
 msgstr "Freundschafts-/Kontaktanfrage"
 
-#: mod/dfrn_request.php:848
+#: mod/dfrn_request.php:855
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"
 
-#: mod/dfrn_request.php:856 include/contact_selectors.php:76
+#: mod/dfrn_request.php:863 include/contact_selectors.php:76
 msgid "Friendica"
 msgstr "Friendica"
 
-#: mod/dfrn_request.php:857
+#: mod/dfrn_request.php:864
 msgid "StatusNet/Federated Social Web"
 msgstr "StatusNet/Federated Social Web"
 
-#: mod/dfrn_request.php:859
+#: mod/dfrn_request.php:866
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search"
@@ -5114,7 +5109,7 @@ msgstr "Wähle einen Spitznamen für Dein Profil. Dieser muss mit einem Buchstab
 msgid "Choose a nickname: "
 msgstr "Spitznamen wählen: "
 
-#: mod/register.php:280 boot.php:1271 include/nav.php:108
+#: mod/register.php:280 boot.php:1405 include/nav.php:108
 msgid "Register"
 msgstr "Registrieren"
 
@@ -5156,11 +5151,11 @@ msgstr "Beiträge markiert mit: %s"
 msgid "Search results for: %s"
 msgstr "Suchergebnisse für: %s"
 
-#: mod/directory.php:149 include/identity.php:309 include/identity.php:609
+#: mod/directory.php:149 include/identity.php:313 include/identity.php:610
 msgid "Status:"
 msgstr "Status:"
 
-#: mod/directory.php:151 include/identity.php:311 include/identity.php:620
+#: mod/directory.php:151 include/identity.php:315 include/identity.php:621
 msgid "Homepage:"
 msgstr "Homepage:"
 
@@ -5488,7 +5483,7 @@ msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
 msgid "Since [date]:"
 msgstr "Seit [Datum]:"
 
-#: mod/profiles.php:724 include/identity.php:618
+#: mod/profiles.php:724 include/identity.php:619
 msgid "Sexual Preference:"
 msgstr "Sexuelle Vorlieben:"
 
@@ -5496,11 +5491,11 @@ msgstr "Sexuelle Vorlieben:"
 msgid "Homepage URL:"
 msgstr "Adresse der Homepage:"
 
-#: mod/profiles.php:726 include/identity.php:622
+#: mod/profiles.php:726 include/identity.php:623
 msgid "Hometown:"
 msgstr "Heimatort:"
 
-#: mod/profiles.php:727 include/identity.php:626
+#: mod/profiles.php:727 include/identity.php:627
 msgid "Political Views:"
 msgstr "Politische Ansichten:"
 
@@ -5516,11 +5511,11 @@ msgstr "Öffentliche Schlüsselwörter:"
 msgid "Private Keywords:"
 msgstr "Private Schlüsselwörter:"
 
-#: mod/profiles.php:731 include/identity.php:634
+#: mod/profiles.php:731 include/identity.php:635
 msgid "Likes:"
 msgstr "Likes:"
 
-#: mod/profiles.php:732 include/identity.php:636
+#: mod/profiles.php:732 include/identity.php:637
 msgid "Dislikes:"
 msgstr "Dislikes:"
 
@@ -5590,23 +5585,23 @@ msgstr "Alter: "
 msgid "Edit/Manage Profiles"
 msgstr "Bearbeite/Verwalte Profile"
 
-#: mod/profiles.php:814 include/identity.php:257 include/identity.php:283
+#: mod/profiles.php:814 include/identity.php:260 include/identity.php:286
 msgid "Change profile photo"
 msgstr "Profilbild ändern"
 
-#: mod/profiles.php:815 include/identity.php:258
+#: mod/profiles.php:815 include/identity.php:261
 msgid "Create New Profile"
 msgstr "Neues Profil anlegen"
 
-#: mod/profiles.php:826 include/identity.php:268
+#: mod/profiles.php:826 include/identity.php:271
 msgid "Profile Image"
 msgstr "Profilbild"
 
-#: mod/profiles.php:828 include/identity.php:271
+#: mod/profiles.php:828 include/identity.php:274
 msgid "visible to everybody"
 msgstr "sichtbar für jeden"
 
-#: mod/profiles.php:829 include/identity.php:272
+#: mod/profiles.php:829 include/identity.php:275
 msgid "Edit visibility"
 msgstr "Sichtbarkeit bearbeiten"
 
@@ -5618,55 +5613,55 @@ msgstr "Beitrag nicht gefunden"
 msgid "Edit post"
 msgstr "Beitrag bearbeiten"
 
-#: mod/editpost.php:111 include/conversation.php:1185
+#: mod/editpost.php:111 include/conversation.php:1184
 msgid "upload photo"
 msgstr "Bild hochladen"
 
-#: mod/editpost.php:112 include/conversation.php:1186
+#: mod/editpost.php:112 include/conversation.php:1185
 msgid "Attach file"
 msgstr "Datei anhängen"
 
-#: mod/editpost.php:113 include/conversation.php:1187
+#: mod/editpost.php:113 include/conversation.php:1186
 msgid "attach file"
 msgstr "Datei anhängen"
 
-#: mod/editpost.php:115 include/conversation.php:1189
+#: mod/editpost.php:115 include/conversation.php:1188
 msgid "web link"
 msgstr "Weblink"
 
-#: mod/editpost.php:116 include/conversation.php:1190
+#: mod/editpost.php:116 include/conversation.php:1189
 msgid "Insert video link"
 msgstr "Video-Adresse einfügen"
 
-#: mod/editpost.php:117 include/conversation.php:1191
+#: mod/editpost.php:117 include/conversation.php:1190
 msgid "video link"
 msgstr "Video-Link"
 
-#: mod/editpost.php:118 include/conversation.php:1192
+#: mod/editpost.php:118 include/conversation.php:1191
 msgid "Insert audio link"
 msgstr "Audio-Adresse einfügen"
 
-#: mod/editpost.php:119 include/conversation.php:1193
+#: mod/editpost.php:119 include/conversation.php:1192
 msgid "audio link"
 msgstr "Audio-Link"
 
-#: mod/editpost.php:120 include/conversation.php:1194
+#: mod/editpost.php:120 include/conversation.php:1193
 msgid "Set your location"
 msgstr "Deinen Standort festlegen"
 
-#: mod/editpost.php:121 include/conversation.php:1195
+#: mod/editpost.php:121 include/conversation.php:1194
 msgid "set location"
 msgstr "Ort setzen"
 
-#: mod/editpost.php:122 include/conversation.php:1196
+#: mod/editpost.php:122 include/conversation.php:1195
 msgid "Clear browser location"
 msgstr "Browser-Standort leeren"
 
-#: mod/editpost.php:123 include/conversation.php:1197
+#: mod/editpost.php:123 include/conversation.php:1196
 msgid "clear location"
 msgstr "Ort löschen"
 
-#: mod/editpost.php:125 include/conversation.php:1203
+#: mod/editpost.php:125 include/conversation.php:1202
 msgid "Permission settings"
 msgstr "Berechtigungseinstellungen"
 
@@ -5674,15 +5669,15 @@ msgstr "Berechtigungseinstellungen"
 msgid "CC: email addresses"
 msgstr "Cc: E-Mail-Addressen"
 
-#: mod/editpost.php:134 include/conversation.php:1212
+#: mod/editpost.php:134 include/conversation.php:1211
 msgid "Public post"
 msgstr "Öffentlicher Beitrag"
 
-#: mod/editpost.php:137 include/conversation.php:1199
+#: mod/editpost.php:137 include/conversation.php:1198
 msgid "Set title"
 msgstr "Titel setzen"
 
-#: mod/editpost.php:139 include/conversation.php:1201
+#: mod/editpost.php:139 include/conversation.php:1200
 msgid "Categories (comma-separated list)"
 msgstr "Kategorien (kommasepariert)"
 
@@ -5690,39 +5685,39 @@ msgstr "Kategorien (kommasepariert)"
 msgid "Example: bob@example.com, mary@example.com"
 msgstr "Z.B.: bob@example.com, mary@example.com"
 
-#: mod/friendica.php:59
+#: mod/friendica.php:70
 msgid "This is Friendica, version"
 msgstr "Dies ist Friendica, Version"
 
-#: mod/friendica.php:60
+#: mod/friendica.php:71
 msgid "running at web location"
 msgstr "die unter folgender Webadresse zu finden ist"
 
-#: mod/friendica.php:62
+#: mod/friendica.php:73
 msgid ""
 "Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn "
 "more about the Friendica project."
 msgstr "Bitte besuche <a href=\"http://friendica.com\">Friendica.com</a>, um mehr über das Friendica Projekt zu erfahren."
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "Bug reports and issues: please visit"
 msgstr "Probleme oder Fehler gefunden? Bitte besuche"
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "the bugtracker at github"
 msgstr "dem Bugtracker auf github"
 
-#: mod/friendica.php:65
+#: mod/friendica.php:76
 msgid ""
 "Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - "
 "dot com"
 msgstr "Vorschläge, Lob, Spenden usw.: E-Mail an \"Info\" at Friendica - dot com"
 
-#: mod/friendica.php:79
+#: mod/friendica.php:90
 msgid "Installed plugins/addons/apps:"
 msgstr "Installierte Plugins/Erweiterungen/Apps"
 
-#: mod/friendica.php:92
+#: mod/friendica.php:103
 msgid "No installed plugins/addons/apps"
 msgstr "Keine Plugins/Erweiterungen/Apps installiert"
 
@@ -6080,12 +6075,12 @@ msgstr "Privates Foto"
 msgid "Public photo"
 msgstr "Öffentliches Foto"
 
-#: mod/photos.php:1609 include/conversation.php:1183
+#: mod/photos.php:1609 include/conversation.php:1182
 msgid "Share"
 msgstr "Teilen"
 
 #: mod/photos.php:1648 include/conversation.php:509
-#: include/conversation.php:1414
+#: include/conversation.php:1413
 msgid "Attending"
 msgid_plural "Attending"
 msgstr[0] "Teilnehmend"
@@ -6159,60 +6154,60 @@ msgstr "Beitrag nicht verfügbar."
 msgid "Item was not found."
 msgstr "Beitrag konnte nicht gefunden werden."
 
-#: boot.php:786
+#: boot.php:868
 msgid "Delete this item?"
 msgstr "Diesen Beitrag löschen?"
 
-#: boot.php:789
+#: boot.php:871
 msgid "show fewer"
 msgstr "weniger anzeigen"
 
-#: boot.php:1163
+#: boot.php:1292
 #, php-format
 msgid "Update %s failed. See error logs."
 msgstr "Update %s fehlgeschlagen. Bitte Fehlerprotokoll überprüfen."
 
-#: boot.php:1270
+#: boot.php:1404
 msgid "Create a New Account"
 msgstr "Neues Konto erstellen"
 
-#: boot.php:1295 include/nav.php:72
+#: boot.php:1429 include/nav.php:72
 msgid "Logout"
 msgstr "Abmelden"
 
-#: boot.php:1298
+#: boot.php:1432
 msgid "Nickname or Email address: "
 msgstr "Spitzname oder E-Mail-Adresse: "
 
-#: boot.php:1299
+#: boot.php:1433
 msgid "Password: "
 msgstr "Passwort: "
 
-#: boot.php:1300
+#: boot.php:1434
 msgid "Remember me"
 msgstr "Anmeldedaten merken"
 
-#: boot.php:1303
+#: boot.php:1437
 msgid "Or login using OpenID: "
 msgstr "Oder melde Dich mit Deiner OpenID an: "
 
-#: boot.php:1309
+#: boot.php:1443
 msgid "Forgot your password?"
 msgstr "Passwort vergessen?"
 
-#: boot.php:1312
+#: boot.php:1446
 msgid "Website Terms of Service"
 msgstr "Website Nutzungsbedingungen"
 
-#: boot.php:1313
+#: boot.php:1447
 msgid "terms of service"
 msgstr "Nutzungsbedingungen"
 
-#: boot.php:1315
+#: boot.php:1449
 msgid "Website Privacy Policy"
 msgstr "Website Datenschutzerklärung"
 
-#: boot.php:1316
+#: boot.php:1450
 msgid "privacy policy"
 msgstr "Datenschutzerklärung"
 
@@ -6273,25 +6268,25 @@ msgid ""
 "[pre]%s[/pre]"
 msgstr "Die Fehlermeldung lautet\n[pre]%s[/pre]"
 
-#: include/dbstructure.php:151
+#: include/dbstructure.php:153
 msgid "Errors encountered creating database tables."
 msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen."
 
-#: include/dbstructure.php:209
+#: include/dbstructure.php:230
 msgid "Errors encountered performing database changes."
 msgstr "Es sind Fehler beim Bearbeiten der Datenbank aufgetreten."
 
-#: include/auth.php:38
+#: include/auth.php:44
 msgid "Logged out."
 msgstr "Abgemeldet."
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid ""
 "We encountered a problem while logging in with the OpenID you provided. "
 "Please check the correct spelling of the ID."
 msgstr "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast."
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid "The error message was:"
 msgstr "Die Fehlermeldung lautete:"
 
@@ -6348,7 +6343,7 @@ msgstr "Netzwerke"
 msgid "All Networks"
 msgstr "Alle Netzwerke"
 
-#: include/contact_widgets.php:141 include/features.php:97
+#: include/contact_widgets.php:141 include/features.php:102
 msgid "Saved Folders"
 msgstr "Gespeicherte Ordner"
 
@@ -6367,194 +6362,194 @@ msgid_plural "%d contacts in common"
 msgstr[0] "%d gemeinsamer Kontakt"
 msgstr[1] "%d gemeinsame Kontakte"
 
-#: include/features.php:58
+#: include/features.php:63
 msgid "General Features"
 msgstr "Allgemeine Features"
 
-#: include/features.php:60
+#: include/features.php:65
 msgid "Multiple Profiles"
 msgstr "Mehrere Profile"
 
-#: include/features.php:60
+#: include/features.php:65
 msgid "Ability to create multiple profiles"
 msgstr "Möglichkeit mehrere Profile zu erstellen"
 
-#: include/features.php:61
+#: include/features.php:66
 msgid "Photo Location"
 msgstr "Aufnahmeort"
 
-#: include/features.php:61
+#: include/features.php:66
 msgid ""
 "Photo metadata is normally stripped. This extracts the location (if present)"
 " prior to stripping metadata and links it to a map."
 msgstr "Die Foto-Metadaten werden ausgelesen. Dadurch kann der Aufnahmeort (wenn vorhanden) in einer Karte angezeigt werden."
 
-#: include/features.php:66
+#: include/features.php:71
 msgid "Post Composition Features"
 msgstr "Beitragserstellung Features"
 
-#: include/features.php:67
+#: include/features.php:72
 msgid "Richtext Editor"
 msgstr "Web-Editor"
 
-#: include/features.php:67
+#: include/features.php:72
 msgid "Enable richtext editor"
 msgstr "Den Web-Editor für neue Beiträge aktivieren"
 
-#: include/features.php:68
+#: include/features.php:73
 msgid "Post Preview"
 msgstr "Beitragsvorschau"
 
-#: include/features.php:68
+#: include/features.php:73
 msgid "Allow previewing posts and comments before publishing them"
 msgstr "Die Vorschau von Beiträgen und Kommentaren vor dem absenden erlauben."
 
-#: include/features.php:69
+#: include/features.php:74
 msgid "Auto-mention Forums"
 msgstr "Foren automatisch erwähnen"
 
-#: include/features.php:69
+#: include/features.php:74
 msgid ""
 "Add/remove mention when a fourm page is selected/deselected in ACL window."
 msgstr "Automatisch eine @-Erwähnung eines Forums einfügen/entfehrnen, wenn dieses im ACL Fenster de-/markiert  wurde."
 
-#: include/features.php:74
+#: include/features.php:79
 msgid "Network Sidebar Widgets"
 msgstr "Widgets für Netzwerk und Seitenleiste"
 
-#: include/features.php:75
+#: include/features.php:80
 msgid "Search by Date"
 msgstr "Archiv"
 
-#: include/features.php:75
+#: include/features.php:80
 msgid "Ability to select posts by date ranges"
 msgstr "Möglichkeit die Beiträge nach Datumsbereichen zu sortieren"
 
-#: include/features.php:76 include/features.php:106
+#: include/features.php:81 include/features.php:111
 msgid "List Forums"
 msgstr "Zeige Foren"
 
-#: include/features.php:76
+#: include/features.php:81
 msgid "Enable widget to display the forums your are connected with"
 msgstr "Aktiviere Widget, um die Foren mit denen du verbunden bist anzuzeigen"
 
-#: include/features.php:77
+#: include/features.php:82
 msgid "Group Filter"
 msgstr "Gruppen Filter"
 
-#: include/features.php:77
+#: include/features.php:82
 msgid "Enable widget to display Network posts only from selected group"
 msgstr "Widget zur Darstellung der Beiträge nach Kontaktgruppen sortiert aktivieren."
 
-#: include/features.php:78
+#: include/features.php:83
 msgid "Network Filter"
 msgstr "Netzwerk Filter"
 
-#: include/features.php:78
+#: include/features.php:83
 msgid "Enable widget to display Network posts only from selected network"
 msgstr "Widget zum filtern der Beiträge in Abhängigkeit des Netzwerks aus dem der Ersteller sendet aktivieren."
 
-#: include/features.php:79
+#: include/features.php:84
 msgid "Save search terms for re-use"
 msgstr "Speichere Suchanfragen für spätere Wiederholung."
 
-#: include/features.php:84
+#: include/features.php:89
 msgid "Network Tabs"
 msgstr "Netzwerk Reiter"
 
-#: include/features.php:85
+#: include/features.php:90
 msgid "Network Personal Tab"
 msgstr "Netzwerk-Reiter: Persönlich"
 
-#: include/features.php:85
+#: include/features.php:90
 msgid "Enable tab to display only Network posts that you've interacted on"
 msgstr "Aktiviert einen Netzwerk-Reiter in dem Nachrichten angezeigt werden mit denen Du interagiert hast"
 
-#: include/features.php:86
+#: include/features.php:91
 msgid "Network New Tab"
 msgstr "Netzwerk-Reiter: Neue"
 
-#: include/features.php:86
+#: include/features.php:91
 msgid "Enable tab to display only new Network posts (from the last 12 hours)"
 msgstr "Aktiviert einen Netzwerk-Reiter in dem ausschließlich neue Beiträge (der letzten 12 Stunden) angezeigt werden"
 
-#: include/features.php:87
+#: include/features.php:92
 msgid "Network Shared Links Tab"
 msgstr "Netzwerk-Reiter: Geteilte Links"
 
-#: include/features.php:87
+#: include/features.php:92
 msgid "Enable tab to display only Network posts with links in them"
 msgstr "Aktiviert einen Netzwerk-Reiter der ausschließlich Nachrichten mit Links enthält"
 
-#: include/features.php:92
+#: include/features.php:97
 msgid "Post/Comment Tools"
 msgstr "Werkzeuge für Beiträge und Kommentare"
 
-#: include/features.php:93
+#: include/features.php:98
 msgid "Multiple Deletion"
 msgstr "Mehrere Beiträge löschen"
 
-#: include/features.php:93
+#: include/features.php:98
 msgid "Select and delete multiple posts/comments at once"
 msgstr "Mehrere Beiträge/Kommentare markieren und gleichzeitig löschen"
 
-#: include/features.php:94
+#: include/features.php:99
 msgid "Edit Sent Posts"
 msgstr "Gesendete Beiträge editieren"
 
-#: include/features.php:94
+#: include/features.php:99
 msgid "Edit and correct posts and comments after sending"
 msgstr "Erlaubt es Beiträge und Kommentare nach dem Senden zu editieren bzw.zu  korrigieren."
 
-#: include/features.php:95
+#: include/features.php:100
 msgid "Tagging"
 msgstr "Tagging"
 
-#: include/features.php:95
+#: include/features.php:100
 msgid "Ability to tag existing posts"
 msgstr "Möglichkeit bereits existierende Beiträge nachträglich mit Tags zu versehen."
 
-#: include/features.php:96
+#: include/features.php:101
 msgid "Post Categories"
 msgstr "Beitragskategorien"
 
-#: include/features.php:96
+#: include/features.php:101
 msgid "Add categories to your posts"
 msgstr "Eigene Beiträge mit Kategorien versehen"
 
-#: include/features.php:97
+#: include/features.php:102
 msgid "Ability to file posts under folders"
 msgstr "Beiträge in Ordnern speichern aktivieren"
 
-#: include/features.php:98
+#: include/features.php:103
 msgid "Dislike Posts"
 msgstr "Beiträge 'nicht mögen'"
 
-#: include/features.php:98
+#: include/features.php:103
 msgid "Ability to dislike posts/comments"
 msgstr "Ermöglicht es Beiträge mit einem Klick 'nicht zu mögen'"
 
-#: include/features.php:99
+#: include/features.php:104
 msgid "Star Posts"
 msgstr "Beiträge Markieren"
 
-#: include/features.php:99
+#: include/features.php:104
 msgid "Ability to mark special posts with a star indicator"
 msgstr "Erlaubt es Beiträge mit einem Stern-Indikator zu  markieren"
 
-#: include/features.php:100
+#: include/features.php:105
 msgid "Mute Post Notifications"
 msgstr "Benachrichtigungen für Beiträge Stumm schalten"
 
-#: include/features.php:100
+#: include/features.php:105
 msgid "Ability to mute notifications for a thread"
 msgstr "Möglichkeit Benachrichtigungen für einen Thread abbestellen zu können"
 
-#: include/features.php:105
+#: include/features.php:110
 msgid "Advanced Profile Settings"
 msgstr "Erweiterte Profil-Einstellungen"
 
-#: include/features.php:106
+#: include/features.php:111
 msgid "Show visitors public community forums at the Advanced Profile Page"
 msgstr "Zeige Besuchern öffentliche Gemeinschafts-Foren auf der Erweiterten Profil-Seite"
 
@@ -6713,134 +6708,134 @@ msgstr "Sekunden"
 msgid "%1$d %2$s ago"
 msgstr "%1$d %2$s her"
 
-#: include/datetime.php:474 include/items.php:2473
+#: include/datetime.php:474 include/items.php:2481
 #, php-format
 msgid "%s's birthday"
 msgstr "%ss Geburtstag"
 
-#: include/datetime.php:475 include/items.php:2474
+#: include/datetime.php:475 include/items.php:2482
 #, php-format
 msgid "Happy Birthday %s"
 msgstr "Herzlichen Glückwunsch %s"
 
-#: include/identity.php:44
+#: include/identity.php:42
 msgid "Requested account is not available."
 msgstr "Das angefragte Profil ist nicht vorhanden."
 
-#: include/identity.php:97 include/identity.php:281 include/identity.php:661
+#: include/identity.php:95 include/identity.php:284 include/identity.php:662
 msgid "Edit profile"
 msgstr "Profil bearbeiten"
 
-#: include/identity.php:241
+#: include/identity.php:244
 msgid "Atom feed"
 msgstr "Atom-Feed"
 
-#: include/identity.php:246
+#: include/identity.php:249
 msgid "Message"
 msgstr "Nachricht"
 
-#: include/identity.php:252 include/nav.php:185
+#: include/identity.php:255 include/nav.php:185
 msgid "Profiles"
 msgstr "Profile"
 
-#: include/identity.php:252
+#: include/identity.php:255
 msgid "Manage/edit profiles"
 msgstr "Profile verwalten/editieren"
 
-#: include/identity.php:421 include/identity.php:507
+#: include/identity.php:425 include/identity.php:509
 msgid "g A l F d"
 msgstr "l, d. F G \\U\\h\\r"
 
-#: include/identity.php:422 include/identity.php:508
+#: include/identity.php:426 include/identity.php:510
 msgid "F d"
 msgstr "d. F"
 
-#: include/identity.php:467 include/identity.php:554
+#: include/identity.php:471 include/identity.php:556
 msgid "[today]"
 msgstr "[heute]"
 
-#: include/identity.php:479
+#: include/identity.php:483
 msgid "Birthday Reminders"
 msgstr "Geburtstagserinnerungen"
 
-#: include/identity.php:480
+#: include/identity.php:484
 msgid "Birthdays this week:"
 msgstr "Geburtstage diese Woche:"
 
-#: include/identity.php:541
+#: include/identity.php:543
 msgid "[No description]"
 msgstr "[keine Beschreibung]"
 
-#: include/identity.php:565
+#: include/identity.php:567
 msgid "Event Reminders"
 msgstr "Veranstaltungserinnerungen"
 
-#: include/identity.php:566
+#: include/identity.php:568
 msgid "Events this week:"
 msgstr "Veranstaltungen diese Woche"
 
-#: include/identity.php:594
+#: include/identity.php:595
 msgid "j F, Y"
 msgstr "j F, Y"
 
-#: include/identity.php:595
+#: include/identity.php:596
 msgid "j F"
 msgstr "j F"
 
-#: include/identity.php:602
+#: include/identity.php:603
 msgid "Birthday:"
 msgstr "Geburtstag:"
 
-#: include/identity.php:606
+#: include/identity.php:607
 msgid "Age:"
 msgstr "Alter:"
 
-#: include/identity.php:615
+#: include/identity.php:616
 #, php-format
 msgid "for %1$d %2$s"
 msgstr "für %1$d %2$s"
 
-#: include/identity.php:628
+#: include/identity.php:629
 msgid "Religion:"
 msgstr "Religion:"
 
-#: include/identity.php:632
+#: include/identity.php:633
 msgid "Hobbies/Interests:"
 msgstr "Hobbies/Interessen:"
 
-#: include/identity.php:639
+#: include/identity.php:640
 msgid "Contact information and Social Networks:"
 msgstr "Kontaktinformationen und Soziale Netzwerke:"
 
-#: include/identity.php:641
+#: include/identity.php:642
 msgid "Musical interests:"
 msgstr "Musikalische Interessen:"
 
-#: include/identity.php:643
+#: include/identity.php:644
 msgid "Books, literature:"
 msgstr "Literatur/Bücher:"
 
-#: include/identity.php:645
+#: include/identity.php:646
 msgid "Television:"
 msgstr "Fernsehen:"
 
-#: include/identity.php:647
+#: include/identity.php:648
 msgid "Film/dance/culture/entertainment:"
 msgstr "Filme/Tänze/Kultur/Unterhaltung:"
 
-#: include/identity.php:649
+#: include/identity.php:650
 msgid "Love/Romance:"
 msgstr "Liebesleben:"
 
-#: include/identity.php:651
+#: include/identity.php:652
 msgid "Work/employment:"
 msgstr "Arbeit/Beschäftigung:"
 
-#: include/identity.php:653
+#: include/identity.php:654
 msgid "School/education:"
 msgstr "Schule/Ausbildung:"
 
-#: include/identity.php:657
+#: include/identity.php:658
 msgid "Forums:"
 msgstr "Foren:"
 
@@ -6856,6 +6851,38 @@ msgstr "Ereignisse und Kalender"
 msgid "Only You Can See This"
 msgstr "Nur Du kannst das sehen"
 
+#: include/like.php:167 include/conversation.php:122
+#: include/conversation.php:258 include/text.php:1998
+#: view/theme/diabook/theme.php:463
+msgid "event"
+msgstr "Event"
+
+#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2167
+#: view/theme/diabook/theme.php:480
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s mag %2$ss %3$s"
+
+#: include/like.php:186 include/conversation.php:144
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s mag %2$ss %3$s nicht"
+
+#: include/like.php:188
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%1$s nimmt an %2$ss %3$s teil."
+
+#: include/like.php:190
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%1$s nimmt nicht an %2$ss %3$s teil."
+
+#: include/like.php:192
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%1$s nimmt eventuell an %2$ss %3$s teil."
+
 #: include/acl_selectors.php:325
 msgid "Post to Email"
 msgstr "An E-Mail senden"
@@ -6879,6 +6906,10 @@ msgstr "zeigen"
 msgid "don't show"
 msgstr "nicht zeigen"
 
+#: include/acl_selectors.php:348
+msgid "Close"
+msgstr "Schließen"
+
 #: include/message.php:15 include/message.php:173
 msgid "[no subject]"
 msgstr "[kein Betreff]"
@@ -6887,31 +6918,31 @@ msgstr "[kein Betreff]"
 msgid "stopped following"
 msgstr "wird nicht mehr gefolgt"
 
-#: include/Contact.php:350 include/conversation.php:911
+#: include/Contact.php:337 include/conversation.php:911
 msgid "View Status"
 msgstr "Pinnwand anschauen"
 
-#: include/Contact.php:352 include/conversation.php:913
+#: include/Contact.php:339 include/conversation.php:913
 msgid "View Photos"
 msgstr "Bilder anschauen"
 
-#: include/Contact.php:353 include/conversation.php:914
+#: include/Contact.php:340 include/conversation.php:914
 msgid "Network Posts"
 msgstr "Netzwerkbeiträge"
 
-#: include/Contact.php:354 include/conversation.php:915
+#: include/Contact.php:341 include/conversation.php:915
 msgid "Edit Contact"
 msgstr "Kontakt bearbeiten"
 
-#: include/Contact.php:355
+#: include/Contact.php:342
 msgid "Drop Contact"
 msgstr "Kontakt löschen"
 
-#: include/Contact.php:356 include/conversation.php:916
+#: include/Contact.php:343 include/conversation.php:916
 msgid "Send PM"
 msgstr "Private Nachricht senden"
 
-#: include/Contact.php:357 include/conversation.php:920
+#: include/Contact.php:344 include/conversation.php:920
 msgid "Poke"
 msgstr "Anstupsen"
 
@@ -6974,153 +7005,153 @@ msgstr "Lösche die markierten Beiträge"
 msgid "Follow Thread"
 msgstr "Folge der Unterhaltung"
 
-#: include/conversation.php:1035
+#: include/conversation.php:1034
 #, php-format
 msgid "%s likes this."
 msgstr "%s mag das."
 
-#: include/conversation.php:1038
+#: include/conversation.php:1037
 #, php-format
 msgid "%s doesn't like this."
 msgstr "%s mag das nicht."
 
-#: include/conversation.php:1041
+#: include/conversation.php:1040
 #, php-format
 msgid "%s attends."
 msgstr "%s nimmt teil."
 
-#: include/conversation.php:1044
+#: include/conversation.php:1043
 #, php-format
 msgid "%s doesn't attend."
 msgstr "%s nimmt nicht teil."
 
-#: include/conversation.php:1047
+#: include/conversation.php:1046
 #, php-format
 msgid "%s attends maybe."
 msgstr "%s nimmt eventuell teil."
 
-#: include/conversation.php:1057
+#: include/conversation.php:1056
 msgid "and"
 msgstr "und"
 
-#: include/conversation.php:1063
+#: include/conversation.php:1062
 #, php-format
 msgid ", and %d other people"
 msgstr " und %d andere"
 
-#: include/conversation.php:1072
+#: include/conversation.php:1071
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this"
 msgstr "<span  %1$s>%2$d Personen</span> mögen das"
 
-#: include/conversation.php:1073
+#: include/conversation.php:1072
 #, php-format
 msgid "%s like this."
 msgstr "%s mögen das."
 
-#: include/conversation.php:1076
+#: include/conversation.php:1075
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this"
 msgstr "<span  %1$s>%2$d Personen</span> mögen das nicht"
 
-#: include/conversation.php:1077
+#: include/conversation.php:1076
 #, php-format
 msgid "%s don't like this."
 msgstr "%s mögen dies nicht."
 
-#: include/conversation.php:1080
+#: include/conversation.php:1079
 #, php-format
 msgid "<span  %1$s>%2$d people</span> attend"
 msgstr "<span %1$s>%2$d Personen</span> nehmen teil"
 
-#: include/conversation.php:1081
+#: include/conversation.php:1080
 #, php-format
 msgid "%s attend."
 msgstr "%s nehmen teil."
 
-#: include/conversation.php:1084
+#: include/conversation.php:1083
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't attend"
 msgstr "<span %1$s>%2$d Personen</span> nehmen nicht teil"
 
-#: include/conversation.php:1085
+#: include/conversation.php:1084
 #, php-format
 msgid "%s don't attend."
 msgstr "%s nehmen nicht teil."
 
-#: include/conversation.php:1088
+#: include/conversation.php:1087
 #, php-format
 msgid "<span  %1$s>%2$d people</span> anttend maybe"
 msgstr "<span %1$s>%2$d Personen</span> nehmen eventuell teil"
 
-#: include/conversation.php:1089
+#: include/conversation.php:1088
 #, php-format
 msgid "%s anttend maybe."
 msgstr "%s  nehmen vielleicht teil."
 
-#: include/conversation.php:1128 include/conversation.php:1146
+#: include/conversation.php:1127 include/conversation.php:1145
 msgid "Visible to <strong>everybody</strong>"
 msgstr "Für <strong>jedermann</strong> sichtbar"
 
-#: include/conversation.php:1130 include/conversation.php:1148
+#: include/conversation.php:1129 include/conversation.php:1147
 msgid "Please enter a video link/URL:"
 msgstr "Bitte Link/URL zum Video einfügen:"
 
-#: include/conversation.php:1131 include/conversation.php:1149
+#: include/conversation.php:1130 include/conversation.php:1148
 msgid "Please enter an audio link/URL:"
 msgstr "Bitte Link/URL zum Audio einfügen:"
 
-#: include/conversation.php:1132 include/conversation.php:1150
+#: include/conversation.php:1131 include/conversation.php:1149
 msgid "Tag term:"
 msgstr "Tag:"
 
-#: include/conversation.php:1134 include/conversation.php:1152
+#: include/conversation.php:1133 include/conversation.php:1151
 msgid "Where are you right now?"
 msgstr "Wo hältst Du Dich jetzt gerade auf?"
 
-#: include/conversation.php:1135
+#: include/conversation.php:1134
 msgid "Delete item(s)?"
 msgstr "Einträge löschen?"
 
-#: include/conversation.php:1204
+#: include/conversation.php:1203
 msgid "permissions"
 msgstr "Zugriffsrechte"
 
-#: include/conversation.php:1227
+#: include/conversation.php:1226
 msgid "Post to Groups"
 msgstr "Poste an Gruppe"
 
-#: include/conversation.php:1228
+#: include/conversation.php:1227
 msgid "Post to Contacts"
 msgstr "Poste an Kontakte"
 
-#: include/conversation.php:1229
+#: include/conversation.php:1228
 msgid "Private post"
 msgstr "Privater Beitrag"
 
-#: include/conversation.php:1386
+#: include/conversation.php:1385
 msgid "View all"
 msgstr "Zeige alle"
 
-#: include/conversation.php:1408
+#: include/conversation.php:1407
 msgid "Like"
 msgid_plural "Likes"
 msgstr[0] "mag ich"
 msgstr[1] "Mag ich"
 
-#: include/conversation.php:1411
+#: include/conversation.php:1410
 msgid "Dislike"
 msgid_plural "Dislikes"
 msgstr[0] "mag ich nicht"
 msgstr[1] "Mag ich nicht"
 
-#: include/conversation.php:1417
+#: include/conversation.php:1416
 msgid "Not Attending"
 msgid_plural "Not Attending"
 msgstr[0] "Nicht teilnehmend "
 msgstr[1] "Nicht teilnehmend"
 
-#: include/conversation.php:1420 include/profile_selectors.php:6
+#: include/conversation.php:1419 include/profile_selectors.php:6
 msgid "Undecided"
 msgid_plural "Undecided"
 msgstr[0] "Unentschieden"
@@ -7322,66 +7353,58 @@ msgstr "entspannt"
 msgid "surprised"
 msgstr "überrascht"
 
-#: include/text.php:1497
+#: include/text.php:1504
 msgid "bytes"
 msgstr "Byte"
 
-#: include/text.php:1529 include/text.php:1541
+#: include/text.php:1536 include/text.php:1548
 msgid "Click to open/close"
 msgstr "Zum öffnen/schließen klicken"
 
-#: include/text.php:1715
+#: include/text.php:1722
 msgid "View on separate page"
 msgstr "Auf separater Seite ansehen"
 
-#: include/text.php:1716
+#: include/text.php:1723
 msgid "view on separate page"
 msgstr "auf separater Seite ansehen"
 
-#: include/text.php:1995
+#: include/text.php:2002
 msgid "activity"
 msgstr "Aktivität"
 
-#: include/text.php:1998
+#: include/text.php:2005
 msgid "post"
 msgstr "Beitrag"
 
-#: include/text.php:2166
+#: include/text.php:2173
 msgid "Item filed"
 msgstr "Beitrag abgelegt"
 
-#: include/bbcode.php:483 include/bbcode.php:1143 include/bbcode.php:1144
+#: include/bbcode.php:482 include/bbcode.php:1157 include/bbcode.php:1158
 msgid "Image/photo"
 msgstr "Bild/Foto"
 
-#: include/bbcode.php:581
+#: include/bbcode.php:595
 #, php-format
 msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
 msgstr "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
 
-#: include/bbcode.php:615
+#: include/bbcode.php:629
 #, php-format
 msgid ""
 "<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a "
 "href=\"%s\" target=\"_blank\">post</a>"
 msgstr "<span><a href=\"%s\" target=\"_blank\">%s</a> schrieb den folgenden <a href=\"%s\" target=\"_blank\">Beitrag</a>"
 
-#: include/bbcode.php:1103 include/bbcode.php:1123
+#: include/bbcode.php:1117 include/bbcode.php:1137
 msgid "$1 wrote:"
 msgstr "$1 hat geschrieben:"
 
-#: include/bbcode.php:1152 include/bbcode.php:1153
+#: include/bbcode.php:1166 include/bbcode.php:1167
 msgid "Encrypted content"
 msgstr "Verschlüsselter Inhalt"
 
-#: include/notifier.php:843 include/delivery.php:459
-msgid "(no subject)"
-msgstr "(kein Betreff)"
-
-#: include/notifier.php:853 include/delivery.php:470 include/enotify.php:37
-msgid "noreply"
-msgstr "noreply"
-
 #: include/dba_pdo.php:72 include/dba.php:55
 #, php-format
 msgid "Cannot locate DNS info for database server '%s'"
@@ -7427,6 +7450,10 @@ msgstr "OStatus"
 msgid "RSS/Atom"
 msgstr "RSS/Atom"
 
+#: include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
+
 #: include/contact_selectors.php:82
 msgid "Zot!"
 msgstr "Zott"
@@ -7471,7 +7498,7 @@ msgstr "App.net"
 msgid "Redmatrix"
 msgstr "Redmatrix"
 
-#: include/Scrape.php:610
+#: include/Scrape.php:624
 msgid " on Last.fm"
 msgstr " bei Last.fm"
 
@@ -7647,46 +7674,21 @@ msgstr "Navigation"
 msgid "Site map"
 msgstr "Sitemap"
 
-#: include/api.php:345 include/api.php:356 include/api.php:465
-#: include/api.php:1184 include/api.php:1186
-msgid "User not found."
-msgstr "Nutzer nicht gefunden."
-
-#: include/api.php:832
+#: include/api.php:878
 #, php-format
 msgid "Daily posting limit of %d posts reached. The post was rejected."
 msgstr "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."
 
-#: include/api.php:851
+#: include/api.php:897
 #, php-format
 msgid "Weekly posting limit of %d posts reached. The post was rejected."
 msgstr "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."
 
-#: include/api.php:870
+#: include/api.php:916
 #, php-format
 msgid "Monthly posting limit of %d posts reached. The post was rejected."
 msgstr "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."
 
-#: include/api.php:1393
-msgid "There is no status with this id."
-msgstr "Es gibt keinen Status mit dieser ID."
-
-#: include/api.php:1467
-msgid "There is no conversation with this id."
-msgstr "Es existiert keine Unterhaltung mit dieser ID."
-
-#: include/api.php:1746
-msgid "Invalid item."
-msgstr "Ungültiges Objekt"
-
-#: include/api.php:1756
-msgid "Invalid action. "
-msgstr "Ungültige Aktion"
-
-#: include/api.php:1764
-msgid "DB error"
-msgstr "DB Error"
-
 #: include/user.php:48
 msgid "An invitation is required."
 msgstr "Du benötigst eine Einladung."
@@ -7749,8 +7751,7 @@ msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."
 msgid "An error occurred during registration. Please try again."
 msgstr "Während der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."
 
-#: include/user.php:256 view/theme/clean/config.php:56
-#: view/theme/duepuntozero/config.php:44
+#: include/user.php:256 view/theme/duepuntozero/config.php:44
 msgid "default"
 msgstr "Standard"
 
@@ -7805,15 +7806,23 @@ msgstr "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3$s\n\
 msgid "Sharing notification from Diaspora network"
 msgstr "Freigabe-Benachrichtigung von Diaspora"
 
-#: include/diaspora.php:2607
+#: include/diaspora.php:2608
 msgid "Attachments:"
 msgstr "Anhänge:"
 
-#: include/items.php:4900
+#: include/delivery.php:533
+msgid "(no subject)"
+msgstr "(kein Betreff)"
+
+#: include/delivery.php:544 include/enotify.php:37
+msgid "noreply"
+msgstr "noreply"
+
+#: include/items.php:4907
 msgid "Do you really want to delete this item?"
 msgstr "Möchtest Du wirklich dieses Item löschen?"
 
-#: include/items.php:5175
+#: include/items.php:5182
 msgid "Archives"
 msgstr "Archiv"
 
@@ -8329,11 +8338,11 @@ msgstr "Kompletter Name:\t%1$s\\nURL der Seite:\t%2$s\\nLogin Name:\t%3$s (%4$s)
 msgid "Please visit %s to approve or reject the request."
 msgstr "Bitte besuche %s um die Anfrage zu bearbeiten."
 
-#: include/oembed.php:220
+#: include/oembed.php:226
 msgid "Embedded content"
 msgstr "Eingebetteter Inhalt"
 
-#: include/oembed.php:229
+#: include/oembed.php:235
 msgid "Embedding disabled"
 msgstr "Einbettungen deaktiviert"
 
@@ -8391,7 +8400,6 @@ msgid "Set theme width"
 msgstr "Theme Breite festlegen"
 
 #: view/theme/cleanzero/config.php:86 view/theme/quattro/config.php:68
-#: view/theme/clean/config.php:88
 msgid "Color scheme"
 msgstr "Farbschema"
 
@@ -8513,56 +8521,6 @@ msgstr "Zoomfaktor der Earth Layer"
 msgid "Show/hide boxes at right-hand column:"
 msgstr "Rahmen auf der rechten Seite anzeigen/verbergen"
 
-#: view/theme/clean/config.php:57
-msgid "Midnight"
-msgstr "Mitternacht"
-
-#: view/theme/clean/config.php:58
-msgid "Zenburn"
-msgstr "Zenburn"
-
-#: view/theme/clean/config.php:59
-msgid "Bootstrap"
-msgstr "Bootstrap"
-
-#: view/theme/clean/config.php:60
-msgid "Shades of Pink"
-msgstr "Shades of Pink"
-
-#: view/theme/clean/config.php:61
-msgid "Lime and Orange"
-msgstr "Lime and Orange"
-
-#: view/theme/clean/config.php:62
-msgid "GeoCities Retro"
-msgstr "GeoCities Retro"
-
-#: view/theme/clean/config.php:86
-msgid "Background Image"
-msgstr "Hintergrundbild"
-
-#: view/theme/clean/config.php:86
-msgid ""
-"The URL to a picture (e.g. from your photo album) that should be used as "
-"background image."
-msgstr "Die URL eines Bildes (z.B. aus deinem Fotoalbum), das als Hintergrundbild verwendet werden soll."
-
-#: view/theme/clean/config.php:87
-msgid "Background Color"
-msgstr "Hintergrundfarbe"
-
-#: view/theme/clean/config.php:87
-msgid "HEX value for the background color. Don't include the #"
-msgstr "HEX Wert der Hintergrundfarbe. Gib die # nicht mit an."
-
-#: view/theme/clean/config.php:89
-msgid "font size"
-msgstr "Schriftgröße"
-
-#: view/theme/clean/config.php:89
-msgid "base font size for your interface"
-msgstr "Basis-Schriftgröße für dein Interface."
-
 #: view/theme/vier/config.php:64
 msgid "Comma separated list of helper forums"
 msgstr "Komma-Separierte Liste der Helfer-Foren"
index 2a9a4afb8dd099f3eb21791db6c22041d0a952eb..d9b8c8b6aa6c205f6754c36b212650c6e51fe01b 100644 (file)
@@ -9,7 +9,7 @@ $a->strings["Network:"] = "Netzwerk";
 $a->strings["Forum"] = "Forum";
 $a->strings["%d contact edited."] = array(
        0 => "%d Kontakt bearbeitet.",
-       1 => "%d Kontakte bearbeitet",
+       1 => "%d Kontakte bearbeitet.",
 );
 $a->strings["Could not access contact record."] = "Konnte nicht auf die Kontaktdaten zugreifen.";
 $a->strings["Could not locate selected profile."] = "Konnte das ausgewählte Profil nicht finden.";
@@ -142,9 +142,6 @@ $a->strings["Edit your <strong>default</strong> profile to your liking. Review t
 $a->strings["Profile Keywords"] = "Profil Schlüsselbegriffe";
 $a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Trage ein paar öffentliche Stichwörter in Dein Standardprofil ein, die Deine Interessen beschreiben. Eventuell sind wir in der Lage Leute zu finden, die Deine Interessen teilen und können Dir dann Kontakte vorschlagen.";
 $a->strings["Connecting"] = "Verbindungen knüpfen";
-$a->strings["Facebook"] = "Facebook";
-$a->strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Richte die Verbindung zu Facebook ein, wenn Du im Augenblick ein Facebook-Konto hast und (optional) Deine Facebook-Freunde und -Unterhaltungen importieren willst.";
-$a->strings["<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "<em>Wenn</em> dies Dein privater Server ist, könnte die Installation des Facebook Connectors Deinen Umzug ins freie soziale Netz angenehmer gestalten.";
 $a->strings["Importing Emails"] = "Emails Importieren";
 $a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Gib Deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls Du E-Mails aus Deinem Posteingang importieren und mit Freunden und Mailinglisten interagieren willst.";
 $a->strings["Go to Your Contacts Page"] = "Gehe zu deiner Kontakt-Seite";
@@ -290,12 +287,6 @@ $a->strings["Forgot your Password?"] = "Hast Du Dein Passwort vergessen?";
 $a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse an und fordere ein neues Passwort an. Es werden Dir dann weitere Informationen per Mail zugesendet.";
 $a->strings["Nickname or Email: "] = "Spitzname oder E-Mail:";
 $a->strings["Reset"] = "Zurücksetzen";
-$a->strings["event"] = "Event";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s";
-$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s nicht";
-$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil.";
-$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt nicht an %2\$ss %3\$s teil.";
-$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt eventuell an %2\$ss %3\$s teil.";
 $a->strings["{0} wants to be your friend"] = "{0} möchte mit Dir in Kontakt treten";
 $a->strings["{0} sent you a message"] = "{0} schickte Dir eine Nachricht";
 $a->strings["{0} requested registration"] = "{0} möchte sich registrieren";
@@ -425,16 +416,22 @@ $a->strings["Site"] = "Seite";
 $a->strings["Users"] = "Nutzer";
 $a->strings["Plugins"] = "Plugins";
 $a->strings["Themes"] = "Themen";
+$a->strings["Additional features"] = "Zusätzliche Features";
 $a->strings["DB updates"] = "DB Updates";
 $a->strings["Inspect Queue"] = "Warteschlange Inspizieren";
+$a->strings["Federation Statistics"] = "Federation Statistik";
 $a->strings["Logs"] = "Protokolle";
+$a->strings["View Logs"] = "Protokolle anzeigen";
 $a->strings["probe address"] = "Adresse untersuchen";
 $a->strings["check webfinger"] = "Webfinger überprüfen";
 $a->strings["Admin"] = "Administration";
 $a->strings["Plugin Features"] = "Plugin Features";
 $a->strings["diagnostics"] = "Diagnose";
 $a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten";
+$a->strings["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."] = "Diese Seite präsentiert einige Zahlen zu dem bekannten Teil des föderalen sozialen Netzwerks, von dem deine Friendica Installation ein Teil ist. Diese Zahlen sind nicht absolut und reflektieren nur den Teil des Netzwerks, den dein Knoten kennt.";
+$a->strings["The <em>Auto Discovered Contact Directory</em> feature is not enabled, it will improve the data displayed here."] = "Die Funktion um <em>Automatisch ein Kontaktverzeichnis erstellen</em> ist nicht aktiv. Es wird die hier angezeigten Daten verbessern.";
 $a->strings["Administration"] = "Administration";
+$a->strings["Currently this node is aware of nodes from the following platforms:"] = "Momentan kennt dieser Knoten andere Knoten der folgenden Plattformen:";
 $a->strings["ID"] = "ID";
 $a->strings["Recipient Name"] = "Empfänger Name";
 $a->strings["Recipient Profile"] = "Empfänger Profil";
@@ -686,9 +683,11 @@ $a->strings["Toggle"] = "Umschalten";
 $a->strings["Author: "] = "Autor:";
 $a->strings["Maintainer: "] = "Betreuer:";
 $a->strings["Reload active plugins"] = "Aktive Plugins neu laden";
+$a->strings["There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s"] = "Es sind derzeit keine Plugins auf diesem Knoten verfügbar. Du findest das offizielle Plugin-Repository unter %1\$s und weitere eventuell interessante Plugins im offenen Plugins-Verzeichnis auf %2\$s.";
 $a->strings["No themes found."] = "Keine Themen gefunden.";
 $a->strings["Screenshot"] = "Bildschirmfoto";
 $a->strings["Reload active themes"] = "Aktives Theme neu laden";
+$a->strings["No themes found on the system. They should be paced in %1\$s"] = "Es wurden keine Themes auf dem System gefunden. Diese sollten in %1\$s patziert werden.";
 $a->strings["[Experimental]"] = "[Experimentell]";
 $a->strings["[Unsupported]"] = "[Nicht unterstützt]";
 $a->strings["Log settings updated."] = "Protokolleinstellungen aktualisiert.";
@@ -697,11 +696,12 @@ $a->strings["Enable Debugging"] = "Protokoll führen";
 $a->strings["Log file"] = "Protokolldatei";
 $a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis.";
 $a->strings["Log level"] = "Protokoll-Level";
-$a->strings["Close"] = "Schließen";
-$a->strings["FTP Host"] = "FTP Host";
-$a->strings["FTP Path"] = "FTP Pfad";
-$a->strings["FTP User"] = "FTP Nutzername";
-$a->strings["FTP Password"] = "FTP Passwort";
+$a->strings["PHP logging"] = "PHP Protokollieren";
+$a->strings["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 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "Um PHP Warnungen und Fehler zu protokollieren, kannst du die folgenden Zeilen zur .htconfig.php Datei deiner Installation hinzufügen. Den Dateinamen der Log-Datei legst du in der Zeile mit dem 'error_log' fest,  Er ist relativ zum Friendica-Stammverzeichnis und muss schreibbar durch den Webserver sein. Eine \"1\" als Option für die Punkte 'log_errors' und 'display_errors' aktiviert die Funktionen zum Protokollieren bzw. Anzeigen der Fehler, eine \"0\" deaktiviert sie.";
+$a->strings["Off"] = "Aus";
+$a->strings["On"] = "An";
+$a->strings["Lock feature %s"] = "Feature festlegen: %s";
+$a->strings["Manage Additional Features"] = "Zusätzliche Features Verwalten";
 $a->strings["Search Results For: %s"] = "Suchergebnisse für: %s";
 $a->strings["Remove term"] = "Begriff entfernen";
 $a->strings["Saved Searches"] = "Gespeicherte Suchen";
@@ -923,7 +923,6 @@ $a->strings["Not available."] = "Nicht verfügbar.";
 $a->strings["Community"] = "Gemeinschaft";
 $a->strings["No results."] = "Keine Ergebnisse.";
 $a->strings["everybody"] = "jeder";
-$a->strings["Additional features"] = "Zusätzliche Features";
 $a->strings["Display"] = "Anzeige";
 $a->strings["Social Networks"] = "Soziale Netzwerke";
 $a->strings["Delegations"] = "Delegationen";
@@ -960,8 +959,6 @@ $a->strings["No name"] = "Kein Name";
 $a->strings["Remove authorization"] = "Autorisierung entziehen";
 $a->strings["No Plugin settings configured"] = "Keine Plugin-Einstellungen konfiguriert";
 $a->strings["Plugin Settings"] = "Plugin-Einstellungen";
-$a->strings["Off"] = "Aus";
-$a->strings["On"] = "An";
 $a->strings["Additional Features"] = "Zusätzliche Features";
 $a->strings["General Social Media Settings"] = "Allgemeine Einstellungen zu Sozialen Medien";
 $a->strings["Disable intelligent shortening"] = "Intelligentes Link kürzen ausschalten";
@@ -1108,12 +1105,12 @@ $a->strings["Friends are advised to please try again in 24 hours."] = "Freunde s
 $a->strings["Invalid locator"] = "Ungültiger Locator";
 $a->strings["Invalid email address."] = "Ungültige E-Mail-Adresse.";
 $a->strings["This account has not been configured for email. Request failed."] = "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen.";
-$a->strings["Unable to resolve your name at the provided location."] = "Konnte Deinen Namen an der angegebenen Stelle nicht finden.";
 $a->strings["You have already introduced yourself here."] = "Du hast Dich hier bereits vorgestellt.";
 $a->strings["Apparently you are already friends with %s."] = "Es scheint so, als ob Du bereits mit %s befreundet bist.";
 $a->strings["Invalid profile URL."] = "Ungültige Profil-URL.";
 $a->strings["Disallowed profile URL."] = "Nicht erlaubte Profil-URL.";
 $a->strings["Your introduction has been sent."] = "Deine Kontaktanfrage wurde gesendet.";
+$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems.   ";
 $a->strings["Please login to confirm introduction."] = "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen.";
 $a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit <strong>diesem</strong> Profil an.";
 $a->strings["Confirm"] = "Bestätigen";
@@ -1565,11 +1562,18 @@ $a->strings["Forums:"] = "Foren:";
 $a->strings["Videos"] = "Videos";
 $a->strings["Events and Calendar"] = "Ereignisse und Kalender";
 $a->strings["Only You Can See This"] = "Nur Du kannst das sehen";
+$a->strings["event"] = "Event";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s nicht";
+$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil.";
+$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt nicht an %2\$ss %3\$s teil.";
+$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt eventuell an %2\$ss %3\$s teil.";
 $a->strings["Post to Email"] = "An E-Mail senden";
 $a->strings["Connectors disabled, since \"%s\" is enabled."] = "Konnektoren sind nicht verfügbar, da \"%s\" aktiv ist.";
 $a->strings["Visible to everybody"] = "Für jeden sichtbar";
 $a->strings["show"] = "zeigen";
 $a->strings["don't show"] = "nicht zeigen";
+$a->strings["Close"] = "Schließen";
 $a->strings["[no subject]"] = "[kein Betreff]";
 $a->strings["stopped following"] = "wird nicht mehr gefolgt";
 $a->strings["View Status"] = "Pinnwand anschauen";
@@ -1699,8 +1703,6 @@ $a->strings["<a href=\"%1\$s\" target=\"_blank\">%2\$s</a> %3\$s"] = "<a href=\"
 $a->strings["<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"] = "<span><a href=\"%s\" target=\"_blank\">%s</a> schrieb den folgenden <a href=\"%s\" target=\"_blank\">Beitrag</a>";
 $a->strings["$1 wrote:"] = "$1 hat geschrieben:";
 $a->strings["Encrypted content"] = "Verschlüsselter Inhalt";
-$a->strings["(no subject)"] = "(kein Betreff)";
-$a->strings["noreply"] = "noreply";
 $a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln.";
 $a->strings["Unknown | Not categorised"] = "Unbekannt | Nicht kategorisiert";
 $a->strings["Block immediately"] = "Sofort blockieren";
@@ -1712,6 +1714,7 @@ $a->strings["Weekly"] = "Wöchentlich";
 $a->strings["Monthly"] = "Monatlich";
 $a->strings["OStatus"] = "OStatus";
 $a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Facebook"] = "Facebook";
 $a->strings["Zot!"] = "Zott";
 $a->strings["LinkedIn"] = "LinkedIn";
 $a->strings["XMPP/IM"] = "XMPP/Chat";
@@ -1767,15 +1770,9 @@ $a->strings["Manage/edit friends and contacts"] = "Freunde und Kontakte verwalte
 $a->strings["Site setup and configuration"] = "Einstellungen der Seite und Konfiguration";
 $a->strings["Navigation"] = "Navigation";
 $a->strings["Site map"] = "Sitemap";
-$a->strings["User not found."] = "Nutzer nicht gefunden.";
 $a->strings["Daily posting limit of %d posts reached. The post was rejected."] = "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen.";
 $a->strings["Weekly posting limit of %d posts reached. The post was rejected."] = "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen.";
 $a->strings["Monthly posting limit of %d posts reached. The post was rejected."] = "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen.";
-$a->strings["There is no status with this id."] = "Es gibt keinen Status mit dieser ID.";
-$a->strings["There is no conversation with this id."] = "Es existiert keine Unterhaltung mit dieser ID.";
-$a->strings["Invalid item."] = "Ungültiges Objekt";
-$a->strings["Invalid action. "] = "Ungültige Aktion";
-$a->strings["DB error"] = "DB Error";
 $a->strings["An invitation is required."] = "Du benötigst eine Einladung.";
 $a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht überprüft werden.";
 $a->strings["Invalid OpenID url"] = "Ungültige OpenID URL";
@@ -1798,6 +1795,8 @@ $a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your a
 $a->strings["\n\t\tThe login details are as follows:\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t%1\$s\n\t\t\tPassword:\t%5\$s\n\n\t\tYou may change your password from your account \"Settings\" page after logging\n\t\tin.\n\n\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\tYou may also wish to add some basic information to your default profile\n\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\tWe recommend setting your full name, adding a profile photo,\n\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\tthan that.\n\n\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\tIf you are new and do not know anybody here, they may help\n\t\tyou to make some new and interesting friends.\n\n\n\t\tThank you and welcome to %2\$s."] = "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3\$s\n\tBenutzernamename:\t%1\$s\n\tPasswort:\t%5\$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nDanke für Deine Aufmerksamkeit und willkommen auf %2\$s.";
 $a->strings["Sharing notification from Diaspora network"] = "Freigabe-Benachrichtigung von Diaspora";
 $a->strings["Attachments:"] = "Anhänge:";
+$a->strings["(no subject)"] = "(kein Betreff)";
+$a->strings["noreply"] = "noreply";
 $a->strings["Do you really want to delete this item?"] = "Möchtest Du wirklich dieses Item löschen?";
 $a->strings["Archives"] = "Archiv";
 $a->strings["Male"] = "Männlich";
@@ -1958,18 +1957,6 @@ $a->strings["Your personal photos"] = "Deine privaten Fotos";
 $a->strings["Local Directory"] = "Lokales Verzeichnis";
 $a->strings["Set zoomfactor for Earth Layers"] = "Zoomfaktor der Earth Layer";
 $a->strings["Show/hide boxes at right-hand column:"] = "Rahmen auf der rechten Seite anzeigen/verbergen";
-$a->strings["Midnight"] = "Mitternacht";
-$a->strings["Zenburn"] = "Zenburn";
-$a->strings["Bootstrap"] = "Bootstrap";
-$a->strings["Shades of Pink"] = "Shades of Pink";
-$a->strings["Lime and Orange"] = "Lime and Orange";
-$a->strings["GeoCities Retro"] = "GeoCities Retro";
-$a->strings["Background Image"] = "Hintergrundbild";
-$a->strings["The URL to a picture (e.g. from your photo album) that should be used as background image."] = "Die URL eines Bildes (z.B. aus deinem Fotoalbum), das als Hintergrundbild verwendet werden soll.";
-$a->strings["Background Color"] = "Hintergrundfarbe";
-$a->strings["HEX value for the background color. Don't include the #"] = "HEX Wert der Hintergrundfarbe. Gib die # nicht mit an.";
-$a->strings["font size"] = "Schriftgröße";
-$a->strings["base font size for your interface"] = "Basis-Schriftgröße für dein Interface.";
 $a->strings["Comma separated list of helper forums"] = "Komma-Separierte Liste der Helfer-Foren";
 $a->strings["Set style"] = "Stil auswählen";
 $a->strings["Quick Start"] = "Schnell-Start";
index b34cac79809d53a2ba8958d604dcbbf50d257c44..5f4494dde7b4fbfe5e1fd7293b75c04b4bdf070d 100644 (file)
     content: "Z";
 }
 .shashape.hash:before{
-    content: "/";
+    content: "#";
 }
 .shashape.tag:before{
     content: "=";
index 05940508ca49c5609a68d0f8071c646b18112daf..8646bf8e448c532ee66165f6f7e77a831c847faf 100644 (file)
@@ -93,7 +93,7 @@ span.connector {
 
 /* Shared Messages */
 .shared_header {
-  height: 32px;
+  min-height: 32px;
   color: #999;
   border-top: 1px solid #D2D2D2;
   padding-top: 5px;
@@ -118,10 +118,12 @@ span.connector {
   -moz-border-radius: 4px;
   border-radius: 4px;
   float: left;
+  margin-right: 9px;
 }
 
 .shared_header span {
-  margin-left: 9px;
+  display: table-cell;
+  float: none;
 }
 
 blockquote.shared_content {
@@ -274,13 +276,37 @@ a {
 #poke-recip-label, #poke-action-label, #prvmail-message-label {
   margin: 10px 0 10px;
 }
+.version-match {
+    font-weight: bold;
+    color: #00a700;
+}
+.federation-graph {
+    width: 400px; 
+    height: 400px; 
+    float: right; 
+    margin: 20px;
+}
+.federation-network-graph {
+    width: 240px; 
+    height: 240px; 
+    float: left; 
+    margin: 20px;
+}
+ul.federation-stats,
 ul.credits {
   list-style: none;
 }
+ul.federation-stats li,
 ul.credits li {
   float: left;
   width: 240px;
 }
+table#federation-stats {
+    width: 100%;
+}
+td.federation-data {
+    border-bottom: 1px solid #000;
+}
 
 .contact-entry-photo img {
   max-width: 80px;
@@ -321,3 +347,7 @@ ul.credits li {
 .p-addr {
        clear: both;    
 }
+
+#live-community {
+       clear: both;
+}
index ba81fdb03bfb1ec8915fbe99aa57351d56deab0c..5ae713daf2fe39080bd983cebba29cdfc4c4859f 100644 (file)
@@ -9,15 +9,15 @@
 # Gert Cauwenberg <gcauwenberg@gmail.com>, 2013
 # jeroenpraat <jeroenpraat@xs4all.nl>, 2012-2014
 # jeroenpraat <jeroenpraat@xs4all.nl>, 2012
-# Karel Vandecandelaere <karel@dasrakel.eu>, 2015
+# Karel Vandecandelaere <karel@dasrakel.eu>, 2015-2016
 # Ralph <pcbee4you@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-08 21:46+0100\n"
-"PO-Revision-Date: 2015-11-17 23:49+0000\n"
-"Last-Translator: Ralph <pcbee4you@gmail.com>\n"
+"POT-Creation-Date: 2016-01-18 18:49+0100\n"
+"PO-Revision-Date: 2016-01-20 13:13+0000\n"
+"Last-Translator: Karel Vandecandelaere <karel@dasrakel.eu>\n"
 "Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,233 +25,182 @@ msgstr ""
 "Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: mod/contacts.php:118
+#: mod/contacts.php:50 include/identity.php:395
+msgid "Network:"
+msgstr "Netwerk:"
+
+#: mod/contacts.php:51 mod/contacts.php:961 mod/videos.php:37
+#: mod/viewcontacts.php:105 mod/dirfind.php:214 mod/network.php:598
+#: mod/allfriends.php:77 mod/match.php:82 mod/directory.php:172
+#: mod/common.php:123 mod/suggest.php:95 mod/photos.php:41
+#: include/identity.php:298
+msgid "Forum"
+msgstr "Forum"
+
+#: mod/contacts.php:128
 #, php-format
 msgid "%d contact edited."
 msgid_plural "%d contacts edited"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d contact gewijzigd."
+msgstr[1] "%d contacten gewijzigd."
 
-#: mod/contacts.php:149 mod/contacts.php:372
+#: mod/contacts.php:159 mod/contacts.php:383
 msgid "Could not access contact record."
 msgstr "Kon geen toegang krijgen tot de contactgegevens"
 
-#: mod/contacts.php:163
+#: mod/contacts.php:173
 msgid "Could not locate selected profile."
 msgstr "Kon het geselecteerde profiel niet vinden."
 
-#: mod/contacts.php:196
+#: mod/contacts.php:206
 msgid "Contact updated."
 msgstr "Contact bijgewerkt."
 
-#: mod/contacts.php:198 mod/dfrn_request.php:576
+#: mod/contacts.php:208 mod/dfrn_request.php:575
 msgid "Failed to update contact record."
 msgstr "Ik kon de contactgegevens niet aanpassen."
 
-#: mod/contacts.php:354 mod/manage.php:96 mod/display.php:496
-#: mod/profile_photo.php:19 mod/profile_photo.php:169
-#: mod/profile_photo.php:180 mod/profile_photo.php:193
-#: mod/ostatus_subscribe.php:9 mod/follow.php:10 mod/follow.php:72
-#: mod/follow.php:137 mod/item.php:169 mod/item.php:185 mod/group.php:19
+#: mod/contacts.php:365 mod/manage.php:96 mod/display.php:504
+#: mod/profile_photo.php:19 mod/profile_photo.php:175
+#: mod/profile_photo.php:186 mod/profile_photo.php:199
+#: mod/ostatus_subscribe.php:9 mod/follow.php:11 mod/follow.php:73
+#: mod/follow.php:155 mod/item.php:180 mod/item.php:192 mod/group.php:19
 #: mod/dfrn_confirm.php:55 mod/fsuggest.php:78 mod/wall_upload.php:77
-#: mod/wall_upload.php:80 mod/viewcontacts.php:24 mod/notifications.php:69
-#: mod/message.php:45 mod/message.php:181 mod/crepair.php:120
+#: mod/wall_upload.php:80 mod/viewcontacts.php:40 mod/notifications.php:69
+#: mod/message.php:45 mod/message.php:181 mod/crepair.php:117
 #: mod/dirfind.php:11 mod/nogroup.php:25 mod/network.php:4
-#: mod/allfriends.php:11 mod/events.php:165 mod/wallmessage.php:9
+#: mod/allfriends.php:12 mod/events.php:165 mod/wallmessage.php:9
 #: mod/wallmessage.php:33 mod/wallmessage.php:79 mod/wallmessage.php:103
 #: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/settings.php:20
-#: mod/settings.php:116 mod/settings.php:635 mod/register.php:42
-#: mod/delegate.php:12 mod/common.php:17 mod/mood.php:114 mod/suggest.php:58
+#: mod/settings.php:126 mod/settings.php:646 mod/register.php:42
+#: mod/delegate.php:12 mod/common.php:18 mod/mood.php:114 mod/suggest.php:58
 #: mod/profiles.php:165 mod/profiles.php:615 mod/editpost.php:10
 #: mod/api.php:26 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:163 mod/photos.php:1097 mod/regmod.php:110
-#: mod/uimport.php:23 mod/attach.php:33 include/items.php:5103 index.php:382
+#: mod/photos.php:171 mod/photos.php:1105 mod/regmod.php:110
+#: mod/uimport.php:23 mod/attach.php:33 include/items.php:5073 index.php:383
 msgid "Permission denied."
 msgstr "Toegang geweigerd"
 
-#: mod/contacts.php:393
+#: mod/contacts.php:404
 msgid "Contact has been blocked"
 msgstr "Contact is geblokkeerd"
 
-#: mod/contacts.php:393
+#: mod/contacts.php:404
 msgid "Contact has been unblocked"
 msgstr "Contact is gedeblokkeerd"
 
-#: mod/contacts.php:404
+#: mod/contacts.php:415
 msgid "Contact has been ignored"
 msgstr "Contact wordt genegeerd"
 
-#: mod/contacts.php:404
+#: mod/contacts.php:415
 msgid "Contact has been unignored"
 msgstr "Contact wordt niet meer genegeerd"
 
-#: mod/contacts.php:416
+#: mod/contacts.php:427
 msgid "Contact has been archived"
 msgstr "Contact is gearchiveerd"
 
-#: mod/contacts.php:416
+#: mod/contacts.php:427
 msgid "Contact has been unarchived"
 msgstr "Contact is niet meer gearchiveerd"
 
-#: mod/contacts.php:443 mod/contacts.php:816
+#: mod/contacts.php:454 mod/contacts.php:802
 msgid "Do you really want to delete this contact?"
 msgstr "Wil je echt dit contact verwijderen?"
 
-#: mod/contacts.php:445 mod/follow.php:105 mod/message.php:216
-#: mod/settings.php:1091 mod/settings.php:1097 mod/settings.php:1105
-#: mod/settings.php:1109 mod/settings.php:1114 mod/settings.php:1120
-#: mod/settings.php:1126 mod/settings.php:1132 mod/settings.php:1158
-#: mod/settings.php:1159 mod/settings.php:1160 mod/settings.php:1161
-#: mod/settings.php:1162 mod/dfrn_request.php:848 mod/register.php:235
+#: mod/contacts.php:456 mod/follow.php:110 mod/message.php:216
+#: mod/settings.php:1103 mod/settings.php:1109 mod/settings.php:1117
+#: mod/settings.php:1121 mod/settings.php:1126 mod/settings.php:1132
+#: mod/settings.php:1138 mod/settings.php:1144 mod/settings.php:1170
+#: 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:4935
+#: mod/profiles.php:687 mod/api.php:105 include/items.php:4905
 msgid "Yes"
 msgstr "Ja"
 
-#: mod/contacts.php:448 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:116
-#: mod/videos.php:123 mod/message.php:219 mod/fbrowser.php:93
-#: mod/fbrowser.php:128 mod/settings.php:649 mod/settings.php:675
-#: mod/dfrn_request.php:862 mod/suggest.php:32 mod/editpost.php:147
-#: mod/photos.php:239 mod/photos.php:328 include/conversation.php:1221
-#: include/items.php:4938
+#: mod/contacts.php:459 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121
+#: mod/videos.php:131 mod/message.php:219 mod/fbrowser.php:93
+#: 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:4908
 msgid "Cancel"
 msgstr "Annuleren"
 
-#: mod/contacts.php:460
+#: mod/contacts.php:471
 msgid "Contact has been removed."
 msgstr "Contact is verwijderd."
 
-#: mod/contacts.php:498
+#: mod/contacts.php:512
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr "Je bent wederzijds bevriend met %s"
 
-#: mod/contacts.php:502
+#: mod/contacts.php:516
 #, php-format
 msgid "You are sharing with %s"
 msgstr "Je deelt met %s"
 
-#: mod/contacts.php:507
+#: mod/contacts.php:521
 #, php-format
 msgid "%s is sharing with you"
 msgstr "%s deelt met jou"
 
-#: mod/contacts.php:527
+#: mod/contacts.php:541
 msgid "Private communications are not available for this contact."
 msgstr "Privécommunicatie met dit contact is niet beschikbaar."
 
-#: mod/contacts.php:530 mod/admin.php:643
+#: mod/contacts.php:544 mod/admin.php:811
 msgid "Never"
 msgstr "Nooit"
 
-#: mod/contacts.php:534
+#: mod/contacts.php:548
 msgid "(Update was successful)"
 msgstr "(Wijziging is geslaagd)"
 
-#: mod/contacts.php:534
+#: mod/contacts.php:548
 msgid "(Update was not successful)"
 msgstr "(Wijziging is niet geslaagd)"
 
-#: mod/contacts.php:536
+#: mod/contacts.php:550
 msgid "Suggest friends"
 msgstr "Stel vrienden voor"
 
-#: mod/contacts.php:540
+#: mod/contacts.php:554
 #, php-format
 msgid "Network type: %s"
 msgstr "Netwerk type: %s"
 
-#: mod/contacts.php:543 include/contact_widgets.php:200
-#, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
-msgstr[0] "%d gedeeld contact"
-msgstr[1] "%d gedeelde contacten"
-
-#: mod/contacts.php:548
-msgid "View all contacts"
-msgstr "Alle contacten zien"
-
-#: mod/contacts.php:553 mod/contacts.php:636 mod/contacts.php:820
-#: mod/admin.php:1114
-msgid "Unblock"
-msgstr "Blokkering opheffen"
-
-#: mod/contacts.php:553 mod/contacts.php:636 mod/contacts.php:820
-#: mod/admin.php:1113
-msgid "Block"
-msgstr "Blokkeren"
-
-#: mod/contacts.php:556
-msgid "Toggle Blocked status"
-msgstr "Schakel geblokkeerde status"
-
-#: mod/contacts.php:561 mod/contacts.php:637 mod/contacts.php:821
-msgid "Unignore"
-msgstr "Negeer niet meer"
-
-#: mod/contacts.php:561 mod/contacts.php:637 mod/contacts.php:821
-#: mod/notifications.php:54 mod/notifications.php:179
-#: mod/notifications.php:259
-msgid "Ignore"
-msgstr "Negeren"
-
-#: mod/contacts.php:564
-msgid "Toggle Ignored status"
-msgstr "Schakel negeerstatus"
-
-#: mod/contacts.php:570 mod/contacts.php:822
-msgid "Unarchive"
-msgstr "Archiveer niet meer"
-
-#: mod/contacts.php:570 mod/contacts.php:822
-msgid "Archive"
-msgstr "Archiveer"
-
-#: mod/contacts.php:573
-msgid "Toggle Archive status"
-msgstr "Schakel archiveringsstatus"
-
-#: mod/contacts.php:578
-msgid "Repair"
-msgstr "Herstellen"
-
-#: mod/contacts.php:581
-msgid "Advanced Contact Settings"
-msgstr "Geavanceerde instellingen voor contacten"
-
-#: mod/contacts.php:589
+#: mod/contacts.php:567
 msgid "Communications lost with this contact!"
 msgstr "Communicatie met dit contact is verbroken!"
 
-#: mod/contacts.php:592
+#: mod/contacts.php:570
 msgid "Fetch further information for feeds"
 msgstr ""
 
-#: mod/contacts.php:593 mod/admin.php:652
+#: mod/contacts.php:571 mod/admin.php:820
 msgid "Disabled"
 msgstr "Uitgeschakeld"
 
-#: mod/contacts.php:593
+#: mod/contacts.php:571
 msgid "Fetch information"
 msgstr ""
 
-#: mod/contacts.php:593
+#: mod/contacts.php:571
 msgid "Fetch information and keywords"
 msgstr ""
 
-#: mod/contacts.php:606
-msgid "Contact Editor"
-msgstr "Contactbewerker"
-
-#: mod/contacts.php:608 mod/manage.php:124 mod/fsuggest.php:107
-#: mod/message.php:342 mod/message.php:525 mod/crepair.php:195
-#: mod/events.php:574 mod/content.php:712 mod/install.php:253
-#: mod/install.php:291 mod/mood.php:137 mod/profiles.php:696
+#: mod/contacts.php:587 mod/manage.php:143 mod/fsuggest.php:107
+#: mod/message.php:342 mod/message.php:525 mod/crepair.php:196
+#: mod/events.php:574 mod/content.php:712 mod/install.php:261
+#: mod/install.php:299 mod/mood.php:137 mod/profiles.php:696
 #: mod/localtime.php:45 mod/poke.php:198 mod/invite.php:140
-#: mod/photos.php:1129 mod/photos.php:1253 mod/photos.php:1571
-#: mod/photos.php:1622 mod/photos.php:1670 mod/photos.php:1758
+#: mod/photos.php:1137 mod/photos.php:1261 mod/photos.php:1579
+#: mod/photos.php:1630 mod/photos.php:1678 mod/photos.php:1766
 #: object/Item.php:710 view/theme/cleanzero/config.php:80
 #: view/theme/dispy/config.php:70 view/theme/quattro/config.php:64
 #: view/theme/diabook/config.php:148 view/theme/diabook/theme.php:633
@@ -259,208 +208,304 @@ msgstr "Contactbewerker"
 msgid "Submit"
 msgstr "Opslaan"
 
-#: mod/contacts.php:609
+#: mod/contacts.php:588
 msgid "Profile Visibility"
 msgstr "Zichtbaarheid profiel"
 
-#: mod/contacts.php:610
+#: mod/contacts.php:589
 #, php-format
 msgid ""
 "Please choose the profile you would like to display to %s when viewing your "
 "profile securely."
 msgstr "Kies het profiel dat getoond moet worden wanneer %s uw profiel bezoekt. "
 
-#: mod/contacts.php:611
+#: mod/contacts.php:590
 msgid "Contact Information / Notes"
 msgstr "Contactinformatie / aantekeningen"
 
-#: mod/contacts.php:612
+#: mod/contacts.php:591
 msgid "Edit contact notes"
 msgstr "Wijzig aantekeningen over dit contact"
 
-#: mod/contacts.php:617 mod/contacts.php:860 mod/viewcontacts.php:66
+#: mod/contacts.php:596 mod/contacts.php:952 mod/viewcontacts.php:97
 #: mod/nogroup.php:41
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr "Bekijk het profiel van %s [%s]"
 
-#: mod/contacts.php:618
+#: mod/contacts.php:597
 msgid "Block/Unblock contact"
 msgstr "Blokkeer/deblokkeer contact"
 
-#: mod/contacts.php:619
+#: mod/contacts.php:598
 msgid "Ignore contact"
 msgstr "Negeer contact"
 
-#: mod/contacts.php:620
+#: mod/contacts.php:599
 msgid "Repair URL settings"
 msgstr "Repareer URL-instellingen"
 
-#: mod/contacts.php:621
+#: mod/contacts.php:600
 msgid "View conversations"
 msgstr "Toon conversaties"
 
-#: mod/contacts.php:623
+#: mod/contacts.php:602
 msgid "Delete contact"
 msgstr "Verwijder contact"
 
-#: mod/contacts.php:627
+#: mod/contacts.php:606
 msgid "Last update:"
 msgstr "Laatste wijziging:"
 
-#: mod/contacts.php:629
+#: mod/contacts.php:608
 msgid "Update public posts"
 msgstr "Openbare posts aanpassen"
 
-#: mod/contacts.php:631 mod/admin.php:1650
+#: mod/contacts.php:610
 msgid "Update now"
 msgstr "Wijzig nu"
 
-#: mod/contacts.php:633 mod/dirfind.php:190 mod/allfriends.php:67
-#: mod/match.php:71 mod/suggest.php:82 include/contact_widgets.php:32
+#: mod/contacts.php:612 mod/follow.php:103 mod/dirfind.php:196
+#: mod/allfriends.php:65 mod/match.php:71 mod/suggest.php:82
+#: include/contact_widgets.php:32 include/Contact.php:297
 #: include/conversation.php:924
 msgid "Connect/Follow"
 msgstr "Verbind/Volg"
 
-#: mod/contacts.php:640
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1301
+msgid "Unblock"
+msgstr "Blokkering opheffen"
+
+#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
+#: mod/admin.php:1300
+msgid "Block"
+msgstr "Blokkeren"
+
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
+msgid "Unignore"
+msgstr "Negeer niet meer"
+
+#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872
+#: mod/notifications.php:54 mod/notifications.php:179
+#: mod/notifications.php:259
+msgid "Ignore"
+msgstr "Negeren"
+
+#: mod/contacts.php:619
 msgid "Currently blocked"
 msgstr "Op dit moment geblokkeerd"
 
-#: mod/contacts.php:641
+#: mod/contacts.php:620
 msgid "Currently ignored"
 msgstr "Op dit moment genegeerd"
 
-#: mod/contacts.php:642
+#: mod/contacts.php:621
 msgid "Currently archived"
 msgstr "Op dit moment gearchiveerd"
 
-#: mod/contacts.php:643 mod/notifications.php:172 mod/notifications.php:251
+#: mod/contacts.php:622 mod/notifications.php:172 mod/notifications.php:251
 msgid "Hide this contact from others"
 msgstr "Verberg dit contact voor anderen"
 
-#: mod/contacts.php:643
+#: mod/contacts.php:622
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr "Antwoorden of 'vind ik leuk's op je openbare posts <strong>kunnen</strong> nog zichtbaar zijn"
 
-#: mod/contacts.php:644
+#: mod/contacts.php:623
 msgid "Notification for new posts"
 msgstr "Meldingen voor nieuwe berichten"
 
-#: mod/contacts.php:644
+#: mod/contacts.php:623
 msgid "Send a notification of every new post of this contact"
 msgstr ""
 
-#: mod/contacts.php:647
+#: mod/contacts.php:626
 msgid "Blacklisted keywords"
 msgstr ""
 
-#: mod/contacts.php:647
+#: mod/contacts.php:626
 msgid ""
 "Comma separated list of keywords that should not be converted to hashtags, "
 "when \"Fetch information and keywords\" is selected"
 msgstr ""
 
-#: mod/contacts.php:654 mod/follow.php:121 mod/notifications.php:255
+#: mod/contacts.php:633 mod/follow.php:126 mod/notifications.php:255
 msgid "Profile URL"
 msgstr "Profiel url"
 
-#: mod/contacts.php:700
+#: mod/contacts.php:636 mod/notifications.php:244 mod/events.php:566
+#: mod/directory.php:145 include/identity.php:308 include/bb2diaspora.php:170
+#: include/event.php:36 include/event.php:60
+msgid "Location:"
+msgstr "Plaats:"
+
+#: mod/contacts.php:638 mod/notifications.php:246 mod/directory.php:153
+#: include/identity.php:317 include/identity.php:631
+msgid "About:"
+msgstr "Over:"
+
+#: mod/contacts.php:640 mod/follow.php:134 mod/notifications.php:248
+#: include/identity.php:625
+msgid "Tags:"
+msgstr "Labels:"
+
+#: mod/contacts.php:685
 msgid "Suggestions"
 msgstr "Voorstellen"
 
-#: mod/contacts.php:703
+#: mod/contacts.php:688
 msgid "Suggest potential friends"
 msgstr "Stel vrienden voor"
 
-#: mod/contacts.php:708 mod/group.php:192
+#: mod/contacts.php:693 mod/group.php:192
 msgid "All Contacts"
 msgstr "Alle Contacten"
 
-#: mod/contacts.php:711
+#: mod/contacts.php:696
 msgid "Show all contacts"
 msgstr "Toon alle contacten"
 
-#: mod/contacts.php:716
+#: mod/contacts.php:701
 msgid "Unblocked"
 msgstr "Niet geblokkeerd"
 
-#: mod/contacts.php:719
+#: mod/contacts.php:704
 msgid "Only show unblocked contacts"
 msgstr "Toon alleen niet-geblokkeerde contacten"
 
-#: mod/contacts.php:725
+#: mod/contacts.php:710
 msgid "Blocked"
 msgstr "Geblokkeerd"
 
-#: mod/contacts.php:728
+#: mod/contacts.php:713
 msgid "Only show blocked contacts"
 msgstr "Toon alleen geblokkeerde contacten"
 
-#: mod/contacts.php:734
+#: mod/contacts.php:719
 msgid "Ignored"
 msgstr "Genegeerd"
 
-#: mod/contacts.php:737
+#: mod/contacts.php:722
 msgid "Only show ignored contacts"
 msgstr "Toon alleen genegeerde contacten"
 
-#: mod/contacts.php:743
+#: mod/contacts.php:728
 msgid "Archived"
 msgstr "Gearchiveerd"
 
-#: mod/contacts.php:746
+#: mod/contacts.php:731
 msgid "Only show archived contacts"
 msgstr "Toon alleen gearchiveerde contacten"
 
-#: mod/contacts.php:752
+#: mod/contacts.php:737
 msgid "Hidden"
 msgstr "Verborgen"
 
-#: mod/contacts.php:755
+#: mod/contacts.php:740
 msgid "Only show hidden contacts"
 msgstr "Toon alleen verborgen contacten"
 
-#: mod/contacts.php:807 include/text.php:1005 include/nav.php:123
-#: include/nav.php:187 view/theme/diabook/theme.php:125
+#: mod/contacts.php:793 mod/contacts.php:841 mod/viewcontacts.php:116
+#: include/identity.php:741 include/identity.php:744 include/text.php:1012
+#: include/nav.php:123 include/nav.php:187 view/theme/diabook/theme.php:125
 msgid "Contacts"
 msgstr "Contacten"
 
-#: mod/contacts.php:811
+#: mod/contacts.php:797
 msgid "Search your contacts"
 msgstr "Doorzoek je contacten"
 
-#: mod/contacts.php:812
+#: mod/contacts.php:798
 msgid "Finding: "
 msgstr "Gevonden:"
 
-#: mod/contacts.php:813 mod/directory.php:202 include/contact_widgets.php:34
+#: mod/contacts.php:799 mod/directory.php:210 include/contact_widgets.php:34
 msgid "Find"
 msgstr "Zoek"
 
-#: mod/contacts.php:819 mod/settings.php:146 mod/settings.php:674
+#: mod/contacts.php:805 mod/settings.php:156 mod/settings.php:685
 msgid "Update"
 msgstr "Wijzigen"
 
-#: mod/contacts.php:823 mod/group.php:171 mod/admin.php:1112
-#: mod/content.php:440 mod/content.php:743 mod/settings.php:711
-#: mod/photos.php:1715 object/Item.php:134 include/conversation.php:635
+#: mod/contacts.php:808 mod/contacts.php:879
+msgid "Archive"
+msgstr "Archiveer"
+
+#: mod/contacts.php:808 mod/contacts.php:879
+msgid "Unarchive"
+msgstr "Archiveer niet meer"
+
+#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1299
+#: 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"
 msgstr "Verwijder"
 
-#: mod/contacts.php:836
+#: mod/contacts.php:822 include/identity.php:686 include/nav.php:75
+msgid "Status"
+msgstr "Tijdlijn"
+
+#: mod/contacts.php:825 mod/follow.php:143 include/identity.php:689
+msgid "Status Messages and Posts"
+msgstr "Berichten op jouw tijdlijn"
+
+#: mod/contacts.php:830 mod/profperm.php:104 mod/newmember.php:32
+#: include/identity.php:579 include/identity.php:665 include/identity.php:694
+#: include/nav.php:76 view/theme/diabook/theme.php:124
+msgid "Profile"
+msgstr "Profiel"
+
+#: mod/contacts.php:833 include/identity.php:697
+msgid "Profile Details"
+msgstr "Profieldetails"
+
+#: mod/contacts.php:844
+msgid "View all contacts"
+msgstr "Alle contacten zien"
+
+#: mod/contacts.php:850 mod/common.php:134
+msgid "Common Friends"
+msgstr "Gedeelde Vrienden"
+
+#: mod/contacts.php:853
+msgid "View all common friends"
+msgstr ""
+
+#: mod/contacts.php:857
+msgid "Repair"
+msgstr "Herstellen"
+
+#: mod/contacts.php:860
+msgid "Advanced Contact Settings"
+msgstr "Geavanceerde instellingen voor contacten"
+
+#: mod/contacts.php:868
+msgid "Toggle Blocked status"
+msgstr "Schakel geblokkeerde status"
+
+#: mod/contacts.php:875
+msgid "Toggle Ignored status"
+msgstr "Schakel negeerstatus"
+
+#: mod/contacts.php:882
+msgid "Toggle Archive status"
+msgstr "Schakel archiveringsstatus"
+
+#: mod/contacts.php:924
 msgid "Mutual Friendship"
 msgstr "Wederzijdse vriendschap"
 
-#: mod/contacts.php:840
+#: mod/contacts.php:928
 msgid "is a fan of yours"
 msgstr "Is een fan van jou"
 
-#: mod/contacts.php:844
+#: mod/contacts.php:932
 msgid "you are a fan of"
 msgstr "Jij bent een fan van"
 
-#: mod/contacts.php:861 mod/nogroup.php:42
+#: mod/contacts.php:953 mod/nogroup.php:42
 msgid "Edit contact"
 msgstr "Contact bewerken"
 
@@ -468,17 +513,17 @@ msgstr "Contact bewerken"
 msgid "No profile"
 msgstr "Geen profiel"
 
-#: mod/manage.php:120
+#: mod/manage.php:139
 msgid "Manage Identities and/or Pages"
 msgstr "Beheer Identiteiten en/of Pagina's"
 
-#: mod/manage.php:121
+#: mod/manage.php:140
 msgid ""
 "Toggle between different identities or community/group pages which share "
 "your account details or which you have been granted \"manage\" permissions"
 msgstr "Wissel tussen verschillende identiteiten of forum/groeppagina's die jouw accountdetails delen of waar je \"beheerdersrechten\" hebt gekregen."
 
-#: mod/manage.php:122
+#: mod/manage.php:141
 msgid "Select an identity to manage: "
 msgstr "Selecteer een identiteit om te beheren:"
 
@@ -486,7 +531,7 @@ msgstr "Selecteer een identiteit om te beheren:"
 msgid "Post successful."
 msgstr "Bericht succesvol geplaatst."
 
-#: mod/profperm.php:19 mod/group.php:72 index.php:381
+#: mod/profperm.php:19 mod/group.php:72 index.php:382
 msgid "Permission denied"
 msgstr "Toegang geweigerd"
 
@@ -498,13 +543,7 @@ msgstr "Ongeldige profiel-identificatie."
 msgid "Profile Visibility Editor"
 msgstr ""
 
-#: mod/profperm.php:104 mod/newmember.php:32 include/identity.php:530
-#: include/identity.php:611 include/identity.php:641 include/nav.php:76
-#: view/theme/diabook/theme.php:124
-msgid "Profile"
-msgstr "Profiel"
-
-#: mod/profperm.php:106 mod/group.php:222
+#: mod/profperm.php:106 mod/group.php:223
 msgid "Click on a contact to add or remove."
 msgstr "Klik op een contact om het toe te voegen of te verwijderen."
 
@@ -516,23 +555,23 @@ msgstr "Zichtbaar voor"
 msgid "All Contacts (with secure profile access)"
 msgstr "Alle contacten (met veilige profieltoegang)"
 
-#: mod/display.php:82 mod/display.php:283 mod/display.php:500
-#: mod/viewsrc.php:15 mod/admin.php:196 mod/admin.php:1157 mod/admin.php:1378
-#: mod/notice.php:15 include/items.php:4894
+#: mod/display.php:82 mod/display.php:291 mod/display.php:508
+#: mod/viewsrc.php:15 mod/admin.php:225 mod/admin.php:1354 mod/admin.php:1588
+#: mod/notice.php:15 include/items.php:4864
 msgid "Item not found."
 msgstr "Item niet gevonden."
 
-#: mod/display.php:211 mod/videos.php:189 mod/viewcontacts.php:19
-#: mod/community.php:18 mod/dfrn_request.php:777 mod/search.php:93
-#: mod/search.php:99 mod/directory.php:37 mod/photos.php:968
+#: mod/display.php:220 mod/videos.php:197 mod/viewcontacts.php:35
+#: mod/community.php:18 mod/dfrn_request.php:786 mod/search.php:93
+#: mod/search.php:99 mod/directory.php:37 mod/photos.php:976
 msgid "Public access denied."
 msgstr "Niet vrij toegankelijk"
 
-#: mod/display.php:331 mod/profile.php:155
+#: mod/display.php:339 mod/profile.php:155
 msgid "Access to this profile has been restricted."
 msgstr "Toegang tot dit profiel is beperkt."
 
-#: mod/display.php:493
+#: mod/display.php:501
 msgid "Item has been removed."
 msgstr "Item is verwijderd."
 
@@ -567,8 +606,8 @@ msgid ""
 " join."
 msgstr "Op je <em>Snelstart</em> pagina kun je een korte inleiding vinden over je profiel en netwerk tabs, om enkele nieuwe connecties te leggen en groepen te vinden om lid van te worden."
 
-#: mod/newmember.php:22 mod/admin.php:1209 mod/admin.php:1454
-#: mod/settings.php:99 include/nav.php:182 view/theme/diabook/theme.php:544
+#: mod/newmember.php:22 mod/admin.php:1407 mod/admin.php:1665
+#: mod/settings.php:109 include/nav.php:182 view/theme/diabook/theme.php:544
 #: view/theme/diabook/theme.php:648
 msgid "Settings"
 msgstr "Instellingen"
@@ -592,7 +631,7 @@ msgid ""
 "potential friends know exactly how to find you."
 msgstr "Controleer ook de andere instellingen, in het bijzonder de privacy-instellingen. Een niet-gepubliceerd adres is zoals een privé-telefoonnummer. In het algemeen wil je waarschijnlijk je adres publiceren - tenzij al je vrienden en mogelijke vrienden precies weten hoe je te vinden."
 
-#: mod/newmember.php:36 mod/profile_photo.php:244 mod/profiles.php:709
+#: mod/newmember.php:36 mod/profile_photo.php:250 mod/profiles.php:709
 msgid "Upload Profile Photo"
 msgstr "Profielfoto uploaden"
 
@@ -629,60 +668,44 @@ msgstr "Stel enkele openbare sleutelwoorden in voor je standaard profiel die je
 msgid "Connecting"
 msgstr "Verbinding aan het maken"
 
-#: mod/newmember.php:49 mod/newmember.php:51 include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: mod/newmember.php:49
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr "Machtig de Facebook Connector als je een Facebook account hebt. We zullen (optioneel) al je Facebook vrienden en conversaties importeren."
-
 #: mod/newmember.php:51
-msgid ""
-"<em>If</em> this is your own personal server, installing the Facebook addon "
-"may ease your transition to the free social web."
-msgstr "<em>Als</em> dit jouw eigen persoonlijke server is kan het installeren van de Facebook toevoeging je overgang naar het vrije sociale web vergemakkelijken."
-
-#: mod/newmember.php:56
 msgid "Importing Emails"
 msgstr "E-mails importeren"
 
-#: mod/newmember.php:56
+#: mod/newmember.php:51
 msgid ""
 "Enter your email access information on your Connector Settings page if you "
 "wish to import and interact with friends or mailing lists from your email "
 "INBOX"
 msgstr "Vul je e-mailtoegangsinformatie in op je pagina met verbindingsinstellingen als je vrienden of mailinglijsten uit je e-mail-inbox wilt importeren, en met hen wilt communiceren"
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid "Go to Your Contacts Page"
 msgstr "Ga naar je contactenpagina"
 
-#: mod/newmember.php:58
+#: mod/newmember.php:53
 msgid ""
 "Your Contacts page is your gateway to managing friendships and connecting "
 "with friends on other networks. Typically you enter their address or site "
 "URL in the <em>Add New Contact</em> dialog."
 msgstr "Je contactenpagina is jouw poort om vriendschappen te beheren en verbinding te leggen met vrienden op andere netwerken. Je kunt hun adres of URL toevoegen in de <em>Voeg nieuw contact toe</em> dialoog."
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid "Go to Your Site's Directory"
 msgstr "Ga naar de gids van je website"
 
-#: mod/newmember.php:60
+#: mod/newmember.php:55
 msgid ""
 "The Directory page lets you find other people in this network or other "
 "federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
 "their profile page. Provide your own Identity Address if requested."
 msgstr "In de gids vind je andere mensen in dit netwerk of op andere federatieve sites. Zoek naar het woord <em>Connect</em> of <em>Follow</em> op hun profielpagina (meestal aan de linkerkant). Vul je eigen identiteitsadres in wanneer daar om wordt gevraagd."
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid "Finding New People"
 msgstr "Nieuwe mensen vinden"
 
-#: mod/newmember.php:62
+#: mod/newmember.php:57
 msgid ""
 "On the side panel of the Contacts page are several tools to find new "
 "friends. We can match people by interest, look up people by name or "
@@ -691,41 +714,41 @@ msgid ""
 "hours."
 msgstr "Op het zijpaneel van de Contacten pagina vind je verschillende tools om nieuwe vrienden te zoeken. We kunnen mensen op interesses matchen, mensen opzoeken op naam of hobby, en suggesties doen gebaseerd op netwerk-relaties. Op een nieuwe webstek beginnen vriendschapssuggesties meestal binnen de 24 uur beschikbaar te worden."
 
-#: mod/newmember.php:66 include/group.php:272
+#: mod/newmember.php:61 include/group.php:283
 msgid "Groups"
 msgstr "Groepen"
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid "Group Your Contacts"
 msgstr "Groepeer je contacten"
 
-#: mod/newmember.php:70
+#: mod/newmember.php:65
 msgid ""
 "Once you have made some friends, organize them into private conversation "
 "groups from the sidebar of your Contacts page and then you can interact with"
 " each group privately on your Network page."
 msgstr "Als je een aantal vrienden gemaakt hebt kun je ze in je eigen conversatiegroepen indelen vanuit de zijbalk van je 'Conacten' pagina, en dan kun je met elke groep apart contact houden op je Netwerk pagina. "
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid "Why Aren't My Posts Public?"
 msgstr "Waarom zijn mijn berichten niet openbaar?"
 
-#: mod/newmember.php:73
+#: mod/newmember.php:68
 msgid ""
 "Friendica respects your privacy. By default, your posts will only show up to"
 " people you've added as friends. For more information, see the help section "
 "from the link above."
 msgstr "Friendica respecteert je privacy. Standaard zullen je berichten alleen zichtbaar zijn voor personen die jij als vriend hebt toegevoegd. Lees de help (zie de verwijzing hierboven) voor meer informatie."
 
-#: mod/newmember.php:78
+#: mod/newmember.php:73
 msgid "Getting Help"
 msgstr "Hulp krijgen"
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid "Go to the Help Section"
 msgstr "Ga naar de help"
 
-#: mod/newmember.php:82
+#: mod/newmember.php:77
 msgid ""
 "Our <strong>help</strong> pages may be consulted for detail on other program"
 " features and resources."
@@ -740,7 +763,7 @@ msgid ""
 "Account not found and OpenID registration is not permitted on this site."
 msgstr "Account niet gevonden, en OpenID-registratie is niet toegelaten op deze website."
 
-#: mod/openid.php:93 include/auth.php:112 include/auth.php:175
+#: mod/openid.php:93 include/auth.php:118 include/auth.php:181
 msgid "Login failed."
 msgstr "Login mislukt."
 
@@ -749,95 +772,95 @@ msgid "Image uploaded but image cropping failed."
 msgstr "Afbeelding opgeladen, maar bijsnijden mislukt."
 
 #: mod/profile_photo.php:74 mod/profile_photo.php:81 mod/profile_photo.php:88
-#: mod/profile_photo.php:204 mod/profile_photo.php:296
-#: mod/profile_photo.php:305 mod/photos.php:70 mod/photos.php:184
-#: mod/photos.php:767 mod/photos.php:1237 mod/photos.php:1260
-#: mod/photos.php:1854 include/user.php:343 include/user.php:350
-#: include/user.php:357 view/theme/diabook/theme.php:500
+#: mod/profile_photo.php:210 mod/profile_photo.php:302
+#: mod/profile_photo.php:311 mod/photos.php:78 mod/photos.php:192
+#: mod/photos.php:775 mod/photos.php:1245 mod/photos.php:1268
+#: mod/photos.php:1862 include/user.php:345 include/user.php:352
+#: include/user.php:359 view/theme/diabook/theme.php:500
 msgid "Profile Photos"
 msgstr "Profielfoto's"
 
 #: mod/profile_photo.php:77 mod/profile_photo.php:84 mod/profile_photo.php:91
-#: mod/profile_photo.php:308
+#: mod/profile_photo.php:314
 #, php-format
 msgid "Image size reduction [%s] failed."
 msgstr "Verkleining van de afbeelding [%s] mislukt."
 
-#: mod/profile_photo.php:118
+#: mod/profile_photo.php:124
 msgid ""
 "Shift-reload the page or clear browser cache if the new photo does not "
 "display immediately."
 msgstr "Shift-herlaad de pagina, of maak de browser cache leeg als nieuwe foto's niet onmiddellijk verschijnen."
 
-#: mod/profile_photo.php:128
+#: mod/profile_photo.php:134
 msgid "Unable to process image"
 msgstr "Ik kan de afbeelding niet verwerken"
 
-#: mod/profile_photo.php:144 mod/wall_upload.php:151 mod/photos.php:803
+#: mod/profile_photo.php:150 mod/wall_upload.php:151 mod/photos.php:811
 #, php-format
 msgid "Image exceeds size limit of %s"
 msgstr ""
 
-#: mod/profile_photo.php:153 mod/wall_upload.php:183 mod/photos.php:843
+#: mod/profile_photo.php:159 mod/wall_upload.php:183 mod/photos.php:851
 msgid "Unable to process image."
 msgstr "Niet in staat om de afbeelding te verwerken"
 
-#: mod/profile_photo.php:242
+#: mod/profile_photo.php:248
 msgid "Upload File:"
 msgstr "Upload bestand:"
 
-#: mod/profile_photo.php:243
+#: mod/profile_photo.php:249
 msgid "Select a profile:"
 msgstr "Kies een profiel:"
 
-#: mod/profile_photo.php:245
+#: mod/profile_photo.php:251
 msgid "Upload"
 msgstr "Uploaden"
 
-#: mod/profile_photo.php:248
+#: mod/profile_photo.php:254
 msgid "or"
 msgstr "of"
 
-#: mod/profile_photo.php:248
+#: mod/profile_photo.php:254
 msgid "skip this step"
 msgstr "Deze stap overslaan"
 
-#: mod/profile_photo.php:248
+#: mod/profile_photo.php:254
 msgid "select a photo from your photo albums"
 msgstr "Kies een foto uit je fotoalbums"
 
-#: mod/profile_photo.php:262
+#: mod/profile_photo.php:268
 msgid "Crop Image"
 msgstr "Afbeelding bijsnijden"
 
-#: mod/profile_photo.php:263
+#: mod/profile_photo.php:269
 msgid "Please adjust the image cropping for optimum viewing."
 msgstr "Pas het afsnijden van de afbeelding aan voor het beste resultaat."
 
-#: mod/profile_photo.php:265
+#: mod/profile_photo.php:271
 msgid "Done Editing"
 msgstr "Wijzigingen compleet"
 
-#: mod/profile_photo.php:299
+#: mod/profile_photo.php:305
 msgid "Image uploaded successfully."
 msgstr "Uploaden van afbeelding gelukt."
 
-#: mod/profile_photo.php:301 mod/wall_upload.php:216 mod/photos.php:870
+#: mod/profile_photo.php:307 mod/wall_upload.php:216 mod/photos.php:878
 msgid "Image upload failed."
 msgstr "Uploaden van afbeelding mislukt."
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
 #: include/conversation.php:130 include/conversation.php:266
-#: include/text.php:1988 include/diaspora.php:2140
+#: include/text.php:1993 include/diaspora.php:2147
 #: view/theme/diabook/theme.php:471
 msgid "photo"
 msgstr "foto"
 
-#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168 mod/like.php:346
-#: include/conversation.php:125 include/conversation.php:134
-#: include/conversation.php:261 include/conversation.php:270
-#: include/diaspora.php:2140 view/theme/diabook/theme.php:466
-#: view/theme/diabook/theme.php:475
+#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
+#: include/like.php:325 include/conversation.php:125
+#: include/conversation.php:134 include/conversation.php:261
+#: include/conversation.php:270 include/diaspora.php:2147
+#: view/theme/diabook/theme.php:466 view/theme/diabook/theme.php:475
 msgid "status"
 msgstr "status"
 
@@ -863,7 +886,7 @@ msgid "Remove"
 msgstr "Verwijderen"
 
 #: mod/ostatus_subscribe.php:14
-msgid "Subsribing to OStatus contacts"
+msgid "Subscribing to OStatus contacts"
 msgstr ""
 
 #: mod/ostatus_subscribe.php:25
@@ -898,8 +921,8 @@ msgstr "Verboden"
 msgid "Keep this window open until done."
 msgstr "Houd dit scherm open tot het klaar is"
 
-#: mod/filer.php:30 include/conversation.php:1133
-#: include/conversation.php:1151
+#: mod/filer.php:30 include/conversation.php:1132
+#: include/conversation.php:1150
 msgid "Save to Folder:"
 msgstr "Bewaren in map:"
 
@@ -907,73 +930,59 @@ msgstr "Bewaren in map:"
 msgid "- select -"
 msgstr "- Kies -"
 
-#: mod/filer.php:31 mod/editpost.php:108 mod/notes.php:61 include/text.php:997
+#: mod/filer.php:31 mod/editpost.php:109 mod/notes.php:61
+#: include/text.php:1004
 msgid "Save"
 msgstr "Bewaren"
 
-#: mod/follow.php:18 mod/dfrn_request.php:861
+#: mod/follow.php:19 mod/dfrn_request.php:870
 msgid "Submit Request"
 msgstr "Aanvraag indienen"
 
-#: mod/follow.php:29
+#: mod/follow.php:30
 msgid "You already added this contact."
 msgstr "Je hebt deze kontakt al toegevoegd"
 
-#: mod/follow.php:38
+#: mod/follow.php:39
 msgid "Diaspora support isn't enabled. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:45
+#: mod/follow.php:46
 msgid "OStatus support is disabled. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:52
+#: mod/follow.php:53
 msgid "The network type couldn't be detected. Contact can't be added."
 msgstr ""
 
-#: mod/follow.php:104 mod/dfrn_request.php:847
+#: mod/follow.php:109 mod/dfrn_request.php:856
 msgid "Please answer the following:"
 msgstr "Beantwoord het volgende:"
 
-#: mod/follow.php:105 mod/dfrn_request.php:848
+#: mod/follow.php:110 mod/dfrn_request.php:857
 #, php-format
 msgid "Does %s know you?"
 msgstr "Kent %s jou?"
 
-#: mod/follow.php:105 mod/settings.php:1091 mod/settings.php:1097
-#: mod/settings.php:1105 mod/settings.php:1109 mod/settings.php:1114
-#: mod/settings.php:1120 mod/settings.php:1126 mod/settings.php:1132
-#: mod/settings.php:1158 mod/settings.php:1159 mod/settings.php:1160
-#: mod/settings.php:1161 mod/settings.php:1162 mod/dfrn_request.php:848
-#: mod/register.php:236 mod/profiles.php:658 mod/profiles.php:662
+#: mod/follow.php:110 mod/settings.php:1103 mod/settings.php:1109
+#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1126
+#: mod/settings.php:1132 mod/settings.php:1138 mod/settings.php:1144
+#: mod/settings.php:1170 mod/settings.php:1171 mod/settings.php:1172
+#: mod/settings.php:1173 mod/settings.php:1174 mod/dfrn_request.php:857
+#: mod/register.php:239 mod/profiles.php:658 mod/profiles.php:662
 #: mod/profiles.php:687 mod/api.php:106
 msgid "No"
 msgstr "Nee"
 
-#: mod/follow.php:106 mod/dfrn_request.php:852
+#: mod/follow.php:111 mod/dfrn_request.php:861
 msgid "Add a personal note:"
 msgstr "Voeg een persoonlijke opmerking toe:"
 
-#: mod/follow.php:112 mod/dfrn_request.php:858
+#: mod/follow.php:117 mod/dfrn_request.php:867
 msgid "Your Identity Address:"
 msgstr "Adres van uw identiteit:"
 
-#: mod/follow.php:125 mod/notifications.php:244 mod/events.php:566
-#: mod/directory.php:139 include/identity.php:268 include/bb2diaspora.php:170
-#: include/event.php:36 include/event.php:60
-msgid "Location:"
-msgstr "Plaats:"
-
-#: mod/follow.php:127 mod/notifications.php:246 mod/directory.php:147
-#: include/identity.php:277 include/identity.php:582
-msgid "About:"
-msgstr "Over:"
-
-#: mod/follow.php:129 mod/notifications.php:248 include/identity.php:576
-msgid "Tags:"
-msgstr "Labels:"
-
-#: mod/follow.php:162
+#: mod/follow.php:180
 msgid "Contact added"
 msgstr "Contact toegevoegd"
 
@@ -981,39 +990,39 @@ msgstr "Contact toegevoegd"
 msgid "Unable to locate original post."
 msgstr "Ik kan de originele post niet meer vinden."
 
-#: mod/item.php:322
+#: mod/item.php:329
 msgid "Empty post discarded."
 msgstr "Lege post weggegooid."
 
-#: mod/item.php:461 mod/wall_upload.php:213 mod/wall_upload.php:227
-#: mod/wall_upload.php:234 include/Photo.php:954 include/Photo.php:969
-#: include/Photo.php:976 include/Photo.php:998 include/message.php:145
+#: mod/item.php:467 mod/wall_upload.php:213 mod/wall_upload.php:227
+#: mod/wall_upload.php:234 include/Photo.php:958 include/Photo.php:973
+#: include/Photo.php:980 include/Photo.php:1002 include/message.php:145
 msgid "Wall Photos"
 msgstr ""
 
-#: mod/item.php:835
+#: mod/item.php:842
 msgid "System error. Post not saved."
 msgstr "Systeemfout. Post niet bewaard."
 
-#: mod/item.php:964
+#: mod/item.php:971
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social "
 "network."
 msgstr "Dit bericht werd naar jou gestuurd door %s, een lid van het Friendica sociale netwerk."
 
-#: mod/item.php:966
+#: mod/item.php:973
 #, php-format
 msgid "You may visit them online at %s"
 msgstr "Je kunt ze online bezoeken op %s"
 
-#: mod/item.php:967
+#: mod/item.php:974
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr "Contacteer de afzender door op dit bericht te antwoorden als je deze berichten niet wilt ontvangen."
 
-#: mod/item.php:971
+#: mod/item.php:978
 #, php-format
 msgid "%s posted an update."
 msgstr "%s heeft een wijziging geplaatst."
@@ -1042,7 +1051,7 @@ msgstr "Bewaar groep"
 msgid "Create a group of contacts/friends."
 msgstr "Maak een groep contacten/vrienden aan."
 
-#: mod/group.php:94 mod/group.php:178 include/group.php:275
+#: mod/group.php:94 mod/group.php:178 include/group.php:289
 msgid "Group Name: "
 msgstr "Groepsnaam:"
 
@@ -1062,7 +1071,11 @@ msgstr "Groepsbewerker"
 msgid "Members"
 msgstr "Leden"
 
-#: mod/apps.php:7 index.php:225
+#: mod/group.php:193 mod/network.php:576 mod/content.php:130
+msgid "Group is empty"
+msgstr "De groep is leeg"
+
+#: mod/apps.php:7 index.php:226
 msgid "You must be logged in to use addons. "
 msgstr "Je moet ingelogd zijn om deze addons te kunnen gebruiken. "
 
@@ -1080,7 +1093,7 @@ msgid "Profile not found."
 msgstr "Profiel niet gevonden"
 
 #: mod/dfrn_confirm.php:120 mod/fsuggest.php:20 mod/fsuggest.php:92
-#: mod/crepair.php:134
+#: mod/crepair.php:131
 msgid "Contact not found."
 msgstr "Contact niet gevonden"
 
@@ -1119,7 +1132,7 @@ msgid "Unable to set contact photo."
 msgstr "Ik kan geen contact foto instellen."
 
 #: mod/dfrn_confirm.php:487 include/conversation.php:185
-#: include/diaspora.php:636
+#: include/diaspora.php:637
 #, php-format
 msgid "%1$s is now friends with %2$s"
 msgstr "%1$s is nu bevriend met %2$s"
@@ -1160,7 +1173,7 @@ msgstr "Niet in staat om op dit systeem je contactreferenties in te stellen."
 msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:732 include/items.php:4313
+#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4276
 msgid "[Name Withheld]"
 msgstr "[Naam achtergehouden]"
 
@@ -1169,7 +1182,7 @@ msgstr "[Naam achtergehouden]"
 msgid "%1$s has joined %2$s"
 msgstr "%1$s is toegetreden tot %2$s"
 
-#: mod/profile.php:21 include/identity.php:77
+#: mod/profile.php:21 include/identity.php:51
 msgid "Requested profile is not available."
 msgstr "Gevraagde profiel is niet beschikbaar."
 
@@ -1177,35 +1190,35 @@ msgstr "Gevraagde profiel is niet beschikbaar."
 msgid "Tips for New Members"
 msgstr "Tips voor nieuwe leden"
 
-#: mod/videos.php:115
+#: mod/videos.php:123
 msgid "Do you really want to delete this video?"
 msgstr "Wil je deze video echt verwijderen?"
 
-#: mod/videos.php:120
+#: mod/videos.php:128
 msgid "Delete Video"
 msgstr "Verwijder video"
 
-#: mod/videos.php:199
+#: mod/videos.php:207
 msgid "No videos selected"
 msgstr "Geen video's geselecteerd"
 
-#: mod/videos.php:300 mod/photos.php:1079
+#: mod/videos.php:308 mod/photos.php:1087
 msgid "Access to this item is restricted."
 msgstr "Toegang tot dit item is beperkt."
 
-#: mod/videos.php:375 include/text.php:1458
+#: mod/videos.php:383 include/text.php:1465
 msgid "View Video"
 msgstr "Bekijk Video"
 
-#: mod/videos.php:382 mod/photos.php:1882
+#: mod/videos.php:390 mod/photos.php:1890
 msgid "View Album"
 msgstr "Album bekijken"
 
-#: mod/videos.php:391
+#: mod/videos.php:399
 msgid "Recent Videos"
 msgstr "Recente video's"
 
-#: mod/videos.php:393
+#: mod/videos.php:401
 msgid "Upload New Videos"
 msgstr "Nieuwe video's uploaden"
 
@@ -1229,7 +1242,7 @@ msgstr "Stel een vriend voor aan %s"
 
 #: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86
 #: mod/wall_upload.php:122 mod/wall_upload.php:125 mod/wall_attach.php:17
-#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1702
+#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1781
 msgid "Invalid request."
 msgstr ""
 
@@ -1285,7 +1298,7 @@ msgid ""
 "Password reset failed."
 msgstr "Verzoek kon niet geverifieerd worden. (Misschien heb je het voordien al ingediend.) Wachtwoord niet opnieuw ingesteld."
 
-#: mod/lostpass.php:109 boot.php:1295
+#: mod/lostpass.php:109 boot.php:1418
 msgid "Password Reset"
 msgstr "Wachtwoord opnieuw instellen"
 
@@ -1359,57 +1372,22 @@ msgstr "Bijnaam of e-mail:"
 msgid "Reset"
 msgstr "Opnieuw"
 
-#: mod/like.php:170 include/conversation.php:122 include/conversation.php:258
-#: include/text.php:1986 view/theme/diabook/theme.php:463
-msgid "event"
-msgstr "gebeurtenis"
-
-#: mod/like.php:187 include/conversation.php:141 include/diaspora.php:2156
-#: view/theme/diabook/theme.php:480
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s vindt het %3$s van %2$s leuk"
-
-#: mod/like.php:189 include/conversation.php:144
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s vindt het %3$s van %2$s niet leuk"
-
-#: mod/like.php:191
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:193
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr ""
-
-#: mod/like.php:195
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr ""
-
-#: mod/ping.php:257
+#: mod/ping.php:265
 msgid "{0} wants to be your friend"
 msgstr "{0} wilt je vriend worden"
 
-#: mod/ping.php:272
+#: mod/ping.php:280
 msgid "{0} sent you a message"
 msgstr "{0} stuurde jou een bericht"
 
-#: mod/ping.php:287
+#: mod/ping.php:295
 msgid "{0} requested registration"
 msgstr "{0} vroeg om zich te registreren"
 
-#: mod/viewcontacts.php:41
+#: mod/viewcontacts.php:72
 msgid "No contacts."
 msgstr "Geen contacten."
 
-#: mod/viewcontacts.php:83 include/text.php:917
-msgid "View Contacts"
-msgstr "Bekijk contacten"
-
 #: mod/notifications.php:29
 msgid "Invalid request identifier."
 msgstr "Ongeldige <em>request identifier</em>."
@@ -1423,11 +1401,11 @@ msgstr "Verwerpen"
 msgid "System"
 msgstr "Systeem"
 
-#: mod/notifications.php:87 mod/admin.php:228 include/nav.php:154
+#: mod/notifications.php:87 mod/admin.php:379 include/nav.php:154
 msgid "Network"
 msgstr "Netwerk"
 
-#: mod/notifications.php:93 mod/network.php:385
+#: mod/notifications.php:93 mod/network.php:384
 msgid "Personal"
 msgstr "Persoonlijk"
 
@@ -1469,7 +1447,7 @@ msgstr "Bericht over een nieuwe vriend"
 msgid "if applicable"
 msgstr "Indien toepasbaar"
 
-#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1110
+#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1297
 msgid "Approve"
 msgstr "Goedkeuren"
 
@@ -1519,8 +1497,8 @@ msgstr "Vriendschapsverzoek"
 msgid "New Follower"
 msgstr "Nieuwe Volger"
 
-#: mod/notifications.php:250 mod/directory.php:141 include/identity.php:270
-#: include/identity.php:541
+#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:310
+#: include/identity.php:590
 msgid "Gender:"
 msgstr "Geslacht:"
 
@@ -1691,7 +1669,7 @@ msgstr "Gesprek verwijderd."
 
 #: mod/message.php:290 mod/message.php:298 mod/message.php:427
 #: mod/message.php:435 mod/wallmessage.php:127 mod/wallmessage.php:135
-#: include/conversation.php:1129 include/conversation.php:1147
+#: include/conversation.php:1128 include/conversation.php:1146
 msgid "Please enter a link URL:"
 msgstr "Vul een internetadres/URL in:"
 
@@ -1713,19 +1691,19 @@ msgid "Your message:"
 msgstr "Jouw bericht:"
 
 #: mod/message.php:339 mod/message.php:523 mod/wallmessage.php:154
-#: mod/editpost.php:109 include/conversation.php:1184
+#: mod/editpost.php:110 include/conversation.php:1183
 msgid "Upload photo"
 msgstr "Foto uploaden"
 
 #: mod/message.php:340 mod/message.php:524 mod/wallmessage.php:155
-#: mod/editpost.php:113 include/conversation.php:1188
+#: mod/editpost.php:114 include/conversation.php:1187
 msgid "Insert web link"
 msgstr "Voeg een webadres in"
 
 #: mod/message.php:341 mod/message.php:526 mod/content.php:501
-#: mod/content.php:885 mod/wallmessage.php:156 mod/editpost.php:123
-#: mod/photos.php:1602 object/Item.php:396 include/conversation.php:713
-#: include/conversation.php:1202
+#: mod/content.php:885 mod/wallmessage.php:156 mod/editpost.php:124
+#: mod/photos.php:1610 object/Item.php:396 include/conversation.php:713
+#: include/conversation.php:1201
 msgid "Please wait"
 msgstr "Even geduld"
 
@@ -1741,7 +1719,7 @@ msgstr "Bericht niet beschikbaar."
 msgid "Delete message"
 msgstr "Verwijder bericht"
 
-#: mod/message.php:507 mod/message.php:582
+#: mod/message.php:507 mod/message.php:584
 msgid "Delete conversation"
 msgstr "Verwijder gesprek"
 
@@ -1755,26 +1733,26 @@ msgstr "Geen beveiligde communicatie beschikbaar. Je kunt <strong>misschien</str
 msgid "Send Reply"
 msgstr "Verstuur Antwoord"
 
-#: mod/message.php:555
+#: mod/message.php:557
 #, php-format
 msgid "Unknown sender - %s"
 msgstr "Onbekende afzender - %s"
 
-#: mod/message.php:558
+#: mod/message.php:560
 #, php-format
 msgid "You and %s"
 msgstr "Jij en %s"
 
-#: mod/message.php:561
+#: mod/message.php:563
 #, php-format
 msgid "%s and You"
 msgstr "%s en jij"
 
-#: mod/message.php:585
+#: mod/message.php:587
 msgid "D, d M Y - g:i A"
 msgstr "D, d M Y - g:i A"
 
-#: mod/message.php:588
+#: mod/message.php:590
 #, php-format
 msgid "%d message"
 msgid_plural "%d messages"
@@ -1786,103 +1764,99 @@ msgstr[1] "%d berichten"
 msgid "[Embedded content - reload page to view]"
 msgstr "[Ingebedde inhoud - herlaad pagina om het te bekijken]"
 
-#: mod/crepair.php:107
+#: mod/crepair.php:104
 msgid "Contact settings applied."
 msgstr "Contactinstellingen toegepast."
 
-#: mod/crepair.php:109
+#: mod/crepair.php:106
 msgid "Contact update failed."
 msgstr "Aanpassen van contact mislukt."
 
-#: mod/crepair.php:140
+#: mod/crepair.php:137
 msgid ""
 "<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
 " information your communications with this contact may stop working."
 msgstr ""
 
-#: mod/crepair.php:141
+#: mod/crepair.php:138
 msgid ""
 "Please use your browser 'Back' button <strong>now</strong> if you are "
 "uncertain what to do on this page."
 msgstr "Gebruik <strong>nu</strong> de \"terug\"-knop in je webbrowser wanneer je niet weet wat je op deze pagina moet doen."
 
-#: mod/crepair.php:154 mod/crepair.php:156
+#: mod/crepair.php:151 mod/crepair.php:153
 msgid "No mirroring"
 msgstr ""
 
-#: mod/crepair.php:154
+#: mod/crepair.php:151
 msgid "Mirror as forwarded posting"
 msgstr ""
 
-#: mod/crepair.php:154 mod/crepair.php:156
+#: mod/crepair.php:151 mod/crepair.php:153
 msgid "Mirror as my own posting"
 msgstr ""
 
-#: mod/crepair.php:162
-msgid "Repair Contact Settings"
-msgstr "Contactinstellingen herstellen"
-
-#: mod/crepair.php:166
+#: mod/crepair.php:167
 msgid "Return to contact editor"
 msgstr "Ga terug naar contactbewerker"
 
-#: mod/crepair.php:168
+#: mod/crepair.php:169
 msgid "Refetch contact data"
 msgstr ""
 
-#: mod/crepair.php:169 mod/admin.php:1108 mod/admin.php:1120
-#: mod/admin.php:1121 mod/admin.php:1134 mod/settings.php:650
-#: mod/settings.php:676
+#: mod/crepair.php:170 mod/admin.php:1295 mod/admin.php:1307
+#: mod/admin.php:1308 mod/admin.php:1321 mod/settings.php:661
+#: mod/settings.php:687
 msgid "Name"
 msgstr "Naam"
 
-#: mod/crepair.php:170
+#: mod/crepair.php:171
 msgid "Account Nickname"
 msgstr "Bijnaam account"
 
-#: mod/crepair.php:171
+#: mod/crepair.php:172
 msgid "@Tagname - overrides Name/Nickname"
 msgstr "@Labelnaam - krijgt voorrang op naam/bijnaam"
 
-#: mod/crepair.php:172
+#: mod/crepair.php:173
 msgid "Account URL"
 msgstr "URL account"
 
-#: mod/crepair.php:173
+#: mod/crepair.php:174
 msgid "Friend Request URL"
 msgstr "URL vriendschapsverzoek"
 
-#: mod/crepair.php:174
+#: mod/crepair.php:175
 msgid "Friend Confirm URL"
 msgstr "URL vriendschapsbevestiging"
 
-#: mod/crepair.php:175
+#: mod/crepair.php:176
 msgid "Notification Endpoint URL"
 msgstr ""
 
-#: mod/crepair.php:176
+#: mod/crepair.php:177
 msgid "Poll/Feed URL"
 msgstr "URL poll/feed"
 
-#: mod/crepair.php:177
+#: mod/crepair.php:178
 msgid "New photo from this URL"
 msgstr "Nieuwe foto van deze URL"
 
-#: mod/crepair.php:178
+#: mod/crepair.php:179
 msgid "Remote Self"
 msgstr ""
 
-#: mod/crepair.php:181
+#: mod/crepair.php:182
 msgid "Mirror postings from this contact"
 msgstr ""
 
-#: mod/crepair.php:183
+#: mod/crepair.php:184
 msgid ""
 "Mark this contact as remote_self, this will cause friendica to repost new "
 "entries from this contact."
 msgstr ""
 
-#: mod/bookmarklet.php:12 boot.php:1281 include/nav.php:91
+#: mod/bookmarklet.php:12 boot.php:1404 include/nav.php:91
 msgid "Login"
 msgstr "Login"
 
@@ -1894,34 +1868,35 @@ msgstr ""
 msgid "Access denied."
 msgstr "Toegang geweigerd"
 
-#: mod/dirfind.php:188 mod/allfriends.php:82 mod/match.php:84
-#: mod/suggest.php:97 include/contact_widgets.php:10 include/identity.php:188
+#: mod/dirfind.php:194 mod/allfriends.php:80 mod/match.php:85
+#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:212
 msgid "Connect"
 msgstr "Verbinden"
 
-#: mod/dirfind.php:189 mod/allfriends.php:66 mod/match.php:70
-#: mod/directory.php:156 mod/suggest.php:81 include/Contact.php:335
+#: mod/dirfind.php:195 mod/allfriends.php:64 mod/match.php:70
+#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:283
+#: include/Contact.php:296 include/Contact.php:338
 #: include/conversation.php:912 include/conversation.php:926
 msgid "View Profile"
 msgstr "Bekijk profiel"
 
-#: mod/dirfind.php:217
+#: mod/dirfind.php:224
 #, php-format
 msgid "People Search - %s"
 msgstr ""
 
-#: mod/dirfind.php:224 mod/match.php:104
+#: mod/dirfind.php:231 mod/match.php:105
 msgid "No matches"
 msgstr "Geen resultaten"
 
-#: mod/fbrowser.php:32 include/identity.php:649 include/nav.php:77
+#: mod/fbrowser.php:32 include/identity.php:702 include/nav.php:77
 #: view/theme/diabook/theme.php:126
 msgid "Photos"
 msgstr "Foto's"
 
-#: mod/fbrowser.php:41 mod/fbrowser.php:62 mod/photos.php:54
-#: mod/photos.php:184 mod/photos.php:1111 mod/photos.php:1237
-#: mod/photos.php:1260 mod/photos.php:1830 mod/photos.php:1842
+#: mod/fbrowser.php:41 mod/fbrowser.php:62 mod/photos.php:62
+#: mod/photos.php:192 mod/photos.php:1119 mod/photos.php:1245
+#: mod/photos.php:1268 mod/photos.php:1838 mod/photos.php:1850
 #: view/theme/diabook/theme.php:499
 msgid "Contact Photos"
 msgstr "Contactfoto's"
@@ -1934,548 +1909,578 @@ msgstr "Bestanden"
 msgid "Contacts who are not members of a group"
 msgstr "Contacten die geen leden zijn van een groep"
 
-#: mod/admin.php:80
+#: mod/admin.php:92
 msgid "Theme settings updated."
 msgstr "Thema-instellingen aangepast."
 
-#: mod/admin.php:127 mod/admin.php:709
+#: mod/admin.php:147 mod/admin.php:877
 msgid "Site"
 msgstr "Website"
 
-#: mod/admin.php:128 mod/admin.php:653 mod/admin.php:1103 mod/admin.php:1118
+#: mod/admin.php:148 mod/admin.php:821 mod/admin.php:1290 mod/admin.php:1305
 msgid "Users"
 msgstr "Gebruiker"
 
-#: mod/admin.php:129 mod/admin.php:1207 mod/admin.php:1267 mod/settings.php:66
+#: mod/admin.php:149 mod/admin.php:1405 mod/admin.php:1465 mod/settings.php:72
 msgid "Plugins"
 msgstr "Plugins"
 
-#: mod/admin.php:130 mod/admin.php:1452 mod/admin.php:1503
+#: mod/admin.php:150 mod/admin.php:1663 mod/admin.php:1713
 msgid "Themes"
 msgstr "Thema's"
 
-#: mod/admin.php:131
+#: mod/admin.php:151 mod/settings.php:50
+msgid "Additional features"
+msgstr "Extra functies"
+
+#: mod/admin.php:152
 msgid "DB updates"
 msgstr "DB aanpassingen"
 
-#: mod/admin.php:132 mod/admin.php:223
+#: mod/admin.php:153 mod/admin.php:374
 msgid "Inspect Queue"
 msgstr ""
 
-#: mod/admin.php:147 mod/admin.php:156 mod/admin.php:1591
+#: mod/admin.php:154 mod/admin.php:343
+msgid "Federation Statistics"
+msgstr ""
+
+#: mod/admin.php:168 mod/admin.php:179 mod/admin.php:1781
 msgid "Logs"
 msgstr "Logs"
 
-#: mod/admin.php:148
+#: mod/admin.php:169 mod/admin.php:1848
+msgid "View Logs"
+msgstr ""
+
+#: mod/admin.php:170
 msgid "probe address"
 msgstr ""
 
-#: mod/admin.php:149
+#: mod/admin.php:171
 msgid "check webfinger"
 msgstr ""
 
-#: mod/admin.php:154 include/nav.php:194
+#: mod/admin.php:177 include/nav.php:194
 msgid "Admin"
 msgstr "Beheer"
 
-#: mod/admin.php:155
+#: mod/admin.php:178
 msgid "Plugin Features"
 msgstr "Plugin Functies"
 
-#: mod/admin.php:157
+#: mod/admin.php:180
 msgid "diagnostics"
 msgstr ""
 
-#: mod/admin.php:158
+#: mod/admin.php:181
 msgid "User registrations waiting for confirmation"
 msgstr "Gebruikersregistraties wachten op bevestiging"
 
-#: mod/admin.php:222 mod/admin.php:272 mod/admin.php:708 mod/admin.php:1102
-#: mod/admin.php:1206 mod/admin.php:1266 mod/admin.php:1451 mod/admin.php:1502
-#: mod/admin.php:1590
+#: mod/admin.php:336
+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:337
+msgid ""
+"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
+"will improve the data displayed here."
+msgstr ""
+
+#: mod/admin.php:342 mod/admin.php:373 mod/admin.php:430 mod/admin.php:876
+#: mod/admin.php:1289 mod/admin.php:1404 mod/admin.php:1464 mod/admin.php:1662
+#: mod/admin.php:1712 mod/admin.php:1780 mod/admin.php:1847
 msgid "Administration"
 msgstr "Beheer"
 
-#: mod/admin.php:225
+#: mod/admin.php:349
+msgid "Currently this node is aware of nodes from the following platforms:"
+msgstr ""
+
+#: mod/admin.php:376
 msgid "ID"
 msgstr "ID"
 
-#: mod/admin.php:226
+#: mod/admin.php:377
 msgid "Recipient Name"
 msgstr ""
 
-#: mod/admin.php:227
+#: mod/admin.php:378
 msgid "Recipient Profile"
 msgstr ""
 
-#: mod/admin.php:229
+#: mod/admin.php:380
 msgid "Created"
 msgstr ""
 
-#: mod/admin.php:230
+#: mod/admin.php:381
 msgid "Last Tried"
 msgstr ""
 
-#: mod/admin.php:231
+#: mod/admin.php:382
 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:243 mod/admin.php:1056
+#: mod/admin.php:401 mod/admin.php:1243
 msgid "Normal Account"
 msgstr "Normaal account"
 
-#: mod/admin.php:244 mod/admin.php:1057
+#: mod/admin.php:402 mod/admin.php:1244
 msgid "Soapbox Account"
 msgstr "Zeepkist-account"
 
-#: mod/admin.php:245 mod/admin.php:1058
+#: mod/admin.php:403 mod/admin.php:1245
 msgid "Community/Celebrity Account"
 msgstr "Account voor een groep/forum of beroemdheid"
 
-#: mod/admin.php:246 mod/admin.php:1059
+#: mod/admin.php:404 mod/admin.php:1246
 msgid "Automatic Friend Account"
 msgstr "Automatisch Vriendschapsaccount"
 
-#: mod/admin.php:247
+#: mod/admin.php:405
 msgid "Blog Account"
 msgstr "Blog Account"
 
-#: mod/admin.php:248
+#: mod/admin.php:406
 msgid "Private Forum"
 msgstr "Privéforum/-groep"
 
-#: mod/admin.php:267
+#: mod/admin.php:425
 msgid "Message queues"
 msgstr "Bericht-wachtrijen"
 
-#: mod/admin.php:273
+#: mod/admin.php:431
 msgid "Summary"
 msgstr "Samenvatting"
 
-#: mod/admin.php:275
+#: mod/admin.php:433
 msgid "Registered users"
 msgstr "Geregistreerde gebruikers"
 
-#: mod/admin.php:277
+#: mod/admin.php:435
 msgid "Pending registrations"
 msgstr "Registraties die in de wacht staan"
 
-#: mod/admin.php:278
+#: mod/admin.php:436
 msgid "Version"
 msgstr "Versie"
 
-#: mod/admin.php:283
+#: mod/admin.php:441
 msgid "Active plugins"
 msgstr "Actieve plug-ins"
 
-#: mod/admin.php:306
+#: mod/admin.php:464
 msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr ""
 
-#: mod/admin.php:585
+#: mod/admin.php:749
 msgid "RINO2 needs mcrypt php extension to work."
 msgstr ""
 
-#: mod/admin.php:593
+#: mod/admin.php:757
 msgid "Site settings updated."
 msgstr "Site instellingen gewijzigd."
 
-#: mod/admin.php:617 mod/settings.php:901
+#: mod/admin.php:785 mod/settings.php:912
 msgid "No special theme for mobile devices"
 msgstr "Geen speciaal thema voor mobiele apparaten"
 
-#: mod/admin.php:636
+#: mod/admin.php:804
 msgid "No community page"
 msgstr ""
 
-#: mod/admin.php:637
+#: mod/admin.php:805
 msgid "Public postings from users of this site"
 msgstr ""
 
-#: mod/admin.php:638
+#: mod/admin.php:806
 msgid "Global community page"
 msgstr ""
 
-#: mod/admin.php:644
+#: mod/admin.php:812
 msgid "At post arrival"
 msgstr ""
 
-#: mod/admin.php:645 include/contact_selectors.php:56
+#: mod/admin.php:813 include/contact_selectors.php:56
 msgid "Frequently"
 msgstr "Frequent"
 
-#: mod/admin.php:646 include/contact_selectors.php:57
+#: mod/admin.php:814 include/contact_selectors.php:57
 msgid "Hourly"
 msgstr "elk uur"
 
-#: mod/admin.php:647 include/contact_selectors.php:58
+#: mod/admin.php:815 include/contact_selectors.php:58
 msgid "Twice daily"
 msgstr "Twee keer per dag"
 
-#: mod/admin.php:648 include/contact_selectors.php:59
+#: mod/admin.php:816 include/contact_selectors.php:59
 msgid "Daily"
 msgstr "dagelijks"
 
-#: mod/admin.php:654
+#: mod/admin.php:822
 msgid "Users, Global Contacts"
 msgstr ""
 
-#: mod/admin.php:655
+#: mod/admin.php:823
 msgid "Users, Global Contacts/fallback"
 msgstr ""
 
-#: mod/admin.php:659
+#: mod/admin.php:827
 msgid "One month"
 msgstr ""
 
-#: mod/admin.php:660
+#: mod/admin.php:828
 msgid "Three months"
 msgstr ""
 
-#: mod/admin.php:661
+#: mod/admin.php:829
 msgid "Half a year"
 msgstr ""
 
-#: mod/admin.php:662
+#: mod/admin.php:830
 msgid "One year"
 msgstr ""
 
-#: mod/admin.php:667
+#: mod/admin.php:835
 msgid "Multi user instance"
 msgstr "Server voor meerdere gebruikers"
 
-#: mod/admin.php:690
+#: mod/admin.php:858
 msgid "Closed"
 msgstr "Gesloten"
 
-#: mod/admin.php:691
+#: mod/admin.php:859
 msgid "Requires approval"
 msgstr "Toestemming vereist"
 
-#: mod/admin.php:692
+#: mod/admin.php:860
 msgid "Open"
 msgstr "Open"
 
-#: mod/admin.php:696
+#: mod/admin.php:864
 msgid "No SSL policy, links will track page SSL state"
 msgstr "Geen SSL beleid, links zullen SSL status van pagina volgen"
 
-#: mod/admin.php:697
+#: mod/admin.php:865
 msgid "Force all links to use SSL"
 msgstr "Verplicht alle links om SSL te gebruiken"
 
-#: mod/admin.php:698
+#: mod/admin.php:866
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr "Zelf-ondertekend certificaat, gebruik SSL alleen voor lokale links (afgeraden)"
 
-#: mod/admin.php:710 mod/admin.php:1268 mod/admin.php:1504 mod/admin.php:1592
-#: mod/settings.php:648 mod/settings.php:758 mod/settings.php:802
-#: mod/settings.php:871 mod/settings.php:957 mod/settings.php:1192
+#: mod/admin.php:878 mod/admin.php:1466 mod/admin.php:1714 mod/admin.php:1782
+#: mod/admin.php:1931 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 "Instellingen opslaan"
 
-#: mod/admin.php:711 mod/register.php:260
+#: mod/admin.php:879 mod/register.php:263
 msgid "Registration"
 msgstr "Registratie"
 
-#: mod/admin.php:712
+#: mod/admin.php:880
 msgid "File upload"
 msgstr "Uploaden bestand"
 
-#: mod/admin.php:713
+#: mod/admin.php:881
 msgid "Policies"
 msgstr "Beleid"
 
-#: mod/admin.php:714
+#: mod/admin.php:882
 msgid "Advanced"
 msgstr "Geavanceerd"
 
-#: mod/admin.php:715
+#: mod/admin.php:883
 msgid "Auto Discovered Contact Directory"
 msgstr ""
 
-#: mod/admin.php:716
+#: mod/admin.php:884
 msgid "Performance"
 msgstr "Performantie"
 
-#: mod/admin.php:717
+#: mod/admin.php:885
 msgid ""
 "Relocate - WARNING: advanced function. Could make this server unreachable."
 msgstr ""
 
-#: mod/admin.php:720
+#: mod/admin.php:888
 msgid "Site name"
 msgstr "Site naam"
 
-#: mod/admin.php:721
+#: mod/admin.php:889
 msgid "Host name"
 msgstr ""
 
-#: mod/admin.php:722
+#: mod/admin.php:890
 msgid "Sender Email"
 msgstr ""
 
-#: mod/admin.php:722
+#: mod/admin.php:890
 msgid ""
 "The email address your server shall use to send notification emails from."
 msgstr ""
 
-#: mod/admin.php:723
+#: mod/admin.php:891
 msgid "Banner/Logo"
 msgstr "Banner/Logo"
 
-#: mod/admin.php:724
+#: mod/admin.php:892
 msgid "Shortcut icon"
 msgstr ""
 
-#: mod/admin.php:724
+#: mod/admin.php:892
 msgid "Link to an icon that will be used for browsers."
 msgstr ""
 
-#: mod/admin.php:725
+#: mod/admin.php:893
 msgid "Touch icon"
 msgstr ""
 
-#: mod/admin.php:725
+#: mod/admin.php:893
 msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr ""
 
-#: mod/admin.php:726
+#: mod/admin.php:894
 msgid "Additional Info"
 msgstr ""
 
-#: mod/admin.php:726
+#: mod/admin.php:894
 #, php-format
 msgid ""
 "For public servers: you can add additional information here that will be "
 "listed at %s/siteinfo."
 msgstr ""
 
-#: mod/admin.php:727
+#: mod/admin.php:895
 msgid "System language"
 msgstr "Systeemtaal"
 
-#: mod/admin.php:728
+#: mod/admin.php:896
 msgid "System theme"
 msgstr "Systeem thema"
 
-#: mod/admin.php:728
+#: mod/admin.php:896
 msgid ""
 "Default system theme - may be over-ridden by user profiles - <a href='#' "
 "id='cnftheme'>change theme settings</a>"
 msgstr "Standaard systeem thema - kan door gebruikersprofielen veranderd worden - <a href='#' id='cnftheme'>verander thema instellingen</a>"
 
-#: mod/admin.php:729
+#: mod/admin.php:897
 msgid "Mobile system theme"
 msgstr "Mobiel systeem thema"
 
-#: mod/admin.php:729
+#: mod/admin.php:897
 msgid "Theme for mobile devices"
 msgstr "Thema voor mobiele apparaten"
 
-#: mod/admin.php:730
+#: mod/admin.php:898
 msgid "SSL link policy"
 msgstr "Beleid SSL-links"
 
-#: mod/admin.php:730
+#: mod/admin.php:898
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr "Bepaald of gegenereerde verwijzingen verplicht SSL moeten gebruiken"
 
-#: mod/admin.php:731
+#: mod/admin.php:899
 msgid "Force SSL"
 msgstr ""
 
-#: mod/admin.php:731
+#: mod/admin.php:899
 msgid ""
 "Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
 " to endless loops."
 msgstr ""
 
-#: mod/admin.php:732
+#: mod/admin.php:900
 msgid "Old style 'Share'"
 msgstr ""
 
-#: mod/admin.php:732
+#: mod/admin.php:900
 msgid "Deactivates the bbcode element 'share' for repeating items."
 msgstr ""
 
-#: mod/admin.php:733
+#: mod/admin.php:901
 msgid "Hide help entry from navigation menu"
 msgstr "Verberg de 'help' uit het navigatiemenu"
 
-#: mod/admin.php:733
+#: mod/admin.php:901
 msgid ""
 "Hides the menu entry for the Help pages from the navigation menu. You can "
 "still access it calling /help directly."
 msgstr "Verbergt het menu-item voor de Help pagina's uit het navigatiemenu. Je kunt ze nog altijd vinden door /help direct in te geven."
 
-#: mod/admin.php:734
+#: mod/admin.php:902
 msgid "Single user instance"
 msgstr "Server voor één gebruiker"
 
-#: mod/admin.php:734
+#: mod/admin.php:902
 msgid "Make this instance multi-user or single-user for the named user"
 msgstr "Stel deze server in voor meerdere gebruikers, of enkel voor de geselecteerde gebruiker."
 
-#: mod/admin.php:735
+#: mod/admin.php:903
 msgid "Maximum image size"
 msgstr "Maximum afbeeldingsgrootte"
 
-#: mod/admin.php:735
+#: mod/admin.php:903
 msgid ""
 "Maximum size in bytes of uploaded images. Default is 0, which means no "
 "limits."
 msgstr "Maximum afmeting in bytes van afbeeldingen. Standaard is 0, dus geen beperking."
 
-#: mod/admin.php:736
+#: mod/admin.php:904
 msgid "Maximum image length"
 msgstr "Maximum afbeeldingslengte"
 
-#: mod/admin.php:736
+#: mod/admin.php:904
 msgid ""
 "Maximum length in pixels of the longest side of uploaded images. Default is "
 "-1, which means no limits."
 msgstr "Maximum lengte in pixels van de langste kant van afbeeldingen. Standaard is -1, dus geen beperkingen."
 
-#: mod/admin.php:737
+#: mod/admin.php:905
 msgid "JPEG image quality"
 msgstr "JPEG afbeeldingskwaliteit"
 
-#: mod/admin.php:737
+#: mod/admin.php:905
 msgid ""
 "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
 "100, which is full quality."
 msgstr "JPEGS zullen met deze kwaliteitsinstelling bewaard worden [0-100]. Standaard is 100, dit is volledige kwaliteit."
 
-#: mod/admin.php:739
+#: mod/admin.php:907
 msgid "Register policy"
 msgstr "Registratiebeleid"
 
-#: mod/admin.php:740
+#: mod/admin.php:908
 msgid "Maximum Daily Registrations"
 msgstr "Maximum aantal registraties per dag"
 
-#: mod/admin.php:740
+#: mod/admin.php:908
 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 "Als registratie hierboven is toegelaten, zet dit het maximum aantal registraties van nieuwe gebruikers per dag. Als registratie niet is toegelaten heeft deze instelling geen effect."
 
-#: mod/admin.php:741
+#: mod/admin.php:909
 msgid "Register text"
 msgstr "Registratietekst"
 
-#: mod/admin.php:741
+#: mod/admin.php:909
 msgid "Will be displayed prominently on the registration page."
 msgstr "Dit zal prominent op de registratiepagina getoond worden."
 
-#: mod/admin.php:742
+#: mod/admin.php:910
 msgid "Accounts abandoned after x days"
 msgstr "Verlaten accounts na x dagen"
 
-#: mod/admin.php:742
+#: mod/admin.php:910
 msgid ""
 "Will not waste system resources polling external sites for abandonded "
 "accounts. Enter 0 for no time limit."
 msgstr "Dit zal geen systeembronnen verspillen aan het nakijken van externe sites voor verlaten accounts. Geef 0 is voor geen tijdslimiet."
 
-#: mod/admin.php:743
+#: mod/admin.php:911
 msgid "Allowed friend domains"
 msgstr "Toegelaten vriend domeinen"
 
-#: mod/admin.php:743
+#: mod/admin.php:911
 msgid ""
 "Comma separated list of domains which are allowed to establish friendships "
 "with this site. Wildcards are accepted. Empty to allow any domains"
 msgstr "Komma-gescheiden lijst van domeinen die een vriendschapsband met deze website mogen aangaan. Jokers zijn toegelaten. Laat leeg om alle domeinen toe te laten."
 
-#: mod/admin.php:744
+#: mod/admin.php:912
 msgid "Allowed email domains"
 msgstr "Toegelaten e-mail domeinen"
 
-#: mod/admin.php:744
+#: mod/admin.php:912
 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 "Door komma's gescheiden lijst met e-maildomeinen die op deze website mogen registeren. Wildcards zijn toegestaan.\nLeeg laten om alle domeinen toe te staan."
 
-#: mod/admin.php:745
+#: mod/admin.php:913
 msgid "Block public"
 msgstr "Openbare toegang blokkeren"
 
-#: mod/admin.php:745
+#: mod/admin.php:913
 msgid ""
 "Check to block public access to all otherwise public personal pages on this "
 "site unless you are currently logged in."
 msgstr "Kruis dit aan om alle openbare persoonlijke pagina's alleen toegankelijk te maken voor ingelogde gebruikers."
 
-#: mod/admin.php:746
+#: mod/admin.php:914
 msgid "Force publish"
 msgstr "Dwing publiceren af"
 
-#: mod/admin.php:746
+#: mod/admin.php:914
 msgid ""
 "Check to force all profiles on this site to be listed in the site directory."
 msgstr "Kruis dit aan om af te dwingen dat alle profielen op deze website in de gids van deze website gepubliceerd worden."
 
-#: mod/admin.php:747
+#: mod/admin.php:915
 msgid "Global directory URL"
 msgstr ""
 
-#: mod/admin.php:747
+#: mod/admin.php:915
 msgid ""
 "URL to the global directory. If this is not set, the global directory is "
 "completely unavailable to the application."
 msgstr ""
 
-#: mod/admin.php:748
+#: mod/admin.php:916
 msgid "Allow threaded items"
 msgstr "Sta threads in conversaties toe"
 
-#: mod/admin.php:748
+#: mod/admin.php:916
 msgid "Allow infinite level threading for items on this site."
 msgstr "Sta oneindige niveaus threads in conversaties op deze website toe."
 
-#: mod/admin.php:749
+#: mod/admin.php:917
 msgid "Private posts by default for new users"
 msgstr "Privéberichten als standaard voor nieuwe gebruikers"
 
-#: mod/admin.php:749
+#: mod/admin.php:917
 msgid ""
 "Set default post permissions for all new members to the default privacy "
 "group rather than public."
 msgstr "Stel de standaardrechten van berichten voor nieuwe leden op de standaard privacygroep in, in plaats van openbaar."
 
-#: mod/admin.php:750
+#: mod/admin.php:918
 msgid "Don't include post content in email notifications"
 msgstr "De inhoud van het bericht niet insluiten bij e-mailnotificaties"
 
-#: mod/admin.php:750
+#: mod/admin.php:918
 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 "De inhoud van berichten/commentaar/privéberichten/enzovoort  niet insluiten in e-mailnotificaties die door deze website verzonden worden, voor de bescherming van je privacy."
 
-#: mod/admin.php:751
+#: mod/admin.php:919
 msgid "Disallow public access to addons listed in the apps menu."
 msgstr ""
 
-#: mod/admin.php:751
+#: mod/admin.php:919
 msgid ""
 "Checking this box will restrict addons listed in the apps menu to members "
 "only."
 msgstr ""
 
-#: mod/admin.php:752
+#: mod/admin.php:920
 msgid "Don't embed private images in posts"
 msgstr ""
 
-#: mod/admin.php:752
+#: mod/admin.php:920
 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 "
@@ -2483,208 +2488,228 @@ msgid ""
 "while."
 msgstr ""
 
-#: mod/admin.php:753
+#: mod/admin.php:921
 msgid "Allow Users to set remote_self"
 msgstr ""
 
-#: mod/admin.php:753
+#: mod/admin.php:921
 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:754
+#: mod/admin.php:922
 msgid "Block multiple registrations"
 msgstr "Blokkeer meerdere registraties"
 
-#: mod/admin.php:754
+#: mod/admin.php:922
 msgid "Disallow users to register additional accounts for use as pages."
 msgstr "Laat niet toe dat gebruikers meerdere accounts aanmaken."
 
-#: mod/admin.php:755
+#: mod/admin.php:923
 msgid "OpenID support"
 msgstr "OpenID ondersteuning"
 
-#: mod/admin.php:755
+#: mod/admin.php:923
 msgid "OpenID support for registration and logins."
 msgstr "OpenID ondersteuning voor registraties en logins."
 
-#: mod/admin.php:756
+#: mod/admin.php:924
 msgid "Fullname check"
 msgstr "Controleer volledige naam"
 
-#: mod/admin.php:756
+#: mod/admin.php:924
 msgid ""
 "Force users to register with a space between firstname and lastname in Full "
 "name, as an antispam measure"
 msgstr "Verplicht gebruikers om zich te registreren met een spatie tussen voornaam en achternaam, als anti-spam maatregel"
 
-#: mod/admin.php:757
+#: mod/admin.php:925
 msgid "UTF-8 Regular expressions"
 msgstr "UTF-8 reguliere uitdrukkingen"
 
-#: mod/admin.php:757
+#: mod/admin.php:925
 msgid "Use PHP UTF8 regular expressions"
 msgstr "Gebruik PHP UTF8 reguliere uitdrukkingen"
 
-#: mod/admin.php:758
+#: mod/admin.php:926
 msgid "Community Page Style"
 msgstr ""
 
-#: mod/admin.php:758
+#: mod/admin.php:926
 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:759
+#: mod/admin.php:927
 msgid "Posts per user on community page"
 msgstr ""
 
-#: mod/admin.php:759
+#: mod/admin.php:927
 msgid ""
 "The maximum number of posts per user on the community page. (Not valid for "
 "'Global Community')"
 msgstr ""
 
-#: mod/admin.php:760
+#: mod/admin.php:928
 msgid "Enable OStatus support"
 msgstr "Activeer OStatus ondersteuning"
 
-#: mod/admin.php:760
+#: mod/admin.php:928
 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:761
+#: mod/admin.php:929
 msgid "OStatus conversation completion interval"
 msgstr ""
 
-#: mod/admin.php:761
+#: mod/admin.php:929
 msgid ""
 "How often shall the poller check for new entries in OStatus conversations? "
 "This can be a very ressource task."
 msgstr ""
 
-#: mod/admin.php:762
+#: mod/admin.php:930
 msgid "OStatus support can only be enabled if threading is enabled."
 msgstr ""
 
-#: mod/admin.php:764
+#: mod/admin.php:932
 msgid ""
 "Diaspora support can't be enabled because Friendica was installed into a sub"
 " directory."
 msgstr ""
 
-#: mod/admin.php:765
+#: mod/admin.php:933
 msgid "Enable Diaspora support"
 msgstr "Activeer Diaspora ondersteuning"
 
-#: mod/admin.php:765
+#: mod/admin.php:933
 msgid "Provide built-in Diaspora network compatibility."
 msgstr "Bied ingebouwde ondersteuning voor het Diaspora netwerk."
 
-#: mod/admin.php:766
+#: mod/admin.php:934
 msgid "Only allow Friendica contacts"
 msgstr "Laat alleen Friendica contacten toe"
 
-#: mod/admin.php:766
+#: mod/admin.php:934
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
 msgstr "Alle contacten moeten een Friendica protocol gebruiken. Alle andere ingebouwde communicatieprotocols worden uitgeschakeld."
 
-#: mod/admin.php:767
+#: mod/admin.php:935
 msgid "Verify SSL"
 msgstr "Controleer SSL"
 
-#: mod/admin.php:767
+#: mod/admin.php:935
 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 "Als je wilt kun je striktere certificaat controle activeren. Dit betekent dat je (totaal) niet kunt connecteren met sites die zelf-ondertekende SSL certificaten gebruiken."
 
-#: mod/admin.php:768
+#: mod/admin.php:936
 msgid "Proxy user"
 msgstr "Proxy-gebruiker"
 
-#: mod/admin.php:769
+#: mod/admin.php:937
 msgid "Proxy URL"
 msgstr "Proxy-URL"
 
-#: mod/admin.php:770
+#: mod/admin.php:938
 msgid "Network timeout"
 msgstr "Netwerk timeout"
 
-#: mod/admin.php:770
+#: mod/admin.php:938
 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)."
 
-#: mod/admin.php:771
+#: mod/admin.php:939
 msgid "Delivery interval"
 msgstr "Afleverinterval"
 
-#: mod/admin.php:771
+#: mod/admin.php:939
 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 "Stel achtergrond processen voor aflevering een aantal seconden uit om systeembelasting te beperken. Aanbevolen: 4-5 voor gedeelde hosten, 2-3 voor virtuele privé servers, 0-1 voor grote servers."
 
-#: mod/admin.php:772
+#: mod/admin.php:940
 msgid "Poll interval"
 msgstr "Poll-interval"
 
-#: mod/admin.php:772
+#: mod/admin.php:940
 msgid ""
 "Delay background polling processes by this many seconds to reduce system "
 "load. If 0, use delivery interval."
 msgstr "Stel achtergrondprocessen zoveel seconden uit om de systeembelasting te beperken. Indien 0 wordt het afleverinterval gebruikt."
 
-#: mod/admin.php:773
+#: mod/admin.php:941
 msgid "Maximum Load Average"
 msgstr "Maximum gemiddelde belasting"
 
-#: mod/admin.php:773
+#: mod/admin.php:941
 msgid ""
 "Maximum system load before delivery and poll processes are deferred - "
 "default 50."
 msgstr "Maximum systeembelasting voordat aflever- en poll-processen uitgesteld worden - standaard 50."
 
-#: mod/admin.php:774
+#: mod/admin.php:942
 msgid "Maximum Load Average (Frontend)"
 msgstr ""
 
-#: mod/admin.php:774
+#: mod/admin.php:942
 msgid "Maximum system load before the frontend quits service - default 50."
 msgstr ""
 
-#: mod/admin.php:776
+#: mod/admin.php:943
+msgid "Maximum table size for optimization"
+msgstr ""
+
+#: mod/admin.php:943
+msgid ""
+"Maximum table size (in MB) for the automatic optimization - default 100 MB. "
+"Enter -1 to disable it."
+msgstr ""
+
+#: mod/admin.php:944
+msgid "Minimum level of fragmentation"
+msgstr ""
+
+#: mod/admin.php:944
+msgid ""
+"Minimum fragmenation level to start the automatic optimization - default "
+"value is 30%."
+msgstr ""
+
+#: mod/admin.php:946
 msgid "Periodical check of global contacts"
 msgstr ""
 
-#: mod/admin.php:776
+#: mod/admin.php:946
 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:777
+#: mod/admin.php:947
 msgid "Days between requery"
 msgstr ""
 
-#: mod/admin.php:777
+#: mod/admin.php:947
 msgid "Number of days after which a server is requeried for his contacts."
 msgstr ""
 
-#: mod/admin.php:778
+#: mod/admin.php:948
 msgid "Discover contacts from other servers"
 msgstr ""
 
-#: mod/admin.php:778
+#: mod/admin.php:948
 msgid ""
 "Periodically query other servers for contacts. You can choose between "
 "'users': the users on the remote system, 'Global Contacts': active contacts "
@@ -2694,32 +2719,32 @@ msgid ""
 "Global Contacts'."
 msgstr ""
 
-#: mod/admin.php:779
+#: mod/admin.php:949
 msgid "Timeframe for fetching global contacts"
 msgstr ""
 
-#: mod/admin.php:779
+#: mod/admin.php:949
 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:780
+#: mod/admin.php:950
 msgid "Search the local directory"
 msgstr ""
 
-#: mod/admin.php:780
+#: mod/admin.php:950
 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:782
+#: mod/admin.php:952
 msgid "Publish server information"
 msgstr ""
 
-#: mod/admin.php:782
+#: mod/admin.php:952
 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 "
@@ -2727,205 +2752,205 @@ msgid ""
 " href='http://the-federation.info/'>the-federation.info</a> for details."
 msgstr ""
 
-#: mod/admin.php:784
+#: mod/admin.php:954
 msgid "Use MySQL full text engine"
 msgstr "Gebruik de tekst-zoekfunctie van MySQL"
 
-#: mod/admin.php:784
+#: mod/admin.php:954
 msgid ""
 "Activates the full text engine. Speeds up search - but can only search for "
 "four and more characters."
 msgstr "Activeert de zoekmotor. Dit maakt zoeken sneller, maar het kan alleen zoeken naar teksten van minstens vier letters."
 
-#: mod/admin.php:785
+#: mod/admin.php:955
 msgid "Suppress Language"
 msgstr ""
 
-#: mod/admin.php:785
+#: mod/admin.php:955
 msgid "Suppress language information in meta information about a posting."
 msgstr ""
 
-#: mod/admin.php:786
+#: mod/admin.php:956
 msgid "Suppress Tags"
 msgstr ""
 
-#: mod/admin.php:786
+#: mod/admin.php:956
 msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr ""
 
-#: mod/admin.php:787
+#: mod/admin.php:957
 msgid "Path to item cache"
 msgstr "Pad naar cache voor items"
 
-#: mod/admin.php:787
+#: mod/admin.php:957
 msgid "The item caches buffers generated bbcode and external images."
 msgstr ""
 
-#: mod/admin.php:788
+#: mod/admin.php:958
 msgid "Cache duration in seconds"
 msgstr "Cache tijdsduur in seconden"
 
-#: mod/admin.php:788
+#: mod/admin.php:958
 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:789
+#: mod/admin.php:959
 msgid "Maximum numbers of comments per post"
 msgstr ""
 
-#: mod/admin.php:789
+#: mod/admin.php:959
 msgid "How much comments should be shown for each post? Default value is 100."
 msgstr ""
 
-#: mod/admin.php:790
+#: mod/admin.php:960
 msgid "Path for lock file"
 msgstr "Pad voor lock bestand"
 
-#: mod/admin.php:790
+#: mod/admin.php:960
 msgid ""
 "The lock file is used to avoid multiple pollers at one time. Only define a "
 "folder here."
 msgstr ""
 
-#: mod/admin.php:791
+#: mod/admin.php:961
 msgid "Temp path"
 msgstr "Tijdelijk pad"
 
-#: mod/admin.php:791
+#: mod/admin.php:961
 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:792
+#: mod/admin.php:962
 msgid "Base path to installation"
 msgstr "Basispad voor installatie"
 
-#: mod/admin.php:792
+#: mod/admin.php:962
 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:793
+#: mod/admin.php:963
 msgid "Disable picture proxy"
 msgstr ""
 
-#: mod/admin.php:793
+#: mod/admin.php:963
 msgid ""
 "The picture proxy increases performance and privacy. It shouldn't be used on"
 " systems with very low bandwith."
 msgstr ""
 
-#: mod/admin.php:794
+#: mod/admin.php:964
 msgid "Enable old style pager"
 msgstr ""
 
-#: mod/admin.php:794
+#: mod/admin.php:964
 msgid ""
 "The old style pager has page numbers but slows down massively the page "
 "speed."
 msgstr ""
 
-#: mod/admin.php:795
+#: mod/admin.php:965
 msgid "Only search in tags"
 msgstr ""
 
-#: mod/admin.php:795
+#: mod/admin.php:965
 msgid "On large systems the text search can slow down the system extremely."
 msgstr ""
 
-#: mod/admin.php:797
+#: mod/admin.php:967
 msgid "New base url"
 msgstr ""
 
-#: mod/admin.php:797
+#: mod/admin.php:967
 msgid ""
 "Change base url for this server. Sends relocate message to all DFRN contacts"
 " of all users."
 msgstr ""
 
-#: mod/admin.php:799
+#: mod/admin.php:969
 msgid "RINO Encryption"
 msgstr ""
 
-#: mod/admin.php:799
+#: mod/admin.php:969
 msgid "Encryption layer between nodes."
 msgstr ""
 
-#: mod/admin.php:800
+#: mod/admin.php:970
 msgid "Embedly API key"
 msgstr ""
 
-#: mod/admin.php:800
+#: mod/admin.php:970
 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:818
+#: mod/admin.php:999
 msgid "Update has been marked successful"
 msgstr "Wijziging succesvol gemarkeerd "
 
-#: mod/admin.php:826
+#: mod/admin.php:1007
 #, php-format
 msgid "Database structure update %s was successfully applied."
 msgstr ""
 
-#: mod/admin.php:829
+#: mod/admin.php:1010
 #, php-format
 msgid "Executing of database structure update %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:841
+#: mod/admin.php:1022
 #, php-format
 msgid "Executing %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:844
+#: mod/admin.php:1025
 #, php-format
 msgid "Update %s was successfully applied."
 msgstr "Wijziging %s geslaagd."
 
-#: mod/admin.php:848
+#: mod/admin.php:1029
 #, php-format
 msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr "Wijziging %s gaf geen status terug. We weten niet of de wijziging geslaagd is."
 
-#: mod/admin.php:850
+#: mod/admin.php:1031
 #, php-format
 msgid "There was no additional update function %s that needed to be called."
 msgstr ""
 
-#: mod/admin.php:869
+#: mod/admin.php:1050
 msgid "No failed updates."
 msgstr "Geen misluke wijzigingen"
 
-#: mod/admin.php:870
+#: mod/admin.php:1051
 msgid "Check database structure"
 msgstr ""
 
-#: mod/admin.php:875
+#: mod/admin.php:1056
 msgid "Failed Updates"
 msgstr "Misluke wijzigingen"
 
-#: mod/admin.php:876
+#: mod/admin.php:1057
 msgid ""
 "This does not include updates prior to 1139, which did not return a status."
 msgstr "Dit is zonder de wijzigingen voor 1139, welke geen status teruggaven."
 
-#: mod/admin.php:877
+#: mod/admin.php:1058
 msgid "Mark success (if update was manually applied)"
 msgstr "Markeren als succes (als aanpassing manueel doorgevoerd werd)"
 
-#: mod/admin.php:878
+#: mod/admin.php:1059
 msgid "Attempt to execute this update step automatically"
 msgstr "Probeer deze stap automatisch uit te voeren"
 
-#: mod/admin.php:910
+#: mod/admin.php:1091
 #, php-format
 msgid ""
 "\n"
@@ -2933,7 +2958,7 @@ msgid ""
 "\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/admin.php:913
+#: mod/admin.php:1094
 #, php-format
 msgid ""
 "\n"
@@ -2963,295 +2988,318 @@ msgid ""
 "\t\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/admin.php:945 include/user.php:421
+#: mod/admin.php:1126 include/user.php:423
 #, php-format
 msgid "Registration details for %s"
 msgstr "Registratie details voor %s"
 
-#: mod/admin.php:957
+#: mod/admin.php:1138
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
 msgstr[0] "%s gebruiker geblokkeerd/niet geblokkeerd"
 msgstr[1] "%s gebruikers geblokkeerd/niet geblokkeerd"
 
-#: mod/admin.php:964
+#: mod/admin.php:1145
 #, php-format
 msgid "%s user deleted"
 msgid_plural "%s users deleted"
 msgstr[0] "%s gebruiker verwijderd"
 msgstr[1] "%s gebruikers verwijderd"
 
-#: mod/admin.php:1003
+#: mod/admin.php:1192
 #, php-format
 msgid "User '%s' deleted"
 msgstr "Gebruiker '%s' verwijderd"
 
-#: mod/admin.php:1011
+#: mod/admin.php:1200
 #, php-format
 msgid "User '%s' unblocked"
 msgstr "Gebruiker '%s' niet meer geblokkeerd"
 
-#: mod/admin.php:1011
+#: mod/admin.php:1200
 #, php-format
 msgid "User '%s' blocked"
 msgstr "Gebruiker '%s' geblokkeerd"
 
-#: mod/admin.php:1104
+#: mod/admin.php:1291
 msgid "Add User"
 msgstr "Gebruiker toevoegen"
 
-#: mod/admin.php:1105
+#: mod/admin.php:1292
 msgid "select all"
 msgstr "Alles selecteren"
 
-#: mod/admin.php:1106
+#: mod/admin.php:1293
 msgid "User registrations waiting for confirm"
 msgstr "Gebruikersregistraties wachten op een bevestiging"
 
-#: mod/admin.php:1107
+#: mod/admin.php:1294
 msgid "User waiting for permanent deletion"
 msgstr ""
 
-#: mod/admin.php:1108
+#: mod/admin.php:1295
 msgid "Request date"
 msgstr "Registratiedatum"
 
-#: mod/admin.php:1108 mod/admin.php:1120 mod/admin.php:1121 mod/admin.php:1136
+#: mod/admin.php:1295 mod/admin.php:1307 mod/admin.php:1308 mod/admin.php:1323
 #: include/contact_selectors.php:79 include/contact_selectors.php:86
 msgid "Email"
 msgstr "E-mail"
 
-#: mod/admin.php:1109
+#: mod/admin.php:1296
 msgid "No registrations."
 msgstr "Geen registraties."
 
-#: mod/admin.php:1111
+#: mod/admin.php:1298
 msgid "Deny"
 msgstr "Weiger"
 
-#: mod/admin.php:1115
+#: mod/admin.php:1302
 msgid "Site admin"
 msgstr "Sitebeheerder"
 
-#: mod/admin.php:1116
+#: mod/admin.php:1303
 msgid "Account expired"
 msgstr "Account verlopen"
 
-#: mod/admin.php:1119
+#: mod/admin.php:1306
 msgid "New User"
 msgstr "Nieuwe gebruiker"
 
-#: mod/admin.php:1120 mod/admin.php:1121
+#: mod/admin.php:1307 mod/admin.php:1308
 msgid "Register date"
 msgstr "Registratiedatum"
 
-#: mod/admin.php:1120 mod/admin.php:1121
+#: mod/admin.php:1307 mod/admin.php:1308
 msgid "Last login"
 msgstr "Laatste login"
 
-#: mod/admin.php:1120 mod/admin.php:1121
+#: mod/admin.php:1307 mod/admin.php:1308
 msgid "Last item"
 msgstr "Laatste item"
 
-#: mod/admin.php:1120
+#: mod/admin.php:1307
 msgid "Deleted since"
 msgstr "Verwijderd sinds"
 
-#: mod/admin.php:1121 mod/settings.php:41
+#: mod/admin.php:1308 mod/settings.php:41
 msgid "Account"
 msgstr "Account"
 
-#: mod/admin.php:1123
+#: mod/admin.php:1310
 msgid ""
 "Selected users will be deleted!\\n\\nEverything these users had posted on "
 "this site will be permanently deleted!\\n\\nAre you sure?"
 msgstr "Geselecteerde gebruikers zullen verwijderd worden!\\n\\nAlles wat deze gebruikers gepost hebben op deze website zal permanent verwijderd worden!\\n\\nBen je zeker?"
 
-#: mod/admin.php:1124
+#: mod/admin.php:1311
 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 "De gebruiker {0} zal verwijderd worden!\\n\\nAlles wat deze gebruiker gepost heeft op deze website zal permanent verwijderd worden!\\n\\nBen je zeker?"
 
-#: mod/admin.php:1134
+#: mod/admin.php:1321
 msgid "Name of the new user."
 msgstr "Naam van nieuwe gebruiker"
 
-#: mod/admin.php:1135
+#: mod/admin.php:1322
 msgid "Nickname"
 msgstr "Bijnaam"
 
-#: mod/admin.php:1135
+#: mod/admin.php:1322
 msgid "Nickname of the new user."
 msgstr "Bijnaam van nieuwe gebruiker"
 
-#: mod/admin.php:1136
+#: mod/admin.php:1323
 msgid "Email address of the new user."
 msgstr "E-mailadres van nieuwe gebruiker"
 
-#: mod/admin.php:1169
+#: mod/admin.php:1366
 #, php-format
 msgid "Plugin %s disabled."
 msgstr "Plugin %s uitgeschakeld."
 
-#: mod/admin.php:1173
+#: mod/admin.php:1370
 #, php-format
 msgid "Plugin %s enabled."
 msgstr "Plugin %s ingeschakeld."
 
-#: mod/admin.php:1183 mod/admin.php:1407
+#: mod/admin.php:1381 mod/admin.php:1617
 msgid "Disable"
 msgstr "Uitschakelen"
 
-#: mod/admin.php:1185 mod/admin.php:1409
+#: mod/admin.php:1383 mod/admin.php:1619
 msgid "Enable"
 msgstr "Inschakelen"
 
-#: mod/admin.php:1208 mod/admin.php:1453
+#: mod/admin.php:1406 mod/admin.php:1664
 msgid "Toggle"
 msgstr "Schakelaar"
 
-#: mod/admin.php:1216 mod/admin.php:1463
+#: mod/admin.php:1414 mod/admin.php:1673
 msgid "Author: "
 msgstr "Auteur:"
 
-#: mod/admin.php:1217 mod/admin.php:1464
+#: mod/admin.php:1415 mod/admin.php:1674
 msgid "Maintainer: "
 msgstr "Onderhoud:"
 
-#: mod/admin.php:1269
+#: mod/admin.php:1467
 msgid "Reload active plugins"
 msgstr ""
 
-#: mod/admin.php:1367
+#: mod/admin.php:1472
+#, php-format
+msgid ""
+"There are currently no plugins available on your node. You can find the "
+"official plugin repository at %1$s and might find other interesting plugins "
+"in the open plugin registry at %2$s"
+msgstr ""
+
+#: mod/admin.php:1577
 msgid "No themes found."
 msgstr "Geen thema's gevonden."
 
-#: mod/admin.php:1445
+#: mod/admin.php:1655
 msgid "Screenshot"
 msgstr "Schermafdruk"
 
-#: mod/admin.php:1505
+#: mod/admin.php:1715
 msgid "Reload active themes"
 msgstr ""
 
-#: mod/admin.php:1509
+#: mod/admin.php:1720
+#, php-format
+msgid "No themes found on the system. They should be paced in %1$s"
+msgstr ""
+
+#: mod/admin.php:1721
 msgid "[Experimental]"
 msgstr "[Experimenteel]"
 
-#: mod/admin.php:1510
+#: mod/admin.php:1722
 msgid "[Unsupported]"
 msgstr "[Niet ondersteund]"
 
-#: mod/admin.php:1537
+#: mod/admin.php:1746
 msgid "Log settings updated."
 msgstr "Log instellingen gewijzigd"
 
-#: mod/admin.php:1593
+#: mod/admin.php:1783
 msgid "Clear"
 msgstr "Wis"
 
-#: mod/admin.php:1599
+#: mod/admin.php:1788
 msgid "Enable Debugging"
 msgstr ""
 
-#: mod/admin.php:1600
+#: mod/admin.php:1789
 msgid "Log file"
 msgstr "Logbestand"
 
-#: mod/admin.php:1600
+#: mod/admin.php:1789
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr "De webserver moet hier kunnen schrijven. Relatief t.o.v. van de hoogste folder binnen uw Friendica-installatie."
 
-#: mod/admin.php:1601
+#: mod/admin.php:1790
 msgid "Log level"
 msgstr "Log niveau"
 
-#: mod/admin.php:1651 include/acl_selectors.php:347
-msgid "Close"
-msgstr "Afsluiten"
+#: mod/admin.php:1793
+msgid "PHP logging"
+msgstr ""
+
+#: mod/admin.php:1794
+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 "
+"'error_log' line is relative to the friendica top-level directory and must "
+"be writeable by the web server. The option '1' for 'log_errors' and "
+"'display_errors' is to enable these options, set to '0' to disable them."
+msgstr ""
 
-#: mod/admin.php:1657
-msgid "FTP Host"
-msgstr "FTP Server"
+#: mod/admin.php:1920 mod/admin.php:1921 mod/settings.php:759
+msgid "Off"
+msgstr "Uit"
 
-#: mod/admin.php:1658
-msgid "FTP Path"
-msgstr "FTP Pad"
+#: mod/admin.php:1920 mod/admin.php:1921 mod/settings.php:759
+msgid "On"
+msgstr "Aan"
 
-#: mod/admin.php:1659
-msgid "FTP User"
-msgstr "FTP Gebruiker"
+#: mod/admin.php:1921
+#, php-format
+msgid "Lock feature %s"
+msgstr ""
 
-#: mod/admin.php:1660
-msgid "FTP Password"
-msgstr "FTP wachtwoord"
+#: mod/admin.php:1929
+msgid "Manage Additional Features"
+msgstr ""
 
-#: mod/network.php:143
+#: mod/network.php:146
 #, php-format
 msgid "Search Results For: %s"
 msgstr ""
 
-#: mod/network.php:195 mod/search.php:25
+#: mod/network.php:191 mod/search.php:25
 msgid "Remove term"
 msgstr "Verwijder zoekterm"
 
-#: mod/network.php:204 mod/search.php:34 include/features.php:43
+#: mod/network.php:200 mod/search.php:34 include/features.php:84
 msgid "Saved Searches"
 msgstr "Opgeslagen zoekopdrachten"
 
-#: mod/network.php:205 include/group.php:279
+#: mod/network.php:201 include/group.php:293
 msgid "add"
 msgstr "toevoegen"
 
-#: mod/network.php:366
+#: mod/network.php:365
 msgid "Commented Order"
 msgstr "Nieuwe reacties bovenaan"
 
-#: mod/network.php:369
+#: mod/network.php:368
 msgid "Sort by Comment Date"
 msgstr "Berichten met nieuwe reacties bovenaan"
 
-#: mod/network.php:374
+#: mod/network.php:373
 msgid "Posted Order"
 msgstr "Nieuwe berichten bovenaan"
 
-#: mod/network.php:377
+#: mod/network.php:376
 msgid "Sort by Post Date"
 msgstr "Nieuwe berichten bovenaan"
 
-#: mod/network.php:388
+#: mod/network.php:387
 msgid "Posts that mention or involve you"
 msgstr "Alleen berichten die jou vermelden of op jou betrekking hebben"
 
-#: mod/network.php:396
+#: mod/network.php:395
 msgid "New"
 msgstr "Nieuw"
 
-#: mod/network.php:399
+#: mod/network.php:398
 msgid "Activity Stream - by date"
 msgstr "Activiteitenstroom - volgens datum"
 
-#: mod/network.php:407
+#: mod/network.php:406
 msgid "Shared Links"
 msgstr "Gedeelde links"
 
-#: mod/network.php:410
+#: mod/network.php:409
 msgid "Interesting Links"
 msgstr "Interessante links"
 
-#: mod/network.php:418
+#: mod/network.php:417
 msgid "Starred"
 msgstr "Met ster"
 
-#: mod/network.php:421
+#: mod/network.php:420
 msgid "Favourite Posts"
 msgstr "Favoriete berichten"
 
-#: mod/network.php:480
+#: mod/network.php:479
 #, php-format
 msgid "Warning: This group contains %s member from an insecure network."
 msgid_plural ""
@@ -3259,49 +3307,31 @@ msgid_plural ""
 msgstr[0] "Waarschuwing: Deze groep bevat %s lid van een onveilig netwerk."
 msgstr[1] "Waarschuwing: Deze groep bevat %s leden van een onveilig netwerk."
 
-#: mod/network.php:483
+#: mod/network.php:482
 msgid "Private messages to this group are at risk of public disclosure."
 msgstr "Privéberichten naar deze groep kunnen openbaar gemaakt worden."
 
-#: mod/network.php:550 mod/content.php:119
+#: mod/network.php:549 mod/content.php:119
 msgid "No such group"
 msgstr "Zo'n groep bestaat niet"
 
-#: mod/network.php:567 mod/content.php:130
-msgid "Group is empty"
-msgstr "De groep is leeg"
-
-#: mod/network.php:578 mod/content.php:135
+#: mod/network.php:580 mod/content.php:135
 #, php-format
 msgid "Group: %s"
 msgstr ""
 
-#: mod/network.php:596
-#, php-format
-msgid "Contact: %s"
-msgstr ""
-
-#: mod/network.php:600
+#: mod/network.php:608
 msgid "Private messages to this person are at risk of public disclosure."
 msgstr "Privéberichten naar deze persoon kunnen openbaar gemaakt worden."
 
-#: mod/network.php:605
+#: mod/network.php:613
 msgid "Invalid contact."
 msgstr "Ongeldig contact."
 
-#: mod/allfriends.php:45
+#: mod/allfriends.php:43
 msgid "No friends to display."
 msgstr "Geen vrienden om te laten zien."
 
-#: mod/allfriends.php:79 mod/common.php:122
-msgid "Forum"
-msgstr ""
-
-#: mod/allfriends.php:92
-#, php-format
-msgid "Friends of %s"
-msgstr "Vrienden van %s"
-
 #: mod/events.php:71 mod/events.php:73
 msgid "Event can not end before it has started."
 msgstr ""
@@ -3338,31 +3368,31 @@ msgstr ""
 msgid "Sat"
 msgstr ""
 
-#: mod/events.php:208 mod/settings.php:936 include/text.php:1267
+#: mod/events.php:208 mod/settings.php:948 include/text.php:1274
 msgid "Sunday"
 msgstr "Zondag"
 
-#: mod/events.php:209 mod/settings.php:936 include/text.php:1267
+#: mod/events.php:209 mod/settings.php:948 include/text.php:1274
 msgid "Monday"
 msgstr "Maandag"
 
-#: mod/events.php:210 include/text.php:1267
+#: mod/events.php:210 include/text.php:1274
 msgid "Tuesday"
 msgstr "Dinsdag"
 
-#: mod/events.php:211 include/text.php:1267
+#: mod/events.php:211 include/text.php:1274
 msgid "Wednesday"
 msgstr "Woensdag"
 
-#: mod/events.php:212 include/text.php:1267
+#: mod/events.php:212 include/text.php:1274
 msgid "Thursday"
 msgstr "Donderdag"
 
-#: mod/events.php:213 include/text.php:1267
+#: mod/events.php:213 include/text.php:1274
 msgid "Friday"
 msgstr "Vrijdag"
 
-#: mod/events.php:214 include/text.php:1267
+#: mod/events.php:214 include/text.php:1274
 msgid "Saturday"
 msgstr "Zaterdag"
 
@@ -3382,7 +3412,7 @@ msgstr ""
 msgid "Apr"
 msgstr ""
 
-#: mod/events.php:219 mod/events.php:231 include/text.php:1271
+#: mod/events.php:219 mod/events.php:231 include/text.php:1278
 msgid "May"
 msgstr "Mei"
 
@@ -3414,47 +3444,47 @@ msgstr ""
 msgid "Dec"
 msgstr ""
 
-#: mod/events.php:227 include/text.php:1271
+#: mod/events.php:227 include/text.php:1278
 msgid "January"
 msgstr "Januari"
 
-#: mod/events.php:228 include/text.php:1271
+#: mod/events.php:228 include/text.php:1278
 msgid "February"
 msgstr "Februari"
 
-#: mod/events.php:229 include/text.php:1271
+#: mod/events.php:229 include/text.php:1278
 msgid "March"
 msgstr "Maart"
 
-#: mod/events.php:230 include/text.php:1271
+#: mod/events.php:230 include/text.php:1278
 msgid "April"
 msgstr "April"
 
-#: mod/events.php:232 include/text.php:1271
+#: mod/events.php:232 include/text.php:1278
 msgid "June"
 msgstr "Juni"
 
-#: mod/events.php:233 include/text.php:1271
+#: mod/events.php:233 include/text.php:1278
 msgid "July"
 msgstr "Juli"
 
-#: mod/events.php:234 include/text.php:1271
+#: mod/events.php:234 include/text.php:1278
 msgid "August"
 msgstr "Augustus"
 
-#: mod/events.php:235 include/text.php:1271
+#: mod/events.php:235 include/text.php:1278
 msgid "September"
 msgstr "September"
 
-#: mod/events.php:236 include/text.php:1271
+#: mod/events.php:236 include/text.php:1278
 msgid "October"
 msgstr "Oktober"
 
-#: mod/events.php:237 include/text.php:1271
+#: mod/events.php:237 include/text.php:1278
 msgid "November"
 msgstr "November"
 
-#: mod/events.php:238 include/text.php:1271
+#: mod/events.php:238 include/text.php:1278
 msgid "December"
 msgstr "December"
 
@@ -3482,11 +3512,11 @@ msgstr "l j F"
 msgid "Edit event"
 msgstr "Gebeurtenis bewerken"
 
-#: mod/events.php:421 include/text.php:1714 include/text.php:1721
+#: mod/events.php:421 include/text.php:1721 include/text.php:1728
 msgid "link to source"
 msgstr "Verwijzing naar bron"
 
-#: mod/events.php:456 include/identity.php:669 include/nav.php:79
+#: mod/events.php:456 include/identity.php:722 include/nav.php:79
 #: include/nav.php:140 view/theme/diabook/theme.php:127
 msgid "Events"
 msgstr "Gebeurtenissen"
@@ -3499,7 +3529,7 @@ msgstr "Maak een nieuwe gebeurtenis"
 msgid "Previous"
 msgstr "Vorige"
 
-#: mod/events.php:459 mod/install.php:212
+#: mod/events.php:459 mod/install.php:220
 msgid "Next"
 msgstr "Volgende"
 
@@ -3543,9 +3573,9 @@ msgstr "Titel:"
 msgid "Share this event"
 msgstr "Deel deze gebeurtenis"
 
-#: mod/events.php:572 mod/content.php:721 mod/editpost.php:144
-#: mod/photos.php:1623 mod/photos.php:1671 mod/photos.php:1759
-#: object/Item.php:719 include/conversation.php:1217
+#: mod/events.php:572 mod/content.php:721 mod/editpost.php:145
+#: mod/photos.php:1631 mod/photos.php:1679 mod/photos.php:1767
+#: object/Item.php:719 include/conversation.php:1216
 msgid "Preview"
 msgstr "Voorvertoning"
 
@@ -3560,7 +3590,7 @@ msgid ""
 "code or the translation of Friendica. Thank you all!"
 msgstr ""
 
-#: mod/content.php:439 mod/content.php:742 mod/photos.php:1714
+#: mod/content.php:439 mod/content.php:742 mod/photos.php:1722
 #: object/Item.php:133 include/conversation.php:634
 msgid "Select"
 msgstr "Kies"
@@ -3589,22 +3619,23 @@ msgstr[0] "%d reactie"
 msgstr[1] "%d reacties"
 
 #: mod/content.php:607 object/Item.php:421 object/Item.php:434
-#: include/text.php:1992
+#: include/text.php:1997
 msgid "comment"
 msgid_plural "comments"
 msgstr[0] "reactie"
 msgstr[1] "reacties"
 
-#: mod/content.php:608 boot.php:773 object/Item.php:422
-#: include/contact_widgets.php:205 include/items.php:5214
+#: mod/content.php:608 boot.php:863 object/Item.php:422
+#: include/contact_widgets.php:242 include/forums.php:110
+#: include/items.php:5184 view/theme/vier/theme.php:264
 msgid "show more"
 msgstr "toon meer"
 
-#: mod/content.php:622 mod/photos.php:1410 object/Item.php:117
+#: mod/content.php:622 mod/photos.php:1418 object/Item.php:117
 msgid "Private Message"
 msgstr "Privébericht"
 
-#: mod/content.php:686 mod/photos.php:1599 object/Item.php:253
+#: mod/content.php:686 mod/photos.php:1607 object/Item.php:253
 msgid "I like this (toggle)"
 msgstr "Vind ik leuk"
 
@@ -3612,7 +3643,7 @@ msgstr "Vind ik leuk"
 msgid "like"
 msgstr "leuk"
 
-#: mod/content.php:687 mod/photos.php:1600 object/Item.php:254
+#: mod/content.php:687 mod/photos.php:1608 object/Item.php:254
 msgid "I don't like this (toggle)"
 msgstr "Vind ik niet leuk"
 
@@ -3628,13 +3659,13 @@ msgstr "Delen"
 msgid "share"
 msgstr "Delen"
 
-#: mod/content.php:709 mod/photos.php:1619 mod/photos.php:1667
-#: mod/photos.php:1755 object/Item.php:707
+#: mod/content.php:709 mod/photos.php:1627 mod/photos.php:1675
+#: mod/photos.php:1763 object/Item.php:707
 msgid "This is you"
 msgstr "Dit ben jij"
 
-#: mod/content.php:711 mod/photos.php:1621 mod/photos.php:1669
-#: mod/photos.php:1757 boot.php:772 object/Item.php:393 object/Item.php:709
+#: mod/content.php:711 mod/photos.php:1629 mod/photos.php:1677
+#: mod/photos.php:1765 boot.php:862 object/Item.php:393 object/Item.php:709
 msgid "Comment"
 msgstr "Reacties"
 
@@ -3670,7 +3701,7 @@ msgstr "Link"
 msgid "Video"
 msgstr "Video"
 
-#: mod/content.php:730 mod/settings.php:710 object/Item.php:122
+#: mod/content.php:730 mod/settings.php:721 object/Item.php:122
 #: object/Item.php:124
 msgid "Edit"
 msgstr "Bewerken"
@@ -3725,105 +3756,105 @@ msgstr "Dit zal je account volledig verwijderen. Dit kan niet hersteld worden al
 msgid "Please enter your password for verification:"
 msgstr "Voer je wachtwoord in voor verificatie:"
 
-#: mod/install.php:120
+#: mod/install.php:128
 msgid "Friendica Communications Server - Setup"
 msgstr ""
 
-#: mod/install.php:126
+#: mod/install.php:134
 msgid "Could not connect to database."
 msgstr "Kon geen toegang krijgen tot de database."
 
-#: mod/install.php:130
+#: mod/install.php:138
 msgid "Could not create table."
 msgstr "Kon tabel niet aanmaken."
 
-#: mod/install.php:136
+#: mod/install.php:144
 msgid "Your Friendica site database has been installed."
 msgstr "De database van je Friendica-website is geïnstalleerd."
 
-#: mod/install.php:141
+#: mod/install.php:149
 msgid ""
 "You may need to import the file \"database.sql\" manually using phpmyadmin "
 "or mysql."
 msgstr "Het kan nodig zijn om het bestand \"database.sql\" manueel te importeren met phpmyadmin of mysql."
 
-#: mod/install.php:142 mod/install.php:211 mod/install.php:569
+#: mod/install.php:150 mod/install.php:219 mod/install.php:577
 msgid "Please see the file \"INSTALL.txt\"."
 msgstr "Zie het bestand \"INSTALL.txt\"."
 
-#: mod/install.php:154
+#: mod/install.php:162
 msgid "Database already in use."
 msgstr ""
 
-#: mod/install.php:208
+#: mod/install.php:216
 msgid "System check"
 msgstr "Systeemcontrole"
 
-#: mod/install.php:213
+#: mod/install.php:221
 msgid "Check again"
 msgstr "Controleer opnieuw"
 
-#: mod/install.php:232
+#: mod/install.php:240
 msgid "Database connection"
 msgstr "Verbinding met database"
 
-#: mod/install.php:233
+#: mod/install.php:241
 msgid ""
 "In order to install Friendica we need to know how to connect to your "
 "database."
 msgstr "Om Friendica te kunnen installeren moet ik weten hoe ik jouw database kan bereiken."
 
-#: mod/install.php:234
+#: mod/install.php:242
 msgid ""
 "Please contact your hosting provider or site administrator if you have "
 "questions about these settings."
 msgstr "Neem contact op met jouw hostingprovider of websitebeheerder, wanneer je vragen hebt over deze instellingen. "
 
-#: mod/install.php:235
+#: mod/install.php:243
 msgid ""
 "The database you specify below should already exist. If it does not, please "
 "create it before continuing."
 msgstr "De database die je hier opgeeft zou al moeten bestaan. Maak anders de database aan voordat je verder gaat."
 
-#: mod/install.php:239
+#: mod/install.php:247
 msgid "Database Server Name"
 msgstr "Servernaam database"
 
-#: mod/install.php:240
+#: mod/install.php:248
 msgid "Database Login Name"
 msgstr "Gebruikersnaam database"
 
-#: mod/install.php:241
+#: mod/install.php:249
 msgid "Database Login Password"
 msgstr "Wachtwoord database"
 
-#: mod/install.php:242
+#: mod/install.php:250
 msgid "Database Name"
 msgstr "Naam database"
 
-#: mod/install.php:243 mod/install.php:282
+#: mod/install.php:251 mod/install.php:290
 msgid "Site administrator email address"
 msgstr "E-mailadres van de websitebeheerder"
 
-#: mod/install.php:243 mod/install.php:282
+#: mod/install.php:251 mod/install.php:290
 msgid ""
 "Your account email address must match this in order to use the web admin "
 "panel."
 msgstr "Het e-mailadres van je account moet hiermee overeenkomen om het administratiepaneel te kunnen gebruiken."
 
-#: mod/install.php:247 mod/install.php:285
+#: mod/install.php:255 mod/install.php:293
 msgid "Please select a default timezone for your website"
 msgstr "Selecteer een standaard tijdzone voor uw website"
 
-#: mod/install.php:272
+#: mod/install.php:280
 msgid "Site settings"
 msgstr "Website-instellingen"
 
-#: mod/install.php:326
+#: mod/install.php:334
 msgid "Could not find a command line version of PHP in the web server PATH."
 msgstr "Kan geen command-line-versie van PHP vinden in het PATH van de webserver."
 
-#: mod/install.php:327
+#: mod/install.php:335
 msgid ""
 "If you don't have a command line version of PHP installed on server, you "
 "will not be able to run background polling via cron. See <a "
@@ -3831,216 +3862,216 @@ msgid ""
 "up-the-poller'>'Setup the poller'</a>"
 msgstr ""
 
-#: mod/install.php:331
+#: mod/install.php:339
 msgid "PHP executable path"
 msgstr "PATH van het PHP commando"
 
-#: mod/install.php:331
+#: mod/install.php:339
 msgid ""
 "Enter full path to php executable. You can leave this blank to continue the "
 "installation."
 msgstr "Vul het volledige path in naar het php programma. Je kunt dit blanco laten om de installatie verder te zetten."
 
-#: mod/install.php:336
+#: mod/install.php:344
 msgid "Command line PHP"
 msgstr "PHP-opdrachtregel"
 
-#: mod/install.php:345
+#: mod/install.php:353
 msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
 msgstr ""
 
-#: mod/install.php:346
+#: mod/install.php:354
 msgid "Found PHP version: "
 msgstr "Gevonden PHP versie:"
 
-#: mod/install.php:348
+#: mod/install.php:356
 msgid "PHP cli binary"
 msgstr ""
 
-#: mod/install.php:359
+#: mod/install.php:367
 msgid ""
 "The command line version of PHP on your system does not have "
 "\"register_argc_argv\" enabled."
 msgstr "De command-line versie van PHP op jouw systeem heeft \"register_argc_argv\" niet geactiveerd."
 
-#: mod/install.php:360
+#: mod/install.php:368
 msgid "This is required for message delivery to work."
 msgstr "Dit is nodig om het verzenden van berichten mogelijk te maken."
 
-#: mod/install.php:362
+#: mod/install.php:370
 msgid "PHP register_argc_argv"
 msgstr "PHP register_argc_argv"
 
-#: mod/install.php:383
+#: mod/install.php:391
 msgid ""
 "Error: the \"openssl_pkey_new\" function on this system is not able to "
 "generate encryption keys"
 msgstr ""
 
-#: mod/install.php:384
+#: mod/install.php:392
 msgid ""
 "If running under Windows, please see "
 "\"http://www.php.net/manual/en/openssl.installation.php\"."
 msgstr "Zie \"http://www.php.net/manual/en/openssl.installation.php\" wanneer u Friendica onder Windows draait."
 
-#: mod/install.php:386
+#: mod/install.php:394
 msgid "Generate encryption keys"
 msgstr ""
 
-#: mod/install.php:393
+#: mod/install.php:401
 msgid "libCurl PHP module"
 msgstr "libCurl PHP module"
 
-#: mod/install.php:394
+#: mod/install.php:402
 msgid "GD graphics PHP module"
 msgstr "GD graphics PHP module"
 
-#: mod/install.php:395
+#: mod/install.php:403
 msgid "OpenSSL PHP module"
 msgstr "OpenSSL PHP module"
 
-#: mod/install.php:396
+#: mod/install.php:404
 msgid "mysqli PHP module"
 msgstr "mysqli PHP module"
 
-#: mod/install.php:397
+#: mod/install.php:405
 msgid "mb_string PHP module"
 msgstr "mb_string PHP module"
 
-#: mod/install.php:398
+#: mod/install.php:406
 msgid "mcrypt PHP module"
 msgstr ""
 
-#: mod/install.php:403 mod/install.php:405
+#: mod/install.php:411 mod/install.php:413
 msgid "Apache mod_rewrite module"
 msgstr "Apache mod_rewrite module"
 
-#: mod/install.php:403
+#: mod/install.php:411
 msgid ""
 "Error: Apache webserver mod-rewrite module is required but not installed."
 msgstr "Fout: Apache-module mod-rewrite is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:411
+#: mod/install.php:419
 msgid "Error: libCURL PHP module required but not installed."
 msgstr "Fout: PHP-module libCURL is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:415
+#: mod/install.php:423
 msgid ""
 "Error: GD graphics PHP module with JPEG support required but not installed."
 msgstr "Fout: PHP-module GD graphics met JPEG support is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:419
+#: mod/install.php:427
 msgid "Error: openssl PHP module required but not installed."
 msgstr "Fout: PHP-module openssl is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:423
+#: mod/install.php:431
 msgid "Error: mysqli PHP module required but not installed."
 msgstr "Fout: PHP-module mysqli is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:427
+#: mod/install.php:435
 msgid "Error: mb_string PHP module required but not installed."
 msgstr "Fout: PHP-module mb_string is vereist, maar niet geïnstalleerd."
 
-#: mod/install.php:431
+#: mod/install.php:439
 msgid "Error: mcrypt PHP module required but not installed."
 msgstr ""
 
-#: mod/install.php:443
+#: mod/install.php:451
 msgid ""
 "Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 "
 "encryption layer."
 msgstr ""
 
-#: mod/install.php:445
+#: mod/install.php:453
 msgid "mcrypt_create_iv() function"
 msgstr ""
 
-#: mod/install.php:461
+#: mod/install.php:469
 msgid ""
 "The web installer needs to be able to create a file called \".htconfig.php\""
 " in the top folder of your web server and it is unable to do so."
 msgstr "Het installatieprogramma moet een bestand \".htconfig.php\" in de bovenste map van je webserver aanmaken, maar kan dit niet doen."
 
-#: mod/install.php:462
+#: mod/install.php:470
 msgid ""
 "This is most often a permission setting, as the web server may not be able "
 "to write files in your folder - even if you can."
 msgstr "Dit is meestal een permissieprobleem, omdat de webserver niet in staat is om in deze map bestanden weg te schrijven - ook al kun je dit zelf wel."
 
-#: mod/install.php:463
+#: mod/install.php:471
 msgid ""
 "At the end of this procedure, we will give you a text to save in a file "
 "named .htconfig.php in your Friendica top folder."
 msgstr "Op het einde van deze procedure zal ik je een tekst geven om te bewaren in een bestand .htconfig.php in je hoogste Friendica map."
 
-#: mod/install.php:464
+#: mod/install.php:472
 msgid ""
 "You can alternatively skip this procedure and perform a manual installation."
 " Please see the file \"INSTALL.txt\" for instructions."
 msgstr "Je kunt ook deze procedure overslaan, en een manuele installatie uitvoeren. Lees het bestand \"INSTALL.txt\" voor instructies."
 
-#: mod/install.php:467
+#: mod/install.php:475
 msgid ".htconfig.php is writable"
 msgstr ".htconfig.php is schrijfbaar"
 
-#: mod/install.php:477
+#: mod/install.php:485
 msgid ""
 "Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
 "compiles templates to PHP to speed up rendering."
 msgstr "Friendica gebruikt het Smarty3 sjabloon systeem om zijn webpagina's weer te geven. Smarty3 compileert sjablonen naar PHP om de weergave te versnellen."
 
-#: mod/install.php:478
+#: mod/install.php:486
 msgid ""
 "In order to store these compiled templates, the web server needs to have "
 "write access to the directory view/smarty3/ under the Friendica top level "
 "folder."
 msgstr "Om deze gecompileerde sjablonen op te slaan moet de webserver schrijftoegang hebben tot de folder view/smarty3, t.o.v. van de hoogste folder van je Friendica-installatie."
 
-#: mod/install.php:479
+#: mod/install.php:487
 msgid ""
 "Please ensure that the user that your web server runs as (e.g. www-data) has"
 " write access to this folder."
 msgstr "Zorg ervoor dat de gebruiker waaronder je webserver runt (bijv. www-data) schrijf-toegang heeft tot deze map."
 
-#: mod/install.php:480
+#: mod/install.php:488
 msgid ""
 "Note: as a security measure, you should give the web server write access to "
 "view/smarty3/ only--not the template files (.tpl) that it contains."
 msgstr "Opmerking: voor een goede beveiliging zou je de webserver alleen schrijf-toegang moeten geven voor de map view/smarty3 -- niet voor de template bestanden (.tpl) die in die map zitten."
 
-#: mod/install.php:483
+#: mod/install.php:491
 msgid "view/smarty3 is writable"
 msgstr "view/smarty3 is schrijfbaar"
 
-#: mod/install.php:499
+#: mod/install.php:507
 msgid ""
 "Url rewrite in .htaccess is not working. Check your server configuration."
 msgstr ""
 
-#: mod/install.php:501
+#: mod/install.php:509
 msgid "Url rewrite is working"
 msgstr ""
 
-#: mod/install.php:518
+#: mod/install.php:526
 msgid "ImageMagick PHP extension is installed"
 msgstr ""
 
-#: mod/install.php:520
+#: mod/install.php:528
 msgid "ImageMagick supports GIF"
 msgstr ""
 
-#: mod/install.php:528
+#: mod/install.php:536
 msgid ""
 "The database configuration file \".htconfig.php\" could not be written. "
 "Please use the enclosed text to create a configuration file in your web "
 "server root."
 msgstr "Het databaseconfiguratiebestand \".htconfig.php\" kon niet worden weggeschreven. Je kunt de bijgevoegde tekst gebruiken om in een configuratiebestand aan te maken in de hoogste map van je webserver."
 
-#: mod/install.php:567
+#: mod/install.php:575
 msgid "<h1>What next</h1>"
 msgstr "<h1>Wat nu</h1>"
 
-#: mod/install.php:568
+#: mod/install.php:576
 msgid ""
 "IMPORTANT: You will need to [manually] setup a scheduled task for the "
 "poller."
@@ -4066,19 +4097,19 @@ msgid ""
 "your site allow private mail from unknown senders."
 msgstr "Als je wilt dat %s antwoordt moet je nakijken dat de privacy-instellingen op jouw website privéberichten van onbekende afzenders toelaat."
 
-#: mod/help.php:31
+#: mod/help.php:41
 msgid "Help:"
 msgstr "Help:"
 
-#: mod/help.php:36 include/nav.php:113 view/theme/vier/theme.php:273
+#: mod/help.php:47 include/nav.php:113 view/theme/vier/theme.php:302
 msgid "Help"
 msgstr "Help"
 
-#: mod/help.php:42 mod/p.php:16 mod/p.php:25 index.php:269
+#: mod/help.php:53 mod/p.php:16 mod/p.php:25 index.php:270
 msgid "Not Found"
 msgstr "Niet gevonden"
 
-#: mod/help.php:45 index.php:272
+#: mod/help.php:56 index.php:273
 msgid "Page not found."
 msgstr "Pagina niet gevonden"
 
@@ -4113,11 +4144,11 @@ msgstr "Uploaden van bestand mislukt."
 msgid "No keywords to match. Please add keywords to your default profile."
 msgstr "Geen sleutelwoorden om te zoeken. Voeg sleutelwoorden toe aan je standaard profiel."
 
-#: mod/match.php:83
+#: mod/match.php:84
 msgid "is interested in:"
 msgstr "Is geïnteresseerd in:"
 
-#: mod/match.php:97
+#: mod/match.php:98
 msgid "Profile Match"
 msgstr "Profielmatch"
 
@@ -4134,727 +4165,715 @@ msgstr "Niet beschikbaar"
 msgid "Community"
 msgstr "Website"
 
-#: mod/community.php:62 mod/community.php:71 mod/search.php:218
+#: mod/community.php:62 mod/community.php:71 mod/search.php:228
 msgid "No results."
 msgstr "Geen resultaten."
 
-#: mod/settings.php:34 mod/photos.php:109
+#: mod/settings.php:34 mod/photos.php:117
 msgid "everybody"
 msgstr "iedereen"
 
-#: mod/settings.php:47
-msgid "Additional features"
-msgstr "Extra functies"
-
-#: mod/settings.php:53
+#: mod/settings.php:58
 msgid "Display"
 msgstr "Weergave"
 
-#: mod/settings.php:60 mod/settings.php:853
+#: mod/settings.php:65 mod/settings.php:864
 msgid "Social Networks"
 msgstr "Sociale netwerken"
 
-#: mod/settings.php:72 include/nav.php:180
+#: mod/settings.php:79 include/nav.php:180
 msgid "Delegations"
 msgstr ""
 
-#: mod/settings.php:78
+#: mod/settings.php:86
 msgid "Connected apps"
 msgstr "Verbonden applicaties"
 
-#: mod/settings.php:84 mod/uexport.php:85
+#: mod/settings.php:93 mod/uexport.php:85
 msgid "Export personal data"
 msgstr "Persoonlijke gegevens exporteren"
 
-#: mod/settings.php:90
+#: mod/settings.php:100
 msgid "Remove account"
 msgstr "Account verwijderen"
 
-#: mod/settings.php:143
+#: mod/settings.php:153
 msgid "Missing some important data!"
 msgstr "Een belangrijk gegeven ontbreekt!"
 
-#: mod/settings.php:256
+#: mod/settings.php:266
 msgid "Failed to connect with email account using the settings provided."
 msgstr "Ik kon geen verbinding maken met het e-mail account met de gegeven instellingen."
 
-#: mod/settings.php:261
+#: mod/settings.php:271
 msgid "Email settings updated."
 msgstr "E-mail instellingen bijgewerkt.."
 
-#: mod/settings.php:276
+#: mod/settings.php:286
 msgid "Features updated"
 msgstr "Functies bijgewerkt"
 
-#: mod/settings.php:341
+#: mod/settings.php:353
 msgid "Relocate message has been send to your contacts"
 msgstr ""
 
-#: mod/settings.php:355 include/user.php:39
+#: mod/settings.php:367 include/user.php:39
 msgid "Passwords do not match. Password unchanged."
 msgstr "Wachtwoorden komen niet overeen. Wachtwoord niet gewijzigd."
 
-#: mod/settings.php:360
+#: mod/settings.php:372
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr "Lege wachtwoorden zijn niet toegelaten. Wachtwoord niet gewijzigd."
 
-#: mod/settings.php:368
+#: mod/settings.php:380
 msgid "Wrong password."
 msgstr "Verkeerd wachtwoord."
 
-#: mod/settings.php:379
+#: mod/settings.php:391
 msgid "Password changed."
 msgstr "Wachtwoord gewijzigd."
 
-#: mod/settings.php:381
+#: mod/settings.php:393
 msgid "Password update failed. Please try again."
 msgstr "Wachtwoord-)wijziging mislukt. Probeer opnieuw."
 
-#: mod/settings.php:450
+#: mod/settings.php:462
 msgid " Please use a shorter name."
 msgstr "Gebruik een kortere naam."
 
-#: mod/settings.php:452
+#: mod/settings.php:464
 msgid " Name too short."
 msgstr "Naam te kort."
 
-#: mod/settings.php:461
+#: mod/settings.php:473
 msgid "Wrong Password"
 msgstr "Verkeerd wachtwoord"
 
-#: mod/settings.php:466
+#: mod/settings.php:478
 msgid " Not valid email."
 msgstr "Geen geldig e-mailadres."
 
-#: mod/settings.php:472
+#: mod/settings.php:484
 msgid " Cannot change to that email."
 msgstr "Kan niet veranderen naar die e-mail."
 
-#: mod/settings.php:528
+#: mod/settings.php:540
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr "Privéforum/-groep heeft geen privacyrechten. De standaard privacygroep wordt gebruikt."
 
-#: mod/settings.php:532
+#: mod/settings.php:544
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr "Privéforum/-groep heeft geen privacyrechten en geen standaard privacygroep."
 
-#: mod/settings.php:571
+#: mod/settings.php:583
 msgid "Settings updated."
 msgstr "Instellingen bijgewerkt."
 
-#: mod/settings.php:647 mod/settings.php:673 mod/settings.php:709
+#: mod/settings.php:658 mod/settings.php:684 mod/settings.php:720
 msgid "Add application"
 msgstr "Toepassing toevoegen"
 
-#: mod/settings.php:651 mod/settings.php:677
+#: mod/settings.php:662 mod/settings.php:688
 msgid "Consumer Key"
 msgstr "Gebruikerssleutel"
 
-#: mod/settings.php:652 mod/settings.php:678
+#: mod/settings.php:663 mod/settings.php:689
 msgid "Consumer Secret"
 msgstr "Gebruikersgeheim"
 
-#: mod/settings.php:653 mod/settings.php:679
+#: mod/settings.php:664 mod/settings.php:690
 msgid "Redirect"
 msgstr "Doorverwijzing"
 
-#: mod/settings.php:654 mod/settings.php:680
+#: mod/settings.php:665 mod/settings.php:691
 msgid "Icon url"
 msgstr "URL pictogram"
 
-#: mod/settings.php:665
+#: mod/settings.php:676
 msgid "You can't edit this application."
 msgstr "Je kunt deze toepassing niet wijzigen."
 
-#: mod/settings.php:708
+#: mod/settings.php:719
 msgid "Connected Apps"
 msgstr "Verbonden applicaties"
 
-#: mod/settings.php:712
+#: mod/settings.php:723
 msgid "Client key starts with"
 msgstr ""
 
-#: mod/settings.php:713
+#: mod/settings.php:724
 msgid "No name"
 msgstr "Geen naam"
 
-#: mod/settings.php:714
+#: mod/settings.php:725
 msgid "Remove authorization"
 msgstr "Verwijder authorisatie"
 
-#: mod/settings.php:726
+#: mod/settings.php:737
 msgid "No Plugin settings configured"
 msgstr ""
 
-#: mod/settings.php:734
+#: mod/settings.php:745
 msgid "Plugin Settings"
 msgstr "Plugin Instellingen"
 
-#: mod/settings.php:748
-msgid "Off"
-msgstr "Uit"
-
-#: mod/settings.php:748
-msgid "On"
-msgstr "Aan"
-
-#: mod/settings.php:756
+#: mod/settings.php:767
 msgid "Additional Features"
 msgstr "Extra functies"
 
-#: mod/settings.php:766 mod/settings.php:770
+#: mod/settings.php:777 mod/settings.php:781
 msgid "General Social Media Settings"
 msgstr ""
 
-#: mod/settings.php:776
+#: mod/settings.php:787
 msgid "Disable intelligent shortening"
 msgstr ""
 
-#: mod/settings.php:778
+#: mod/settings.php:789
 msgid ""
 "Normally the system tries to find the best link to add to shortened posts. "
 "If this option is enabled then every shortened post will always point to the"
 " original friendica post."
 msgstr ""
 
-#: mod/settings.php:784
+#: mod/settings.php:795
 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
 msgstr ""
 
-#: mod/settings.php:786
+#: mod/settings.php:797
 msgid ""
 "If you receive a message from an unknown OStatus user, this option decides "
 "what to do. If it is checked, a new contact will be created for every "
 "unknown user."
 msgstr ""
 
-#: mod/settings.php:795
+#: mod/settings.php:806
 msgid "Your legacy GNU Social account"
 msgstr ""
 
-#: mod/settings.php:797
+#: mod/settings.php:808
 msgid ""
 "If you enter your old GNU Social/Statusnet account name here (in the format "
 "user@domain.tld), your contacts will be added automatically. The field will "
 "be emptied when done."
 msgstr ""
 
-#: mod/settings.php:800
+#: mod/settings.php:811
 msgid "Repair OStatus subscriptions"
 msgstr ""
 
-#: mod/settings.php:809 mod/settings.php:810
+#: mod/settings.php:820 mod/settings.php:821
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr "Ingebouwde ondersteuning voor connectiviteit met %s is %s"
 
-#: mod/settings.php:809 mod/dfrn_request.php:856
+#: mod/settings.php:820 mod/dfrn_request.php:865
 #: include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr "Diaspora"
 
-#: mod/settings.php:809 mod/settings.php:810
+#: mod/settings.php:820 mod/settings.php:821
 msgid "enabled"
 msgstr "ingeschakeld"
 
-#: mod/settings.php:809 mod/settings.php:810
+#: mod/settings.php:820 mod/settings.php:821
 msgid "disabled"
 msgstr "uitgeschakeld"
 
-#: mod/settings.php:810
+#: mod/settings.php:821
 msgid "GNU Social (OStatus)"
 msgstr ""
 
-#: mod/settings.php:846
+#: mod/settings.php:857
 msgid "Email access is disabled on this site."
 msgstr "E-mailtoegang is op deze website uitgeschakeld."
 
-#: mod/settings.php:858
+#: mod/settings.php:869
 msgid "Email/Mailbox Setup"
 msgstr "E-mail Instellen"
 
-#: mod/settings.php:859
+#: mod/settings.php:870
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr "Als je wilt communiceren met e-mail contacten via deze dienst (optioneel), moet je hier opgeven hoe ik jouw mailbox kan bereiken."
 
-#: mod/settings.php:860
+#: mod/settings.php:871
 msgid "Last successful email check:"
 msgstr "Laatste succesvolle e-mail controle:"
 
-#: mod/settings.php:862
+#: mod/settings.php:873
 msgid "IMAP server name:"
 msgstr "IMAP server naam:"
 
-#: mod/settings.php:863
+#: mod/settings.php:874
 msgid "IMAP port:"
 msgstr "IMAP poort:"
 
-#: mod/settings.php:864
+#: mod/settings.php:875
 msgid "Security:"
 msgstr "Beveiliging:"
 
-#: mod/settings.php:864 mod/settings.php:869
+#: mod/settings.php:875 mod/settings.php:880
 msgid "None"
 msgstr "Geen"
 
-#: mod/settings.php:865
+#: mod/settings.php:876
 msgid "Email login name:"
 msgstr "E-mail login naam:"
 
-#: mod/settings.php:866
+#: mod/settings.php:877
 msgid "Email password:"
 msgstr "E-mail wachtwoord:"
 
-#: mod/settings.php:867
+#: mod/settings.php:878
 msgid "Reply-to address:"
 msgstr "Antwoord adres:"
 
-#: mod/settings.php:868
+#: mod/settings.php:879
 msgid "Send public posts to all email contacts:"
 msgstr "Openbare posts naar alle e-mail contacten versturen:"
 
-#: mod/settings.php:869
+#: mod/settings.php:880
 msgid "Action after import:"
 msgstr "Actie na importeren:"
 
-#: mod/settings.php:869
+#: mod/settings.php:880
 msgid "Mark as seen"
 msgstr "Als 'gelezen' markeren"
 
-#: mod/settings.php:869
+#: mod/settings.php:880
 msgid "Move to folder"
 msgstr "Naar map verplaatsen"
 
-#: mod/settings.php:870
+#: mod/settings.php:881
 msgid "Move to folder:"
 msgstr "Verplaatsen naar map:"
 
-#: mod/settings.php:955
+#: mod/settings.php:967
 msgid "Display Settings"
 msgstr "Scherminstellingen"
 
-#: mod/settings.php:961 mod/settings.php:979
+#: mod/settings.php:973 mod/settings.php:991
 msgid "Display Theme:"
 msgstr "Schermthema:"
 
-#: mod/settings.php:962
+#: mod/settings.php:974
 msgid "Mobile Theme:"
 msgstr "Mobiel thema:"
 
-#: mod/settings.php:963
+#: mod/settings.php:975
 msgid "Update browser every xx seconds"
 msgstr "Browser elke xx seconden verversen"
 
-#: mod/settings.php:963
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimum 10 seconden, geen maximum"
+#: mod/settings.php:975
+msgid "Minimum of 10 seconds. Enter -1 to disable it."
+msgstr ""
 
-#: mod/settings.php:964
+#: mod/settings.php:976
 msgid "Number of items to display per page:"
 msgstr "Aantal items te tonen per pagina:"
 
-#: mod/settings.php:964 mod/settings.php:965
+#: mod/settings.php:976 mod/settings.php:977
 msgid "Maximum of 100 items"
 msgstr "Maximum 100 items"
 
-#: mod/settings.php:965
+#: mod/settings.php:977
 msgid "Number of items to display per page when viewed from mobile device:"
 msgstr "Aantal items per pagina als je een mobiel toestel gebruikt:"
 
-#: mod/settings.php:966
+#: mod/settings.php:978
 msgid "Don't show emoticons"
 msgstr "Emoticons niet tonen"
 
-#: mod/settings.php:967
+#: mod/settings.php:979
 msgid "Calendar"
 msgstr ""
 
-#: mod/settings.php:968
+#: mod/settings.php:980
 msgid "Beginning of week:"
 msgstr ""
 
-#: mod/settings.php:969
+#: mod/settings.php:981
 msgid "Don't show notices"
 msgstr ""
 
-#: mod/settings.php:970
+#: mod/settings.php:982
 msgid "Infinite scroll"
 msgstr "Oneindig scrollen"
 
-#: mod/settings.php:971
+#: mod/settings.php:983
 msgid "Automatic updates only at the top of the network page"
 msgstr ""
 
-#: mod/settings.php:973 view/theme/cleanzero/config.php:82
+#: mod/settings.php:985 view/theme/cleanzero/config.php:82
 #: view/theme/dispy/config.php:72 view/theme/quattro/config.php:66
 #: view/theme/diabook/config.php:150 view/theme/vier/config.php:109
 #: view/theme/duepuntozero/config.php:61
 msgid "Theme settings"
 msgstr "Thema-instellingen"
 
-#: mod/settings.php:1050
+#: mod/settings.php:1062
 msgid "User Types"
 msgstr "Gebruikerstypes"
 
-#: mod/settings.php:1051
+#: mod/settings.php:1063
 msgid "Community Types"
 msgstr "Forum/groepstypes"
 
-#: mod/settings.php:1052
+#: mod/settings.php:1064
 msgid "Normal Account Page"
 msgstr "Normale accountpagina"
 
-#: mod/settings.php:1053
+#: mod/settings.php:1065
 msgid "This account is a normal personal profile"
 msgstr "Deze account is een normaal persoonlijk profiel"
 
-#: mod/settings.php:1056
+#: mod/settings.php:1068
 msgid "Soapbox Page"
 msgstr "Zeepkist-pagina"
 
-#: mod/settings.php:1057
+#: mod/settings.php:1069
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr "Keur automatisch alle vriendschaps-/connectieverzoeken goed als fans met alleen recht tot lezen."
 
-#: mod/settings.php:1060
+#: mod/settings.php:1072
 msgid "Community Forum/Celebrity Account"
 msgstr "Forum/groeps- of beroemdheid-account"
 
-#: mod/settings.php:1061
+#: mod/settings.php:1073
 msgid ""
 "Automatically approve all connection/friend requests as read-write fans"
 msgstr "Keur automatisch alle vriendschaps-/connectieverzoeken goed als fans met recht tot lezen en schrijven."
 
-#: mod/settings.php:1064
+#: mod/settings.php:1076
 msgid "Automatic Friend Page"
 msgstr "Automatisch Vriendschapspagina"
 
-#: mod/settings.php:1065
+#: mod/settings.php:1077
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr "Keur automatisch alle vriendschaps-/connectieverzoeken goed als vrienden."
 
-#: mod/settings.php:1068
+#: mod/settings.php:1080
 msgid "Private Forum [Experimental]"
 msgstr "Privé-forum [experimenteel]"
 
-#: mod/settings.php:1069
+#: mod/settings.php:1081
 msgid "Private forum - approved members only"
 msgstr "Privé-forum - enkel voor goedgekeurde leden"
 
-#: mod/settings.php:1081
+#: mod/settings.php:1093
 msgid "OpenID:"
 msgstr "OpenID:"
 
-#: mod/settings.php:1081
+#: mod/settings.php:1093
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr "(Optioneel) Laat dit OpenID toe om in te loggen op deze account."
 
-#: mod/settings.php:1091
+#: mod/settings.php:1103
 msgid "Publish your default profile in your local site directory?"
 msgstr "Je standaardprofiel in je lokale gids publiceren?"
 
-#: mod/settings.php:1097
+#: mod/settings.php:1109
 msgid "Publish your default profile in the global social directory?"
 msgstr "Je standaardprofiel in de globale sociale gids publiceren?"
 
-#: mod/settings.php:1105
+#: mod/settings.php:1117
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr "Je vrienden/contacten verbergen voor bezoekers van je standaard profiel?"
 
-#: mod/settings.php:1109 include/acl_selectors.php:330
+#: mod/settings.php:1121 include/acl_selectors.php:331
 msgid "Hide your profile details from unknown viewers?"
 msgstr "Je profieldetails verbergen voor onbekende bezoekers?"
 
-#: mod/settings.php:1109
+#: mod/settings.php:1121
 msgid ""
 "If enabled, posting public messages to Diaspora and other networks isn't "
 "possible."
 msgstr ""
 
-#: mod/settings.php:1114
+#: mod/settings.php:1126
 msgid "Allow friends to post to your profile page?"
 msgstr "Vrienden toestaan om op jou profielpagina te posten?"
 
-#: mod/settings.php:1120
+#: mod/settings.php:1132
 msgid "Allow friends to tag your posts?"
 msgstr "Sta vrienden toe om jouw berichten te labelen?"
 
-#: mod/settings.php:1126
+#: mod/settings.php:1138
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr "Sta je mij toe om jou als mogelijke vriend  voor te stellen aan nieuwe leden?"
 
-#: mod/settings.php:1132
+#: mod/settings.php:1144
 msgid "Permit unknown people to send you private mail?"
 msgstr "Mogen onbekende personen jou privé berichten sturen?"
 
-#: mod/settings.php:1140
+#: mod/settings.php:1152
 msgid "Profile is <strong>not published</strong>."
 msgstr "Profiel is <strong>niet gepubliceerd</strong>."
 
-#: mod/settings.php:1148
+#: mod/settings.php:1160
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr ""
 
-#: mod/settings.php:1155
+#: mod/settings.php:1167
 msgid "Automatically expire posts after this many days:"
 msgstr "Laat berichten automatisch vervallen na zo veel dagen:"
 
-#: mod/settings.php:1155
+#: mod/settings.php:1167
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr "Berichten zullen niet vervallen indien leeg. Vervallen berichten zullen worden verwijderd."
 
-#: mod/settings.php:1156
+#: mod/settings.php:1168
 msgid "Advanced expiration settings"
 msgstr "Geavanceerde instellingen voor vervallen"
 
-#: mod/settings.php:1157
+#: mod/settings.php:1169
 msgid "Advanced Expiration"
 msgstr "Geavanceerd Verval:"
 
-#: mod/settings.php:1158
+#: mod/settings.php:1170
 msgid "Expire posts:"
 msgstr "Laat berichten vervallen:"
 
-#: mod/settings.php:1159
+#: mod/settings.php:1171
 msgid "Expire personal notes:"
 msgstr "Laat persoonlijke aantekeningen verlopen:"
 
-#: mod/settings.php:1160
+#: mod/settings.php:1172
 msgid "Expire starred posts:"
 msgstr "Laat berichten met ster verlopen"
 
-#: mod/settings.php:1161
+#: mod/settings.php:1173
 msgid "Expire photos:"
 msgstr "Laat foto's vervallen:"
 
-#: mod/settings.php:1162
+#: mod/settings.php:1174
 msgid "Only expire posts by others:"
 msgstr "Laat alleen berichten door anderen vervallen:"
 
-#: mod/settings.php:1190
+#: mod/settings.php:1202
 msgid "Account Settings"
 msgstr "Account Instellingen"
 
-#: mod/settings.php:1198
+#: mod/settings.php:1210
 msgid "Password Settings"
 msgstr "Wachtwoord Instellingen"
 
-#: mod/settings.php:1199 mod/register.php:271
+#: mod/settings.php:1211 mod/register.php:274
 msgid "New Password:"
 msgstr "Nieuw Wachtwoord:"
 
-#: mod/settings.php:1200 mod/register.php:272
+#: mod/settings.php:1212 mod/register.php:275
 msgid "Confirm:"
 msgstr "Bevestig:"
 
-#: mod/settings.php:1200
+#: mod/settings.php:1212
 msgid "Leave password fields blank unless changing"
 msgstr "Laat de wachtwoord-velden leeg, tenzij je het wilt veranderen"
 
-#: mod/settings.php:1201
+#: mod/settings.php:1213
 msgid "Current Password:"
 msgstr "Huidig wachtwoord:"
 
-#: mod/settings.php:1201 mod/settings.php:1202
+#: mod/settings.php:1213 mod/settings.php:1214
 msgid "Your current password to confirm the changes"
 msgstr "Je huidig wachtwoord om de wijzigingen te bevestigen"
 
-#: mod/settings.php:1202
+#: mod/settings.php:1214
 msgid "Password:"
 msgstr "Wachtwoord:"
 
-#: mod/settings.php:1206
+#: mod/settings.php:1218
 msgid "Basic Settings"
 msgstr "Basis Instellingen"
 
-#: mod/settings.php:1207 include/identity.php:539
+#: mod/settings.php:1219 include/identity.php:588
 msgid "Full Name:"
 msgstr "Volledige Naam:"
 
-#: mod/settings.php:1208
+#: mod/settings.php:1220
 msgid "Email Address:"
 msgstr "E-mailadres:"
 
-#: mod/settings.php:1209
+#: mod/settings.php:1221
 msgid "Your Timezone:"
 msgstr "Je Tijdzone:"
 
-#: mod/settings.php:1210
+#: mod/settings.php:1222
 msgid "Your Language:"
 msgstr ""
 
-#: mod/settings.php:1210
+#: mod/settings.php:1222
 msgid ""
 "Set the language we use to show you friendica interface and to send you "
 "emails"
 msgstr ""
 
-#: mod/settings.php:1211
+#: mod/settings.php:1223
 msgid "Default Post Location:"
 msgstr "Standaard locatie:"
 
-#: mod/settings.php:1212
+#: mod/settings.php:1224
 msgid "Use Browser Location:"
 msgstr "Gebruik Webbrowser Locatie:"
 
-#: mod/settings.php:1215
+#: mod/settings.php:1227
 msgid "Security and Privacy Settings"
 msgstr "Instellingen voor Beveiliging en Privacy"
 
-#: mod/settings.php:1217
+#: mod/settings.php:1229
 msgid "Maximum Friend Requests/Day:"
 msgstr "Maximum aantal vriendschapsverzoeken per dag:"
 
-#: mod/settings.php:1217 mod/settings.php:1247
+#: mod/settings.php:1229 mod/settings.php:1259
 msgid "(to prevent spam abuse)"
 msgstr "(om spam misbruik te voorkomen)"
 
-#: mod/settings.php:1218
+#: mod/settings.php:1230
 msgid "Default Post Permissions"
 msgstr "Standaard rechten voor nieuwe berichten"
 
-#: mod/settings.php:1219
+#: mod/settings.php:1231
 msgid "(click to open/close)"
 msgstr "(klik om te openen/sluiten)"
 
-#: mod/settings.php:1228 mod/photos.php:1191 mod/photos.php:1576
+#: mod/settings.php:1240 mod/photos.php:1199 mod/photos.php:1584
 msgid "Show to Groups"
 msgstr "Tonen aan groepen"
 
-#: mod/settings.php:1229 mod/photos.php:1192 mod/photos.php:1577
+#: mod/settings.php:1241 mod/photos.php:1200 mod/photos.php:1585
 msgid "Show to Contacts"
 msgstr "Tonen aan contacten"
 
-#: mod/settings.php:1230
+#: mod/settings.php:1242
 msgid "Default Private Post"
 msgstr "Standaard Privé Post"
 
-#: mod/settings.php:1231
+#: mod/settings.php:1243
 msgid "Default Public Post"
 msgstr "Standaard Publieke Post"
 
-#: mod/settings.php:1235
+#: mod/settings.php:1247
 msgid "Default Permissions for New Posts"
 msgstr "Standaard rechten voor nieuwe berichten"
 
-#: mod/settings.php:1247
+#: mod/settings.php:1259
 msgid "Maximum private messages per day from unknown people:"
 msgstr "Maximum aantal privé-berichten per dag van onbekende personen:"
 
-#: mod/settings.php:1250
+#: mod/settings.php:1262
 msgid "Notification Settings"
 msgstr "Notificatie Instellingen"
 
-#: mod/settings.php:1251
+#: mod/settings.php:1263
 msgid "By default post a status message when:"
 msgstr "Post automatisch een bericht op je tijdlijn wanneer:"
 
-#: mod/settings.php:1252
+#: mod/settings.php:1264
 msgid "accepting a friend request"
 msgstr "Een vriendschapsverzoek accepteren"
 
-#: mod/settings.php:1253
+#: mod/settings.php:1265
 msgid "joining a forum/community"
 msgstr "Lid worden van een groep/forum"
 
-#: mod/settings.php:1254
+#: mod/settings.php:1266
 msgid "making an <em>interesting</em> profile change"
 msgstr "Een <em>interessante</em> verandering aan je profiel"
 
-#: mod/settings.php:1255
+#: mod/settings.php:1267
 msgid "Send a notification email when:"
 msgstr "Stuur een notificatie e-mail wanneer:"
 
-#: mod/settings.php:1256
+#: mod/settings.php:1268
 msgid "You receive an introduction"
 msgstr "Je ontvangt een vriendschaps- of connectieverzoek"
 
-#: mod/settings.php:1257
+#: mod/settings.php:1269
 msgid "Your introductions are confirmed"
 msgstr "Jouw vriendschaps- of connectieverzoeken zijn bevestigd"
 
-#: mod/settings.php:1258
+#: mod/settings.php:1270
 msgid "Someone writes on your profile wall"
 msgstr "Iemand iets op je tijdlijn schrijft"
 
-#: mod/settings.php:1259
+#: mod/settings.php:1271
 msgid "Someone writes a followup comment"
 msgstr "Iemand een reactie schrijft"
 
-#: mod/settings.php:1260
+#: mod/settings.php:1272
 msgid "You receive a private message"
 msgstr "Je een privé-bericht ontvangt"
 
-#: mod/settings.php:1261
+#: mod/settings.php:1273
 msgid "You receive a friend suggestion"
 msgstr "Je een suggestie voor een vriendschap ontvangt"
 
-#: mod/settings.php:1262
+#: mod/settings.php:1274
 msgid "You are tagged in a post"
 msgstr "Je expliciet in een bericht bent genoemd"
 
-#: mod/settings.php:1263
+#: mod/settings.php:1275
 msgid "You are poked/prodded/etc. in a post"
 msgstr "Je in een bericht bent aangestoten/gepord/etc."
 
-#: mod/settings.php:1265
+#: mod/settings.php:1277
 msgid "Activate desktop notifications"
 msgstr ""
 
-#: mod/settings.php:1265
+#: mod/settings.php:1277
 msgid "Show desktop popup on new notifications"
 msgstr ""
 
-#: mod/settings.php:1267
+#: mod/settings.php:1279
 msgid "Text-only notification emails"
 msgstr ""
 
-#: mod/settings.php:1269
+#: mod/settings.php:1281
 msgid "Send text only notification emails, without the html part"
 msgstr ""
 
-#: mod/settings.php:1271
+#: mod/settings.php:1283
 msgid "Advanced Account/Page Type Settings"
 msgstr ""
 
-#: mod/settings.php:1272
+#: mod/settings.php:1284
 msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
-#: mod/settings.php:1275
+#: mod/settings.php:1287
 msgid "Relocate"
 msgstr ""
 
-#: mod/settings.php:1276
+#: mod/settings.php:1288
 msgid ""
 "If you have moved this profile from another server, and some of your "
 "contacts don't receive your updates, try pushing this button."
 msgstr ""
 
-#: mod/settings.php:1277
+#: mod/settings.php:1289
 msgid "Resend relocate message to contacts"
 msgstr ""
 
-#: mod/dfrn_request.php:95
+#: mod/dfrn_request.php:96
 msgid "This introduction has already been accepted."
 msgstr "Verzoek is al goedgekeurd"
 
-#: mod/dfrn_request.php:120 mod/dfrn_request.php:518
+#: mod/dfrn_request.php:119 mod/dfrn_request.php:516
 msgid "Profile location is not valid or does not contain profile information."
 msgstr "Profiel is ongeldig of bevat geen informatie"
 
-#: mod/dfrn_request.php:125 mod/dfrn_request.php:523
+#: mod/dfrn_request.php:124 mod/dfrn_request.php:521
 msgid "Warning: profile location has no identifiable owner name."
 msgstr "Waarschuwing: de profiellocatie heeft geen identificeerbare eigenaar."
 
-#: mod/dfrn_request.php:127 mod/dfrn_request.php:525
+#: mod/dfrn_request.php:126 mod/dfrn_request.php:523
 msgid "Warning: profile location has no profile photo."
 msgstr "Waarschuwing: Profieladres heeft geen profielfoto."
 
-#: mod/dfrn_request.php:130 mod/dfrn_request.php:528
+#: mod/dfrn_request.php:129 mod/dfrn_request.php:526
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
@@ -4898,66 +4917,68 @@ msgstr "Geen geldig e-mailadres"
 msgid "This account has not been configured for email. Request failed."
 msgstr "Aanvraag mislukt. Dit account is niet geconfigureerd voor e-mail."
 
-#: mod/dfrn_request.php:463
-msgid "Unable to resolve your name at the provided location."
-msgstr "Ik kan jouw naam op het opgegeven adres niet vinden."
-
-#: mod/dfrn_request.php:476
+#: mod/dfrn_request.php:474
 msgid "You have already introduced yourself here."
 msgstr "Je hebt jezelf hier al voorgesteld."
 
-#: mod/dfrn_request.php:480
+#: mod/dfrn_request.php:478
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr "Blijkbaar bent u al bevriend met %s."
 
-#: mod/dfrn_request.php:501
+#: mod/dfrn_request.php:499
 msgid "Invalid profile URL."
 msgstr "Ongeldig profiel adres."
 
-#: mod/dfrn_request.php:507 include/follow.php:72
+#: mod/dfrn_request.php:505 include/follow.php:72
 msgid "Disallowed profile URL."
 msgstr "Niet toegelaten profiel adres."
 
-#: mod/dfrn_request.php:597
+#: mod/dfrn_request.php:596
 msgid "Your introduction has been sent."
 msgstr "Je verzoek is verzonden."
 
-#: mod/dfrn_request.php:650
+#: mod/dfrn_request.php:636
+msgid ""
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
+msgstr ""
+
+#: mod/dfrn_request.php:659
 msgid "Please login to confirm introduction."
 msgstr "Log in om je verzoek te bevestigen."
 
-#: mod/dfrn_request.php:660
+#: mod/dfrn_request.php:669
 msgid ""
 "Incorrect identity currently logged in. Please login to "
 "<strong>this</strong> profile."
 msgstr "Je huidige identiteit is niet de juiste. Log met <strong>dit</strong> profiel in."
 
-#: mod/dfrn_request.php:674 mod/dfrn_request.php:691
+#: mod/dfrn_request.php:683 mod/dfrn_request.php:700
 msgid "Confirm"
 msgstr "Bevestig"
 
-#: mod/dfrn_request.php:686
+#: mod/dfrn_request.php:695
 msgid "Hide this contact"
 msgstr "Verberg dit contact"
 
-#: mod/dfrn_request.php:689
+#: mod/dfrn_request.php:698
 #, php-format
 msgid "Welcome home %s."
 msgstr "Welkom terug %s."
 
-#: mod/dfrn_request.php:690
+#: mod/dfrn_request.php:699
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr "Bevestig je vriendschaps-/connectieverzoek voor %s."
 
-#: mod/dfrn_request.php:819
+#: mod/dfrn_request.php:828
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr "Vul hier uw 'Identiteitsadres' in van een van de volgende ondersteunde communicatienetwerken:"
 
-#: mod/dfrn_request.php:840
+#: mod/dfrn_request.php:849
 #, php-format
 msgid ""
 "If you are not yet a member of the free social web, <a "
@@ -4965,25 +4986,25 @@ msgid ""
 "join us today</a>."
 msgstr ""
 
-#: mod/dfrn_request.php:845
+#: mod/dfrn_request.php:854
 msgid "Friend/Connection Request"
 msgstr "Vriendschaps-/connectieverzoek"
 
-#: mod/dfrn_request.php:846
+#: mod/dfrn_request.php:855
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr "Voorbeelden: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"
 
-#: mod/dfrn_request.php:854 include/contact_selectors.php:76
+#: mod/dfrn_request.php:863 include/contact_selectors.php:76
 msgid "Friendica"
 msgstr "Friendica"
 
-#: mod/dfrn_request.php:855
+#: mod/dfrn_request.php:864
 msgid "StatusNet/Federated Social Web"
 msgstr "StatusNet/Gefedereerde Sociale Web"
 
-#: mod/dfrn_request.php:857
+#: mod/dfrn_request.php:866
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search"
@@ -5002,80 +5023,84 @@ msgid ""
 "password: %s<br><br>You can change your password after login."
 msgstr ""
 
-#: mod/register.php:107
+#: mod/register.php:104
+msgid "Registration successful."
+msgstr ""
+
+#: mod/register.php:110
 msgid "Your registration can not be processed."
 msgstr "Je registratie kan niet verwerkt worden."
 
-#: mod/register.php:150
+#: mod/register.php:153
 msgid "Your registration is pending approval by the site owner."
 msgstr "Jouw registratie wacht op goedkeuring van de beheerder."
 
-#: mod/register.php:188 mod/uimport.php:50
+#: mod/register.php:191 mod/uimport.php:50
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
 msgstr "Deze website heeft het toegelaten dagelijkse aantal registraties overschreden. Probeer morgen opnieuw."
 
-#: mod/register.php:216
+#: mod/register.php:219
 msgid ""
 "You may (optionally) fill in this form via OpenID by supplying your OpenID "
 "and clicking 'Register'."
 msgstr "Je kunt (optioneel) dit formulier invullen via OpenID door je OpenID in te geven en op 'Registreren' te klikken."
 
-#: mod/register.php:217
+#: mod/register.php:220
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
 msgstr "Laat dit veld leeg als je niet vertrouwd bent met OpenID, en vul de rest van de items in."
 
-#: mod/register.php:218
+#: mod/register.php:221
 msgid "Your OpenID (optional): "
 msgstr "Je OpenID (optioneel):"
 
-#: mod/register.php:232
+#: mod/register.php:235
 msgid "Include your profile in member directory?"
 msgstr "Je profiel in de ledengids opnemen?"
 
-#: mod/register.php:256
+#: mod/register.php:259
 msgid "Membership on this site is by invitation only."
 msgstr "Lidmaatschap van deze website is uitsluitend op uitnodiging."
 
-#: mod/register.php:257
+#: mod/register.php:260
 msgid "Your invitation ID: "
 msgstr "Je uitnodigingsid:"
 
-#: mod/register.php:268
+#: mod/register.php:271
 msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
 msgstr ""
 
-#: mod/register.php:269
+#: mod/register.php:272
 msgid "Your Email Address: "
 msgstr "Je email adres:"
 
-#: mod/register.php:271
+#: mod/register.php:274
 msgid "Leave empty for an auto generated password."
 msgstr ""
 
-#: mod/register.php:273
+#: mod/register.php:276
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be "
 "'<strong>nickname@$sitename</strong>'."
 msgstr "Kies een bijnaam voor je profiel. Deze moet met een letter beginnen. Je profieladres op deze website zal dan '<strong>bijnaam@$sitename</strong>' zijn."
 
-#: mod/register.php:274
+#: mod/register.php:277
 msgid "Choose a nickname: "
 msgstr "Kies een bijnaam:"
 
-#: mod/register.php:277 boot.php:1256 include/nav.php:108
+#: mod/register.php:280 boot.php:1379 include/nav.php:108
 msgid "Register"
 msgstr "Registreer"
 
-#: mod/register.php:283 mod/uimport.php:64
+#: mod/register.php:286 mod/uimport.php:64
 msgid "Import"
 msgstr "Importeren"
 
-#: mod/register.php:284
+#: mod/register.php:287
 msgid "Import your profile to this friendica instance"
 msgstr ""
 
@@ -5087,62 +5112,54 @@ msgstr "Systeem onbeschikbaar wegens onderhoud"
 msgid "Only logged in users are permitted to perform a search."
 msgstr ""
 
-#: mod/search.php:115
+#: mod/search.php:124
 msgid "Too Many Requests"
 msgstr ""
 
-#: mod/search.php:116
+#: mod/search.php:125
 msgid "Only one search per minute is permitted for not logged in users."
 msgstr ""
 
-#: mod/search.php:126 include/text.php:996 include/nav.php:118
+#: mod/search.php:136 include/text.php:1003 include/nav.php:118
 msgid "Search"
 msgstr "Zoeken"
 
-#: mod/search.php:224
+#: mod/search.php:234
 #, php-format
 msgid "Items tagged with: %s"
 msgstr ""
 
-#: mod/search.php:226
+#: mod/search.php:236
 #, php-format
 msgid "Search results for: %s"
 msgstr ""
 
-#: mod/directory.php:116 mod/profiles.php:760
-msgid "Age: "
-msgstr "Leeftijd:"
-
-#: mod/directory.php:119
-msgid "Gender: "
-msgstr "Geslacht:"
-
-#: mod/directory.php:143 include/identity.php:273 include/identity.php:561
+#: mod/directory.php:149 include/identity.php:313 include/identity.php:610
 msgid "Status:"
 msgstr "Tijdlijn:"
 
-#: mod/directory.php:145 include/identity.php:275 include/identity.php:572
+#: mod/directory.php:151 include/identity.php:315 include/identity.php:621
 msgid "Homepage:"
 msgstr "Website:"
 
-#: mod/directory.php:195 view/theme/diabook/theme.php:525
-#: view/theme/vier/theme.php:191
+#: mod/directory.php:203 view/theme/diabook/theme.php:525
+#: view/theme/vier/theme.php:205
 msgid "Global Directory"
 msgstr "Globale gids"
 
-#: mod/directory.php:197
+#: mod/directory.php:205
 msgid "Find on this site"
 msgstr "Op deze website zoeken"
 
-#: mod/directory.php:199
+#: mod/directory.php:207
 msgid "Finding:"
 msgstr ""
 
-#: mod/directory.php:201
+#: mod/directory.php:209
 msgid "Site Directory"
 msgstr "Websitegids"
 
-#: mod/directory.php:208
+#: mod/directory.php:216
 msgid "No entries (some entries may be hidden)."
 msgstr "Geen gegevens (sommige gegevens kunnen verborgen zijn)."
 
@@ -5181,14 +5198,10 @@ msgstr "Toevoegen"
 msgid "No entries."
 msgstr "Geen gegevens."
 
-#: mod/common.php:85
+#: mod/common.php:86
 msgid "No contacts in common."
 msgstr "Geen gedeelde contacten."
 
-#: mod/common.php:133
-msgid "Common Friends"
-msgstr "Gedeelde Vrienden"
-
 #: mod/uexport.php:77
 msgid "Export account"
 msgstr "Account exporteren"
@@ -5233,12 +5246,12 @@ msgid ""
 "hours."
 msgstr "Geen voorstellen beschikbaar. Als dit een nieuwe website is, kun je het over 24 uur nog eens proberen."
 
-#: mod/suggest.php:83 mod/suggest.php:100
+#: mod/suggest.php:83 mod/suggest.php:101
 msgid "Ignore/Hide"
 msgstr "Negeren/Verbergen"
 
-#: mod/suggest.php:110 include/contact_widgets.php:35
-#: view/theme/diabook/theme.php:527 view/theme/vier/theme.php:193
+#: mod/suggest.php:111 include/contact_widgets.php:35
+#: view/theme/diabook/theme.php:527 view/theme/vier/theme.php:207
 msgid "Friend Suggestions"
 msgstr "Vriendschapsvoorstellen"
 
@@ -5270,11 +5283,11 @@ msgstr "Echtelijke staat"
 msgid "Romantic Partner"
 msgstr "Romantische Partner"
 
-#: mod/profiles.php:344 mod/photos.php:1639 include/conversation.php:508
+#: mod/profiles.php:344 mod/photos.php:1647 include/conversation.php:508
 msgid "Likes"
 msgstr "Houdt van"
 
-#: mod/profiles.php:348 mod/photos.php:1639 include/conversation.php:508
+#: mod/profiles.php:348 mod/photos.php:1647 include/conversation.php:508
 msgid "Dislikes"
 msgstr "Houdt niet van"
 
@@ -5453,7 +5466,7 @@ msgstr "Voorbeelden: Kathleen123, Kathleen Peeters, kathleen@voorbeeld.nl"
 msgid "Since [date]:"
 msgstr "Sinds [datum]:"
 
-#: mod/profiles.php:724 include/identity.php:570
+#: mod/profiles.php:724 include/identity.php:619
 msgid "Sexual Preference:"
 msgstr "Seksuele Voorkeur:"
 
@@ -5461,11 +5474,11 @@ msgstr "Seksuele Voorkeur:"
 msgid "Homepage URL:"
 msgstr "Adres tijdlijn:"
 
-#: mod/profiles.php:726 include/identity.php:574
+#: mod/profiles.php:726 include/identity.php:623
 msgid "Hometown:"
 msgstr "Woonplaats:"
 
-#: mod/profiles.php:727 include/identity.php:578
+#: mod/profiles.php:727 include/identity.php:627
 msgid "Political Views:"
 msgstr "Politieke standpunten:"
 
@@ -5481,11 +5494,11 @@ msgstr "Publieke Sleutelwoorden:"
 msgid "Private Keywords:"
 msgstr "Privé Sleutelwoorden:"
 
-#: mod/profiles.php:731 include/identity.php:586
+#: mod/profiles.php:731 include/identity.php:635
 msgid "Likes:"
 msgstr "Houdt van:"
 
-#: mod/profiles.php:732 include/identity.php:588
+#: mod/profiles.php:732 include/identity.php:637
 msgid "Dislikes:"
 msgstr "Houdt niet van:"
 
@@ -5547,27 +5560,31 @@ msgid ""
 "be visible to anybody using the internet."
 msgstr "Dit is jouw <strong>publiek</strong> profiel.<br />Het <strong>kan</strong> zichtbaar zijn voor iedereen op het internet."
 
+#: mod/profiles.php:760
+msgid "Age: "
+msgstr "Leeftijd:"
+
 #: mod/profiles.php:813
 msgid "Edit/Manage Profiles"
 msgstr "Wijzig/Beheer Profielen"
 
-#: mod/profiles.php:814 include/identity.php:231 include/identity.php:257
+#: mod/profiles.php:814 include/identity.php:260 include/identity.php:286
 msgid "Change profile photo"
 msgstr "Profiel foto wijzigen"
 
-#: mod/profiles.php:815 include/identity.php:232
+#: mod/profiles.php:815 include/identity.php:261
 msgid "Create New Profile"
 msgstr "Maak nieuw profiel"
 
-#: mod/profiles.php:826 include/identity.php:242
+#: mod/profiles.php:826 include/identity.php:271
 msgid "Profile Image"
 msgstr "Profiel afbeelding"
 
-#: mod/profiles.php:828 include/identity.php:245
+#: mod/profiles.php:828 include/identity.php:274
 msgid "visible to everybody"
 msgstr "zichtbaar voor iedereen"
 
-#: mod/profiles.php:829 include/identity.php:246
+#: mod/profiles.php:829 include/identity.php:275
 msgid "Edit visibility"
 msgstr "Pas zichtbaarheid aan"
 
@@ -5579,111 +5596,111 @@ msgstr "Item niet gevonden"
 msgid "Edit post"
 msgstr "Bericht bewerken"
 
-#: mod/editpost.php:110 include/conversation.php:1185
+#: mod/editpost.php:111 include/conversation.php:1184
 msgid "upload photo"
 msgstr "Foto uploaden"
 
-#: mod/editpost.php:111 include/conversation.php:1186
+#: mod/editpost.php:112 include/conversation.php:1185
 msgid "Attach file"
 msgstr "Bestand bijvoegen"
 
-#: mod/editpost.php:112 include/conversation.php:1187
+#: mod/editpost.php:113 include/conversation.php:1186
 msgid "attach file"
 msgstr "bestand bijvoegen"
 
-#: mod/editpost.php:114 include/conversation.php:1189
+#: mod/editpost.php:115 include/conversation.php:1188
 msgid "web link"
 msgstr "webadres"
 
-#: mod/editpost.php:115 include/conversation.php:1190
+#: mod/editpost.php:116 include/conversation.php:1189
 msgid "Insert video link"
 msgstr "Voeg video toe"
 
-#: mod/editpost.php:116 include/conversation.php:1191
+#: mod/editpost.php:117 include/conversation.php:1190
 msgid "video link"
 msgstr "video adres"
 
-#: mod/editpost.php:117 include/conversation.php:1192
+#: mod/editpost.php:118 include/conversation.php:1191
 msgid "Insert audio link"
 msgstr "Voeg audio adres toe"
 
-#: mod/editpost.php:118 include/conversation.php:1193
+#: mod/editpost.php:119 include/conversation.php:1192
 msgid "audio link"
 msgstr "audio adres"
 
-#: mod/editpost.php:119 include/conversation.php:1194
+#: mod/editpost.php:120 include/conversation.php:1193
 msgid "Set your location"
 msgstr "Stel uw locatie in"
 
-#: mod/editpost.php:120 include/conversation.php:1195
+#: mod/editpost.php:121 include/conversation.php:1194
 msgid "set location"
 msgstr "Stel uw locatie in"
 
-#: mod/editpost.php:121 include/conversation.php:1196
+#: mod/editpost.php:122 include/conversation.php:1195
 msgid "Clear browser location"
 msgstr "Verwijder locatie uit uw webbrowser"
 
-#: mod/editpost.php:122 include/conversation.php:1197
+#: mod/editpost.php:123 include/conversation.php:1196
 msgid "clear location"
 msgstr "Verwijder locatie uit uw webbrowser"
 
-#: mod/editpost.php:124 include/conversation.php:1203
+#: mod/editpost.php:125 include/conversation.php:1202
 msgid "Permission settings"
 msgstr "Instellingen van rechten"
 
-#: mod/editpost.php:132 include/acl_selectors.php:343
+#: mod/editpost.php:133 include/acl_selectors.php:344
 msgid "CC: email addresses"
 msgstr "CC: e-mailadressen"
 
-#: mod/editpost.php:133 include/conversation.php:1212
+#: mod/editpost.php:134 include/conversation.php:1211
 msgid "Public post"
 msgstr "Openbare post"
 
-#: mod/editpost.php:136 include/conversation.php:1199
+#: mod/editpost.php:137 include/conversation.php:1198
 msgid "Set title"
 msgstr "Titel plaatsen"
 
-#: mod/editpost.php:138 include/conversation.php:1201
+#: mod/editpost.php:139 include/conversation.php:1200
 msgid "Categories (comma-separated list)"
 msgstr "Categorieën (komma-gescheiden lijst)"
 
-#: mod/editpost.php:139 include/acl_selectors.php:344
+#: mod/editpost.php:140 include/acl_selectors.php:345
 msgid "Example: bob@example.com, mary@example.com"
 msgstr "Voorbeeld: bob@voorbeeld.nl, an@voorbeeld.be"
 
-#: mod/friendica.php:59
+#: mod/friendica.php:70
 msgid "This is Friendica, version"
 msgstr "Dit is Friendica, versie"
 
-#: mod/friendica.php:60
+#: mod/friendica.php:71
 msgid "running at web location"
 msgstr "draaiend op web-adres"
 
-#: mod/friendica.php:62
+#: mod/friendica.php:73
 msgid ""
 "Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn "
 "more about the Friendica project."
 msgstr "Bezoek <a href=\"http://friendica.com\">Friendica.com</a> om meer te leren over het Friendica project."
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "Bug reports and issues: please visit"
 msgstr "Bug rapporten en problemen: bezoek"
 
-#: mod/friendica.php:64
+#: mod/friendica.php:75
 msgid "the bugtracker at github"
 msgstr ""
 
-#: mod/friendica.php:65
+#: mod/friendica.php:76
 msgid ""
 "Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - "
 "dot com"
 msgstr "Suggesties, lof, donaties, enzovoort - stuur een e-mail naar \"info\" op Friendica - dot com"
 
-#: mod/friendica.php:79
+#: mod/friendica.php:90
 msgid "Installed plugins/addons/apps:"
 msgstr "Geïnstalleerde plugins/toepassingen:"
 
-#: mod/friendica.php:92
+#: mod/friendica.php:103
 msgid "No installed plugins/addons/apps"
 msgstr "Geen plugins of toepassingen geïnstalleerd"
 
@@ -5713,7 +5730,7 @@ msgstr "Privacyinformatie op afstand niet beschikbaar."
 msgid "Visible to:"
 msgstr "Zichtbaar voor:"
 
-#: mod/notes.php:46 include/identity.php:677
+#: mod/notes.php:46 include/identity.php:730
 msgid "Personal Notes"
 msgstr "Persoonlijke Nota's"
 
@@ -5771,7 +5788,7 @@ msgid "Make this post private"
 msgstr "Dit bericht privé maken"
 
 #: mod/repair_ostatus.php:14
-msgid "Resubsribing to OStatus contacts"
+msgid "Resubscribing to OStatus contacts"
 msgstr ""
 
 #: mod/repair_ostatus.php:30
@@ -5870,197 +5887,197 @@ msgid ""
 "important, please visit http://friendica.com"
 msgstr "Voor meer informatie over het Friendica project en waarom wij denken dat het belangrijk is kun je http://friendica.com/ bezoeken"
 
-#: mod/photos.php:91 include/identity.php:652
+#: mod/photos.php:99 include/identity.php:705
 msgid "Photo Albums"
 msgstr "Fotoalbums"
 
-#: mod/photos.php:92 mod/photos.php:1891
+#: mod/photos.php:100 mod/photos.php:1899
 msgid "Recent Photos"
 msgstr "Recente foto's"
 
-#: mod/photos.php:95 mod/photos.php:1312 mod/photos.php:1893
+#: mod/photos.php:103 mod/photos.php:1320 mod/photos.php:1901
 msgid "Upload New Photos"
 msgstr "Nieuwe foto's uploaden"
 
-#: mod/photos.php:173
+#: mod/photos.php:181
 msgid "Contact information unavailable"
 msgstr "Contactinformatie niet beschikbaar"
 
-#: mod/photos.php:194
+#: mod/photos.php:202
 msgid "Album not found."
 msgstr "Album niet gevonden"
 
-#: mod/photos.php:224 mod/photos.php:236 mod/photos.php:1254
+#: mod/photos.php:232 mod/photos.php:244 mod/photos.php:1262
 msgid "Delete Album"
 msgstr "Verwijder album"
 
-#: mod/photos.php:234
+#: mod/photos.php:242
 msgid "Do you really want to delete this photo album and all its photos?"
 msgstr "Wil je echt dit fotoalbum en alle foto's erin verwijderen?"
 
-#: mod/photos.php:314 mod/photos.php:325 mod/photos.php:1572
+#: mod/photos.php:322 mod/photos.php:333 mod/photos.php:1580
 msgid "Delete Photo"
 msgstr "Verwijder foto"
 
-#: mod/photos.php:323
+#: mod/photos.php:331
 msgid "Do you really want to delete this photo?"
 msgstr "Wil je echt deze foto verwijderen?"
 
-#: mod/photos.php:698
+#: mod/photos.php:706
 #, php-format
 msgid "%1$s was tagged in %2$s by %3$s"
 msgstr "%1$s is gelabeld in %2$s door %3$s"
 
-#: mod/photos.php:698
+#: mod/photos.php:706
 msgid "a photo"
 msgstr "een foto"
 
-#: mod/photos.php:811
+#: mod/photos.php:819
 msgid "Image file is empty."
 msgstr "Afbeeldingsbestand is leeg."
 
-#: mod/photos.php:978
+#: mod/photos.php:986
 msgid "No photos selected"
 msgstr "Geen foto's geselecteerd"
 
-#: mod/photos.php:1139
+#: mod/photos.php:1147
 #, php-format
 msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
 msgstr "Je hebt %1$.2f Mbytes van %2$.2f Mbytes foto-opslagruimte gebruikt."
 
-#: mod/photos.php:1174
+#: mod/photos.php:1182
 msgid "Upload Photos"
 msgstr "Upload foto's"
 
-#: mod/photos.php:1178 mod/photos.php:1249
+#: mod/photos.php:1186 mod/photos.php:1257
 msgid "New album name: "
 msgstr "Nieuwe albumnaam: "
 
-#: mod/photos.php:1179
+#: mod/photos.php:1187
 msgid "or existing album name: "
 msgstr "of bestaande albumnaam: "
 
-#: mod/photos.php:1180
+#: mod/photos.php:1188
 msgid "Do not show a status post for this upload"
 msgstr "Toon geen bericht op je tijdlijn van deze upload"
 
-#: mod/photos.php:1182 mod/photos.php:1567 include/acl_selectors.php:346
+#: mod/photos.php:1190 mod/photos.php:1575 include/acl_selectors.php:347
 msgid "Permissions"
 msgstr "Rechten"
 
-#: mod/photos.php:1193
+#: mod/photos.php:1201
 msgid "Private Photo"
 msgstr "Privé foto"
 
-#: mod/photos.php:1194
+#: mod/photos.php:1202
 msgid "Public Photo"
 msgstr "Publieke foto"
 
-#: mod/photos.php:1262
+#: mod/photos.php:1270
 msgid "Edit Album"
 msgstr "Album wijzigen"
 
-#: mod/photos.php:1268
+#: mod/photos.php:1276
 msgid "Show Newest First"
 msgstr "Toon niewste eerst"
 
-#: mod/photos.php:1270
+#: mod/photos.php:1278
 msgid "Show Oldest First"
 msgstr "Toon oudste eerst"
 
-#: mod/photos.php:1298 mod/photos.php:1876
+#: mod/photos.php:1306 mod/photos.php:1884
 msgid "View Photo"
 msgstr "Bekijk foto"
 
-#: mod/photos.php:1345
+#: mod/photos.php:1353
 msgid "Permission denied. Access to this item may be restricted."
 msgstr "Toegang geweigerd. Toegang tot dit item is mogelijk beperkt."
 
-#: mod/photos.php:1347
+#: mod/photos.php:1355
 msgid "Photo not available"
 msgstr "Foto is niet beschikbaar"
 
-#: mod/photos.php:1403
+#: mod/photos.php:1411
 msgid "View photo"
 msgstr "Bekijk foto"
 
-#: mod/photos.php:1403
+#: mod/photos.php:1411
 msgid "Edit photo"
 msgstr "Bewerk foto"
 
-#: mod/photos.php:1404
+#: mod/photos.php:1412
 msgid "Use as profile photo"
 msgstr "Gebruik als profielfoto"
 
-#: mod/photos.php:1429
+#: mod/photos.php:1437
 msgid "View Full Size"
 msgstr "Bekijk in volledig formaat"
 
-#: mod/photos.php:1515
+#: mod/photos.php:1523
 msgid "Tags: "
 msgstr "Labels: "
 
-#: mod/photos.php:1518
+#: mod/photos.php:1526
 msgid "[Remove any tag]"
 msgstr "[Alle labels verwijderen]"
 
-#: mod/photos.php:1558
+#: mod/photos.php:1566
 msgid "New album name"
 msgstr "Nieuwe albumnaam"
 
-#: mod/photos.php:1559
+#: mod/photos.php:1567
 msgid "Caption"
 msgstr "Onderschrift"
 
-#: mod/photos.php:1560
+#: mod/photos.php:1568
 msgid "Add a Tag"
 msgstr "Een label toevoegen"
 
-#: mod/photos.php:1560
+#: mod/photos.php:1568
 msgid ""
 "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl, #Ardennen, #camping "
 
-#: mod/photos.php:1561
+#: mod/photos.php:1569
 msgid "Do not rotate"
 msgstr ""
 
-#: mod/photos.php:1562
+#: mod/photos.php:1570
 msgid "Rotate CW (right)"
 msgstr "Roteren met de klok mee (rechts)"
 
-#: mod/photos.php:1563
+#: mod/photos.php:1571
 msgid "Rotate CCW (left)"
 msgstr "Roteren tegen de klok in (links)"
 
-#: mod/photos.php:1578
+#: mod/photos.php:1586
 msgid "Private photo"
 msgstr "Privé foto"
 
-#: mod/photos.php:1579
+#: mod/photos.php:1587
 msgid "Public photo"
 msgstr "Publieke foto"
 
-#: mod/photos.php:1601 include/conversation.php:1183
+#: mod/photos.php:1609 include/conversation.php:1182
 msgid "Share"
 msgstr "Delen"
 
-#: mod/photos.php:1640 include/conversation.php:509
-#: include/conversation.php:1405
+#: mod/photos.php:1648 include/conversation.php:509
+#: include/conversation.php:1413
 msgid "Attending"
 msgid_plural "Attending"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/photos.php:1640 include/conversation.php:509
+#: mod/photos.php:1648 include/conversation.php:509
 msgid "Not attending"
 msgstr ""
 
-#: mod/photos.php:1640 include/conversation.php:509
+#: mod/photos.php:1648 include/conversation.php:509
 msgid "Might attend"
 msgstr ""
 
-#: mod/photos.php:1805
+#: mod/photos.php:1813
 msgid "Map"
 msgstr ""
 
@@ -6120,60 +6137,60 @@ msgstr "Item niet beschikbaar"
 msgid "Item was not found."
 msgstr "Item niet gevonden"
 
-#: boot.php:771
+#: boot.php:861
 msgid "Delete this item?"
 msgstr "Dit item verwijderen?"
 
-#: boot.php:774
+#: boot.php:864
 msgid "show fewer"
 msgstr "Minder tonen"
 
-#: boot.php:1148
+#: boot.php:1266
 #, php-format
 msgid "Update %s failed. See error logs."
 msgstr "Wijziging %s mislukt. Lees de error logbestanden."
 
-#: boot.php:1255
+#: boot.php:1378
 msgid "Create a New Account"
 msgstr "Nieuwe account aanmaken"
 
-#: boot.php:1280 include/nav.php:72
+#: boot.php:1403 include/nav.php:72
 msgid "Logout"
 msgstr "Uitloggen"
 
-#: boot.php:1283
+#: boot.php:1406
 msgid "Nickname or Email address: "
 msgstr "Bijnaam of e-mailadres:"
 
-#: boot.php:1284
+#: boot.php:1407
 msgid "Password: "
 msgstr "Wachtwoord:"
 
-#: boot.php:1285
+#: boot.php:1408
 msgid "Remember me"
 msgstr "Onthou me"
 
-#: boot.php:1288
+#: boot.php:1411
 msgid "Or login using OpenID: "
 msgstr "Of log in met OpenID:"
 
-#: boot.php:1294
+#: boot.php:1417
 msgid "Forgot your password?"
 msgstr "Wachtwoord vergeten?"
 
-#: boot.php:1297
+#: boot.php:1420
 msgid "Website Terms of Service"
 msgstr "Gebruikersvoorwaarden website"
 
-#: boot.php:1298
+#: boot.php:1421
 msgid "terms of service"
 msgstr "servicevoorwaarden"
 
-#: boot.php:1300
+#: boot.php:1423
 msgid "Website Privacy Policy"
 msgstr "Privacybeleid website"
 
-#: boot.php:1301
+#: boot.php:1424
 msgid "privacy policy"
 msgstr "privacybeleid"
 
@@ -6234,25 +6251,25 @@ msgid ""
 "[pre]%s[/pre]"
 msgstr ""
 
-#: include/dbstructure.php:152
+#: include/dbstructure.php:153
 msgid "Errors encountered creating database tables."
 msgstr "Tijdens het aanmaken van databasetabellen zijn fouten vastgesteld."
 
-#: include/dbstructure.php:210
+#: include/dbstructure.php:230
 msgid "Errors encountered performing database changes."
 msgstr ""
 
-#: include/auth.php:38
+#: include/auth.php:44
 msgid "Logged out."
 msgstr "Uitgelogd."
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid ""
 "We encountered a problem while logging in with the OpenID you provided. "
 "Please check the correct spelling of the ID."
 msgstr ""
 
-#: include/auth.php:128 include/user.php:75
+#: include/auth.php:134 include/user.php:75
 msgid "The error message was:"
 msgstr "De foutboodschap was:"
 
@@ -6288,7 +6305,7 @@ msgid "Examples: Robert Morgenstein, Fishing"
 msgstr "Voorbeelden: Jan Peeters, Vissen"
 
 #: include/contact_widgets.php:36 view/theme/diabook/theme.php:526
-#: view/theme/vier/theme.php:192
+#: view/theme/vier/theme.php:206
 msgid "Similar Interests"
 msgstr "Dezelfde interesses"
 
@@ -6297,205 +6314,228 @@ msgid "Random Profile"
 msgstr "Willekeurig Profiel"
 
 #: include/contact_widgets.php:38 view/theme/diabook/theme.php:528
-#: view/theme/vier/theme.php:194
+#: view/theme/vier/theme.php:208
 msgid "Invite Friends"
 msgstr "Vrienden uitnodigen"
 
-#: include/contact_widgets.php:71
+#: include/contact_widgets.php:108
 msgid "Networks"
 msgstr "Netwerken"
 
-#: include/contact_widgets.php:74
+#: include/contact_widgets.php:111
 msgid "All Networks"
 msgstr "Alle netwerken"
 
-#: include/contact_widgets.php:104 include/features.php:61
+#: include/contact_widgets.php:141 include/features.php:102
 msgid "Saved Folders"
 msgstr "Bewaarde Mappen"
 
-#: include/contact_widgets.php:107 include/contact_widgets.php:139
+#: include/contact_widgets.php:144 include/contact_widgets.php:176
 msgid "Everything"
 msgstr "Alles"
 
-#: include/contact_widgets.php:136
+#: include/contact_widgets.php:173
 msgid "Categories"
 msgstr "Categorieën"
 
-#: include/features.php:23
+#: include/contact_widgets.php:237
+#, php-format
+msgid "%d contact in common"
+msgid_plural "%d contacts in common"
+msgstr[0] "%d gedeeld contact"
+msgstr[1] "%d gedeelde contacten"
+
+#: include/features.php:63
 msgid "General Features"
 msgstr "Algemene functies"
 
-#: include/features.php:25
+#: include/features.php:65
 msgid "Multiple Profiles"
 msgstr "Meerdere profielen"
 
-#: include/features.php:25
+#: include/features.php:65
 msgid "Ability to create multiple profiles"
 msgstr "Mogelijkheid om meerdere profielen aan te maken"
 
-#: include/features.php:26
+#: include/features.php:66
 msgid "Photo Location"
 msgstr ""
 
-#: include/features.php:26
+#: include/features.php:66
 msgid ""
 "Photo metadata is normally stripped. This extracts the location (if present)"
 " prior to stripping metadata and links it to a map."
 msgstr ""
 
-#: include/features.php:31
+#: include/features.php:71
 msgid "Post Composition Features"
 msgstr "Functies voor het opstellen van berichten"
 
-#: include/features.php:32
+#: include/features.php:72
 msgid "Richtext Editor"
 msgstr "Tekstverwerker met opmaak"
 
-#: include/features.php:32
+#: include/features.php:72
 msgid "Enable richtext editor"
 msgstr "Gebruik een tekstverwerker met eenvoudige opmaakfuncties"
 
-#: include/features.php:33
+#: include/features.php:73
 msgid "Post Preview"
 msgstr "Voorvertoning bericht"
 
-#: include/features.php:33
+#: include/features.php:73
 msgid "Allow previewing posts and comments before publishing them"
 msgstr ""
 
-#: include/features.php:34
+#: include/features.php:74
 msgid "Auto-mention Forums"
 msgstr ""
 
-#: include/features.php:34
+#: include/features.php:74
 msgid ""
 "Add/remove mention when a fourm page is selected/deselected in ACL window."
 msgstr ""
 
-#: include/features.php:39
+#: include/features.php:79
 msgid "Network Sidebar Widgets"
 msgstr "Zijbalkwidgets op netwerkpagina"
 
-#: include/features.php:40
+#: include/features.php:80
 msgid "Search by Date"
 msgstr "Zoeken op datum"
 
-#: include/features.php:40
+#: include/features.php:80
 msgid "Ability to select posts by date ranges"
 msgstr "Mogelijkheid om berichten te selecteren volgens datumbereik"
 
-#: include/features.php:41
+#: include/features.php:81 include/features.php:111
+msgid "List Forums"
+msgstr ""
+
+#: include/features.php:81
+msgid "Enable widget to display the forums your are connected with"
+msgstr ""
+
+#: include/features.php:82
 msgid "Group Filter"
 msgstr "Groepsfilter"
 
-#: include/features.php:41
+#: include/features.php:82
 msgid "Enable widget to display Network posts only from selected group"
 msgstr "Sta de widget toe om netwerkberichten te tonen van bepaalde groepen"
 
-#: include/features.php:42
+#: include/features.php:83
 msgid "Network Filter"
 msgstr "Netwerkfilter"
 
-#: include/features.php:42
+#: include/features.php:83
 msgid "Enable widget to display Network posts only from selected network"
 msgstr "Sta de widget toe om netwerkberichten te tonen van bepaalde netwerken"
 
-#: include/features.php:43
+#: include/features.php:84
 msgid "Save search terms for re-use"
 msgstr "Sla zoekopdrachten op voor hergebruik"
 
-#: include/features.php:48
+#: include/features.php:89
 msgid "Network Tabs"
 msgstr "Netwerktabs"
 
-#: include/features.php:49
+#: include/features.php:90
 msgid "Network Personal Tab"
 msgstr "Persoonlijke netwerktab"
 
-#: include/features.php:49
+#: include/features.php:90
 msgid "Enable tab to display only Network posts that you've interacted on"
 msgstr "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had"
 
-#: include/features.php:50
+#: include/features.php:91
 msgid "Network New Tab"
 msgstr "Nieuwe netwerktab"
 
-#: include/features.php:50
+#: include/features.php:91
 msgid "Enable tab to display only new Network posts (from the last 12 hours)"
 msgstr "Laat de tab alleen nieuwe netwerkberichten tonen (van de laatste 12 uur)"
 
-#: include/features.php:51
+#: include/features.php:92
 msgid "Network Shared Links Tab"
 msgstr ""
 
-#: include/features.php:51
+#: include/features.php:92
 msgid "Enable tab to display only Network posts with links in them"
 msgstr ""
 
-#: include/features.php:56
+#: include/features.php:97
 msgid "Post/Comment Tools"
 msgstr "Bericht-/reactiehulpmiddelen"
 
-#: include/features.php:57
+#: include/features.php:98
 msgid "Multiple Deletion"
 msgstr "Meervoudige verwijdering"
 
-#: include/features.php:57
+#: include/features.php:98
 msgid "Select and delete multiple posts/comments at once"
 msgstr "Selecteer en verwijder meerdere berichten/reacties in een keer"
 
-#: include/features.php:58
+#: include/features.php:99
 msgid "Edit Sent Posts"
 msgstr "Bewerk verzonden berichten"
 
-#: include/features.php:58
+#: include/features.php:99
 msgid "Edit and correct posts and comments after sending"
 msgstr "Bewerk en corrigeer berichten en reacties na verzending"
 
-#: include/features.php:59
+#: include/features.php:100
 msgid "Tagging"
 msgstr "Labelen"
 
-#: include/features.php:59
+#: include/features.php:100
 msgid "Ability to tag existing posts"
 msgstr "Mogelijkheid om bestaande berichten te labelen"
 
-#: include/features.php:60
+#: include/features.php:101
 msgid "Post Categories"
 msgstr "Categorieën berichten"
 
-#: include/features.php:60
+#: include/features.php:101
 msgid "Add categories to your posts"
 msgstr "Voeg categorieën toe aan je berichten"
 
-#: include/features.php:61
+#: include/features.php:102
 msgid "Ability to file posts under folders"
 msgstr "Mogelijkheid om berichten in mappen te bewaren"
 
-#: include/features.php:62
+#: include/features.php:103
 msgid "Dislike Posts"
 msgstr "Vind berichten niet leuk"
 
-#: include/features.php:62
+#: include/features.php:103
 msgid "Ability to dislike posts/comments"
 msgstr "Mogelijkheid om berichten of reacties niet leuk te vinden"
 
-#: include/features.php:63
+#: include/features.php:104
 msgid "Star Posts"
 msgstr "Geef berichten een ster"
 
-#: include/features.php:63
+#: include/features.php:104
 msgid "Ability to mark special posts with a star indicator"
 msgstr ""
 
-#: include/features.php:64
+#: include/features.php:105
 msgid "Mute Post Notifications"
 msgstr ""
 
-#: include/features.php:64
+#: include/features.php:105
 msgid "Ability to mute notifications for a thread"
 msgstr ""
 
+#: include/features.php:110
+msgid "Advanced Profile Settings"
+msgstr ""
+
+#: include/features.php:111
+msgid "Show visitors public community forums at the Advanced Profile Page"
+msgstr ""
+
 #: include/follow.php:77
 msgid "Connect URL missing."
 msgstr ""
@@ -6562,23 +6602,27 @@ msgstr "Een verwijderde groep met deze naam is weer tot leven gewekt. Bestaande
 msgid "Default privacy group for new contacts"
 msgstr ""
 
-#: include/group.php:228
+#: include/group.php:239
 msgid "Everybody"
 msgstr "Iedereen"
 
-#: include/group.php:251
+#: include/group.php:262
 msgid "edit"
 msgstr "verander"
 
-#: include/group.php:273
+#: include/group.php:285
+msgid "Edit groups"
+msgstr ""
+
+#: include/group.php:287
 msgid "Edit group"
 msgstr "Verander groep"
 
-#: include/group.php:274
+#: include/group.php:288
 msgid "Create a new group"
 msgstr "Maak nieuwe groep"
 
-#: include/group.php:277
+#: include/group.php:291
 msgid "Contacts not in any group"
 msgstr ""
 
@@ -6647,180 +6691,208 @@ msgstr "secondes"
 msgid "%1$d %2$s ago"
 msgstr "%1$d %2$s geleden"
 
-#: include/datetime.php:474 include/items.php:2484
+#: include/datetime.php:474 include/items.php:2477
 #, php-format
 msgid "%s's birthday"
 msgstr "%s's verjaardag"
 
-#: include/datetime.php:475 include/items.php:2485
+#: include/datetime.php:475 include/items.php:2478
 #, php-format
 msgid "Happy Birthday %s"
 msgstr "Gefeliciteerd %s"
 
-#: include/identity.php:38
+#: include/identity.php:42
 msgid "Requested account is not available."
 msgstr "Gevraagde account is niet beschikbaar."
 
-#: include/identity.php:121 include/identity.php:255 include/identity.php:608
+#: include/identity.php:95 include/identity.php:284 include/identity.php:662
 msgid "Edit profile"
 msgstr "Bewerk profiel"
 
-#: include/identity.php:220
+#: include/identity.php:244
+msgid "Atom feed"
+msgstr ""
+
+#: include/identity.php:249
 msgid "Message"
 msgstr "Bericht"
 
-#: include/identity.php:226 include/nav.php:185
+#: include/identity.php:255 include/nav.php:185
 msgid "Profiles"
 msgstr "Profielen"
 
-#: include/identity.php:226
+#: include/identity.php:255
 msgid "Manage/edit profiles"
 msgstr "Beheer/wijzig profielen"
 
-#: include/identity.php:342
-msgid "Network:"
-msgstr ""
-
-#: include/identity.php:374 include/identity.php:460
+#: include/identity.php:425 include/identity.php:509
 msgid "g A l F d"
 msgstr "G l j F"
 
-#: include/identity.php:375 include/identity.php:461
+#: include/identity.php:426 include/identity.php:510
 msgid "F d"
 msgstr "d F"
 
-#: include/identity.php:420 include/identity.php:507
+#: include/identity.php:471 include/identity.php:556
 msgid "[today]"
 msgstr "[vandaag]"
 
-#: include/identity.php:432
+#: include/identity.php:483
 msgid "Birthday Reminders"
 msgstr "Verjaardagsherinneringen"
 
-#: include/identity.php:433
+#: include/identity.php:484
 msgid "Birthdays this week:"
 msgstr "Verjaardagen deze week:"
 
-#: include/identity.php:494
+#: include/identity.php:543
 msgid "[No description]"
 msgstr "[Geen omschrijving]"
 
-#: include/identity.php:518
+#: include/identity.php:567
 msgid "Event Reminders"
 msgstr "Gebeurtenisherinneringen"
 
-#: include/identity.php:519
+#: include/identity.php:568
 msgid "Events this week:"
 msgstr "Gebeurtenissen deze week:"
 
-#: include/identity.php:546
+#: include/identity.php:595
 msgid "j F, Y"
 msgstr "F j Y"
 
-#: include/identity.php:547
+#: include/identity.php:596
 msgid "j F"
 msgstr "F j"
 
-#: include/identity.php:554
+#: include/identity.php:603
 msgid "Birthday:"
 msgstr "Verjaardag:"
 
-#: include/identity.php:558
+#: include/identity.php:607
 msgid "Age:"
 msgstr "Leeftijd:"
 
-#: include/identity.php:567
+#: include/identity.php:616
 #, php-format
 msgid "for %1$d %2$s"
 msgstr "voor %1$d %2$s"
 
-#: include/identity.php:580
+#: include/identity.php:629
 msgid "Religion:"
 msgstr "Religie:"
 
-#: include/identity.php:584
+#: include/identity.php:633
 msgid "Hobbies/Interests:"
 msgstr "Hobby:"
 
-#: include/identity.php:591
+#: include/identity.php:640
 msgid "Contact information and Social Networks:"
 msgstr "Contactinformatie en sociale netwerken:"
 
-#: include/identity.php:593
+#: include/identity.php:642
 msgid "Musical interests:"
 msgstr "Muzikale interesse "
 
-#: include/identity.php:595
+#: include/identity.php:644
 msgid "Books, literature:"
 msgstr "Boeken, literatuur:"
 
-#: include/identity.php:597
+#: include/identity.php:646
 msgid "Television:"
 msgstr "Televisie"
 
-#: include/identity.php:599
+#: include/identity.php:648
 msgid "Film/dance/culture/entertainment:"
 msgstr "Film/dans/cultuur/ontspanning:"
 
-#: include/identity.php:601
+#: include/identity.php:650
 msgid "Love/Romance:"
 msgstr "Liefde/romance:"
 
-#: include/identity.php:603
+#: include/identity.php:652
 msgid "Work/employment:"
 msgstr "Werk/beroep:"
 
-#: include/identity.php:605
+#: include/identity.php:654
 msgid "School/education:"
 msgstr "School/opleiding:"
 
-#: include/identity.php:633 include/nav.php:75
-msgid "Status"
-msgstr "Tijdlijn"
-
-#: include/identity.php:636
-msgid "Status Messages and Posts"
-msgstr "Berichten op jouw tijdlijn"
-
-#: include/identity.php:644
-msgid "Profile Details"
-msgstr "Profieldetails"
+#: include/identity.php:658
+msgid "Forums:"
+msgstr ""
 
-#: include/identity.php:657 include/identity.php:660 include/nav.php:78
+#: include/identity.php:710 include/identity.php:713 include/nav.php:78
 msgid "Videos"
 msgstr "Video's"
 
-#: include/identity.php:672 include/nav.php:140
+#: include/identity.php:725 include/nav.php:140
 msgid "Events and Calendar"
 msgstr "Gebeurtenissen en kalender"
 
-#: include/identity.php:680
+#: include/identity.php:733
 msgid "Only You Can See This"
 msgstr "Alleen jij kunt dit zien"
 
-#: include/acl_selectors.php:324
+#: include/like.php:167 include/conversation.php:122
+#: include/conversation.php:258 include/text.php:1991
+#: view/theme/diabook/theme.php:463
+msgid "event"
+msgstr "gebeurtenis"
+
+#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2163
+#: view/theme/diabook/theme.php:480
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s vindt het %3$s van %2$s leuk"
+
+#: include/like.php:186 include/conversation.php:144
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s vindt het %3$s van %2$s niet leuk"
+
+#: include/like.php:188
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:190
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:192
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr ""
+
+#: include/acl_selectors.php:325
 msgid "Post to Email"
 msgstr "Verzenden per e-mail"
 
-#: include/acl_selectors.php:329
+#: include/acl_selectors.php:330
 #, php-format
 msgid "Connectors disabled, since \"%s\" is enabled."
 msgstr ""
 
-#: include/acl_selectors.php:335
+#: include/acl_selectors.php:336
 msgid "Visible to everybody"
 msgstr "Zichtbaar voor iedereen"
 
-#: include/acl_selectors.php:336 view/theme/diabook/config.php:142
+#: include/acl_selectors.php:337 view/theme/diabook/config.php:142
 #: view/theme/diabook/theme.php:621 view/theme/vier/config.php:103
 msgid "show"
 msgstr "tonen"
 
-#: include/acl_selectors.php:337 view/theme/diabook/config.php:142
+#: include/acl_selectors.php:338 view/theme/diabook/config.php:142
 #: view/theme/diabook/theme.php:621 view/theme/vier/config.php:103
 msgid "don't show"
 msgstr "niet tonen"
 
+#: include/acl_selectors.php:348
+msgid "Close"
+msgstr "Afsluiten"
+
 #: include/message.php:15 include/message.php:173
 msgid "[no subject]"
 msgstr "[geen onderwerp]"
@@ -6829,31 +6901,31 @@ msgstr "[geen onderwerp]"
 msgid "stopped following"
 msgstr ""
 
-#: include/Contact.php:334 include/conversation.php:911
+#: include/Contact.php:337 include/conversation.php:911
 msgid "View Status"
 msgstr "Bekijk status"
 
-#: include/Contact.php:336 include/conversation.php:913
+#: include/Contact.php:339 include/conversation.php:913
 msgid "View Photos"
 msgstr "Bekijk foto's"
 
-#: include/Contact.php:337 include/conversation.php:914
+#: include/Contact.php:340 include/conversation.php:914
 msgid "Network Posts"
 msgstr "Netwerkberichten"
 
-#: include/Contact.php:338 include/conversation.php:915
+#: include/Contact.php:341 include/conversation.php:915
 msgid "Edit Contact"
 msgstr "Bewerk contact"
 
-#: include/Contact.php:339
+#: include/Contact.php:342
 msgid "Drop Contact"
 msgstr "Verwijder contact"
 
-#: include/Contact.php:340 include/conversation.php:916
+#: include/Contact.php:343 include/conversation.php:916
 msgid "Send PM"
 msgstr "Stuur een privébericht"
 
-#: include/Contact.php:341 include/conversation.php:920
+#: include/Contact.php:344 include/conversation.php:920
 msgid "Poke"
 msgstr "Aanstoten"
 
@@ -6916,406 +6988,407 @@ msgstr "Geselecteerde items verwijderen"
 msgid "Follow Thread"
 msgstr "Conversatie volgen"
 
-#: include/conversation.php:1035
+#: include/conversation.php:1034
 #, php-format
 msgid "%s likes this."
 msgstr "%s vindt dit leuk."
 
-#: include/conversation.php:1038
+#: include/conversation.php:1037
 #, php-format
 msgid "%s doesn't like this."
 msgstr "%s vindt dit niet leuk."
 
-#: include/conversation.php:1041
+#: include/conversation.php:1040
 #, php-format
 msgid "%s attends."
 msgstr ""
 
-#: include/conversation.php:1044
+#: include/conversation.php:1043
 #, php-format
 msgid "%s doesn't attend."
 msgstr ""
 
-#: include/conversation.php:1047
+#: include/conversation.php:1046
 #, php-format
 msgid "%s attends maybe."
 msgstr ""
 
-#: include/conversation.php:1057
+#: include/conversation.php:1056
 msgid "and"
 msgstr "en"
 
-#: include/conversation.php:1063
+#: include/conversation.php:1062
 #, php-format
 msgid ", and %d other people"
 msgstr ", en %d andere mensen"
 
-#: include/conversation.php:1072
+#: include/conversation.php:1071
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this"
 msgstr "<span  %1$s>%2$d mensen</span> vinden dit leuk"
 
-#: include/conversation.php:1073
+#: include/conversation.php:1072
 #, php-format
 msgid "%s like this."
 msgstr ""
 
-#: include/conversation.php:1076
+#: include/conversation.php:1075
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this"
 msgstr "<span  %1$s>%2$d people</span> vinden dit niet leuk"
 
-#: include/conversation.php:1077
+#: include/conversation.php:1076
 #, php-format
 msgid "%s don't like this."
 msgstr ""
 
-#: include/conversation.php:1080
+#: include/conversation.php:1079
 #, php-format
 msgid "<span  %1$s>%2$d people</span> attend"
 msgstr ""
 
-#: include/conversation.php:1081
+#: include/conversation.php:1080
 #, php-format
 msgid "%s attend."
 msgstr ""
 
-#: include/conversation.php:1084
+#: include/conversation.php:1083
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't attend"
 msgstr ""
 
-#: include/conversation.php:1085
+#: include/conversation.php:1084
 #, php-format
 msgid "%s don't attend."
 msgstr ""
 
-#: include/conversation.php:1088
+#: include/conversation.php:1087
 #, php-format
 msgid "<span  %1$s>%2$d people</span> anttend maybe"
 msgstr ""
 
-#: include/conversation.php:1089
+#: include/conversation.php:1088
 #, php-format
 msgid "%s anttend maybe."
 msgstr ""
 
-#: include/conversation.php:1128 include/conversation.php:1146
+#: include/conversation.php:1127 include/conversation.php:1145
 msgid "Visible to <strong>everybody</strong>"
 msgstr "Zichtbaar voor <strong>iedereen</strong>"
 
-#: include/conversation.php:1130 include/conversation.php:1148
+#: include/conversation.php:1129 include/conversation.php:1147
 msgid "Please enter a video link/URL:"
 msgstr "Vul een videolink/URL in:"
 
-#: include/conversation.php:1131 include/conversation.php:1149
+#: include/conversation.php:1130 include/conversation.php:1148
 msgid "Please enter an audio link/URL:"
 msgstr "Vul een audiolink/URL in:"
 
-#: include/conversation.php:1132 include/conversation.php:1150
+#: include/conversation.php:1131 include/conversation.php:1149
 msgid "Tag term:"
 msgstr "Label:"
 
-#: include/conversation.php:1134 include/conversation.php:1152
+#: include/conversation.php:1133 include/conversation.php:1151
 msgid "Where are you right now?"
 msgstr "Waar ben je nu?"
 
-#: include/conversation.php:1135
+#: include/conversation.php:1134
 msgid "Delete item(s)?"
 msgstr "Item(s) verwijderen?"
 
-#: include/conversation.php:1204
+#: include/conversation.php:1203
 msgid "permissions"
 msgstr "rechten"
 
-#: include/conversation.php:1227
+#: include/conversation.php:1226
 msgid "Post to Groups"
 msgstr "Verzenden naar Groepen"
 
-#: include/conversation.php:1228
+#: include/conversation.php:1227
 msgid "Post to Contacts"
 msgstr "Verzenden naar Contacten"
 
-#: include/conversation.php:1229
+#: include/conversation.php:1228
 msgid "Private post"
 msgstr "Privé verzending"
 
-#: include/conversation.php:1377
+#: include/conversation.php:1385
 msgid "View all"
 msgstr ""
 
-#: include/conversation.php:1399
+#: include/conversation.php:1407
 msgid "Like"
 msgid_plural "Likes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1402
+#: include/conversation.php:1410
 msgid "Dislike"
 msgid_plural "Dislikes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1408
+#: include/conversation.php:1416
 msgid "Not Attending"
 msgid_plural "Not Attending"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1411 include/profile_selectors.php:6
+#: include/conversation.php:1419 include/profile_selectors.php:6
 msgid "Undecided"
 msgid_plural "Undecided"
 msgstr[0] ""
 msgstr[1] ""
 
+#: include/forums.php:105 include/text.php:1015 include/nav.php:126
+#: view/theme/vier/theme.php:259
+msgid "Forums"
+msgstr ""
+
+#: include/forums.php:107 view/theme/vier/theme.php:261
+msgid "External link to forum"
+msgstr ""
+
 #: include/network.php:967
 msgid "view full size"
 msgstr "Volledig formaat"
 
-#: include/text.php:299
+#: include/text.php:303
 msgid "newer"
 msgstr "nieuwere berichten"
 
-#: include/text.php:301
+#: include/text.php:305
 msgid "older"
 msgstr "oudere berichten"
 
-#: include/text.php:306
+#: include/text.php:310
 msgid "prev"
 msgstr "vorige"
 
-#: include/text.php:308
+#: include/text.php:312
 msgid "first"
 msgstr "eerste"
 
-#: include/text.php:340
+#: include/text.php:344
 msgid "last"
 msgstr "laatste"
 
-#: include/text.php:343
+#: include/text.php:347
 msgid "next"
 msgstr "volgende"
 
-#: include/text.php:398
+#: include/text.php:402
 msgid "Loading more entries..."
 msgstr ""
 
-#: include/text.php:399
+#: include/text.php:403
 msgid "The end"
 msgstr ""
 
-#: include/text.php:890
+#: include/text.php:894
 msgid "No contacts"
 msgstr "Geen contacten"
 
-#: include/text.php:905
+#: include/text.php:909
 #, php-format
 msgid "%d Contact"
 msgid_plural "%d Contacts"
 msgstr[0] "%d contact"
 msgstr[1] "%d contacten"
 
-#: include/text.php:1003 include/nav.php:121
+#: include/text.php:921
+msgid "View Contacts"
+msgstr "Bekijk contacten"
+
+#: include/text.php:1010 include/nav.php:121
 msgid "Full Text"
 msgstr ""
 
-#: include/text.php:1004 include/nav.php:122
+#: include/text.php:1011 include/nav.php:122
 msgid "Tags"
 msgstr ""
 
-#: include/text.php:1008 include/nav.php:126
-msgid "Forums"
-msgstr ""
-
-#: include/text.php:1059
+#: include/text.php:1066
 msgid "poke"
 msgstr "aanstoten"
 
-#: include/text.php:1059
+#: include/text.php:1066
 msgid "poked"
 msgstr "aangestoten"
 
-#: include/text.php:1060
+#: include/text.php:1067
 msgid "ping"
 msgstr "ping"
 
-#: include/text.php:1060
+#: include/text.php:1067
 msgid "pinged"
 msgstr "gepingd"
 
-#: include/text.php:1061
+#: include/text.php:1068
 msgid "prod"
 msgstr "porren"
 
-#: include/text.php:1061
+#: include/text.php:1068
 msgid "prodded"
 msgstr "gepord"
 
-#: include/text.php:1062
+#: include/text.php:1069
 msgid "slap"
 msgstr "slaan"
 
-#: include/text.php:1062
+#: include/text.php:1069
 msgid "slapped"
 msgstr "geslagen"
 
-#: include/text.php:1063
+#: include/text.php:1070
 msgid "finger"
 msgstr "finger"
 
-#: include/text.php:1063
+#: include/text.php:1070
 msgid "fingered"
 msgstr "gerfingerd"
 
-#: include/text.php:1064
+#: include/text.php:1071
 msgid "rebuff"
 msgstr "afpoeieren"
 
-#: include/text.php:1064
+#: include/text.php:1071
 msgid "rebuffed"
 msgstr "afgepoeierd"
 
-#: include/text.php:1078
+#: include/text.php:1085
 msgid "happy"
 msgstr "Blij"
 
-#: include/text.php:1079
+#: include/text.php:1086
 msgid "sad"
 msgstr "Verdrietig"
 
-#: include/text.php:1080
+#: include/text.php:1087
 msgid "mellow"
 msgstr "mellow"
 
-#: include/text.php:1081
+#: include/text.php:1088
 msgid "tired"
 msgstr "vermoeid"
 
-#: include/text.php:1082
+#: include/text.php:1089
 msgid "perky"
 msgstr "parmantig"
 
-#: include/text.php:1083
+#: include/text.php:1090
 msgid "angry"
 msgstr "boos"
 
-#: include/text.php:1084
+#: include/text.php:1091
 msgid "stupified"
 msgstr "verbijsterd"
 
-#: include/text.php:1085
+#: include/text.php:1092
 msgid "puzzled"
 msgstr "onzeker"
 
-#: include/text.php:1086
+#: include/text.php:1093
 msgid "interested"
 msgstr "Geïnteresseerd"
 
-#: include/text.php:1087
+#: include/text.php:1094
 msgid "bitter"
 msgstr "bitter"
 
-#: include/text.php:1088
+#: include/text.php:1095
 msgid "cheerful"
 msgstr "vrolijk"
 
-#: include/text.php:1089
+#: include/text.php:1096
 msgid "alive"
 msgstr "levend"
 
-#: include/text.php:1090
+#: include/text.php:1097
 msgid "annoyed"
 msgstr "verveeld"
 
-#: include/text.php:1091
+#: include/text.php:1098
 msgid "anxious"
 msgstr "bezorgd"
 
-#: include/text.php:1092
+#: include/text.php:1099
 msgid "cranky"
 msgstr "humeurig "
 
-#: include/text.php:1093
+#: include/text.php:1100
 msgid "disturbed"
 msgstr "verontrust"
 
-#: include/text.php:1094
+#: include/text.php:1101
 msgid "frustrated"
 msgstr "gefrustreerd"
 
-#: include/text.php:1095
+#: include/text.php:1102
 msgid "motivated"
 msgstr "gemotiveerd"
 
-#: include/text.php:1096
+#: include/text.php:1103
 msgid "relaxed"
 msgstr "ontspannen"
 
-#: include/text.php:1097
+#: include/text.php:1104
 msgid "surprised"
 msgstr "verbaasd"
 
-#: include/text.php:1490
+#: include/text.php:1497
 msgid "bytes"
 msgstr "bytes"
 
-#: include/text.php:1522 include/text.php:1534
+#: include/text.php:1529 include/text.php:1541
 msgid "Click to open/close"
 msgstr "klik om te openen/sluiten"
 
-#: include/text.php:1708
+#: include/text.php:1715
 msgid "View on separate page"
 msgstr ""
 
-#: include/text.php:1709
+#: include/text.php:1716
 msgid "view on separate page"
 msgstr ""
 
-#: include/text.php:1990
+#: include/text.php:1995
 msgid "activity"
 msgstr "activiteit"
 
-#: include/text.php:1993
+#: include/text.php:1998
 msgid "post"
 msgstr "bericht"
 
-#: include/text.php:2161
+#: include/text.php:2166
 msgid "Item filed"
 msgstr "Item bewaard"
 
-#: include/bbcode.php:474 include/bbcode.php:1132 include/bbcode.php:1133
+#: include/bbcode.php:482 include/bbcode.php:1157 include/bbcode.php:1158
 msgid "Image/photo"
 msgstr "Afbeelding/foto"
 
-#: include/bbcode.php:572
+#: include/bbcode.php:595
 #, php-format
 msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
 msgstr ""
 
-#: include/bbcode.php:606
+#: include/bbcode.php:629
 #, php-format
 msgid ""
 "<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a "
 "href=\"%s\" target=\"_blank\">post</a>"
 msgstr ""
 
-#: include/bbcode.php:1092 include/bbcode.php:1112
+#: include/bbcode.php:1117 include/bbcode.php:1137
 msgid "$1 wrote:"
 msgstr "$1 schreef:"
 
-#: include/bbcode.php:1141 include/bbcode.php:1142
+#: include/bbcode.php:1166 include/bbcode.php:1167
 msgid "Encrypted content"
 msgstr "Versleutelde inhoud"
 
-#: include/notifier.php:840 include/delivery.php:456
-msgid "(no subject)"
-msgstr "(geen onderwerp)"
-
-#: include/notifier.php:850 include/delivery.php:467 include/enotify.php:37
-msgid "noreply"
-msgstr "geen reactie"
-
-#: include/dba_pdo.php:72 include/dba.php:56
+#: include/dba_pdo.php:72 include/dba.php:55
 #, php-format
 msgid "Cannot locate DNS info for database server '%s'"
 msgstr ""
@@ -7360,6 +7433,10 @@ msgstr "OStatus"
 msgid "RSS/Atom"
 msgstr "RSS/Atom"
 
+#: include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
+
 #: include/contact_selectors.php:82
 msgid "Zot!"
 msgstr "Zot!"
@@ -7404,7 +7481,7 @@ msgstr ""
 msgid "Redmatrix"
 msgstr ""
 
-#: include/Scrape.php:603
+#: include/Scrape.php:624
 msgid " on Last.fm"
 msgstr " op Last.fm"
 
@@ -7416,15 +7493,15 @@ msgstr "Begint:"
 msgid "Finishes:"
 msgstr "Eindigt:"
 
-#: include/plugin.php:458 include/plugin.php:460
+#: include/plugin.php:522 include/plugin.php:524
 msgid "Click here to upgrade."
 msgstr ""
 
-#: include/plugin.php:466
+#: include/plugin.php:530
 msgid "This action exceeds the limits set by your subscription plan."
 msgstr ""
 
-#: include/plugin.php:471
+#: include/plugin.php:535
 msgid "This action is not available under your subscription plan."
 msgstr ""
 
@@ -7580,46 +7657,21 @@ msgstr "Navigatie"
 msgid "Site map"
 msgstr "Sitemap"
 
-#: include/api.php:321 include/api.php:332 include/api.php:441
-#: include/api.php:1151 include/api.php:1153
-msgid "User not found."
-msgstr "Gebruiker niet gevonden"
-
-#: include/api.php:799
+#: include/api.php:878
 #, php-format
 msgid "Daily posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:818
+#: include/api.php:897
 #, php-format
 msgid "Weekly posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:837
+#: include/api.php:916
 #, php-format
 msgid "Monthly posting limit of %d posts reached. The post was rejected."
 msgstr ""
 
-#: include/api.php:1360
-msgid "There is no status with this id."
-msgstr "Er is geen status met dit kenmerk"
-
-#: include/api.php:1434
-msgid "There is no conversation with this id."
-msgstr ""
-
-#: include/api.php:1713
-msgid "Invalid item."
-msgstr ""
-
-#: include/api.php:1723
-msgid "Invalid action. "
-msgstr ""
-
-#: include/api.php:1731
-msgid "DB error"
-msgstr ""
-
 #: include/user.php:48
 msgid "An invitation is required."
 msgstr "Een uitnodiging is vereist."
@@ -7664,37 +7716,37 @@ msgstr "Ik kan die e-mail niet gebruiken."
 msgid "Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"."
 msgstr ""
 
-#: include/user.php:146 include/user.php:244
+#: include/user.php:147 include/user.php:245
 msgid "Nickname is already registered. Please choose another."
 msgstr "Bijnaam is al geregistreerd. Kies een andere."
 
-#: include/user.php:156
+#: include/user.php:157
 msgid ""
 "Nickname was once registered here and may not be re-used. Please choose "
 "another."
 msgstr "Bijnaam was ooit hier geregistreerd en kan niet herbruikt worden. Kies een andere."
 
-#: include/user.php:172
+#: include/user.php:173
 msgid "SERIOUS ERROR: Generation of security keys failed."
 msgstr "ERNSTIGE FOUT: aanmaken van beveiligingssleutels mislukt."
 
-#: include/user.php:230
+#: include/user.php:231
 msgid "An error occurred during registration. Please try again."
 msgstr ""
 
-#: include/user.php:255 view/theme/duepuntozero/config.php:44
+#: include/user.php:256 view/theme/duepuntozero/config.php:44
 msgid "default"
 msgstr "standaard"
 
-#: include/user.php:265
+#: include/user.php:266
 msgid "An error occurred creating your default profile. Please try again."
 msgstr ""
 
-#: include/user.php:297 include/user.php:301 include/profile_selectors.php:42
+#: include/user.php:299 include/user.php:303 include/profile_selectors.php:42
 msgid "Friends"
 msgstr "Vrienden"
 
-#: include/user.php:385
+#: include/user.php:387
 #, php-format
 msgid ""
 "\n"
@@ -7703,7 +7755,7 @@ msgid ""
 "\t"
 msgstr ""
 
-#: include/user.php:389
+#: include/user.php:391
 #, php-format
 msgid ""
 "\n"
@@ -7733,19 +7785,27 @@ msgid ""
 "\t\tThank you and welcome to %2$s."
 msgstr ""
 
-#: include/diaspora.php:719
+#: include/diaspora.php:720
 msgid "Sharing notification from Diaspora network"
 msgstr ""
 
-#: include/diaspora.php:2574
+#: include/diaspora.php:2604
 msgid "Attachments:"
 msgstr "Bijlagen:"
 
-#: include/items.php:4933
+#: include/delivery.php:533
+msgid "(no subject)"
+msgstr "(geen onderwerp)"
+
+#: include/delivery.php:544 include/enotify.php:37
+msgid "noreply"
+msgstr "geen reactie"
+
+#: include/items.php:4903
 msgid "Do you really want to delete this item?"
 msgstr "Wil je echt dit item verwijderen?"
 
-#: include/items.php:5208
+#: include/items.php:5178
 msgid "Archives"
 msgstr "Archieven"
 
@@ -8261,11 +8321,11 @@ msgstr ""
 msgid "Please visit %s to approve or reject the request."
 msgstr ""
 
-#: include/oembed.php:220
+#: include/oembed.php:214
 msgid "Embedded content"
 msgstr "Ingebedde inhoud"
 
-#: include/oembed.php:229
+#: include/oembed.php:223
 msgid "Embedding disabled"
 msgstr "Inbedden uitgeschakeld"
 
@@ -8305,7 +8365,7 @@ msgstr[1] "%d contacten werden niet geïmporteerd"
 msgid "Done. You can now login with your username and password"
 msgstr "Gebeurd. Je kunt nu inloggen met je gebruikersnaam en wachtwoord"
 
-#: index.php:441
+#: index.php:442
 msgid "toggle mobile"
 msgstr "mobiel thema omwisselen"
 
@@ -8376,7 +8436,7 @@ msgstr ""
 
 #: view/theme/diabook/config.php:158 view/theme/diabook/theme.php:130
 #: view/theme/diabook/theme.php:544 view/theme/diabook/theme.php:624
-#: view/theme/vier/config.php:111 view/theme/vier/theme.php:230
+#: view/theme/vier/config.php:111
 msgid "Community Pages"
 msgstr "Forum/groepspagina's"
 
@@ -8387,7 +8447,7 @@ msgstr "Earth Layers"
 
 #: view/theme/diabook/config.php:160 view/theme/diabook/theme.php:391
 #: view/theme/diabook/theme.php:626 view/theme/vier/config.php:112
-#: view/theme/vier/theme.php:142
+#: view/theme/vier/theme.php:156
 msgid "Community Profiles"
 msgstr "Forum/groepsprofielen"
 
@@ -8398,19 +8458,19 @@ msgstr ""
 
 #: view/theme/diabook/config.php:162 view/theme/diabook/theme.php:606
 #: view/theme/diabook/theme.php:628 view/theme/vier/config.php:114
-#: view/theme/vier/theme.php:348
+#: view/theme/vier/theme.php:377
 msgid "Connect Services"
 msgstr "Diensten verbinden"
 
 #: view/theme/diabook/config.php:163 view/theme/diabook/theme.php:523
 #: view/theme/diabook/theme.php:629 view/theme/vier/config.php:115
-#: view/theme/vier/theme.php:189
+#: view/theme/vier/theme.php:203
 msgid "Find Friends"
 msgstr "Zoek vrienden"
 
 #: view/theme/diabook/config.php:164 view/theme/diabook/theme.php:412
 #: view/theme/diabook/theme.php:630 view/theme/vier/config.php:116
-#: view/theme/vier/theme.php:171
+#: view/theme/vier/theme.php:185
 msgid "Last users"
 msgstr "Laatste gebruikers"
 
@@ -8432,7 +8492,7 @@ msgstr "Jouw contacten"
 msgid "Your personal photos"
 msgstr "Jouw persoonlijke foto's"
 
-#: view/theme/diabook/theme.php:524 view/theme/vier/theme.php:190
+#: view/theme/diabook/theme.php:524 view/theme/vier/theme.php:204
 msgid "Local Directory"
 msgstr "Lokale gids"
 
@@ -8452,11 +8512,7 @@ msgstr ""
 msgid "Set style"
 msgstr ""
 
-#: view/theme/vier/theme.php:234
-msgid "External link to forum"
-msgstr ""
-
-#: view/theme/vier/theme.php:266
+#: view/theme/vier/theme.php:295
 msgid "Quick Start"
 msgstr ""
 
index f535f54be0853ceb37335aa12952a424347310d8..0e8399be7bd2665241c0b698003c32a7d9cf81a7 100644 (file)
@@ -5,9 +5,11 @@ function string_plural_select_nl($n){
        return ($n != 1);;
 }}
 ;
+$a->strings["Network:"] = "Netwerk:";
+$a->strings["Forum"] = "Forum";
 $a->strings["%d contact edited."] = array(
-       0 => "",
-       1 => "",
+       0 => "%d contact gewijzigd.",
+       1 => "%d contacten gewijzigd.",
 );
 $a->strings["Could not access contact record."] = "Kon geen toegang krijgen tot de contactgegevens";
 $a->strings["Could not locate selected profile."] = "Kon het geselecteerde profiel niet vinden.";
@@ -33,28 +35,11 @@ $a->strings["(Update was successful)"] = "(Wijziging is geslaagd)";
 $a->strings["(Update was not successful)"] = "(Wijziging is niet geslaagd)";
 $a->strings["Suggest friends"] = "Stel vrienden voor";
 $a->strings["Network type: %s"] = "Netwerk type: %s";
-$a->strings["%d contact in common"] = array(
-       0 => "%d gedeeld contact",
-       1 => "%d gedeelde contacten",
-);
-$a->strings["View all contacts"] = "Alle contacten zien";
-$a->strings["Unblock"] = "Blokkering opheffen";
-$a->strings["Block"] = "Blokkeren";
-$a->strings["Toggle Blocked status"] = "Schakel geblokkeerde status";
-$a->strings["Unignore"] = "Negeer niet meer";
-$a->strings["Ignore"] = "Negeren";
-$a->strings["Toggle Ignored status"] = "Schakel negeerstatus";
-$a->strings["Unarchive"] = "Archiveer niet meer";
-$a->strings["Archive"] = "Archiveer";
-$a->strings["Toggle Archive status"] = "Schakel archiveringsstatus";
-$a->strings["Repair"] = "Herstellen";
-$a->strings["Advanced Contact Settings"] = "Geavanceerde instellingen voor contacten";
 $a->strings["Communications lost with this contact!"] = "Communicatie met dit contact is verbroken!";
 $a->strings["Fetch further information for feeds"] = "";
 $a->strings["Disabled"] = "Uitgeschakeld";
 $a->strings["Fetch information"] = "";
 $a->strings["Fetch information and keywords"] = "";
-$a->strings["Contact Editor"] = "Contactbewerker";
 $a->strings["Submit"] = "Opslaan";
 $a->strings["Profile Visibility"] = "Zichtbaarheid profiel";
 $a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Kies het profiel dat getoond moet worden wanneer %s uw profiel bezoekt. ";
@@ -70,6 +55,10 @@ $a->strings["Last update:"] = "Laatste wijziging:";
 $a->strings["Update public posts"] = "Openbare posts aanpassen";
 $a->strings["Update now"] = "Wijzig nu";
 $a->strings["Connect/Follow"] = "Verbind/Volg";
+$a->strings["Unblock"] = "Blokkering opheffen";
+$a->strings["Block"] = "Blokkeren";
+$a->strings["Unignore"] = "Negeer niet meer";
+$a->strings["Ignore"] = "Negeren";
 $a->strings["Currently blocked"] = "Op dit moment geblokkeerd";
 $a->strings["Currently ignored"] = "Op dit moment genegeerd";
 $a->strings["Currently archived"] = "Op dit moment gearchiveerd";
@@ -80,6 +69,9 @@ $a->strings["Send a notification of every new post of this contact"] = "";
 $a->strings["Blacklisted keywords"] = "";
 $a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "";
 $a->strings["Profile URL"] = "Profiel url";
+$a->strings["Location:"] = "Plaats:";
+$a->strings["About:"] = "Over:";
+$a->strings["Tags:"] = "Labels:";
 $a->strings["Suggestions"] = "Voorstellen";
 $a->strings["Suggest potential friends"] = "Stel vrienden voor";
 $a->strings["All Contacts"] = "Alle Contacten";
@@ -99,7 +91,21 @@ $a->strings["Search your contacts"] = "Doorzoek je contacten";
 $a->strings["Finding: "] = "Gevonden:";
 $a->strings["Find"] = "Zoek";
 $a->strings["Update"] = "Wijzigen";
+$a->strings["Archive"] = "Archiveer";
+$a->strings["Unarchive"] = "Archiveer niet meer";
 $a->strings["Delete"] = "Verwijder";
+$a->strings["Status"] = "Tijdlijn";
+$a->strings["Status Messages and Posts"] = "Berichten op jouw tijdlijn";
+$a->strings["Profile"] = "Profiel";
+$a->strings["Profile Details"] = "Profieldetails";
+$a->strings["View all contacts"] = "Alle contacten zien";
+$a->strings["Common Friends"] = "Gedeelde Vrienden";
+$a->strings["View all common friends"] = "";
+$a->strings["Repair"] = "Herstellen";
+$a->strings["Advanced Contact Settings"] = "Geavanceerde instellingen voor contacten";
+$a->strings["Toggle Blocked status"] = "Schakel geblokkeerde status";
+$a->strings["Toggle Ignored status"] = "Schakel negeerstatus";
+$a->strings["Toggle Archive status"] = "Schakel archiveringsstatus";
 $a->strings["Mutual Friendship"] = "Wederzijdse vriendschap";
 $a->strings["is a fan of yours"] = "Is een fan van jou";
 $a->strings["you are a fan of"] = "Jij bent een fan van";
@@ -112,7 +118,6 @@ $a->strings["Post successful."] = "Bericht succesvol geplaatst.";
 $a->strings["Permission denied"] = "Toegang geweigerd";
 $a->strings["Invalid profile identifier."] = "Ongeldige profiel-identificatie.";
 $a->strings["Profile Visibility Editor"] = "";
-$a->strings["Profile"] = "Profiel";
 $a->strings["Click on a contact to add or remove."] = "Klik op een contact om het toe te voegen of te verwijderen.";
 $a->strings["Visible To"] = "Zichtbaar voor";
 $a->strings["All Contacts (with secure profile access)"] = "Alle contacten (met veilige profieltoegang)";
@@ -137,9 +142,6 @@ $a->strings["Edit your <strong>default</strong> profile to your liking. Review t
 $a->strings["Profile Keywords"] = "Sleutelwoorden voor dit profiel";
 $a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Stel enkele openbare sleutelwoorden in voor je standaard profiel die je interesses beschrijven. We kunnen dan misschien mensen vinden met gelijkaardige interesses, en vrienden voorstellen.";
 $a->strings["Connecting"] = "Verbinding aan het maken";
-$a->strings["Facebook"] = "Facebook";
-$a->strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Machtig de Facebook Connector als je een Facebook account hebt. We zullen (optioneel) al je Facebook vrienden en conversaties importeren.";
-$a->strings["<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "<em>Als</em> dit jouw eigen persoonlijke server is kan het installeren van de Facebook toevoeging je overgang naar het vrije sociale web vergemakkelijken.";
 $a->strings["Importing Emails"] = "E-mails importeren";
 $a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Vul je e-mailtoegangsinformatie in op je pagina met verbindingsinstellingen als je vrienden of mailinglijsten uit je e-mail-inbox wilt importeren, en met hen wilt communiceren";
 $a->strings["Go to Your Contacts Page"] = "Ga naar je contactenpagina";
@@ -184,7 +186,7 @@ $a->strings["Tag removed"] = "Label verwijderd";
 $a->strings["Remove Item Tag"] = "Verwijder label van item";
 $a->strings["Select a tag to remove: "] = "Selecteer een label om te verwijderen: ";
 $a->strings["Remove"] = "Verwijderen";
-$a->strings["Subsribing to OStatus contacts"] = "";
+$a->strings["Subscribing to OStatus contacts"] = "";
 $a->strings["No contact provided."] = "";
 $a->strings["Couldn't fetch information for contact."] = "";
 $a->strings["Couldn't fetch friends for contact."] = "";
@@ -206,9 +208,6 @@ $a->strings["Does %s know you?"] = "Kent %s jou?";
 $a->strings["No"] = "Nee";
 $a->strings["Add a personal note:"] = "Voeg een persoonlijke opmerking toe:";
 $a->strings["Your Identity Address:"] = "Adres van uw identiteit:";
-$a->strings["Location:"] = "Plaats:";
-$a->strings["About:"] = "Over:";
-$a->strings["Tags:"] = "Labels:";
 $a->strings["Contact added"] = "Contact toegevoegd";
 $a->strings["Unable to locate original post."] = "Ik kan de originele post niet meer vinden.";
 $a->strings["Empty post discarded."] = "Lege post weggegooid.";
@@ -229,6 +228,7 @@ $a->strings["Group removed."] = "Groep verwijderd.";
 $a->strings["Unable to remove group."] = "Niet in staat om groep te verwijderen.";
 $a->strings["Group Editor"] = "Groepsbewerker";
 $a->strings["Members"] = "Leden";
+$a->strings["Group is empty"] = "De groep is leeg";
 $a->strings["You must be logged in to use addons. "] = "Je moet ingelogd zijn om deze addons te kunnen gebruiken. ";
 $a->strings["Applications"] = "Toepassingen";
 $a->strings["No installed applications."] = "Geen toepassingen geïnstalleerd";
@@ -287,17 +287,10 @@ $a->strings["Forgot your Password?"] = "Wachtwoord vergeten?";
 $a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur het om je wachtwoord opnieuw in te stellen. Kijk dan je e-mail na voor verdere instructies.";
 $a->strings["Nickname or Email: "] = "Bijnaam of e-mail:";
 $a->strings["Reset"] = "Opnieuw";
-$a->strings["event"] = "gebeurtenis";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt het %3\$s van %2\$s leuk";
-$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt het %3\$s van %2\$s niet leuk";
-$a->strings["%1\$s is attending %2\$s's %3\$s"] = "";
-$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "";
-$a->strings["%1\$s may attend %2\$s's %3\$s"] = "";
 $a->strings["{0} wants to be your friend"] = "{0} wilt je vriend worden";
 $a->strings["{0} sent you a message"] = "{0} stuurde jou een bericht";
 $a->strings["{0} requested registration"] = "{0} vroeg om zich te registreren";
 $a->strings["No contacts."] = "Geen contacten.";
-$a->strings["View Contacts"] = "Bekijk contacten";
 $a->strings["Invalid request identifier."] = "Ongeldige <em>request identifier</em>.";
 $a->strings["Discard"] = "Verwerpen";
 $a->strings["System"] = "Systeem";
@@ -393,7 +386,6 @@ $a->strings["Please use your browser 'Back' button <strong>now</strong> if you a
 $a->strings["No mirroring"] = "";
 $a->strings["Mirror as forwarded posting"] = "";
 $a->strings["Mirror as my own posting"] = "";
-$a->strings["Repair Contact Settings"] = "Contactinstellingen herstellen";
 $a->strings["Return to contact editor"] = "Ga terug naar contactbewerker";
 $a->strings["Refetch contact data"] = "";
 $a->strings["Name"] = "Naam";
@@ -424,16 +416,22 @@ $a->strings["Site"] = "Website";
 $a->strings["Users"] = "Gebruiker";
 $a->strings["Plugins"] = "Plugins";
 $a->strings["Themes"] = "Thema's";
+$a->strings["Additional features"] = "Extra functies";
 $a->strings["DB updates"] = "DB aanpassingen";
 $a->strings["Inspect Queue"] = "";
+$a->strings["Federation Statistics"] = "";
 $a->strings["Logs"] = "Logs";
+$a->strings["View Logs"] = "";
 $a->strings["probe address"] = "";
 $a->strings["check webfinger"] = "";
 $a->strings["Admin"] = "Beheer";
 $a->strings["Plugin Features"] = "Plugin Functies";
 $a->strings["diagnostics"] = "";
 $a->strings["User registrations waiting for confirmation"] = "Gebruikersregistraties wachten op bevestiging";
+$a->strings["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."] = "";
+$a->strings["The <em>Auto Discovered Contact Directory</em> feature is not enabled, it will improve the data displayed here."] = "";
 $a->strings["Administration"] = "Beheer";
+$a->strings["Currently this node is aware of nodes from the following platforms:"] = "";
 $a->strings["ID"] = "ID";
 $a->strings["Recipient Name"] = "";
 $a->strings["Recipient Profile"] = "";
@@ -582,6 +580,10 @@ $a->strings["Maximum Load Average"] = "Maximum gemiddelde belasting";
 $a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximum systeembelasting voordat aflever- en poll-processen uitgesteld worden - standaard 50.";
 $a->strings["Maximum Load Average (Frontend)"] = "";
 $a->strings["Maximum system load before the frontend quits service - default 50."] = "";
+$a->strings["Maximum table size for optimization"] = "";
+$a->strings["Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it."] = "";
+$a->strings["Minimum level of fragmentation"] = "";
+$a->strings["Minimum fragmenation level to start the automatic optimization - default value is 30%."] = "";
 $a->strings["Periodical check of global contacts"] = "";
 $a->strings["If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers."] = "";
 $a->strings["Days between requery"] = "";
@@ -681,9 +683,11 @@ $a->strings["Toggle"] = "Schakelaar";
 $a->strings["Author: "] = "Auteur:";
 $a->strings["Maintainer: "] = "Onderhoud:";
 $a->strings["Reload active plugins"] = "";
+$a->strings["There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s"] = "";
 $a->strings["No themes found."] = "Geen thema's gevonden.";
 $a->strings["Screenshot"] = "Schermafdruk";
 $a->strings["Reload active themes"] = "";
+$a->strings["No themes found on the system. They should be paced in %1\$s"] = "";
 $a->strings["[Experimental]"] = "[Experimenteel]";
 $a->strings["[Unsupported]"] = "[Niet ondersteund]";
 $a->strings["Log settings updated."] = "Log instellingen gewijzigd";
@@ -692,11 +696,12 @@ $a->strings["Enable Debugging"] = "";
 $a->strings["Log file"] = "Logbestand";
 $a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "De webserver moet hier kunnen schrijven. Relatief t.o.v. van de hoogste folder binnen uw Friendica-installatie.";
 $a->strings["Log level"] = "Log niveau";
-$a->strings["Close"] = "Afsluiten";
-$a->strings["FTP Host"] = "FTP Server";
-$a->strings["FTP Path"] = "FTP Pad";
-$a->strings["FTP User"] = "FTP Gebruiker";
-$a->strings["FTP Password"] = "FTP wachtwoord";
+$a->strings["PHP logging"] = "";
+$a->strings["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 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "";
+$a->strings["Off"] = "Uit";
+$a->strings["On"] = "Aan";
+$a->strings["Lock feature %s"] = "";
+$a->strings["Manage Additional Features"] = "";
 $a->strings["Search Results For: %s"] = "";
 $a->strings["Remove term"] = "Verwijder zoekterm";
 $a->strings["Saved Searches"] = "Opgeslagen zoekopdrachten";
@@ -718,14 +723,10 @@ $a->strings["Warning: This group contains %s member from an insecure network."]
 );
 $a->strings["Private messages to this group are at risk of public disclosure."] = "Privéberichten naar deze groep kunnen openbaar gemaakt worden.";
 $a->strings["No such group"] = "Zo'n groep bestaat niet";
-$a->strings["Group is empty"] = "De groep is leeg";
 $a->strings["Group: %s"] = "";
-$a->strings["Contact: %s"] = "";
 $a->strings["Private messages to this person are at risk of public disclosure."] = "Privéberichten naar deze persoon kunnen openbaar gemaakt worden.";
 $a->strings["Invalid contact."] = "Ongeldig contact.";
 $a->strings["No friends to display."] = "Geen vrienden om te laten zien.";
-$a->strings["Forum"] = "";
-$a->strings["Friends of %s"] = "Vrienden van %s";
 $a->strings["Event can not end before it has started."] = "";
 $a->strings["Event title and start time are required."] = "Titel en begintijd van de gebeurtenis zijn vereist.";
 $a->strings["Sun"] = "";
@@ -922,7 +923,6 @@ $a->strings["Not available."] = "Niet beschikbaar";
 $a->strings["Community"] = "Website";
 $a->strings["No results."] = "Geen resultaten.";
 $a->strings["everybody"] = "iedereen";
-$a->strings["Additional features"] = "Extra functies";
 $a->strings["Display"] = "Weergave";
 $a->strings["Social Networks"] = "Sociale netwerken";
 $a->strings["Delegations"] = "";
@@ -959,8 +959,6 @@ $a->strings["No name"] = "Geen naam";
 $a->strings["Remove authorization"] = "Verwijder authorisatie";
 $a->strings["No Plugin settings configured"] = "";
 $a->strings["Plugin Settings"] = "Plugin Instellingen";
-$a->strings["Off"] = "Uit";
-$a->strings["On"] = "Aan";
 $a->strings["Additional Features"] = "Extra functies";
 $a->strings["General Social Media Settings"] = "";
 $a->strings["Disable intelligent shortening"] = "";
@@ -995,7 +993,7 @@ $a->strings["Display Settings"] = "Scherminstellingen";
 $a->strings["Display Theme:"] = "Schermthema:";
 $a->strings["Mobile Theme:"] = "Mobiel thema:";
 $a->strings["Update browser every xx seconds"] = "Browser elke xx seconden verversen";
-$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 seconden, geen maximum";
+$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "";
 $a->strings["Number of items to display per page:"] = "Aantal items te tonen per pagina:";
 $a->strings["Maximum of 100 items"] = "Maximum 100 items";
 $a->strings["Number of items to display per page when viewed from mobile device:"] = "Aantal items per pagina als je een mobiel toestel gebruikt:";
@@ -1107,12 +1105,12 @@ $a->strings["Friends are advised to please try again in 24 hours."] = "Wij advis
 $a->strings["Invalid locator"] = "Ongeldige plaatsbepaler";
 $a->strings["Invalid email address."] = "Geen geldig e-mailadres";
 $a->strings["This account has not been configured for email. Request failed."] = "Aanvraag mislukt. Dit account is niet geconfigureerd voor e-mail.";
-$a->strings["Unable to resolve your name at the provided location."] = "Ik kan jouw naam op het opgegeven adres niet vinden.";
 $a->strings["You have already introduced yourself here."] = "Je hebt jezelf hier al voorgesteld.";
 $a->strings["Apparently you are already friends with %s."] = "Blijkbaar bent u al bevriend met %s.";
 $a->strings["Invalid profile URL."] = "Ongeldig profiel adres.";
 $a->strings["Disallowed profile URL."] = "Niet toegelaten profiel adres.";
 $a->strings["Your introduction has been sent."] = "Je verzoek is verzonden.";
+$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "";
 $a->strings["Please login to confirm introduction."] = "Log in om je verzoek te bevestigen.";
 $a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Je huidige identiteit is niet de juiste. Log met <strong>dit</strong> profiel in.";
 $a->strings["Confirm"] = "Bevestig";
@@ -1128,6 +1126,7 @@ $a->strings["StatusNet/Federated Social Web"] = "StatusNet/Gefedereerde Sociale
 $a->strings[" - please do not use this form.  Instead, enter %s into your Diaspora search bar."] = "- Gebruik niet dit formulier. Vul %s in in je Diaspora zoekbalk.";
 $a->strings["Registration successful. Please check your email for further instructions."] = "Registratie geslaagd. Kijk je e-mail na voor verdere instructies.";
 $a->strings["Failed to send email message. Here your accout details:<br> login: %s<br> password: %s<br><br>You can change your password after login."] = "";
+$a->strings["Registration successful."] = "";
 $a->strings["Your registration can not be processed."] = "Je registratie kan niet verwerkt worden.";
 $a->strings["Your registration is pending approval by the site owner."] = "Jouw registratie wacht op goedkeuring van de beheerder.";
 $a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Deze website heeft het toegelaten dagelijkse aantal registraties overschreden. Probeer morgen opnieuw.";
@@ -1152,8 +1151,6 @@ $a->strings["Only one search per minute is permitted for not logged in users."]
 $a->strings["Search"] = "Zoeken";
 $a->strings["Items tagged with: %s"] = "";
 $a->strings["Search results for: %s"] = "";
-$a->strings["Age: "] = "Leeftijd:";
-$a->strings["Gender: "] = "Geslacht:";
 $a->strings["Status:"] = "Tijdlijn:";
 $a->strings["Homepage:"] = "Website:";
 $a->strings["Global Directory"] = "Globale gids";
@@ -1170,7 +1167,6 @@ $a->strings["Potential Delegates"] = "Mogelijke personen waaraan het paginabehee
 $a->strings["Add"] = "Toevoegen";
 $a->strings["No entries."] = "Geen gegevens.";
 $a->strings["No contacts in common."] = "Geen gedeelde contacten.";
-$a->strings["Common Friends"] = "Gedeelde Vrienden";
 $a->strings["Export account"] = "Account exporteren";
 $a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "Je account informatie en contacten exporteren. Gebruik dit om een backup van je account te maken en/of om het te verhuizen naar een andere server.";
 $a->strings["Export all"] = "Alles exporteren";
@@ -1257,6 +1253,7 @@ $a->strings["Love/romance"] = "Liefde/romance";
 $a->strings["Work/employment"] = "Werk";
 $a->strings["School/education"] = "School/opleiding";
 $a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Dit is jouw <strong>publiek</strong> profiel.<br />Het <strong>kan</strong> zichtbaar zijn voor iedereen op het internet.";
+$a->strings["Age: "] = "Leeftijd:";
 $a->strings["Edit/Manage Profiles"] = "Wijzig/Beheer Profielen";
 $a->strings["Change profile photo"] = "Profiel foto wijzigen";
 $a->strings["Create New Profile"] = "Maak nieuw profiel";
@@ -1310,7 +1307,7 @@ $a->strings["poke, prod or do other things to somebody"] = "aanstoten, porren of
 $a->strings["Recipient"] = "Ontvanger";
 $a->strings["Choose what you wish to do to recipient"] = "Kies wat je met de ontvanger wil doen";
 $a->strings["Make this post private"] = "Dit bericht privé maken";
-$a->strings["Resubsribing to OStatus contacts"] = "";
+$a->strings["Resubscribing to OStatus contacts"] = "";
 $a->strings["Error"] = "";
 $a->strings["Total invitation limit exceeded."] = "Totale uitnodigingslimiet overschreden.";
 $a->strings["%s : Not a valid email address."] = "%s: Geen geldig e-mailadres.";
@@ -1443,6 +1440,10 @@ $a->strings["All Networks"] = "Alle netwerken";
 $a->strings["Saved Folders"] = "Bewaarde Mappen";
 $a->strings["Everything"] = "Alles";
 $a->strings["Categories"] = "Categorieën";
+$a->strings["%d contact in common"] = array(
+       0 => "%d gedeeld contact",
+       1 => "%d gedeelde contacten",
+);
 $a->strings["General Features"] = "Algemene functies";
 $a->strings["Multiple Profiles"] = "Meerdere profielen";
 $a->strings["Ability to create multiple profiles"] = "Mogelijkheid om meerdere profielen aan te maken";
@@ -1458,6 +1459,8 @@ $a->strings["Add/remove mention when a fourm page is selected/deselected in ACL
 $a->strings["Network Sidebar Widgets"] = "Zijbalkwidgets op netwerkpagina";
 $a->strings["Search by Date"] = "Zoeken op datum";
 $a->strings["Ability to select posts by date ranges"] = "Mogelijkheid om berichten te selecteren volgens datumbereik";
+$a->strings["List Forums"] = "";
+$a->strings["Enable widget to display the forums your are connected with"] = "";
 $a->strings["Group Filter"] = "Groepsfilter";
 $a->strings["Enable widget to display Network posts only from selected group"] = "Sta de widget toe om netwerkberichten te tonen van bepaalde groepen";
 $a->strings["Network Filter"] = "Netwerkfilter";
@@ -1486,6 +1489,8 @@ $a->strings["Star Posts"] = "Geef berichten een ster";
 $a->strings["Ability to mark special posts with a star indicator"] = "";
 $a->strings["Mute Post Notifications"] = "";
 $a->strings["Ability to mute notifications for a thread"] = "";
+$a->strings["Advanced Profile Settings"] = "";
+$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "";
 $a->strings["Connect URL missing."] = "";
 $a->strings["This site is not configured to allow communications with other networks."] = "Deze website is niet geconfigureerd voor communicatie met andere netwerken.";
 $a->strings["No compatible communication protocols or feeds were discovered."] = "Er werden geen compatibele communicatieprotocols of feeds ontdekt.";
@@ -1502,6 +1507,7 @@ $a->strings["A deleted group with this name was revived. Existing item permissio
 $a->strings["Default privacy group for new contacts"] = "";
 $a->strings["Everybody"] = "Iedereen";
 $a->strings["edit"] = "verander";
+$a->strings["Edit groups"] = "";
 $a->strings["Edit group"] = "Verander groep";
 $a->strings["Create a new group"] = "Maak nieuwe groep";
 $a->strings["Contacts not in any group"] = "";
@@ -1525,10 +1531,10 @@ $a->strings["%s's birthday"] = "%s's verjaardag";
 $a->strings["Happy Birthday %s"] = "Gefeliciteerd %s";
 $a->strings["Requested account is not available."] = "Gevraagde account is niet beschikbaar.";
 $a->strings["Edit profile"] = "Bewerk profiel";
+$a->strings["Atom feed"] = "";
 $a->strings["Message"] = "Bericht";
 $a->strings["Profiles"] = "Profielen";
 $a->strings["Manage/edit profiles"] = "Beheer/wijzig profielen";
-$a->strings["Network:"] = "";
 $a->strings["g A l F d"] = "G l j F";
 $a->strings["F d"] = "d F";
 $a->strings["[today]"] = "[vandaag]";
@@ -1552,17 +1558,22 @@ $a->strings["Film/dance/culture/entertainment:"] = "Film/dans/cultuur/ontspannin
 $a->strings["Love/Romance:"] = "Liefde/romance:";
 $a->strings["Work/employment:"] = "Werk/beroep:";
 $a->strings["School/education:"] = "School/opleiding:";
-$a->strings["Status"] = "Tijdlijn";
-$a->strings["Status Messages and Posts"] = "Berichten op jouw tijdlijn";
-$a->strings["Profile Details"] = "Profieldetails";
+$a->strings["Forums:"] = "";
 $a->strings["Videos"] = "Video's";
 $a->strings["Events and Calendar"] = "Gebeurtenissen en kalender";
 $a->strings["Only You Can See This"] = "Alleen jij kunt dit zien";
+$a->strings["event"] = "gebeurtenis";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt het %3\$s van %2\$s leuk";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt het %3\$s van %2\$s niet leuk";
+$a->strings["%1\$s is attending %2\$s's %3\$s"] = "";
+$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "";
+$a->strings["%1\$s may attend %2\$s's %3\$s"] = "";
 $a->strings["Post to Email"] = "Verzenden per e-mail";
 $a->strings["Connectors disabled, since \"%s\" is enabled."] = "";
 $a->strings["Visible to everybody"] = "Zichtbaar voor iedereen";
 $a->strings["show"] = "tonen";
 $a->strings["don't show"] = "niet tonen";
+$a->strings["Close"] = "Afsluiten";
 $a->strings["[no subject]"] = "[geen onderwerp]";
 $a->strings["stopped following"] = "";
 $a->strings["View Status"] = "Bekijk status";
@@ -1629,6 +1640,8 @@ $a->strings["Undecided"] = array(
        0 => "",
        1 => "",
 );
+$a->strings["Forums"] = "";
+$a->strings["External link to forum"] = "";
 $a->strings["view full size"] = "Volledig formaat";
 $a->strings["newer"] = "nieuwere berichten";
 $a->strings["older"] = "oudere berichten";
@@ -1643,9 +1656,9 @@ $a->strings["%d Contact"] = array(
        0 => "%d contact",
        1 => "%d contacten",
 );
+$a->strings["View Contacts"] = "Bekijk contacten";
 $a->strings["Full Text"] = "";
 $a->strings["Tags"] = "";
-$a->strings["Forums"] = "";
 $a->strings["poke"] = "aanstoten";
 $a->strings["poked"] = "aangestoten";
 $a->strings["ping"] = "ping";
@@ -1690,8 +1703,6 @@ $a->strings["<a href=\"%1\$s\" target=\"_blank\">%2\$s</a> %3\$s"] = "";
 $a->strings["<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"] = "";
 $a->strings["$1 wrote:"] = "$1 schreef:";
 $a->strings["Encrypted content"] = "Versleutelde inhoud";
-$a->strings["(no subject)"] = "(geen onderwerp)";
-$a->strings["noreply"] = "geen reactie";
 $a->strings["Cannot locate DNS info for database server '%s'"] = "";
 $a->strings["Unknown | Not categorised"] = "Onbekend | Niet ";
 $a->strings["Block immediately"] = "Onmiddellijk blokkeren";
@@ -1703,6 +1714,7 @@ $a->strings["Weekly"] = "wekelijks";
 $a->strings["Monthly"] = "maandelijks";
 $a->strings["OStatus"] = "OStatus";
 $a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Facebook"] = "Facebook";
 $a->strings["Zot!"] = "Zot!";
 $a->strings["LinkedIn"] = "Linkedln";
 $a->strings["XMPP/IM"] = "XMPP/IM";
@@ -1758,15 +1770,9 @@ $a->strings["Manage/edit friends and contacts"] = "Beheer/Wijzig vrienden en con
 $a->strings["Site setup and configuration"] = "Website opzetten en configureren";
 $a->strings["Navigation"] = "Navigatie";
 $a->strings["Site map"] = "Sitemap";
-$a->strings["User not found."] = "Gebruiker niet gevonden";
 $a->strings["Daily posting limit of %d posts reached. The post was rejected."] = "";
 $a->strings["Weekly posting limit of %d posts reached. The post was rejected."] = "";
 $a->strings["Monthly posting limit of %d posts reached. The post was rejected."] = "";
-$a->strings["There is no status with this id."] = "Er is geen status met dit kenmerk";
-$a->strings["There is no conversation with this id."] = "";
-$a->strings["Invalid item."] = "";
-$a->strings["Invalid action. "] = "";
-$a->strings["DB error"] = "";
 $a->strings["An invitation is required."] = "Een uitnodiging is vereist.";
 $a->strings["Invitation could not be verified."] = "Uitnodiging kon niet geverifieerd worden.";
 $a->strings["Invalid OpenID url"] = "Ongeldige OpenID url";
@@ -1789,6 +1795,8 @@ $a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your a
 $a->strings["\n\t\tThe login details are as follows:\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t%1\$s\n\t\t\tPassword:\t%5\$s\n\n\t\tYou may change your password from your account \"Settings\" page after logging\n\t\tin.\n\n\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\tYou may also wish to add some basic information to your default profile\n\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\tWe recommend setting your full name, adding a profile photo,\n\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\tthan that.\n\n\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\tIf you are new and do not know anybody here, they may help\n\t\tyou to make some new and interesting friends.\n\n\n\t\tThank you and welcome to %2\$s."] = "";
 $a->strings["Sharing notification from Diaspora network"] = "";
 $a->strings["Attachments:"] = "Bijlagen:";
+$a->strings["(no subject)"] = "(geen onderwerp)";
+$a->strings["noreply"] = "geen reactie";
 $a->strings["Do you really want to delete this item?"] = "Wil je echt dit item verwijderen?";
 $a->strings["Archives"] = "Archieven";
 $a->strings["Male"] = "Man";
@@ -1951,7 +1959,6 @@ $a->strings["Set zoomfactor for Earth Layers"] = "";
 $a->strings["Show/hide boxes at right-hand column:"] = "";
 $a->strings["Comma separated list of helper forums"] = "";
 $a->strings["Set style"] = "";
-$a->strings["External link to forum"] = "";
 $a->strings["Quick Start"] = "";
 $a->strings["greenzero"] = "";
 $a->strings["purplezero"] = "";
index 4a6af88148266307ad6e32d6d39af5436019a9c3..5c9cce0d0c58c408f8e7f62af9306ec3779926ee 100644 (file)
                });
        });
 </script>
+
 <h4><a href="{{$admurl}}">{{$admtxt}}</a></h4>
 <ul class='admin linklist'>
-       <li class='admin link button {{$admin.site.2}}'><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
-       <li class='admin link button {{$admin.users.2}}'><a href='{{$admin.users.0}}'>{{$admin.users.1}}</a><span id='pending-update' title='{{$h_pending}}'></span></li>
-       <li class='admin link button {{$admin.plugins.2}}'><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
-       <li class='admin link button {{$admin.themes.2}}'><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
-       <li class='admin link button {{$admin.dbsync.2}}'><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
-       <li class='admin link button {{$admin.queue.2}}'><a href='{{$admin.queue.0}}'>{{$admin.queue.1}}</a></li>
+{{foreach $subpages as $page}}
+       <li class='admin link button {{$page.2}}'><a href='{{$page.0}}'>{{$page.1}}</a></li>
+{{/foreach}}
 </ul>
 
 {{if $admin.update}}
@@ -39,6 +37,7 @@
 <h4>{{$logtxt}}</h4>
 <ul class='admin linklist'>
        <li class='admin link button {{$admin.logs.2}}'><a href='{{$admin.logs.0}}'>{{$admin.logs.1}}</a></li>
+       <li class='admin link button {{$admin.viewlogs.2}}'><a href='{{$admin.viewlogs.0}}'>{{$admin.viewlogs.1}}</a></li>
 </ul>
 
 <h4>{{$diagnosticstxt}}</h4>
diff --git a/view/templates/admin_federation.tpl b/view/templates/admin_federation.tpl
new file mode 100644 (file)
index 0000000..fad87da
--- /dev/null
@@ -0,0 +1,58 @@
+<script src="{{$baseurl}}/library/Chart.js-1.0.2/Chart.min.js"></script>
+<canvas id="FederationChart" class="federation-graph"></canvas>
+<div id="adminpage">
+    <h1>{{$title}} - {{$page}}</h1>
+    <p>{{$intro}}</p>
+    {{if not $autoactive}}
+       <p class="error-message">{{$hint}}</p>
+    {{/if}}
+    <p>{{$legendtext}}
+    <ul>
+    {{foreach $counts as $c}}
+       {{if $c[0]['total'] > 0}}
+           <li>{{$c[0]['platform']}} ({{$c[0]['total']}})</li>
+       {{/if}}
+    {{/foreach}}
+    </ul>
+    </p>
+</div>
+<script>
+var FedData = [
+{{foreach $counts as $c}}
+    { value: {{$c[0]['total']}}, label: "{{$c[0]['platform']}}", color: "#90EE90", highlight: "#EE90A1", },
+{{/foreach}}
+];
+var ctx = document.getElementById("FederationChart").getContext("2d");
+var myDoughnutChart = new Chart(ctx).Doughnut(FedData, { animateRotate : false, });
+</script>
+
+<table id="federation-stats">
+{{foreach $counts as $c}}
+    {{if $c[0]['total'] > 0}}
+    <tr>
+           <th>{{$c[0]['platform']}}</th>
+           <th><strong>{{$c[0]['total']}}</strong></td>
+           <td>{{$c[0]['network']}}</td>
+    </tr>
+    <tr>
+    <td colspan="3" class="federation-data">
+    <canvas id="{{$c[2]}}Chart" class="federation-network-graph"></canvas>
+    <script>
+    var {{$c[2]}}data = [
+    {{foreach $c[1] as $v}}
+       { value: {{$v['total']}}, label: '{{$v['version']}}', color: "#90EE90", highlight: "#EE90A1",},
+    {{/foreach}}
+    ];
+    var ctx = document.getElementById("{{$c[2]}}Chart").getContext("2d");
+    var my{{$c[2]}}DoughnutChart = new Chart(ctx).Doughnut({{$c[2]}}data, {animateRotate : false,});
+    </script>
+    <ul class="federation-stats">
+    {{foreach $c[1] as $v}}
+       <li>{{if ($c[0]['platform']==='Friendica' and  $version===$v['version']) }}<span class="version-match">{{$v['version']}}</span>{{else}}{{$v['version']}}{{/if}} ({{$v['total']}})</li>
+    {{/foreach}}
+    </ul>
+    </td>
+    </tr>
+    {{/if}}
+{{/foreach}}
+</table>
index 4cc0acb66c346d1d5cb373ef05439c4fc527b0f1..e79c7d7af726ce7b52388c4ba7f4f35b2065de2d 100644 (file)
@@ -1,19 +1,21 @@
 <div id='adminpage'>
-       <h1>{{$title}} - {{$page}}</h1>
+    <h1>{{$title}} - {{$page}}</h1>
        
        <form action="{{$baseurl}}/admin/logs" method="post">
-    <input type='hidden' name='form_security_token' value="{{$form_security_token|escape:'html'}}">
+           <input type='hidden' name='form_security_token' value="{{$form_security_token|escape:'html'}}">
 
-       {{include file="field_checkbox.tpl" field=$debugging}}
-       {{include file="field_input.tpl" field=$logfile}}
-       {{include file="field_select.tpl" field=$loglevel}}
+           {{include file="field_checkbox.tpl" field=$debugging}}
+           {{include file="field_input.tpl" field=$logfile}}
+           {{include file="field_select.tpl" field=$loglevel}}
        
-       <div class="submit"><input type="submit" name="page_logs" value="{{$submit|escape:'html'}}" /></div>
+           <div class="submit"><input type="submit" name="page_logs" value="{{$submit|escape:'html'}}" /></div>
        
        </form>
+
+       <h2>{{$phpheader}}</h2>
+       <div>
+               <p>{{$phphint}}</p>
+               <pre>{{$phplogcode}}</pre>
+       </div>
        
-       <h3>{{$logname}}</h3>
-       <div style="width:100%; height:400px; overflow: auto; "><pre>{{$data}}</pre></div>
-<!--   <iframe src='{{$baseurl}}/{{$logname}}' style="width:100%; height:400px"></iframe> -->
-       <!-- <div class="submit"><input type="submit" name="page_logs_clear_log" value="{{$clear}}" /></div> -->
 </div>
index 6caa04a3a42dfc2228b2980294aac56459daec1c..75565dd2edc71797e00a3eb08edaf3ea35b3d917 100644 (file)
@@ -1,6 +1,11 @@
 
 <div id='adminpage'>
        <h1>{{$title}} - {{$page}}</h1>
+               {{if $pcount eq 0}}
+                   <div class="error-message">
+                   {{$noplugshint}}
+                   </div>
+               {{else}}
                <a class="btn" href="{{$baseurl}}/admin/{{$function}}?a=r&amp;t={{$form_security_token}}">{{$reload}}</a>
                <ul id='pluginslist'>
                {{foreach $plugins as $p}}
@@ -13,4 +18,5 @@
                        </li>
                {{/foreach}}
                </ul>
+               {{/if}}
 </div>
diff --git a/view/templates/admin_remoteupdate.tpl b/view/templates/admin_remoteupdate.tpl
deleted file mode 100644 (file)
index c3e85f2..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-
-<script src="js/jquery.htmlstream.js"></script>
-<script>
-       /* ajax updater */
-       function updateEnd(data){
-               //$("#updatepopup .panel_text").html(data);
-               $("#remoteupdate_form").find("input").removeAttr('disabled');
-               $(".panel_action_close").fadeIn()       
-       }
-       function updateOn(data){
-               
-               var patt=/§([^§]*)§/g; 
-               var matches = data.match(patt);
-               $(matches).each(function(id,data){
-                       data = data.replace(/§/g,"");
-                       d = data.split("@");
-                       console.log(d);
-                       elm = $("#updatepopup .panel_text #"+d[0]);
-                       html = "<div id='"+d[0]+"' class='progress'>"+d[1]+"<span>"+d[2]+"</span></div>";
-                       if (elm.length==0){
-                               $("#updatepopup .panel_text").append(html);
-                       } else {
-                               $(elm).replaceWith(html);
-                       }
-               });
-               
-               
-       }
-       
-       $(function(){
-               $("#remoteupdate_form").submit(function(){
-                       var data={};
-                       $(this).find("input").each(function(i, e){
-                               name = $(e).attr('name');
-                               value = $(e).val();
-                               e.disabled = true;
-                               data[name]=value;
-                       });
-
-                       $("#updatepopup .panel_text").html("");
-                       $("#updatepopup").show();
-                       $("#updatepopup .panel").hide().slideDown(500);
-                       $(".panel_action_close").hide().click(function(){
-                               $("#updatepopup .panel").slideUp(500, function(){
-                                       $("#updatepopup").hide();
-                               });                             
-                       });
-
-                       $.post(
-                               $(this).attr('action'), 
-                               data, 
-                               updateEnd,
-                               'text',
-                               updateOn
-                       );
-
-                       
-                       return false;
-               })
-       });
-</script>
-<div id="updatepopup" class="popup">
-       <div class="background"></div>
-       <div class="panel">
-               <div class="panel_in">
-                       <h1>Friendica Update</h1>
-                       <div class="panel_text"></div>
-                       <div class="panel_actions">
-                               <input type="button" value="{{$close|escape:'html'}}" class="panel_action_close">
-                       </div>
-               </div>
-       </div>
-</div>
-<div id="adminpage">
-       <dl> <dt>Your version:</dt><dd>{{$localversion}}</dd> </dl>
-{{if $needupdate}}
-       <dl> <dt>New version:</dt><dd>{{$remoteversion}}</dd> </dl>
-
-       <form id="remoteupdate_form" method="POST" action="{{$baseurl}}/admin/update">
-       <input type="hidden" name="{{$remotefile.0}}" value="{{$remotefile.2|escape:'html'}}">
-
-       {{if $canwrite}}
-               <div class="submit"><input type="submit" name="remoteupdate" value="{{$submit|escape:'html'}}" /></div>
-       {{else}}
-               <h3>Your friendica installation is not writable by web server.</h3>
-               {{if $canftp}}
-                       <p>You can try to update via FTP</p>
-                       {{include file="field_input.tpl" field=$ftphost}}
-                       {{include file="field_input.tpl" field=$ftppath}}
-                       {{include file="field_input.tpl" field=$ftpuser}}
-                       {{include file="field_password.tpl" field=$ftppwd}}
-                       <div class="submit"><input type="submit" name="remoteupdate" value="{{$submit|escape:'html'}}" /></div>
-               {{/if}}
-       {{/if}}
-       </form>
-{{else}}
-<h4>No updates</h4>
-{{/if}}
-</div>
diff --git a/view/templates/admin_settings_features.tpl b/view/templates/admin_settings_features.tpl
new file mode 100644 (file)
index 0000000..abcc527
--- /dev/null
@@ -0,0 +1,21 @@
+<h1>{{$title}}</h1>
+
+<form action="admin/features" method="post" autocomplete="off">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{foreach $features as $g => $f}}
+<h3 class="settings-heading"><a href="javascript:;">{{$f.0}}</a></h3>
+
+<div class="settings-content-block">
+       {{foreach $f.1 as $fcat}}
+               {{include file="field_yesno.tpl" field=$fcat.0}}
+               {{include file="field_yesno.tpl" field=$fcat.1}}
+       {{/foreach}}
+
+       <div class="settings-submit-wrapper" >
+               <input type="submit" name="submit" class="settings-features-submit" value="{{$submit|escape:'html'}}" />
+       </div>
+</div>
+{{/foreach}}
+
+</form>
diff --git a/view/templates/admin_settings_head.tpl b/view/templates/admin_settings_head.tpl
new file mode 100644 (file)
index 0000000..25c0f80
--- /dev/null
@@ -0,0 +1,9 @@
+<script>
+       $(document).ready(function() {
+               $('.settings-content-block').hide();
+               $('.settings-heading').click(function(){
+                       $('.settings-content-block').hide();
+                       $(this).next('.settings-content-block').toggle();
+               });
+       });
+</script>
diff --git a/view/templates/admin_viewlogs.tpl b/view/templates/admin_viewlogs.tpl
new file mode 100644 (file)
index 0000000..c80264c
--- /dev/null
@@ -0,0 +1,6 @@
+<div id='adminpage'>
+       <h1>{{$title}} - {{$page}}</h1>
+       
+       <h3>{{$logname}}</h3>
+       <div style="width:100%; height:400px; overflow: auto; "><pre>{{$data}}</pre></div>
+</div>
index 525a5e0677f62577f80789513d9a8d057755c065..f723cb44c433836cb8f6dac068ee4524b144b2b5 100644 (file)
@@ -1,6 +1,6 @@
 
 {{$tabs}}
-<h2>{{$title}}</h2>
+{{include file="section_title.tpl"}}
 
 <div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div>
 
index 9aceb3f1cba5f602e83ef027228aec866a1ff059..2fcb1908d70b2e419036f30485ad819d12126808 100644 (file)
@@ -4,7 +4,7 @@
 <div id="event-wrapper" style="display: none;" ><div id="event-title">{{$event_title}}</div>
 <div id="event-title-end"></div>
 {{foreach $events as $event}}
-<div class="event-list" id="event-{{$event.id}}"> <a class="cboxElement" href="events/?id={{$event.id}}">{{$event.title}}</a> - {{$event.date}} </div>
+<div class="event-list" id="event-{{$event.id}}"> <a class="ajax-popupbox" href="events/?id={{$event.id}}">{{$event.title}}</a> - {{$event.date}} </div>
 {{/foreach}}
 </div>
 {{/if}}
index 084fdf3b77dd508f7d65cb73c09756040961f6f2..32de6bfa9f2f0f2e549bc447b9cdefbea1c04283 100644 (file)
@@ -1,5 +1,5 @@
 
-<h2>{{$title}}</h2>
+{{include file="section_title.tpl"}}
 
 <dl id="aprofile-fullname" class="aprofile">
  <dt>{{$profile.fullname.0}}</dt>
index 84b3ff236169d14b32802fdbc16bdda344c058a7..defeec7023baa32cb21fd45b7fd1bf7d929b0555 100644 (file)
@@ -1055,6 +1055,7 @@ aside .vcard .title {
 aside .vcard dl {
   height: auto;
   overflow: auto;
+  word-break: break-word;
 }
 aside .vcard .account-type {
   margin-bottom: 13px;
@@ -1412,6 +1413,7 @@ section.minimal {
   /* font-size: 14px; */
   max-width: 660px;
   word-wrap: break-word;
+  word-break: break-word;
   /* line-height: 1.36; */
   padding-bottom: 6px;
 }
index 72731a9bebc9843d3c7949c7a53e7a9abfe16593..3d3c776745de4c86a02527d334a0eab9a811b61f 100644 (file)
@@ -1,12 +1,7 @@
 <?php
-
-if (file_exists("$THEMEPATH//style.css")){
-       echo file_get_contents("$THEMEPATH//style.css");
-}
-
 $uid = get_theme_uid();
 
-$style = get_pconfig( $uid, 'vier', 'style');
+$style = get_pconfig($uid, 'vier', 'style');
 
 if ($style == "")
        $style = get_config('vier', 'style');
@@ -15,14 +10,45 @@ if ($style == "")
        $style = "plus";
 
 if ($style == "flat")
-       $stylecss = file_get_contents('view/theme/vier/flat.css');
+       $stylecssfile = 'view/theme/vier/flat.css';
 else if ($style == "netcolour")
-       $stylecss = file_get_contents('view/theme/vier/netcolour.css');
+       $stylecssfile = 'view/theme/vier/netcolour.css';
 else if ($style == "breathe")
-       $stylecss = file_get_contents('view/theme/vier/breathe.css');
+       $stylecssfile = 'view/theme/vier/breathe.css';
 else if ($style == "plus")
-       $stylecss = file_get_contents('view/theme/vier/plus.css');
+       $stylecssfile = 'view/theme/vier/plus.css';
 else if ($style == "dark")
-       $stylecss = file_get_contents('view/theme/vier/dark.css');
+       $stylecssfile = 'view/theme/vier/dark.css';
+
+if (file_exists($THEMEPATH."//style.css")) {
+       $stylecss = file_get_contents($THEMEPATH."//style.css")."\n";
+       $modified = filemtime($THEMEPATH."//style.css");
+}
+
+$stylemodified = filemtime($stylecssfile);
+$stylecss .= file_get_contents($stylecssfile);
+
+if ($stylemodified > $modified)
+       $modified = $stylemodified;
 
+$modified = gmdate('r', $modified);
+
+$etag = md5($stylecss);
+
+// Only send the CSS file if it was changed
+header('Cache-Control: public');
+header('ETag: "'.$etag.'"');
+header('Last-Modified: '.$modified);
+
+if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
+
+       $cached_modified = gmdate('r', strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']));
+       $cached_etag = str_replace(array('"', "-gzip"), array('', ''),
+                               stripslashes($_SERVER['HTTP_IF_NONE_MATCH']));
+
+       if (($cached_modified == $modified) AND ($cached_etag == $etag)) {
+               header('HTTP/1.1 304 Not Modified');
+               exit();
+       }
+}
 echo $stylecss;
index 809aa4c13ab36082f030f10eb929904a65891a02..8451188f0d8ba53a19ed296494a8030b9b9112c2 100644 (file)
@@ -4,7 +4,7 @@
   </div>
 {{/if}}
 
-<h2>{{$title}}</h2>
+{{include file="section_title.tpl"}}
 
 <dl id="aprofile-fullname" class="aprofile">
  <dt>{{$profile.fullname.0}}</dt>
 </dl>
 {{/if}}
 
-
-
-
+{{if $profile.forumlist}}
+<dl id="aprofile-forumlist" class="aprofile">
+ <dt>{{$profile.forumlist.0}}</dt>
+ <dd>{{$profile.forumlist.1}}</dd>
+</dl>
+{{/if}}