]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #6051 from nupplaphil/friendica-6047
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 31 Oct 2018 13:15:26 +0000 (09:15 -0400)
committerGitHub <noreply@github.com>
Wed, 31 Oct 2018 13:15:26 +0000 (09:15 -0400)
Test Mocking - Bugfixing & Enhancement

131 files changed:
bin/daemon.php
boot.php
include/api.php
include/conversation.php
include/enotify.php
include/items.php
include/text.php
mod/acl.php
mod/admin.php
mod/crepair.php
mod/dfrn_confirm.php
mod/dfrn_notify.php
mod/dfrn_poll.php
mod/dfrn_request.php
mod/display.php
mod/editpost.php
mod/events.php
mod/filer.php
mod/filerm.php
mod/item.php
mod/network.php
mod/nodeinfo.php
mod/openid.php
mod/parse_url.php
mod/photos.php
mod/poco.php
mod/poke.php
mod/profile.php
mod/pubsub.php
mod/pubsubhubbub.php
mod/receive.php
mod/redir.php
mod/register.php
mod/salmon.php
mod/search.php
mod/settings.php
mod/statistics_json.php
mod/subthread.php
mod/tagger.php
mod/uimport.php
mod/wall_upload.php
mod/wallmessage.php
mod/worker.php
src/App.php
src/BaseModule.php
src/Content/Text/BBCode.php
src/Content/Widget.php
src/Core/Addon.php
src/Core/Authentication.php
src/Core/Cache/MemcachedCacheDriver.php
src/Core/L10n.php
src/Core/Lock.php
src/Core/Logger.php [new file with mode: 0644]
src/Core/NotificationsManager.php
src/Core/Session/CacheSessionHandler.php
src/Core/Session/DatabaseSessionHandler.php
src/Core/System.php
src/Core/Theme.php
src/Core/UserImport.php
src/Core/Worker.php
src/Database/DBA.php
src/Database/DBStructure.php
src/Database/PostUpdate.php
src/Model/APContact.php
src/Model/Contact.php
src/Model/Conversation.php
src/Model/Event.php
src/Model/FileTag.php [new file with mode: 0644]
src/Model/GContact.php
src/Model/Group.php
src/Model/Item.php
src/Model/Mail.php
src/Model/Profile.php
src/Model/PushSubscriber.php
src/Model/Queue.php
src/Model/User.php
src/Module/Inbox.php
src/Module/Login.php
src/Module/Magic.php
src/Module/Owa.php
src/Network/CurlResult.php
src/Network/FKOAuth1.php
src/Network/FKOAuthDataStore.php
src/Network/Probe.php
src/Object/Image.php
src/Object/Post.php
src/Object/Thread.php
src/Protocol/ActivityPub/Processor.php
src/Protocol/ActivityPub/Receiver.php
src/Protocol/ActivityPub/Transmitter.php
src/Protocol/DFRN.php
src/Protocol/Diaspora.php
src/Protocol/Email.php
src/Protocol/Feed.php
src/Protocol/OStatus.php
src/Protocol/PortableContact.php
src/Protocol/Salmon.php
src/Util/Crypto.php
src/Util/DateTimeFormat.php
src/Util/Emailer.php
src/Util/HTTPSignature.php
src/Util/JsonLD.php
src/Util/LDSignature.php
src/Util/Network.php
src/Util/ParseUrl.php
src/Util/XML.php
src/Worker/APDelivery.php
src/Worker/CheckVersion.php
src/Worker/Cron.php
src/Worker/CronJobs.php
src/Worker/DBClean.php
src/Worker/Delivery.php
src/Worker/Directory.php
src/Worker/DiscoverPoCo.php
src/Worker/Expire.php
src/Worker/GProbe.php
src/Worker/Notifier.php
src/Worker/OnePoll.php
src/Worker/ProfileUpdate.php
src/Worker/PubSubPublish.php
src/Worker/Queue.php
src/Worker/SpoolPost.php
src/Worker/TagUpdate.php
src/Worker/UpdateGContact.php
util/messages.po
view/lang/de/messages.po
view/lang/de/strings.php
view/theme/frio/css/style.css
view/theme/frio/php/default.php
view/theme/frio/theme.php
view/theme/vier/style.php

index f0f5826d928fb04c97e36e12f57020dd8cd88ec2..f628031c351ae595d8b22c72392c56a02487683e 100755 (executable)
@@ -9,6 +9,7 @@
 
 use Friendica\App;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 
@@ -97,7 +98,7 @@ if ($mode == "stop") {
 
        unlink($pidfile);
 
-       logger("Worker daemon process $pid was killed.", LOGGER_DEBUG);
+       Logger::log("Worker daemon process $pid was killed.", Logger::DEBUG);
 
        Config::set('system', 'worker_daemon_mode', false);
        die("Worker daemon process $pid was killed.\n");
@@ -107,7 +108,7 @@ if (!empty($pid) && posix_kill($pid, 0)) {
        die("Daemon process $pid is already running.\n");
 }
 
-logger('Starting worker daemon.', LOGGER_DEBUG);
+Logger::log('Starting worker daemon.', Logger::DEBUG);
 
 if (!$foreground) {
        echo "Starting worker daemon.\n";
@@ -155,7 +156,7 @@ $last_cron = 0;
 // Now running as a daemon.
 while (true) {
        if (!$do_cron && ($last_cron + $wait_interval) < time()) {
-               logger('Forcing cron worker call.', LOGGER_DEBUG);
+               Logger::log('Forcing cron worker call.', Logger::DEBUG);
                $do_cron = true;
        }
 
@@ -169,7 +170,7 @@ while (true) {
                $last_cron = time();
        }
 
-       logger("Sleeping", LOGGER_DEBUG);
+       Logger::log("Sleeping", Logger::DEBUG);
        $start = time();
        do {
                $seconds = (time() - $start);
@@ -186,10 +187,10 @@ while (true) {
 
        if ($timeout) {
                $do_cron = true;
-               logger("Woke up after $wait_interval seconds.", LOGGER_DEBUG);
+               Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG);
        } else {
                $do_cron = false;
-               logger("Worker jobs are calling to be forked.", LOGGER_DEBUG);
+               Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG);
        }
 }
 
index 6b66625c6c0a03b8d689bfdf414e26d8e939612d..3efd065f3edf207baa8c952c83b37c2706686257 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -106,20 +106,6 @@ define('SSL_POLICY_FULL',         1);
 define('SSL_POLICY_SELFSIGN',     2);
 /* @}*/
 
-/**
- * @name Logger
- *
- * log levels
- * @{
- */
-define('LOGGER_WARNING',         0);
-define('LOGGER_INFO',            1);
-define('LOGGER_TRACE',           2);
-define('LOGGER_DEBUG',           3);
-define('LOGGER_DATA',            4);
-define('LOGGER_ALL',             5);
-/* @}*/
-
 /**
  * @name Register
  *
index 86f2e3b2a4f3d775a1ba0913668e126ad999fd1a..246a716facaa1f2454c7297d8667a7d8e25b6849 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Authentication;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\NotificationsManager;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
@@ -96,9 +97,9 @@ function api_source()
                        return "Twidere";
                }
 
-               logger("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], LOGGER_DEBUG);
+               Logger::log("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], Logger::DEBUG);
        } else {
-               logger("Empty user-agent", LOGGER_DEBUG);
+               Logger::log("Empty user-agent", Logger::DEBUG);
        }
 
        return "api";
@@ -180,7 +181,7 @@ function api_login(App $a)
                var_dump($consumer, $token);
                die();
        } catch (Exception $e) {
-               logger($e);
+               Logger::log($e);
        }
 
        // workaround for HTTP-auth in CGI mode
@@ -194,7 +195,7 @@ function api_login(App $a)
        }
 
        if (!x($_SERVER, 'PHP_AUTH_USER')) {
-               logger('API_login: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+               Logger::log('API_login: ' . print_r($_SERVER, true), Logger::DEBUG);
                header('WWW-Authenticate: Basic realm="Friendica"');
                throw new UnauthorizedException("This API requires login");
        }
@@ -235,7 +236,7 @@ function api_login(App $a)
        }
 
        if (!DBA::isResult($record)) {
-               logger('API_login failure: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+               Logger::log('API_login failure: ' . print_r($_SERVER, true), Logger::DEBUG);
                header('WWW-Authenticate: Basic realm="Friendica"');
                //header('HTTP/1.0 401 Unauthorized');
                //die('This api requires login');
@@ -308,19 +309,19 @@ function api_call(App $a)
                                        api_login($a);
                                }
 
-                               logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
-                               logger('API parameters: ' . print_r($_REQUEST, true));
+                               Logger::log('API call for ' . $a->user['username'] . ': ' . $a->query_string);
+                               Logger::log('API parameters: ' . print_r($_REQUEST, true));
 
                                $stamp =  microtime(true);
                                $return = call_user_func($info['func'], $type);
                                $duration = (float) (microtime(true) - $stamp);
-                               logger("API call duration: " . round($duration, 2) . "\t" . $a->query_string, LOGGER_DEBUG);
+                               Logger::log("API call duration: " . round($duration, 2) . "\t" . $a->query_string, Logger::DEBUG);
 
                                if (Config::get("system", "profiler")) {
                                        $duration = microtime(true)-$a->performance["start"];
 
                                        /// @TODO round() really everywhere?
-                                       logger(
+                                       Logger::log(
                                                parse_url($a->query_string, PHP_URL_PATH) . ": " . sprintf(
                                                        "Database: %s/%s, Cache %s/%s, Network: %s, I/O: %s, Other: %s, Total: %s",
                                                        round($a->performance["database"] - $a->performance["database_write"], 3),
@@ -334,7 +335,7 @@ function api_call(App $a)
                                                                + $a->performance["network"] + $a->performance["file"]), 2),
                                                        round($duration, 2)
                                                ),
-                                               LOGGER_DEBUG
+                                               Logger::DEBUG
                                        );
 
                                        if (Config::get("rendertime", "callstack")) {
@@ -375,7 +376,7 @@ function api_call(App $a)
                                                                $o .= $func . ": " . $time . "\n";
                                                        }
                                                }
-                                               logger($o, LOGGER_DEBUG);
+                                               Logger::log($o, Logger::DEBUG);
                                        }
                                }
 
@@ -412,7 +413,7 @@ function api_call(App $a)
                        }
                }
 
-               logger('API call not implemented: ' . $a->query_string);
+               Logger::log('API call not implemented: ' . $a->query_string);
                throw new NotImplementedException();
        } catch (HTTPException $e) {
                header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}");
@@ -521,7 +522,7 @@ function api_get_user(App $a, $contact_id = null)
        $extra_query = "";
        $url = "";
 
-       logger("api_get_user: Fetching user data for user ".$contact_id, LOGGER_DEBUG);
+       Logger::log("api_get_user: Fetching user data for user ".$contact_id, Logger::DEBUG);
 
        // Searching for contact URL
        if (!is_null($contact_id) && (intval($contact_id) == 0)) {
@@ -605,7 +606,7 @@ function api_get_user(App $a, $contact_id = null)
                }
        }
 
-       logger("api_get_user: user ".$user, LOGGER_DEBUG);
+       Logger::log("api_get_user: user ".$user, Logger::DEBUG);
 
        if (!$user) {
                if (api_user() === false) {
@@ -617,7 +618,7 @@ function api_get_user(App $a, $contact_id = null)
                }
        }
 
-       logger('api_user: ' . $extra_query . ', user: ' . $user);
+       Logger::log('api_user: ' . $extra_query . ', user: ' . $user);
 
        // user info
        $uinfo = q(
@@ -1033,7 +1034,7 @@ function api_statuses_mediap($type)
        $a = get_app();
 
        if (api_user() === false) {
-               logger('api_statuses_update: no user');
+               Logger::log('api_statuses_update: no user');
                throw new ForbiddenException();
        }
        $user_info = api_get_user($a);
@@ -1081,7 +1082,7 @@ function api_statuses_update($type)
        $a = get_app();
 
        if (api_user() === false) {
-               logger('api_statuses_update: no user');
+               Logger::log('api_statuses_update: no user');
                throw new ForbiddenException();
        }
 
@@ -1135,7 +1136,7 @@ function api_statuses_update($type)
                        $posts_day = DBA::count('thread', $condition);
 
                        if ($posts_day > $throttle_day) {
-                               logger('Daily posting limit reached for user '.api_user(), LOGGER_DEBUG);
+                               Logger::log('Daily posting limit reached for user '.api_user(), Logger::DEBUG);
                                // die(api_error($type, L10n::t("Daily posting limit of %d posts reached. The post was rejected.", $throttle_day));
                                throw new TooManyRequestsException(L10n::tt("Daily posting limit of %d post reached. The post was rejected.", "Daily posting limit of %d posts reached. The post was rejected.", $throttle_day));
                        }
@@ -1149,7 +1150,7 @@ function api_statuses_update($type)
                        $posts_week = DBA::count('thread', $condition);
 
                        if ($posts_week > $throttle_week) {
-                               logger('Weekly posting limit reached for user '.api_user(), LOGGER_DEBUG);
+                               Logger::log('Weekly posting limit reached for user '.api_user(), Logger::DEBUG);
                                // die(api_error($type, L10n::t("Weekly posting limit of %d posts reached. The post was rejected.", $throttle_week)));
                                throw new TooManyRequestsException(L10n::tt("Weekly posting limit of %d post reached. The post was rejected.", "Weekly posting limit of %d posts reached. The post was rejected.", $throttle_week));
                        }
@@ -1163,7 +1164,7 @@ function api_statuses_update($type)
                        $posts_month = DBA::count('thread', $condition);
 
                        if ($posts_month > $throttle_month) {
-                               logger('Monthly posting limit reached for user '.api_user(), LOGGER_DEBUG);
+                               Logger::log('Monthly posting limit reached for user '.api_user(), Logger::DEBUG);
                                // die(api_error($type, L10n::t("Monthly posting limit of %d posts reached. The post was rejected.", $throttle_month));
                                throw new TooManyRequestsException(L10n::t("Monthly posting limit of %d post reached. The post was rejected.", "Monthly posting limit of %d posts reached. The post was rejected.", $throttle_month));
                        }
@@ -1223,7 +1224,7 @@ function api_media_upload()
        $a = get_app();
 
        if (api_user() === false) {
-               logger('no user');
+               Logger::log('no user');
                throw new ForbiddenException();
        }
 
@@ -1248,7 +1249,7 @@ function api_media_upload()
                                        "h" => $media["height"],
                                        "image_type" => $media["type"]];
 
-       logger("Media uploaded: " . print_r($returndata, true), LOGGER_DEBUG);
+       Logger::log("Media uploaded: " . print_r($returndata, true), Logger::DEBUG);
 
        return ["media" => $returndata];
 }
@@ -1268,7 +1269,7 @@ function api_status_show($type, $item_id = 0)
 
        $user_info = api_get_user($a);
 
-       logger('api_status_show: user_info: '.print_r($user_info, true), LOGGER_DEBUG);
+       Logger::log('api_status_show: user_info: '.print_r($user_info, true), Logger::DEBUG);
 
        if ($type == "raw") {
                $privacy_sql = "AND NOT `private`";
@@ -1344,7 +1345,7 @@ function api_status_show($type, $item_id = 0)
                unset($status_info["user"]["uid"]);
                unset($status_info["user"]["self"]);
 
-               logger('status_info: '.print_r($status_info, true), LOGGER_DEBUG);
+               Logger::log('status_info: '.print_r($status_info, true), Logger::DEBUG);
 
                if ($type == "raw") {
                        return $status_info;
@@ -1824,7 +1825,7 @@ function api_statuses_show($type)
                $id = intval(defaults($a->argv, 4, 0));
        }
 
-       logger('API: api_statuses_show: ' . $id);
+       Logger::log('API: api_statuses_show: ' . $id);
 
        $conversation = !empty($_REQUEST['conversation']);
 
@@ -1906,7 +1907,7 @@ function api_conversation_show($type)
                $id = intval(defaults($a->argv, 4, 0));
        }
 
-       logger('API: api_conversation_show: '.$id);
+       Logger::log('API: api_conversation_show: '.$id);
 
        // try to fetch the item for the local user - or the public item, if there is no local one
        $item = Item::selectFirst(['parent-uri'], ['id' => $id]);
@@ -1977,7 +1978,7 @@ function api_statuses_repeat($type)
                $id = intval(defaults($a->argv, 4, 0));
        }
 
-       logger('API: api_statuses_repeat: '.$id);
+       Logger::log('API: api_statuses_repeat: '.$id);
 
        $fields = ['body', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
        $item = Item::selectFirst($fields, ['id' => $id, 'private' => false]);
@@ -2042,7 +2043,7 @@ function api_statuses_destroy($type)
                $id = intval(defaults($a->argv, 4, 0));
        }
 
-       logger('API: api_statuses_destroy: '.$id);
+       Logger::log('API: api_statuses_destroy: '.$id);
 
        $ret = api_statuses_show($type);
 
@@ -2137,11 +2138,11 @@ function api_statuses_user_timeline($type)
                throw new ForbiddenException();
        }
 
-       logger(
+       Logger::log(
                "api_statuses_user_timeline: api_user: ". api_user() .
                        "\nuser_info: ".print_r($user_info, true) .
                        "\n_REQUEST:  ".print_r($_REQUEST, true),
-               LOGGER_DEBUG
+               Logger::DEBUG
        );
 
        $since_id        = x($_REQUEST, 'since_id')        ? $_REQUEST['since_id']        : 0;
@@ -2294,7 +2295,7 @@ function api_favorites($type)
 
        // in friendica starred item are private
        // return favorites only for self
-       logger('api_favorites: self:' . $user_info['self']);
+       Logger::log('api_favorites: self:' . $user_info['self']);
 
        if ($user_info['self'] == 0) {
                $ret = [];
@@ -3649,7 +3650,7 @@ function api_friendships_destroy($type)
        $contact_id = defaults($_REQUEST, 'user_id');
 
        if (empty($contact_id)) {
-               logger("No user_id specified", LOGGER_DEBUG);
+               Logger::log("No user_id specified", Logger::DEBUG);
                throw new BadRequestException("no user_id specified");
        }
 
@@ -3657,7 +3658,7 @@ function api_friendships_destroy($type)
        $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]);
 
        if(!DBA::isResult($contact)) {
-               logger("No contact found for ID" . $contact_id, LOGGER_DEBUG);
+               Logger::log("No contact found for ID" . $contact_id, Logger::DEBUG);
                throw new NotFoundException("no contact found to given ID");
        }
 
@@ -3669,12 +3670,12 @@ function api_friendships_destroy($type)
        $contact = DBA::selectFirst('contact', [], $condition);
 
        if (!DBA::isResult($contact)) {
-               logger("Not following Contact", LOGGER_DEBUG);
+               Logger::log("Not following Contact", Logger::DEBUG);
                throw new NotFoundException("Not following Contact");
        }
 
        if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
-               logger("Not supported", LOGGER_DEBUG);
+               Logger::log("Not supported", Logger::DEBUG);
                throw new ExpectationFailedException("Not supported");
        }
 
@@ -3685,7 +3686,7 @@ function api_friendships_destroy($type)
                Contact::terminateFriendship($owner, $contact, $dissolve);
        }
        else {
-               logger("No owner found", LOGGER_DEBUG);
+               Logger::log("No owner found", Logger::DEBUG);
                throw new NotFoundException("Error Processing Request");
        }
 
@@ -4485,10 +4486,10 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
        if ($imagedata) {
                $filetype = $imagedata['mime'];
        }
-       logger(
+       Logger::log(
                "File upload src: " . $src . " - filename: " . $filename .
                " - size: " . $filesize . " - type: " . $filetype,
-               LOGGER_DEBUG
+               Logger::DEBUG
        );
 
        // check if there was a php upload error
@@ -4520,7 +4521,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
        }
        if ($max_length > 0) {
                $Image->scaleDown($max_length);
-               logger("File upload: Scaling picture to new size " . $max_length, LOGGER_DEBUG);
+               Logger::log("File upload: Scaling picture to new size " . $max_length, Logger::DEBUG);
        }
        $width = $Image->getWidth();
        $height = $Image->getHeight();
@@ -4530,17 +4531,17 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
 
        if ($mediatype == "photo") {
                // upload normal image (scales 0, 1, 2)
-               logger("photo upload: starting new photo upload", LOGGER_DEBUG);
+               Logger::log("photo upload: starting new photo upload", Logger::DEBUG);
 
                $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 0, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                if (!$r) {
-                       logger("photo upload: image upload with scale 0 (original size) failed");
+                       Logger::log("photo upload: image upload with scale 0 (original size) failed");
                }
                if ($width > 640 || $height > 640) {
                        $Image->scaleDown(640);
                        $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 1, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if (!$r) {
-                               logger("photo upload: image upload with scale 1 (640x640) failed");
+                               Logger::log("photo upload: image upload with scale 1 (640x640) failed");
                        }
                }
 
@@ -4548,19 +4549,19 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
                        $Image->scaleDown(320);
                        $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 2, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if (!$r) {
-                               logger("photo upload: image upload with scale 2 (320x320) failed");
+                               Logger::log("photo upload: image upload with scale 2 (320x320) failed");
                        }
                }
-               logger("photo upload: new photo upload ended", LOGGER_DEBUG);
+               Logger::log("photo upload: new photo upload ended", Logger::DEBUG);
        } elseif ($mediatype == "profileimage") {
                // upload profile image (scales 4, 5, 6)
-               logger("photo upload: starting new profile image upload", LOGGER_DEBUG);
+               Logger::log("photo upload: starting new profile image upload", Logger::DEBUG);
 
                if ($width > 300 || $height > 300) {
                        $Image->scaleDown(300);
                        $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 4, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if (!$r) {
-                               logger("photo upload: profile image upload with scale 4 (300x300) failed");
+                               Logger::log("photo upload: profile image upload with scale 4 (300x300) failed");
                        }
                }
 
@@ -4568,7 +4569,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
                        $Image->scaleDown(80);
                        $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 5, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if (!$r) {
-                               logger("photo upload: profile image upload with scale 5 (80x80) failed");
+                               Logger::log("photo upload: profile image upload with scale 5 (80x80) failed");
                        }
                }
 
@@ -4576,11 +4577,11 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
                        $Image->scaleDown(48);
                        $r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 6, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if (!$r) {
-                               logger("photo upload: profile image upload with scale 6 (48x48) failed");
+                               Logger::log("photo upload: profile image upload with scale 6 (48x48) failed");
                        }
                }
                $Image->__destruct();
-               logger("photo upload: new profile image upload ended", LOGGER_DEBUG);
+               Logger::log("photo upload: new profile image upload ended", Logger::DEBUG);
        }
 
        if (isset($r) && $r) {
@@ -4807,7 +4808,7 @@ function api_friendica_remoteauth()
                'sec' => $sec, 'expire' => time() + 45];
        DBA::insert('profile_check', $fields);
 
-       logger($contact['name'] . ' ' . $sec, LOGGER_DEBUG);
+       Logger::log($contact['name'] . ' ' . $sec, Logger::DEBUG);
        $dest = ($url ? '&destination_url=' . $url : '');
 
        System::externalRedirect(
@@ -5055,7 +5056,7 @@ function api_in_reply_to($item)
                // https://github.com/friendica/friendica/issues/1010
                // This is a bugfix for that.
                if (intval($in_reply_to['status_id']) == intval($item['id'])) {
-                       logger('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], LOGGER_DEBUG);
+                       Logger::log('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], Logger::DEBUG);
                        $in_reply_to['status_id'] = null;
                        $in_reply_to['user_id'] = null;
                        $in_reply_to['status_id_str'] = null;
index 27cbd4289b212c985d320f4465ba58bc3b828ebd..8317746dd3a39c1a91ae13cf99a3ec66b81379b8 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -751,7 +752,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 
                        $threads = $conv->getTemplateData($conv_responses);
                        if (!$threads) {
-                               logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
+                               Logger::log('[ERROR] conversation : Failed to get template data.', Logger::DEBUG);
                                $threads = [];
                        }
                }
index 5665f485f457f7754fee59570f82a689abac87d1..bc9a7b9b0e6b6028ab9585131270a5a8c28e3fd2 100644 (file)
@@ -7,6 +7,7 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -29,7 +30,7 @@ function notification($params)
 
        // Temporary logging for finding the origin
        if (!isset($params['language']) || !isset($params['uid'])) {
-               logger('Missing parameters.' . System::callstack());
+               Logger::log('Missing parameters.' . System::callstack());
        }
 
        // Ensure that the important fields are set at any time
@@ -37,7 +38,7 @@ function notification($params)
        $user = DBA::selectFirst('user', $fields, ['uid' => $params['uid']]);
 
        if (!DBA::isResult($user)) {
-               logger('Unknown user ' . $params['uid']);
+               Logger::log('Unknown user ' . $params['uid']);
                return;
        }
 
@@ -133,7 +134,7 @@ function notification($params)
        if ($params['type'] == NOTIFY_COMMENT) {
                $thread = Item::selectFirstThreadForUser($params['uid'] ,['ignored'], ['iid' => $parent_id]);
                if (DBA::isResult($thread) && $thread["ignored"]) {
-                       logger("Thread ".$parent_id." will be ignored", LOGGER_DEBUG);
+                       Logger::log("Thread ".$parent_id." will be ignored", Logger::DEBUG);
                        L10n::popLang();
                        return;
                }
@@ -452,7 +453,7 @@ function notification($params)
        $itemlink  = $h['itemlink'];
 
        if ($show_in_notification_page) {
-               logger("adding notification entry", LOGGER_DEBUG);
+               Logger::log("adding notification entry", Logger::DEBUG);
                do {
                        $dups = false;
                        $hash = random_string();
@@ -529,14 +530,14 @@ function notification($params)
                || $params['type'] == NOTIFY_SYSTEM
                || $params['type'] == SYSTEM_EMAIL) {
 
-               logger('sending notification email');
+               Logger::log('sending notification email');
 
                if (isset($params['parent']) && (intval($params['parent']) != 0)) {
                        $id_for_parent = $params['parent']."@".$hostname;
 
                        // Is this the first email notification for this parent item and user?
                        if (!DBA::exists('notify-threads', ['master-parent-item' => $params['parent'], 'receiver-uid' => $params['uid']])) {
-                               logger("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), LOGGER_DEBUG);
+                               Logger::log("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), Logger::DEBUG);
 
                                $fields = ['notify-id' => $notify_id, 'master-parent-item' => $params['parent'],
                                        'receiver-uid' => $params['uid'], 'parent-item' => 0];
@@ -545,11 +546,11 @@ function notification($params)
                                $additional_mail_header .= "Message-ID: <${id_for_parent}>\n";
                                $log_msg = "include/enotify: No previous notification found for this parent:\n".
                                                "  parent: ${params['parent']}\n"."  uid   : ${params['uid']}\n";
-                               logger($log_msg, LOGGER_DEBUG);
+                               Logger::log($log_msg, Logger::DEBUG);
                        } else {
                                // If not, just "follow" the thread.
                                $additional_mail_header .= "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n";
-                               logger("There's already a notification for this parent.", LOGGER_DEBUG);
+                               Logger::log("There's already a notification for this parent.", Logger::DEBUG);
                        }
                }
 
index 54ae7a82ce88757f6a96949316b4e6266b5ce0aa..104547ab831137cbf75fd50ab95e98b81f01a4ed 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\Content\Feature;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -109,7 +110,7 @@ function query_page_info($url, $photo = "", $keywords = false, $keyword_blacklis
                $data["images"][0]["src"] = $photo;
        }
 
-       logger('fetch page info for ' . $url . ' ' . print_r($data, true), LOGGER_DEBUG);
+       Logger::log('fetch page info for ' . $url . ' ' . print_r($data, true), Logger::DEBUG);
 
        if (!$keywords && isset($data["keywords"])) {
                unset($data["keywords"]);
@@ -167,7 +168,7 @@ function add_page_info($url, $no_photos = false, $photo = "", $keywords = false,
 
 function add_page_info_to_body($body, $texturl = false, $no_photos = false)
 {
-       logger('add_page_info_to_body: fetch page info for body ' . $body, LOGGER_DEBUG);
+       Logger::log('add_page_info_to_body: fetch page info for body ' . $body, Logger::DEBUG);
 
        $URLSearchString = "^\[\]";
 
@@ -251,7 +252,7 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
                        // Test - remove before flight
                        //$tempfile = tempnam(get_temppath(), "ostatus2");
                        //file_put_contents($tempfile, $xml);
-                       logger("Consume OStatus messages ", LOGGER_DEBUG);
+                       Logger::log("Consume OStatus messages ", Logger::DEBUG);
                        OStatus::import($xml, $importer, $contact, $hub);
                }
 
@@ -260,7 +261,7 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
 
        if ($contact['network'] === Protocol::FEED) {
                if ($pass < 2) {
-                       logger("Consume feeds", LOGGER_DEBUG);
+                       Logger::log("Consume feeds", Logger::DEBUG);
                        Feed::import($xml, $importer, $contact, $hub);
                }
 
@@ -268,10 +269,10 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
        }
 
        if ($contact['network'] === Protocol::DFRN) {
-               logger("Consume DFRN messages", LOGGER_DEBUG);
+               Logger::log("Consume DFRN messages", Logger::DEBUG);
                $dfrn_importer = DFRN::getImporter($contact["id"], $importer["uid"]);
                if (!empty($dfrn_importer)) {
-                       logger("Now import the DFRN feed");
+                       Logger::log("Now import the DFRN feed");
                        DFRN::import($xml, $dfrn_importer, true);
                        return;
                }
@@ -310,7 +311,7 @@ function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'sub
 
        $params= 'hub.mode=' . $hubmode . '&hub.callback=' . urlencode($push_url) . '&hub.topic=' . urlencode($contact['poll']) . '&hub.verify=async&hub.verify_token=' . $verify_token;
 
-       logger('subscribe_to_hub: ' . $hubmode . ' ' . $contact['name'] . ' to hub ' . $url . ' endpoint: '  . $push_url . ' with verifier ' . $verify_token);
+       Logger::log('subscribe_to_hub: ' . $hubmode . ' ' . $contact['name'] . ' to hub ' . $url . ' endpoint: '  . $push_url . ' with verifier ' . $verify_token);
 
        if (!strlen($contact['hub-verify']) || ($contact['hub-verify'] != $verify_token)) {
                DBA::update('contact', ['hub-verify' => $verify_token], ['id' => $contact['id']]);
@@ -318,7 +319,7 @@ function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'sub
 
        $postResult = Network::post($url, $params);
 
-       logger('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), LOGGER_DEBUG);
+       Logger::log('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), Logger::DEBUG);
 
        return;
 
index 2d497bd58bc7d2d0a79a71553b5f64a750fe5db5..aa4b2c8dba3f694fb66c1a61043a4d74e6fef2cb 100644 (file)
@@ -23,6 +23,9 @@ use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Map;
 use Friendica\Util\Proxy as ProxyUtils;
 
+use Friendica\Core\Logger;
+use Friendica\Model\FileTag;
+
 require_once "include/conversation.php";
 
 /**
@@ -379,139 +382,6 @@ function attribute_contains($attr, $s) {
        return (count($a) && in_array($s,$a));
 }
 
-
-/* setup int->string log level map */
-$LOGGER_LEVELS = [];
-
-/**
- * @brief Logs the given message at the given log level
- *
- * log levels:
- * LOGGER_WARNING
- * LOGGER_INFO (default)
- * LOGGER_TRACE
- * LOGGER_DEBUG
- * LOGGER_DATA
- * LOGGER_ALL
- *
- * @global array $LOGGER_LEVELS
- * @param string $msg
- * @param int $level
- */
-function logger($msg, $level = LOGGER_INFO) {
-       $a = get_app();
-       global $LOGGER_LEVELS;
-
-       $debugging = Config::get('system', 'debugging');
-       $logfile   = Config::get('system', 'logfile');
-       $loglevel = intval(Config::get('system', 'loglevel'));
-
-       if (
-               !$debugging
-               || !$logfile
-               || $level > $loglevel
-       ) {
-               return;
-       }
-
-       if (count($LOGGER_LEVELS) == 0) {
-               foreach (get_defined_constants() as $k => $v) {
-                       if (substr($k, 0, 7) == "LOGGER_") {
-                               $LOGGER_LEVELS[$v] = substr($k, 7, 7);
-                       }
-               }
-       }
-
-       $process_id = session_id();
-
-       if ($process_id == '') {
-               $process_id = get_app()->process_id;
-       }
-
-       $callers = debug_backtrace();
-
-       if (count($callers) > 1) {
-               $function = $callers[1]['function'];
-       } else {
-               $function = '';
-       }
-
-       $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
-                       DateTimeFormat::utcNow(DateTimeFormat::ATOM),
-                       $process_id,
-                       $LOGGER_LEVELS[$level],
-                       basename($callers[0]['file']),
-                       $callers[0]['line'],
-                       $function,
-                       $msg
-               );
-
-       $stamp1 = microtime(true);
-       @file_put_contents($logfile, $logline, FILE_APPEND);
-       $a->saveTimestamp($stamp1, "file");
-}
-
-/**
- * @brief An alternative logger for development.
- * Works largely as logger() but allows developers
- * to isolate particular elements they are targetting
- * personally without background noise
- *
- * log levels:
- * LOGGER_WARNING
- * LOGGER_INFO (default)
- * LOGGER_TRACE
- * LOGGER_DEBUG
- * LOGGER_DATA
- * LOGGER_ALL
- *
- * @global array $LOGGER_LEVELS
- * @param string $msg
- * @param int $level
- */
-function dlogger($msg, $level = LOGGER_INFO) {
-       $a = get_app();
-
-       $logfile = Config::get('system', 'dlogfile');
-       if (!$logfile) {
-               return;
-       }
-
-       $dlogip = Config::get('system', 'dlogip');
-       if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip) {
-               return;
-       }
-
-       if (count($LOGGER_LEVELS) == 0) {
-               foreach (get_defined_constants() as $k => $v) {
-                       if (substr($k, 0, 7) == "LOGGER_") {
-                               $LOGGER_LEVELS[$v] = substr($k, 7, 7);
-                       }
-               }
-       }
-
-       $process_id = session_id();
-
-       if ($process_id == '') {
-               $process_id = $a->process_id;
-       }
-
-       $callers = debug_backtrace();
-       $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
-                       DateTimeFormat::utcNow(),
-                       $process_id,
-                       basename($callers[0]['file']),
-                       $callers[0]['line'],
-                       $callers[1]['function'],
-                       $msg
-               );
-
-       $stamp1 = microtime(true);
-       @file_put_contents($logfile, $logline, FILE_APPEND);
-       $a->saveTimestamp($stamp1, "file");
-}
-
-
 /**
  * Compare activity uri. Knows about activity namespace.
  *
@@ -1230,9 +1100,9 @@ function get_cats_and_terms($item)
        if ($cnt) {
                foreach ($matches as $mtch) {
                        $categories[] = [
-                               'name' => xmlify(file_tag_decode($mtch[1])),
+                               'name' => xmlify(FileTag::decode($mtch[1])),
                                'url' =>  "#",
-                               'removeurl' => ((local_user() == $item['uid'])?'filerm/' . $item['id'] . '?f=&cat=' . xmlify(file_tag_decode($mtch[1])):""),
+                               'removeurl' => ((local_user() == $item['uid'])?'filerm/' . $item['id'] . '?f=&cat=' . xmlify(FileTag::decode($mtch[1])):""),
                                'first' => $first,
                                'last' => false
                        ];
@@ -1251,9 +1121,9 @@ function get_cats_and_terms($item)
                if ($cnt) {
                        foreach ($matches as $mtch) {
                                $folders[] = [
-                                       'name' => xmlify(file_tag_decode($mtch[1])),
+                                       'name' => xmlify(FileTag::decode($mtch[1])),
                                        'url' =>  "#",
-                                       'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . xmlify(file_tag_decode($mtch[1])) : ""),
+                                       'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . xmlify(FileTag::decode($mtch[1])) : ""),
                                        'first' => $first,
                                        'last' => false
                                ];
@@ -1353,7 +1223,7 @@ function base64url_encode($s, $strip_padding = false) {
 function base64url_decode($s) {
 
        if (is_array($s)) {
-               logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
+               Logger::log('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
                return $s;
        }
 
@@ -1491,199 +1361,6 @@ function item_post_type($item) {
        return L10n::t('post');
 }
 
-// post categories and "save to file" use the same item.file table for storage.
-// We will differentiate the different uses by wrapping categories in angle brackets
-// and save to file categories in square brackets.
-// To do this we need to escape these characters if they appear in our tag.
-
-function file_tag_encode($s) {
-       return str_replace(['<','>','[',']'],['%3c','%3e','%5b','%5d'],$s);
-}
-
-function file_tag_decode($s) {
-       return str_replace(['%3c', '%3e', '%5b', '%5d'], ['<', '>', '[', ']'], $s);
-}
-
-function file_tag_file_query($table,$s,$type = 'file') {
-
-       if ($type == 'file') {
-               $str = preg_quote('[' . str_replace('%', '%%', file_tag_encode($s)) . ']');
-       } else {
-               $str = preg_quote('<' . str_replace('%', '%%', file_tag_encode($s)) . '>');
-       }
-       return " AND " . (($table) ? DBA::escape($table) . '.' : '') . "file regexp '" . DBA::escape($str) . "' ";
-}
-
-// ex. given music,video return <music><video> or [music][video]
-function file_tag_list_to_file($list, $type = 'file') {
-       $tag_list = '';
-       if (strlen($list)) {
-               $list_array = explode(",",$list);
-               if ($type == 'file') {
-                       $lbracket = '[';
-                       $rbracket = ']';
-               } else {
-                       $lbracket = '<';
-                       $rbracket = '>';
-               }
-
-               foreach ($list_array as $item) {
-                       if (strlen($item)) {
-                               $tag_list .= $lbracket . file_tag_encode(trim($item))  . $rbracket;
-                       }
-               }
-       }
-       return $tag_list;
-}
-
-// ex. given <music><video>[friends], return music,video or friends
-function file_tag_file_to_list($file, $type = 'file') {
-       $matches = false;
-       $list = '';
-       if ($type == 'file') {
-               $cnt = preg_match_all('/\[(.*?)\]/', $file, $matches, PREG_SET_ORDER);
-       } else {
-               $cnt = preg_match_all('/<(.*?)>/', $file, $matches, PREG_SET_ORDER);
-       }
-       if ($cnt) {
-               foreach ($matches as $mtch) {
-                       if (strlen($list)) {
-                               $list .= ',';
-                       }
-                       $list .= file_tag_decode($mtch[1]);
-               }
-       }
-
-       return $list;
-}
-
-function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
-       // $file_old - categories previously associated with an item
-       // $file_new - new list of categories for an item
-
-       if (!intval($uid)) {
-               return false;
-       } elseif ($file_old == $file_new) {
-               return true;
-       }
-
-       $saved = PConfig::get($uid, 'system', 'filetags');
-       if (strlen($saved)) {
-               if ($type == 'file') {
-                       $lbracket = '[';
-                       $rbracket = ']';
-                       $termtype = TERM_FILE;
-               } else {
-                       $lbracket = '<';
-                       $rbracket = '>';
-                       $termtype = TERM_CATEGORY;
-               }
-
-               $filetags_updated = $saved;
-
-               // check for new tags to be added as filetags in pconfig
-               $new_tags = [];
-               $check_new_tags = explode(",",file_tag_file_to_list($file_new,$type));
-
-               foreach ($check_new_tags as $tag) {
-                       if (!stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket)) {
-                               $new_tags[] = $tag;
-                       }
-               }
-
-               $filetags_updated .= file_tag_list_to_file(implode(",",$new_tags),$type);
-
-               // check for deleted tags to be removed from filetags in pconfig
-               $deleted_tags = [];
-               $check_deleted_tags = explode(",",file_tag_file_to_list($file_old,$type));
-
-               foreach ($check_deleted_tags as $tag) {
-                       if (!stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket)) {
-                               $deleted_tags[] = $tag;
-                       }
-               }
-
-               foreach ($deleted_tags as $key => $tag) {
-                       $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
-                               DBA::escape($tag),
-                               intval(TERM_OBJ_POST),
-                               intval($termtype),
-                               intval($uid));
-
-                       if (DBA::isResult($r)) {
-                               unset($deleted_tags[$key]);
-                       } else {
-                               $filetags_updated = str_replace($lbracket . file_tag_encode($tag) . $rbracket,'',$filetags_updated);
-                       }
-               }
-
-               if ($saved != $filetags_updated) {
-                       PConfig::set($uid, 'system', 'filetags', $filetags_updated);
-               }
-               return true;
-       } elseif (strlen($file_new)) {
-               PConfig::set($uid, 'system', 'filetags', $file_new);
-       }
-       return true;
-}
-
-function file_tag_save_file($uid, $item_id, $file)
-{
-       if (!intval($uid)) {
-               return false;
-       }
-
-       $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
-       if (DBA::isResult($item)) {
-               if (!stristr($item['file'],'[' . file_tag_encode($file) . ']')) {
-                       $fields = ['file' => $item['file'] . '[' . file_tag_encode($file) . ']'];
-                       Item::update($fields, ['id' => $item_id]);
-               }
-               $saved = PConfig::get($uid, 'system', 'filetags');
-               if (!strlen($saved) || !stristr($saved, '[' . file_tag_encode($file) . ']')) {
-                       PConfig::set($uid, 'system', 'filetags', $saved . '[' . file_tag_encode($file) . ']');
-               }
-               info(L10n::t('Item filed'));
-       }
-       return true;
-}
-
-function file_tag_unsave_file($uid, $item_id, $file, $cat = false)
-{
-       if (!intval($uid)) {
-               return false;
-       }
-
-       if ($cat == true) {
-               $pattern = '<' . file_tag_encode($file) . '>' ;
-               $termtype = TERM_CATEGORY;
-       } else {
-               $pattern = '[' . file_tag_encode($file) . ']' ;
-               $termtype = TERM_FILE;
-       }
-
-       $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
-       if (!DBA::isResult($item)) {
-               return false;
-       }
-
-       $fields = ['file' => str_replace($pattern,'',$item['file'])];
-       Item::update($fields, ['id' => $item_id]);
-
-       $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
-               DBA::escape($file),
-               intval(TERM_OBJ_POST),
-               intval($termtype),
-               intval($uid)
-       );
-       if (!DBA::isResult($r)) {
-               $saved = PConfig::get($uid, 'system', 'filetags');
-               PConfig::set($uid, 'system', 'filetags', str_replace($pattern, '', $saved));
-       }
-
-       return true;
-}
-
 function normalise_openid($s) {
        return trim(str_replace(['http://', 'https://'], ['', ''], $s), '/');
 }
index 48c45f2934bd3009d3dda04a3cecc1b666fc634e..a63cd83ae08d63809beae696abf7cff5f7bbe1b1 100644 (file)
@@ -6,6 +6,7 @@ use Friendica\App;
 use Friendica\Content\Widget;
 use Friendica\Core\ACL;
 use Friendica\Core\Addon;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -34,7 +35,7 @@ function acl_content(App $a)
                $search = $_REQUEST['query'];
        }
 
-       logger("Searching for ".$search." - type ".$type." conversation ".$conv_id, LOGGER_DEBUG);
+       Logger::log("Searching for ".$search." - type ".$type." conversation ".$conv_id, Logger::DEBUG);
 
        if ($search != '') {
                $sql_extra = "AND `name` LIKE '%%" . DBA::escape($search) . "%%'";
index 5de292916e1dc761449f5ea80967648baa145cf7..d4cbafe54bc99919feea859c52576eac3ca73182 100644 (file)
@@ -13,6 +13,7 @@ use Friendica\Content\Text\Markdown;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Theme;
 use Friendica\Core\Worker;
@@ -910,7 +911,7 @@ function admin_page_summary(App $a)
                $users+= $u['count'];
        }
 
-       logger('accounts: ' . print_r($accounts, true), LOGGER_DATA);
+       Logger::log('accounts: ' . print_r($accounts, true), Logger::DATA);
 
        $pending = Register::getPendingCount();
 
@@ -2399,12 +2400,12 @@ function admin_page_logs_post(App $a)
 function admin_page_logs(App $a)
 {
        $log_choices = [
-               LOGGER_WARNING => 'Warning',
-               LOGGER_INFO    => 'Info',
-               LOGGER_TRACE   => 'Trace',
-               LOGGER_DEBUG   => 'Debug',
-               LOGGER_DATA    => 'Data',
-               LOGGER_ALL     => 'All'
+               Logger::WARNING => 'Warning',
+               Logger::INFO    => 'Info',
+               Logger::TRACE   => 'Trace',
+               Logger::DEBUG   => 'Debug',
+               Logger::DATA    => 'Data',
+               Logger::ALL     => 'All'
        ];
 
        if (ini_get('log_errors')) {
@@ -2499,7 +2500,7 @@ function admin_page_features_post(App $a)
 {
        BaseModule::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
 
-       logger('postvars: ' . print_r($_POST, true), LOGGER_DATA);
+       Logger::log('postvars: ' . print_r($_POST, true), Logger::DATA);
 
        $features = Feature::get(false);
 
index 1cf562d64cae885e45fd9e07f3939b3041e40224..1ca04af50dc2bce40e2e56ba1d2ac03228a2a702 100644 (file)
@@ -6,6 +6,7 @@
 use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model;
@@ -78,7 +79,7 @@ function crepair_post(App $a)
        );
 
        if ($photo) {
-               logger('mod-crepair: updating photo from ' . $photo);
+               Logger::log('mod-crepair: updating photo from ' . $photo);
 
                Model\Contact::updateAvatar($photo, local_user(), $contact['id']);
        }
index c4110596648d15421514bd5be595eaa93a6ad067..0403085f85cc7485ea7ed3ad22ae867ef84b396c 100644 (file)
@@ -20,6 +20,7 @@
 use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -76,7 +77,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
 
                // These data elements may come from either the friend request notification form or $handsfree array.
                if (is_array($handsfree)) {
-                       logger('Confirm in handsfree mode');
+                       Logger::log('Confirm in handsfree mode');
                        $dfrn_id  = $handsfree['dfrn_id'];
                        $intro_id = $handsfree['intro_id'];
                        $duplex   = $handsfree['duplex'];
@@ -99,9 +100,9 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                        $cid = 0;
                }
 
-               logger('Confirming request for dfrn_id (issued) ' . $dfrn_id);
+               Logger::log('Confirming request for dfrn_id (issued) ' . $dfrn_id);
                if ($cid) {
-                       logger('Confirming follower with contact_id: ' . $cid);
+                       Logger::log('Confirming follower with contact_id: ' . $cid);
                }
 
                /*
@@ -124,7 +125,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                        intval($uid)
                );
                if (!DBA::isResult($r)) {
-                       logger('Contact not found in DB.');
+                       Logger::log('Contact not found in DB.');
                        notice(L10n::t('Contact not found.') . EOL);
                        notice(L10n::t('This may occasionally happen if contact was requested by both persons and it has already been approved.') . EOL);
                        return;
@@ -211,7 +212,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                                $params['page'] = 2;
                        }
 
-                       logger('Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params, true), LOGGER_DATA);
+                       Logger::log('Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params, true), Logger::DATA);
 
                        /*
                         *
@@ -223,7 +224,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
 
                        $res = Network::post($dfrn_confirm, $params, null, $redirects, 120)->getBody();
 
-                       logger(' Confirm: received data: ' . $res, LOGGER_DATA);
+                       Logger::log(' Confirm: received data: ' . $res, Logger::DATA);
 
                        // Now figure out what they responded. Try to be robust if the remote site is
                        // having difficulty and throwing up errors of some kind.
@@ -248,7 +249,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
 
                        if (stristr($res, "<status") === false) {
                                // wrong xml! stop here!
-                               logger('Unexpected response posting to ' . $dfrn_confirm);
+                               Logger::log('Unexpected response posting to ' . $dfrn_confirm);
                                notice(L10n::t('Unexpected response from remote site: ') . EOL . htmlspecialchars($res) . EOL);
                                return;
                        }
@@ -305,7 +306,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                 */
                Contact::updateAvatar($contact['photo'], $uid, $contact_id);
 
-               logger('dfrn_confirm: confirm - imported photos');
+               Logger::log('dfrn_confirm: confirm - imported photos');
 
                if ($network === Protocol::DFRN) {
                        $new_relation = Contact::FOLLOWER;
@@ -387,7 +388,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                if ((isset($new_relation) && $new_relation == Contact::FRIEND)) {
                        if (DBA::isResult($contact) && ($contact['network'] === Protocol::DIASPORA)) {
                                $ret = Diaspora::sendShare($user, $contact);
-                               logger('share returns: ' . $ret);
+                               Logger::log('share returns: ' . $ret);
                        }
                }
 
@@ -427,9 +428,9 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                $forum = (($page == 1) ? 1 : 0);
                $prv   = (($page == 2) ? 1 : 0);
 
-               logger('dfrn_confirm: requestee contacted: ' . $node);
+               Logger::log('dfrn_confirm: requestee contacted: ' . $node);
 
-               logger('dfrn_confirm: request: POST=' . print_r($_POST, true), LOGGER_DATA);
+               Logger::log('dfrn_confirm: request: POST=' . print_r($_POST, true), Logger::DATA);
 
                // If $aes_key is set, both of these items require unpacking from the hex transport encoding.
 
@@ -542,7 +543,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
 
                Contact::updateAvatar($photo, $local_uid, $dfrn_record);
 
-               logger('dfrn_confirm: request - photos imported');
+               Logger::log('dfrn_confirm: request - photos imported');
 
                $new_relation = Contact::SHARING;
 
@@ -582,7 +583,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                // Otherwise everything seems to have worked and we are almost done. Yay!
                // Send an email notification
 
-               logger('dfrn_confirm: request: info updated');
+               Logger::log('dfrn_confirm: request: info updated');
 
                $combined = null;
                $r = q("SELECT `contact`.*, `user`.*
index 8a53ac09b6cac594a889a8d0c88833fe97d7c575..b14c71fb862c27d3315531ef5c53c3a719b57377 100644 (file)
@@ -8,6 +8,7 @@
 
 use Friendica\App;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -17,7 +18,7 @@ use Friendica\Protocol\Diaspora;
 require_once 'include/items.php';
 
 function dfrn_notify_post(App $a) {
-       logger(__function__, LOGGER_TRACE);
+       Logger::log(__function__, Logger::TRACE);
 
        $postdata = file_get_contents('php://input');
 
@@ -63,7 +64,7 @@ function dfrn_notify_post(App $a) {
        }
 
        if (!DBA::exists('challenge', ['dfrn-id' => $dfrn_id, 'challenge' => $challenge])) {
-               logger('could not match challenge to dfrn_id ' . $dfrn_id . ' challenge=' . $challenge);
+               Logger::log('could not match challenge to dfrn_id ' . $dfrn_id . ' challenge=' . $challenge);
                System::xmlExit(3, 'Could not match challenge');
        }
 
@@ -71,7 +72,7 @@ function dfrn_notify_post(App $a) {
 
        $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
        if (!DBA::isResult($user)) {
-               logger('User not found for nickname ' . $a->argv[1]);
+               Logger::log('User not found for nickname ' . $a->argv[1]);
                System::xmlExit(3, 'User not found');
        }
 
@@ -94,7 +95,7 @@ function dfrn_notify_post(App $a) {
 
        $contact = DBA::selectFirst('contact', ['id'], $condition);
        if (!DBA::isResult($contact)) {
-               logger('contact not found for dfrn_id ' . $dfrn_id);
+               Logger::log('contact not found for dfrn_id ' . $dfrn_id);
                System::xmlExit(3, 'Contact not found');
        }
 
@@ -117,12 +118,12 @@ function dfrn_notify_post(App $a) {
 
        $importer = Contact::updateSslPolicy($importer, $ssl_policy);
 
-       logger('data: ' . $data, LOGGER_DATA);
+       Logger::log('data: ' . $data, Logger::DATA);
 
        if ($dissolve == 1) {
                // Relationship is dissolved permanently
                Contact::remove($importer['id']);
-               logger('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']);
+               Logger::log('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']);
                System::xmlExit(0, 'relationship dissolved');
        }
 
@@ -134,12 +135,12 @@ function dfrn_notify_post(App $a) {
                // if local rino is lower than remote rino, abort: should not happen!
                // but only for $remote_rino > 1, because old code did't send rino version
                if ($rino_remote > 1 && $rino < $rino_remote) {
-                       logger("rino version '$rino_remote' is lower than supported '$rino'");
+                       Logger::log("rino version '$rino_remote' is lower than supported '$rino'");
                        System::xmlExit(0, "rino version '$rino_remote' is lower than supported '$rino'");
                }
 
                $rawkey = hex2bin(trim($key));
-               logger('rino: md5 raw key: ' . md5($rawkey), LOGGER_DATA);
+               Logger::log('rino: md5 raw key: ' . md5($rawkey), Logger::DATA);
 
                $final_key = '';
 
@@ -165,14 +166,14 @@ function dfrn_notify_post(App $a) {
                                $data = DFRN::aesDecrypt(hex2bin($data), $final_key);
                                break;
                        default:
-                               logger("rino: invalid sent version '$rino_remote'");
+                               Logger::log("rino: invalid sent version '$rino_remote'");
                                System::xmlExit(0, "Invalid sent version '$rino_remote'");
                }
 
-               logger('rino: decrypted data: ' . $data, LOGGER_DATA);
+               Logger::log('rino: decrypted data: ' . $data, Logger::DATA);
        }
 
-       logger('Importing post from ' . $importer['addr'] . ' to ' . $importer['nickname'] . ' with the RINO ' . $rino_remote . ' encryption.', LOGGER_DEBUG);
+       Logger::log('Importing post from ' . $importer['addr'] . ' to ' . $importer['nickname'] . ' with the RINO ' . $rino_remote . ' encryption.', Logger::DEBUG);
 
        $ret = DFRN::import($data, $importer);
        System::xmlExit($ret, 'Processed');
@@ -191,7 +192,7 @@ function dfrn_dispatch_public($postdata)
        // Fetch the corresponding public contact
        $contact = Contact::getDetailsByAddr($msg['author'], 0);
        if (!$contact) {
-               logger('Contact not found for address ' . $msg['author']);
+               Logger::log('Contact not found for address ' . $msg['author']);
                System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found');
        }
 
@@ -199,11 +200,11 @@ function dfrn_dispatch_public($postdata)
 
        // This should never fail
        if (empty($importer)) {
-               logger('Contact not found for address ' . $msg['author']);
+               Logger::log('Contact not found for address ' . $msg['author']);
                System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found');
        }
 
-       logger('Importing post from ' . $msg['author'] . ' with the public envelope.', LOGGER_DEBUG);
+       Logger::log('Importing post from ' . $msg['author'] . ' with the public envelope.', Logger::DEBUG);
 
        // Now we should be able to import it
        $ret = DFRN::import($msg['message'], $importer);
@@ -223,7 +224,7 @@ function dfrn_dispatch_private($user, $postdata)
                // Otherwise there should be a public contact
                $cid = Contact::getIdForURL($msg['author']);
                if (!$cid) {
-                       logger('Contact not found for address ' . $msg['author']);
+                       Logger::log('Contact not found for address ' . $msg['author']);
                        System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found');
                }
        }
@@ -232,11 +233,11 @@ function dfrn_dispatch_private($user, $postdata)
 
        // This should never fail
        if (empty($importer)) {
-               logger('Contact not found for address ' . $msg['author']);
+               Logger::log('Contact not found for address ' . $msg['author']);
                System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found');
        }
 
-       logger('Importing post from ' . $msg['author'] . ' to ' . $user['nickname'] . ' with the private envelope.', LOGGER_DEBUG);
+       Logger::log('Importing post from ' . $msg['author'] . ' to ' . $user['nickname'] . ' with the private envelope.', Logger::DEBUG);
 
        // Now we should be able to import it
        $ret = DFRN::import($msg['message'], $importer);
@@ -258,7 +259,7 @@ function dfrn_notify_content(App $a) {
                $type = "";
                $last_update = "";
 
-               logger('new notification dfrn_id=' . $dfrn_id);
+               Logger::log('new notification dfrn_id=' . $dfrn_id);
 
                $direction = (-1);
                if (strpos($dfrn_id,':') == 1) {
@@ -276,11 +277,11 @@ function dfrn_notify_content(App $a) {
                        'type' => $type, 'last_update' => $last_update];
                DBA::insert('challenge', $fields);
 
-               logger('challenge=' . $hash, LOGGER_DATA);
+               Logger::log('challenge=' . $hash, Logger::DATA);
 
                $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
                if (!DBA::isResult($user)) {
-                       logger('User not found for nickname ' . $a->argv[1]);
+                       Logger::log('User not found for nickname ' . $a->argv[1]);
                        killme();
                }
 
@@ -305,18 +306,18 @@ function dfrn_notify_content(App $a) {
 
                $contact = DBA::selectFirst('contact', ['id'], $condition);
                if (!DBA::isResult($contact)) {
-                       logger('contact not found for dfrn_id ' . $dfrn_id);
+                       Logger::log('contact not found for dfrn_id ' . $dfrn_id);
                        System::xmlExit(3, 'Contact not found');
                }
 
                // $importer in this case contains the contact record for the remote contact joined with the user record of our user.
                $importer = DFRN::getImporter($contact['id'], $user['uid']);
                if (empty($importer)) {
-                       logger('No importer data found for user ' . $a->argv[1] . ' and contact ' . $dfrn_id);
+                       Logger::log('No importer data found for user ' . $a->argv[1] . ' and contact ' . $dfrn_id);
                        killme();
                }
 
-               logger("Remote rino version: ".$rino_remote." for ".$importer["url"], LOGGER_DATA);
+               Logger::log("Remote rino version: ".$rino_remote." for ".$importer["url"], Logger::DATA);
 
                $challenge    = '';
                $encrypted_id = '';
@@ -344,7 +345,7 @@ function dfrn_notify_content(App $a) {
                $rino = Config::get('system', 'rino_encrypt');
                $rino = intval($rino);
 
-               logger("Local rino version: ". $rino, LOGGER_DATA);
+               Logger::log("Local rino version: ". $rino, Logger::DATA);
 
                // if requested rino is lower than enabled local rino, lower local rino version
                // if requested rino is higher than enabled local rino, reply with local rino
index 354cf6b4caafcfb608a53eb7f4d31247c3a72b97..a961506d17bdba1282d2ece568c7a0e14c7b6735 100644 (file)
@@ -7,6 +7,7 @@
 use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Module\Login;
@@ -68,7 +69,7 @@ function dfrn_poll_init(App $a)
                        $user = $r[0]['nickname'];
                }
 
-               logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $user);
+               Logger::log('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $user);
                header("Content-type: application/atom+xml");
                echo DFRN::feed('', $user, $last_update, 0, $hidewall);
                killme();
@@ -104,7 +105,7 @@ function dfrn_poll_init(App $a)
                if (DBA::isResult($r)) {
                        $s = Network::fetchUrl($r[0]['poll'] . '?dfrn_id=' . $my_id . '&type=profile-check');
 
-                       logger("dfrn_poll: old profile returns " . $s, LOGGER_DATA);
+                       Logger::log("dfrn_poll: old profile returns " . $s, Logger::DATA);
 
                        if (strlen($s)) {
                                $xml = XML::parseString($s);
@@ -191,7 +192,7 @@ function dfrn_poll_init(App $a)
                        }
 
                        if ($final_dfrn_id != $orig_id) {
-                               logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
+                               Logger::log('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, Logger::DEBUG);
                                // did not decode properly - cannot trust this site
                                System::xmlExit(3, 'Bad decryption');
                        }
@@ -238,7 +239,7 @@ function dfrn_poll_post(App $a)
 
        if ($ptype === 'profile-check') {
                if (strlen($challenge) && strlen($sec)) {
-                       logger('dfrn_poll: POST: profile-check');
+                       Logger::log('dfrn_poll: POST: profile-check');
 
                        DBA::delete('profile_check', ["`expire` < ?", time()]);
                        $r = q("SELECT * FROM `profile_check` WHERE `sec` = '%s' ORDER BY `expire` DESC LIMIT 1",
@@ -283,7 +284,7 @@ function dfrn_poll_post(App $a)
                        }
 
                        if ($final_dfrn_id != $orig_id) {
-                               logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
+                               Logger::log('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, Logger::DEBUG);
                                // did not decode properly - cannot trust this site
                                System::xmlExit(3, 'Bad decryption');
                        }
@@ -372,7 +373,7 @@ function dfrn_poll_post(App $a)
                // NOTREACHED
        } else {
                // Update the writable flag if it changed
-               logger('dfrn_poll: post request feed: ' . print_r($_POST, true), LOGGER_DATA);
+               Logger::log('dfrn_poll: post request feed: ' . print_r($_POST, true), Logger::DATA);
                if ($dfrn_version >= 2.21) {
                        if ($perm === 'rw') {
                                $writable = 1;
@@ -510,15 +511,15 @@ function dfrn_poll_content(App $a)
                                ])->getBody();
                        }
 
-                       logger("dfrn_poll: sec profile: " . $s, LOGGER_DATA);
+                       Logger::log("dfrn_poll: sec profile: " . $s, Logger::DATA);
 
                        if (strlen($s) && strstr($s, '<?xml')) {
                                $xml = XML::parseString($s);
 
-                               logger('dfrn_poll: profile: parsed xml: ' . print_r($xml, true), LOGGER_DATA);
+                               Logger::log('dfrn_poll: profile: parsed xml: ' . print_r($xml, true), Logger::DATA);
 
-                               logger('dfrn_poll: secure profile: challenge: ' . $xml->challenge . ' expecting ' . $hash);
-                               logger('dfrn_poll: secure profile: sec: ' . $xml->sec . ' expecting ' . $sec);
+                               Logger::log('dfrn_poll: secure profile: challenge: ' . $xml->challenge . ' expecting ' . $hash);
+                               Logger::log('dfrn_poll: secure profile: sec: ' . $xml->sec . ' expecting ' . $sec);
 
                                if (((int) $xml->status == 0) && ($xml->challenge == $hash) && ($xml->sec == $sec)) {
                                        $_SESSION['authenticated'] = 1;
index 141e5e5aca64e3d3af6aea352d160782dd279151..674248be2292457859accc94d63c22d6d7347bc0 100644 (file)
@@ -15,6 +15,7 @@
 use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -57,7 +58,7 @@ function dfrn_request_init(App $a)
 function dfrn_request_post(App $a)
 {
        if (($a->argc != 2) || (!count($a->profile))) {
-               logger('Wrong count of argc or profiles: argc=' . $a->argc . ',profile()=' . count($a->profile));
+               Logger::log('Wrong count of argc or profiles: argc=' . $a->argc . ',profile()=' . count($a->profile));
                return;
        }
 
@@ -297,7 +298,7 @@ function dfrn_request_post(App $a)
                        $network = Protocol::DFRN;
                }
 
-               logger('dfrn_request: url: ' . $url . ',network=' . $network, LOGGER_DEBUG);
+               Logger::log('dfrn_request: url: ' . $url . ',network=' . $network, Logger::DEBUG);
 
                if ($network === Protocol::DFRN) {
                        $ret = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1",
index e4a17804b384e2d4ccad49fc0971a32d1d4fef6e..d95404a5b135ead15ce714a898b5b19525ba3599 100644 (file)
@@ -10,6 +10,7 @@ use Friendica\Content\Text\HTML;
 use Friendica\Core\ACL;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -74,7 +75,7 @@ function display_init(App $a)
        }
 
        if (!empty($_SERVER['HTTP_ACCEPT']) && strstr($_SERVER['HTTP_ACCEPT'], 'application/atom+xml')) {
-               logger('Directly serving XML for id '.$item["id"], LOGGER_DEBUG);
+               Logger::log('Directly serving XML for id '.$item["id"], Logger::DEBUG);
                displayShowFeed($item["id"], false);
        }
 
index 780145ed3f72d885791cc6f6be7c1a3bfbe574d3..83fcdca56627287114b38f44c2d49ba5078dad32 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
 use Friendica\Core\System;
+use Friendcia\Model\FileTag;
 use Friendica\Model\Item;
 use Friendica\Database\DBA;
 
@@ -118,7 +119,7 @@ function editpost_content(App $a)
                '$jotnets' => $jotnets,
                '$title' => htmlspecialchars($item['title']),
                '$placeholdertitle' => L10n::t('Set title'),
-               '$category' => file_tag_file_to_list($item['file'], 'category'),
+               '$category' => FileTag::fileToList($item['file'], 'category'),
                '$placeholdercategory' => (Feature::isEnabled(local_user(),'categories') ? L10n::t("Categories \x28comma-separated list\x29") : ''),
                '$emtitle' => L10n::t('Example: bob@example.com, mary@example.com'),
                '$lockstate' => $lockstate,
index 81ab79c722e09c895ea752608bc33a94df0f7e3a..a13080a8e306b361ff861c7bec0d916cbd42b795 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Content\Nav;
 use Friendica\Content\Widget\CalendarExport;
 use Friendica\Core\ACL;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -47,7 +48,7 @@ function events_init(App $a)
 function events_post(App $a)
 {
 
-       logger('post: ' . print_r($_REQUEST, true), LOGGER_DATA);
+       Logger::log('post: ' . print_r($_REQUEST, true), Logger::DATA);
 
        if (!local_user()) {
                return;
index d8c89f8554d71cd952d06c66428f9fccec982919..050fa70633eea4b3eeaa8152a267eb35817ecfe5 100644 (file)
@@ -4,7 +4,9 @@
  */
 use Friendica\App;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
+use Friendica\Model\FileTag;
 
 require_once 'include/items.php';
 
@@ -17,15 +19,15 @@ function filer_content(App $a)
        $term = unxmlify(trim(defaults($_GET, 'term', '')));
        $item_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
 
-       logger('filer: tag ' . $term . ' item ' . $item_id);
+       Logger::log('filer: tag ' . $term . ' item ' . $item_id);
 
        if ($item_id && strlen($term)) {
                // file item
-               file_tag_save_file(local_user(), $item_id, $term);
+               FileTag::saveFile(local_user(), $item_id, $term);
        } else {
                // return filer dialog
                $filetags = PConfig::get(local_user(), 'system', 'filetags');
-               $filetags = file_tag_file_to_list($filetags, 'file');
+               $filetags = FileTag::fileToList($filetags, 'file');
                $filetags = explode(",", $filetags);
 
                $tpl = get_markup_template("filer_dialog.tpl");
index 733d67b593fdcaff4c7737955262bb63e724cb30..d899d8f3f25a34155be3cb274b399e7ccc591e7b 100644 (file)
@@ -1,11 +1,14 @@
 <?php
 
 use Friendica\App;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
+use Friendica\Model\FileTag;
 
-function filerm_content(App $a) {
-
-       if (! local_user()) {
+function filerm_content(App $a)
+{
+       if (! local_user())
+       {
                killme();
        }
 
@@ -13,19 +16,20 @@ function filerm_content(App $a) {
        $cat = unxmlify(trim($_GET['cat']));
 
        $category = (($cat) ? true : false);
-       if ($category) {
+
+       if ($category)
+       {
                $term = $cat;
        }
 
        $item_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
 
-       logger('filerm: tag ' . $term . ' item ' . $item_id);
+       Logger::log('filerm: tag ' . $term . ' item ' . $item_id);
 
-       if ($item_id && strlen($term)) {
-               file_tag_unsave_file(local_user(),$item_id,$term, $category);
+       if ($item_id && strlen($term))
+       {
+               FileTag::unsaveFile(local_user(), $item_id, $term, $category);
        }
 
-       //$a->internalRedirect('network');
-
        killme();
 }
index 34174a36d539c3cd8a0ec096b73b0cf024e99a47..c7dbfd21c689896457a4e34bfaf7c577508cd279 100644 (file)
@@ -22,12 +22,14 @@ use Friendica\Content\Text\HTML;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
+use Friendica\Model\FileTag;
 use Friendica\Model\Item;
 use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\Email;
@@ -56,7 +58,7 @@ function item_post(App $a) {
 
        Addon::callHooks('post_local_start', $_REQUEST);
 
-       logger('postvars ' . print_r($_REQUEST, true), LOGGER_DATA);
+       Logger::log('postvars ' . print_r($_REQUEST, true), Logger::DATA);
 
        $api_source = defaults($_REQUEST, 'api_source', false);
 
@@ -72,7 +74,7 @@ function item_post(App $a) {
         */
        if (!$preview && !empty($_REQUEST['post_id_random'])) {
                if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
-                       logger("item post: duplicate post", LOGGER_DEBUG);
+                       Logger::log("item post: duplicate post", Logger::DEBUG);
                        item_post_return(System::baseUrl(), $api_source, $return_path);
                } else {
                        $_SESSION['post-random'] = $_REQUEST['post_id_random'];
@@ -130,7 +132,7 @@ function item_post(App $a) {
        }
 
        if ($parent) {
-               logger('mod_item: item_post parent=' . $parent);
+               Logger::log('mod_item: item_post parent=' . $parent);
        }
 
        $post_id     = intval(defaults($_REQUEST, 'post_id', 0));
@@ -153,7 +155,7 @@ function item_post(App $a) {
        // Check for multiple posts with the same message id (when the post was created via API)
        if (($message_id != '') && ($profile_uid != 0)) {
                if (Item::exists(['uri' => $message_id, 'uid' => $profile_uid])) {
-                       logger("Message with URI ".$message_id." already exists for user ".$profile_uid, LOGGER_DEBUG);
+                       Logger::log("Message with URI ".$message_id." already exists for user ".$profile_uid, Logger::DEBUG);
                        return 0;
                }
        }
@@ -290,17 +292,21 @@ function item_post(App $a) {
                }
        }
 
-       if (!empty($categories)) {
+       if (!empty($categories))
+       {
                // get the "fileas" tags for this post
-               $filedas = file_tag_file_to_list($categories, 'file');
+               $filedas = FileTag::fileToList($categories, 'file');
        }
+
        // save old and new categories, so we can determine what needs to be deleted from pconfig
        $categories_old = $categories;
-       $categories = file_tag_list_to_file(trim(defaults($_REQUEST, 'category', '')), 'category');
+       $categories = FileTag::listToFile(trim(defaults($_REQUEST, 'category', '')), 'category');
        $categories_new = $categories;
-       if (!empty($filedas)) {
+
+       if (!empty($filedas))
+       {
                // append the fileas stuff to the new categories list
-               $categories .= file_tag_list_to_file($filedas, 'file');
+               $categories .= FileTag::listToFile($filedas, 'file');
        }
 
        // get contact info for poster
@@ -669,7 +675,7 @@ function item_post(App $a) {
                $datarray["author-network"] = Protocol::DFRN;
 
                $o = conversation($a, [array_merge($contact_record, $datarray)], new Pager($a->query_string), 'search', false, true);
-               logger('preview: ' . $o);
+               Logger::log('preview: ' . $o);
                echo json_encode(['preview' => $o]);
                exit();
        }
@@ -677,7 +683,7 @@ function item_post(App $a) {
        Addon::callHooks('post_local',$datarray);
 
        if (!empty($datarray['cancel'])) {
-               logger('mod_item: post cancelled by addon.');
+               Logger::log('mod_item: post cancelled by addon.');
                if ($return_path) {
                        $a->internalRedirect($return_path);
                }
@@ -711,10 +717,10 @@ function item_post(App $a) {
                Item::update($fields, ['id' => $post_id]);
 
                // update filetags in pconfig
-               file_tag_update_pconfig($uid,$categories_old,$categories_new,'category');
+               FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
 
                if (!empty($_REQUEST['return']) && strlen($return_path)) {
-                       logger('return: ' . $return_path);
+                       Logger::log('return: ' . $return_path);
                        $a->internalRedirect($return_path);
                }
                killme();
@@ -736,19 +742,19 @@ function item_post(App $a) {
        $post_id = Item::insert($datarray);
 
        if (!$post_id) {
-               logger("Item wasn't stored.");
+               Logger::log("Item wasn't stored.");
                $a->internalRedirect($return_path);
        }
 
        $datarray = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
 
        if (!DBA::isResult($datarray)) {
-               logger("Item with id ".$post_id." couldn't be fetched.");
+               Logger::log("Item with id ".$post_id." couldn't be fetched.");
                $a->internalRedirect($return_path);
        }
 
        // update filetags in pconfig
-       file_tag_update_pconfig($uid, $categories_old, $categories_new, 'category');
+       FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
 
        // These notifications are sent if someone else is commenting other your wall
        if ($parent) {
@@ -833,7 +839,7 @@ function item_post(App $a) {
        // We don't fork a new process since this is done anyway with the following command
        Worker::add(['priority' => PRIORITY_HIGH, 'dont_fork' => true], "CreateShadowEntry", $post_id);
 
-       logger('post_complete');
+       Logger::log('post_complete');
 
        if ($api_source) {
                return $post_id;
@@ -861,7 +867,7 @@ function item_post_return($baseurl, $api_source, $return_path)
                $json['reload'] = $baseurl . '/' . $_REQUEST['jsreload'];
        }
 
-       logger('post_json: ' . print_r($json, true), LOGGER_DEBUG);
+       Logger::log('post_json: ' . print_r($json, true), Logger::DEBUG);
 
        echo json_encode($json);
        killme();
index 6f02e8c1139d012e4387c2320916c1d66ac12b07..6ba353d7e51c75dbf080ba8c465ec0c844792e41 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
@@ -871,7 +872,7 @@ function networkThreadedView(App $a, $update, $parent)
                                $_SESSION['network_last_date'] = $tag_top_limit;
                        }
 
-                       logger('Tagged items: ' . count($data) . ' - ' . $bottom_limit . ' - ' . $top_limit . ' - ' . local_user().' - '.(int)$update);
+                       Logger::log('Tagged items: ' . count($data) . ' - ' . $bottom_limit . ' - ' . $top_limit . ' - ' . local_user().' - '.(int)$update);
                        $s = [];
                        foreach ($r as $item) {
                                $s[$item['uri']] = $item;
index ed0166838fdc3df1733d15328234051a80a8a23e..ca4a622fbb8e7afd78d334c99960e2c065e5155f 100644 (file)
@@ -8,6 +8,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Util\Network;
@@ -172,7 +173,7 @@ function nodeinfo_cron() {
                return;
        }
 
-       logger('cron_start');
+       Logger::log('cron_start');
 
        $users = q("SELECT `user`.`uid`, `user`.`login_date`, `contact`.`last-item`
                        FROM `user`
@@ -203,22 +204,22 @@ function nodeinfo_cron() {
                Config::set('nodeinfo', 'active_users_halfyear', $active_users_halfyear);
                Config::set('nodeinfo', 'active_users_monthly', $active_users_monthly);
 
-               logger('total_users: ' . $total_users . '/' . $active_users_halfyear. '/' . $active_users_monthly, LOGGER_DEBUG);
+               Logger::log('total_users: ' . $total_users . '/' . $active_users_halfyear. '/' . $active_users_monthly, Logger::DEBUG);
        }
 
        $local_posts = DBA::count('thread', ["`wall` AND NOT `deleted` AND `uid` != 0"]);
        Config::set('nodeinfo', 'local_posts', $local_posts);
-       logger('local_posts: ' . $local_posts, LOGGER_DEBUG);
+       Logger::log('local_posts: ' . $local_posts, Logger::DEBUG);
 
        $local_comments = DBA::count('item', ["`origin` AND `id` != `parent` AND NOT `deleted` AND `uid` != 0"]);
        Config::set('nodeinfo', 'local_comments', $local_comments);
-       logger('local_comments: ' . $local_comments, LOGGER_DEBUG);
+       Logger::log('local_comments: ' . $local_comments, Logger::DEBUG);
 
        // Now trying to register
        $url = 'http://the-federation.info/register/'.$a->getHostName();
-       logger('registering url: '.$url, LOGGER_DEBUG);
+       Logger::log('registering url: '.$url, Logger::DEBUG);
        $ret = Network::fetchUrl($url);
-       logger('registering answer: '.$ret, LOGGER_DEBUG);
+       Logger::log('registering answer: '.$ret, Logger::DEBUG);
 
-       logger('cron_end');
+       Logger::log('cron_end');
 }
index 93a07a4b43523d1fffb355a7e7a70a5026bf874a..d1404ba804f4afec2f65de81db24d96a7ec9ff4e 100644 (file)
@@ -7,6 +7,7 @@ use Friendica\App;
 use Friendica\Core\Authentication;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 
@@ -16,7 +17,7 @@ function openid_content(App $a) {
        if($noid)
                $a->internalRedirect();
 
-       logger('mod_openid ' . print_r($_REQUEST,true), LOGGER_DATA);
+       Logger::log('mod_openid ' . print_r($_REQUEST,true), Logger::DATA);
 
        if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) {
 
@@ -27,7 +28,7 @@ function openid_content(App $a) {
                        $authid = $_REQUEST['openid_identity'];
 
                        if(! strlen($authid)) {
-                               logger(L10n::t('OpenID protocol error. No ID returned.') . EOL);
+                               Logger::log(L10n::t('OpenID protocol error. No ID returned.') . EOL);
                                $a->internalRedirect();
                        }
 
index f35c584feb3bf66a623c72efb4d7fae4ae9596dc..a1bacb0d8f775b5441d8b9052c8c6c4443ced6b6 100644 (file)
@@ -11,6 +11,7 @@
  */
 use Friendica\App;
 use Friendica\Core\Addon;
+use Friendica\Core\Logger;
 use Friendica\Util\Network;
 use Friendica\Util\ParseUrl;
 
@@ -54,7 +55,7 @@ function parse_url_content(App $a)
                }
        }
 
-       logger($url);
+       Logger::log($url);
 
        // Check if the URL is an image, video or audio file. If so format
        // the URL with the corresponding BBCode media tag
@@ -114,7 +115,7 @@ function parse_url_content(App $a)
 
                $result = sprintf($template, $url, ($title) ? $title : $url, $text) . $str_tags;
 
-               logger('(unparsed): returns: ' . $result);
+               Logger::log('(unparsed): returns: ' . $result);
 
                echo $result;
                exit();
index f5b1bf91901fc0b80da8f06ff3b67ee8946627a4..8ddb0010d13ca79db6cd041951d9e1f06eceabc0 100644 (file)
@@ -12,6 +12,7 @@ use Friendica\Core\ACL;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -141,9 +142,9 @@ function photos_init(App $a) {
 
 function photos_post(App $a)
 {
-       logger('mod-photos: photos_post: begin' , LOGGER_DEBUG);
-       logger('mod_photos: REQUEST ' . print_r($_REQUEST, true), LOGGER_DATA);
-       logger('mod_photos: FILES '   . print_r($_FILES, true), LOGGER_DATA);
+       Logger::log('mod-photos: photos_post: begin' , Logger::DEBUG);
+       Logger::log('mod_photos: REQUEST ' . print_r($_REQUEST, true), Logger::DATA);
+       Logger::log('mod_photos: FILES '   . print_r($_FILES, true), Logger::DATA);
 
        $phototypes = Image::supportedTypes();
 
@@ -189,7 +190,7 @@ function photos_post(App $a)
 
        if (!$owner_record) {
                notice(L10n::t('Contact information unavailable') . EOL);
-               logger('photos_post: unable to locate contact record for page owner. uid=' . $page_owner_uid);
+               Logger::log('photos_post: unable to locate contact record for page owner. uid=' . $page_owner_uid);
                killme();
        }
 
@@ -379,7 +380,7 @@ function photos_post(App $a)
                }
 
                if (!empty($_POST['rotate']) && (intval($_POST['rotate']) == 1 || intval($_POST['rotate']) == 2)) {
-                       logger('rotate');
+                       Logger::log('rotate');
 
                        $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = 0 LIMIT 1",
                                DBA::escape($resource_id),
@@ -706,7 +707,7 @@ function photos_post(App $a)
        $album    = !empty($_REQUEST['album'])    ? notags(trim($_REQUEST['album']))    : '';
        $newalbum = !empty($_REQUEST['newalbum']) ? notags(trim($_REQUEST['newalbum'])) : '';
 
-       logger('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , LOGGER_DEBUG);
+       Logger::log('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , Logger::DEBUG);
 
        if (!strlen($album)) {
                if (strlen($newalbum)) {
@@ -799,7 +800,7 @@ function photos_post(App $a)
                $type = Image::guessType($filename);
        }
 
-       logger('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
+       Logger::log('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', Logger::DEBUG);
 
        $maximagesize = Config::get('system', 'maximagesize');
 
@@ -819,14 +820,14 @@ function photos_post(App $a)
                return;
        }
 
-       logger('mod/photos.php: photos_post(): loading the contents of ' . $src , LOGGER_DEBUG);
+       Logger::log('mod/photos.php: photos_post(): loading the contents of ' . $src , Logger::DEBUG);
 
        $imagedata = @file_get_contents($src);
 
        $image = new Image($imagedata, $type);
 
        if (!$image->isValid()) {
-               logger('mod/photos.php: photos_post(): unable to process image' , LOGGER_DEBUG);
+               Logger::log('mod/photos.php: photos_post(): unable to process image' , Logger::DEBUG);
                notice(L10n::t('Unable to process image.') . EOL);
                @unlink($src);
                $foo = 0;
@@ -855,7 +856,7 @@ function photos_post(App $a)
        $r = Photo::store($image, $page_owner_uid, $visitor, $photo_hash, $filename, $album, 0 , 0, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny);
 
        if (!$r) {
-               logger('mod/photos.php: photos_post(): image store failed', LOGGER_DEBUG);
+               Logger::log('mod/photos.php: photos_post(): image store failed', Logger::DEBUG);
                notice(L10n::t('Image upload failed.') . EOL);
                killme();
        }
index a16495326009eed93b10ac60968a874e541d7ffa..7a33a69d0b9d1d7f707dbb77c2aae8a10d82edc0 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\App;
 use Friendica\Content\Text\BBCode;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -121,7 +122,7 @@ function poco_init(App $a) {
        $itemsPerPage = ((x($_GET, 'count') && intval($_GET['count'])) ? intval($_GET['count']) : $totalResults);
 
        if ($global) {
-               logger("Start global query", LOGGER_DEBUG);
+               Logger::log("Start global query", Logger::DEBUG);
                $contacts = 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",
                        DBA::escape($update_limit),
@@ -132,7 +133,7 @@ function poco_init(App $a) {
                        intval($itemsPerPage)
                );
        } elseif ($system_mode) {
-               logger("Start system mode query", LOGGER_DEBUG);
+               Logger::log("Start system mode query", Logger::DEBUG);
                $contacts = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`,
                                `profile`.`gender` AS `pgender`, `profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`,
                                `profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`, `user`.`account-type`
@@ -144,7 +145,7 @@ function poco_init(App $a) {
                        intval($itemsPerPage)
                );
        } else {
-               logger("Start query for user " . $user['nickname'], LOGGER_DEBUG);
+               Logger::log("Start query for user " . $user['nickname'], Logger::DEBUG);
                $contacts = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0
                        AND (`success_update` >= `failure_update` OR `last-item` >= `failure_update`)
                        AND `network` IN ('%s', '%s', '%s', '%s') $sql_extra LIMIT %d, %d",
@@ -157,7 +158,7 @@ function poco_init(App $a) {
                        intval($itemsPerPage)
                );
        }
-       logger("Query done", LOGGER_DEBUG);
+       Logger::log("Query done", Logger::DEBUG);
 
        $ret = [];
        if (x($_GET, 'sorted')) {
@@ -369,7 +370,7 @@ function poco_init(App $a) {
        } else {
                System::httpExit(500);
        }
-       logger("End of poco", LOGGER_DEBUG);
+       Logger::log("End of poco", Logger::DEBUG);
 
        if ($format === 'xml') {
                header('Content-type: text/xml');
index 3318b0fcde9b9cd9a9ff82e8e32128d74e857110..3eefeb9aba3f6620f0141c0ba4f10516b6f0bf3b 100644 (file)
@@ -16,6 +16,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -53,7 +54,7 @@ function poke_init(App $a)
        $parent = (x($_GET,'parent') ? intval($_GET['parent']) : 0);
 
 
-       logger('poke: verb ' . $verb . ' contact ' . $contact_id, LOGGER_DEBUG);
+       Logger::log('poke: verb ' . $verb . ' contact ' . $contact_id, Logger::DEBUG);
 
 
        $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
@@ -62,7 +63,7 @@ function poke_init(App $a)
        );
 
        if (!DBA::isResult($r)) {
-               logger('poke: no contact ' . $contact_id);
+               Logger::log('poke: no contact ' . $contact_id);
                return;
        }
 
index d068fca47bd0802dbf7757f41d4178f77a847581..f2df82849edf650fcc6ab608743e65021a879fd9 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Core\ACL;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -37,7 +38,7 @@ function profile_init(App $a)
                if (DBA::isResult($r)) {
                        $a->internalRedirect('profile/' . $r[0]['nickname']);
                } else {
-                       logger('profile error: mod_profile ' . $a->query_string, LOGGER_DEBUG);
+                       Logger::log('profile error: mod_profile ' . $a->query_string, Logger::DEBUG);
                        notice(L10n::t('Requested profile is not available.') . EOL);
                        $a->error = 404;
                        return;
index f4c7e311cae263e2efa242fa9297514a5b38d96f..e14d500865573d8bfce1f60e3918f3a82f91ece7 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 use Friendica\App;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -39,14 +40,14 @@ function pubsub_init(App $a)
                $hub_lease     = notags(trim(defaults($_GET, 'hub_lease_seconds', '')));
                $hub_verify    = notags(trim(defaults($_GET, 'hub_verify_token', '')));
 
-               logger('Subscription from ' . $_SERVER['REMOTE_ADDR'] . ' Mode: ' . $hub_mode . ' Nick: ' . $nick);
-               logger('Data: ' . print_r($_GET,true), LOGGER_DATA);
+               Logger::log('Subscription from ' . $_SERVER['REMOTE_ADDR'] . ' Mode: ' . $hub_mode . ' Nick: ' . $nick);
+               Logger::log('Data: ' . print_r($_GET,true), Logger::DATA);
 
                $subscribe = (($hub_mode === 'subscribe') ? 1 : 0);
 
                $owner = DBA::selectFirst('user', ['uid'], ['nickname' => $nick, 'account_expired' => false, 'account_removed' => false]);
                if (!DBA::isResult($owner)) {
-                       logger('Local account not found: ' . $nick);
+                       Logger::log('Local account not found: ' . $nick);
                        hub_return(false, '');
                }
 
@@ -58,12 +59,12 @@ function pubsub_init(App $a)
 
                $contact = DBA::selectFirst('contact', ['id', 'poll'], $condition);
                if (!DBA::isResult($contact)) {
-                       logger('Contact ' . $contact_id . ' not found.');
+                       Logger::log('Contact ' . $contact_id . ' not found.');
                        hub_return(false, '');
                }
 
                if (!empty($hub_topic) && !link_compare($hub_topic, $contact['poll'])) {
-                       logger('Hub topic ' . $hub_topic . ' != ' . $contact['poll']);
+                       Logger::log('Hub topic ' . $hub_topic . ' != ' . $contact['poll']);
                        hub_return(false, '');
                }
 
@@ -71,13 +72,13 @@ function pubsub_init(App $a)
                // Don't allow outsiders to unsubscribe us.
 
                if (($hub_mode === 'unsubscribe') && empty($hub_verify)) {
-                       logger('Bogus unsubscribe');
+                       Logger::log('Bogus unsubscribe');
                        hub_return(false, '');
                }
 
                if (!empty($hub_mode)) {
                        DBA::update('contact', ['subhub' => $subscribe], ['id' => $contact['id']]);
-                       logger($hub_mode . ' success for contact ' . $contact_id . '.');
+                       Logger::log($hub_mode . ' success for contact ' . $contact_id . '.');
                }
                hub_return(true, $hub_challenge);
        }
@@ -87,8 +88,8 @@ function pubsub_post(App $a)
 {
        $xml = file_get_contents('php://input');
 
-       logger('Feed arrived from ' . $_SERVER['REMOTE_ADDR'] . ' for ' .  $a->cmd . ' with user-agent: ' . $_SERVER['HTTP_USER_AGENT']);
-       logger('Data: ' . $xml, LOGGER_DATA);
+       Logger::log('Feed arrived from ' . $_SERVER['REMOTE_ADDR'] . ' for ' .  $a->cmd . ' with user-agent: ' . $_SERVER['HTTP_USER_AGENT']);
+       Logger::log('Data: ' . $xml, Logger::DATA);
 
        $nick       = (($a->argc > 1) ? notags(trim($a->argv[1])) : '');
        $contact_id = (($a->argc > 2) ? intval($a->argv[2])       : 0 );
@@ -106,16 +107,16 @@ function pubsub_post(App $a)
                if (!empty($author['contact-id'])) {
                        $condition = ['id' => $author['contact-id'], 'uid' => $importer['uid'], 'subhub' => true, 'blocked' => false];
                        $contact = DBA::selectFirst('contact', [], $condition);
-                       logger('No record for ' . $nick .' with contact id ' . $contact_id . ' - using '.$author['contact-id'].' instead.');
+                       Logger::log('No record for ' . $nick .' with contact id ' . $contact_id . ' - using '.$author['contact-id'].' instead.');
                }
                if (!DBA::isResult($contact)) {
-                       logger('Contact ' . $author["author-link"] . ' (' . $contact_id . ') for user ' . $nick . " wasn't found - ignored. XML: " . $xml);
+                       Logger::log('Contact ' . $author["author-link"] . ' (' . $contact_id . ') for user ' . $nick . " wasn't found - ignored. XML: " . $xml);
                        hub_post_return();
                }
        }
 
        if (!in_array($contact['rel'], [Contact::SHARING, Contact::FRIEND]) && ($contact['network'] != Protocol::FEED)) {
-               logger('Contact ' . $contact['id'] . ' is not expected to share with us - ignored.');
+               Logger::log('Contact ' . $contact['id'] . ' is not expected to share with us - ignored.');
                hub_post_return();
        }
 
@@ -125,7 +126,7 @@ function pubsub_post(App $a)
                hub_post_return();
        }
 
-       logger('Import item for ' . $nick . ' from ' . $contact['nick'] . ' (' . $contact['id'] . ')');
+       Logger::log('Import item for ' . $nick . ' from ' . $contact['nick'] . ' (' . $contact['id'] . ')');
        $feedhub = '';
        consume_feed($xml, $importer, $contact, $feedhub);
 
index d7b204e89c4f9622e081fd30507673eb729b94e2..ea27f048223af99477dbee5cf51b3306997ed84a 100644 (file)
@@ -2,6 +2,7 @@
 
 use Friendica\App;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\PushSubscriber;
@@ -42,11 +43,11 @@ function pubsubhubbub_init(App $a) {
                } elseif ($hub_mode === 'unsubscribe') {
                        $subscribe = 0;
                } else {
-                       logger("Invalid hub_mode=$hub_mode, ignoring.");
+                       Logger::log("Invalid hub_mode=$hub_mode, ignoring.");
                        System::httpExit(404);
                }
 
-               logger("$hub_mode request from " . $_SERVER['REMOTE_ADDR']);
+               Logger::log("$hub_mode request from " . $_SERVER['REMOTE_ADDR']);
 
                // get the nick name from the topic, a bit hacky but needed as a fallback
                $nick = substr(strrchr($hub_topic, "/"), 1);
@@ -57,7 +58,7 @@ function pubsubhubbub_init(App $a) {
                }
 
                if (!$nick) {
-                       logger('Bad hub_topic=$hub_topic, ignoring.');
+                       Logger::log('Bad hub_topic=$hub_topic, ignoring.');
                        System::httpExit(404);
                }
 
@@ -65,13 +66,13 @@ function pubsubhubbub_init(App $a) {
                $condition = ['nickname' => $nick, 'account_expired' => false, 'account_removed' => false];
                $owner = DBA::selectFirst('user', ['uid', 'hidewall'], $condition);
                if (!DBA::isResult($owner)) {
-                       logger('Local account not found: ' . $nick . ' - topic: ' . $hub_topic . ' - callback: ' . $hub_callback);
+                       Logger::log('Local account not found: ' . $nick . ' - topic: ' . $hub_topic . ' - callback: ' . $hub_callback);
                        System::httpExit(404);
                }
 
                // abort if user's wall is supposed to be private
                if ($owner['hidewall']) {
-                       logger('Local user ' . $nick . 'has chosen to hide wall, ignoring.');
+                       Logger::log('Local user ' . $nick . 'has chosen to hide wall, ignoring.');
                        System::httpExit(403);
                }
 
@@ -80,14 +81,14 @@ function pubsubhubbub_init(App $a) {
                        'pending' => false, 'self' => true];
                $contact = DBA::selectFirst('contact', ['poll'], $condition);
                if (!DBA::isResult($contact)) {
-                       logger('Self contact for user ' . $owner['uid'] . ' not found.');
+                       Logger::log('Self contact for user ' . $owner['uid'] . ' not found.');
                        System::httpExit(404);
                }
 
                // sanity check that topic URLs are the same
                $hub_topic2 = str_replace('/feed/', '/dfrn_poll/', $hub_topic);
                if (!link_compare($hub_topic, $contact['poll']) && !link_compare($hub_topic2, $contact['poll'])) {
-                       logger('Hub topic ' . $hub_topic . ' != ' . $contact['poll']);
+                       Logger::log('Hub topic ' . $hub_topic . ' != ' . $contact['poll']);
                        System::httpExit(404);
                }
 
@@ -110,14 +111,14 @@ function pubsubhubbub_init(App $a) {
 
                // give up if the HTTP return code wasn't a success (2xx)
                if ($ret < 200 || $ret > 299) {
-                       logger("Subscriber verification for $hub_topic at $hub_callback returned $ret, ignoring.");
+                       Logger::log("Subscriber verification for $hub_topic at $hub_callback returned $ret, ignoring.");
                        System::httpExit(404);
                }
 
                // check that the correct hub_challenge code was echoed back
                if (trim($body) !== $hub_challenge) {
-                       logger("Subscriber did not echo back hub.challenge, ignoring.");
-                       logger("\"$hub_challenge\" != \"".trim($body)."\"");
+                       Logger::log("Subscriber did not echo back hub.challenge, ignoring.");
+                       Logger::log("\"$hub_challenge\" != \"".trim($body)."\"");
                        System::httpExit(404);
                }
 
index 80be7d2a2957edb1fdc0b7820efe64ec60952301..690abea15928d3c50c2e5087a432752ec501d187 100644 (file)
@@ -6,6 +6,7 @@
 
 use Friendica\App;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Protocol\Diaspora;
@@ -18,7 +19,7 @@ function receive_post(App $a)
 {
        $enabled = intval(Config::get('system', 'diaspora_enabled'));
        if (!$enabled) {
-               logger('mod-diaspora: disabled');
+               Logger::log('mod-diaspora: disabled');
                System::httpExit(500);
        }
 
@@ -41,7 +42,7 @@ function receive_post(App $a)
 
        // It is an application/x-www-form-urlencoded
 
-       logger('mod-diaspora: receiving post', LOGGER_DEBUG);
+       Logger::log('mod-diaspora: receiving post', Logger::DEBUG);
 
        if (empty($_POST['xml'])) {
                $postdata = file_get_contents("php://input");
@@ -49,29 +50,29 @@ function receive_post(App $a)
                        System::httpExit(500);
                }
 
-               logger('mod-diaspora: message is in the new format', LOGGER_DEBUG);
+               Logger::log('mod-diaspora: message is in the new format', Logger::DEBUG);
                $msg = Diaspora::decodeRaw($importer, $postdata);
        } else {
                $xml = urldecode($_POST['xml']);
 
-               logger('mod-diaspora: decode message in the old format', LOGGER_DEBUG);
+               Logger::log('mod-diaspora: decode message in the old format', Logger::DEBUG);
                $msg = Diaspora::decode($importer, $xml);
 
                if ($public && !$msg) {
-                       logger('mod-diaspora: decode message in the new format', LOGGER_DEBUG);
+                       Logger::log('mod-diaspora: decode message in the new format', Logger::DEBUG);
                        $msg = Diaspora::decodeRaw($importer, $xml);
                }
        }
 
-       logger('mod-diaspora: decoded', LOGGER_DEBUG);
+       Logger::log('mod-diaspora: decoded', Logger::DEBUG);
 
-       logger('mod-diaspora: decoded msg: ' . print_r($msg, true), LOGGER_DATA);
+       Logger::log('mod-diaspora: decoded msg: ' . print_r($msg, true), Logger::DATA);
 
        if (!is_array($msg)) {
                System::httpExit(500);
        }
 
-       logger('mod-diaspora: dispatching', LOGGER_DEBUG);
+       Logger::log('mod-diaspora: dispatching', Logger::DEBUG);
 
        $ret = true;
        if ($public) {
index 5ba8276ee7ca3adf7dbee4d26ae551b300b60f75..088a5f55e30754ddf34d4c273dd4b5a00b4b956c 100644 (file)
@@ -2,6 +2,7 @@
 
 use Friendica\App;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -51,7 +52,7 @@ function redir_init(App $a) {
                        if (!empty($a->contact['id']) && $a->contact['id'] == $cid) {
                                // Local user is already authenticated.
                                $target_url = defaults($url, $contact_url);
-                               logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
+                               Logger::log($contact['name'] . " is already authenticated. Redirecting to " . $target_url, Logger::DEBUG);
                                $a->redirect($target_url);
                        }
                }
@@ -72,7 +73,7 @@ function redir_init(App $a) {
                                        if ($v['uid'] == $_SESSION['visitor_visiting'] && $v['cid'] == $_SESSION['visitor_id']) {
                                                // Remote user is already authenticated.
                                                $target_url = defaults($url, $contact_url);
-                                               logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
+                                               Logger::log($contact['name'] . " is already authenticated. Redirecting to " . $target_url, Logger::DEBUG);
                                                $a->redirect($target_url);
                                        }
                                }
@@ -98,7 +99,7 @@ function redir_init(App $a) {
                                'sec' => $sec, 'expire' => time() + 45];
                        DBA::insert('profile_check', $fields);
 
-                       logger('mod_redir: ' . $contact['name'] . ' ' . $sec, LOGGER_DEBUG);
+                       Logger::log('mod_redir: ' . $contact['name'] . ' ' . $sec, Logger::DEBUG);
 
                        $dest = (!empty($url) ? '&destination_url=' . $url : '');
 
@@ -120,7 +121,7 @@ function redir_init(App $a) {
                        $url .= $separator . 'zrl=' . urlencode($my_profile);
                }
 
-               logger('redirecting to ' . $url, LOGGER_DEBUG);
+               Logger::log('redirecting to ' . $url, Logger::DEBUG);
                $a->redirect($url);
        }
 
index 0a139ad7523afd9e580393183f8d6fdce06a4304..73b57124a21613219d5f4363f05991a3eb789f81 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
@@ -186,7 +187,7 @@ function register_content(App $a)
        if ($max_dailies) {
                $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day");
                if ($r && $r[0]['total'] >= $max_dailies) {
-                       logger('max daily registrations exceeded.');
+                       Logger::log('max daily registrations exceeded.');
                        notice(L10n::t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL);
                        return;
                }
index bd4b3773cb7a4de2a81d1618115f9f885d177226..23e4e88846e287867d6ed5f77a147e561096ecb6 100644 (file)
@@ -3,6 +3,7 @@
  * @file mod/salmon.php
  */
 use Friendica\App;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -20,7 +21,7 @@ function salmon_post(App $a, $xml = '') {
                $xml = file_get_contents('php://input');
        }
 
-       logger('new salmon ' . $xml, LOGGER_DATA);
+       Logger::log('new salmon ' . $xml, Logger::DATA);
 
        $nick       = (($a->argc > 1) ? notags(trim($a->argv[1])) : '');
        $mentions   = (($a->argc > 2 && $a->argv[2] === 'mention') ? true : false);
@@ -49,7 +50,7 @@ function salmon_post(App $a, $xml = '') {
                $base = $dom;
 
        if (empty($base)) {
-               logger('unable to locate salmon data in xml ');
+               Logger::log('unable to locate salmon data in xml ');
                System::httpExit(400);
        }
 
@@ -87,18 +88,18 @@ function salmon_post(App $a, $xml = '') {
        $author_link = $author["author-link"];
 
        if(! $author_link) {
-               logger('Could not retrieve author URI.');
+               Logger::log('Could not retrieve author URI.');
                System::httpExit(400);
        }
 
        // Once we have the author URI, go to the web and try to find their public key
 
-       logger('Fetching key for ' . $author_link);
+       Logger::log('Fetching key for ' . $author_link);
 
        $key = Salmon::getKey($author_link, $keyhash);
 
        if(! $key) {
-               logger('Could not retrieve author key.');
+               Logger::log('Could not retrieve author key.');
                System::httpExit(400);
        }
 
@@ -107,7 +108,7 @@ function salmon_post(App $a, $xml = '') {
        $m = base64url_decode($key_info[1]);
        $e = base64url_decode($key_info[2]);
 
-       logger('key details: ' . print_r($key_info,true), LOGGER_DEBUG);
+       Logger::log('key details: ' . print_r($key_info,true), Logger::DEBUG);
 
        $pubkey = Crypto::meToPem($m, $e);
 
@@ -118,23 +119,23 @@ function salmon_post(App $a, $xml = '') {
        $mode = 1;
 
        if (! $verify) {
-               logger('message did not verify using protocol. Trying compliant format.');
+               Logger::log('message did not verify using protocol. Trying compliant format.');
                $verify = Crypto::rsaVerify($compliant_format, $signature, $pubkey);
                $mode = 2;
        }
 
        if (! $verify) {
-               logger('message did not verify using padding. Trying old statusnet format.');
+               Logger::log('message did not verify using padding. Trying old statusnet format.');
                $verify = Crypto::rsaVerify($stnet_signed_data, $signature, $pubkey);
                $mode = 3;
        }
 
        if (! $verify) {
-               logger('Message did not verify. Discarding.');
+               Logger::log('Message did not verify. Discarding.');
                System::httpExit(400);
        }
 
-       logger('Message verified with mode '.$mode);
+       Logger::log('Message verified with mode '.$mode);
 
 
        /*
@@ -155,7 +156,7 @@ function salmon_post(App $a, $xml = '') {
        );
 
        if (!DBA::isResult($r)) {
-               logger('Author ' . $author_link . ' unknown to user ' . $importer['uid'] . '.');
+               Logger::log('Author ' . $author_link . ' unknown to user ' . $importer['uid'] . '.');
 
                if (PConfig::get($importer['uid'], 'system', 'ostatus_autofriend')) {
                        $result = Contact::createFromProbe($importer['uid'], $author_link);
@@ -177,7 +178,7 @@ function salmon_post(App $a, $xml = '') {
 
        //if((DBA::isResult($r)) && (($r[0]['readonly']) || ($r[0]['rel'] == Contact::FOLLOWER) || ($r[0]['blocked']))) {
        if (DBA::isResult($r) && $r[0]['blocked']) {
-               logger('Ignoring this author.');
+               Logger::log('Ignoring this author.');
                System::httpExit(202);
                // NOTREACHED
        }
index e5ac7588e3029e933888111529e9163a158297e5..4be378ba9a96609757251057c8a7b4b98eeb8723 100644 (file)
@@ -10,6 +10,7 @@ use Friendica\Content\Pager;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Item;
@@ -204,7 +205,7 @@ function search_content(App $a) {
        $pager = new Pager($a->query_string);
 
        if ($tag) {
-               logger("Start tag search for '".$search."'", LOGGER_DEBUG);
+               Logger::log("Start tag search for '".$search."'", Logger::DEBUG);
 
                $condition = ["(`uid` = 0 OR (`uid` = ? AND NOT `global`))
                        AND `otype` = ? AND `type` = ? AND `term` = ?",
@@ -227,7 +228,7 @@ function search_content(App $a) {
                        $r = [];
                }
        } else {
-               logger("Start fulltext search for '".$search."'", LOGGER_DEBUG);
+               Logger::log("Start fulltext search for '".$search."'", Logger::DEBUG);
 
                $condition = ["(`uid` = 0 OR (`uid` = ? AND NOT `global`))
                        AND `body` LIKE CONCAT('%',?,'%')",
@@ -254,12 +255,12 @@ function search_content(App $a) {
                '$title' => $title
        ]);
 
-       logger("Start Conversation for '".$search."'", LOGGER_DEBUG);
+       Logger::log("Start Conversation for '".$search."'", Logger::DEBUG);
        $o .= conversation($a, $r, $pager, 'search', false, false, 'commented', local_user());
 
        $o .= $pager->renderMinimal(count($r));
 
-       logger("Done '".$search."'", LOGGER_DEBUG);
+       Logger::log("Done '".$search."'", Logger::DEBUG);
 
        return $o;
 }
index 52c5f42cf08bb3c59420a515a2199fcfb7f8626c..2973a7f729ac9a96e3360d78b6b496ea17ca9912 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Core\ACL;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Core\Theme;
@@ -269,7 +270,7 @@ function settings_post(App $a)
                                        intval($mail_pubmail),
                                        intval(local_user())
                                );
-                               logger("mail: updating mailaccount. Response: ".print_r($r, true));
+                               Logger::log("mail: updating mailaccount. Response: ".print_r($r, true));
                                $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                        intval(local_user())
                                );
@@ -547,7 +548,7 @@ function settings_post(App $a)
        // If openid has changed or if there's an openid but no openidserver, try and discover it.
        if ($openid != $a->user['openid'] || (strlen($openid) && (!strlen($openidserver)))) {
                if (Network::isUrlValid($openid)) {
-                       logger('updating openidserver');
+                       Logger::log('updating openidserver');
                        $open_id_obj = new LightOpenID($a->getHostName());
                        $open_id_obj->identity = $openid;
                        $openidserver = $open_id_obj->discover($open_id_obj->identity);
index da95d5379c056f1a62f0ae1cd0913547f56d435f..d1d957076f28903442c0ed71adb56f9b37b401ba 100644 (file)
@@ -7,6 +7,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 
 function statistics_json_init(App $a) {
@@ -56,6 +57,6 @@ function statistics_json_init(App $a) {
 
        header("Content-Type: application/json");
        echo json_encode($statistics, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
-       logger("statistics_init: printed " . print_r($statistics, true), LOGGER_DATA);
+       Logger::log("statistics_init: printed " . print_r($statistics, true), Logger::DATA);
        killme();
 }
index 0082021df575c8376fa27c56b4885d6ab735ddf7..36cf835c281cb9ceecbac3a9a308edeeee583776 100644 (file)
@@ -5,6 +5,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Item;
@@ -26,7 +27,7 @@ function subthread_content(App $a) {
        $item = Item::selectFirst([], $condition);
 
        if (empty($item_id) || !DBA::isResult($item)) {
-               logger('subthread: no item ' . $item_id);
+               Logger::log('subthread: no item ' . $item_id);
                return;
        }
 
@@ -62,7 +63,7 @@ function subthread_content(App $a) {
        }
 
        if (!$owner) {
-               logger('like: no owner');
+               Logger::log('like: no owner');
                return;
        }
 
index f661968f35a9b01c8b42b1bc1a0b4ffc2b53ea31..edfcd7bd13e45a910ef13c51aa3a8a07adad6df8 100644 (file)
@@ -5,6 +5,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -28,13 +29,13 @@ function tagger_content(App $a) {
 
        $item_id = (($a->argc > 1) ? notags(trim($a->argv[1])) : 0);
 
-       logger('tagger: tag ' . $term . ' item ' . $item_id);
+       Logger::log('tagger: tag ' . $term . ' item ' . $item_id);
 
 
        $item = Item::selectFirst([], ['id' => $item_id]);
 
        if (!$item_id || !DBA::isResult($item)) {
-               logger('tagger: no item ' . $item_id);
+               Logger::log('tagger: no item ' . $item_id);
                return;
        }
 
@@ -60,7 +61,7 @@ function tagger_content(App $a) {
        if (DBA::isResult($r)) {
                        $contact = $r[0];
        } else {
-               logger('tagger: no contact_id');
+               Logger::log('tagger: no contact_id');
                return;
        }
 
index 704439216b5537fe790eac758af7973ee51f99e3..3c80b671be45a308f4449a418705211f059e8de0 100644 (file)
@@ -7,6 +7,7 @@
 use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\UserImport;
 
 function uimport_post(App $a)
@@ -33,7 +34,7 @@ function uimport_content(App $a)
        if ($max_dailies) {
                $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day");
                if ($r && $r[0]['total'] >= $max_dailies) {
-                       logger('max daily registrations exceeded.');
+                       Logger::log('max daily registrations exceeded.');
                        notice(L10n::t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL);
                        return;
                }
index c23c3adbc6e7e8295fdf01171618008038769561..84e40d3b56e643542a8063ec5a75344c480bf790 100644 (file)
@@ -10,6 +10,7 @@
 
 use Friendica\App;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Config;
 use Friendica\Database\DBA;
@@ -19,7 +20,7 @@ use Friendica\Object\Image;
 
 function wall_upload_post(App $a, $desktopmode = true)
 {
-       logger("wall upload: starting new upload", LOGGER_DEBUG);
+       Logger::log("wall upload: starting new upload", Logger::DEBUG);
 
        $r_json = (x($_GET, 'response') && $_GET['response'] == 'json');
        $album = (x($_GET, 'album') ? notags(trim($_GET['album'])) : '');
@@ -186,8 +187,8 @@ function wall_upload_post(App $a, $desktopmode = true)
                $filetype = $imagedata['mime'];
        }
 
-       logger("File upload src: " . $src . " - filename: " . $filename .
-               " - size: " . $filesize . " - type: " . $filetype, LOGGER_DEBUG);
+       Logger::log("File upload src: " . $src . " - filename: " . $filename .
+               " - size: " . $filesize . " - type: " . $filetype, Logger::DEBUG);
 
        $maximagesize = Config::get('system', 'maximagesize');
 
@@ -225,7 +226,7 @@ function wall_upload_post(App $a, $desktopmode = true)
        }
        if ($max_length > 0) {
                $Image->scaleDown($max_length);
-               logger("File upload: Scaling picture to new size " . $max_length, LOGGER_DEBUG);
+               Logger::log("File upload: Scaling picture to new size " . $max_length, Logger::DEBUG);
        }
 
        $width = $Image->getWidth();
@@ -300,11 +301,11 @@ function wall_upload_post(App $a, $desktopmode = true)
                        echo json_encode(['picture' => $picture]);
                        killme();
                }
-               logger("upload done", LOGGER_DEBUG);
+               Logger::log("upload done", Logger::DEBUG);
                return $picture;
        }
 
-       logger("upload done", LOGGER_DEBUG);
+       Logger::log("upload done", Logger::DEBUG);
 
        if ($r_json) {
                echo json_encode(['ok' => true]);
index dcec6ef9c67ac9c0edb0e3191dc4c2fc8bb6d4db..af1de6c064cb33d916f243aa642a911d3b846b76 100644 (file)
@@ -4,6 +4,7 @@
  */
 use Friendica\App;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Mail;
@@ -30,7 +31,7 @@ function wallmessage_post(App $a) {
        );
 
        if (! DBA::isResult($r)) {
-               logger('wallmessage: no recipient');
+               Logger::log('wallmessage: no recipient');
                return;
        }
 
@@ -93,7 +94,7 @@ function wallmessage_content(App $a) {
 
        if (! DBA::isResult($r)) {
                notice(L10n::t('No recipient.') . EOL);
-               logger('wallmessage: no recipient');
+               Logger::log('wallmessage: no recipient');
                return;
        }
 
index c18155c5fe598ef91f97479b0ae9b58bdc2f46a5..00cb6699d1b2a484e57ae0f5729fd1f92868b743 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Util\DateTimeFormat;
@@ -33,7 +34,7 @@ function worker_init()
 
        Worker::startProcess();
 
-       logger("Front end worker started: ".getmypid());
+       Logger::log("Front end worker started: ".getmypid());
 
        Worker::callWorker();
 
@@ -55,7 +56,7 @@ function worker_init()
 
        Worker::endProcess();
 
-       logger("Front end worker ended: ".getmypid());
+       Logger::log("Front end worker ended: ".getmypid());
 
        killme();
 }
index 2acb7eb362823b9c7c6c335f9e9ffb3e61bdf488..781faf1a506ad90326a309c0942e58ac04729129 100644 (file)
@@ -1101,10 +1101,10 @@ class App
 
                $processlist = DBA::processlist();
                if ($processlist['list'] != '') {
-                       logger('Processcheck: Processes: ' . $processlist['amount'] . ' - Processlist: ' . $processlist['list'], LOGGER_DEBUG);
+                       Core\Logger::log('Processcheck: Processes: ' . $processlist['amount'] . ' - Processlist: ' . $processlist['list'], Core\Logger::DEBUG);
 
                        if ($processlist['amount'] > $max_processes) {
-                               logger('Processcheck: Maximum number of processes for ' . $process . ' tasks (' . $max_processes . ') reached.', LOGGER_DEBUG);
+                               Core\Logger::log('Processcheck: Maximum number of processes for ' . $process . ' tasks (' . $max_processes . ') reached.', Core\Logger::DEBUG);
                                return true;
                        }
                }
@@ -1150,7 +1150,7 @@ class App
                $reached = ($free < $min_memory);
 
                if ($reached) {
-                       logger('Minimal memory reached: ' . $free . '/' . $meminfo['MemTotal'] . ' - limit ' . $min_memory, LOGGER_DEBUG);
+                       Core\Logger::log('Minimal memory reached: ' . $free . '/' . $meminfo['MemTotal'] . ' - limit ' . $min_memory, Core\Logger::DEBUG);
                }
 
                return $reached;
@@ -1180,7 +1180,7 @@ class App
                $load = Core\System::currentLoad();
                if ($load) {
                        if (intval($load) > $maxsysload) {
-                               logger('system: load ' . $load . ' for ' . $process . ' tasks (' . $maxsysload . ') too high.');
+                               Core\Logger::log('system: load ' . $load . ' for ' . $process . ' tasks (' . $maxsysload . ') too high.');
                                return true;
                        }
                }
@@ -1222,7 +1222,7 @@ class App
                        $resource = proc_open($cmdline . ' &', [], $foo, $this->getBasePath());
                }
                if (!is_resource($resource)) {
-                       logger('We got no resource for command ' . $cmdline, LOGGER_DEBUG);
+                       Core\Logger::log('We got no resource for command ' . $cmdline, Core\Logger::DEBUG);
                        return;
                }
                proc_close($resource);
@@ -1253,27 +1253,27 @@ class App
        public static function isDirectoryUsable($directory, $check_writable = true)
        {
                if ($directory == '') {
-                       logger('Directory is empty. This shouldn\'t happen.', LOGGER_DEBUG);
+                       Core\Logger::log('Directory is empty. This shouldn\'t happen.', Core\Logger::DEBUG);
                        return false;
                }
 
                if (!file_exists($directory)) {
-                       logger('Path "' . $directory . '" does not exist for user ' . self::getSystemUser(), LOGGER_DEBUG);
+                       Core\Logger::log('Path "' . $directory . '" does not exist for user ' . self::getSystemUser(), Core\Logger::DEBUG);
                        return false;
                }
 
                if (is_file($directory)) {
-                       logger('Path "' . $directory . '" is a file for user ' . self::getSystemUser(), LOGGER_DEBUG);
+                       Core\Logger::log('Path "' . $directory . '" is a file for user ' . self::getSystemUser(), Core\Logger::DEBUG);
                        return false;
                }
 
                if (!is_dir($directory)) {
-                       logger('Path "' . $directory . '" is not a directory for user ' . self::getSystemUser(), LOGGER_DEBUG);
+                       Core\Logger::log('Path "' . $directory . '" is not a directory for user ' . self::getSystemUser(), Core\Logger::DEBUG);
                        return false;
                }
 
                if ($check_writable && !is_writable($directory)) {
-                       logger('Path "' . $directory . '" is not writable for user ' . self::getSystemUser(), LOGGER_DEBUG);
+                       Core\Logger::log('Path "' . $directory . '" is not writable for user ' . self::getSystemUser(), Core\Logger::DEBUG);
                        return false;
                }
 
@@ -1646,7 +1646,7 @@ class App
                                } else {
                                        // Someone came with an invalid parameter, maybe as a DDoS attempt
                                        // We simply stop processing here
-                                       logger("Invalid ZRL parameter " . $_GET['zrl'], LOGGER_DEBUG);
+                                       Core\Logger::log("Invalid ZRL parameter " . $_GET['zrl'], Core\Logger::DEBUG);
                                        Core\System::httpExit(403, ['title' => '403 Forbidden']);
                                }
                        }
@@ -1785,11 +1785,11 @@ class App
                                }
 
                                if (!empty($_SERVER['QUERY_STRING']) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && isset($dreamhost_error_hack)) {
-                                       logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']);
+                                       Core\Logger::log('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']);
                                        $this->internalRedirect($_SERVER['REQUEST_URI']);
                                }
 
-                               logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' . $_SERVER['QUERY_STRING'], LOGGER_DEBUG);
+                               Core\Logger::log('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' . $_SERVER['QUERY_STRING'], Core\Logger::DEBUG);
 
                                header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . Core\L10n::t('Not Found'));
                                $tpl = get_markup_template("404.tpl");
index 522f0b783fa0f3fa2bcddd7801330ed8b2a118da..fe09693b3b6d15897d105cb2ae89b9bd49e22ca4 100644 (file)
@@ -3,6 +3,7 @@
 namespace Friendica;
 
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 
 /**
@@ -136,8 +137,8 @@ abstract class BaseModule extends BaseObject
        {
                if (!self::checkFormSecurityToken($typename, $formname)) {
                        $a = get_app();
-                       logger('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
-                       logger('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA);
+                       Logger::log('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
+                       Logger::log('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), Logger::DATA);
                        notice(self::getFormSecurityStandardErrorMessage());
                        $a->internalRedirect($err_redirect);
                }
@@ -147,8 +148,8 @@ abstract class BaseModule extends BaseObject
        {
                if (!self::checkFormSecurityToken($typename, $formname)) {
                        $a = get_app();
-                       logger('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
-                       logger('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA);
+                       Logger::log('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
+                       Logger::log('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), Logger::DATA);
                        header('HTTP/1.1 403 Forbidden');
                        killme();
                }
index be2054067b25b68a9a898e9f732a524390cd11db..22ce4ea3aeb112c14e5b313e609190ca30c16e86 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Model\Contact;
@@ -379,7 +380,7 @@ class BBCode extends BaseObject
                $c = preg_match_all('/\[img.*?\](.*?)\[\/img\]/ism', $s, $matches, PREG_SET_ORDER);
                if ($c) {
                        foreach ($matches as $mtch) {
-                               logger('scale_external_image: ' . $mtch[1]);
+                               Logger::log('scale_external_image: ' . $mtch[1]);
 
                                $hostname = str_replace('www.', '', substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3));
                                if (stristr($mtch[1], $hostname)) {
@@ -414,7 +415,7 @@ class BBCode extends BaseObject
                                                        $Image->scaleDown(640);
                                                        $new_width = $Image->getWidth();
                                                        $new_height = $Image->getHeight();
-                                                       logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG);
+                                                       Logger::log('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], Logger::DEBUG);
                                                        $s = str_replace(
                                                                $mtch[0],
                                                                '[img=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/img]'
@@ -423,7 +424,7 @@ class BBCode extends BaseObject
                                                                        : ''),
                                                                $s
                                                        );
-                                                       logger('scale_external_images: new string: ' . $s, LOGGER_DEBUG);
+                                                       Logger::log('scale_external_images: new string: ' . $s, Logger::DEBUG);
                                                }
                                        }
                                }
@@ -451,7 +452,7 @@ class BBCode extends BaseObject
                // than the maximum, then don't waste time looking for the images
                if ($maxlen && (strlen($body) > $maxlen)) {
 
-                       logger('the total body length exceeds the limit', LOGGER_DEBUG);
+                       Logger::log('the total body length exceeds the limit', Logger::DEBUG);
 
                        $orig_body = $body;
                        $new_body = '';
@@ -471,7 +472,7 @@ class BBCode extends BaseObject
 
                                        if (($textlen + $img_start) > $maxlen) {
                                                if ($textlen < $maxlen) {
-                                                       logger('the limit happens before an embedded image', LOGGER_DEBUG);
+                                                       Logger::log('the limit happens before an embedded image', Logger::DEBUG);
                                                        $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
                                                        $textlen = $maxlen;
                                                }
@@ -485,7 +486,7 @@ class BBCode extends BaseObject
 
                                        if (($textlen + $img_end) > $maxlen) {
                                                if ($textlen < $maxlen) {
-                                                       logger('the limit happens before the end of a non-embedded image', LOGGER_DEBUG);
+                                                       Logger::log('the limit happens before the end of a non-embedded image', Logger::DEBUG);
                                                        $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
                                                        $textlen = $maxlen;
                                                }
@@ -508,11 +509,11 @@ class BBCode extends BaseObject
 
                        if (($textlen + strlen($orig_body)) > $maxlen) {
                                if ($textlen < $maxlen) {
-                                       logger('the limit happens after the end of the last image', LOGGER_DEBUG);
+                                       Logger::log('the limit happens after the end of the last image', Logger::DEBUG);
                                        $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
                                }
                        } else {
-                               logger('the text size with embedded images extracted did not violate the limit', LOGGER_DEBUG);
+                               Logger::log('the text size with embedded images extracted did not violate the limit', Logger::DEBUG);
                                $new_body = $new_body . $orig_body;
                        }
 
index faba55b7a860b483e28022e98909d85eaa2cb899..8dd71b8bfc7fe57398d5cd12c966a2c1a2420937 100644 (file)
@@ -14,6 +14,7 @@ use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
+use Friendica\Model\FileTag;
 use Friendica\Model\GContact;
 use Friendica\Model\Profile;
 
@@ -185,8 +186,9 @@ class Widget
                $terms = array();
                $cnt = preg_match_all('/\[(.*?)\]/', $saved, $matches, PREG_SET_ORDER);
                if ($cnt) {
-                       foreach ($matches as $mtch) {
-                               $unescaped = xmlify(file_tag_decode($mtch[1]));
+                       foreach ($matches as $mtch)
+                       {
+                               $unescaped = xmlify(FileTag::decode($mtch[1]));
                                $terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
                        }
                }
@@ -226,7 +228,7 @@ class Widget
 
                if ($cnt) {
                        foreach ($matches as $mtch) {
-                               $unescaped = xmlify(file_tag_decode($mtch[1]));
+                               $unescaped = xmlify(FileTag::decode($mtch[1]));
                                $terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
                        }
                }
index 1ec8730534e88272f6942901ee690f88461b2897..a06982820e11530dd8e605789b3150d48bb3f42c 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Core;
 
 use Friendica\App;
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 
 /**
@@ -75,7 +76,7 @@ class Addon extends BaseObject
         */
        public static function uninstall($addon)
        {
-               logger("Addons: uninstalling " . $addon);
+               Logger::log("Addons: uninstalling " . $addon);
                DBA::delete('addon', ['name' => $addon]);
 
                @include_once('addon/' . $addon . '/' . $addon . '.php');
@@ -100,7 +101,7 @@ class Addon extends BaseObject
                if (!file_exists('addon/' . $addon . '/' . $addon . '.php')) {
                        return false;
                }
-               logger("Addons: installing " . $addon);
+               Logger::log("Addons: installing " . $addon);
                $t = @filemtime('addon/' . $addon . '/' . $addon . '.php');
                @include_once('addon/' . $addon . '/' . $addon . '.php');
                if (function_exists($addon . '_install')) {
@@ -125,7 +126,7 @@ class Addon extends BaseObject
                        }
                        return true;
                } else {
-                       logger("Addons: FAILED installing " . $addon);
+                       Logger::log("Addons: FAILED installing " . $addon);
                        return false;
                }
        }
@@ -155,7 +156,7 @@ class Addon extends BaseObject
                                                $t = @filemtime($fname);
                                                foreach ($installed as $i) {
                                                        if (($i['name'] == $addon) && ($i['timestamp'] != $t)) {
-                                                               logger('Reloading addon: ' . $i['name']);
+                                                               Logger::log('Reloading addon: ' . $i['name']);
                                                                @include_once($fname);
 
                                                                if (function_exists($addon . '_uninstall')) {
index 5371cc91ecb42e23d3b9e372d30819c615b35812..4d227c27109fbf2201999e1ca3db4b5774ffcc99 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\BaseObject;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Database\DBA;
 use Friendica\Util\DateTimeFormat;
@@ -153,10 +154,10 @@ class Authentication extends BaseObject
                }
 
                if ($login_initial) {
-                       logger('auth_identities: ' . print_r($a->identities, true), LOGGER_DEBUG);
+                       Logger::log('auth_identities: ' . print_r($a->identities, true), Logger::DEBUG);
                }
                if ($login_refresh) {
-                       logger('auth_identities refresh: ' . print_r($a->identities, true), LOGGER_DEBUG);
+                       Logger::log('auth_identities refresh: ' . print_r($a->identities, true), Logger::DEBUG);
                }
 
                $contact = DBA::selectFirst('contact', [], ['uid' => $_SESSION['uid'], 'self' => true]);
@@ -184,7 +185,7 @@ class Authentication extends BaseObject
                         * The week ensures that sessions will expire after some inactivity.
                         */
                        if (!empty($_SESSION['remember'])) {
-                               logger('Injecting cookie for remembered user ' . $a->user['nickname']);
+                               Logger::log('Injecting cookie for remembered user ' . $a->user['nickname']);
                                self::setCookie(604800, $user_record);
                                unset($_SESSION['remember']);
                        }
index 1a6b2a9aefbfa7d25e9d7369fe6e77b8147e1a91..6453c307cef250a537f406dff99844f3d8ed68a2 100644 (file)
@@ -3,6 +3,7 @@
 namespace Friendica\Core\Cache;
 
 use Friendica\Core\Cache;
+use Friendica\Core\Logger;
 
 use Exception;
 use Friendica\Network\HTTPException\InternalServerErrorException;
@@ -64,7 +65,7 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
                if ($this->memcached->getResultCode() == Memcached::RES_SUCCESS) {
                        return $this->filterArrayKeysByPrefix($keys, $prefix);
                } else {
-                       logger('Memcached \'getAllKeys\' failed with ' . $this->memcached->getResultMessage(), LOGGER_ALL);
+                       Logger::log('Memcached \'getAllKeys\' failed with ' . $this->memcached->getResultMessage(), Logger::ALL);
                        return [];
                }
        }
@@ -83,7 +84,7 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
                if ($this->memcached->getResultCode() === Memcached::RES_SUCCESS) {
                        $return = $value;
                } else {
-                       logger('Memcached \'get\' failed with ' . $this->memcached->getResultMessage(), LOGGER_ALL);
+                       Logger::log('Memcached \'get\' failed with ' . $this->memcached->getResultMessage(), Logger::ALL);
                }
 
                return $return;
index 45b70e06258663bb1e7abb8ee784c37863d4ee95..2efce66ffdbd7e4fed471a92e06708a6dbeaa630 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Core;
 
 use Friendica\BaseObject;
 use Friendica\Database\DBA;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 
 require_once 'boot.php';
@@ -271,7 +272,7 @@ class L10n extends BaseObject
        public static function tt($singular, $plural, $count)
        {
                if (!is_numeric($count)) {
-                       logger('Non numeric count called by ' . System::callstack(20));
+                       Logger::log('Non numeric count called by ' . System::callstack(20));
                }
 
                if (!self::$lang) {
index 9892f1f4e4d7e74e2dcab9212da8a09f4943401f..4a737e3814a574629809e42db428af818094cc65 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Core;
  * @brief Functions for preventing parallel execution of functions
  */
 
+use Friendica\Core\Logger;
 use Friendica\Core\Cache\CacheDriverFactory;
 use Friendica\Core\Cache\IMemoryCacheDriver;
 
@@ -83,7 +84,7 @@ class Lock
                                }
                                return;
                        } catch (\Exception $exception) {
-                               logger('Using Cache driver for locking failed: ' . $exception->getMessage());
+                               Logger::log('Using Cache driver for locking failed: ' . $exception->getMessage());
                        }
                }
 
diff --git a/src/Core/Logger.php b/src/Core/Logger.php
new file mode 100644 (file)
index 0000000..c9253a8
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+/**
+ * @file src/Core/Logger.php
+ */
+namespace Friendica\Core;
+
+use Friendica\BaseObject;
+use Friendica\Core\Config;
+use Friendica\Util\DateTimeFormat;
+use ReflectionClass;
+
+/**
+ * @brief Logger functions
+ */
+class Logger extends BaseObject
+{
+    // Log levels:
+    const WARNING = 0;
+    const INFO = 1;
+    const TRACE = 2;
+    const DEBUG = 3;
+    const DATA = 4;
+    const ALL = 5;
+
+    public static $levels = [
+        self::WARNING => 'Warning',
+        self::INFO => 'Info',
+        self::TRACE => 'Trace',
+        self::DEBUG => 'Debug',
+        self::DATA => 'Data',
+        self::ALL => 'All',
+    ];
+
+    /**
+     * @brief Logs the given message at the given log level
+     *
+     * @param string $msg
+     * @param int $level
+     */
+    public static function log($msg, $level = self::INFO)
+    {
+        $a = self::getApp();
+
+        $debugging = Config::get('system', 'debugging');
+        $logfile   = Config::get('system', 'logfile');
+        $loglevel = intval(Config::get('system', 'loglevel'));
+
+        if (
+            !$debugging
+            || !$logfile
+            || $level > $loglevel
+        ) {
+            return;
+        }
+
+        $processId = session_id();
+
+        if ($processId == '')
+        {
+            $processId = $a->process_id;
+        }
+
+        $callers = debug_backtrace();
+
+        if (count($callers) > 1) {
+            $function = $callers[1]['function'];
+        } else {
+            $function = '';
+        }
+
+        $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
+                DateTimeFormat::utcNow(DateTimeFormat::ATOM),
+                $processId,
+                self::$levels[$level],
+                basename($callers[0]['file']),
+                $callers[0]['line'],
+                $function,
+                $msg
+            );
+
+        $stamp1 = microtime(true);
+        @file_put_contents($logfile, $logline, FILE_APPEND);
+        $a->saveTimestamp($stamp1, "file");
+    }
+
+    /**
+     * @brief An alternative logger for development.
+     * Works largely as log() but allows developers
+     * to isolate particular elements they are targetting
+     * personally without background noise
+     *
+     * @param string $msg
+     */
+    public static function devLog($msg)
+    {
+        $a = self::getApp();
+
+        $logfile = Config::get('system', 'dlogfile');
+
+        if (!$logfile) {
+            return;
+        }
+
+        $dlogip = Config::get('system', 'dlogip');
+
+        if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip)
+        {
+            return;
+        }
+
+        $processId = session_id();
+
+        if ($processId == '')
+        {
+            $processId = $a->process_id;
+        }
+
+        $callers = debug_backtrace();
+        $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
+                DateTimeFormat::utcNow(),
+                $processId,
+                basename($callers[0]['file']),
+                $callers[0]['line'],
+                $callers[1]['function'],
+                $msg
+            );
+
+        $stamp1 = microtime(true);
+        @file_put_contents($logfile, $logline, FILE_APPEND);
+        $a->saveTimestamp($stamp1, "file");
+    }
+}
index 9250bc2e5b46dd7f266eff4a99e00f145550fb5a..19aae2b82348a75b292d3700f641b6383bcce11e 100644 (file)
@@ -9,6 +9,7 @@ namespace Friendica\Core;
 use Friendica\BaseObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -358,7 +359,7 @@ class NotificationsManager extends BaseObject
                                                        break;
                                                }
                                                /// @todo Check if this part here is used at all
-                                               logger('Complete data: ' . json_encode($it) . ' - ' . System::callstack(20), LOGGER_DEBUG);
+                                               Logger::log('Complete data: ' . json_encode($it) . ' - ' . System::callstack(20), Logger::DEBUG);
 
                                                $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
                                                $obj = XML::parseString($xmlhead . $it['object']);
index 3ebdb99e167a499502940ae2c0f337489458dbac..1baf111e93ef60bcd0b04d7846ebf82b69932808 100644 (file)
@@ -4,6 +4,7 @@ namespace Friendica\Core\Session;
 
 use Friendica\BaseObject;
 use Friendica\Core\Cache;
+use Friendica\Core\Logger;
 use Friendica\Core\Session;
 use SessionHandlerInterface;
 
@@ -33,7 +34,7 @@ class CacheSessionHandler extends BaseObject implements SessionHandlerInterface
                        Session::$exists = true;
                        return $data;
                }
-               logger("no data for session $session_id", LOGGER_TRACE);
+               Logger::log("no data for session $session_id", Logger::TRACE);
                return '';
        }
 
index f249b37fd7a750ca97997062aee0e9382f5adbe3..91788588faeb3f77e775feae960ac3dfbcceee77 100644 (file)
@@ -3,6 +3,7 @@
 namespace Friendica\Core\Session;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use SessionHandlerInterface;
@@ -34,7 +35,7 @@ class DatabaseSessionHandler extends BaseObject implements SessionHandlerInterfa
                        Session::$exists = true;
                        return $session['data'];
                }
-               logger("no data for session $session_id", LOGGER_TRACE);
+               Logger::log("no data for session $session_id", Logger::TRACE);
 
                return '';
        }
index 6079d9e22855d922a3072f9b06804725b5012872..07f0b6b171c75bd7f6c4c6fa3c9b16d12f61b581 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Core;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Util\XML;
 
@@ -100,7 +101,7 @@ class System extends BaseObject
                }
 
                if ($st) {
-                       logger('xml_status returning non_zero: ' . $st . " message=" . $message);
+                       Logger::log('xml_status returning non_zero: ' . $st . " message=" . $message);
                }
 
                header("Content-type: text/xml");
@@ -134,7 +135,7 @@ class System extends BaseObject
                        $err = 'OK';
                }
 
-               logger('http_status_exit ' . $val);
+               Logger::log('http_status_exit ' . $val);
                header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
 
                if (isset($description["title"])) {
index 7e5b89d2f9c506146c2f8c96fd788c4627a0602f..e5026904b8cef7936d4c2af75fe0ce600d8445c2 100644 (file)
@@ -6,6 +6,7 @@
 
 namespace Friendica\Core;
 
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 
 require_once 'boot.php';
@@ -106,7 +107,7 @@ class Theme
        // install and uninstall theme
        public static function uninstall($theme)
        {
-               logger("Addons: uninstalling theme " . $theme);
+               Logger::log("Addons: uninstalling theme " . $theme);
 
                include_once "view/theme/$theme/theme.php";
                if (function_exists("{$theme}_uninstall")) {
@@ -123,7 +124,7 @@ class Theme
                        return false;
                }
 
-               logger("Addons: installing theme $theme");
+               Logger::log("Addons: installing theme $theme");
 
                include_once "view/theme/$theme/theme.php";
 
@@ -132,7 +133,7 @@ class Theme
                        $func();
                        return true;
                } else {
-                       logger("Addons: FAILED installing theme $theme");
+                       Logger::log("Addons: FAILED installing theme $theme");
                        return false;
                }
        }
index 18aabec08a07c800be2b7d74195a36fd5ff867b3..7ccb6f80cbd7aa5d98ab7646b3a71bcf9f87bd16 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Core;
 
 use Friendica\App;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Photo;
@@ -37,7 +38,7 @@ class UserImport
        private static function checkCols($table, &$arr)
        {
                $query = sprintf("SHOW COLUMNS IN `%s`", DBA::escape($table));
-               logger("uimport: $query", LOGGER_DEBUG);
+               Logger::log("uimport: $query", Logger::DEBUG);
                $r = q($query);
                $tcols = [];
                // get a plain array of column names
@@ -68,7 +69,7 @@ class UserImport
                $cols = implode("`,`", array_map(['Friendica\Database\DBA', 'escape'], array_keys($arr)));
                $vals = implode("','", array_map(['Friendica\Database\DBA', 'escape'], array_values($arr)));
                $query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
-               logger("uimport: $query", LOGGER_TRACE);
+               Logger::log("uimport: $query", Logger::TRACE);
 
                if (self::IMPORT_DEBUG) {
                        return true;
@@ -85,7 +86,7 @@ class UserImport
         */
        public static function importAccount(App $a, $file)
        {
-               logger("Start user import from " . $file['tmp_name']);
+               Logger::log("Start user import from " . $file['tmp_name']);
                /*
                STEPS
                1. checks
@@ -143,7 +144,7 @@ class UserImport
                // import user
                $r = self::dbImportAssoc('user', $account['user']);
                if ($r === false) {
-                       logger("uimport:insert user : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                       Logger::log("uimport:insert user : ERROR : " . DBA::errorMessage(), Logger::INFO);
                        notice(L10n::t("User creation error"));
                        return;
                }
@@ -161,7 +162,7 @@ class UserImport
                        $profile['uid'] = $newuid;
                        $r = self::dbImportAssoc('profile', $profile);
                        if ($r === false) {
-                               logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                               Logger::log("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                                info(L10n::t("User profile creation error"));
                                DBA::delete('user', ['uid' => $newuid]);
                                return;
@@ -199,7 +200,7 @@ class UserImport
                        $contact['uid'] = $newuid;
                        $r = self::dbImportAssoc('contact', $contact);
                        if ($r === false) {
-                               logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                               Logger::log("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                                $errorcount++;
                        } else {
                                $contact['newid'] = self::lastInsertId();
@@ -213,7 +214,7 @@ class UserImport
                        $group['uid'] = $newuid;
                        $r = self::dbImportAssoc('group', $group);
                        if ($r === false) {
-                               logger("uimport:insert group " . $group['name'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                               Logger::log("uimport:insert group " . $group['name'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                        } else {
                                $group['newid'] = self::lastInsertId();
                        }
@@ -238,7 +239,7 @@ class UserImport
                        if ($import == 2) {
                                $r = self::dbImportAssoc('group_member', $group_member);
                                if ($r === false) {
-                                       logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                                       Logger::log("uimport:insert group member " . $group_member['id'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                                }
                        }
                }
@@ -256,7 +257,7 @@ class UserImport
                        );
 
                        if ($r === false) {
-                               logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                               Logger::log("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                        }
                }
 
@@ -264,7 +265,7 @@ class UserImport
                        $pconfig['uid'] = $newuid;
                        $r = self::dbImportAssoc('pconfig', $pconfig);
                        if ($r === false) {
-                               logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . DBA::errorMessage(), LOGGER_INFO);
+                               Logger::log("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . DBA::errorMessage(), Logger::INFO);
                        }
                }
 
index a3c5884604debd24cb73125f031b52c4f0b93311..c053e32bc8859a25e1b32b0aabf6ab73d0f9bdbb 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Core;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Model\Process;
 use Friendica\Util\DateTimeFormat;
@@ -42,7 +43,7 @@ class Worker
 
                // At first check the maximum load. We shouldn't continue with a high load
                if ($a->isMaxLoadReached()) {
-                       logger('Pre check: maximum load reached, quitting.', LOGGER_DEBUG);
+                       Logger::log('Pre check: maximum load reached, quitting.', Logger::DEBUG);
                        return;
                }
 
@@ -58,25 +59,25 @@ class Worker
 
                // Count active workers and compare them with a maximum value that depends on the load
                if (self::tooMuchWorkers()) {
-                       logger('Pre check: Active worker limit reached, quitting.', LOGGER_DEBUG);
+                       Logger::log('Pre check: Active worker limit reached, quitting.', Logger::DEBUG);
                        return;
                }
 
                // Do we have too few memory?
                if ($a->isMinMemoryReached()) {
-                       logger('Pre check: Memory limit reached, quitting.', LOGGER_DEBUG);
+                       Logger::log('Pre check: Memory limit reached, quitting.', Logger::DEBUG);
                        return;
                }
 
                // Possibly there are too much database connections
                if (self::maxConnectionsReached()) {
-                       logger('Pre check: maximum connections reached, quitting.', LOGGER_DEBUG);
+                       Logger::log('Pre check: maximum connections reached, quitting.', Logger::DEBUG);
                        return;
                }
 
                // Possibly there are too much database processes that block the system
                if ($a->isMaxProcessesReached()) {
-                       logger('Pre check: maximum processes reached, quitting.', LOGGER_DEBUG);
+                       Logger::log('Pre check: maximum processes reached, quitting.', Logger::DEBUG);
                        return;
                }
 
@@ -99,7 +100,7 @@ class Worker
 
                                // The work will be done
                                if (!self::execute($entry)) {
-                                       logger('Process execution failed, quitting.', LOGGER_DEBUG);
+                                       Logger::log('Process execution failed, quitting.', Logger::DEBUG);
                                        return;
                                }
 
@@ -117,14 +118,14 @@ class Worker
                                $stamp = (float)microtime(true);
                                // Count active workers and compare them with a maximum value that depends on the load
                                if (self::tooMuchWorkers()) {
-                                       logger('Active worker limit reached, quitting.', LOGGER_DEBUG);
+                                       Logger::log('Active worker limit reached, quitting.', Logger::DEBUG);
                                        Lock::release('worker');
                                        return;
                                }
 
                                // Check free memory
                                if ($a->isMinMemoryReached()) {
-                                       logger('Memory limit reached, quitting.', LOGGER_DEBUG);
+                                       Logger::log('Memory limit reached, quitting.', Logger::DEBUG);
                                        Lock::release('worker');
                                        return;
                                }
@@ -134,7 +135,7 @@ class Worker
 
                        // Quit the worker once every 5 minutes
                        if (time() > ($starttime + 300)) {
-                               logger('Process lifetime reached, quitting.', LOGGER_DEBUG);
+                               Logger::log('Process lifetime reached, quitting.', Logger::DEBUG);
                                return;
                        }
                }
@@ -143,7 +144,7 @@ class Worker
                if (Config::get('system', 'worker_daemon_mode', false)) {
                        self::IPCSetJobState(false);
                }
-               logger("Couldn't select a workerqueue entry, quitting process " . getmypid() . ".", LOGGER_DEBUG);
+               Logger::log("Couldn't select a workerqueue entry, quitting process " . getmypid() . ".", Logger::DEBUG);
        }
 
        /**
@@ -213,19 +214,19 @@ class Worker
 
                // Quit when in maintenance
                if (Config::get('system', 'maintenance', false, true)) {
-                       logger("Maintenance mode - quit process ".$mypid, LOGGER_DEBUG);
+                       Logger::log("Maintenance mode - quit process ".$mypid, Logger::DEBUG);
                        return false;
                }
 
                // Constantly check the number of parallel database processes
                if ($a->isMaxProcessesReached()) {
-                       logger("Max processes reached for process ".$mypid, LOGGER_DEBUG);
+                       Logger::log("Max processes reached for process ".$mypid, Logger::DEBUG);
                        return false;
                }
 
                // Constantly check the number of available database connections to let the frontend be accessible at any time
                if (self::maxConnectionsReached()) {
-                       logger("Max connection reached for process ".$mypid, LOGGER_DEBUG);
+                       Logger::log("Max connection reached for process ".$mypid, Logger::DEBUG);
                        return false;
                }
 
@@ -270,7 +271,7 @@ class Worker
                }
 
                if (!validate_include($include)) {
-                       logger("Include file ".$argv[0]." is not valid!");
+                       Logger::log("Include file ".$argv[0]." is not valid!");
                        DBA::delete('workerqueue', ['id' => $queue["id"]]);
                        return true;
                }
@@ -302,7 +303,7 @@ class Worker
                        }
                        self::$db_duration = (microtime(true) - $stamp);
                } else {
-                       logger("Function ".$funcname." does not exist");
+                       Logger::log("Function ".$funcname." does not exist");
                        DBA::delete('workerqueue', ['id' => $queue["id"]]);
                }
 
@@ -328,7 +329,7 @@ class Worker
 
                $new_process_id = System::processID("wrk");
 
-               logger("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." ".$queue["parameter"]." - Process PID: ".$new_process_id);
+               Logger::log("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." ".$queue["parameter"]." - Process PID: ".$new_process_id);
 
                $stamp = (float)microtime(true);
 
@@ -378,27 +379,27 @@ class Worker
                 * The execution time is the productive time.
                 * By changing parameters like the maximum number of workers we can check the effectivness.
                */
-               logger(
+               Logger::log(
                        'DB: '.number_format(self::$db_duration, 2).
                        ' - Lock: '.number_format(self::$lock_duration, 2).
                        ' - Rest: '.number_format($up_duration - self::$db_duration - self::$lock_duration, 2).
                        ' - Execution: '.number_format($duration, 2),
-                       LOGGER_DEBUG
+                       Logger::DEBUG
                );
 
                self::$lock_duration = 0;
 
                if ($duration > 3600) {
-                       logger("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 1 hour (".round($duration/60, 3).")", LOGGER_DEBUG);
+                       Logger::log("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 1 hour (".round($duration/60, 3).")", Logger::DEBUG);
                } elseif ($duration > 600) {
-                       logger("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 10 minutes (".round($duration/60, 3).")", LOGGER_DEBUG);
+                       Logger::log("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 10 minutes (".round($duration/60, 3).")", Logger::DEBUG);
                } elseif ($duration > 300) {
-                       logger("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 5 minutes (".round($duration/60, 3).")", LOGGER_DEBUG);
+                       Logger::log("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 5 minutes (".round($duration/60, 3).")", Logger::DEBUG);
                } elseif ($duration > 120) {
-                       logger("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 2 minutes (".round($duration/60, 3).")", LOGGER_DEBUG);
+                       Logger::log("Prio ".$queue["priority"].": ".$queue["parameter"]." - longer than 2 minutes (".round($duration/60, 3).")", Logger::DEBUG);
                }
 
-               logger("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." - done in ".$duration." seconds. Process PID: ".$new_process_id);
+               Logger::log("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." - done in ".$duration." seconds. Process PID: ".$new_process_id);
 
                // Write down the performance values into the log
                if (Config::get("system", "profiler")) {
@@ -453,7 +454,7 @@ class Worker
                                }
                        }
 
-                       logger(
+                       Logger::log(
                                "ID ".$queue["id"].": ".$funcname.": ".sprintf(
                                        "DB: %s/%s, Cache: %s/%s, Net: %s, I/O: %s, Other: %s, Total: %s".$o,
                                        number_format($a->performance["database"] - $a->performance["database_write"], 2),
@@ -467,14 +468,14 @@ class Worker
                                                + $a->performance["network"] + $a->performance["file"]), 2),
                                        number_format($duration, 2)
                                ),
-                               LOGGER_DEBUG
+                               Logger::DEBUG
                        );
                }
 
                $cooldown = Config::get("system", "worker_cooldown", 0);
 
                if ($cooldown > 0) {
-                       logger("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." - in cooldown for ".$cooldown." seconds");
+                       Logger::log("Process ".$mypid." - Prio ".$queue["priority"]." - ID ".$queue["id"].": ".$funcname." - in cooldown for ".$cooldown." seconds");
                        sleep($cooldown);
                }
        }
@@ -518,12 +519,12 @@ class Worker
                        $used = DBA::numRows($r);
                        DBA::close($r);
 
-                       logger("Connection usage (user values): ".$used."/".$max, LOGGER_DEBUG);
+                       Logger::log("Connection usage (user values): ".$used."/".$max, Logger::DEBUG);
 
                        $level = ($used / $max) * 100;
 
                        if ($level >= $maxlevel) {
-                               logger("Maximum level (".$maxlevel."%) of user connections reached: ".$used."/".$max);
+                               Logger::log("Maximum level (".$maxlevel."%) of user connections reached: ".$used."/".$max);
                                return true;
                        }
                }
@@ -546,14 +547,14 @@ class Worker
                if ($used == 0) {
                        return false;
                }
-               logger("Connection usage (system values): ".$used."/".$max, LOGGER_DEBUG);
+               Logger::log("Connection usage (system values): ".$used."/".$max, Logger::DEBUG);
 
                $level = $used / $max * 100;
 
                if ($level < $maxlevel) {
                        return false;
                }
-               logger("Maximum level (".$level."%) of system connections reached: ".$used."/".$max);
+               Logger::log("Maximum level (".$level."%) of system connections reached: ".$used."/".$max);
                return true;
        }
 
@@ -594,7 +595,7 @@ class Worker
                                // How long is the process already running?
                                $duration = (time() - strtotime($entry["executed"])) / 60;
                                if ($duration > $max_duration) {
-                                       logger("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") took more than ".$max_duration." minutes. It will be killed now.");
+                                       Logger::log("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") took more than ".$max_duration." minutes. It will be killed now.");
                                        posix_kill($entry["pid"], SIGTERM);
 
                                        // We killed the stale process.
@@ -614,7 +615,7 @@ class Worker
                                                ['id' => $entry["id"]]
                                        );
                                } else {
-                                       logger("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG);
+                                       Logger::log("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", Logger::DEBUG);
                                }
                        }
                }
@@ -697,16 +698,16 @@ class Worker
                                $high_running = self::processWithPriorityActive($top_priority);
 
                                if (!$high_running && ($top_priority > PRIORITY_UNDEFINED) && ($top_priority < PRIORITY_NEGLIGIBLE)) {
-                                       logger("There are jobs with priority ".$top_priority." waiting but none is executed. Open a fastlane.", LOGGER_DEBUG);
+                                       Logger::log("There are jobs with priority ".$top_priority." waiting but none is executed. Open a fastlane.", Logger::DEBUG);
                                        $queues = $active + 1;
                                }
                        }
 
-                       logger("Load: " . $load ."/" . $maxsysload . " - processes: " . $deferred . "/" . $active . "/" . $entries . $processlist . " - maximum: " . $queues . "/" . $maxqueues, LOGGER_DEBUG);
+                       Logger::log("Load: " . $load ."/" . $maxsysload . " - processes: " . $deferred . "/" . $active . "/" . $entries . $processlist . " - maximum: " . $queues . "/" . $maxqueues, Logger::DEBUG);
 
                        // Are there fewer workers running as possible? Then fork a new one.
                        if (!Config::get("system", "worker_dont_fork", false) && ($queues > ($active + 1)) && ($entries > 1)) {
-                               logger("Active workers: ".$active."/".$queues." Fork a new worker.", LOGGER_DEBUG);
+                               Logger::log("Active workers: ".$active."/".$queues." Fork a new worker.", Logger::DEBUG);
                                if (Config::get('system', 'worker_daemon_mode', false)) {
                                        self::IPCSetJobState(true);
                                } else {
@@ -779,11 +780,11 @@ class Worker
                                ++$high;
                        }
                }
-               logger("Highest priority: ".$highest_priority." Total processes: ".count($priorities)." Count high priority processes: ".$high, LOGGER_DEBUG);
+               Logger::log("Highest priority: ".$highest_priority." Total processes: ".count($priorities)." Count high priority processes: ".$high, Logger::DEBUG);
                $passing_slow = (($high/count($priorities)) > (2/3));
 
                if ($passing_slow) {
-                       logger("Passing slower processes than priority ".$highest_priority, LOGGER_DEBUG);
+                       Logger::log("Passing slower processes than priority ".$highest_priority, Logger::DEBUG);
                }
                return $passing_slow;
        }
@@ -816,7 +817,7 @@ class Worker
                $slope = $queue_length / pow($lower_job_limit, $exponent);
                $limit = min($queue_length, ceil($slope * pow($jobs, $exponent)));
 
-               logger('Deferred: ' . $deferred . ' - Total: ' . $jobs . ' - Maximum: ' . $queue_length . ' - jobs per queue: ' . $limit, LOGGER_DEBUG);
+               Logger::log('Deferred: ' . $deferred . ' - Total: ' . $jobs . ' - Maximum: ' . $queue_length . ' - jobs per queue: ' . $limit, Logger::DEBUG);
                $ids = [];
                if (self::passingSlow($highest_priority)) {
                        // Are there waiting processes with a higher priority than the currently highest?
@@ -975,7 +976,7 @@ class Worker
 
                        self::runCron();
 
-                       logger('Call worker', LOGGER_DEBUG);
+                       Logger::log('Call worker', Logger::DEBUG);
                        self::spawnWorker();
                        return;
                }
@@ -1014,7 +1015,7 @@ class Worker
         */
        private static function runCron()
        {
-               logger('Add cron entries', LOGGER_DEBUG);
+               Logger::log('Add cron entries', Logger::DEBUG);
 
                // Check for spooled items
                self::add(PRIORITY_HIGH, "SpoolPost");
@@ -1152,7 +1153,7 @@ class Worker
                $id = $queue['id'];
 
                if ($retrial > 14) {
-                       logger('Id ' . $id . ' had been tried 14 times. We stop now.', LOGGER_DEBUG);
+                       Logger::log('Id ' . $id . ' had been tried 14 times. We stop now.', Logger::DEBUG);
                        return;
                }
 
@@ -1160,7 +1161,7 @@ class Worker
                $delay = (($retrial + 3) ** 4) + (rand(1, 30) * ($retrial + 1));
                $next = DateTimeFormat::utc('now + ' . $delay . ' seconds');
 
-               logger('Defer execution ' . $retrial . ' of id ' . $id . ' to ' . $next, LOGGER_DEBUG);
+               Logger::log('Defer execution ' . $retrial . ' of id ' . $id . ' to ' . $next, Logger::DEBUG);
 
                $fields = ['retrial' => $retrial + 1, 'next_try' => $next, 'executed' => DBA::NULL_DATETIME, 'pid' => 0];
                DBA::update('workerqueue', $fields, ['id' => $id]);
index 6249537c06d7661c7f286e9e4bdf6c38b9fc25d0..bf3004ead4761eebdc2d46fc026c8240597a47cf 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Database;
 // Please use App->getConfigVariable() instead.
 //use Friendica\Core\Config;
 
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Util\DateTimeFormat;
 use mysqli;
@@ -412,7 +413,7 @@ class DBA
 
                if ((substr_count($sql, '?') != count($args)) && (count($args) > 0)) {
                        // Question: Should we continue or stop the query here?
-                       logger('Parameter mismatch. Query "'.$sql.'" - Parameters '.print_r($args, true), LOGGER_DEBUG);
+                       Logger::log('Parameter mismatch. Query "'.$sql.'" - Parameters '.print_r($args, true), Logger::DEBUG);
                }
 
                $sql = self::cleanQuery($sql);
@@ -552,7 +553,7 @@ class DBA
                        $error = self::$error;
                        $errorno = self::$errorno;
 
-                       logger('DB Error '.self::$errorno.': '.self::$error."\n".
+                       Logger::log('DB Error '.self::$errorno.': '.self::$error."\n".
                                System::callstack(8)."\n".self::replaceParameters($sql, $args));
 
                        // On a lost connection we try to reconnect - but only once.
@@ -560,14 +561,14 @@ class DBA
                                if (self::$in_retrial || !self::reconnect()) {
                                        // It doesn't make sense to continue when the database connection was lost
                                        if (self::$in_retrial) {
-                                               logger('Giving up retrial because of database error '.$errorno.': '.$error);
+                                               Logger::log('Giving up retrial because of database error '.$errorno.': '.$error);
                                        } else {
-                                               logger("Couldn't reconnect after database error ".$errorno.': '.$error);
+                                               Logger::log("Couldn't reconnect after database error ".$errorno.': '.$error);
                                        }
                                        exit(1);
                                } else {
                                        // We try it again
-                                       logger('Reconnected after database error '.$errorno.': '.$error);
+                                       Logger::log('Reconnected after database error '.$errorno.': '.$error);
                                        self::$in_retrial = true;
                                        $ret = self::p($sql, $args);
                                        self::$in_retrial = false;
@@ -636,13 +637,13 @@ class DBA
                        $error = self::$error;
                        $errorno = self::$errorno;
 
-                       logger('DB Error '.self::$errorno.': '.self::$error."\n".
+                       Logger::log('DB Error '.self::$errorno.': '.self::$error."\n".
                                System::callstack(8)."\n".self::replaceParameters($sql, $params));
 
                        // On a lost connection we simply quit.
                        // A reconnect like in self::p could be dangerous with modifications
                        if ($errorno == 2006) {
-                               logger('Giving up because of database error '.$errorno.': '.$error);
+                               Logger::log('Giving up because of database error '.$errorno.': '.$error);
                                exit(1);
                        }
 
@@ -835,7 +836,7 @@ class DBA
        public static function insert($table, $param, $on_duplicate_update = false) {
 
                if (empty($table) || empty($param)) {
-                       logger('Table and fields have to be set');
+                       Logger::log('Table and fields have to be set');
                        return false;
                }
 
@@ -1051,7 +1052,7 @@ class DBA
        public static function delete($table, array $conditions, array $options = [], $in_process = false, array &$callstack = [])
        {
                if (empty($table) || empty($conditions)) {
-                       logger('Table and conditions have to be set');
+                       Logger::log('Table and conditions have to be set');
                        return false;
                }
 
@@ -1142,7 +1143,7 @@ class DBA
 
                                if ((count($command['conditions']) > 1) || is_int($first_key)) {
                                        $sql = "DELETE FROM `" . $command['table'] . "`" . $condition_string;
-                                       logger(self::replaceParameters($sql, $conditions), LOGGER_DATA);
+                                       Logger::log(self::replaceParameters($sql, $conditions), Logger::DATA);
 
                                        if (!self::e($sql, $conditions)) {
                                                if ($do_transaction) {
@@ -1172,7 +1173,7 @@ class DBA
                                                $sql = "DELETE FROM `" . $table . "` WHERE `" . $field . "` IN (" .
                                                        substr(str_repeat("?, ", count($field_values)), 0, -2) . ");";
 
-                                               logger(self::replaceParameters($sql, $field_values), LOGGER_DATA);
+                                               Logger::log(self::replaceParameters($sql, $field_values), Logger::DATA);
 
                                                if (!self::e($sql, $field_values)) {
                                                        if ($do_transaction) {
@@ -1223,7 +1224,7 @@ class DBA
        public static function update($table, $fields, $condition, $old_fields = []) {
 
                if (empty($table) || empty($fields) || empty($condition)) {
-                       logger('Table, fields and condition have to be set');
+                       Logger::log('Table, fields and condition have to be set');
                        return false;
                }
 
index 9abae944ae0e873d8b67a065a95f49fc2f49a07c..9a14114de1f9c935d80d66723accaf713b3b6fb6 100644 (file)
@@ -8,6 +8,7 @@ use Exception;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Util\DateTimeFormat;
 
 require_once 'boot.php';
@@ -69,7 +70,7 @@ class DBStructure
 
                // No valid result?
                if (!DBA::isResult($adminlist)) {
-                       logger(sprintf('Cannot notify administrators about update_id=%d, error_message=%s', $update_id, $error_message), LOGGER_INFO);
+                       Logger::log(sprintf('Cannot notify administrators about update_id=%d, error_message=%s', $update_id, $error_message), Logger::INFO);
 
                        // Don't continue
                        return;
@@ -100,7 +101,7 @@ class DBStructure
                }
 
                //try the logger
-               logger("CRITICAL: Database structure update failed: ".$error_message);
+               Logger::log("CRITICAL: Database structure update failed: ".$error_message);
        }
 
 
@@ -221,7 +222,7 @@ class DBStructure
 
                $errors = '';
 
-               logger('updating structure', LOGGER_DEBUG);
+               Logger::log('updating structure', Logger::DEBUG);
 
                // Get the current structure
                $database = [];
@@ -234,7 +235,7 @@ class DBStructure
                        foreach ($tables AS $table) {
                                $table = current($table);
 
-                               logger(sprintf('updating structure for table %s ...', $table), LOGGER_DEBUG);
+                               Logger::log(sprintf('updating structure for table %s ...', $table), Logger::DEBUG);
                                $database[$table] = self::tableStructure($table);
                        }
                }
index dbadcbbb1b588c785b9b13fc1bb6a27bc814fa61..94c02013e719804f83340e4c069fd5b887d98b32 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Database;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
@@ -52,7 +53,7 @@ class PostUpdate
                        return true;
                }
 
-               logger("Start", LOGGER_DEBUG);
+               Logger::log("Start", Logger::DEBUG);
 
                $end_id = Config::get("system", "post_update_1194_end");
                if (!$end_id) {
@@ -63,7 +64,7 @@ class PostUpdate
                        }
                }
 
-               logger("End ID: ".$end_id, LOGGER_DEBUG);
+               Logger::log("End ID: ".$end_id, Logger::DEBUG);
 
                $start_id = Config::get("system", "post_update_1194_start");
 
@@ -82,14 +83,14 @@ class PostUpdate
                        DBA::escape(Protocol::DFRN), DBA::escape(Protocol::DIASPORA), DBA::escape(Protocol::OSTATUS));
                if (!$r) {
                        Config::set("system", "post_update_version", 1194);
-                       logger("Update is done", LOGGER_DEBUG);
+                       Logger::log("Update is done", Logger::DEBUG);
                        return true;
                } else {
                        Config::set("system", "post_update_1194_start", $r[0]["id"]);
                        $start_id = Config::get("system", "post_update_1194_start");
                }
 
-               logger("Start ID: ".$start_id, LOGGER_DEBUG);
+               Logger::log("Start ID: ".$start_id, Logger::DEBUG);
 
                $r = q($query1.$query2.$query3."  ORDER BY `item`.`id` LIMIT 1000,1",
                        intval($start_id), intval($end_id),
@@ -99,13 +100,13 @@ class PostUpdate
                } else {
                        $pos_id = $end_id;
                }
-               logger("Progress: Start: ".$start_id." position: ".$pos_id." end: ".$end_id, LOGGER_DEBUG);
+               Logger::log("Progress: Start: ".$start_id." position: ".$pos_id." end: ".$end_id, Logger::DEBUG);
 
                q("UPDATE `item` ".$query2." SET `item`.`global` = 1 ".$query3,
                        intval($start_id), intval($pos_id),
                        DBA::escape(Protocol::DFRN), DBA::escape(Protocol::DIASPORA), DBA::escape(Protocol::OSTATUS));
 
-               logger("Done", LOGGER_DEBUG);
+               Logger::log("Done", Logger::DEBUG);
        }
 
        /**
@@ -122,7 +123,7 @@ class PostUpdate
                        return true;
                }
 
-               logger("Start", LOGGER_DEBUG);
+               Logger::log("Start", Logger::DEBUG);
                $r = q("SELECT `contact`.`id`, `contact`.`last-item`,
                        (SELECT MAX(`changed`) FROM `item` USE INDEX (`uid_wall_changed`) WHERE `wall` AND `uid` = `user`.`uid`) AS `lastitem_date`
                        FROM `user`
@@ -138,7 +139,7 @@ class PostUpdate
                }
 
                Config::set("system", "post_update_version", 1206);
-               logger("Done", LOGGER_DEBUG);
+               Logger::log("Done", Logger::DEBUG);
                return true;
        }
 
@@ -156,7 +157,7 @@ class PostUpdate
 
                $id = Config::get("system", "post_update_version_1279_id", 0);
 
-               logger("Start from item " . $id, LOGGER_DEBUG);
+               Logger::log("Start from item " . $id, Logger::DEBUG);
 
                $fields = array_merge(Item::MIXED_CONTENT_FIELDLIST, ['network', 'author-id', 'owner-id', 'tag', 'file',
                        'author-name', 'author-avatar', 'author-link', 'owner-name', 'owner-avatar', 'owner-link', 'id',
@@ -170,7 +171,7 @@ class PostUpdate
                $items = Item::select($fields, $condition, $params);
 
                if (DBA::errorNo() != 0) {
-                       logger('Database error ' . DBA::errorNo() . ':' . DBA::errorMessage());
+                       Logger::log('Database error ' . DBA::errorNo() . ':' . DBA::errorMessage());
                        return false;
                }
 
@@ -225,7 +226,7 @@ class PostUpdate
 
                Config::set("system", "post_update_version_1279_id", $id);
 
-               logger("Processed rows: " . $rows . " - last processed item:  " . $id, LOGGER_DEBUG);
+               Logger::log("Processed rows: " . $rows . " - last processed item:  " . $id, Logger::DEBUG);
 
                if ($start_id == $id) {
                        // Set all deprecated fields to "null" if they contain an empty string
@@ -237,13 +238,13 @@ class PostUpdate
                        foreach ($nullfields as $field) {
                                $fields = [$field => null];
                                $condition = [$field => ''];
-                               logger("Setting '" . $field . "' to null if empty.", LOGGER_DEBUG);
+                               Logger::log("Setting '" . $field . "' to null if empty.", Logger::DEBUG);
                                // Important: This has to be a "DBA::update", not a "Item::update"
                                DBA::update('item', $fields, $condition);
                        }
 
                        Config::set("system", "post_update_version", 1279);
-                       logger("Done", LOGGER_DEBUG);
+                       Logger::log("Done", Logger::DEBUG);
                        return true;
                }
 
@@ -306,7 +307,7 @@ class PostUpdate
 
                $id = Config::get("system", "post_update_version_1281_id", 0);
 
-               logger("Start from item " . $id, LOGGER_DEBUG);
+               Logger::log("Start from item " . $id, Logger::DEBUG);
 
                $fields = ['id', 'guid', 'uri', 'uri-id', 'parent-uri', 'parent-uri-id', 'thr-parent', 'thr-parent-id'];
 
@@ -317,7 +318,7 @@ class PostUpdate
                $items = DBA::select('item', $fields, $condition, $params);
 
                if (DBA::errorNo() != 0) {
-                       logger('Database error ' . DBA::errorNo() . ':' . DBA::errorMessage());
+                       Logger::log('Database error ' . DBA::errorNo() . ':' . DBA::errorMessage());
                        return false;
                }
 
@@ -358,17 +359,17 @@ class PostUpdate
 
                Config::set("system", "post_update_version_1281_id", $id);
 
-               logger("Processed rows: " . $rows . " - last processed item:  " . $id, LOGGER_DEBUG);
+               Logger::log("Processed rows: " . $rows . " - last processed item:  " . $id, Logger::DEBUG);
 
                if ($start_id == $id) {
-                       logger("Updating item-uri in item-activity", LOGGER_DEBUG);
+                       Logger::log("Updating item-uri in item-activity", Logger::DEBUG);
                        DBA::e("UPDATE `item-activity` INNER JOIN `item-uri` ON `item-uri`.`uri` = `item-activity`.`uri` SET `item-activity`.`uri-id` = `item-uri`.`id` WHERE `item-activity`.`uri-id` IS NULL");
 
-                       logger("Updating item-uri in item-content", LOGGER_DEBUG);
+                       Logger::log("Updating item-uri in item-content", Logger::DEBUG);
                        DBA::e("UPDATE `item-content` INNER JOIN `item-uri` ON `item-uri`.`uri` = `item-content`.`uri` SET `item-content`.`uri-id` = `item-uri`.`id` WHERE `item-content`.`uri-id` IS NULL");
 
                        Config::set("system", "post_update_version", 1281);
-                       logger("Done", LOGGER_DEBUG);
+                       Logger::log("Done", Logger::DEBUG);
                        return true;
                }
 
index 72c644ab9ac0d15302d321f4ca0489f4c19c50a0..c7cf54b7209e2d60188bd5f352abcce2dc19c5a4 100644 (file)
@@ -7,6 +7,7 @@
 namespace Friendica\Model;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Util\Network;
@@ -192,7 +193,7 @@ class APContact extends BaseObject
                // Update the gcontact table
                DBA::update('gcontact', $contact_fields, ['nurl' => normalise_link($url)]);
 
-               logger('Updated profile for ' . $url, LOGGER_DEBUG);
+               Logger::log('Updated profile for ' . $url, Logger::DEBUG);
 
                return $apcontact;
        }
index f653f9ccd522307e5ceb940458ee80542c2053af..5d571e30e1e8d7271e2a2587767cedd8923d5f58 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Content\Pager;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
@@ -586,7 +587,7 @@ class Contact extends BaseObject
                                return;
                        }
                } elseif (!isset($contact['url'])) {
-                       logger('Empty contact: ' . json_encode($contact) . ' - ' . System::callstack(20), LOGGER_DEBUG);
+                       Logger::log('Empty contact: ' . json_encode($contact) . ' - ' . System::callstack(20), Logger::DEBUG);
                }
 
                // Contact already archived or "self" contact? => nothing to do
@@ -1027,7 +1028,7 @@ class Contact extends BaseObject
         */
        public static function getIdForURL($url, $uid = 0, $no_update = false, $default = [], $in_loop = false)
        {
-               logger("Get contact data for url " . $url . " and user " . $uid . " - " . System::callstack(), LOGGER_DEBUG);
+               Logger::log("Get contact data for url " . $url . " and user " . $uid . " - " . System::callstack(), Logger::DEBUG);
 
                $contact_id = 0;
 
@@ -1618,7 +1619,7 @@ class Contact extends BaseObject
                }
 
                if (($network != '') && ($ret['network'] != $network)) {
-                       logger('Expected network ' . $network . ' does not match actual network ' . $ret['network']);
+                       Logger::log('Expected network ' . $network . ' does not match actual network ' . $ret['network']);
                        return $result;
                }
 
@@ -1770,10 +1771,10 @@ class Contact extends BaseObject
                                }
                        } elseif ($contact['network'] == Protocol::DIASPORA) {
                                $ret = Diaspora::sendShare($a->user, $contact);
-                               logger('share returns: ' . $ret);
+                               Logger::log('share returns: ' . $ret);
                        } elseif ($contact['network'] == Protocol::ACTIVITYPUB) {
                                $ret = ActivityPub\Transmitter::sendActivity('Follow', $contact['url'], $uid);
-                               logger('Follow returns: ' . $ret);
+                               Logger::log('Follow returns: ' . $ret);
                        }
                }
 
@@ -1855,7 +1856,7 @@ class Contact extends BaseObject
                        // send email notification to owner?
                } else {
                        if (DBA::exists('contact', ['nurl' => normalise_link($url), 'uid' => $importer['uid'], 'pending' => true])) {
-                               logger('ignoring duplicated connection request from pending contact ' . $url);
+                               Logger::log('ignoring duplicated connection request from pending contact ' . $url);
                                return;
                        }
                        // create contact record
@@ -1961,7 +1962,7 @@ class Contact extends BaseObject
                $r = q("SELECT * FROM `contact` WHERE `bd` != '' AND `bd` > '0001-01-01' AND SUBSTRING(`bd`, 1, 4) != `bdyear` ");
                if (DBA::isResult($r)) {
                        foreach ($r as $rr) {
-                               logger('update_contact_birthday: ' . $rr['bd']);
+                               Logger::log('update_contact_birthday: ' . $rr['bd']);
 
                                $nextbd = DateTimeFormat::utcNow('Y') . substr($rr['bd'], 4);
 
index 25075dcfbe41cbdab375d0c964c74c62fddd9d3f..159cd2f20f23a221e3eedc862f0a05439291f5c3 100644 (file)
@@ -5,6 +5,7 @@
 
 namespace Friendica\Model;
 
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Util\DateTimeFormat;
@@ -82,13 +83,13 @@ class Conversation
                                        unset($conversation['source']);
                                }
                                if (!DBA::update('conversation', $conversation, ['item-uri' => $conversation['item-uri']], $old_conv)) {
-                                       logger('Conversation: update for ' . $conversation['item-uri'] . ' from ' . $old_conv['protocol'] . ' to ' . $conversation['protocol'] . ' failed',
-                                               LOGGER_DEBUG);
+                                       Logger::log('Conversation: update for ' . $conversation['item-uri'] . ' from ' . $old_conv['protocol'] . ' to ' . $conversation['protocol'] . ' failed',
+                                               Logger::DEBUG);
                                }
                        } else {
                                if (!DBA::insert('conversation', $conversation, true)) {
-                                       logger('Conversation: insert for ' . $conversation['item-uri'] . ' (protocol ' . $conversation['protocol'] . ') failed',
-                                               LOGGER_DEBUG);
+                                       Logger::log('Conversation: insert for ' . $conversation['item-uri'] . ' (protocol ' . $conversation['protocol'] . ') failed',
+                                               Logger::DEBUG);
                                }
                        }
                }
index e9a4d4b3fd7d1792f5f44e3bb1c1208dc3f6a85e..e6ed20f72cb4e77cff497050078ef16ad242207b 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\BaseObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -224,7 +225,7 @@ class Event extends BaseObject
                }
 
                DBA::delete('event', ['id' => $event_id]);
-               logger("Deleted event ".$event_id, LOGGER_DEBUG);
+               Logger::log("Deleted event ".$event_id, Logger::DEBUG);
        }
 
        /**
diff --git a/src/Model/FileTag.php b/src/Model/FileTag.php
new file mode 100644 (file)
index 0000000..d3baffd
--- /dev/null
@@ -0,0 +1,311 @@
+<?php
+/**
+ * @file src/Model/FileTag.php
+ */
+
+namespace Friendica\Model;
+
+use Friendica\Core\L10n;
+use Friendica\Core\PConfig;
+use Friendica\Database\DBA;
+use Friendica\Model\Item;
+
+/**
+ * @brief This class handles FileTag related functions
+ */
+class FileTag
+{
+    // post categories and "save to file" use the same item.file table for storage.
+    // We will differentiate the different uses by wrapping categories in angle brackets
+    // and save to file categories in square brackets.
+    // To do this we need to escape these characters if they appear in our tag.
+
+    /**
+     * @brief URL encode &lt, &gt, left and right brackets
+     * 
+     * @param string $s String to be URL encoded.
+     * 
+     * @return string   The URL encoded string.
+     */
+    public static function encode($s)
+    {
+        return str_replace(['<', '>', '[', ']'], ['%3c', '%3e', '%5b', '%5d'], $s);
+    }
+
+    /**
+     * @brief URL decode &lt, &gt, left and right brackets
+     * 
+     * @param string $s The URL encoded string to be decoded
+     * 
+     * @return string   The decoded string.
+     */
+    public static function decode($s)
+    {
+        return str_replace(['%3c', '%3e', '%5b', '%5d'], ['<', '>', '[', ']'], $s);
+    }
+
+    /**
+     * @brief Query files for tag
+     * 
+     * @param string $table The table to be queired.
+     * @param string $s     The search term
+     * @param string $type  Optional file type.
+     * 
+     * @return string       Query string.
+     */
+    public static function fileQuery($table, $s, $type = 'file')
+    {
+        if ($type == 'file') {
+            $str = preg_quote('[' . str_replace('%', '%%', self::encode($s)) . ']');
+        } else {
+            $str = preg_quote('<' . str_replace('%', '%%', self::encode($s)) . '>');
+        }
+
+        return " AND " . (($table) ? DBA::escape($table) . '.' : '') . "file regexp '" . DBA::escape($str) . "' ";
+    }
+
+    /**
+     * @brief Get file tags from list
+     * 
+     * ex. given music,video return <music><video> or [music][video]
+     * @param string $list  A comma delimited list of tags.
+     * @param string $type  Optional file type.
+     * 
+     * @return string       A list of file tags.
+     */
+    public static function listToFile($list, $type = 'file')
+    {
+        $tag_list = '';
+        if (strlen($list)) {
+            $list_array = explode(",", $list);
+            if ($type == 'file') {
+                $lbracket = '[';
+                $rbracket = ']';
+            } else {
+                $lbracket = '<';
+                $rbracket = '>';
+            }
+
+            foreach ($list_array as $item)
+            {
+                if (strlen($item))
+                {
+                    $tag_list .= $lbracket . self::encode(trim($item))  . $rbracket;
+                }
+            }
+        }
+
+        return $tag_list;
+    }
+
+    /**
+     * @brief Get list from file tags
+     * 
+     * ex. given <music><video>[friends], return music,video or friends
+     * @param string $file  File tags
+     * @param string $type  Optional file type.
+     * 
+     * @return string       Comma delimited list of tag names.
+     */
+    public static function fileToList($file, $type = 'file')
+    {
+        $matches = false;
+        $list = '';
+
+        if ($type == 'file') {
+            $cnt = preg_match_all('/\[(.*?)\]/', $file, $matches, PREG_SET_ORDER);
+        } else {
+            $cnt = preg_match_all('/<(.*?)>/', $file, $matches, PREG_SET_ORDER);
+        }
+
+        if ($cnt)
+        {
+            foreach ($matches as $mtch)
+            {
+                if (strlen($list))
+                {
+                    $list .= ',';
+                }
+
+                $list .= self::decode($mtch[1]);
+            }
+        }
+
+        return $list;
+    }
+
+    /**
+     * @brief Update file tags in PConfig
+     * 
+     * @param int $uid          Unique Identity.
+     * @param string $file_old  Categories previously associated with an item
+     * @param string $file_new  New list of categories for an item
+     * @param string $type      Optional file type.
+     * 
+     * @return boolean          A value indicating success or failure.
+     */
+    public static function updatePconfig($uid, $file_old, $file_new, $type = 'file')
+    {
+        if (!intval($uid)) {
+            return false;
+        } elseif ($file_old == $file_new) {
+            return true;
+        }
+
+        $saved = PConfig::get($uid, 'system', 'filetags');
+
+        if (strlen($saved))
+        {
+            if ($type == 'file') {
+                $lbracket = '[';
+                $rbracket = ']';
+                $termtype = TERM_FILE;
+            } else {
+                $lbracket = '<';
+                $rbracket = '>';
+                $termtype = TERM_CATEGORY;
+            }
+
+            $filetags_updated = $saved;
+
+            // check for new tags to be added as filetags in pconfig
+            $new_tags = [];
+            $check_new_tags = explode(",", self::fileToList($file_new, $type));
+
+            foreach ($check_new_tags as $tag)
+            {
+                if (!stristr($saved,$lbracket . self::encode($tag) . $rbracket)) {
+                    $new_tags[] = $tag;
+                }
+            }
+
+            $filetags_updated .= self::listToFile(implode(",", $new_tags), $type);
+
+            // check for deleted tags to be removed from filetags in pconfig
+            $deleted_tags = [];
+            $check_deleted_tags = explode(",", self::fileToList($file_old, $type));
+
+            foreach ($check_deleted_tags as $tag)
+            {
+                if (!stristr($file_new,$lbracket . self::encode($tag) . $rbracket)) {
+                    $deleted_tags[] = $tag;
+                }
+            }
+
+            foreach ($deleted_tags as $key => $tag)
+            {
+                $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
+                    DBA::escape($tag),
+                    intval(TERM_OBJ_POST),
+                    intval($termtype),
+                    intval($uid));
+
+                if (DBA::isResult($r)) {
+                    unset($deleted_tags[$key]);
+                } else {
+                    $filetags_updated = str_replace($lbracket . self::encode($tag) . $rbracket, '', $filetags_updated);
+                }
+            }
+
+            if ($saved != $filetags_updated)
+            {
+                PConfig::set($uid, 'system', 'filetags', $filetags_updated);
+            }
+
+            return true;
+        } elseif (strlen($file_new)) {
+            PConfig::set($uid, 'system', 'filetags', $file_new);
+        }
+
+        return true;
+    }
+
+    /**
+     * @brief Add tag to file
+     * 
+     * @param int $uid      Unique identity.
+     * @param int $item_id  Item identity.
+     * @param string $file  File tag.
+     * 
+     * @return boolean      A value indicating success or failure.
+     */
+    public static function saveFile($uid, $item_id, $file)
+    {
+        if (!intval($uid))
+        {
+            return false;
+        }
+
+        $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
+        if (DBA::isResult($item))
+        {
+            if (!stristr($item['file'], '[' . self::encode($file) . ']'))
+            {
+                $fields = ['file' => $item['file'] . '[' . self::encode($file) . ']'];
+                Item::update($fields, ['id' => $item_id]);
+            }
+
+            $saved = PConfig::get($uid, 'system', 'filetags');
+
+            if (!strlen($saved) || !stristr($saved, '[' . self::encode($file) . ']'))
+            {
+                PConfig::set($uid, 'system', 'filetags', $saved . '[' . self::encode($file) . ']');
+            }
+
+            info(L10n::t('Item filed'));
+        }
+
+        return true;
+    }
+
+    /**
+     * @brief Remove tag from file
+     * 
+     * @param int $uid      Unique identity.
+     * @param int $item_id  Item identity.
+     * @param string $file  File tag.
+     * @param boolean $cat  Optional value indicating the term type (i.e. Category or File)
+     * 
+     * @return boolean      A value indicating success or failure.
+     */
+    public static function unsaveFile($uid, $item_id, $file, $cat = false)
+    {
+        if (!intval($uid))
+        {
+            return false;
+        }
+
+        if ($cat == true) {
+            $pattern = '<' . self::encode($file) . '>' ;
+            $termtype = TERM_CATEGORY;
+        } else {
+            $pattern = '[' . self::encode($file) . ']' ;
+            $termtype = TERM_FILE;
+        }
+
+        $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
+
+        if (!DBA::isResult($item))
+        {
+            return false;
+        }
+
+        $fields = ['file' => str_replace($pattern, '', $item['file'])];
+        Item::update($fields, ['id' => $item_id]);
+
+        $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
+            DBA::escape($file),
+            intval(TERM_OBJ_POST),
+            intval($termtype),
+            intval($uid)
+        );
+
+        if (!DBA::isResult($r))
+        {
+            $saved = PConfig::get($uid, 'system', 'filetags');
+            PConfig::set($uid, 'system', 'filetags', str_replace($pattern, '', $saved));
+        }
+
+        return true;
+    }
+}
index cc7775377924fb1b69882c44e7c79a30d3928367..398fc77588766a3ed6609d5ef91ca20aaf2c0a24 100644 (file)
@@ -8,6 +8,7 @@ namespace Friendica\Model;
 
 use Exception;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
@@ -256,7 +257,7 @@ class GContact
                        intval($cid)
                );
 
-               // logger("countCommonFriends: $uid $cid {$r[0]['total']}");
+               // Logger::log("countCommonFriends: $uid $cid {$r[0]['total']}");
                if (DBA::isResult($r)) {
                        return $r[0]['total'];
                }
@@ -588,7 +589,7 @@ class GContact
                }
 
                if ($new_url != $url) {
-                       logger("Cleaned contact url ".$url." to ".$new_url." - Called by: ".System::callstack(), LOGGER_DEBUG);
+                       Logger::log("Cleaned contact url ".$url." to ".$new_url." - Called by: ".System::callstack(), Logger::DEBUG);
                }
 
                return $new_url;
@@ -605,7 +606,7 @@ class GContact
                if (($contact["network"] == Protocol::OSTATUS) && PortableContact::alternateOStatusUrl($contact["url"])) {
                        $data = Probe::uri($contact["url"]);
                        if ($contact["network"] == Protocol::OSTATUS) {
-                               logger("Fix primary url from ".$contact["url"]." to ".$data["url"]." - Called by: ".System::callstack(), LOGGER_DEBUG);
+                               Logger::log("Fix primary url from ".$contact["url"]." to ".$data["url"]." - Called by: ".System::callstack(), Logger::DEBUG);
                                $contact["url"] = $data["url"];
                                $contact["addr"] = $data["addr"];
                                $contact["alias"] = $data["alias"];
@@ -629,12 +630,12 @@ class GContact
                $last_contact_str = '';
 
                if (empty($contact["network"])) {
-                       logger("Empty network for contact url ".$contact["url"]." - Called by: ".System::callstack(), LOGGER_DEBUG);
+                       Logger::log("Empty network for contact url ".$contact["url"]." - Called by: ".System::callstack(), Logger::DEBUG);
                        return false;
                }
 
                if (in_array($contact["network"], [Protocol::PHANTOM])) {
-                       logger("Invalid network for contact url ".$contact["url"]." - Called by: ".System::callstack(), LOGGER_DEBUG);
+                       Logger::log("Invalid network for contact url ".$contact["url"]." - Called by: ".System::callstack(), Logger::DEBUG);
                        return false;
                }
 
@@ -702,7 +703,7 @@ class GContact
                DBA::unlock();
 
                if ($doprobing) {
-                       logger("Last Contact: ". $last_contact_str." - Last Failure: ".$last_failure_str." - Checking: ".$contact["url"], LOGGER_DEBUG);
+                       Logger::log("Last Contact: ". $last_contact_str." - Last Failure: ".$last_failure_str." - Checking: ".$contact["url"], Logger::DEBUG);
                        Worker::add(PRIORITY_LOW, 'GProbe', $contact["url"]);
                }
 
@@ -807,19 +808,19 @@ class GContact
                if ((($contact["generation"] > 0) && ($contact["generation"] <= $public_contact[0]["generation"])) || ($public_contact[0]["generation"] == 0)) {
                        foreach ($fields as $field => $data) {
                                if ($contact[$field] != $public_contact[0][$field]) {
-                                       logger("Difference for contact ".$contact["url"]." in field '".$field."'. New value: '".$contact[$field]."', old value '".$public_contact[0][$field]."'", LOGGER_DEBUG);
+                                       Logger::log("Difference for contact ".$contact["url"]." in field '".$field."'. New value: '".$contact[$field]."', old value '".$public_contact[0][$field]."'", Logger::DEBUG);
                                        $update = true;
                                }
                        }
 
                        if ($contact["generation"] < $public_contact[0]["generation"]) {
-                               logger("Difference for contact ".$contact["url"]." in field 'generation'. new value: '".$contact["generation"]."', old value '".$public_contact[0]["generation"]."'", LOGGER_DEBUG);
+                               Logger::log("Difference for contact ".$contact["url"]." in field 'generation'. new value: '".$contact["generation"]."', old value '".$public_contact[0]["generation"]."'", Logger::DEBUG);
                                $update = true;
                        }
                }
 
                if ($update) {
-                       logger("Update gcontact for ".$contact["url"], LOGGER_DEBUG);
+                       Logger::log("Update gcontact for ".$contact["url"], Logger::DEBUG);
                        $condition = ['`nurl` = ? AND (`generation` = 0 OR `generation` >= ?)',
                                        normalise_link($contact["url"]), $contact["generation"]];
                        $contact["updated"] = DateTimeFormat::utc($contact["updated"]);
@@ -843,7 +844,7 @@ class GContact
                        // The quality of the gcontact table is mostly lower than the public contact
                        $public_contact = DBA::selectFirst('contact', ['id'], ['nurl' => normalise_link($contact["url"]), 'uid' => 0]);
                        if (DBA::isResult($public_contact)) {
-                               logger("Update public contact ".$public_contact["id"], LOGGER_DEBUG);
+                               Logger::log("Update public contact ".$public_contact["id"], Logger::DEBUG);
 
                                Contact::updateAvatar($contact["photo"], 0, $public_contact["id"]);
 
@@ -885,7 +886,7 @@ class GContact
                $data = Probe::uri($url);
 
                if (in_array($data["network"], [Protocol::PHANTOM])) {
-                       logger("Invalid network for contact url ".$data["url"]." - Called by: ".System::callstack(), LOGGER_DEBUG);
+                       Logger::log("Invalid network for contact url ".$data["url"]." - Called by: ".System::callstack(), Logger::DEBUG);
                        return;
                }
 
@@ -916,7 +917,7 @@ class GContact
                );
 
                if (!DBA::isResult($r)) {
-                       logger('Cannot find user with uid=' . $uid, LOGGER_INFO);
+                       Logger::log('Cannot find user with uid=' . $uid, Logger::INFO);
                        return false;
                }
 
@@ -953,7 +954,7 @@ class GContact
         */
        public static function fetchGsUsers($server)
        {
-               logger("Fetching users from GNU Social server ".$server, LOGGER_DEBUG);
+               Logger::log("Fetching users from GNU Social server ".$server, Logger::DEBUG);
 
                $url = $server."/main/statistics";
 
index 4d0bd87e6a71c2a8119f44a975b1ba3d5f397136..0bc8794f8676a6e4729a83611cd5ce272c0c051b 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Model;
 use Friendica\BaseModule;
 use Friendica\BaseObject;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Util\Security;
 
@@ -325,7 +326,7 @@ class Group extends BaseObject
                                'selected' => $gid == $group['id'] ? 'true' : ''
                        ];
                }
-               logger('groups: ' . print_r($display_groups, true));
+               Logger::log('groups: ' . print_r($display_groups, true));
 
                if ($label == '') {
                        $label = L10n::t('Default privacy group for new contacts');
index d874f9aed10791bfe84a399ad3e7aec960366fb8..8e0a397e24564bf819aba22992a5bb7a7d8eca41 100644 (file)
@@ -11,12 +11,14 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\Lock;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
+use Friendica\Model\FileTag;
 use Friendica\Model\PermissionSet;
 use Friendica\Model\ItemURI;
 use Friendica\Object\Image;
@@ -960,7 +962,7 @@ class Item extends BaseObject
                        } elseif ($item['uid'] == $uid) {
                                self::deleteById($item['id'], PRIORITY_HIGH);
                        } else {
-                               logger('Wrong ownership. Not deleting item ' . $item['id']);
+                               Logger::log('Wrong ownership. Not deleting item ' . $item['id']);
                        }
                }
                DBA::close($items);
@@ -983,12 +985,12 @@ class Item extends BaseObject
                        'icid', 'iaid', 'psid'];
                $item = self::selectFirst($fields, ['id' => $item_id]);
                if (!DBA::isResult($item)) {
-                       logger('Item with ID ' . $item_id . " hasn't been found.", LOGGER_DEBUG);
+                       Logger::log('Item with ID ' . $item_id . " hasn't been found.", Logger::DEBUG);
                        return false;
                }
 
                if ($item['deleted']) {
-                       logger('Item with ID ' . $item_id . ' has already been deleted.', LOGGER_DEBUG);
+                       Logger::log('Item with ID ' . $item_id . ' has already been deleted.', Logger::DEBUG);
                        return false;
                }
 
@@ -1001,18 +1003,24 @@ class Item extends BaseObject
 
                $matches = false;
                $cnt = preg_match_all('/<(.*?)>/', $item['file'], $matches, PREG_SET_ORDER);
-               if ($cnt) {
-                       foreach ($matches as $mtch) {
-                               file_tag_unsave_file($item['uid'], $item['id'], $mtch[1],true);
+
+               if ($cnt)
+               {
+                       foreach ($matches as $mtch)
+                       {
+                               FileTag::unsaveFile($item['uid'], $item['id'], $mtch[1],true);
                        }
                }
 
                $matches = false;
 
                $cnt = preg_match_all('/\[(.*?)\]/', $item['file'], $matches, PREG_SET_ORDER);
-               if ($cnt) {
-                       foreach ($matches as $mtch) {
-                               file_tag_unsave_file($item['uid'], $item['id'], $mtch[1],false);
+
+               if ($cnt)
+               {
+                       foreach ($matches as $mtch)
+                       {
+                               FileTag::unsaveFile($item['uid'], $item['id'], $mtch[1],false);
                        }
                }
 
@@ -1089,7 +1097,7 @@ class Item extends BaseObject
                        }
                }
 
-               logger('Item with ID ' . $item_id . " has been deleted.", LOGGER_DEBUG);
+               Logger::log('Item with ID ' . $item_id . " has been deleted.", Logger::DEBUG);
 
                return true;
        }
@@ -1192,7 +1200,7 @@ class Item extends BaseObject
                if (!empty($contact_id)) {
                        return $contact_id;
                }
-               logger('Missing contact-id. Called by: '.System::callstack(), LOGGER_DEBUG);
+               Logger::log('Missing contact-id. Called by: '.System::callstack(), Logger::DEBUG);
                /*
                 * First we are looking for a suitable contact that matches with the author of the post
                 * This is done only for comments
@@ -1213,7 +1221,7 @@ class Item extends BaseObject
                                $contact_id = $self["id"];
                        }
                }
-               logger("Contact-id was missing for post ".$item['guid']." from user id ".$item['uid']." - now set to ".$contact_id, LOGGER_DEBUG);
+               Logger::log("Contact-id was missing for post ".$item['guid']." from user id ".$item['uid']." - now set to ".$contact_id, Logger::DEBUG);
 
                return $contact_id;
        }
@@ -1298,7 +1306,7 @@ class Item extends BaseObject
                        $item['gravity'] = GRAVITY_COMMENT;
                } else {
                        $item['gravity'] = GRAVITY_UNKNOWN;   // Should not happen
-                       logger('Unknown gravity for verb: ' . $item['verb'], LOGGER_DEBUG);
+                       Logger::log('Unknown gravity for verb: ' . $item['verb'], Logger::DEBUG);
                }
 
                $uid = intval($item['uid']);
@@ -1315,7 +1323,7 @@ class Item extends BaseObject
                        $expire_date = time() - ($expire_interval * 86400);
                        $created_date = strtotime($item['created']);
                        if ($created_date < $expire_date) {
-                               logger('item-store: item created ('.date('c', $created_date).') before expiration time ('.date('c', $expire_date).'). ignored. ' . print_r($item,true), LOGGER_DEBUG);
+                               Logger::log('item-store: item created ('.date('c', $created_date).') before expiration time ('.date('c', $expire_date).'). ignored. ' . print_r($item,true), Logger::DEBUG);
                                return 0;
                        }
                }
@@ -1333,7 +1341,7 @@ class Item extends BaseObject
                        if (DBA::isResult($existing)) {
                                // We only log the entries with a different user id than 0. Otherwise we would have too many false positives
                                if ($uid != 0) {
-                                       logger("Item with uri ".$item['uri']." already existed for user ".$uid." with id ".$existing["id"]." target network ".$existing["network"]." - new network: ".$item['network']);
+                                       Logger::log("Item with uri ".$item['uri']." already existed for user ".$uid." with id ".$existing["id"]." target network ".$existing["network"]." - new network: ".$item['network']);
                                }
 
                                return $existing["id"];
@@ -1384,7 +1392,7 @@ class Item extends BaseObject
 
                // When there is no content then we don't post it
                if ($item['body'].$item['title'] == '') {
-                       logger('No body, no title.');
+                       Logger::log('No body, no title.');
                        return 0;
                }
 
@@ -1411,7 +1419,7 @@ class Item extends BaseObject
                $item['author-id'] = defaults($item, 'author-id', Contact::getIdForURL($item["author-link"], 0, false, $default));
 
                if (Contact::isBlocked($item["author-id"])) {
-                       logger('Contact '.$item["author-id"].' is blocked, item '.$item["uri"].' will not be stored');
+                       Logger::log('Contact '.$item["author-id"].' is blocked, item '.$item["uri"].' will not be stored');
                        return 0;
                }
 
@@ -1421,22 +1429,22 @@ class Item extends BaseObject
                $item['owner-id'] = defaults($item, 'owner-id', Contact::getIdForURL($item["owner-link"], 0, false, $default));
 
                if (Contact::isBlocked($item["owner-id"])) {
-                       logger('Contact '.$item["owner-id"].' is blocked, item '.$item["uri"].' will not be stored');
+                       Logger::log('Contact '.$item["owner-id"].' is blocked, item '.$item["uri"].' will not be stored');
                        return 0;
                }
 
                if ($item['network'] == Protocol::PHANTOM) {
-                       logger('Missing network. Called by: '.System::callstack(), LOGGER_DEBUG);
+                       Logger::log('Missing network. Called by: '.System::callstack(), Logger::DEBUG);
 
                        $item['network'] = Protocol::DFRN;
-                       logger("Set network to " . $item["network"] . " for " . $item["uri"], LOGGER_DEBUG);
+                       Logger::log("Set network to " . $item["network"] . " for " . $item["uri"], Logger::DEBUG);
                }
 
                // Checking if there is already an item with the same guid
-               logger('Checking for an item for user '.$item['uid'].' on network '.$item['network'].' with the guid '.$item['guid'], LOGGER_DEBUG);
+               Logger::log('Checking for an item for user '.$item['uid'].' on network '.$item['network'].' with the guid '.$item['guid'], Logger::DEBUG);
                $condition = ['guid' => $item['guid'], 'network' => $item['network'], 'uid' => $item['uid']];
                if (self::exists($condition)) {
-                       logger('found item with guid '.$item['guid'].' for user '.$item['uid'].' on network '.$item['network'], LOGGER_DEBUG);
+                       Logger::log('found item with guid '.$item['guid'].' for user '.$item['uid'].' on network '.$item['network'], Logger::DEBUG);
                        return 0;
                }
 
@@ -1517,15 +1525,15 @@ class Item extends BaseObject
                                }
 
                                // If its a post from myself then tag the thread as "mention"
-                               logger("Checking if parent ".$parent_id." has to be tagged as mention for user ".$item['uid'], LOGGER_DEBUG);
+                               Logger::log("Checking if parent ".$parent_id." has to be tagged as mention for user ".$item['uid'], Logger::DEBUG);
                                $user = DBA::selectFirst('user', ['nickname'], ['uid' => $item['uid']]);
                                if (DBA::isResult($user)) {
                                        $self = normalise_link(System::baseUrl() . '/profile/' . $user['nickname']);
                                        $self_id = Contact::getIdForURL($self, 0, true);
-                                       logger("'myself' is ".$self_id." for parent ".$parent_id." checking against ".$item['author-id']." and ".$item['owner-id'], LOGGER_DEBUG);
+                                       Logger::log("'myself' is ".$self_id." for parent ".$parent_id." checking against ".$item['author-id']." and ".$item['owner-id'], Logger::DEBUG);
                                        if (($item['author-id'] == $self_id) || ($item['owner-id'] == $self_id)) {
                                                DBA::update('thread', ['mention' => true], ['iid' => $parent_id]);
-                                               logger("tagged thread ".$parent_id." as mention for user ".$self, LOGGER_DEBUG);
+                                               Logger::log("tagged thread ".$parent_id." as mention for user ".$self, Logger::DEBUG);
                                        }
                                }
                        } else {
@@ -1534,12 +1542,12 @@ class Item extends BaseObject
                                 * we don't have or can't see the original post.
                                 */
                                if ($force_parent) {
-                                       logger('$force_parent=true, reply converted to top-level post.');
+                                       Logger::log('$force_parent=true, reply converted to top-level post.');
                                        $parent_id = 0;
                                        $item['parent-uri'] = $item['uri'];
                                        $item['gravity'] = GRAVITY_PARENT;
                                } else {
-                                       logger('item parent '.$item['parent-uri'].' for '.$item['uid'].' was not found - ignoring item');
+                                       Logger::log('item parent '.$item['parent-uri'].' for '.$item['uid'].' was not found - ignoring item');
                                        return 0;
                                }
 
@@ -1553,7 +1561,7 @@ class Item extends BaseObject
                $condition = ["`uri` = ? AND `network` IN (?, ?) AND `uid` = ?",
                        $item['uri'], $item['network'], Protocol::DFRN, $item['uid']];
                if (self::exists($condition)) {
-                       logger('duplicated item with the same uri found. '.print_r($item,true));
+                       Logger::log('duplicated item with the same uri found. '.print_r($item,true));
                        return 0;
                }
 
@@ -1561,7 +1569,7 @@ class Item extends BaseObject
                if (in_array($item['network'], [Protocol::DFRN, Protocol::DIASPORA])) {
                        $condition = ['guid' => $item['guid'], 'uid' => $item['uid']];
                        if (self::exists($condition)) {
-                               logger('duplicated item with the same guid found. '.print_r($item,true));
+                               Logger::log('duplicated item with the same guid found. '.print_r($item,true));
                                return 0;
                        }
                } else {
@@ -1569,7 +1577,7 @@ class Item extends BaseObject
                        $condition = ["`body` = ? AND `network` = ? AND `created` = ? AND `contact-id` = ? AND `uid` = ?",
                                        $item['body'], $item['network'], $item['created'], $item['contact-id'], $item['uid']];
                        if (self::exists($condition)) {
-                               logger('duplicated item with the same body found. '.print_r($item,true));
+                               Logger::log('duplicated item with the same body found. '.print_r($item,true));
                                return 0;
                        }
                }
@@ -1616,7 +1624,7 @@ class Item extends BaseObject
                unset($item['api_source']);
 
                if (x($item, 'cancel')) {
-                       logger('post cancelled by addon.');
+                       Logger::log('post cancelled by addon.');
                        return 0;
                }
 
@@ -1627,12 +1635,12 @@ class Item extends BaseObject
                 */
                if ($item["uid"] == 0) {
                        if (self::exists(['uri' => trim($item['uri']), 'uid' => 0])) {
-                               logger('Global item already stored. URI: '.$item['uri'].' on network '.$item['network'], LOGGER_DEBUG);
+                               Logger::log('Global item already stored. URI: '.$item['uri'].' on network '.$item['network'], Logger::DEBUG);
                                return 0;
                        }
                }
 
-               logger('' . print_r($item,true), LOGGER_DATA);
+               Logger::log('' . print_r($item,true), Logger::DATA);
 
                if (array_key_exists('tag', $item)) {
                        $tags = $item['tag'];
@@ -1700,14 +1708,14 @@ class Item extends BaseObject
                                $item = array_merge($item, $delivery_data);
 
                                file_put_contents($spool, json_encode($item));
-                               logger("Item wasn't stored - Item was spooled into file ".$file, LOGGER_DEBUG);
+                               Logger::log("Item wasn't stored - Item was spooled into file ".$file, Logger::DEBUG);
                        }
                        return 0;
                }
 
                if ($current_post == 0) {
                        // This is one of these error messages that never should occur.
-                       logger("couldn't find created item - we better quit now.");
+                       Logger::log("couldn't find created item - we better quit now.");
                        DBA::rollback();
                        return 0;
                }
@@ -1718,7 +1726,7 @@ class Item extends BaseObject
 
                if ($entries > 1) {
                        // There are duplicates. We delete our just created entry.
-                       logger('Duplicated post occurred. uri = ' . $item['uri'] . ' uid = ' . $item['uid']);
+                       Logger::log('Duplicated post occurred. uri = ' . $item['uri'] . ' uid = ' . $item['uid']);
 
                        // Yes, we could do a rollback here - but we are having many users with MyISAM.
                        DBA::delete('item', ['id' => $current_post]);
@@ -1726,12 +1734,12 @@ class Item extends BaseObject
                        return 0;
                } elseif ($entries == 0) {
                        // This really should never happen since we quit earlier if there were problems.
-                       logger("Something is terribly wrong. We haven't found our created entry.");
+                       Logger::log("Something is terribly wrong. We haven't found our created entry.");
                        DBA::rollback();
                        return 0;
                }
 
-               logger('created item '.$current_post);
+               Logger::log('created item '.$current_post);
                self::updateContact($item);
 
                if (!$parent_id || ($item['parent-uri'] === $item['uri'])) {
@@ -1759,7 +1767,7 @@ class Item extends BaseObject
                         */
                        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);
+                               Logger::log("Repaired double encoded signature from handle ".$dsprsig->signer, Logger::DEBUG);
                        }
 
                        if (!empty($dsprsig->signed_text) && empty($dsprsig->signature) && empty($dsprsig->signer)) {
@@ -1790,7 +1798,7 @@ class Item extends BaseObject
                                        Addon::callHooks('post_remote_end', $posted_item);
                                }
                        } else {
-                               logger('new item not found in DB, id ' . $current_post);
+                               Logger::log('new item not found in DB, id ' . $current_post);
                        }
                }
 
@@ -1895,20 +1903,20 @@ class Item extends BaseObject
                // To avoid timing problems, we are using locks.
                $locked = Lock::acquire('item_insert_activity');
                if (!$locked) {
-                       logger("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
+                       Logger::log("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
                }
 
                // Do we already have this content?
                $item_activity = DBA::selectFirst('item-activity', ['id'], ['uri-id' => $item['uri-id']]);
                if (DBA::isResult($item_activity)) {
                        $item['iaid'] = $item_activity['id'];
-                       logger('Fetched activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
+                       Logger::log('Fetched activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
                } elseif (DBA::insert('item-activity', $fields)) {
                        $item['iaid'] = DBA::lastInsertId();
-                       logger('Inserted activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
+                       Logger::log('Inserted activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
                } else {
                        // This shouldn't happen.
-                       logger('Could not insert activity for URI ' . $item['uri'] . ' - should not happen');
+                       Logger::log('Could not insert activity for URI ' . $item['uri'] . ' - should not happen');
                        Lock::release('item_insert_activity');
                        return false;
                }
@@ -1937,20 +1945,20 @@ class Item extends BaseObject
                // To avoid timing problems, we are using locks.
                $locked = Lock::acquire('item_insert_content');
                if (!$locked) {
-                       logger("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
+                       Logger::log("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
                }
 
                // Do we already have this content?
                $item_content = DBA::selectFirst('item-content', ['id'], ['uri-id' => $item['uri-id']]);
                if (DBA::isResult($item_content)) {
                        $item['icid'] = $item_content['id'];
-                       logger('Fetched content for URI ' . $item['uri'] . ' (' . $item['icid'] . ')');
+                       Logger::log('Fetched content for URI ' . $item['uri'] . ' (' . $item['icid'] . ')');
                } elseif (DBA::insert('item-content', $fields)) {
                        $item['icid'] = DBA::lastInsertId();
-                       logger('Inserted content for URI ' . $item['uri'] . ' (' . $item['icid'] . ')');
+                       Logger::log('Inserted content for URI ' . $item['uri'] . ' (' . $item['icid'] . ')');
                } else {
                        // This shouldn't happen.
-                       logger('Could not insert content for URI ' . $item['uri'] . ' - should not happen');
+                       Logger::log('Could not insert content for URI ' . $item['uri'] . ' - should not happen');
                }
                if ($locked) {
                        Lock::release('item_insert_content');
@@ -1976,7 +1984,7 @@ class Item extends BaseObject
 
                $fields = ['activity' => $activity_index];
 
-               logger('Update activity for ' . json_encode($condition));
+               Logger::log('Update activity for ' . json_encode($condition));
 
                DBA::update('item-activity', $fields, $condition, true);
 
@@ -2005,7 +2013,7 @@ class Item extends BaseObject
                        $fields = $condition;
                }
 
-               logger('Update content for ' . json_encode($condition));
+               Logger::log('Update content for ' . json_encode($condition));
 
                DBA::update('item-content', $fields, $condition, true);
        }
@@ -2144,9 +2152,9 @@ class Item extends BaseObject
                $distributed = self::insert($item, false, $notify, true);
 
                if (!$distributed) {
-                       logger("Distributed public item " . $itemid . " for user " . $uid . " wasn't stored", LOGGER_DEBUG);
+                       Logger::log("Distributed public item " . $itemid . " for user " . $uid . " wasn't stored", Logger::DEBUG);
                } else {
-                       logger("Distributed public item " . $itemid . " for user " . $uid . " with id " . $distributed, LOGGER_DEBUG);
+                       Logger::log("Distributed public item " . $itemid . " for user " . $uid . " with id " . $distributed, Logger::DEBUG);
                }
        }
 
@@ -2209,7 +2217,7 @@ class Item extends BaseObject
 
                        $public_shadow = self::insert($item, false, false, true);
 
-                       logger("Stored public shadow for thread ".$itemid." under id ".$public_shadow, LOGGER_DEBUG);
+                       Logger::log("Stored public shadow for thread ".$itemid." under id ".$public_shadow, Logger::DEBUG);
                }
        }
 
@@ -2266,7 +2274,7 @@ class Item extends BaseObject
 
                $public_shadow = self::insert($item, false, false, true);
 
-               logger("Stored public shadow for comment ".$item['uri']." under id ".$public_shadow, LOGGER_DEBUG);
+               Logger::log("Stored public shadow for comment ".$item['uri']." under id ".$public_shadow, Logger::DEBUG);
 
                // If this was a comment to a Diaspora post we don't get our comment back.
                // This means that we have to distribute the comment by ourselves.
@@ -2543,7 +2551,7 @@ class Item extends BaseObject
                        foreach ($matches as $mtch) {
                                if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
                                        $mention = true;
-                                       logger('mention found: ' . $mtch[2]);
+                                       Logger::log('mention found: ' . $mtch[2]);
                                }
                        }
                }
@@ -2553,7 +2561,7 @@ class Item extends BaseObject
                                  !$item['wall'] && !$item['origin'] && ($item['id'] == $item['parent'])) {
                                // mmh.. no mention.. community page or private group... no wall.. no origin.. top-post (not a comment)
                                // delete it!
-                               logger("no-mention top-level post to community or private group. delete.");
+                               Logger::log("no-mention top-level post to community or private group. delete.");
                                DBA::delete('item', ['id' => $item_id]);
                                return true;
                        }
@@ -2612,29 +2620,29 @@ class Item extends BaseObject
 
                // Prevent the forwarding of posts that are forwarded
                if (!empty($datarray["extid"]) && ($datarray["extid"] == Protocol::DFRN)) {
-                       logger('Already forwarded', LOGGER_DEBUG);
+                       Logger::log('Already forwarded', Logger::DEBUG);
                        return false;
                }
 
                // Prevent to forward already forwarded posts
                if ($datarray["app"] == $a->getHostName()) {
-                       logger('Already forwarded (second test)', LOGGER_DEBUG);
+                       Logger::log('Already forwarded (second test)', Logger::DEBUG);
                        return false;
                }
 
                // Only forward posts
                if ($datarray["verb"] != ACTIVITY_POST) {
-                       logger('No post', LOGGER_DEBUG);
+                       Logger::log('No post', Logger::DEBUG);
                        return false;
                }
 
                if (($contact['network'] != Protocol::FEED) && $datarray['private']) {
-                       logger('Not public', LOGGER_DEBUG);
+                       Logger::log('Not public', Logger::DEBUG);
                        return false;
                }
 
                $datarray2 = $datarray;
-               logger('remote-self start - Contact '.$contact['url'].' - '.$contact['remote_self'].' Item '.print_r($datarray, true), LOGGER_DEBUG);
+               Logger::log('remote-self start - Contact '.$contact['url'].' - '.$contact['remote_self'].' Item '.print_r($datarray, true), Logger::DEBUG);
                if ($contact['remote_self'] == 2) {
                        $self = DBA::selectFirst('contact', ['id', 'name', 'url', 'thumb'],
                                        ['uid' => $contact['uid'], 'self' => true]);
@@ -2674,7 +2682,7 @@ class Item extends BaseObject
                if ($contact['network'] != Protocol::FEED) {
                        // Store the original post
                        $result = self::insert($datarray2, false, false);
-                       logger('remote-self post original item - Contact '.$contact['url'].' return '.$result.' Item '.print_r($datarray2, true), LOGGER_DEBUG);
+                       Logger::log('remote-self post original item - Contact '.$contact['url'].' return '.$result.' Item '.print_r($datarray2, true), Logger::DEBUG);
                } else {
                        $datarray["app"] = "Feed";
                        $result = true;
@@ -2704,7 +2712,7 @@ class Item extends BaseObject
                        return $s;
                }
 
-               logger('check for photos', LOGGER_DEBUG);
+               Logger::log('check for photos', Logger::DEBUG);
                $site = substr(System::baseUrl(), strpos(System::baseUrl(), '://'));
 
                $orig_body = $s;
@@ -2718,7 +2726,7 @@ class Item extends BaseObject
                        $img_st_close++; // make it point to AFTER the closing bracket
                        $image = substr($orig_body, $img_start + $img_st_close, $img_len);
 
-                       logger('found photo ' . $image, LOGGER_DEBUG);
+                       Logger::log('found photo ' . $image, Logger::DEBUG);
 
                        if (stristr($image, $site . '/photo/')) {
                                // Only embed locally hosted photos
@@ -2760,7 +2768,7 @@ class Item extends BaseObject
 
                                                        // If a custom width and height were specified, apply before embedding
                                                        if (preg_match("/\[img\=([0-9]*)x([0-9]*)\]/is", substr($orig_body, $img_start, $img_st_close), $match)) {
-                                                               logger('scaling photo', LOGGER_DEBUG);
+                                                               Logger::log('scaling photo', Logger::DEBUG);
 
                                                                $width = intval($match[1]);
                                                                $height = intval($match[2]);
@@ -2773,9 +2781,9 @@ class Item extends BaseObject
                                                                }
                                                        }
 
-                                                       logger('replacing photo', LOGGER_DEBUG);
+                                                       Logger::log('replacing photo', Logger::DEBUG);
                                                        $image = 'data:' . $type . ';base64,' . base64_encode($data);
-                                                       logger('replaced: ' . $image, LOGGER_DATA);
+                                                       Logger::log('replaced: ' . $image, Logger::DATA);
                                                }
                                        }
                                }
@@ -2938,7 +2946,7 @@ class Item extends BaseObject
                        ++$expired;
                }
                DBA::close($items);
-               logger('User ' . $uid . ": expired $expired items; expire items: $expire_items, expire notes: $expire_notes, expire starred: $expire_starred, expire photos: $expire_photos");
+               Logger::log('User ' . $uid . ": expired $expired items; expire items: $expire_items, expire notes: $expire_notes, expire starred: $expire_starred, expire photos: $expire_photos");
        }
 
        public static function firstPostDate($uid, $wall = false)
@@ -2994,18 +3002,18 @@ class Item extends BaseObject
                                $activity = ACTIVITY_ATTENDMAYBE;
                                break;
                        default:
-                               logger('like: unknown verb ' . $verb . ' for item ' . $item_id);
+                               Logger::log('like: unknown verb ' . $verb . ' for item ' . $item_id);
                                return false;
                }
 
                // Enable activity toggling instead of on/off
                $event_verb_flag = $activity === ACTIVITY_ATTEND || $activity === ACTIVITY_ATTENDNO || $activity === ACTIVITY_ATTENDMAYBE;
 
-               logger('like: verb ' . $verb . ' item ' . $item_id);
+               Logger::log('like: verb ' . $verb . ' item ' . $item_id);
 
                $item = self::selectFirst(self::ITEM_FIELDLIST, ['`id` = ? OR `uri` = ?', $item_id, $item_id]);
                if (!DBA::isResult($item)) {
-                       logger('like: unknown item ' . $item_id);
+                       Logger::log('like: unknown item ' . $item_id);
                        return false;
                }
 
@@ -3017,14 +3025,14 @@ class Item extends BaseObject
                }
 
                if (!Security::canWriteToUserWall($uid)) {
-                       logger('like: unable to write on wall ' . $uid);
+                       Logger::log('like: unable to write on wall ' . $uid);
                        return false;
                }
 
                // Retrieves the local post owner
                $owner_self_contact = DBA::selectFirst('contact', [], ['uid' => $uid, 'self' => true]);
                if (!DBA::isResult($owner_self_contact)) {
-                       logger('like: unknown owner ' . $uid);
+                       Logger::log('like: unknown owner ' . $uid);
                        return false;
                }
 
@@ -3033,7 +3041,7 @@ class Item extends BaseObject
 
                $author_contact = DBA::selectFirst('contact', ['url'], ['id' => $author_id]);
                if (!DBA::isResult($author_contact)) {
-                       logger('like: unknown author ' . $author_id);
+                       Logger::log('like: unknown author ' . $author_id);
                        return false;
                }
 
@@ -3045,7 +3053,7 @@ class Item extends BaseObject
                        $item_contact_id = Contact::getIdForURL($author_contact['url'], $uid, true);
                        $item_contact = DBA::selectFirst('contact', [], ['id' => $item_contact_id]);
                        if (!DBA::isResult($item_contact)) {
-                               logger('like: unknown item contact ' . $item_contact_id);
+                               Logger::log('like: unknown item contact ' . $item_contact_id);
                                return false;
                        }
                }
@@ -3147,7 +3155,7 @@ class Item extends BaseObject
                if (!$onlyshadow) {
                        $result = DBA::insert('thread', $item);
 
-                       logger("Add thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
+                       Logger::log("Add thread for item ".$itemid." - ".print_r($result, true), Logger::DEBUG);
                }
        }
 
@@ -3179,26 +3187,26 @@ class Item extends BaseObject
 
                $result = DBA::update('thread', $fields, ['iid' => $itemid]);
 
-               logger("Update thread for item ".$itemid." - guid ".$item["guid"]." - ".(int)$result, LOGGER_DEBUG);
+               Logger::log("Update thread for item ".$itemid." - guid ".$item["guid"]." - ".(int)$result, Logger::DEBUG);
        }
 
        private static function deleteThread($itemid, $itemuri = "")
        {
                $item = DBA::selectFirst('thread', ['uid'], ['iid' => $itemid]);
                if (!DBA::isResult($item)) {
-                       logger('No thread found for id '.$itemid, LOGGER_DEBUG);
+                       Logger::log('No thread found for id '.$itemid, Logger::DEBUG);
                        return;
                }
 
                $result = DBA::delete('thread', ['iid' => $itemid], ['cascade' => false]);
 
-               logger("deleteThread: Deleted thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
+               Logger::log("deleteThread: Deleted thread for item ".$itemid." - ".print_r($result, true), Logger::DEBUG);
 
                if ($itemuri != "") {
                        $condition = ["`uri` = ? AND NOT `deleted` AND NOT (`uid` IN (?, 0))", $itemuri, $item["uid"]];
                        if (!self::exists($condition)) {
                                DBA::delete('item', ['uri' => $itemuri, 'uid' => 0]);
-                               logger("deleteThread: Deleted shadow for item ".$itemuri, LOGGER_DEBUG);
+                               Logger::log("deleteThread: Deleted shadow for item ".$itemuri, Logger::DEBUG);
                        }
                }
        }
index 49247ca69dfb1385eabd53cae08fd9144c4baab6..815b0051d9df1ff0b5cc7ef2d2c3eea09fb85053 100644 (file)
@@ -6,6 +6,7 @@
 namespace Friendica\Model;
 
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -87,7 +88,7 @@ class Mail
                }
 
                if (!$convid) {
-                       logger('send message: conversation not found.');
+                       Logger::log('send message: conversation not found.');
                        return -4;
                }
 
@@ -200,7 +201,7 @@ class Mail
                }
 
                if (!$convid) {
-                       logger('send message: conversation not found.');
+                       Logger::log('send message: conversation not found.');
                        return -4;
                }
 
index 53b98fb625ab636b6ae1bdc479663437c84b8876..fba6759459ccef267338b01c788492f6971b435c 100644 (file)
@@ -12,6 +12,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -106,7 +107,7 @@ class Profile
                $user = DBA::selectFirst('user', ['uid'], ['nickname' => $nickname, 'account_removed' => false]);
 
                if (!DBA::isResult($user) && empty($profiledata)) {
-                       logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
+                       Logger::log('profile error: ' . $a->query_string, Logger::DEBUG);
                        notice(L10n::t('Requested account is not available.') . EOL);
                        $a->error = 404;
                        return;
@@ -124,7 +125,7 @@ class Profile
                $pdata = self::getByNickname($nickname, $user['uid'], $profile);
 
                if (empty($pdata) && empty($profiledata)) {
-                       logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
+                       Logger::log('profile error: ' . $a->query_string, Logger::DEBUG);
                        notice(L10n::t('Requested profile is not available.') . EOL);
                        $a->error = 404;
                        return;
@@ -1020,27 +1021,27 @@ class Profile
                // Try to find the public contact entry of the visitor.
                $cid = Contact::getIdForURL($my_url);
                if (!$cid) {
-                       logger('No contact record found for ' . $my_url, LOGGER_DEBUG);
+                       Logger::log('No contact record found for ' . $my_url, Logger::DEBUG);
                        return;
                }
 
                $contact = DBA::selectFirst('contact',['id', 'url'], ['id' => $cid]);
 
                if (DBA::isResult($contact) && remote_user() && remote_user() == $contact['id']) {
-                       logger('The visitor ' . $my_url . ' is already authenticated', LOGGER_DEBUG);
+                       Logger::log('The visitor ' . $my_url . ' is already authenticated', Logger::DEBUG);
                        return;
                }
 
                // Avoid endless loops
                $cachekey = 'zrlInit:' . $my_url;
                if (Cache::get($cachekey)) {
-                       logger('URL ' . $my_url . ' already tried to authenticate.', LOGGER_DEBUG);
+                       Logger::log('URL ' . $my_url . ' already tried to authenticate.', Logger::DEBUG);
                        return;
                } else {
                        Cache::set($cachekey, true, Cache::MINUTE);
                }
 
-               logger('Not authenticated. Invoking reverse magic-auth for ' . $my_url, LOGGER_DEBUG);
+               Logger::log('Not authenticated. Invoking reverse magic-auth for ' . $my_url, Logger::DEBUG);
 
                Worker::add(PRIORITY_LOW, 'GProbe', $my_url);
 
@@ -1061,7 +1062,7 @@ class Profile
                        // We have to check if the remote server does understand /magic without invoking something
                        $serverret = Network::curl($basepath . '/magic');
                        if ($serverret->isSuccess()) {
-                               logger('Doing magic auth for visitor ' . $my_url . ' to ' . $magic_path, LOGGER_DEBUG);
+                               Logger::log('Doing magic auth for visitor ' . $my_url . ' to ' . $magic_path, Logger::DEBUG);
                                System::externalRedirect($magic_path);
                        }
                }
@@ -1092,7 +1093,7 @@ class Profile
                // Try to find the public contact entry of the visitor.
                $cid = Contact::getIdForURL($visitor_handle);
                if(!$cid) {
-                       logger('owt: unable to finger ' . $visitor_handle, LOGGER_DEBUG);
+                       Logger::log('owt: unable to finger ' . $visitor_handle, Logger::DEBUG);
                        return;
                }
 
@@ -1121,7 +1122,7 @@ class Profile
 
                info(L10n::t('OpenWebAuth: %1$s welcomes %2$s', $a->getHostName(), $visitor['name']));
 
-               logger('OpenWebAuth: auth success from ' . $visitor['addr'], LOGGER_DEBUG);
+               Logger::log('OpenWebAuth: auth success from ' . $visitor['addr'], Logger::DEBUG);
        }
 
        public static function zrl($s, $force = false)
index e024878a5821d7f33d6777ec581501e3ba5d2abb..44495daeefb4b1b66c251326bf4d8813f325a68b 100644 (file)
@@ -4,6 +4,7 @@
  */
 namespace Friendica\Model;
 
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Util\DateTimeFormat;
@@ -45,7 +46,7 @@ class PushSubscriber
                                $priority = $default_priority;
                        }
 
-                       logger('Publish feed to ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' with priority ' . $priority, LOGGER_DEBUG);
+                       Logger::log('Publish feed to ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' with priority ' . $priority, Logger::DEBUG);
                        Worker::add($priority, 'PubSubPublish', (int)$subscriber['id']);
                }
 
@@ -88,9 +89,9 @@ class PushSubscriber
                                'secret' => $hub_secret];
                        DBA::insert('push_subscriber', $fields);
 
-                       logger("Successfully subscribed [$hub_callback] for $nick");
+                       Logger::log("Successfully subscribed [$hub_callback] for $nick");
                } else {
-                       logger("Successfully unsubscribed [$hub_callback] for $nick");
+                       Logger::log("Successfully unsubscribed [$hub_callback] for $nick");
                        // we do nothing here, since the row was already deleted
                }
        }
@@ -115,10 +116,10 @@ class PushSubscriber
 
                        if ($days > 60) {
                                DBA::update('push_subscriber', ['push' => -1, 'next_try' => DBA::NULL_DATETIME], ['id' => $id]);
-                               logger('Delivery error: Subscription ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' is marked as ended.', LOGGER_DEBUG);
+                               Logger::log('Delivery error: Subscription ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' is marked as ended.', Logger::DEBUG);
                        } else {
                                DBA::update('push_subscriber', ['push' => 0, 'next_try' => DBA::NULL_DATETIME], ['id' => $id]);
-                               logger('Delivery error: Giving up ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' for now.', LOGGER_DEBUG);
+                               Logger::log('Delivery error: Giving up ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' for now.', Logger::DEBUG);
                        }
                } else {
                        // Calculate the delay until the next trial
@@ -128,7 +129,7 @@ class PushSubscriber
                        $retrial = $retrial + 1;
 
                        DBA::update('push_subscriber', ['push' => $retrial, 'next_try' => $next], ['id' => $id]);
-                       logger('Delivery error: Next try (' . $retrial . ') ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' at ' . $next, LOGGER_DEBUG);
+                       Logger::log('Delivery error: Next try (' . $retrial . ') ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' at ' . $next, Logger::DEBUG);
                }
        }
 
@@ -148,6 +149,6 @@ class PushSubscriber
                // set last_update to the 'created' date of the last item, and reset push=0
                $fields = ['push' => 0, 'next_try' => DBA::NULL_DATETIME, 'last_update' => $last_update];
                DBA::update('push_subscriber', $fields, ['id' => $id]);
-               logger('Subscriber ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' is marked as vital', LOGGER_DEBUG);
+               Logger::log('Subscriber ' . $subscriber['callback_url'] . ' for ' . $subscriber['nickname'] . ' is marked as vital', Logger::DEBUG);
        }
 }
index 0284d72b7d670fda2421e707666caf3d0a649a23..7ffc64bf9e56af603d438882218e805c418c4dfc 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Model;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Util\DateTimeFormat;
 
@@ -17,7 +18,7 @@ class Queue
         */
        public static function updateTime($id)
        {
-               logger('queue: requeue item ' . $id);
+               Logger::log('queue: requeue item ' . $id);
                $queue = DBA::selectFirst('queue', ['retrial'], ['id' => $id]);
                if (!DBA::isResult($queue)) {
                        return;
@@ -41,7 +42,7 @@ class Queue
         */
        public static function removeItem($id)
        {
-               logger('queue: remove queue item ' . $id);
+               Logger::log('queue: remove queue item ' . $id);
                DBA::delete('queue', ['id' => $id]);
        }
 
@@ -100,10 +101,10 @@ class Queue
 
                if (DBA::isResult($r)) {
                        if ($batch &&  ($r[0]['total'] > $batch_queue)) {
-                               logger('too many queued items for batch server ' . $cid . ' - discarding message');
+                               Logger::log('too many queued items for batch server ' . $cid . ' - discarding message');
                                return;
                        } elseif ((! $batch) && ($r[0]['total'] > $max_queue)) {
-                               logger('too many queued items for contact ' . $cid . ' - discarding message');
+                               Logger::log('too many queued items for contact ' . $cid . ' - discarding message');
                                return;
                        }
                }
@@ -117,6 +118,6 @@ class Queue
                        'content' => $msg,
                        'batch'   =>($batch) ? 1 : 0
                ]);
-               logger('Added item ' . $guid . ' for ' . $cid);
+               Logger::log('Added item ' . $guid . ' for ' . $cid);
        }
 }
index bdea5e28f0dfe1863e02041443dd259886fafc1f..43992cc5f35efe909b11603f7ba428fad2227d33 100644 (file)
@@ -10,6 +10,7 @@ use Exception;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -470,7 +471,7 @@ class User
                $username_max_length = max(1, min(64, intval(Config::get('system', 'username_max_length', 48))));
 
                if ($username_min_length > $username_max_length) {
-                       logger(L10n::t('system.username_min_length (%s) and system.username_max_length (%s) are excluding each other, swapping values.', $username_min_length, $username_max_length), LOGGER_WARNING);
+                       Logger::log(L10n::t('system.username_min_length (%s) and system.username_max_length (%s) are excluding each other, swapping values.', $username_min_length, $username_max_length), Logger::WARNING);
                        $tmp = $username_min_length;
                        $username_min_length = $username_max_length;
                        $username_max_length = $tmp;
@@ -785,7 +786,7 @@ class User
 
                $a = get_app();
 
-               logger('Removing user: ' . $uid);
+               Logger::log('Removing user: ' . $uid);
 
                $user = DBA::selectFirst('user', [], ['uid' => $uid]);
 
index c190be4d1f285c0af1f48d412b10039bc186e7ef..25312bdf3af22caf43846ec65532ef4a5a391527 100644 (file)
@@ -36,7 +36,7 @@ class Inbox extends BaseModule
                $tempfile = tempnam(get_temppath(), $filename);
                file_put_contents($tempfile, json_encode(['argv' => $a->argv, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
 
-               logger('Incoming message stored under ' . $tempfile);
+               Logger::log('Incoming message stored under ' . $tempfile);
 */
                if (!empty($a->argv[1])) {
                        $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
index df918c44c8ed0aee91af7e6e2b774486f4e287f8..a91c17b730e71cb69812d3e32bf6acd2294b611c 100644 (file)
@@ -10,6 +10,7 @@ use Friendica\Core\Addon;
 use Friendica\Core\Authentication;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\User;
@@ -146,7 +147,7 @@ class Login extends BaseModule
                                );
                        }
                } catch (Exception $e) {
-                       logger('authenticate: failed login attempt: ' . notags($username) . ' from IP ' . $_SERVER['REMOTE_ADDR']);
+                       Logger::log('authenticate: failed login attempt: ' . notags($username) . ' from IP ' . $_SERVER['REMOTE_ADDR']);
                        info('Login failed. Please check your credentials.' . EOL);
                        $a->internalRedirect();
                }
@@ -195,7 +196,7 @@ class Login extends BaseModule
                                );
                                if (DBA::isResult($user)) {
                                        if ($data->hash != Authentication::getCookieHashForUser($user)) {
-                                               logger("Hash for user " . $data->uid . " doesn't fit.");
+                                               Logger::log("Hash for user " . $data->uid . " doesn't fit.");
                                                Authentication::deleteSession();
                                                $a->internalRedirect();
                                        }
@@ -231,7 +232,7 @@ class Login extends BaseModule
                                $check = Config::get('system', 'paranoia');
                                // extra paranoia - if the IP changed, log them out
                                if ($check && ($_SESSION['addr'] != $_SERVER['REMOTE_ADDR'])) {
-                                       logger('Session address changed. Paranoid setting in effect, blocking session. ' .
+                                       Logger::log('Session address changed. Paranoid setting in effect, blocking session. ' .
                                                $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
                                        Authentication::deleteSession();
                                        $a->internalRedirect();
index 1da03b9c10854696639a57270d234f2207c4ac7c..b8af1f96147766c2bf4f785a81eab45ed55ab704 100644 (file)
@@ -5,9 +5,10 @@
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Core\Logger;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
-use Friendica\Core\System;
 use Friendica\Util\HTTPSignature;
 use Friendica\Util\Network;
 
@@ -22,9 +23,9 @@ class Magic extends BaseModule
        {
                $a = self::getApp();
                $ret = ['success' => false, 'url' => '', 'message' => ''];
-               logger('magic mdule: invoked', LOGGER_DEBUG);
+               Logger::log('magic mdule: invoked', Logger::DEBUG);
 
-               logger('args: ' . print_r($_REQUEST, true), LOGGER_DATA);
+               Logger::log('args: ' . print_r($_REQUEST, true), Logger::DATA);
 
                $addr = ((x($_REQUEST, 'addr')) ? $_REQUEST['addr'] : '');
                $dest = ((x($_REQUEST, 'dest')) ? $_REQUEST['dest'] : '');
@@ -41,7 +42,7 @@ class Magic extends BaseModule
                }
 
                if (!$cid) {
-                       logger('No contact record found: ' . print_r($_REQUEST, true), LOGGER_DEBUG);
+                       Logger::log('No contact record found: ' . print_r($_REQUEST, true), Logger::DEBUG);
                        // @TODO Finding a more elegant possibility to redirect to either internal or external URL
                        $a->redirect($dest);
                }
@@ -55,7 +56,7 @@ class Magic extends BaseModule
                                return $ret;
                        }
 
-                       logger('Contact is already authenticated', LOGGER_DEBUG);
+                       Logger::log('Contact is already authenticated', Logger::DEBUG);
                        System::externalRedirect($dest);
                }
 
index 7a5fe128c8424cea51c99de816e95dfae501a01b..a1dbfa2f315ea3aa8b31d9f2f12e5ae99854f5b9 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -57,8 +58,8 @@ class Owa extends BaseModule
                                                        $verified = HTTPSignature::verifyMagic($contact['pubkey']);
 
                                                        if ($verified && $verified['header_signed'] && $verified['header_valid']) {
-                                                               logger('OWA header: ' . print_r($verified, true), LOGGER_DATA);
-                                                               logger('OWA success: ' . $contact['addr'], LOGGER_DATA);
+                                                               Logger::log('OWA header: ' . print_r($verified, true), Logger::DATA);
+                                                               Logger::log('OWA success: ' . $contact['addr'], Logger::DATA);
 
                                                                $ret['success'] = true;
                                                                $token = random_string(32);
@@ -75,10 +76,10 @@ class Owa extends BaseModule
                                                                openssl_public_encrypt($token, $result, $contact['pubkey']);
                                                                $ret['encrypted_token'] = base64url_encode($result);
                                                        } else {
-                                                               logger('OWA fail: ' . $contact['id'] . ' ' . $contact['addr'] . ' ' . $contact['url'], LOGGER_DEBUG);
+                                                               Logger::log('OWA fail: ' . $contact['id'] . ' ' . $contact['addr'] . ' ' . $contact['url'], Logger::DEBUG);
                                                        }
                                                } else {
-                                                       logger('Contact not found: ' . $handle, LOGGER_DEBUG);
+                                                       Logger::log('Contact not found: ' . $handle, Logger::DEBUG);
                                                }
                                        }
                                }
index e246f4fa5601ed78075c9180645b8e8725ccdcfd..bbae881b8869c51173e057b7ef15399abd7abaae 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace Friendica\Network;
 
-
+use Friendica\Core\Logger;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 
 /**
@@ -104,7 +104,7 @@ class CurlResult
                $this->errorNumber = $errorNumber;
                $this->error = $error;
 
-               logger($url . ': ' . $this->returnCode . " " . $result, LOGGER_DATA);
+               Logger::log($url . ': ' . $this->returnCode . " " . $result, Logger::DATA);
 
                $this->parseBodyHeader($result);
                $this->checkSuccess();
@@ -134,8 +134,8 @@ class CurlResult
                $this->isSuccess = ($this->returnCode >= 200 && $this->returnCode <= 299) || $this->errorNumber == 0;
 
                if (!$this->isSuccess) {
-                       logger('error: ' . $this->url . ': ' . $this->returnCode . ' - ' . $this->error, LOGGER_INFO);
-                       logger('debug: ' . print_r($this->info, true), LOGGER_DATA);
+                       Logger::log('error: ' . $this->url . ': ' . $this->returnCode . ' - ' . $this->error, Logger::INFO);
+                       Logger::log('debug: ' . print_r($this->info, true), Logger::DATA);
                }
 
                if (!$this->isSuccess && $this->errorNumber == CURLE_OPERATION_TIMEDOUT) {
index 64ac4e7be54f3272f71ce8a17c65aff233c1f49d..51a558942dde3a4bc77f7c10c5c473363ab73b6d 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Network;
 
 use Friendica\Core\Addon;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -34,12 +35,12 @@ class FKOAuth1 extends OAuthServer
         */
        public function loginUser($uid)
        {
-               logger("FKOAuth1::loginUser $uid");
+               Logger::log("FKOAuth1::loginUser $uid");
                $a = get_app();
                $record = DBA::selectFirst('user', [], ['uid' => $uid, 'blocked' => 0, 'account_expired' => 0, 'account_removed' => 0, 'verified' => 1]);
 
                if (!DBA::isResult($record)) {
-                       logger('FKOAuth1::loginUser failure: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+                       Logger::log('FKOAuth1::loginUser failure: ' . print_r($_SERVER, true), Logger::DEBUG);
                        header('HTTP/1.0 401 Unauthorized');
                        die('This api requires login');
                }
index 8453ac829737cb25251c6e3abd6adb3b58a9767b..44e14f2156b0cc6267ba5f307ffb094c3242260f 100644 (file)
@@ -10,6 +10,7 @@
 namespace Friendica\Network;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use OAuthConsumer;
 use OAuthDataStore;
@@ -39,7 +40,7 @@ class FKOAuthDataStore extends OAuthDataStore
         */
        public function lookup_consumer($consumer_key)
        {
-               logger(__function__ . ":" . $consumer_key);
+               Logger::log(__function__ . ":" . $consumer_key);
 
                $s = DBA::select('clients', ['client_id', 'pw', 'redirect_uri'], ['client_id' => $consumer_key]);
                $r = DBA::toArray($s);
@@ -59,7 +60,7 @@ class FKOAuthDataStore extends OAuthDataStore
         */
        public function lookup_token($consumer, $token_type, $token)
        {
-               logger(__function__ . ":" . $consumer . ", " . $token_type . ", " . $token);
+               Logger::log(__function__ . ":" . $consumer . ", " . $token_type . ", " . $token);
 
                $s = DBA::select('tokens', ['id', 'secret', 'scope', 'expires', 'uid'], ['client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token]);
                $r = DBA::toArray($s);
@@ -99,7 +100,7 @@ class FKOAuthDataStore extends OAuthDataStore
         */
        public function new_request_token($consumer, $callback = null)
        {
-               logger(__function__ . ":" . $consumer . ", " . $callback);
+               Logger::log(__function__ . ":" . $consumer . ", " . $callback);
                $key = self::genToken();
                $sec = self::genToken();
 
@@ -134,7 +135,7 @@ class FKOAuthDataStore extends OAuthDataStore
         */
        public function new_access_token($token, $consumer, $verifier = null)
        {
-               logger(__function__ . ":" . $token . ", " . $consumer . ", " . $verifier);
+               Logger::log(__function__ . ":" . $token . ", " . $consumer . ", " . $verifier);
 
                // return a new access token attached to this consumer
                // for the user associated with this token if the request token
@@ -145,7 +146,7 @@ class FKOAuthDataStore extends OAuthDataStore
 
                // get user for this verifier
                $uverifier = Config::get("oauth", $verifier);
-               logger(__function__ . ":" . $verifier . "," . $uverifier);
+               Logger::log(__function__ . ":" . $verifier . "," . $uverifier);
 
                if (is_null($verifier) || ($uverifier !== false)) {
                        $key = self::genToken();
index f892c3a5ccfc16cc69e027e5e57eb71923a2a60a..fc93524bfd79222129f8e3473fb3db0ff4a0f5c1 100644 (file)
@@ -12,6 +12,7 @@ namespace Friendica\Network;
 use DOMDocument;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -109,7 +110,7 @@ class Probe
                $xrd_timeout = Config::get('system', 'xrd_timeout', 20);
                $redirects = 0;
 
-               logger("Probing for ".$host, LOGGER_DEBUG);
+               Logger::log("Probing for ".$host, Logger::DEBUG);
                $xrd = null;
 
                $curlResult = Network::curl($ssl_url, false, $redirects, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
@@ -122,7 +123,7 @@ class Probe
                if (!is_object($xrd)) {
                        $curlResult = Network::curl($url, false, $redirects, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
                        if ($curlResult->isTimeout()) {
-                               logger("Probing timeout for " . $url, LOGGER_DEBUG);
+                               Logger::log("Probing timeout for " . $url, Logger::DEBUG);
                                return false;
                        }
                        $xml = $curlResult->getBody();
@@ -130,13 +131,13 @@ class Probe
                        $host_url = 'http://'.$host;
                }
                if (!is_object($xrd)) {
-                       logger("No xrd object found for ".$host, LOGGER_DEBUG);
+                       Logger::log("No xrd object found for ".$host, Logger::DEBUG);
                        return [];
                }
 
                $links = XML::elementToArray($xrd);
                if (!isset($links["xrd"]["link"])) {
-                       logger("No xrd data found for ".$host, LOGGER_DEBUG);
+                       Logger::log("No xrd data found for ".$host, Logger::DEBUG);
                        return [];
                }
 
@@ -164,7 +165,7 @@ class Probe
 
                self::$baseurl = "http://".$host;
 
-               logger("Probing successful for ".$host, LOGGER_DEBUG);
+               Logger::log("Probing successful for ".$host, Logger::DEBUG);
 
                return $lrdd;
        }
@@ -194,7 +195,7 @@ class Probe
                $profile_link = '';
 
                $links = self::lrdd($webbie);
-               logger('webfingerDfrn: '.$webbie.':'.print_r($links, true), LOGGER_DATA);
+               Logger::log('webfingerDfrn: '.$webbie.':'.print_r($links, true), Logger::DATA);
                if (count($links)) {
                        foreach ($links as $link) {
                                if ($link['@attributes']['rel'] === NAMESPACE_DFRN) {
@@ -253,7 +254,7 @@ class Probe
                }
 
                if (!$lrdd) {
-                       logger("No lrdd data found for ".$uri, LOGGER_DEBUG);
+                       Logger::log("No lrdd data found for ".$uri, Logger::DEBUG);
                        return [];
                }
 
@@ -285,7 +286,7 @@ class Probe
                }
 
                if (!is_array($webfinger["links"])) {
-                       logger("No webfinger links found for ".$uri, LOGGER_DEBUG);
+                       Logger::log("No webfinger links found for ".$uri, Logger::DEBUG);
                        return false;
                }
 
@@ -595,7 +596,7 @@ class Probe
                                $lrdd = self::hostMeta($host);
                        }
                        if (!$lrdd) {
-                               logger('No XRD data was found for '.$uri, LOGGER_DEBUG);
+                               Logger::log('No XRD data was found for '.$uri, Logger::DEBUG);
                                return self::feed($uri);
                        }
                        $nick = array_pop($path_parts);
@@ -630,12 +631,12 @@ class Probe
                        }
 
                        if (!$lrdd) {
-                               logger('No XRD data was found for '.$uri, LOGGER_DEBUG);
+                               Logger::log('No XRD data was found for '.$uri, Logger::DEBUG);
                                return self::mail($uri, $uid);
                        }
                        $addr = $uri;
                } else {
-                       logger("Uri ".$uri." was not detectable", LOGGER_DEBUG);
+                       Logger::log("Uri ".$uri." was not detectable", Logger::DEBUG);
                        return false;
                }
 
@@ -680,7 +681,7 @@ class Probe
 
                $result = false;
 
-               logger("Probing ".$uri, LOGGER_DEBUG);
+               Logger::log("Probing ".$uri, Logger::DEBUG);
 
                if (in_array($network, ["", Protocol::DFRN])) {
                        $result = self::dfrn($webfinger);
@@ -716,7 +717,7 @@ class Probe
                        $result["url"] = $uri;
                }
 
-               logger($uri." is ".$result["network"], LOGGER_DEBUG);
+               Logger::log($uri." is ".$result["network"], Logger::DEBUG);
 
                if (empty($result["baseurl"])) {
                        $pos = strpos($result["url"], $host);
@@ -751,7 +752,7 @@ class Probe
                $webfinger = json_decode($data, true);
                if (is_array($webfinger)) {
                        if (!isset($webfinger["links"])) {
-                               logger("No json webfinger links for ".$url, LOGGER_DEBUG);
+                               Logger::log("No json webfinger links for ".$url, Logger::DEBUG);
                                return false;
                        }
                        return $webfinger;
@@ -760,13 +761,13 @@ class Probe
                // If it is not JSON, maybe it is XML
                $xrd = XML::parseString($data, false);
                if (!is_object($xrd)) {
-                       logger("No webfinger data retrievable for ".$url, LOGGER_DEBUG);
+                       Logger::log("No webfinger data retrievable for ".$url, Logger::DEBUG);
                        return false;
                }
 
                $xrd_arr = XML::elementToArray($xrd);
                if (!isset($xrd_arr["xrd"]["link"])) {
-                       logger("No XML webfinger links for ".$url, LOGGER_DEBUG);
+                       Logger::log("No XML webfinger links for ".$url, Logger::DEBUG);
                        return false;
                }
 
@@ -815,13 +816,13 @@ class Probe
                }
                $content = $curlResult->getBody();
                if (!$content) {
-                       logger("Empty body for ".$noscrape_url, LOGGER_DEBUG);
+                       Logger::log("Empty body for ".$noscrape_url, Logger::DEBUG);
                        return false;
                }
 
                $json = json_decode($content, true);
                if (!is_array($json)) {
-                       logger("No json data for ".$noscrape_url, LOGGER_DEBUG);
+                       Logger::log("No json data for ".$noscrape_url, Logger::DEBUG);
                        return false;
                }
 
@@ -927,7 +928,7 @@ class Probe
        {
                $data = [];
 
-               logger("Check profile ".$profile_link, LOGGER_DEBUG);
+               Logger::log("Check profile ".$profile_link, Logger::DEBUG);
 
                // Fetch data via noscrape - this is faster
                $noscrape_url = str_replace(["/hcard/", "/profile/"], "/noscrape/", $profile_link);
@@ -961,7 +962,7 @@ class Probe
                $prof_data["fn"]           = defaults($data, 'name'   , null);
                $prof_data["key"]          = defaults($data, 'pubkey' , null);
 
-               logger("Result for profile ".$profile_link.": ".print_r($prof_data, true), LOGGER_DEBUG);
+               Logger::log("Result for profile ".$profile_link.": ".print_r($prof_data, true), Logger::DEBUG);
 
                return $prof_data;
        }
@@ -1632,7 +1633,7 @@ class Probe
                }
 
                $msgs = Email::poll($mbox, $uri);
-               logger('searching '.$uri.', '.count($msgs).' messages found.', LOGGER_DEBUG);
+               Logger::log('searching '.$uri.', '.count($msgs).' messages found.', Logger::DEBUG);
 
                if (!count($msgs)) {
                        return false;
@@ -1714,7 +1715,7 @@ class Probe
 
                $fixed = $scheme.$host.$port.$path.$query.$fragment;
 
-               logger('Base: '.$base.' - Avatar: '.$avatar.' - Fixed: '.$fixed, LOGGER_DATA);
+               Logger::log('Base: '.$base.' - Avatar: '.$avatar.' - Fixed: '.$fixed, Logger::DATA);
 
                return $fixed;
        }
index a76599223d0bbad165f72ee3611f5452869002c1..abce69a1c78f8583b7a5864a606f465096954de2 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\App;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -482,7 +483,7 @@ class Image
                                break;
                }
 
-               //      logger('exif: ' . print_r($exif,true));
+               //      Logger::log('exif: ' . print_r($exif,true));
                return $exif;
        }
 
@@ -726,7 +727,7 @@ class Image
         */
        public static function guessType($filename, $fromcurl = false, $header = '')
        {
-               logger('Image: guessType: '.$filename . ($fromcurl?' from curl headers':''), LOGGER_DEBUG);
+               Logger::log('Image: guessType: '.$filename . ($fromcurl?' from curl headers':''), Logger::DEBUG);
                $type = null;
                if ($fromcurl) {
                        $a = get_app();
@@ -764,7 +765,7 @@ class Image
                                }
                        }
                }
-               logger('Image: guessType: type='.$type, LOGGER_DEBUG);
+               Logger::log('Image: guessType: type='.$type, Logger::DEBUG);
                return $type;
        }
 
@@ -890,7 +891,7 @@ class Image
                );
 
                if (!DBA::isResult($r)) {
-                       logger("Can't detect user data for uid ".$uid, LOGGER_DEBUG);
+                       Logger::log("Can't detect user data for uid ".$uid, Logger::DEBUG);
                        return([]);
                }
 
@@ -901,10 +902,10 @@ class Image
                /// $community_page   = (($r[0]['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false);
 
                if ((strlen($imagedata) == 0) && ($url == "")) {
-                       logger("No image data and no url provided", LOGGER_DEBUG);
+                       Logger::log("No image data and no url provided", Logger::DEBUG);
                        return([]);
                } elseif (strlen($imagedata) == 0) {
-                       logger("Uploading picture from ".$url, LOGGER_DEBUG);
+                       Logger::log("Uploading picture from ".$url, Logger::DEBUG);
 
                        $stamp1 = microtime(true);
                        $imagedata = @file_get_contents($url);
@@ -914,7 +915,7 @@ class Image
                $maximagesize = Config::get('system', 'maximagesize');
 
                if (($maximagesize) && (strlen($imagedata) > $maximagesize)) {
-                       logger("Image exceeds size limit of ".$maximagesize, LOGGER_DEBUG);
+                       Logger::log("Image exceeds size limit of ".$maximagesize, Logger::DEBUG);
                        return([]);
                }
 
@@ -928,7 +929,7 @@ class Image
 
                if (!isset($data["mime"])) {
                        unlink($tempfile);
-                       logger("File is no picture", LOGGER_DEBUG);
+                       Logger::log("File is no picture", Logger::DEBUG);
                        return([]);
                }
 
@@ -936,7 +937,7 @@ class Image
 
                if (!$Image->isValid()) {
                        unlink($tempfile);
-                       logger("Picture is no valid picture", LOGGER_DEBUG);
+                       Logger::log("Picture is no valid picture", Logger::DEBUG);
                        return([]);
                }
 
@@ -967,7 +968,7 @@ class Image
                $r = Photo::store($Image, $uid, $visitor, $hash, $tempfile, L10n::t('Wall Photos'), 0, 0, $defperm);
 
                if (!$r) {
-                       logger("Picture couldn't be stored", LOGGER_DEBUG);
+                       Logger::log("Picture couldn't be stored", Logger::DEBUG);
                        return([]);
                }
 
index e8bc29ac030908ee955b9112378572db3b48e7aa..bb1b81c2cc9b4dd8524b05f853df3abf140b6145 100644 (file)
@@ -10,6 +10,7 @@ use Friendica\Content\Feature;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
@@ -487,10 +488,10 @@ class Post extends BaseObject
        {
                $item_id = $item->getId();
                if (!$item_id) {
-                       logger('[ERROR] Post::addChild : Item has no ID!!', LOGGER_DEBUG);
+                       Logger::log('[ERROR] Post::addChild : Item has no ID!!', Logger::DEBUG);
                        return false;
                } elseif ($this->getChild($item->getId())) {
-                       logger('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', LOGGER_DEBUG);
+                       Logger::log('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', Logger::DEBUG);
                        return false;
                }
                /*
@@ -584,7 +585,7 @@ class Post extends BaseObject
                                return true;
                        }
                }
-               logger('[WARN] Item::removeChild : Item is not a child (' . $id . ').', LOGGER_DEBUG);
+               Logger::log('[WARN] Item::removeChild : Item is not a child (' . $id . ').', Logger::DEBUG);
                return false;
        }
 
@@ -650,7 +651,7 @@ class Post extends BaseObject
        public function getDataValue($name)
        {
                if (!isset($this->data[$name])) {
-                       // logger('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', LOGGER_DEBUG);
+                       // Logger::log('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', Logger::DEBUG);
                        return false;
                }
 
@@ -667,7 +668,7 @@ class Post extends BaseObject
        private function setTemplate($name)
        {
                if (!x($this->available_templates, $name)) {
-                       logger('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', LOGGER_DEBUG);
+                       Logger::log('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', Logger::DEBUG);
                        return false;
                }
 
index 08c04f546f3b6f93973073e100061b8ee000456d..b6d92e743c823b40c9b07f93930d53a159ecedb3 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Object;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Object\Post;
 use Friendica\Util\Security;
@@ -77,7 +78,7 @@ class Thread extends BaseObject
                                $this->writable = $writable;
                                break;
                        default:
-                               logger('[ERROR] Conversation::setMode : Unhandled mode ('. $mode .').', LOGGER_DEBUG);
+                               Logger::log('[ERROR] Conversation::setMode : Unhandled mode ('. $mode .').', Logger::DEBUG);
                                return false;
                                break;
                }
@@ -137,12 +138,12 @@ class Thread extends BaseObject
                $item_id = $item->getId();
 
                if (!$item_id) {
-                       logger('[ERROR] Conversation::addThread : Item has no ID!!', LOGGER_DEBUG);
+                       Logger::log('[ERROR] Conversation::addThread : Item has no ID!!', Logger::DEBUG);
                        return false;
                }
 
                if ($this->getParent($item->getId())) {
-                       logger('[WARN] Conversation::addThread : Thread already exists ('. $item->getId() .').', LOGGER_DEBUG);
+                       Logger::log('[WARN] Conversation::addThread : Thread already exists ('. $item->getId() .').', Logger::DEBUG);
                        return false;
                }
 
@@ -150,12 +151,12 @@ class Thread extends BaseObject
                 * Only add will be displayed
                 */
                if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) {
-                       logger('[WARN] Conversation::addThread : Thread is a mail ('. $item->getId() .').', LOGGER_DEBUG);
+                       Logger::log('[WARN] Conversation::addThread : Thread is a mail ('. $item->getId() .').', Logger::DEBUG);
                        return false;
                }
 
                if ($item->getDataValue('verb') === ACTIVITY_LIKE || $item->getDataValue('verb') === ACTIVITY_DISLIKE) {
-                       logger('[WARN] Conversation::addThread : Thread is a (dis)like ('. $item->getId() .').', LOGGER_DEBUG);
+                       Logger::log('[WARN] Conversation::addThread : Thread is a (dis)like ('. $item->getId() .').', Logger::DEBUG);
                        return false;
                }
 
@@ -189,7 +190,7 @@ class Thread extends BaseObject
                        $item_data = $item->getTemplateData($conv_responses);
 
                        if (!$item_data) {
-                               logger('[ERROR] Conversation::getTemplateData : Failed to get item template data ('. $item->getId() .').', LOGGER_DEBUG);
+                               Logger::log('[ERROR] Conversation::getTemplateData : Failed to get item template data ('. $item->getId() .').', Logger::DEBUG);
                                return false;
                        }
                        $result[] = $item_data;
index 964499af1d41904d42ced55872d3b95e92559377..7d970c00390b2c87ee6b5bd3e23b1a0745ac7643 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Protocol\ActivityPub;
 
 use Friendica\Database\DBA;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Model\Conversation;
 use Friendica\Model\Contact;
@@ -140,7 +141,7 @@ class Processor
                }
 
                if (($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) {
-                       logger('Parent ' . $activity['reply-to-id'] . ' not found. Try to refetch it.');
+                       Logger::log('Parent ' . $activity['reply-to-id'] . ' not found. Try to refetch it.');
                        self::fetchMissingActivity($activity['reply-to-id'], $activity);
                }
 
@@ -158,7 +159,7 @@ class Processor
        {
                $owner = Contact::getIdForURL($activity['actor']);
 
-               logger('Deleting item ' . $activity['object_id'] . ' from ' . $owner, LOGGER_DEBUG);
+               Logger::log('Deleting item ' . $activity['object_id'] . ' from ' . $owner, Logger::DEBUG);
                Item::delete(['uri' => $activity['object_id'], 'owner-id' => $owner]);
        }
 
@@ -211,7 +212,7 @@ class Processor
                }
 
                $event_id = Event::store($event);
-               logger('Event '.$event_id.' was stored', LOGGER_DEBUG);
+               Logger::log('Event '.$event_id.' was stored', Logger::DEBUG);
        }
 
        /**
@@ -225,7 +226,7 @@ class Processor
                /// @todo What to do with $activity['context']?
 
                if (($item['gravity'] != GRAVITY_PARENT) && !Item::exists(['uri' => $item['parent-uri']])) {
-                       logger('Parent ' . $item['parent-uri'] . ' not found, message will be discarded.', LOGGER_DEBUG);
+                       Logger::log('Parent ' . $item['parent-uri'] . ' not found, message will be discarded.', Logger::DEBUG);
                        return;
                }
 
@@ -238,7 +239,7 @@ class Processor
                        $item['owner-link'] = $activity['actor'];
                        $item['owner-id'] = Contact::getIdForURL($activity['actor'], 0, true);
                } else {
-                       logger('Ignoring actor because of thread completion.', LOGGER_DEBUG);
+                       Logger::log('Ignoring actor because of thread completion.', Logger::DEBUG);
                        $item['owner-link'] = $item['author-link'];
                        $item['owner-id'] = $item['author-id'];
                }
@@ -284,7 +285,7 @@ class Processor
                        }
 
                        $item_id = Item::insert($item);
-                       logger('Storing for user ' . $item['uid'] . ': ' . $item_id);
+                       Logger::log('Storing for user ' . $item['uid'] . ': ' . $item_id);
                }
        }
 
@@ -302,7 +303,7 @@ class Processor
 
                $object = ActivityPub::fetchContent($url);
                if (empty($object)) {
-                       logger('Activity ' . $url . ' was not fetchable, aborting.');
+                       Logger::log('Activity ' . $url . ' was not fetchable, aborting.');
                        return;
                }
 
@@ -322,7 +323,7 @@ class Processor
                $ldactivity['thread-completion'] = true;
 
                ActivityPub\Receiver::processActivity($ldactivity);
-               logger('Activity ' . $url . ' had been fetched and processed.');
+               Logger::log('Activity ' . $url . ' had been fetched and processed.');
        }
 
        /**
@@ -360,7 +361,7 @@ class Processor
                }
 
                DBA::update('contact', ['hub-verify' => $activity['id']], ['id' => $cid]);
-               logger('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
+               Logger::log('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
        }
 
        /**
@@ -374,7 +375,7 @@ class Processor
                        return;
                }
 
-               logger('Updating profile for ' . $activity['object_id'], LOGGER_DEBUG);
+               Logger::log('Updating profile for ' . $activity['object_id'], Logger::DEBUG);
                APContact::getByURL($activity['object_id'], true);
        }
 
@@ -386,12 +387,12 @@ class Processor
        public static function deletePerson($activity)
        {
                if (empty($activity['object_id']) || empty($activity['actor'])) {
-                       logger('Empty object id or actor.', LOGGER_DEBUG);
+                       Logger::log('Empty object id or actor.', Logger::DEBUG);
                        return;
                }
 
                if ($activity['object_id'] != $activity['actor']) {
-                       logger('Object id does not match actor.', LOGGER_DEBUG);
+                       Logger::log('Object id does not match actor.', Logger::DEBUG);
                        return;
                }
 
@@ -401,7 +402,7 @@ class Processor
                }
                DBA::close($contacts);
 
-               logger('Deleted contact ' . $activity['object_id'], LOGGER_DEBUG);
+               Logger::log('Deleted contact ' . $activity['object_id'], Logger::DEBUG);
        }
 
        /**
@@ -420,7 +421,7 @@ class Processor
 
                $cid = Contact::getIdForURL($activity['actor'], $uid);
                if (empty($cid)) {
-                       logger('No contact found for ' . $activity['actor'], LOGGER_DEBUG);
+                       Logger::log('No contact found for ' . $activity['actor'], Logger::DEBUG);
                        return;
                }
 
@@ -435,7 +436,7 @@ class Processor
 
                $condition = ['id' => $cid];
                DBA::update('contact', $fields, $condition);
-               logger('Accept contact request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG);
+               Logger::log('Accept contact request from contact ' . $cid . ' for user ' . $uid, Logger::DEBUG);
        }
 
        /**
@@ -454,7 +455,7 @@ class Processor
 
                $cid = Contact::getIdForURL($activity['actor'], $uid);
                if (empty($cid)) {
-                       logger('No contact found for ' . $activity['actor'], LOGGER_DEBUG);
+                       Logger::log('No contact found for ' . $activity['actor'], Logger::DEBUG);
                        return;
                }
 
@@ -462,9 +463,9 @@ class Processor
 
                if (DBA::exists('contact', ['id' => $cid, 'rel' => Contact::SHARING, 'pending' => true])) {
                        Contact::remove($cid);
-                       logger('Rejected contact request from contact ' . $cid . ' for user ' . $uid . ' - contact had been removed.', LOGGER_DEBUG);
+                       Logger::log('Rejected contact request from contact ' . $cid . ' for user ' . $uid . ' - contact had been removed.', Logger::DEBUG);
                } else {
-                       logger('Rejected contact request from contact ' . $cid . ' for user ' . $uid . '.', LOGGER_DEBUG);
+                       Logger::log('Rejected contact request from contact ' . $cid . ' for user ' . $uid . '.', Logger::DEBUG);
                }
        }
 
@@ -507,7 +508,7 @@ class Processor
 
                $cid = Contact::getIdForURL($activity['actor'], $uid);
                if (empty($cid)) {
-                       logger('No contact found for ' . $activity['actor'], LOGGER_DEBUG);
+                       Logger::log('No contact found for ' . $activity['actor'], Logger::DEBUG);
                        return;
                }
 
@@ -519,7 +520,7 @@ class Processor
                }
 
                Contact::removeFollower($owner, $contact);
-               logger('Undo following request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG);
+               Logger::log('Undo following request from contact ' . $cid . ' for user ' . $uid, Logger::DEBUG);
        }
 
        /**
@@ -534,7 +535,7 @@ class Processor
                        return;
                }
 
-               logger('Change existing contact ' . $cid . ' from ' . $contact['network'] . ' to ActivityPub.');
+               Logger::log('Change existing contact ' . $cid . ' from ' . $contact['network'] . ' to ActivityPub.');
                Contact::updateFromProbe($cid, Protocol::ACTIVITYPUB);
        }
 }
index 8bc9d76463397ee7b190bff92ae8d6ed333f8dc5..80c2a5f08492659f674f4ddef48b844fae444c5a 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Protocol\ActivityPub;
 
 use Friendica\Database\DBA;
 use Friendica\Util\HTTPSignature;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Model\Contact;
 use Friendica\Model\APContact;
@@ -59,16 +60,16 @@ class Receiver
        {
                $http_signer = HTTPSignature::getSigner($body, $header);
                if (empty($http_signer)) {
-                       logger('Invalid HTTP signature, message will be discarded.', LOGGER_DEBUG);
+                       Logger::log('Invalid HTTP signature, message will be discarded.', Logger::DEBUG);
                        return;
                } else {
-                       logger('HTTP signature is signed by ' . $http_signer, LOGGER_DEBUG);
+                       Logger::log('HTTP signature is signed by ' . $http_signer, Logger::DEBUG);
                }
 
                $activity = json_decode($body, true);
 
                if (empty($activity)) {
-                       logger('Invalid body.', LOGGER_DEBUG);
+                       Logger::log('Invalid body.', Logger::DEBUG);
                        return;
                }
 
@@ -76,31 +77,31 @@ class Receiver
 
                $actor = JsonLD::fetchElement($ldactivity, 'as:actor');
 
-               logger('Message for user ' . $uid . ' is from actor ' . $actor, LOGGER_DEBUG);
+               Logger::log('Message for user ' . $uid . ' is from actor ' . $actor, Logger::DEBUG);
 
                if (LDSignature::isSigned($activity)) {
                        $ld_signer = LDSignature::getSigner($activity);
                        if (empty($ld_signer)) {
-                               logger('Invalid JSON-LD signature from ' . $actor, LOGGER_DEBUG);
+                               Logger::log('Invalid JSON-LD signature from ' . $actor, Logger::DEBUG);
                        }
                        if (!empty($ld_signer && ($actor == $http_signer))) {
-                               logger('The HTTP and the JSON-LD signature belong to ' . $ld_signer, LOGGER_DEBUG);
+                               Logger::log('The HTTP and the JSON-LD signature belong to ' . $ld_signer, Logger::DEBUG);
                                $trust_source = true;
                        } elseif (!empty($ld_signer)) {
-                               logger('JSON-LD signature is signed by ' . $ld_signer, LOGGER_DEBUG);
+                               Logger::log('JSON-LD signature is signed by ' . $ld_signer, Logger::DEBUG);
                                $trust_source = true;
                        } elseif ($actor == $http_signer) {
-                               logger('Bad JSON-LD signature, but HTTP signer fits the actor.', LOGGER_DEBUG);
+                               Logger::log('Bad JSON-LD signature, but HTTP signer fits the actor.', Logger::DEBUG);
                                $trust_source = true;
                        } else {
-                               logger('Invalid JSON-LD signature and the HTTP signer is different.', LOGGER_DEBUG);
+                               Logger::log('Invalid JSON-LD signature and the HTTP signer is different.', Logger::DEBUG);
                                $trust_source = false;
                        }
                } elseif ($actor == $http_signer) {
-                       logger('Trusting post without JSON-LD signature, The actor fits the HTTP signer.', LOGGER_DEBUG);
+                       Logger::log('Trusting post without JSON-LD signature, The actor fits the HTTP signer.', Logger::DEBUG);
                        $trust_source = true;
                } else {
-                       logger('No JSON-LD signature, different actor.', LOGGER_DEBUG);
+                       Logger::log('No JSON-LD signature, different actor.', Logger::DEBUG);
                        $trust_source = false;
                }
 
@@ -159,7 +160,7 @@ class Receiver
        {
                $actor = JsonLD::fetchElement($activity, 'as:actor');
                if (empty($actor)) {
-                       logger('Empty actor', LOGGER_DEBUG);
+                       Logger::log('Empty actor', Logger::DEBUG);
                        return [];
                }
 
@@ -175,11 +176,11 @@ class Receiver
                        $receivers = array_merge($receivers, $additional);
                }
 
-               logger('Receivers: ' . json_encode($receivers), LOGGER_DEBUG);
+               Logger::log('Receivers: ' . json_encode($receivers), Logger::DEBUG);
 
                $object_id = JsonLD::fetchElement($activity, 'as:object');
                if (empty($object_id)) {
-                       logger('No object found', LOGGER_DEBUG);
+                       Logger::log('No object found', Logger::DEBUG);
                        return [];
                }
 
@@ -192,7 +193,7 @@ class Receiver
                        }
                        $object_data = self::fetchObject($object_id, $activity['as:object'], $trust_source);
                        if (empty($object_data)) {
-                               logger("Object data couldn't be processed", LOGGER_DEBUG);
+                               Logger::log("Object data couldn't be processed", Logger::DEBUG);
                                return [];
                        }
                        // We had been able to retrieve the object data - so we can trust the source
@@ -229,7 +230,7 @@ class Receiver
                $object_data['actor'] = $actor;
                $object_data['receiver'] = array_merge(defaults($object_data, 'receiver', []), $receivers);
 
-               logger('Processing ' . $object_data['type'] . ' ' . $object_data['object_type'] . ' ' . $object_data['id'], LOGGER_DEBUG);
+               Logger::log('Processing ' . $object_data['type'] . ' ' . $object_data['object_type'] . ' ' . $object_data['id'], Logger::DEBUG);
 
                return $object_data;
        }
@@ -272,17 +273,17 @@ class Receiver
        {
                $type = JsonLD::fetchElement($activity, '@type');
                if (!$type) {
-                       logger('Empty type', LOGGER_DEBUG);
+                       Logger::log('Empty type', Logger::DEBUG);
                        return;
                }
 
                if (!JsonLD::fetchElement($activity, 'as:object')) {
-                       logger('Empty object', LOGGER_DEBUG);
+                       Logger::log('Empty object', Logger::DEBUG);
                        return;
                }
 
                if (!JsonLD::fetchElement($activity, 'as:actor')) {
-                       logger('Empty actor', LOGGER_DEBUG);
+                       Logger::log('Empty actor', Logger::DEBUG);
                        return;
 
                }
@@ -290,12 +291,12 @@ class Receiver
                // $trust_source is called by reference and is set to true if the content was retrieved successfully
                $object_data = self::prepareObjectData($activity, $uid, $trust_source);
                if (empty($object_data)) {
-                       logger('No object data found', LOGGER_DEBUG);
+                       Logger::log('No object data found', Logger::DEBUG);
                        return;
                }
 
                if (!$trust_source) {
-                       logger('No trust for activity type "' . $type . '", so we quit now.', LOGGER_DEBUG);
+                       Logger::log('No trust for activity type "' . $type . '", so we quit now.', Logger::DEBUG);
                        return;
                }
 
@@ -384,7 +385,7 @@ class Receiver
                                break;
 
                        default:
-                               logger('Unknown activity: ' . $type . ' ' . $object_data['object_type'], LOGGER_DEBUG);
+                               Logger::log('Unknown activity: ' . $type . ' ' . $object_data['object_type'], Logger::DEBUG);
                                break;
                }
        }
@@ -414,9 +415,9 @@ class Receiver
                        $profile = APContact::getByURL($actor);
                        $followers = defaults($profile, 'followers', '');
 
-                       logger('Actor: ' . $actor . ' - Followers: ' . $followers, LOGGER_DEBUG);
+                       Logger::log('Actor: ' . $actor . ' - Followers: ' . $followers, Logger::DEBUG);
                } else {
-                       logger('Empty actor', LOGGER_DEBUG);
+                       Logger::log('Empty actor', Logger::DEBUG);
                        $followers = '';
                }
 
@@ -486,7 +487,7 @@ class Receiver
                        return;
                }
 
-               logger('Switch contact ' . $cid . ' (' . $profile['url'] . ') for user ' . $uid . ' to ActivityPub');
+               Logger::log('Switch contact ' . $cid . ' (' . $profile['url'] . ') for user ' . $uid . ' to ActivityPub');
 
                $photo = defaults($profile, 'photo', null);
                unset($profile['photo']);
@@ -500,7 +501,7 @@ class Receiver
                // Send a new follow request to be sure that the connection still exists
                if (($uid != 0) && DBA::exists('contact', ['id' => $cid, 'rel' => [Contact::SHARING, Contact::FRIEND]])) {
                        ActivityPub\Transmitter::sendActivity('Follow', $profile['url'], $uid);
-                       logger('Send a new follow request to ' . $profile['url'] . ' for user ' . $uid, LOGGER_DEBUG);
+                       Logger::log('Send a new follow request to ' . $profile['url'] . ' for user ' . $uid, Logger::DEBUG);
                }
        }
 
@@ -570,27 +571,27 @@ class Receiver
                        $data = ActivityPub::fetchContent($object_id);
                        if (!empty($data)) {
                                $object = JsonLD::compact($data);
-                               logger('Fetched content for ' . $object_id, LOGGER_DEBUG);
+                               Logger::log('Fetched content for ' . $object_id, Logger::DEBUG);
                        } else {
-                               logger('Empty content for ' . $object_id . ', check if content is available locally.', LOGGER_DEBUG);
+                               Logger::log('Empty content for ' . $object_id . ', check if content is available locally.', Logger::DEBUG);
 
                                $item = Item::selectFirst([], ['uri' => $object_id]);
                                if (!DBA::isResult($item)) {
-                                       logger('Object with url ' . $object_id . ' was not found locally.', LOGGER_DEBUG);
+                                       Logger::log('Object with url ' . $object_id . ' was not found locally.', Logger::DEBUG);
                                        return false;
                                }
-                               logger('Using already stored item for url ' . $object_id, LOGGER_DEBUG);
+                               Logger::log('Using already stored item for url ' . $object_id, Logger::DEBUG);
                                $data = ActivityPub\Transmitter::createNote($item);
                                $object = JsonLD::compact($data);
                        }
                } else {
-                       logger('Using original object for url ' . $object_id, LOGGER_DEBUG);
+                       Logger::log('Using original object for url ' . $object_id, Logger::DEBUG);
                }
 
                $type = JsonLD::fetchElement($object, '@type');
 
                if (empty($type)) {
-                       logger('Empty type', LOGGER_DEBUG);
+                       Logger::log('Empty type', Logger::DEBUG);
                        return false;
                }
 
@@ -606,7 +607,7 @@ class Receiver
                        return self::fetchObject($object_id);
                }
 
-               logger('Unhandled object type: ' . $type, LOGGER_DEBUG);
+               Logger::log('Unhandled object type: ' . $type, Logger::DEBUG);
        }
 
        /**
index ed2a84e7103da3753ea8adff52dc0ddcd276b9df..d3043c530b850f7bc17731b62b2290d632c20c40 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Protocol\ActivityPub;
 
 use Friendica\BaseObject;
 use Friendica\Database\DBA;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Util\HTTPSignature;
 use Friendica\Core\Protocol;
@@ -1015,7 +1016,7 @@ class Transmitter
 
                $signed = LDSignature::sign($data, $owner);
 
-               logger('Deliver profile deletion for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', LOGGER_DEBUG);
+               Logger::log('Deliver profile deletion for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', Logger::DEBUG);
                return HTTPSignature::transmit($signed, $inbox, $uid);
        }
 
@@ -1044,7 +1045,7 @@ class Transmitter
 
                $signed = LDSignature::sign($data, $owner);
 
-               logger('Deliver profile deletion for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', LOGGER_DEBUG);
+               Logger::log('Deliver profile deletion for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', Logger::DEBUG);
                return HTTPSignature::transmit($signed, $inbox, $uid);
        }
 
@@ -1073,7 +1074,7 @@ class Transmitter
 
                $signed = LDSignature::sign($data, $owner);
 
-               logger('Deliver profile update for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', LOGGER_DEBUG);
+               Logger::log('Deliver profile update for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', Logger::DEBUG);
                return HTTPSignature::transmit($signed, $inbox, $uid);
        }
 
@@ -1098,7 +1099,7 @@ class Transmitter
                        'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
                        'to' => $profile['url']];
 
-               logger('Sending activity ' . $activity . ' to ' . $target . ' for user ' . $uid, LOGGER_DEBUG);
+               Logger::log('Sending activity ' . $activity . ' to ' . $target . ' for user ' . $uid, Logger::DEBUG);
 
                $signed = LDSignature::sign($data, $owner);
                HTTPSignature::transmit($signed, $profile['inbox'], $uid);
@@ -1126,7 +1127,7 @@ class Transmitter
                        'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
                        'to' => $profile['url']];
 
-               logger('Sending accept to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG);
+               Logger::log('Sending accept to ' . $target . ' for user ' . $uid . ' with id ' . $id, Logger::DEBUG);
 
                $signed = LDSignature::sign($data, $owner);
                HTTPSignature::transmit($signed, $profile['inbox'], $uid);
@@ -1154,7 +1155,7 @@ class Transmitter
                        'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
                        'to' => $profile['url']];
 
-               logger('Sending reject to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG);
+               Logger::log('Sending reject to ' . $target . ' for user ' . $uid . ' with id ' . $id, Logger::DEBUG);
 
                $signed = LDSignature::sign($data, $owner);
                HTTPSignature::transmit($signed, $profile['inbox'], $uid);
@@ -1183,7 +1184,7 @@ class Transmitter
                        'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
                        'to' => $profile['url']];
 
-               logger('Sending undo to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG);
+               Logger::log('Sending undo to ' . $target . ' for user ' . $uid . ' with id ' . $id, Logger::DEBUG);
 
                $signed = LDSignature::sign($data, $owner);
                HTTPSignature::transmit($signed, $profile['inbox'], $uid);
index 1dcc1197a5d3ae70cc614700ac2fbb1fe89a0212..07a56cf24013ca11e99176db15a01fb801dde88d 100644 (file)
@@ -17,6 +17,7 @@ use Friendica\Content\Text\HTML;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -175,7 +176,7 @@ class DFRN
                );
 
                if (! DBA::isResult($r)) {
-                       logger(sprintf('No contact found for nickname=%d', $owner_nick), LOGGER_WARNING);
+                       Logger::log(sprintf('No contact found for nickname=%d', $owner_nick), Logger::WARNING);
                        killme();
                }
 
@@ -211,7 +212,7 @@ class DFRN
                        );
 
                        if (! DBA::isResult($r)) {
-                               logger(sprintf('No contact found for uid=%d', $owner_id), LOGGER_WARNING);
+                               Logger::log(sprintf('No contact found for uid=%d', $owner_id), Logger::WARNING);
                                killme();
                        }
 
@@ -244,7 +245,7 @@ class DFRN
                                intval(TERM_CATEGORY),
                                intval($owner_id)
                        );
-                       //$sql_extra .= file_tag_file_query('item',$category,'category');
+                       //$sql_extra .= FileTag::fileQuery('item',$category,'category');
                }
 
                if ($public_feed && ! $converse) {
@@ -1171,7 +1172,7 @@ class DFRN
                if (!$dissolve && !$legacy_transport) {
                        $curlResult = self::transmit($owner, $contact, $atom);
                        if ($curlResult >= 200) {
-                               logger('Delivery via Diaspora transport layer was successful with status ' . $curlResult);
+                               Logger::log('Delivery via Diaspora transport layer was successful with status ' . $curlResult);
                                return $curlResult;
                        }
                }
@@ -1188,7 +1189,7 @@ class DFRN
                $rino = Config::get('system', 'rino_encrypt');
                $rino = intval($rino);
 
-               logger("Local rino version: ". $rino, LOGGER_DEBUG);
+               Logger::log("Local rino version: ". $rino, Logger::DEBUG);
 
                $ssl_val = intval(Config::get('system', 'ssl_policy'));
                $ssl_policy = '';
@@ -1208,7 +1209,7 @@ class DFRN
 
                $url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino='.$rino : '');
 
-               logger('dfrn_deliver: ' . $url);
+               Logger::log('dfrn_deliver: ' . $url);
 
                $curlResult = Network::curl($url);
 
@@ -1225,7 +1226,7 @@ class DFRN
                        return -3; // timed out
                }
 
-               logger('dfrn_deliver: ' . $xml, LOGGER_DATA);
+               Logger::log('dfrn_deliver: ' . $xml, Logger::DATA);
 
                if (empty($xml)) {
                        Contact::markForArchival($contact);
@@ -1233,8 +1234,8 @@ class DFRN
                }
 
                if (strpos($xml, '<?xml') === false) {
-                       logger('dfrn_deliver: no valid XML returned');
-                       logger('dfrn_deliver: returned XML: ' . $xml, LOGGER_DATA);
+                       Logger::log('dfrn_deliver: no valid XML returned');
+                       Logger::log('dfrn_deliver: returned XML: ' . $xml, Logger::DATA);
                        Contact::markForArchival($contact);
                        return 3;
                }
@@ -1261,7 +1262,7 @@ class DFRN
                $rino_remote_version = intval($res->rino);
                $page         = (($owner['page-flags'] == Contact::PAGE_COMMUNITY) ? 1 : 0);
 
-               logger("Remote rino version: ".$rino_remote_version." for ".$contact["url"], LOGGER_DEBUG);
+               Logger::log("Remote rino version: ".$rino_remote_version." for ".$contact["url"], Logger::DEBUG);
 
                if ($owner['page-flags'] == Contact::PAGE_PRVGROUP) {
                        $page = 2;
@@ -1297,7 +1298,7 @@ class DFRN
                }
 
                if ($final_dfrn_id != $orig_id) {
-                       logger('dfrn_deliver: wrong dfrn_id.');
+                       Logger::log('dfrn_deliver: wrong dfrn_id.');
                        // did not decode properly - cannot trust this site
                        Contact::markForArchival($contact);
                        return 3;
@@ -1325,7 +1326,7 @@ class DFRN
 
 
                if ($rino > 0 && $rino_remote_version > 0 && (! $dissolve)) {
-                       logger('rino version: '. $rino_remote_version);
+                       Logger::log('rino version: '. $rino_remote_version);
 
                        switch ($rino_remote_version) {
                                case 1:
@@ -1334,7 +1335,7 @@ class DFRN
                                        break;
 
                                default:
-                                       logger("rino: invalid requested version '$rino_remote_version'");
+                                       Logger::log("rino: invalid requested version '$rino_remote_version'");
                                        Contact::markForArchival($contact);
                                        return -8;
                        }
@@ -1359,19 +1360,19 @@ class DFRN
                                }
                        }
 
-                       logger('md5 rawkey ' . md5($postvars['key']));
+                       Logger::log('md5 rawkey ' . md5($postvars['key']));
 
                        $postvars['key'] = bin2hex($postvars['key']);
                }
 
 
-               logger('dfrn_deliver: ' . "SENDING: " . print_r($postvars, true), LOGGER_DATA);
+               Logger::log('dfrn_deliver: ' . "SENDING: " . print_r($postvars, true), Logger::DATA);
 
                $postResult = Network::post($contact['notify'], $postvars);
 
                $xml = $postResult->getBody();
 
-               logger('dfrn_deliver: ' . "RECEIVED: " . $xml, LOGGER_DATA);
+               Logger::log('dfrn_deliver: ' . "RECEIVED: " . $xml, Logger::DATA);
 
                $curl_stat = $postResult->getReturnCode();
                if (empty($curl_stat) || empty($xml)) {
@@ -1385,8 +1386,8 @@ class DFRN
                }
 
                if (strpos($xml, '<?xml') === false) {
-                       logger('dfrn_deliver: phase 2: no valid XML returned');
-                       logger('dfrn_deliver: phase 2: returned XML: ' . $xml, LOGGER_DATA);
+                       Logger::log('dfrn_deliver: phase 2: no valid XML returned');
+                       Logger::log('dfrn_deliver: phase 2: returned XML: ' . $xml, Logger::DATA);
                        Contact::markForArchival($contact);
                        return 3;
                }
@@ -1404,7 +1405,7 @@ class DFRN
                }
 
                if (!empty($res->message)) {
-                       logger('Delivery returned status '.$res->status.' - '.$res->message, LOGGER_DEBUG);
+                       Logger::log('Delivery returned status '.$res->status.' - '.$res->message, Logger::DEBUG);
                }
 
                if (($res->status >= 200) && ($res->status <= 299)) {
@@ -1429,14 +1430,14 @@ class DFRN
 
                if (!$public_batch) {
                        if (empty($contact['addr'])) {
-                               logger('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.');
+                               Logger::log('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.');
                                if (Contact::updateFromProbe($contact['id'])) {
                                        $new_contact = DBA::selectFirst('contact', ['addr'], ['id' => $contact['id']]);
                                        $contact['addr'] = $new_contact['addr'];
                                }
 
                                if (empty($contact['addr'])) {
-                                       logger('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']);
+                                       Logger::log('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']);
                                        Contact::markForArchival($contact);
                                        return -21;
                                }
@@ -1444,7 +1445,7 @@ class DFRN
 
                        $fcontact = Diaspora::personByHandle($contact['addr']);
                        if (empty($fcontact)) {
-                               logger('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']);
+                               Logger::log('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']);
                                Contact::markForArchival($contact);
                                return -22;
                        }
@@ -1473,7 +1474,7 @@ class DFRN
 
                $curl_stat = $postResult->getReturnCode();
                if (empty($curl_stat) || empty($xml)) {
-                       logger('Empty answer from ' . $contact['id'] . ' - ' . $dest_url);
+                       Logger::log('Empty answer from ' . $contact['id'] . ' - ' . $dest_url);
                        Contact::markForArchival($contact);
                        return -9; // timed out
                }
@@ -1484,8 +1485,8 @@ class DFRN
                }
 
                if (strpos($xml, '<?xml') === false) {
-                       logger('No valid XML returned from ' . $contact['id'] . ' - ' . $dest_url);
-                       logger('Returned XML: ' . $xml, LOGGER_DATA);
+                       Logger::log('No valid XML returned from ' . $contact['id'] . ' - ' . $dest_url);
+                       Logger::log('Returned XML: ' . $xml, Logger::DATA);
                        Contact::markForArchival($contact);
                        return 3;
                }
@@ -1498,7 +1499,7 @@ class DFRN
                }
 
                if (!empty($res->message)) {
-                       logger('Transmit to ' . $dest_url . ' returned status '.$res->status.' - '.$res->message, LOGGER_DEBUG);
+                       Logger::log('Transmit to ' . $dest_url . ' returned status '.$res->status.' - '.$res->message, Logger::DEBUG);
                }
 
                if (($res->status >= 200) && ($res->status <= 299)) {
@@ -1525,7 +1526,7 @@ class DFRN
                        return;
                }
 
-               logger('updating birthday: ' . $birthday . ' for contact ' . $contact['id']);
+               Logger::log('updating birthday: ' . $birthday . ' for contact ' . $contact['id']);
 
                $bdtext = L10n::t('%s\'s birthday', $contact['name']);
                $bdtext2 = L10n::t('Happy Birthday %s', ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]');
@@ -1575,7 +1576,7 @@ class DFRN
                        $author["network"] = $contact_old["network"];
                } else {
                        if (!$onlyfetch) {
-                               logger("Contact ".$author["link"]." wasn't found for user ".$importer["importer_uid"]." XML: ".$xml, LOGGER_DEBUG);
+                               Logger::log("Contact ".$author["link"]." wasn't found for user ".$importer["importer_uid"]." XML: ".$xml, Logger::DEBUG);
                        }
 
                        $author["contact-unknown"] = true;
@@ -1624,11 +1625,11 @@ class DFRN
                }
 
                if (empty($author['avatar'])) {
-                       logger('Empty author: ' . $xml);
+                       Logger::log('Empty author: ' . $xml);
                }
 
                if (DBA::isResult($contact_old) && !$onlyfetch) {
-                       logger("Check if contact details for contact " . $contact_old["id"] . " (" . $contact_old["nick"] . ") have to be updated.", LOGGER_DEBUG);
+                       Logger::log("Check if contact details for contact " . $contact_old["id"] . " (" . $contact_old["nick"] . ") have to be updated.", Logger::DEBUG);
 
                        $poco = ["url" => $contact_old["url"]];
 
@@ -1689,7 +1690,7 @@ class DFRN
                        // If the "hide" element is present then the profile isn't searchable.
                        $hide = intval(XML::getFirstNodeValue($xpath, $element . "/dfrn:hide/text()", $context) == "true");
 
-                       logger("Hidden status for contact " . $contact_old["url"] . ": " . $hide, LOGGER_DEBUG);
+                       Logger::log("Hidden status for contact " . $contact_old["url"] . ": " . $hide, Logger::DEBUG);
 
                        // If the contact isn't searchable then set the contact to "hidden".
                        // Problem: This can be manually overridden by the user.
@@ -1761,20 +1762,20 @@ class DFRN
                                $contact[$field] = DateTimeFormat::utc($contact[$field]);
 
                                if (strtotime($contact[$field]) > strtotime($contact_old[$field])) {
-                                       logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $contact_old[$field] . "'", LOGGER_DEBUG);
+                                       Logger::log("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $contact_old[$field] . "'", Logger::DEBUG);
                                        $update = true;
                                }
                        }
 
                        foreach ($fields as $field => $data) {
                                if ($contact[$field] != $contact_old[$field]) {
-                                       logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $contact_old[$field] . "'", LOGGER_DEBUG);
+                                       Logger::log("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $contact_old[$field] . "'", Logger::DEBUG);
                                        $update = true;
                                }
                        }
 
                        if ($update) {
-                               logger("Update contact data for contact " . $contact["id"] . " (" . $contact["nick"] . ")", LOGGER_DEBUG);
+                               Logger::log("Update contact data for contact " . $contact["id"] . " (" . $contact["nick"] . ")", Logger::DEBUG);
 
                                q(
                                        "UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s',
@@ -1881,7 +1882,7 @@ class DFRN
         */
        private static function processMail($xpath, $mail, $importer)
        {
-               logger("Processing mails");
+               Logger::log("Processing mails");
 
                /// @TODO Rewrite this to one statement
                $msg = [];
@@ -1921,7 +1922,7 @@ class DFRN
 
                notification($notif_params);
 
-               logger("Mail is processed, notification was sent.");
+               Logger::log("Mail is processed, notification was sent.");
        }
 
        /**
@@ -1937,7 +1938,7 @@ class DFRN
        {
                $a = get_app();
 
-               logger("Processing suggestions");
+               Logger::log("Processing suggestions");
 
                /// @TODO Rewrite this to one statement
                $suggest = [];
@@ -2053,7 +2054,7 @@ class DFRN
         */
        private static function processRelocation($xpath, $relocation, $importer)
        {
-               logger("Processing relocations");
+               Logger::log("Processing relocations");
 
                /// @TODO Rewrite this to one statement
                $relocate = [];
@@ -2088,7 +2089,7 @@ class DFRN
                );
 
                if (!DBA::isResult($r)) {
-                       logger("Query failed to execute, no result returned in " . __FUNCTION__);
+                       Logger::log("Query failed to execute, no result returned in " . __FUNCTION__);
                        return false;
                }
 
@@ -2115,7 +2116,7 @@ class DFRN
 
                Contact::updateAvatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
 
-               logger('Contacts are updated.');
+               Logger::log('Contacts are updated.');
 
                /// @TODO
                /// merge with current record, current contents have priority
@@ -2174,7 +2175,7 @@ class DFRN
                        if ($importer["page-flags"] == Contact::PAGE_COMMUNITY || $importer["page-flags"] == Contact::PAGE_PRVGROUP) {
                                $sql_extra = "";
                                $community = true;
-                               logger("possible community action");
+                               Logger::log("possible community action");
                        } else {
                                $sql_extra = " AND `contact`.`self` AND `item`.`wall` ";
                        }
@@ -2211,7 +2212,7 @@ class DFRN
                         */
                        if ($is_a_remote_action && $community && (!$r[0]["forum_mode"]) && (!$r[0]["wall"])) {
                                $is_a_remote_action = false;
-                               logger("not a community action");
+                               Logger::log("not a community action");
                        }
 
                        if ($is_a_remote_action) {
@@ -2298,7 +2299,7 @@ class DFRN
         */
        private static function processVerbs($entrytype, $importer, &$item, &$is_like)
        {
-               logger("Process verb ".$item["verb"]." and object-type ".$item["object-type"]." for entrytype ".$entrytype, LOGGER_DEBUG);
+               Logger::log("Process verb ".$item["verb"]." and object-type ".$item["object-type"]." for entrytype ".$entrytype, Logger::DEBUG);
 
                if (($entrytype == DFRN::TOP_LEVEL)) {
                        // The filling of the the "contact" variable is done for legcy reasons
@@ -2310,22 +2311,22 @@ class DFRN
                        // Big question: Do we need these functions? They were part of the "consume_feed" function.
                        // This function once was responsible for DFRN and OStatus.
                        if (activity_match($item["verb"], ACTIVITY_FOLLOW)) {
-                               logger("New follower");
+                               Logger::log("New follower");
                                Contact::addRelationship($importer, $contact, $item, $nickname);
                                return false;
                        }
                        if (activity_match($item["verb"], ACTIVITY_UNFOLLOW)) {
-                               logger("Lost follower");
+                               Logger::log("Lost follower");
                                Contact::removeFollower($importer, $contact, $item);
                                return false;
                        }
                        if (activity_match($item["verb"], ACTIVITY_REQ_FRIEND)) {
-                               logger("New friend request");
+                               Logger::log("New friend request");
                                Contact::addRelationship($importer, $contact, $item, $nickname, true);
                                return false;
                        }
                        if (activity_match($item["verb"], ACTIVITY_UNFRIEND)) {
-                               logger("Lost sharer");
+                               Logger::log("Lost sharer");
                                Contact::removeSharer($importer, $contact, $item);
                                return false;
                        }
@@ -2369,7 +2370,7 @@ class DFRN
                                        $item_tag = Item::selectFirst(['id', 'tag'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]);
 
                                        if (!DBA::isResult($item_tag)) {
-                                               logger("Query failed to execute, no result returned in " . __FUNCTION__);
+                                               Logger::log("Query failed to execute, no result returned in " . __FUNCTION__);
                                                return false;
                                        }
 
@@ -2445,7 +2446,7 @@ class DFRN
         */
        private static function processEntry($header, $xpath, $entry, $importer, $xml)
        {
-               logger("Processing entries");
+               Logger::log("Processing entries");
 
                $item = $header;
 
@@ -2463,7 +2464,7 @@ class DFRN
                );
                // Is there an existing item?
                if (DBA::isResult($current) && !self::isEditedTimestampNewer($current, $item)) {
-                       logger("Item ".$item["uri"]." (".$item['edited'].") already existed.", LOGGER_DEBUG);
+                       Logger::log("Item ".$item["uri"]." (".$item['edited'].") already existed.", Logger::DEBUG);
                        return;
                }
 
@@ -2671,10 +2672,10 @@ class DFRN
 
                        // Is it an event?
                        if (($item["object-type"] == ACTIVITY_OBJ_EVENT) && !$owner_unknown) {
-                               logger("Item ".$item["uri"]." seems to contain an event.", LOGGER_DEBUG);
+                               Logger::log("Item ".$item["uri"]." seems to contain an event.", Logger::DEBUG);
                                $ev = Event::fromBBCode($item["body"]);
                                if ((x($ev, "desc") || x($ev, "summary")) && x($ev, "start")) {
-                                       logger("Event in item ".$item["uri"]." was found.", LOGGER_DEBUG);
+                                       Logger::log("Event in item ".$item["uri"]." was found.", Logger::DEBUG);
                                        $ev["cid"]     = $importer["id"];
                                        $ev["uid"]     = $importer["importer_uid"];
                                        $ev["uri"]     = $item["uri"];
@@ -2690,20 +2691,20 @@ class DFRN
                                        }
 
                                        $event_id = Event::store($ev);
-                                       logger("Event ".$event_id." was stored", LOGGER_DEBUG);
+                                       Logger::log("Event ".$event_id." was stored", Logger::DEBUG);
                                        return;
                                }
                        }
                }
 
                if (!self::processVerbs($entrytype, $importer, $item, $is_like)) {
-                       logger("Exiting because 'processVerbs' told us so", LOGGER_DEBUG);
+                       Logger::log("Exiting because 'processVerbs' told us so", Logger::DEBUG);
                        return;
                }
 
                // This check is done here to be able to receive connection requests in "processVerbs"
                if (($entrytype == DFRN::TOP_LEVEL) && $owner_unknown) {
-                       logger("Item won't be stored because user " . $importer["importer_uid"] . " doesn't follow " . $item["owner-link"] . ".", LOGGER_DEBUG);
+                       Logger::log("Item won't be stored because user " . $importer["importer_uid"] . " doesn't follow " . $item["owner-link"] . ".", Logger::DEBUG);
                        return;
                }
 
@@ -2711,9 +2712,9 @@ class DFRN
                // Update content if 'updated' changes
                if (DBA::isResult($current)) {
                        if (self::updateContent($current, $item, $importer, $entrytype)) {
-                               logger("Item ".$item["uri"]." was updated.", LOGGER_DEBUG);
+                               Logger::log("Item ".$item["uri"]." was updated.", Logger::DEBUG);
                        } else {
-                               logger("Item " . $item["uri"] . " already existed.", LOGGER_DEBUG);
+                               Logger::log("Item " . $item["uri"] . " already existed.", Logger::DEBUG);
                        }
                        return;
                }
@@ -2723,7 +2724,7 @@ class DFRN
                        $parent = 0;
 
                        if ($posted_id) {
-                               logger("Reply from contact ".$item["contact-id"]." was stored with id ".$posted_id, LOGGER_DEBUG);
+                               Logger::log("Reply from contact ".$item["contact-id"]." was stored with id ".$posted_id, Logger::DEBUG);
 
                                if ($item['uid'] == 0) {
                                        Item::distribute($posted_id);
@@ -2733,7 +2734,7 @@ class DFRN
                        }
                } else { // $entrytype == DFRN::TOP_LEVEL
                        if (($importer["uid"] == 0) && ($importer["importer_uid"] != 0)) {
-                               logger("Contact ".$importer["id"]." isn't known to user ".$importer["importer_uid"].". The post will be ignored.", LOGGER_DEBUG);
+                               Logger::log("Contact ".$importer["id"]." isn't known to user ".$importer["importer_uid"].". The post will be ignored.", Logger::DEBUG);
                                return;
                        }
                        if (!link_compare($item["owner-link"], $importer["url"])) {
@@ -2743,13 +2744,13 @@ class DFRN
                                 * the tgroup delivery code called from Item::insert will correct it if it's a forum,
                                 * but we're going to unconditionally correct it here so that the post will always be owned by our contact.
                                 */
-                               logger('Correcting item owner.', LOGGER_DEBUG);
+                               Logger::log('Correcting item owner.', Logger::DEBUG);
                                $item["owner-link"] = $importer["url"];
                                $item["owner-id"] = Contact::getIdForURL($importer["url"], 0);
                        }
 
                        if (($importer["rel"] == Contact::FOLLOWER) && (!self::tgroupCheck($importer["importer_uid"], $item))) {
-                               logger("Contact ".$importer["id"]." is only follower and tgroup check was negative.", LOGGER_DEBUG);
+                               Logger::log("Contact ".$importer["id"]." is only follower and tgroup check was negative.", Logger::DEBUG);
                                return;
                        }
 
@@ -2763,7 +2764,7 @@ class DFRN
                                $posted_id = $notify;
                        }
 
-                       logger("Item was stored with id ".$posted_id, LOGGER_DEBUG);
+                       Logger::log("Item was stored with id ".$posted_id, Logger::DEBUG);
 
                        if ($item['uid'] == 0) {
                                Item::distribute($posted_id);
@@ -2786,7 +2787,7 @@ class DFRN
         */
        private static function processDeletion($xpath, $deletion, $importer)
        {
-               logger("Processing deletions");
+               Logger::log("Processing deletions");
                $uri = null;
 
                foreach ($deletion->attributes as $attributes) {
@@ -2802,18 +2803,18 @@ class DFRN
                $condition = ['uri' => $uri, 'uid' => $importer["importer_uid"]];
                $item = Item::selectFirst(['id', 'parent', 'contact-id', 'file', 'deleted'], $condition);
                if (!DBA::isResult($item)) {
-                       logger("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " wasn't found.", LOGGER_DEBUG);
+                       Logger::log("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " wasn't found.", Logger::DEBUG);
                        return;
                }
 
                if (strstr($item['file'], '[')) {
-                       logger("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " is filed. So it won't be deleted.", LOGGER_DEBUG);
+                       Logger::log("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " is filed. So it won't be deleted.", Logger::DEBUG);
                        return;
                }
 
                // When it is a starting post it has to belong to the person that wants to delete it
                if (($item['id'] == $item['parent']) && ($item['contact-id'] != $importer["id"])) {
-                       logger("Item with uri " . $uri . " don't belong to contact " . $importer["id"] . " - ignoring deletion.", LOGGER_DEBUG);
+                       Logger::log("Item with uri " . $uri . " don't belong to contact " . $importer["id"] . " - ignoring deletion.", Logger::DEBUG);
                        return;
                }
 
@@ -2821,7 +2822,7 @@ class DFRN
                if (($item['id'] != $item['parent']) && ($item['contact-id'] != $importer["id"])) {
                        $condition = ['id' => $item['parent'], 'contact-id' => $importer["id"]];
                        if (!Item::exists($condition)) {
-                               logger("Item with uri " . $uri . " wasn't found or mustn't be deleted by contact " . $importer["id"] . " - ignoring deletion.", LOGGER_DEBUG);
+                               Logger::log("Item with uri " . $uri . " wasn't found or mustn't be deleted by contact " . $importer["id"] . " - ignoring deletion.", Logger::DEBUG);
                                return;
                        }
                }
@@ -2830,7 +2831,7 @@ class DFRN
                        return;
                }
 
-               logger('deleting item '.$item['id'].' uri='.$uri, LOGGER_DEBUG);
+               Logger::log('deleting item '.$item['id'].' uri='.$uri, Logger::DEBUG);
 
                Item::delete(['id' => $item['id']]);
        }
@@ -2884,7 +2885,7 @@ class DFRN
                        self::fetchauthor($xpath, $doc->firstChild, $importer, "dfrn:owner", false, $xml);
                }
 
-               logger("Import DFRN message for user " . $importer["importer_uid"] . " from contact " . $importer["id"], LOGGER_DEBUG);
+               Logger::log("Import DFRN message for user " . $importer["importer_uid"] . " from contact " . $importer["id"], Logger::DEBUG);
 
                // is it a public forum? Private forums aren't exposed with this method
                $forum = intval(XML::getFirstNodeValue($xpath, "/atom:feed/dfrn:community/text()"));
@@ -2950,7 +2951,7 @@ class DFRN
                                self::processEntry($header, $xpath, $entry, $importer, $xml);
                        }
                }
-               logger("Import done for user " . $importer["importer_uid"] . " from contact " . $importer["id"], LOGGER_DEBUG);
+               Logger::log("Import done for user " . $importer["importer_uid"] . " from contact " . $importer["id"], Logger::DEBUG);
                return 200;
        }
 
@@ -3035,7 +3036,7 @@ class DFRN
 
                        $url = curPageURL();
 
-                       logger('auto_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
+                       Logger::log('auto_redir: ' . $r[0]['name'] . ' ' . $sec, Logger::DEBUG);
                        $dest = (($url) ? '&destination_url=' . $url : '');
                        System::externalRedirect($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
                                . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest);
@@ -3090,7 +3091,7 @@ class DFRN
                        foreach ($matches as $mtch) {
                                if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
                                        $mention = true;
-                                       logger('mention found: ' . $mtch[2]);
+                                       Logger::log('mention found: ' . $mtch[2]);
                                }
                        }
                }
index e532b565df7a2fc5ca31e37820da02b51befd8b4..66a19d839ca7f7572d3ebea76d8d328eacb07e9a 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Content\Text\Markdown;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -260,7 +261,7 @@ class Diaspora
 
                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);
+                       Logger::log("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) {
@@ -283,14 +284,14 @@ class Diaspora
                $basedom = XML::parseString($envelope);
 
                if (!is_object($basedom)) {
-                       logger("Envelope is no XML file");
+                       Logger::log("Envelope is no XML file");
                        return false;
                }
 
                $children = $basedom->children('http://salmon-protocol.org/ns/magic-env');
 
                if (sizeof($children) == 0) {
-                       logger("XML has no children");
+                       Logger::log("XML has no children");
                        return false;
                }
 
@@ -315,19 +316,19 @@ class Diaspora
                $signable_data = $msg.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg);
 
                if ($handle == '') {
-                       logger('No author could be decoded. Discarding. Message: ' . $envelope);
+                       Logger::log('No author could be decoded. Discarding. Message: ' . $envelope);
                        return false;
                }
 
                $key = self::key($handle);
                if ($key == '') {
-                       logger("Couldn't get a key for handle " . $handle . ". Discarding.");
+                       Logger::log("Couldn't get a key for handle " . $handle . ". Discarding.");
                        return false;
                }
 
                $verify = Crypto::rsaVerify($signable_data, $sig, $key);
                if (!$verify) {
-                       logger('Message from ' . $handle . ' did not verify. Discarding.');
+                       Logger::log('Message from ' . $handle . ' did not verify. Discarding.');
                        return false;
                }
 
@@ -388,7 +389,7 @@ class Diaspora
                        $j_outer_key_bundle = json_decode($outer_key_bundle);
 
                        if (!is_object($j_outer_key_bundle)) {
-                               logger('Outer Salmon did not verify. Discarding.');
+                               Logger::log('Outer Salmon did not verify. Discarding.');
                                if ($no_exit) {
                                        return false;
                                } else {
@@ -407,7 +408,7 @@ class Diaspora
                $basedom = XML::parseString($xml);
 
                if (!is_object($basedom)) {
-                       logger('Received data does not seem to be an XML. Discarding. '.$xml);
+                       Logger::log('Received data does not seem to be an XML. Discarding. '.$xml);
                        if ($no_exit) {
                                return false;
                        } else {
@@ -433,7 +434,7 @@ class Diaspora
                $key_id = $base->sig[0]->attributes()->key_id[0];
                $author_addr = base64_decode($key_id);
                if ($author_addr == '') {
-                       logger('No author could be decoded. Discarding. Message: ' . $xml);
+                       Logger::log('No author could be decoded. Discarding. Message: ' . $xml);
                        if ($no_exit) {
                                return false;
                        } else {
@@ -443,7 +444,7 @@ class Diaspora
 
                $key = self::key($author_addr);
                if ($key == '') {
-                       logger("Couldn't get a key for handle " . $author_addr . ". Discarding.");
+                       Logger::log("Couldn't get a key for handle " . $author_addr . ". Discarding.");
                        if ($no_exit) {
                                return false;
                        } else {
@@ -453,7 +454,7 @@ class Diaspora
 
                $verify = Crypto::rsaVerify($signed_data, $signature, $key);
                if (!$verify) {
-                       logger('Message did not verify. Discarding.');
+                       Logger::log('Message did not verify. Discarding.');
                        if ($no_exit) {
                                return false;
                        } else {
@@ -483,7 +484,7 @@ class Diaspora
                $basedom = XML::parseString($xml);
 
                if (!is_object($basedom)) {
-                       logger("XML is not parseable.");
+                       Logger::log("XML is not parseable.");
                        return false;
                }
                $children = $basedom->children('https://joindiaspora.com/protocol');
@@ -497,7 +498,7 @@ class Diaspora
                } else {
                        // This happens with posts from a relais
                        if (!$importer) {
-                               logger("This is no private post in the old format", LOGGER_DEBUG);
+                               Logger::log("This is no private post in the old format", Logger::DEBUG);
                                return false;
                        }
 
@@ -516,7 +517,7 @@ class Diaspora
 
                        $decrypted = self::aesDecrypt($outer_key, $outer_iv, $ciphertext);
 
-                       logger('decrypted: '.$decrypted, LOGGER_DEBUG);
+                       Logger::log('decrypted: '.$decrypted, Logger::DEBUG);
                        $idom = XML::parseString($decrypted);
 
                        $inner_iv = base64_decode($idom->iv);
@@ -539,7 +540,7 @@ class Diaspora
                }
 
                if (!$base) {
-                       logger('unable to locate salmon data in xml');
+                       Logger::log('unable to locate salmon data in xml');
                        System::httpExit(400);
                }
 
@@ -577,29 +578,29 @@ class Diaspora
                }
 
                if (!$author_link) {
-                       logger('Could not retrieve author URI.');
+                       Logger::log('Could not retrieve author URI.');
                        System::httpExit(400);
                }
                // Once we have the author URI, go to the web and try to find their public key
                // (first this will look it up locally if it is in the fcontact cache)
                // This will also convert diaspora public key from pkcs#1 to pkcs#8
 
-               logger('Fetching key for '.$author_link);
+               Logger::log('Fetching key for '.$author_link);
                $key = self::key($author_link);
 
                if (!$key) {
-                       logger('Could not retrieve author key.');
+                       Logger::log('Could not retrieve author key.');
                        System::httpExit(400);
                }
 
                $verify = Crypto::rsaVerify($signed_data, $signature, $key);
 
                if (!$verify) {
-                       logger('Message did not verify. Discarding.');
+                       Logger::log('Message did not verify. Discarding.');
                        System::httpExit(400);
                }
 
-               logger('Message verified.');
+               Logger::log('Message verified.');
 
                return ['message' => (string)$inner_decrypted,
                                'author' => unxmlify($author_link),
@@ -618,12 +619,12 @@ class Diaspora
        {
                $enabled = intval(Config::get("system", "diaspora_enabled"));
                if (!$enabled) {
-                       logger("diaspora is disabled");
+                       Logger::log("diaspora is disabled");
                        return false;
                }
 
                if (!($fields = self::validPosting($msg))) {
-                       logger("Invalid posting");
+                       Logger::log("Invalid posting");
                        return false;
                }
 
@@ -652,7 +653,7 @@ class Diaspora
                if (is_null($fields)) {
                        $private = true;
                        if (!($fields = self::validPosting($msg))) {
-                               logger("Invalid posting");
+                               Logger::log("Invalid posting");
                                return false;
                        }
                } else {
@@ -661,12 +662,12 @@ class Diaspora
 
                $type = $fields->getName();
 
-               logger("Received message type ".$type." from ".$sender." for user ".$importer["uid"], LOGGER_DEBUG);
+               Logger::log("Received message type ".$type." from ".$sender." for user ".$importer["uid"], Logger::DEBUG);
 
                switch ($type) {
                        case "account_migration":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveAccountMigration($importer, $fields);
@@ -679,14 +680,14 @@ class Diaspora
 
                        case "contact":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveContactRequest($importer, $fields);
 
                        case "conversation":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveConversation($importer, $msg, $fields);
@@ -696,14 +697,14 @@ class Diaspora
 
                        case "message":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveMessage($importer, $fields);
 
                        case "participation":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveParticipation($importer, $fields);
@@ -716,7 +717,7 @@ class Diaspora
 
                        case "profile":
                                if (!$private) {
-                                       logger('Message with type ' . $type . ' is not private, quitting.');
+                                       Logger::log('Message with type ' . $type . ' is not private, quitting.');
                                        return false;
                                }
                                return self::receiveProfile($importer, $fields);
@@ -731,7 +732,7 @@ class Diaspora
                                return self::receiveStatusMessage($importer, $fields, $msg["message"]);
 
                        default:
-                               logger("Unknown message type ".$type);
+                               Logger::log("Unknown message type ".$type);
                                return false;
                }
 
@@ -753,7 +754,7 @@ class Diaspora
                $data = XML::parseString($msg["message"]);
 
                if (!is_object($data)) {
-                       logger("No valid XML ".$msg["message"], LOGGER_DEBUG);
+                       Logger::log("No valid XML ".$msg["message"], Logger::DEBUG);
                        return false;
                }
 
@@ -771,7 +772,7 @@ class Diaspora
                $type = $element->getName();
                $orig_type = $type;
 
-               logger("Got message type ".$type.": ".$msg["message"], LOGGER_DATA);
+               Logger::log("Got message type ".$type.": ".$msg["message"], Logger::DATA);
 
                // All retractions are handled identically from now on.
                // In the new version there will only be "retraction".
@@ -847,7 +848,7 @@ class Diaspora
                // This is something that shouldn't happen at all.
                if (in_array($type, ["status_message", "reshare", "profile"])) {
                        if ($msg["author"] != $fields->author) {
-                               logger("Message handle is not the same as envelope sender. Quitting this message.");
+                               Logger::log("Message handle is not the same as envelope sender. Quitting this message.");
                                return false;
                        }
                }
@@ -858,31 +859,31 @@ class Diaspora
                }
                // No author_signature? This is a must, so we quit.
                if (!isset($author_signature)) {
-                       logger("No author signature for type ".$type." - Message: ".$msg["message"], LOGGER_DEBUG);
+                       Logger::log("No author signature for type ".$type." - Message: ".$msg["message"], Logger::DEBUG);
                        return false;
                }
 
                if (isset($parent_author_signature)) {
                        $key = self::key($msg["author"]);
                        if (empty($key)) {
-                               logger("No key found for parent author ".$msg["author"], LOGGER_DEBUG);
+                               Logger::log("No key found for parent author ".$msg["author"], Logger::DEBUG);
                                return false;
                        }
 
                        if (!Crypto::rsaVerify($signed_data, $parent_author_signature, $key, "sha256")) {
-                               logger("No valid parent author signature for parent author ".$msg["author"]. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$parent_author_signature, LOGGER_DEBUG);
+                               Logger::log("No valid parent author signature for parent author ".$msg["author"]. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$parent_author_signature, Logger::DEBUG);
                                return false;
                        }
                }
 
                $key = self::key($fields->author);
                if (empty($key)) {
-                       logger("No key found for author ".$fields->author, LOGGER_DEBUG);
+                       Logger::log("No key found for author ".$fields->author, Logger::DEBUG);
                        return false;
                }
 
                if (!Crypto::rsaVerify($signed_data, $author_signature, $key, "sha256")) {
-                       logger("No valid author signature for author ".$fields->author. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$author_signature, LOGGER_DEBUG);
+                       Logger::log("No valid author signature for author ".$fields->author. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$author_signature, Logger::DEBUG);
                        return false;
                } else {
                        return $fields;
@@ -900,7 +901,7 @@ class Diaspora
        {
                $handle = strval($handle);
 
-               logger("Fetching diaspora key for: ".$handle);
+               Logger::log("Fetching diaspora key for: ".$handle);
 
                $r = self::personByHandle($handle);
                if ($r) {
@@ -923,7 +924,7 @@ class Diaspora
 
                $person = DBA::selectFirst('fcontact', [], ['network' => Protocol::DIASPORA, 'addr' => $handle]);
                if (DBA::isResult($person)) {
-                       logger("In cache " . print_r($person, true), LOGGER_DEBUG);
+                       Logger::log("In cache " . print_r($person, true), Logger::DEBUG);
 
                        // update record occasionally so it doesn't get stale
                        $d = strtotime($person["updated"]." +00:00");
@@ -937,7 +938,7 @@ class Diaspora
                }
 
                if (!DBA::isResult($person) || $update) {
-                       logger("create or refresh", LOGGER_DEBUG);
+                       Logger::log("create or refresh", Logger::DEBUG);
                        $r = Probe::uri($handle, Protocol::DIASPORA);
 
                        // Note that Friendica contacts will return a "Diaspora person"
@@ -989,7 +990,7 @@ class Diaspora
        {
                $handle = false;
 
-               logger("contact id is ".$contact_id." - pcontact id is ".$pcontact_id, LOGGER_DEBUG);
+               Logger::log("contact id is ".$contact_id." - pcontact id is ".$pcontact_id, Logger::DEBUG);
 
                if ($pcontact_id != 0) {
                        $contact = DBA::selectFirst('contact', ['addr'], ['id' => $pcontact_id]);
@@ -1007,7 +1008,7 @@ class Diaspora
                if (DBA::isResult($r)) {
                        $contact = $r[0];
 
-                       logger("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], LOGGER_DEBUG);
+                       Logger::log("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], Logger::DEBUG);
 
                        if ($contact['addr'] != "") {
                                $handle = $contact['addr'];
@@ -1033,7 +1034,7 @@ class Diaspora
         */
        public static function urlFromContactGuid($fcontact_guid)
        {
-               logger("fcontact guid is ".$fcontact_guid, LOGGER_DEBUG);
+               Logger::log("fcontact guid is ".$fcontact_guid, Logger::DEBUG);
 
                $r = q(
                        "SELECT `url` FROM `fcontact` WHERE `url` != '' AND `network` = '%s' AND `guid` = '%s'",
@@ -1068,14 +1069,14 @@ class Diaspora
                }
 
                if (!$cid) {
-                       logger("Haven't found a contact for user " . $uid . " and handle " . $handle, LOGGER_DEBUG);
+                       Logger::log("Haven't found a contact for user " . $uid . " and handle " . $handle, Logger::DEBUG);
                        return false;
                }
 
                $contact = DBA::selectFirst('contact', [], ['id' => $cid]);
                if (!DBA::isResult($contact)) {
                        // This here shouldn't happen at all
-                       logger("Haven't found a contact for user " . $uid . " and handle " . $handle, LOGGER_DEBUG);
+                       Logger::log("Haven't found a contact for user " . $uid . " and handle " . $handle, Logger::DEBUG);
                        return false;
                }
 
@@ -1108,7 +1109,7 @@ class Diaspora
                //      );
                //
                //      $contact["rel"] = Contact::FRIEND;
-               //      logger("defining user ".$contact["nick"]." as friend");
+               //      Logger::log("defining user ".$contact["nick"]." as friend");
                //}
 
                // We don't seem to like that person
@@ -1145,7 +1146,7 @@ class Diaspora
        {
                $contact = self::contactByHandle($importer["uid"], $handle);
                if (!$contact) {
-                       logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found");
+                       Logger::log("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found");
                        // If a contact isn't found, we accept it anyway if it is a comment
                        if ($is_comment && ($importer["uid"] != 0)) {
                                return self::contactByHandle(0, $handle);
@@ -1157,7 +1158,7 @@ class Diaspora
                }
 
                if (!self::postAllow($importer, $contact, $is_comment)) {
-                       logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]);
+                       Logger::log("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]);
                        return false;
                }
                return $contact;
@@ -1175,7 +1176,7 @@ class Diaspora
        {
                $item = Item::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
                if (DBA::isResult($item)) {
-                       logger("message ".$guid." already exists for user ".$uid);
+                       Logger::log("message ".$guid." already exists for user ".$uid);
                        return $item["id"];
                }
 
@@ -1277,7 +1278,7 @@ class Diaspora
 
                $server = $serverparts["scheme"]."://".$serverparts["host"];
 
-               logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG);
+               Logger::log("Trying to fetch item ".$guid." from ".$server, Logger::DEBUG);
 
                $msg = self::message($guid, $server);
 
@@ -1285,7 +1286,7 @@ class Diaspora
                        return false;
                }
 
-               logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
+               Logger::log("Successfully fetched item ".$guid." from ".$server, Logger::DEBUG);
 
                // Now call the dispatcher
                return self::dispatchPublic($msg);
@@ -1312,16 +1313,16 @@ class Diaspora
                // This will work for new Diaspora servers and Friendica servers from 3.5
                $source_url = $server."/fetch/post/".urlencode($guid);
 
-               logger("Fetch post from ".$source_url, LOGGER_DEBUG);
+               Logger::log("Fetch post from ".$source_url, Logger::DEBUG);
 
                $envelope = Network::fetchUrl($source_url);
                if ($envelope) {
-                       logger("Envelope was fetched.", LOGGER_DEBUG);
+                       Logger::log("Envelope was fetched.", Logger::DEBUG);
                        $x = self::verifyMagicEnvelope($envelope);
                        if (!$x) {
-                               logger("Envelope could not be verified.", LOGGER_DEBUG);
+                               Logger::log("Envelope could not be verified.", Logger::DEBUG);
                        } else {
-                               logger("Envelope was verified.", LOGGER_DEBUG);
+                               Logger::log("Envelope was verified.", Logger::DEBUG);
                        }
                } else {
                        $x = false;
@@ -1330,7 +1331,7 @@ class Diaspora
                // This will work for older Diaspora and Friendica servers
                if (!$x) {
                        $source_url = $server."/p/".urlencode($guid).".xml";
-                       logger("Fetch post from ".$source_url, LOGGER_DEBUG);
+                       Logger::log("Fetch post from ".$source_url, Logger::DEBUG);
 
                        $x = Network::fetchUrl($source_url);
                        if (!$x) {
@@ -1346,11 +1347,11 @@ class Diaspora
 
                if ($source_xml->post->reshare) {
                        // Reshare of a reshare - old Diaspora version
-                       logger("Message is a reshare", LOGGER_DEBUG);
+                       Logger::log("Message is a reshare", Logger::DEBUG);
                        return self::message($source_xml->post->reshare->root_guid, $server, ++$level);
                } elseif ($source_xml->getName() == "reshare") {
                        // Reshare of a reshare - new Diaspora version
-                       logger("Message is a new reshare", LOGGER_DEBUG);
+                       Logger::log("Message is a new reshare", Logger::DEBUG);
                        return self::message($source_xml->root_guid, $server, ++$level);
                }
 
@@ -1365,7 +1366,7 @@ class Diaspora
 
                // If this isn't a "status_message" then quit
                if (!$author) {
-                       logger("Message doesn't seem to be a status message", LOGGER_DEBUG);
+                       Logger::log("Message doesn't seem to be a status message", Logger::DEBUG);
                        return false;
                }
 
@@ -1404,17 +1405,17 @@ class Diaspora
                        }
 
                        if ($result) {
-                               logger("Fetched missing item ".$guid." - result: ".$result, LOGGER_DEBUG);
+                               Logger::log("Fetched missing item ".$guid." - result: ".$result, Logger::DEBUG);
 
                                $item = Item::selectFirst($fields, $condition);
                        }
                }
 
                if (!DBA::isResult($item)) {
-                       logger("parent item not found: parent: ".$guid." - user: ".$uid);
+                       Logger::log("parent item not found: parent: ".$guid." - user: ".$uid);
                        return false;
                } else {
-                       logger("parent item found: parent: ".$guid." - user: ".$uid);
+                       Logger::log("parent item found: parent: ".$guid." - user: ".$uid);
                        return $item;
                }
        }
@@ -1510,17 +1511,17 @@ class Diaspora
 
                $contact = self::contactByHandle($importer["uid"], $old_handle);
                if (!$contact) {
-                       logger("cannot find contact for sender: ".$old_handle." and user ".$importer["uid"]);
+                       Logger::log("cannot find contact for sender: ".$old_handle." and user ".$importer["uid"]);
                        return false;
                }
 
-               logger("Got migration for ".$old_handle.", to ".$new_handle." with user ".$importer["uid"]);
+               Logger::log("Got migration for ".$old_handle.", to ".$new_handle." with user ".$importer["uid"]);
 
                // Check signature
                $signed_text = 'AccountMigration:'.$old_handle.':'.$new_handle;
                $key = self::key($old_handle);
                if (!Crypto::rsaVerify($signed_text, $signature, $key, "sha256")) {
-                       logger('No valid signature for migration.');
+                       Logger::log('No valid signature for migration.');
                        return false;
                }
 
@@ -1530,7 +1531,7 @@ class Diaspora
                // change the technical stuff in contact and gcontact
                $data = Probe::uri($new_handle);
                if ($data['network'] == Protocol::PHANTOM) {
-                       logger('Account for '.$new_handle." couldn't be probed.");
+                       Logger::log('Account for '.$new_handle." couldn't be probed.");
                        return false;
                }
 
@@ -1550,7 +1551,7 @@ class Diaspora
 
                DBA::update('gcontact', $fields, ['addr' => $old_handle]);
 
-               logger('Contacts are updated.');
+               Logger::log('Contacts are updated.');
 
                return true;
        }
@@ -1573,7 +1574,7 @@ class Diaspora
 
                DBA::delete('gcontact', ['addr' => $author]);
 
-               logger('Removed contacts for ' . $author);
+               Logger::log('Removed contacts for ' . $author);
 
                return true;
        }
@@ -1634,7 +1635,7 @@ class Diaspora
        {
                $item = Item::selectFirst(['uid'], ['origin' => true, 'guid' => $guid]);
                if (DBA::isResult($item)) {
-                       logger("Found user ".$item['uid']." as owner of item ".$guid, LOGGER_DEBUG);
+                       Logger::log("Found user ".$item['uid']." as owner of item ".$guid, Logger::DEBUG);
                        $contact = DBA::selectFirst('contact', [], ['self' => true, 'uid' => $item['uid']]);
                        if (DBA::isResult($contact)) {
                                return $contact;
@@ -1690,7 +1691,7 @@ class Diaspora
 
                $person = self::personByHandle($author);
                if (!is_array($person)) {
-                       logger("unable to find author details");
+                       Logger::log("unable to find author details");
                        return false;
                }
 
@@ -1749,7 +1750,7 @@ class Diaspora
                }
 
                if ($message_id) {
-                       logger("Stored comment ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG);
+                       Logger::log("Stored comment ".$datarray["guid"]." with message id ".$message_id, Logger::DEBUG);
                        if ($datarray['uid'] == 0) {
                                Item::distribute($message_id, json_encode($data));
                        }
@@ -1792,7 +1793,7 @@ class Diaspora
                $msg_created_at = DateTimeFormat::utc(notags(unxmlify($mesg->created_at)));
 
                if ($msg_conversation_guid != $guid) {
-                       logger("message conversation guid does not belong to the current conversation.");
+                       Logger::log("message conversation guid does not belong to the current conversation.");
                        return false;
                }
 
@@ -1804,7 +1805,7 @@ class Diaspora
                DBA::lock('mail');
 
                if (DBA::exists('mail', ['guid' => $msg_guid, 'uid' => $importer["uid"]])) {
-                       logger("duplicate message already delivered.", LOGGER_DEBUG);
+                       Logger::log("duplicate message already delivered.", Logger::DEBUG);
                        return false;
                }
 
@@ -1869,7 +1870,7 @@ class Diaspora
                $messages = $data->message;
 
                if (!count($messages)) {
-                       logger("empty conversation");
+                       Logger::log("empty conversation");
                        return false;
                }
 
@@ -1896,7 +1897,7 @@ class Diaspora
                        }
                }
                if (!$conversation) {
-                       logger("unable to create conversation.");
+                       Logger::log("unable to create conversation.");
                        return false;
                }
 
@@ -1947,7 +1948,7 @@ class Diaspora
 
                $person = self::personByHandle($author);
                if (!is_array($person)) {
-                       logger("unable to find author details");
+                       Logger::log("unable to find author details");
                        return false;
                }
 
@@ -2008,7 +2009,7 @@ class Diaspora
                }
 
                if ($message_id) {
-                       logger("Stored like ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG);
+                       Logger::log("Stored like ".$datarray["guid"]." with message id ".$message_id, Logger::DEBUG);
                        if ($datarray['uid'] == 0) {
                                Item::distribute($message_id, json_encode($data));
                        }
@@ -2044,7 +2045,7 @@ class Diaspora
                $conversation = DBA::selectFirst('conv', [], $condition);
 
                if (!DBA::isResult($conversation)) {
-                       logger("conversation not available.");
+                       Logger::log("conversation not available.");
                        return false;
                }
 
@@ -2052,7 +2053,7 @@ class Diaspora
 
                $person = self::personByHandle($author);
                if (!$person) {
-                       logger("unable to find author details");
+                       Logger::log("unable to find author details");
                        return false;
                }
 
@@ -2063,7 +2064,7 @@ class Diaspora
                DBA::lock('mail');
 
                if (DBA::exists('mail', ['guid' => $guid, 'uid' => $importer["uid"]])) {
-                       logger("duplicate message already delivered.", LOGGER_DEBUG);
+                       Logger::log("duplicate message already delivered.", Logger::DEBUG);
                        return false;
                }
 
@@ -2107,19 +2108,19 @@ class Diaspora
 
                $contact_id = Contact::getIdForURL($author);
                if (!$contact_id) {
-                       logger('Contact not found: '.$author);
+                       Logger::log('Contact not found: '.$author);
                        return false;
                }
 
                $person = self::personByHandle($author);
                if (!is_array($person)) {
-                       logger("Person not found: ".$author);
+                       Logger::log("Person not found: ".$author);
                        return false;
                }
 
                $item = Item::selectFirst(['id'], ['guid' => $parent_guid, 'origin' => true, 'private' => false]);
                if (!DBA::isResult($item)) {
-                       logger('Item not found, no origin or private: '.$parent_guid);
+                       Logger::log('Item not found, no origin or private: '.$parent_guid);
                        return false;
                }
 
@@ -2131,7 +2132,7 @@ class Diaspora
                        $server = $author;
                }
 
-               logger('Received participation for ID: '.$item['id'].' - Contact: '.$contact_id.' - Server: '.$server, LOGGER_DEBUG);
+               Logger::log('Received participation for ID: '.$item['id'].' - Contact: '.$contact_id.' - Server: '.$server, Logger::DEBUG);
 
                if (!DBA::exists('participation', ['iid' => $item['id'], 'server' => $server])) {
                        DBA::insert('participation', ['iid' => $item['id'], 'cid' => $contact_id, 'fid' => $person['id'], 'server' => $server]);
@@ -2148,7 +2149,7 @@ class Diaspora
                        } else {
                                $cmd = $comment['self'] ? 'like' : 'comment-import';
                        }
-                       logger("Send ".$cmd." for item ".$comment['id']." to contact ".$contact_id, LOGGER_DEBUG);
+                       Logger::log("Send ".$cmd." for item ".$comment['id']." to contact ".$contact_id, Logger::DEBUG);
                        Worker::add(PRIORITY_HIGH, 'Delivery', $cmd, $comment['id'], $contact_id);
                }
                DBA::close($comments);
@@ -2274,7 +2275,7 @@ class Diaspora
 
                GContact::link($gcid, $importer["uid"], $contact["id"]);
 
-               logger("Profile of contact ".$contact["id"]." stored for user ".$importer["uid"], LOGGER_DEBUG);
+               Logger::log("Profile of contact ".$contact["id"]." stored for user ".$importer["uid"], Logger::DEBUG);
 
                return true;
        }
@@ -2336,7 +2337,7 @@ class Diaspora
                // That makes us friends.
                if ($contact) {
                        if ($following) {
-                               logger("Author ".$author." (Contact ".$contact["id"].") wants to follow us.", LOGGER_DEBUG);
+                               Logger::log("Author ".$author." (Contact ".$contact["id"].") wants to follow us.", Logger::DEBUG);
                                self::receiveRequestMakeFriend($importer, $contact);
 
                                // refetch the contact array
@@ -2347,36 +2348,36 @@ class Diaspora
                                if (in_array($contact["rel"], [Contact::FRIEND])) {
                                        $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]);
                                        if (DBA::isResult($user)) {
-                                               logger("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
+                                               Logger::log("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], Logger::DEBUG);
                                                $ret = self::sendShare($user, $contact);
                                        }
                                }
                                return true;
                        } else {
-                               logger("Author ".$author." doesn't want to follow us anymore.", LOGGER_DEBUG);
+                               Logger::log("Author ".$author." doesn't want to follow us anymore.", Logger::DEBUG);
                                Contact::removeFollower($importer, $contact);
                                return true;
                        }
                }
 
                if (!$following && $sharing && in_array($importer["page-flags"], [Contact::PAGE_SOAPBOX, Contact::PAGE_NORMAL])) {
-                       logger("Author ".$author." wants to share with us - but doesn't want to listen. Request is ignored.", LOGGER_DEBUG);
+                       Logger::log("Author ".$author." wants to share with us - but doesn't want to listen. Request is ignored.", Logger::DEBUG);
                        return false;
                } elseif (!$following && !$sharing) {
-                       logger("Author ".$author." doesn't want anything - and we don't know the author. Request is ignored.", LOGGER_DEBUG);
+                       Logger::log("Author ".$author." doesn't want anything - and we don't know the author. Request is ignored.", Logger::DEBUG);
                        return false;
                } elseif (!$following && $sharing) {
-                       logger("Author ".$author." wants to share with us.", LOGGER_DEBUG);
+                       Logger::log("Author ".$author." wants to share with us.", Logger::DEBUG);
                } elseif ($following && $sharing) {
-                       logger("Author ".$author." wants to have a bidirectional conection.", LOGGER_DEBUG);
+                       Logger::log("Author ".$author." wants to have a bidirectional conection.", Logger::DEBUG);
                } elseif ($following && !$sharing) {
-                       logger("Author ".$author." wants to listen to us.", LOGGER_DEBUG);
+                       Logger::log("Author ".$author." wants to listen to us.", Logger::DEBUG);
                }
 
                $ret = self::personByHandle($author);
 
                if (!$ret || ($ret["network"] != Protocol::DIASPORA)) {
-                       logger("Cannot resolve diaspora handle ".$author." for ".$recipient);
+                       Logger::log("Cannot resolve diaspora handle ".$author." for ".$recipient);
                        return false;
                }
 
@@ -2407,18 +2408,18 @@ class Diaspora
                $contact_record = self::contactByHandle($importer["uid"], $author);
 
                if (!$contact_record) {
-                       logger("unable to locate newly created contact record.");
+                       Logger::log("unable to locate newly created contact record.");
                        return;
                }
 
-               logger("Author ".$author." was added as contact number ".$contact_record["id"].".", LOGGER_DEBUG);
+               Logger::log("Author ".$author." was added as contact number ".$contact_record["id"].".", Logger::DEBUG);
 
                Group::addMember(User::getDefaultGroup($importer['uid'], $ret["network"]), $contact_record['id']);
 
                Contact::updateAvatar($ret["photo"], $importer['uid'], $contact_record["id"], true);
 
                if (in_array($importer["page-flags"], [Contact::PAGE_NORMAL, Contact::PAGE_PRVGROUP])) {
-                       logger("Sending intra message for author ".$author.".", LOGGER_DEBUG);
+                       Logger::log("Sending intra message for author ".$author.".", Logger::DEBUG);
 
                        $hash = random_string().(string)time();   // Generate a confirm_key
 
@@ -2436,7 +2437,7 @@ class Diaspora
                } else {
                        // automatic friend approval
 
-                       logger("Does an automatic friend approval for author ".$author.".", LOGGER_DEBUG);
+                       Logger::log("Does an automatic friend approval for author ".$author.".", Logger::DEBUG);
 
                        Contact::updateAvatar($contact_record["photo"], $importer["uid"], $contact_record["id"]);
 
@@ -2470,7 +2471,7 @@ class Diaspora
 
                        $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]);
                        if (DBA::isResult($user)) {
-                               logger("Sending share message (Relation: ".$new_relation.") to author ".$author." - Contact: ".$contact_record["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
+                               Logger::log("Sending share message (Relation: ".$new_relation.") to author ".$author." - Contact: ".$contact_record["id"]." - User: ".$importer["uid"], Logger::DEBUG);
                                $ret = self::sendShare($user, $contact_record);
 
                                // Send the profile data, maybe it weren't transmitted before
@@ -2493,7 +2494,7 @@ class Diaspora
        public static function originalItem($guid, $orig_author)
        {
                if (empty($guid)) {
-                       logger('Empty guid. Quitting.');
+                       Logger::log('Empty guid. Quitting.');
                        return false;
                }
 
@@ -2504,7 +2505,7 @@ class Diaspora
                $item = Item::selectFirst($fields, $condition);
 
                if (DBA::isResult($item)) {
-                       logger("reshared message ".$guid." already exists on system.");
+                       Logger::log("reshared message ".$guid." already exists on system.");
 
                        // Maybe it is already a reshared item?
                        // Then refetch the content, if it is a reshare from a reshare.
@@ -2527,17 +2528,17 @@ class Diaspora
 
                if (!DBA::isResult($item)) {
                        if (empty($orig_author)) {
-                               logger('Empty author for guid ' . $guid . '. Quitting.');
+                               Logger::log('Empty author for guid ' . $guid . '. Quitting.');
                                return false;
                        }
 
                        $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1);
-                       logger("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server);
+                       Logger::log("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server);
                        $stored = self::storeByGuid($guid, $server);
 
                        if (!$stored) {
                                $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
-                               logger("2nd try: reshared message ".$guid." will be fetched without SSL from the server ".$server);
+                               Logger::log("2nd try: reshared message ".$guid." will be fetched without SSL from the server ".$server);
                                $stored = self::storeByGuid($guid, $server);
                        }
 
@@ -2643,7 +2644,7 @@ class Diaspora
                self::sendParticipation($contact, $datarray);
 
                if ($message_id) {
-                       logger("Stored reshare ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG);
+                       Logger::log("Stored reshare ".$datarray["guid"]." with message id ".$message_id, Logger::DEBUG);
                        if ($datarray['uid'] == 0) {
                                Item::distribute($message_id);
                        }
@@ -2670,7 +2671,7 @@ class Diaspora
 
                $person = self::personByHandle($author);
                if (!is_array($person)) {
-                       logger("unable to find author detail for ".$author);
+                       Logger::log("unable to find author detail for ".$author);
                        return false;
                }
 
@@ -2690,13 +2691,13 @@ class Diaspora
 
                $r = Item::select($fields, $condition);
                if (!DBA::isResult($r)) {
-                       logger("Target guid ".$target_guid." was not found on this system for user ".$importer['uid'].".");
+                       Logger::log("Target guid ".$target_guid." was not found on this system for user ".$importer['uid'].".");
                        return false;
                }
 
                while ($item = Item::fetch($r)) {
                        if (strstr($item['file'], '[')) {
-                               logger("Target guid " . $target_guid . " for user " . $item['uid'] . " is filed. So it won't be deleted.", LOGGER_DEBUG);
+                               Logger::log("Target guid " . $target_guid . " for user " . $item['uid'] . " is filed. So it won't be deleted.", Logger::DEBUG);
                                continue;
                        }
 
@@ -2705,13 +2706,13 @@ class Diaspora
 
                        // Only delete it if the parent author really fits
                        if (!link_compare($parent["author-link"], $contact["url"]) && !link_compare($item["author-link"], $contact["url"])) {
-                               logger("Thread author ".$parent["author-link"]." and item author ".$item["author-link"]." don't fit to expected contact ".$contact["url"], LOGGER_DEBUG);
+                               Logger::log("Thread author ".$parent["author-link"]." and item author ".$item["author-link"]." don't fit to expected contact ".$contact["url"], Logger::DEBUG);
                                continue;
                        }
 
                        Item::delete(['id' => $item['id']]);
 
-                       logger("Deleted target ".$target_guid." (".$item["id"].") from user ".$item["uid"]." parent: ".$item["parent"], LOGGER_DEBUG);
+                       Logger::log("Deleted target ".$target_guid." (".$item["id"].") from user ".$item["uid"]." parent: ".$item["parent"], Logger::DEBUG);
                }
 
                return true;
@@ -2732,7 +2733,7 @@ class Diaspora
 
                $contact = self::contactByHandle($importer["uid"], $sender);
                if (!$contact && (in_array($target_type, ["Contact", "Person"]))) {
-                       logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]);
+                       Logger::log("cannot find contact for sender: ".$sender." and user ".$importer["uid"]);
                        return false;
                }
 
@@ -2740,7 +2741,7 @@ class Diaspora
                        $contact = [];
                }
 
-               logger("Got retraction for ".$target_type.", sender ".$sender." and user ".$importer["uid"], LOGGER_DEBUG);
+               Logger::log("Got retraction for ".$target_type.", sender ".$sender." and user ".$importer["uid"], Logger::DEBUG);
 
                switch ($target_type) {
                        case "Comment":
@@ -2756,7 +2757,7 @@ class Diaspora
                                break;
 
                        default:
-                               logger("Unknown target type ".$target_type);
+                               Logger::log("Unknown target type ".$target_type);
                                return false;
                }
                return true;
@@ -2870,7 +2871,7 @@ class Diaspora
                self::sendParticipation($contact, $datarray);
 
                if ($message_id) {
-                       logger("Stored item ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG);
+                       Logger::log("Stored item ".$datarray["guid"]." with message id ".$message_id, Logger::DEBUG);
                        if ($datarray['uid'] == 0) {
                                Item::distribute($message_id);
                        }
@@ -2922,11 +2923,11 @@ class Diaspora
         */
        public static function encodePrivateData($msg, array $user, array $contact, $prvkey, $pubkey)
        {
-               logger("Message: ".$msg, LOGGER_DATA);
+               Logger::log("Message: ".$msg, Logger::DATA);
 
                // without a public key nothing will work
                if (!$pubkey) {
-                       logger("pubkey missing: contact id: ".$contact["id"]);
+                       Logger::log("pubkey missing: contact id: ".$contact["id"]);
                        return false;
                }
 
@@ -3068,11 +3069,11 @@ class Diaspora
                }
 
                if (!$dest_url) {
-                       logger("no url for contact: ".$contact["id"]." batch mode =".$public_batch);
+                       Logger::log("no url for contact: ".$contact["id"]." batch mode =".$public_batch);
                        return 0;
                }
 
-               logger("transmit: ".$logid."-".$guid." ".$dest_url);
+               Logger::log("transmit: ".$logid."-".$guid." ".$dest_url);
 
                if (!$queue_run && Queue::wasDelayed($contact["id"])) {
                        $return_code = 0;
@@ -3083,16 +3084,16 @@ class Diaspora
                                $postResult = Network::post($dest_url."/", $envelope, ["Content-Type: ".$content_type]);
                                $return_code = $postResult->getReturnCode();
                        } else {
-                               logger("test_mode");
+                               Logger::log("test_mode");
                                return 200;
                        }
                }
 
-               logger("transmit: ".$logid."-".$guid." to ".$dest_url." returns: ".$return_code);
+               Logger::log("transmit: ".$logid."-".$guid." to ".$dest_url." returns: ".$return_code);
 
                if (!$return_code || (($return_code == 503) && (stristr($postResult->getHeader(), "retry-after")))) {
                        if (!$no_queue && !empty($contact['contact-type']) && ($contact['contact-type'] != Contact::ACCOUNT_TYPE_RELAY)) {
-                               logger("queue message");
+                               Logger::log("queue message");
                                // queue message for redelivery
                                Queue::add($contact["id"], Protocol::DIASPORA, $envelope, $public_batch, $guid);
                        }
@@ -3140,8 +3141,8 @@ class Diaspora
        {
                $msg = self::buildPostXml($type, $message);
 
-               logger('message: '.$msg, LOGGER_DATA);
-               logger('send guid '.$guid, LOGGER_DEBUG);
+               Logger::log('message: '.$msg, Logger::DATA);
+               Logger::log('send guid '.$guid, Logger::DEBUG);
 
                // Fallback if the private key wasn't transmitted in the expected field
                if (empty($owner['uprvkey'])) {
@@ -3157,7 +3158,7 @@ class Diaspora
                        $return_code = self::transmit($owner, $contact, $envelope, $public_batch, false, $guid);
                }
 
-               logger("guid: ".$guid." result ".$return_code, LOGGER_DEBUG);
+               Logger::log("guid: ".$guid." result ".$return_code, Logger::DEBUG);
 
                return $return_code;
        }
@@ -3202,7 +3203,7 @@ class Diaspora
                                "parent_type" => "Post",
                                "parent_guid" => $item["guid"]];
 
-               logger("Send participation for ".$item["guid"]." by ".$author, LOGGER_DEBUG);
+               Logger::log("Send participation for ".$item["guid"]." by ".$author, Logger::DEBUG);
 
                // It doesn't matter what we store, we only want to avoid sending repeated notifications for the same item
                Cache::set($cachekey, $item["guid"], Cache::QUARTER_HOUR);
@@ -3231,7 +3232,7 @@ class Diaspora
                                "profile" => $profile,
                                "signature" => $signature];
 
-               logger("Send account migration ".print_r($message, true), LOGGER_DEBUG);
+               Logger::log("Send account migration ".print_r($message, true), Logger::DEBUG);
 
                return self::buildAndTransmit($owner, $contact, "account_migration", $message);
        }
@@ -3274,7 +3275,7 @@ class Diaspora
                                "following" => "true",
                                "sharing" => "true"];
 
-               logger("Send share ".print_r($message, true), LOGGER_DEBUG);
+               Logger::log("Send share ".print_r($message, true), Logger::DEBUG);
 
                return self::buildAndTransmit($owner, $contact, "contact", $message);
        }
@@ -3294,7 +3295,7 @@ class Diaspora
                                "following" => "false",
                                "sharing" => "false"];
 
-               logger("Send unshare ".print_r($message, true), LOGGER_DEBUG);
+               Logger::log("Send unshare ".print_r($message, true), Logger::DEBUG);
 
                return self::buildAndTransmit($owner, $contact, "contact", $message);
        }
@@ -3654,7 +3655,7 @@ class Diaspora
                                $attend_answer = 'tentative';
                                break;
                        default:
-                               logger('Unknown verb '.$item['verb'].' in item '.$item['guid']);
+                               Logger::log('Unknown verb '.$item['verb'].' in item '.$item['guid']);
                                return false;
                }
 
@@ -3807,7 +3808,7 @@ class Diaspora
                        $type = "comment";
                }
 
-               logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG);
+               Logger::log("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", Logger::DEBUG);
 
                // Old way - is used by the internal Friendica functions
                /// @todo Change all signatur storing functions to the new format
@@ -3831,13 +3832,13 @@ class Diaspora
                                        $message[$field] = $data;
                                }
                        } else {
-                               logger("Signature text for item ".$item["guid"]." (".$item["id"].") couldn't be extracted: ".$item['signed_text'], LOGGER_DEBUG);
+                               Logger::log("Signature text for item ".$item["guid"]." (".$item["id"].") couldn't be extracted: ".$item['signed_text'], Logger::DEBUG);
                        }
                }
 
                $message["parent_author_signature"] = self::signature($owner, $message);
 
-               logger("Relayed data ".print_r($message, true), LOGGER_DEBUG);
+               Logger::log("Relayed data ".print_r($message, true), Logger::DEBUG);
 
                return self::buildAndTransmit($owner, $contact, $type, $message, $public_batch, $item["guid"]);
        }
@@ -3871,7 +3872,7 @@ class Diaspora
                                "target_guid" => $item['guid'],
                                "target_type" => $target_type];
 
-               logger("Got message ".print_r($message, true), LOGGER_DEBUG);
+               Logger::log("Got message ".print_r($message, true), Logger::DEBUG);
 
                return self::buildAndTransmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]);
        }
@@ -3891,7 +3892,7 @@ class Diaspora
 
                $cnv = DBA::selectFirst('conv', [], ['id' => $item["convid"], 'uid' => $item["uid"]]);
                if (!DBA::isResult($cnv)) {
-                       logger("conversation not found.");
+                       Logger::log("conversation not found.");
                        return;
                }
 
@@ -4107,7 +4108,7 @@ class Diaspora
                $message = self::createProfileData($uid);
 
                foreach ($recips as $recip) {
-                       logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
+                       Logger::log("Send updated profile data for user ".$uid." to contact ".$recip["id"], Logger::DEBUG);
                        self::buildAndTransmit($owner, $recip, "profile", $message, false, "", false);
                }
        }
@@ -4124,6 +4125,7 @@ class Diaspora
        {
                $owner = User::getOwnerDataById($uid);
                if (empty($owner)) {
+                       Logger::log("No owner post, so not storing signature", Logger::DEBUG);
                        return false;
                }
 
@@ -4153,6 +4155,7 @@ class Diaspora
        {
                $owner = User::getOwnerDataById($uid);
                if (empty($owner)) {
+                       Logger::log("No owner post, so not storing signature", Logger::DEBUG);
                        return false;
                }
 
index 00122e2eaeb3781b6463aaafb3c9b61815a3962f..bb70972b03ced7d9f11fdbe1d66131ab94b08b95 100644 (file)
@@ -4,6 +4,7 @@
  */
 namespace Friendica\Protocol;
 
+use Friendica\Core\Logger;
 use Friendica\Content\Text\HTML;
 use Friendica\Core\Protocol;
 
@@ -28,12 +29,12 @@ class Email
 
                $errors = imap_errors();
                if (!empty($errors)) {
-                       logger('IMAP Errors occured: ' . json_encode($errors));
+                       Logger::log('IMAP Errors occured: ' . json_encode($errors));
                }
 
                $alerts = imap_alerts();
                if (!empty($alerts)) {
-                       logger('IMAP Alerts occured: ' . json_encode($alerts));
+                       Logger::log('IMAP Alerts occured: ' . json_encode($alerts));
                }
 
                return $mbox;
@@ -54,21 +55,21 @@ class Email
                if (!$search1) {
                        $search1 = [];
                } else {
-                       logger("Found mails from ".$email_addr, LOGGER_DEBUG);
+                       Logger::log("Found mails from ".$email_addr, Logger::DEBUG);
                }
 
                $search2 = @imap_search($mbox, 'TO "' . $email_addr . '"', SE_UID);
                if (!$search2) {
                        $search2 = [];
                } else {
-                       logger("Found mails to ".$email_addr, LOGGER_DEBUG);
+                       Logger::log("Found mails to ".$email_addr, Logger::DEBUG);
                }
 
                $search3 = @imap_search($mbox, 'CC "' . $email_addr . '"', SE_UID);
                if (!$search3) {
                        $search3 = [];
                } else {
-                       logger("Found mails cc ".$email_addr, LOGGER_DEBUG);
+                       Logger::log("Found mails cc ".$email_addr, Logger::DEBUG);
                }
 
                $res = array_unique(array_merge($search1, $search2, $search3));
@@ -351,7 +352,7 @@ class Email
 
                //$message = '<html><body>' . $html . '</body></html>';
                //$message = html2plain($html);
-               logger('notifier: email delivery to ' . $addr);
+               Logger::log('notifier: email delivery to ' . $addr);
                mail($addr, $subject, $body, $headers);
        }
 
index 39b272a42210bda09c4339ecafba228be96324ba..71ebe5506b9dadd78587e6123646af464d9c2d5f 100644 (file)
@@ -9,6 +9,7 @@ namespace Friendica\Protocol;
 use DOMDocument;
 use DOMXPath;
 use Friendica\Content\Text\HTML;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -40,12 +41,12 @@ class Feed {
                $a = get_app();
 
                if (!$simulate) {
-                       logger("Import Atom/RSS feed '".$contact["name"]."' (Contact ".$contact["id"].") for user ".$importer["uid"], LOGGER_DEBUG);
+                       Logger::log("Import Atom/RSS feed '".$contact["name"]."' (Contact ".$contact["id"].") for user ".$importer["uid"], Logger::DEBUG);
                } else {
-                       logger("Test Atom/RSS feed", LOGGER_DEBUG);
+                       Logger::log("Test Atom/RSS feed", Logger::DEBUG);
                }
                if (empty($xml)) {
-                       logger('XML is empty.', LOGGER_DEBUG);
+                       Logger::log('XML is empty.', Logger::DEBUG);
                        return;
                }
 
@@ -199,7 +200,7 @@ class Feed {
                $header["contact-id"] = $contact["id"];
 
                if (!is_object($entries)) {
-                       logger("There are no entries in this feed.", LOGGER_DEBUG);
+                       Logger::log("There are no entries in this feed.", Logger::DEBUG);
                        return;
                }
 
@@ -248,7 +249,7 @@ class Feed {
                                        $importer["uid"], $item["uri"], Protocol::FEED, Protocol::DFRN];
                                $previous = Item::selectFirst(['id'], $condition);
                                if (DBA::isResult($previous)) {
-                                       logger("Item with uri ".$item["uri"]." for user ".$importer["uid"]." already existed under id ".$previous["id"], LOGGER_DEBUG);
+                                       Logger::log("Item with uri ".$item["uri"]." for user ".$importer["uid"]." already existed under id ".$previous["id"], Logger::DEBUG);
                                        continue;
                                }
                        }
@@ -423,7 +424,7 @@ class Feed {
                        }
 
                        if (!$simulate) {
-                               logger("Stored feed: ".print_r($item, true), LOGGER_DEBUG);
+                               Logger::log("Stored feed: ".print_r($item, true), Logger::DEBUG);
 
                                $notify = Item::isRemoteSelf($contact, $item);
 
@@ -440,7 +441,7 @@ class Feed {
 
                                $id = Item::insert($item, false, $notify);
 
-                               logger("Feed for contact ".$contact["url"]." stored under id ".$id);
+                               Logger::log("Feed for contact ".$contact["url"]." stored under id ".$id);
                        } else {
                                $items[] = $item;
                        }
index fb78d2ebbe59633943b9142c1c243b2a1f38c42b..a1857c5db7135784389cd06ed035b2e67e85ab2d 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Content\Text\HTML;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Lock;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -195,7 +196,7 @@ class OStatus
                        DBA::update('contact', $contact, ['id' => $contact["id"]], $current);
 
                        if (!empty($author["author-avatar"]) && ($author["author-avatar"] != $current['avatar'])) {
-                               logger("Update profile picture for contact ".$contact["id"], LOGGER_DEBUG);
+                               Logger::log("Update profile picture for contact ".$contact["id"], Logger::DEBUG);
                                Contact::updateAvatar($author["author-avatar"], $importer["uid"], $contact["id"]);
                        }
 
@@ -322,7 +323,7 @@ class OStatus
                        self::$conv_list = [];
                }
 
-               logger('Import OStatus message for user ' . $importer['uid'], LOGGER_DEBUG);
+               Logger::log('Import OStatus message for user ' . $importer['uid'], Logger::DEBUG);
 
                if ($xml == "") {
                        return false;
@@ -348,7 +349,7 @@ class OStatus
                                foreach ($hub_attributes as $hub_attribute) {
                                        if ($hub_attribute->name == "href") {
                                                $hub = $hub_attribute->textContent;
-                                               logger("Found hub ".$hub, LOGGER_DEBUG);
+                                               Logger::log("Found hub ".$hub, Logger::DEBUG);
                                        }
                                }
                        }
@@ -433,27 +434,27 @@ class OStatus
 
                        if (in_array($item["verb"], [NAMESPACE_OSTATUS."/unfavorite", ACTIVITY_UNFAVORITE])) {
                                // Ignore "Unfavorite" message
-                               logger("Ignore unfavorite message ".print_r($item, true), LOGGER_DEBUG);
+                               Logger::log("Ignore unfavorite message ".print_r($item, true), Logger::DEBUG);
                                continue;
                        }
 
                        // Deletions come with the same uri, so we check for duplicates after processing deletions
                        if (Item::exists(['uid' => $importer["uid"], 'uri' => $item["uri"]])) {
-                               logger('Post with URI '.$item["uri"].' already existed for user '.$importer["uid"].'.', LOGGER_DEBUG);
+                               Logger::log('Post with URI '.$item["uri"].' already existed for user '.$importer["uid"].'.', Logger::DEBUG);
                                continue;
                        } else {
-                               logger('Processing post with URI '.$item["uri"].' for user '.$importer["uid"].'.', LOGGER_DEBUG);
+                               Logger::log('Processing post with URI '.$item["uri"].' for user '.$importer["uid"].'.', Logger::DEBUG);
                        }
 
                        if ($item["verb"] == ACTIVITY_JOIN) {
                                // ignore "Join" messages
-                               logger("Ignore join message ".print_r($item, true), LOGGER_DEBUG);
+                               Logger::log("Ignore join message ".print_r($item, true), Logger::DEBUG);
                                continue;
                        }
 
                        if ($item["verb"] == "http://mastodon.social/schema/1.0/block") {
                                // ignore mastodon "block" messages
-                               logger("Ignore block message ".print_r($item, true), LOGGER_DEBUG);
+                               Logger::log("Ignore block message ".print_r($item, true), Logger::DEBUG);
                                continue;
                        }
 
@@ -470,7 +471,7 @@ class OStatus
 
                        if ($item["verb"] == ACTIVITY_FAVORITE) {
                                $orig_uri = $xpath->query("activity:object/atom:id", $entry)->item(0)->nodeValue;
-                               logger("Favorite ".$orig_uri." ".print_r($item, true));
+                               Logger::log("Favorite ".$orig_uri." ".print_r($item, true));
 
                                $item["verb"] = ACTIVITY_LIKE;
                                $item["parent-uri"] = $orig_uri;
@@ -480,7 +481,7 @@ class OStatus
 
                        // http://activitystrea.ms/schema/1.0/rsvp-yes
                        if (!in_array($item["verb"], [ACTIVITY_POST, ACTIVITY_LIKE, ACTIVITY_SHARE])) {
-                               logger("Unhandled verb ".$item["verb"]." ".print_r($item, true), LOGGER_DEBUG);
+                               Logger::log("Unhandled verb ".$item["verb"]." ".print_r($item, true), Logger::DEBUG);
                        }
 
                        self::processPost($xpath, $entry, $item, $importer);
@@ -493,10 +494,10 @@ class OStatus
                                                // If not, then it depends on this setting
                                                $valid = !Config::get('system', 'ostatus_full_threads');
                                                if ($valid) {
-                                                       logger("Item with uri ".self::$itemlist[0]['uri']." will be imported due to the system settings.", LOGGER_DEBUG);
+                                                       Logger::log("Item with uri ".self::$itemlist[0]['uri']." will be imported due to the system settings.", Logger::DEBUG);
                                                }
                                        } else {
-                                               logger("Item with uri ".self::$itemlist[0]['uri']." belongs to a contact (".self::$itemlist[0]['contact-id']."). It will be imported.", LOGGER_DEBUG);
+                                               Logger::log("Item with uri ".self::$itemlist[0]['uri']." belongs to a contact (".self::$itemlist[0]['contact-id']."). It will be imported.", Logger::DEBUG);
                                        }
                                        if ($valid) {
                                                // Never post a thread when the only interaction by our contact was a like
@@ -508,14 +509,14 @@ class OStatus
                                                        }
                                                }
                                                if ($valid) {
-                                                       logger("Item with uri ".self::$itemlist[0]['uri']." will be imported since the thread contains posts or shares.", LOGGER_DEBUG);
+                                                       Logger::log("Item with uri ".self::$itemlist[0]['uri']." will be imported since the thread contains posts or shares.", Logger::DEBUG);
                                                }
                                        }
                                } else {
                                        // But we will only import complete threads
                                        $valid = Item::exists(['uid' => $importer["uid"], 'uri' => self::$itemlist[0]['parent-uri']]);
                                        if ($valid) {
-                                               logger("Item with uri ".self::$itemlist[0]["uri"]." belongs to parent ".self::$itemlist[0]['parent-uri']." of user ".$importer["uid"].". It will be imported.", LOGGER_DEBUG);
+                                               Logger::log("Item with uri ".self::$itemlist[0]["uri"]." belongs to parent ".self::$itemlist[0]['parent-uri']." of user ".$importer["uid"].". It will be imported.", Logger::DEBUG);
                                        }
                                }
 
@@ -532,25 +533,25 @@ class OStatus
                                        foreach (self::$itemlist as $item) {
                                                $found = Item::exists(['uid' => $importer["uid"], 'uri' => $item["uri"]]);
                                                if ($found) {
-                                                       logger("Item with uri ".$item["uri"]." for user ".$importer["uid"]." already exists.", LOGGER_DEBUG);
+                                                       Logger::log("Item with uri ".$item["uri"]." for user ".$importer["uid"]." already exists.", Logger::DEBUG);
                                                } elseif ($item['contact-id'] < 0) {
-                                                       logger("Item with uri ".$item["uri"]." is from a blocked contact.", LOGGER_DEBUG);
+                                                       Logger::log("Item with uri ".$item["uri"]." is from a blocked contact.", Logger::DEBUG);
                                                } else {
                                                        // We are having duplicated entries. Hopefully this solves it.
                                                        if (Lock::acquire('ostatus_process_item_insert')) {
                                                                $ret = Item::insert($item);
                                                                Lock::release('ostatus_process_item_insert');
-                                                               logger("Item with uri ".$item["uri"]." for user ".$importer["uid"].' stored. Return value: '.$ret);
+                                                               Logger::log("Item with uri ".$item["uri"]." for user ".$importer["uid"].' stored. Return value: '.$ret);
                                                        } else {
                                                                $ret = Item::insert($item);
-                                                               logger("We couldn't lock - but tried to store the item anyway. Return value is ".$ret);
+                                                               Logger::log("We couldn't lock - but tried to store the item anyway. Return value is ".$ret);
                                                        }
                                                }
                                        }
                                }
                                self::$itemlist = [];
                        }
-                       logger('Processing done for post with URI '.$item["uri"].' for user '.$importer["uid"].'.', LOGGER_DEBUG);
+                       Logger::log('Processing done for post with URI '.$item["uri"].' for user '.$importer["uid"].'.', Logger::DEBUG);
                }
                return true;
        }
@@ -564,13 +565,13 @@ class OStatus
        {
                $condition = ['uid' => $item['uid'], 'author-id' => $item['author-id'], 'uri' => $item['uri']];
                if (!Item::exists($condition)) {
-                       logger('Item from '.$item['author-link'].' with uri '.$item['uri'].' for user '.$item['uid']." wasn't found. We don't delete it.");
+                       Logger::log('Item from '.$item['author-link'].' with uri '.$item['uri'].' for user '.$item['uid']." wasn't found. We don't delete it.");
                        return;
                }
 
                Item::delete($condition);
 
-               logger('Deleted item with uri '.$item['uri'].' for user '.$item['uid']);
+               Logger::log('Deleted item with uri '.$item['uri'].' for user '.$item['uid']);
        }
 
        /**
@@ -706,7 +707,7 @@ class OStatus
                                        self::fetchRelated($related, $item["parent-uri"], $importer);
                                }
                        } else {
-                               logger('Reply with URI '.$item["uri"].' already existed for user '.$importer["uid"].'.', LOGGER_DEBUG);
+                               Logger::log('Reply with URI '.$item["uri"].' already existed for user '.$importer["uid"].'.', Logger::DEBUG);
                        }
                } else {
                        $item["parent-uri"] = $item["uri"];
@@ -852,11 +853,11 @@ class OStatus
 
                        $condition = ['item-uri' => $conv_data['uri'],'protocol' => Conversation::PARCEL_FEED];
                        if (DBA::exists('conversation', $condition)) {
-                               logger('Delete deprecated entry for URI '.$conv_data['uri'], LOGGER_DEBUG);
+                               Logger::log('Delete deprecated entry for URI '.$conv_data['uri'], Logger::DEBUG);
                                DBA::delete('conversation', ['item-uri' => $conv_data['uri']]);
                        }
 
-                       logger('Store conversation data for uri '.$conv_data['uri'], LOGGER_DEBUG);
+                       Logger::log('Store conversation data for uri '.$conv_data['uri'], Logger::DEBUG);
                        Conversation::insert($conv_data);
                }
        }
@@ -876,7 +877,7 @@ class OStatus
        {
                $condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $self, Conversation::PARCEL_DFRN, Conversation::PARCEL_SALMON];
                if (DBA::exists('conversation', $condition)) {
-                       logger('Conversation '.$item['uri'].' is already stored.', LOGGER_DEBUG);
+                       Logger::log('Conversation '.$item['uri'].' is already stored.', Logger::DEBUG);
                        return;
                }
 
@@ -896,7 +897,7 @@ class OStatus
                $item["protocol"] = Conversation::PARCEL_SALMON;
                $item["source"] = $xml;
 
-               logger('Conversation '.$item['uri'].' is now fetched.', LOGGER_DEBUG);
+               Logger::log('Conversation '.$item['uri'].' is now fetched.', Logger::DEBUG);
        }
 
        /**
@@ -915,11 +916,11 @@ class OStatus
                        $stored = true;
                        $xml = $conversation['source'];
                        if (self::process($xml, $importer, $contact, $hub, $stored, false)) {
-                               logger('Got valid cached XML for URI '.$related_uri, LOGGER_DEBUG);
+                               Logger::log('Got valid cached XML for URI '.$related_uri, Logger::DEBUG);
                                return;
                        }
                        if ($conversation['protocol'] == Conversation::PARCEL_SALMON) {
-                               logger('Delete invalid cached XML for URI '.$related_uri, LOGGER_DEBUG);
+                               Logger::log('Delete invalid cached XML for URI '.$related_uri, Logger::DEBUG);
                                DBA::delete('conversation', ['item-uri' => $related_uri]);
                        }
                }
@@ -934,7 +935,7 @@ class OStatus
                $xml = '';
 
                if (stristr($curlResult->getHeader(), 'Content-Type: application/atom+xml')) {
-                       logger('Directly fetched XML for URI ' . $related_uri, LOGGER_DEBUG);
+                       Logger::log('Directly fetched XML for URI ' . $related_uri, Logger::DEBUG);
                        $xml = $curlResult->getBody();
                }
 
@@ -959,7 +960,7 @@ class OStatus
                                        $curlResult = Network::curl($atom_file);
 
                                        if ($curlResult->isSuccess()) {
-                                               logger('Fetched XML for URI ' . $related_uri, LOGGER_DEBUG);
+                                               Logger::log('Fetched XML for URI ' . $related_uri, Logger::DEBUG);
                                                $xml = $curlResult->getBody();
                                        }
                                }
@@ -971,7 +972,7 @@ class OStatus
                        $curlResult = Network::curl(str_replace('/notice/', '/api/statuses/show/', $related).'.atom');
 
                        if ($curlResult->isSuccess()) {
-                               logger('GNU Social workaround to fetch XML for URI ' . $related_uri, LOGGER_DEBUG);
+                               Logger::log('GNU Social workaround to fetch XML for URI ' . $related_uri, Logger::DEBUG);
                                $xml = $curlResult->getBody();
                        }
                }
@@ -982,7 +983,7 @@ class OStatus
                        $curlResult = Network::curl(str_replace('/notice/', '/api/statuses/show/', $related_guess).'.atom');
 
                        if ($curlResult->isSuccess()) {
-                               logger('GNU Social workaround 2 to fetch XML for URI ' . $related_uri, LOGGER_DEBUG);
+                               Logger::log('GNU Social workaround 2 to fetch XML for URI ' . $related_uri, Logger::DEBUG);
                                $xml = $curlResult->getBody();
                        }
                }
@@ -993,7 +994,7 @@ class OStatus
                        $conversation = DBA::selectFirst('conversation', ['source'], $condition);
                        if (DBA::isResult($conversation)) {
                                $stored = true;
-                               logger('Got cached XML from conversation for URI '.$related_uri, LOGGER_DEBUG);
+                               Logger::log('Got cached XML from conversation for URI '.$related_uri, Logger::DEBUG);
                                $xml = $conversation['source'];
                        }
                }
@@ -1001,7 +1002,7 @@ class OStatus
                if ($xml != '') {
                        self::process($xml, $importer, $contact, $hub, $stored, false);
                } else {
-                       logger("XML couldn't be fetched for URI: ".$related_uri." - href: ".$related, LOGGER_DEBUG);
+                       Logger::log("XML couldn't be fetched for URI: ".$related_uri." - href: ".$related, Logger::DEBUG);
                }
                return;
        }
@@ -1651,7 +1652,7 @@ class OStatus
        private static function reshareEntry(DOMDocument $doc, array $item, array $owner, $repeated_guid, $toplevel)
        {
                if (($item["id"] != $item["parent"]) && (normalise_link($item["author-link"]) != normalise_link($owner["url"]))) {
-                       logger("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", LOGGER_DEBUG);
+                       Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG);
                }
 
                $title = self::entryHeader($doc, $entry, $owner, $item, $toplevel);
@@ -1714,7 +1715,7 @@ class OStatus
        private static function likeEntry(DOMDocument $doc, array $item, array $owner, $toplevel)
        {
                if (($item["id"] != $item["parent"]) && (normalise_link($item["author-link"]) != normalise_link($owner["url"]))) {
-                       logger("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", LOGGER_DEBUG);
+                       Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG);
                }
 
                $title = self::entryHeader($doc, $entry, $owner, $item, $toplevel);
@@ -1861,7 +1862,7 @@ class OStatus
        private static function noteEntry(DOMDocument $doc, array $item, array $owner, $toplevel)
        {
                if (($item["id"] != $item["parent"]) && (normalise_link($item["author-link"]) != normalise_link($owner["url"]))) {
-                       logger("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", LOGGER_DEBUG);
+                       Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG);
                }
 
                $title = self::entryHeader($doc, $entry, $owner, $item, $toplevel);
@@ -2152,7 +2153,7 @@ class OStatus
                if ((time() - strtotime($owner['last-item'])) < 15*60) {
                        $result = Cache::get($cachekey);
                        if (!$nocache && !is_null($result)) {
-                               logger('Feed duration: ' . number_format(microtime(true) - $stamp, 3) . ' - ' . $owner_nick . ' - ' . $filter . ' - ' . $previous_created . ' (cached)', LOGGER_DEBUG);
+                               Logger::log('Feed duration: ' . number_format(microtime(true) - $stamp, 3) . ' - ' . $owner_nick . ' - ' . $filter . ' - ' . $previous_created . ' (cached)', Logger::DEBUG);
                                $last_update = $result['last_update'];
                                return $result['feed'];
                        }
@@ -2212,7 +2213,7 @@ class OStatus
                $msg = ['feed' => $feeddata, 'last_update' => $last_update];
                Cache::set($cachekey, $msg, Cache::QUARTER_HOUR);
 
-               logger('Feed duration: ' . number_format(microtime(true) - $stamp, 3) . ' - ' . $owner_nick . ' - ' . $filter . ' - ' . $previous_created, LOGGER_DEBUG);
+               Logger::log('Feed duration: ' . number_format(microtime(true) - $stamp, 3) . ' - ' . $owner_nick . ' - ' . $filter . ' - ' . $previous_created, Logger::DEBUG);
 
                return $feeddata;
        }
index bb7ccd564aa166bf8b08f7405b6d60d56bc82299..fb8b48d7cb39c8708371fe7646d0be8d7cfefd2d 100644 (file)
@@ -14,6 +14,7 @@ use DOMXPath;
 use Exception;
 use Friendica\Content\Text\HTML;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -84,14 +85,14 @@ class PortableContact
 
                $url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation') ;
 
-               logger('load: ' . $url, LOGGER_DEBUG);
+               Logger::log('load: ' . $url, Logger::DEBUG);
 
                $fetchresult = Network::fetchUrlFull($url);
                $s = $fetchresult->getBody();
 
-               logger('load: returns ' . $s, LOGGER_DATA);
+               Logger::log('load: returns ' . $s, Logger::DATA);
 
-               logger('load: return code: ' . $fetchresult->getReturnCode(), LOGGER_DEBUG);
+               Logger::log('load: return code: ' . $fetchresult->getReturnCode(), Logger::DEBUG);
 
                if (($fetchresult->getReturnCode() > 299) || (! $s)) {
                        return;
@@ -99,7 +100,7 @@ class PortableContact
 
                $j = json_decode($s, true);
 
-               logger('load: json: ' . print_r($j, true), LOGGER_DATA);
+               Logger::log('load: json: ' . print_r($j, true), Logger::DATA);
 
                if (!isset($j['entry'])) {
                        return;
@@ -199,10 +200,10 @@ class PortableContact
 
                                GContact::link($gcid, $uid, $cid, $zcid);
                        } catch (Exception $e) {
-                               logger($e->getMessage(), LOGGER_DEBUG);
+                               Logger::log($e->getMessage(), Logger::DEBUG);
                        }
                }
-               logger("load: loaded $total entries", LOGGER_DEBUG);
+               Logger::log("load: loaded $total entries", Logger::DEBUG);
 
                $condition = ["`cid` = ? AND `uid` = ? AND `zcid` = ? AND `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", $cid, $uid, $zcid];
                DBA::delete('glink', $condition);
@@ -335,7 +336,7 @@ class PortableContact
                }
 
                if (!in_array($gcontacts[0]["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::FEED, Protocol::OSTATUS, ""])) {
-                       logger("Profile ".$profile.": Network type ".$gcontacts[0]["network"]." can't be checked", LOGGER_DEBUG);
+                       Logger::log("Profile ".$profile.": Network type ".$gcontacts[0]["network"]." can't be checked", Logger::DEBUG);
                        return false;
                }
 
@@ -346,7 +347,7 @@ class PortableContact
                                        DBA::update('gcontact', $fields, ['nurl' => normalise_link($profile)]);
                                }
 
-                               logger("Profile ".$profile.": Server ".$server_url." wasn't reachable.", LOGGER_DEBUG);
+                               Logger::log("Profile ".$profile.": Server ".$server_url." wasn't reachable.", Logger::DEBUG);
                                return false;
                        }
                        $contact['server_url'] = $server_url;
@@ -426,7 +427,7 @@ class PortableContact
                                                        $fields = ['last_contact' => DateTimeFormat::utcNow()];
                                                        DBA::update('gcontact', $fields, ['nurl' => normalise_link($profile)]);
 
-                                                       logger("Profile ".$profile." was last updated at ".$noscrape["updated"]." (noscrape)", LOGGER_DEBUG);
+                                                       Logger::log("Profile ".$profile." was last updated at ".$noscrape["updated"]." (noscrape)", Logger::DEBUG);
 
                                                        return $noscrape["updated"];
                                                }
@@ -437,7 +438,7 @@ class PortableContact
 
                // If we only can poll the feed, then we only do this once a while
                if (!$force && !self::updateNeeded($gcontacts[0]["created"], $gcontacts[0]["updated"], $gcontacts[0]["last_failure"], $gcontacts[0]["last_contact"])) {
-                       logger("Profile ".$profile." was last updated at ".$gcontacts[0]["updated"]." (cached)", LOGGER_DEBUG);
+                       Logger::log("Profile ".$profile." was last updated at ".$gcontacts[0]["updated"]." (cached)", Logger::DEBUG);
 
                        GContact::update($contact);
                        return $gcontacts[0]["updated"];
@@ -464,10 +465,10 @@ class PortableContact
 
                                self::lastUpdated($data["url"], $force);
                        } catch (Exception $e) {
-                               logger($e->getMessage(), LOGGER_DEBUG);
+                               Logger::log($e->getMessage(), Logger::DEBUG);
                        }
 
-                       logger("Profile ".$profile." was deleted", LOGGER_DEBUG);
+                       Logger::log("Profile ".$profile." was deleted", Logger::DEBUG);
                        return false;
                }
 
@@ -475,7 +476,7 @@ class PortableContact
                        $fields = ['last_failure' => DateTimeFormat::utcNow()];
                        DBA::update('gcontact', $fields, ['nurl' => normalise_link($profile)]);
 
-                       logger("Profile ".$profile." wasn't reachable (profile)", LOGGER_DEBUG);
+                       Logger::log("Profile ".$profile." wasn't reachable (profile)", Logger::DEBUG);
                        return false;
                }
 
@@ -491,7 +492,7 @@ class PortableContact
                        $fields = ['last_failure' => DateTimeFormat::utcNow()];
                        DBA::update('gcontact', $fields, ['nurl' => normalise_link($profile)]);
 
-                       logger("Profile ".$profile." wasn't reachable (no feed)", LOGGER_DEBUG);
+                       Logger::log("Profile ".$profile." wasn't reachable (no feed)", Logger::DEBUG);
                        return false;
                }
 
@@ -539,7 +540,7 @@ class PortableContact
                        DBA::update('gcontact', $fields, ['nurl' => normalise_link($profile)]);
                }
 
-               logger("Profile ".$profile." was last updated at ".$last_updated, LOGGER_DEBUG);
+               Logger::log("Profile ".$profile." was last updated at ".$last_updated, Logger::DEBUG);
 
                return $last_updated;
        }
@@ -662,7 +663,7 @@ class PortableContact
 
                foreach ($nodeinfo['links'] as $link) {
                        if (!is_array($link) || empty($link['rel'])) {
-                               logger('Invalid nodeinfo format for ' . $server_url, LOGGER_DEBUG);
+                               Logger::log('Invalid nodeinfo format for ' . $server_url, Logger::DEBUG);
                                continue;
                        }
                        if ($link['rel'] == 'http://nodeinfo.diaspora.software/ns/schema/1.0') {
@@ -963,7 +964,7 @@ class PortableContact
                        }
 
                        if (!$force && !self::updateNeeded($gserver["created"], "", $last_failure, $last_contact)) {
-                               logger("Use cached data for server ".$server_url, LOGGER_DEBUG);
+                               Logger::log("Use cached data for server ".$server_url, Logger::DEBUG);
                                return ($last_contact >= $last_failure);
                        }
                } else {
@@ -979,7 +980,7 @@ class PortableContact
                        $last_contact = DBA::NULL_DATETIME;
                        $last_failure = DBA::NULL_DATETIME;
                }
-               logger("Server ".$server_url." is outdated or unknown. Start discovery. Force: ".$force." Created: ".$gserver["created"]." Failure: ".$last_failure." Contact: ".$last_contact, LOGGER_DEBUG);
+               Logger::log("Server ".$server_url." is outdated or unknown. Start discovery. Force: ".$force." Created: ".$gserver["created"]." Failure: ".$last_failure." Contact: ".$last_contact, Logger::DEBUG);
 
                $failure = false;
                $possible_failure = false;
@@ -1004,7 +1005,7 @@ class PortableContact
                // But we want to make sure to only quit if we are mostly sure that this server url fits.
                if (DBA::isResult($gserver) && ($orig_server_url == $server_url) &&
                        ($curlResult->isTimeout())) {
-                       logger("Connection to server ".$server_url." timed out.", LOGGER_DEBUG);
+                       Logger::log("Connection to server ".$server_url." timed out.", Logger::DEBUG);
                        DBA::update('gserver', ['last_failure' => DateTimeFormat::utcNow()], ['nurl' => normalise_link($server_url)]);
                        return false;
                }
@@ -1019,7 +1020,7 @@ class PortableContact
 
                        // Quit if there is a timeout
                        if ($curlResult->isTimeout()) {
-                               logger("Connection to server " . $server_url . " timed out.", LOGGER_DEBUG);
+                               Logger::log("Connection to server " . $server_url . " timed out.", Logger::DEBUG);
                                DBA::update('gserver', ['last_failure' => DateTimeFormat::utcNow()], ['nurl' => normalise_link($server_url)]);
                                return false;
                        }
@@ -1398,9 +1399,9 @@ class PortableContact
                }
 
                if (($last_contact <= $last_failure) && !$failure) {
-                       logger("Server ".$server_url." seems to be alive, but last contact wasn't set - could be a bug", LOGGER_DEBUG);
+                       Logger::log("Server ".$server_url." seems to be alive, but last contact wasn't set - could be a bug", Logger::DEBUG);
                } elseif (($last_contact >= $last_failure) && $failure) {
-                       logger("Server ".$server_url." seems to be dead, but last failure wasn't set - could be a bug", LOGGER_DEBUG);
+                       Logger::log("Server ".$server_url." seems to be dead, but last failure wasn't set - could be a bug", Logger::DEBUG);
                }
 
                // Check again if the server exists
@@ -1429,7 +1430,7 @@ class PortableContact
                        self::discoverRelay($server_url);
                }
 
-               logger("End discovery for server " . $server_url, LOGGER_DEBUG);
+               Logger::log("End discovery for server " . $server_url, Logger::DEBUG);
 
                return !$failure;
        }
@@ -1441,7 +1442,7 @@ class PortableContact
         */
        private static function discoverRelay($server_url)
        {
-               logger("Discover relay data for server " . $server_url, LOGGER_DEBUG);
+               Logger::log("Discover relay data for server " . $server_url, Logger::DEBUG);
 
                $curlResult = Network::curl($server_url . "/.well-known/x-social-relay");
 
@@ -1557,7 +1558,7 @@ class PortableContact
                        $r = q("SELECT `nurl` FROM `gserver` WHERE `nurl` = '%s'", DBA::escape(normalise_link($server_url)));
 
                        if (!DBA::isResult($r)) {
-                               logger("Call server check for server ".$server_url, LOGGER_DEBUG);
+                               Logger::log("Call server check for server ".$server_url, Logger::DEBUG);
                                Worker::add(PRIORITY_LOW, "DiscoverPoCo", "server", $server_url);
                        }
                }
@@ -1642,7 +1643,7 @@ class PortableContact
                // Fetch all users from the other server
                $url = $server["poco"] . "/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation";
 
-               logger("Fetch all users from the server " . $server["url"], LOGGER_DEBUG);
+               Logger::log("Fetch all users from the server " . $server["url"], Logger::DEBUG);
 
                $curlResult = Network::curl($url);
 
@@ -1670,7 +1671,7 @@ class PortableContact
                                $curlResult = Network::curl($url);
 
                                if ($curlResult->isSuccess() && !empty($curlResult->getBody())) {
-                                       logger("Fetch all global contacts from the server " . $server["nurl"], LOGGER_DEBUG);
+                                       Logger::log("Fetch all global contacts from the server " . $server["nurl"], Logger::DEBUG);
                                        $data = json_decode($curlResult->getBody(), true);
 
                                        if (!empty($data)) {
@@ -1679,7 +1680,7 @@ class PortableContact
                                }
 
                                if (!$success && (Config::get('system', 'poco_discovery') > 2)) {
-                                       logger("Fetch contacts from users of the server " . $server["nurl"], LOGGER_DEBUG);
+                                       Logger::log("Fetch contacts from users of the server " . $server["nurl"], Logger::DEBUG);
                                        self::discoverServerUsers($data, $server);
                                }
                        }
@@ -1732,7 +1733,7 @@ class PortableContact
                                        continue;
                                }
 
-                               logger('Update directory from server ' . $gserver['url'] . ' with ID ' . $gserver['id'], LOGGER_DEBUG);
+                               Logger::log('Update directory from server ' . $gserver['url'] . ' with ID ' . $gserver['id'], Logger::DEBUG);
                                Worker::add(PRIORITY_LOW, 'DiscoverPoCo', 'update_server_directory', (int) $gserver['id']);
 
                                if (!$complete && ( --$no_of_queries == 0)) {
@@ -1762,7 +1763,7 @@ class PortableContact
                        }
 
                        if ($username != '') {
-                               logger('Fetch contacts for the user ' . $username . ' from the server ' . $server['nurl'], LOGGER_DEBUG);
+                               Logger::log('Fetch contacts for the user ' . $username . ' from the server ' . $server['nurl'], Logger::DEBUG);
 
                                // Fetch all contacts from a given user from the other server
                                $url = $server['poco'] . '/' . $username . '/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation';
@@ -1865,7 +1866,7 @@ class PortableContact
                        if ($generation > 0) {
                                $success = true;
 
-                               logger("Store profile ".$profile_url, LOGGER_DEBUG);
+                               Logger::log("Store profile ".$profile_url, Logger::DEBUG);
 
                                $gcontact = ["url" => $profile_url,
                                                "name" => $name,
@@ -1884,10 +1885,10 @@ class PortableContact
                                        $gcontact = GContact::sanitize($gcontact);
                                        GContact::update($gcontact);
                                } catch (Exception $e) {
-                                       logger($e->getMessage(), LOGGER_DEBUG);
+                                       Logger::log($e->getMessage(), Logger::DEBUG);
                                }
 
-                               logger("Done for profile ".$profile_url, LOGGER_DEBUG);
+                               Logger::log("Done for profile ".$profile_url, Logger::DEBUG);
                        }
                }
                return $success;
index e3407844a66590b2e2e82c35f177c4285779b5ab..29abd77d06f607890fe040276d1cc896c14cfbf1 100644 (file)
@@ -4,6 +4,7 @@
  */
 namespace Friendica\Protocol;
 
+use Friendica\Core\Logger;
 use Friendica\Network\Probe;
 use Friendica\Util\Crypto;
 use Friendica\Util\Network;
@@ -25,7 +26,7 @@ class Salmon
        {
                $ret = [];
 
-               logger('Fetching salmon key for '.$uri);
+               Logger::log('Fetching salmon key for '.$uri);
 
                $arr = Probe::lrdd($uri);
 
@@ -57,7 +58,7 @@ class Salmon
                }
 
 
-               logger('Key located: ' . print_r($ret, true));
+               Logger::log('Key located: ' . print_r($ret, true));
 
                if (count($ret) == 1) {
                        // We only found one one key so we don't care if the hash matches.
@@ -94,12 +95,12 @@ class Salmon
                }
 
                if (! $owner['sprvkey']) {
-                       logger(sprintf("user '%s' (%d) does not have a salmon private key. Send failed.",
+                       Logger::log(sprintf("user '%s' (%d) does not have a salmon private key. Send failed.",
                        $owner['username'], $owner['uid']));
                        return;
                }
 
-               logger('slapper called for '.$url.'. Data: ' . $slap);
+               Logger::log('slapper called for '.$url.'. Data: ' . $slap);
 
                // create a magic envelope
 
@@ -143,7 +144,7 @@ class Salmon
                // check for success, e.g. 2xx
 
                if ($return_code > 299) {
-                       logger('GNU Social salmon failed. Falling back to compliant mode');
+                       Logger::log('GNU Social salmon failed. Falling back to compliant mode');
 
                        // Now try the compliant mode that normally isn't used for GNU Social
                        $xmldata = ["me:env" => ["me:data" => $data,
@@ -166,7 +167,7 @@ class Salmon
                }
 
                if ($return_code > 299) {
-                       logger('compliant salmon failed. Falling back to old status.net');
+                       Logger::log('compliant salmon failed. Falling back to old status.net');
 
                        // Last try. This will most likely fail as well.
                        $xmldata = ["me:env" => ["me:data" => $data,
@@ -187,7 +188,7 @@ class Salmon
                        $return_code = $postResult->getReturnCode();
                }
 
-               logger('slapper for '.$url.' returned ' . $return_code);
+               Logger::log('slapper for '.$url.' returned ' . $return_code);
 
                if (! $return_code) {
                        return -1;
index 6a49626bd2e5b377911182a45195372beebd2a8f..2b1ce0f02be5b77f78f3d1844c34ddd7fd010427 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Util;
 
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use ASN_BASE;
 use ASNValue;
 
@@ -232,7 +233,7 @@ class Crypto
                $result = openssl_pkey_new($openssl_options);
 
                if (empty($result)) {
-                       logger('new_keypair: failed');
+                       Logger::log('new_keypair: failed');
                        return false;
                }
 
@@ -347,7 +348,7 @@ class Crypto
        private static function encapsulateOther($data, $pubkey, $alg)
        {
                if (!$pubkey) {
-                       logger('no key. data: '.$data);
+                       Logger::log('no key. data: '.$data);
                }
                $fn = 'encrypt' . strtoupper($alg);
                if (method_exists(__CLASS__, $fn)) {
@@ -359,7 +360,7 @@ class Crypto
                        // log the offending call so we can track it down
                        if (!openssl_public_encrypt($key, $k, $pubkey)) {
                                $x = debug_backtrace();
-                               logger('RSA failed. ' . print_r($x[0], true));
+                               Logger::log('RSA failed. ' . print_r($x[0], true));
                        }
 
                        $result['alg'] = $alg;
@@ -388,7 +389,7 @@ class Crypto
        private static function encapsulateAes($data, $pubkey)
        {
                if (!$pubkey) {
-                       logger('aes_encapsulate: no key. data: ' . $data);
+                       Logger::log('aes_encapsulate: no key. data: ' . $data);
                }
 
                $key = random_bytes(32);
@@ -399,7 +400,7 @@ class Crypto
                // log the offending call so we can track it down
                if (!openssl_public_encrypt($key, $k, $pubkey)) {
                        $x = debug_backtrace();
-                       logger('aes_encapsulate: RSA failed. ' . print_r($x[0], true));
+                       Logger::log('aes_encapsulate: RSA failed. ' . print_r($x[0], true));
                }
 
                $result['alg'] = 'aes256cbc';
index e293857acdd14a937fbc45b19bffe31fc4aecfce..8545cd07c43668ac938e16feff57135ebc425a31 100644 (file)
@@ -6,6 +6,7 @@
 
 namespace Friendica\Util;
 
+use Friendica\Core\Logger;
 use DateTime;
 use DateTimeZone;
 use Exception;
@@ -125,7 +126,7 @@ class DateTimeFormat
                try {
                        $d = new DateTime($s, $from_obj);
                } catch (Exception $e) {
-                       logger('DateTimeFormat::convert: exception: ' . $e->getMessage());
+                       Logger::log('DateTimeFormat::convert: exception: ' . $e->getMessage());
                        $d = new DateTime('now', $from_obj);
                }
 
index 1dd513c42fe3f1c10b19b390508ff60edec95858..42aab8f5f3ef625409d199d291c05a1e64986bb9 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Util;
 
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Protocol\Email;
 
@@ -96,8 +97,8 @@ class Emailer
                        $hookdata['headers'],
                        $hookdata['parameters']
                );
-               logger("header " . 'To: ' . $params['toEmail'] . "\n" . $messageHeader, LOGGER_DEBUG);
-               logger("return value " . (($res)?"true":"false"), LOGGER_DEBUG);
+               Logger::log("header " . 'To: ' . $params['toEmail'] . "\n" . $messageHeader, Logger::DEBUG);
+               Logger::log("return value " . (($res)?"true":"false"), Logger::DEBUG);
                return $res;
        }
 }
index 34fe7a9870f890e7c19bf72f2137bb29b699f4d9..408f4d978941e21bf42d023bef0b5a569e266cf3 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Util;
 
 use Friendica\BaseObject;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Model\User;
 use Friendica\Model\APContact;
@@ -59,7 +60,7 @@ class HTTPSignature
                $sig_block = self::parseSigheader($headers['authorization']);
 
                if (!$sig_block) {
-                       logger('no signature provided.');
+                       Logger::log('no signature provided.');
                        return $result;
                }
 
@@ -89,7 +90,7 @@ class HTTPSignature
                        $key = $key($sig_block['keyId']);
                }
 
-               logger('Got keyID ' . $sig_block['keyId']);
+               Logger::log('Got keyID ' . $sig_block['keyId']);
 
                if (!$key) {
                        return $result;
@@ -97,7 +98,7 @@ class HTTPSignature
 
                $x = Crypto::rsaVerify($signed_data, $sig_block['signature'], $key, $algorithm);
 
-               logger('verified: ' . $x, LOGGER_DEBUG);
+               Logger::log('verified: ' . $x, Logger::DEBUG);
 
                if (!$x) {
                        return $result;
@@ -307,7 +308,7 @@ class HTTPSignature
                $postResult = Network::post($target, $content, $headers);
                $return_code = $postResult->getReturnCode();
 
-               logger('Transmit to ' . $target . ' returned ' . $return_code);
+               Logger::log('Transmit to ' . $target . ' returned ' . $return_code);
 
                return ($return_code >= 200) && ($return_code <= 299);
        }
@@ -432,12 +433,12 @@ class HTTPSignature
 
                $profile = APContact::getByURL($url);
                if (!empty($profile)) {
-                       logger('Taking key from id ' . $id, LOGGER_DEBUG);
+                       Logger::log('Taking key from id ' . $id, Logger::DEBUG);
                        return ['url' => $url, 'pubkey' => $profile['pubkey']];
                } elseif ($url != $actor) {
                        $profile = APContact::getByURL($actor);
                        if (!empty($profile)) {
-                               logger('Taking key from actor ' . $actor, LOGGER_DEBUG);
+                               Logger::log('Taking key from actor ' . $actor, Logger::DEBUG);
                                return ['url' => $actor, 'pubkey' => $profile['pubkey']];
                        }
                }
index 793f5e9d1280c727cd9dba8782c07ac8fd1a7225..feaf3e62f53fc1dd49de342b1fe09b712f3b77ca 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Util;
 
 use Friendica\Core\Cache;
+use Friendica\Core\Logger;
 use Exception;
 
 /**
@@ -33,7 +34,7 @@ class JsonLD
                }
 
                if ($recursion > 5) {
-                       logger('jsonld bomb detected at: ' . $url);
+                       Logger::log('jsonld bomb detected at: ' . $url);
                        exit();
                }
 
@@ -65,7 +66,7 @@ class JsonLD
                }
                catch (Exception $e) {
                        $normalized = false;
-                       logger('normalise error:' . print_r($e, true), LOGGER_DEBUG);
+                       Logger::log('normalise error:' . print_r($e, true), Logger::DEBUG);
                }
 
                return $normalized;
@@ -98,7 +99,7 @@ class JsonLD
                }
                catch (Exception $e) {
                        $compacted = false;
-                       logger('compacting error:' . print_r($e, true), LOGGER_DEBUG);
+                       Logger::log('compacting error:' . print_r($e, true), Logger::DEBUG);
                }
 
                return json_decode(json_encode($compacted, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), true);
index 7776ec96c26f320b8c4cb8f4b217c3b0cf11e088..e53590cf312cc2da5852bfe1bb473415ba3d6261 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Friendica\Util;
 
+use Friendica\Core\Logger;
 use Friendica\Util\JsonLD;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Protocol\ActivityPub;
@@ -40,7 +41,7 @@ class LDSignature
                $dhash = self::hash(self::signableData($data));
 
                $x = Crypto::rsaVerify($ohash . $dhash, base64_decode($data['signature']['signatureValue']), $pubkey);
-               logger('LD-verify: ' . intval($x));
+               Logger::log('LD-verify: ' . intval($x));
 
                if (empty($x)) {
                        return false;
index 3b27a0550a5615a1dadbdf137cffdd6e3c91f9f1..255b3c8c4d3e1b8d1f41d1b8358b27251102a5d2 100644 (file)
@@ -5,6 +5,7 @@
 namespace Friendica\Util;
 
 use Friendica\Core\Addon;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Core\Config;
 use Friendica\Network\CurlResult;
@@ -106,7 +107,7 @@ class Network
                $url = self::unparseURL($parts);
 
                if (self::isUrlBlocked($url)) {
-                       logger('domain of ' . $url . ' is blocked', LOGGER_DATA);
+                       Logger::log('domain of ' . $url . ' is blocked', Logger::DATA);
                        return CurlResult::createErrorCurl($url);
                }
 
@@ -212,7 +213,7 @@ class Network
 
                if ($curlResponse->isRedirectUrl()) {
                        $redirects++;
-                       logger('curl: redirect ' . $url . ' to ' . $curlResponse->getRedirectUrl());
+                       Logger::log('curl: redirect ' . $url . ' to ' . $curlResponse->getRedirectUrl());
                        @curl_close($ch);
                        return self::curl($curlResponse->getRedirectUrl(), $binary, $redirects, $opts);
                }
@@ -240,7 +241,7 @@ class Network
                $stamp1 = microtime(true);
 
                if (self::isUrlBlocked($url)) {
-                       logger('post_url: domain of ' . $url . ' is blocked', LOGGER_DATA);
+                       Logger::log('post_url: domain of ' . $url . ' is blocked', Logger::DATA);
                        return CurlResult::createErrorCurl($url);
                }
 
@@ -251,7 +252,7 @@ class Network
                        return CurlResult::createErrorCurl($url);
                }
 
-               logger('post_url: start ' . $url, LOGGER_DATA);
+               Logger::log('post_url: start ' . $url, Logger::DATA);
 
                curl_setopt($ch, CURLOPT_HEADER, true);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@@ -314,7 +315,7 @@ class Network
 
                if ($curlResponse->isRedirectUrl()) {
                        $redirects++;
-                       logger('post_url: redirect ' . $url . ' to ' . $curlResponse->getRedirectUrl());
+                       Logger::log('post_url: redirect ' . $url . ' to ' . $curlResponse->getRedirectUrl());
                        curl_close($ch);
                        return self::post($curlResponse->getRedirectUrl(), $params, $headers, $redirects, $timeout);
                }
@@ -323,7 +324,7 @@ class Network
 
                $a->saveTimestamp($stamp1, 'network');
 
-               logger('post_url: end ' . $url, LOGGER_DATA);
+               Logger::log('post_url: end ' . $url, Logger::DATA);
 
                return $curlResponse;
        }
@@ -527,7 +528,7 @@ class Network
                        $avatar['url'] = System::baseUrl() . '/images/person-300.jpg';
                }
 
-               logger('Avatar: ' . $avatar['email'] . ' ' . $avatar['url'], LOGGER_DEBUG);
+               Logger::log('Avatar: ' . $avatar['email'] . ' ' . $avatar['url'], Logger::DEBUG);
                return $avatar['url'];
        }
 
index 24089b9cbd2a92bb33c22fe4e41ee3b501987cff..6530959f234e64cac4205e09d2f6b5158117e831 100644 (file)
@@ -9,6 +9,7 @@ use DOMDocument;
 use DOMXPath;
 use Friendica\Content\OEmbed;
 use Friendica\Core\Addon;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Object\Image;
 
@@ -123,7 +124,7 @@ class ParseUrl
                }
 
                if ($count > 10) {
-                       logger('Endless loop detected for ' . $url, LOGGER_DEBUG);
+                       Logger::log('Endless loop detected for ' . $url, Logger::DEBUG);
                        return $siteinfo;
                }
 
@@ -187,7 +188,7 @@ class ParseUrl
                }
 
                if (($charset != '') && (strtoupper($charset) != 'UTF-8')) {
-                       logger('detected charset ' . $charset, LOGGER_DEBUG);
+                       Logger::log('detected charset ' . $charset, Logger::DEBUG);
                        $body = iconv($charset, 'UTF-8//TRANSLIT', $body);
                }
 
@@ -421,7 +422,7 @@ class ParseUrl
                        }
                }
 
-               logger('Siteinfo for ' . $url . ' ' . print_r($siteinfo, true), LOGGER_DEBUG);
+               Logger::log('Siteinfo for ' . $url . ' ' . print_r($siteinfo, true), Logger::DEBUG);
 
                Addon::callHooks('getsiteinfo', $siteinfo);
 
index e06a92d25edf9a5a3d73951431064eaafb1f29c4..865c60406b8a8bfb7cc06317f6275f8898e656c1 100644 (file)
@@ -4,6 +4,7 @@
  */
 namespace Friendica\Util;
 
+use Friendica\Core\Logger;
 use DOMXPath;
 use SimpleXMLElement;
 
@@ -248,7 +249,7 @@ class XML
                }
 
                if (!function_exists('xml_parser_create')) {
-                       logger('Xml::toArray: parser function missing');
+                       Logger::log('Xml::toArray: parser function missing');
                        return [];
                }
 
@@ -263,7 +264,7 @@ class XML
                }
 
                if (! $parser) {
-                       logger('Xml::toArray: xml_parser_create: no resource');
+                       Logger::log('Xml::toArray: xml_parser_create: no resource');
                        return [];
                }
 
@@ -275,9 +276,9 @@ class XML
                @xml_parser_free($parser);
 
                if (! $xml_values) {
-                       logger('Xml::toArray: libxml: parse error: ' . $contents, LOGGER_DATA);
+                       Logger::log('Xml::toArray: libxml: parse error: ' . $contents, Logger::DATA);
                        foreach (libxml_get_errors() as $err) {
-                               logger('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message, LOGGER_DATA);
+                               Logger::log('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message, Logger::DATA);
                        }
                        libxml_clear_errors();
                        return;
@@ -423,9 +424,9 @@ class XML
 
                $x = @simplexml_load_string($s);
                if (!$x) {
-                       logger('libxml: parse: error: ' . $s, LOGGER_DATA);
+                       Logger::log('libxml: parse: error: ' . $s, Logger::DATA);
                        foreach (libxml_get_errors() as $err) {
-                               logger('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, LOGGER_DATA);
+                               Logger::log('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, Logger::DATA);
                        }
                        libxml_clear_errors();
                }
index b952249fed11a120066de84a8fd27e382520ded0..ce82db249af324d5881d7c98d9a8458c37cf286d 100644 (file)
@@ -5,9 +5,10 @@
 namespace Friendica\Worker;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
+use Friendica\Core\Worker;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Model\Item;
-use Friendica\Core\Worker;
 use Friendica\Util\HTTPSignature;
 
 class APDelivery extends BaseObject
@@ -22,7 +23,7 @@ class APDelivery extends BaseObject
         */
        public static function execute($cmd, $item_id, $inbox, $uid)
        {
-               logger('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $inbox, LOGGER_DEBUG);
+               Logger::log('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $inbox, Logger::DEBUG);
 
                $success = true;
 
index 3aec6cac17c5e64aa0e31cf29c5645aaf71c933f..f67fb21c8532037f3914718e44dcdd2d422fdd5d 100644 (file)
@@ -8,6 +8,7 @@
 namespace Friendica\Worker;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 use Friendica\Util\Network;
 
@@ -21,7 +22,7 @@ class CheckVersion
 {
        public static function execute()
        {
-               logger('checkversion: start');
+               Logger::log('checkversion: start');
 
                $checkurl = Config::get('system', 'check_new_version_url', 'none');
 
@@ -36,15 +37,15 @@ class CheckVersion
                                // don't check
                                return;
                }
-               logger("Checking VERSION from: ".$checked_url, LOGGER_DEBUG);
+               Logger::log("Checking VERSION from: ".$checked_url, Logger::DEBUG);
 
                // fetch the VERSION file
                $gitversion = DBA::escape(trim(Network::fetchUrl($checked_url)));
-               logger("Upstream VERSION is: ".$gitversion, LOGGER_DEBUG);
+               Logger::log("Upstream VERSION is: ".$gitversion, Logger::DEBUG);
 
                Config::set('system', 'git_friendica_version', $gitversion);
 
-               logger('checkversion: end');
+               Logger::log('checkversion: end');
 
                return;
        }
index 9510063337f5da31756ed3a5c1613976c7256a28..9b8eb1cfec8b11aa1be350f7522cf350b60193c7 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\BaseObject;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -38,12 +39,12 @@ class Cron
                if ($last) {
                        $next = $last + ($poll_interval * 60);
                        if ($next > time()) {
-                               logger('cron intervall not reached');
+                               Logger::log('cron intervall not reached');
                                return;
                        }
                }
 
-               logger('cron: start');
+               Logger::log('cron: start');
 
                // Fork the cron jobs in separate parts to avoid problems when one of them is crashing
                Hook::fork($a->queue['priority'], "cron");
@@ -124,7 +125,7 @@ class Cron
                // Poll contacts
                self::pollContacts($parameter, $generation);
 
-               logger('cron: end');
+               Logger::log('cron: end');
 
                Config::set('system', 'last_cron', time());
 
@@ -287,7 +288,7 @@ class Cron
                                $priority = PRIORITY_LOW;
                        }
 
-                       logger("Polling " . $contact["network"] . " " . $contact["id"] . " " . $contact['priority'] . " " . $contact["nick"] . " " . $contact["name"]);
+                       Logger::log("Polling " . $contact["network"] . " " . $contact["id"] . " " . $contact['priority'] . " " . $contact["nick"] . " " . $contact["name"]);
 
                        Worker::add(['priority' => $priority, 'dont_fork' => true], 'OnePoll', (int)$contact['id']);
                }
index a564bd0b0d19cca39f6bc0d010bbe145b2d304b8..0c565daa73ec5ceb9e54611686d50b90b714a866 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\App;
 use Friendica\BaseObject;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Database\PostUpdate;
@@ -33,7 +34,7 @@ class CronJobs
                        return;
                }
 
-               logger("Starting cronjob " . $command, LOGGER_DEBUG);
+               Logger::log("Starting cronjob " . $command, Logger::DEBUG);
 
                // Call possible post update functions
                // see src/Database/PostUpdate.php for more details
@@ -82,7 +83,7 @@ class CronJobs
                        return;
                }
 
-               logger("Xronjob " . $command . " is unknown.", LOGGER_DEBUG);
+               Logger::log("Xronjob " . $command . " is unknown.", Logger::DEBUG);
 
                return;
        }
@@ -211,7 +212,7 @@ class CronJobs
                                // Calculate fragmentation
                                $fragmentation = $table["Data_free"] / ($table["Data_length"] + $table["Index_length"]);
 
-                               logger("Table " . $table["Name"] . " - Fragmentation level: " . round($fragmentation * 100, 2), LOGGER_DEBUG);
+                               Logger::log("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) {
@@ -219,7 +220,7 @@ class CronJobs
                                }
 
                                // So optimize it
-                               logger("Optimize Table " . $table["Name"], LOGGER_DEBUG);
+                               Logger::log("Optimize Table " . $table["Name"], Logger::DEBUG);
                                q("OPTIMIZE TABLE `%s`", DBA::escape($table["Name"]));
                        }
                }
@@ -258,7 +259,7 @@ class CronJobs
                                continue;
                        }
 
-                       logger("Repair contact " . $contact["id"] . " " . $contact["url"], LOGGER_DEBUG);
+                       Logger::log("Repair contact " . $contact["id"] . " " . $contact["url"], Logger::DEBUG);
                        q("UPDATE `contact` SET `batch` = '%s', `notify` = '%s', `poll` = '%s', pubkey = '%s' WHERE `id` = %d",
                                DBA::escape($data["batch"]), DBA::escape($data["notify"]), DBA::escape($data["poll"]), DBA::escape($data["pubkey"]),
                                intval($contact["id"]));
@@ -276,7 +277,7 @@ class CronJobs
                $r = q("SELECT `uid` FROM `user` WHERE NOT EXISTS (SELECT `uid` FROM `contact` WHERE `contact`.`uid` = `user`.`uid` AND `contact`.`self`)");
                if (DBA::isResult($r)) {
                        foreach ($r AS $user) {
-                               logger('Create missing self contact for user ' . $user['uid']);
+                               Logger::log('Create missing self contact for user ' . $user['uid']);
                                Contact::createSelfFromUserId($user['uid']);
                        }
                }
index dba9cfd4c61894a86c0fc35861ff986f94a8c67b..a722fa23b667188d39517f05e86465a7380d7d17 100644 (file)
@@ -7,6 +7,7 @@
 namespace Friendica\Worker;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 
@@ -80,46 +81,46 @@ class DBClean {
 
                        $last_id = Config::get('system', 'dbclean-last-id-1', 0);
 
-                       logger("Deleting old global item entries from item table without user copy. Last ID: ".$last_id);
+                       Logger::log("Deleting old global item entries from item table without user copy. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `id` FROM `item` WHERE `uid` = 0 AND
                                                NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) AND
                                                `received` < UTC_TIMESTAMP() - INTERVAL ? DAY AND `id` >= ?
                                        ORDER BY `id` LIMIT ?", $days_unclaimed, $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found global item orphans: ".$count);
+                               Logger::log("found global item orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('item', ['id' => $orphan["id"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 1, $last_id);
                        } else {
-                               logger("No global item orphans found");
+                               Logger::log("No global item orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." old global item entries from item table without user copy. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." old global item entries from item table without user copy. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-1', $last_id);
                } elseif ($stage == 2) {
                        $last_id = Config::get('system', 'dbclean-last-id-2', 0);
 
-                       logger("Deleting items without parents. Last ID: ".$last_id);
+                       Logger::log("Deleting items without parents. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `id` FROM `item`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`)
                                        AND `id` >= ? ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found item orphans without parents: ".$count);
+                               Logger::log("found item orphans without parents: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('item', ['id' => $orphan["id"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 2, $last_id);
                        } else {
-                               logger("No item orphans without parents found");
+                               Logger::log("No item orphans without parents found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." items without parents. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." items without parents. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-2', $last_id);
 
@@ -129,23 +130,23 @@ class DBClean {
                } elseif ($stage == 3) {
                        $last_id = Config::get('system', 'dbclean-last-id-3', 0);
 
-                       logger("Deleting orphaned data from thread table. Last ID: ".$last_id);
+                       Logger::log("Deleting orphaned data from thread table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid` FROM `thread`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) AND `iid` >= ?
                                        ORDER BY `iid` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found thread orphans: ".$count);
+                               Logger::log("found thread orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["iid"];
                                        DBA::delete('thread', ['iid' => $orphan["iid"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 3, $last_id);
                        } else {
-                               logger("No thread orphans found");
+                               Logger::log("No thread orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." orphaned data from thread table. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." orphaned data from thread table. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-3', $last_id);
 
@@ -155,23 +156,23 @@ class DBClean {
                } elseif ($stage == 4) {
                        $last_id = Config::get('system', 'dbclean-last-id-4', 0);
 
-                       logger("Deleting orphaned data from notify table. Last ID: ".$last_id);
+                       Logger::log("Deleting orphaned data from notify table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid`, `id` FROM `notify`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) AND `id` >= ?
                                        ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found notify orphans: ".$count);
+                               Logger::log("found notify orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('notify', ['iid' => $orphan["iid"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 4, $last_id);
                        } else {
-                               logger("No notify orphans found");
+                               Logger::log("No notify orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." orphaned data from notify table. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." orphaned data from notify table. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-4', $last_id);
 
@@ -181,23 +182,23 @@ class DBClean {
                } elseif ($stage == 5) {
                        $last_id = Config::get('system', 'dbclean-last-id-5', 0);
 
-                       logger("Deleting orphaned data from notify-threads table. Last ID: ".$last_id);
+                       Logger::log("Deleting orphaned data from notify-threads table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `id` FROM `notify-threads`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) AND `id` >= ?
                                        ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found notify-threads orphans: ".$count);
+                               Logger::log("found notify-threads orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('notify-threads', ['id' => $orphan["id"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 5, $last_id);
                        } else {
-                               logger("No notify-threads orphans found");
+                               Logger::log("No notify-threads orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." orphaned data from notify-threads table. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." orphaned data from notify-threads table. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-5', $last_id);
 
@@ -207,23 +208,23 @@ class DBClean {
                } elseif ($stage == 6) {
                        $last_id = Config::get('system', 'dbclean-last-id-6', 0);
 
-                       logger("Deleting orphaned data from sign table. Last ID: ".$last_id);
+                       Logger::log("Deleting orphaned data from sign table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid`, `id` FROM `sign`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) AND `id` >= ?
                                        ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found sign orphans: ".$count);
+                               Logger::log("found sign orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('sign', ['iid' => $orphan["iid"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 6, $last_id);
                        } else {
-                               logger("No sign orphans found");
+                               Logger::log("No sign orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." orphaned data from sign table. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." orphaned data from sign table. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-6', $last_id);
 
@@ -233,23 +234,23 @@ class DBClean {
                } elseif ($stage == 7) {
                        $last_id = Config::get('system', 'dbclean-last-id-7', 0);
 
-                       logger("Deleting orphaned data from term table. Last ID: ".$last_id);
+                       Logger::log("Deleting orphaned data from term table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `oid`, `tid` FROM `term`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) AND `tid` >= ?
                                        ORDER BY `tid` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found term orphans: ".$count);
+                               Logger::log("found term orphans: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["tid"];
                                        DBA::delete('term', ['oid' => $orphan["oid"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 7, $last_id);
                        } else {
-                               logger("No term orphans found");
+                               Logger::log("No term orphans found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." orphaned data from term table. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." orphaned data from term table. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-7', $last_id);
 
@@ -263,7 +264,7 @@ class DBClean {
 
                        $last_id = Config::get('system', 'dbclean-last-id-8', 0);
 
-                       logger("Deleting expired threads. Last ID: ".$last_id);
+                       Logger::log("Deleting expired threads. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `thread`.`iid` FROM `thread`
                                        INNER JOIN `contact` ON `thread`.`contact-id` = `contact`.`id` AND NOT `notify_new_posts`
                                        WHERE `thread`.`received` < UTC_TIMESTAMP() - INTERVAL ? DAY
@@ -278,17 +279,17 @@ class DBClean {
                                        ORDER BY `thread`.`iid` LIMIT ?", $days, $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found expired threads: ".$count);
+                               Logger::log("found expired threads: ".$count);
                                while ($thread = DBA::fetch($r)) {
                                        $last_id = $thread["iid"];
                                        DBA::delete('thread', ['iid' => $thread["iid"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 8, $last_id);
                        } else {
-                               logger("No expired threads found");
+                               Logger::log("No expired threads found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." expired threads. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." expired threads. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-8', $last_id);
                } elseif ($stage == 9) {
@@ -299,47 +300,47 @@ class DBClean {
                        $last_id = Config::get('system', 'dbclean-last-id-9', 0);
                        $till_id = Config::get('system', 'dbclean-last-id-8', 0);
 
-                       logger("Deleting old global item entries from expired threads from ID ".$last_id." to ID ".$till_id);
+                       Logger::log("Deleting old global item entries from expired threads from ID ".$last_id." to ID ".$till_id);
                        $r = DBA::p("SELECT `id` FROM `item` WHERE `uid` = 0 AND
                                                NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) AND
                                                `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY AND `id` >= ? AND `id` <= ?
                                        ORDER BY `id` LIMIT ?", $last_id, $till_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found global item entries from expired threads: ".$count);
+                               Logger::log("found global item entries from expired threads: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["id"];
                                        DBA::delete('item', ['id' => $orphan["id"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 9, $last_id);
                        } else {
-                               logger("No global item entries from expired threads");
+                               Logger::log("No global item entries from expired threads");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." old global item entries from expired threads. Last ID: ".$last_id);
+                       Logger::log("Done deleting ".$count." old global item entries from expired threads. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-9', $last_id);
                } elseif ($stage == 10) {
                        $last_id = Config::get('system', 'dbclean-last-id-10', 0);
                        $days = intval(Config::get('system', 'dbclean_expire_conversation', 90));
 
-                       logger("Deleting old conversations. Last created: ".$last_id);
+                       Logger::log("Deleting old conversations. Last created: ".$last_id);
                        $r = DBA::p("SELECT `received`, `item-uri` FROM `conversation`
                                        WHERE `received` < UTC_TIMESTAMP() - INTERVAL ? DAY
                                        ORDER BY `received` LIMIT ?", $days, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
-                               logger("found old conversations: ".$count);
+                               Logger::log("found old conversations: ".$count);
                                while ($orphan = DBA::fetch($r)) {
                                        $last_id = $orphan["received"];
                                        DBA::delete('conversation', ['item-uri' => $orphan["item-uri"]]);
                                }
                                Worker::add(PRIORITY_MEDIUM, 'DBClean', 10, $last_id);
                        } else {
-                               logger("No old conversations found");
+                               Logger::log("No old conversations found");
                        }
                        DBA::close($r);
-                       logger("Done deleting ".$count." conversations. Last created: ".$last_id);
+                       Logger::log("Done deleting ".$count." conversations. Last created: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-10', $last_id);
                }
index 4feb341b372debd8f2c13ab81480cca763dbd792..59d506af3dd6ad4499e9879254351aa6308bb610 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Worker;
 use Friendica\BaseObject;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -33,7 +34,7 @@ class Delivery extends BaseObject
 
        public static function execute($cmd, $item_id, $contact_id)
        {
-               logger('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $contact_id, LOGGER_DEBUG);
+               Logger::log('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $contact_id, Logger::DEBUG);
 
                $top_level = false;
                $followup = false;
@@ -78,12 +79,12 @@ class Delivery extends BaseObject
                        DBA::close($itemdata);
 
                        if (empty($target_item)) {
-                               logger('Item ' . $item_id . "wasn't found. Quitting here.");
+                               Logger::log('Item ' . $item_id . "wasn't found. Quitting here.");
                                return;
                        }
 
                        if (empty($parent)) {
-                               logger('Parent ' . $parent_id . ' for item ' . $item_id . "wasn't found. Quitting here.");
+                               Logger::log('Parent ' . $parent_id . ' for item ' . $item_id . "wasn't found. Quitting here.");
                                return;
                        }
 
@@ -100,7 +101,7 @@ class Delivery extends BaseObject
                        // The count then showed more than one entry. The additional check should help.
                        // The check for the "count" should be superfluous, but I'm not totally sure by now, so we keep it.
                        if ((($parent['id'] == $item_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) {
-                               logger('Top level post');
+                               Logger::log('Top level post');
                                $top_level = true;
                        }
 
@@ -125,7 +126,7 @@ class Delivery extends BaseObject
                         */
 
                        if (!$top_level && ($parent['wall'] == 0) && stristr($target_item['uri'], $localhost)) {
-                               logger('Followup ' . $target_item["guid"], LOGGER_DEBUG);
+                               Logger::log('Followup ' . $target_item["guid"], Logger::DEBUG);
                                // local followup to remote post
                                $followup = true;
                        }
@@ -140,7 +141,7 @@ class Delivery extends BaseObject
                }
 
                if (empty($items)) {
-                       logger('No delivery data for  ' . $cmd . ' - Item ID: ' .$item_id . ' - Contact ID: ' . $contact_id);
+                       Logger::log('No delivery data for  ' . $cmd . ' - Item ID: ' .$item_id . ' - Contact ID: ' . $contact_id);
                }
 
                $owner = User::getOwnerDataById($uid);
@@ -162,7 +163,7 @@ class Delivery extends BaseObject
                        $contact['network'] = Protocol::DIASPORA;
                }
 
-               logger("Delivering " . $cmd . " followup=$followup - via network " . $contact['network']);
+               Logger::log("Delivering " . $cmd . " followup=$followup - via network " . $contact['network']);
 
                switch ($contact['network']) {
 
@@ -212,7 +213,7 @@ class Delivery extends BaseObject
         */
        private static function deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup)
        {
-               logger('Deliver ' . $target_item["guid"] . ' via DFRN to ' . (empty($contact['addr']) ? $contact['url'] : $contact['addr']));
+               Logger::log('Deliver ' . $target_item["guid"] . ' via DFRN to ' . (empty($contact['addr']) ? $contact['url'] : $contact['addr']));
 
                if ($cmd == self::MAIL) {
                        $item = $target_item;
@@ -240,7 +241,7 @@ class Delivery extends BaseObject
                        $atom = DFRN::entries($msgitems, $owner);
                }
 
-               logger('Notifier entry: ' . $contact["url"] . ' ' . $target_item["guid"] . ' entry: ' . $atom, LOGGER_DATA);
+               Logger::log('Notifier entry: ' . $contact["url"] . ' ' . $target_item["guid"] . ' entry: ' . $atom, Logger::DATA);
 
                $basepath =  implode('/', array_slice(explode('/', $contact['url']), 0, 3));
 
@@ -284,7 +285,7 @@ class Delivery extends BaseObject
 
                        // We never spool failed relay deliveries
                        if ($public_dfrn) {
-                               logger('Relay delivery to ' . $contact["url"] . ' with guid ' . $target_item["guid"] . ' returns ' . $deliver_status);
+                               Logger::log('Relay delivery to ' . $contact["url"] . ' with guid ' . $target_item["guid"] . ' returns ' . $deliver_status);
                                return;
                        }
 
@@ -299,10 +300,10 @@ class Delivery extends BaseObject
                        $deliver_status = DFRN::deliver($owner, $contact, $atom, false, true);
                }
 
-               logger('Delivery to ' . $contact["url"] . ' with guid ' . $target_item["guid"] . ' returns ' . $deliver_status);
+               Logger::log('Delivery to ' . $contact["url"] . ' with guid ' . $target_item["guid"] . ' returns ' . $deliver_status);
 
                if ($deliver_status < 0) {
-                       logger('Delivery failed: queuing message ' . $target_item["guid"] );
+                       Logger::log('Delivery failed: queuing message ' . $target_item["guid"] );
                        Queue::add($contact['id'], Protocol::DFRN, $atom, false, $target_item['guid']);
                }
 
@@ -342,7 +343,7 @@ class Delivery extends BaseObject
                        $loc = $contact['addr'];
                }
 
-               logger('Deliver ' . $target_item["guid"] . ' via Diaspora to ' . $loc);
+               Logger::log('Deliver ' . $target_item["guid"] . ' via Diaspora to ' . $loc);
 
                if (Config::get('system', 'dfrn_only') || !Config::get('system', 'diaspora_enabled')) {
                        return;
@@ -360,7 +361,7 @@ class Delivery extends BaseObject
                }
                if (($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) {
                        // top-level retraction
-                       logger('diaspora retract: ' . $loc);
+                       Logger::log('diaspora retract: ' . $loc);
                        Diaspora::sendRetraction($target_item, $owner, $contact, $public_message);
                        return;
                } elseif ($cmd == self::RELOCATION) {
@@ -368,22 +369,22 @@ class Delivery extends BaseObject
                        return;
                } elseif ($followup) {
                        // send comments and likes to owner to relay
-                       logger('diaspora followup: ' . $loc);
+                       Logger::log('diaspora followup: ' . $loc);
                        Diaspora::sendFollowup($target_item, $owner, $contact, $public_message);
                        return;
                } elseif ($target_item['uri'] !== $target_item['parent-uri']) {
                        // we are the relay - send comments, likes and relayable_retractions to our conversants
-                       logger('diaspora relay: ' . $loc);
+                       Logger::log('diaspora relay: ' . $loc);
                        Diaspora::sendRelay($target_item, $owner, $contact, $public_message);
                        return;
                } elseif ($top_level && !$walltowall) {
                        // currently no workable solution for sending walltowall
-                       logger('diaspora status: ' . $loc);
+                       Logger::log('diaspora status: ' . $loc);
                        Diaspora::sendStatus($target_item, $owner, $contact, $public_message);
                        return;
                }
 
-               logger('Unknown mode ' . $cmd . ' for ' . $loc);
+               Logger::log('Unknown mode ' . $cmd . ' for ' . $loc);
        }
 
        /**
@@ -415,7 +416,7 @@ class Delivery extends BaseObject
                        return;
                }
 
-               logger('Deliver ' . $target_item["guid"] . ' via mail to ' . $contact['addr']);
+               Logger::log('Deliver ' . $target_item["guid"] . ' via mail to ' . $contact['addr']);
 
                $reply_to = '';
                $mailacct = DBA::selectFirst('mailacct', ['reply_to'], ['uid' => $owner['uid']]);
index 63f2e3b6743f93f0d0fa4a7a26e64066fe8da7eb..b4b86e344e057384ed6f69e73569b9f81cbc52bb 100644 (file)
@@ -8,6 +8,7 @@ namespace Friendica\Worker;
 
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Util\Network;
@@ -33,7 +34,7 @@ class Directory
 
                Addon::callHooks('globaldir_update', $arr);
 
-               logger('Updating directory: ' . $arr['url'], LOGGER_DEBUG);
+               Logger::log('Updating directory: ' . $arr['url'], Logger::DEBUG);
                if (strlen($arr['url'])) {
                        Network::fetchUrl($dir . '?url=' . bin2hex($arr['url']));
                }
index c1583888c72ecb8b3efb13725b323ab79fe867d6..72df3420e804fe9555aa8286af89ef0cc483eff5 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Worker;
 
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -52,11 +53,11 @@ class DiscoverPoCo
                } elseif ($command == "check_profile") {
                        $mode = 8;
                } elseif ($command !== "") {
-                       logger("Unknown or missing parameter ".$command."\n");
+                       Logger::log("Unknown or missing parameter ".$command."\n");
                        return;
                }
 
-               logger('start '.$search);
+               Logger::log('start '.$search);
 
                if ($mode == 8) {
                        if ($param1 != "") {
@@ -89,7 +90,7 @@ class DiscoverPoCo
                        } else {
                                $result .= "failed";
                        }
-                       logger($result, LOGGER_DEBUG);
+                       Logger::log($result, Logger::DEBUG);
                } elseif ($mode == 3) {
                        GContact::updateSuggestions();
                } elseif (($mode == 2) && Config::get('system', 'poco_completion')) {
@@ -107,7 +108,7 @@ class DiscoverPoCo
                        }
                }
 
-               logger('end '.$search);
+               Logger::log('end '.$search);
 
                return;
        }
@@ -129,7 +130,7 @@ class DiscoverPoCo
                        if (!PortableContact::updateNeeded($server["created"], "", $server["last_failure"], $server["last_contact"])) {
                                continue;
                        }
-                       logger('Update server status for server '.$server["url"], LOGGER_DEBUG);
+                       Logger::log('Update server status for server '.$server["url"], Logger::DEBUG);
 
                        Worker::add(PRIORITY_LOW, "DiscoverPoCo", "server", $server["url"]);
 
@@ -140,7 +141,7 @@ class DiscoverPoCo
        }
 
        private static function discoverUsers() {
-               logger("Discover users", LOGGER_DEBUG);
+               Logger::log("Discover users", Logger::DEBUG);
 
                $starttime = time();
 
@@ -184,7 +185,7 @@ class DiscoverPoCo
                        }
 
                        if ((($server_url == "") && ($user["network"] == Protocol::FEED)) || $force_update || PortableContact::checkServer($server_url, $user["network"])) {
-                               logger('Check profile '.$user["url"]);
+                               Logger::log('Check profile '.$user["url"]);
                                Worker::add(PRIORITY_LOW, "DiscoverPoCo", "check_profile", $user["url"]);
 
                                if (++$checked > 100) {
@@ -208,7 +209,7 @@ class DiscoverPoCo
                if (!is_null($data)) {
                        // Only search for the same item every 24 hours
                        if (time() < $data + (60 * 60 * 24)) {
-                               logger("Already searched for ".$search." in the last 24 hours", LOGGER_DEBUG);
+                               Logger::log("Already searched for ".$search." in the last 24 hours", Logger::DEBUG);
                                return;
                        }
                }
@@ -221,7 +222,7 @@ class DiscoverPoCo
                                // Check if the contact already exists
                                $exists = q("SELECT `id`, `last_contact`, `last_failure`, `updated` FROM `gcontact` WHERE `nurl` = '%s'", normalise_link($jj->url));
                                if (DBA::isResult($exists)) {
-                                       logger("Profile ".$jj->url." already exists (".$search.")", LOGGER_DEBUG);
+                                       Logger::log("Profile ".$jj->url." already exists (".$search.")", Logger::DEBUG);
 
                                        if (($exists[0]["last_contact"] < $exists[0]["last_failure"]) &&
                                                ($exists[0]["updated"] < $exists[0]["last_failure"])) {
@@ -235,16 +236,16 @@ class DiscoverPoCo
                                $server_url = PortableContact::detectServer($jj->url);
                                if ($server_url != '') {
                                        if (!PortableContact::checkServer($server_url)) {
-                                               logger("Friendica server ".$server_url." doesn't answer.", LOGGER_DEBUG);
+                                               Logger::log("Friendica server ".$server_url." doesn't answer.", Logger::DEBUG);
                                                continue;
                                        }
-                                       logger("Friendica server ".$server_url." seems to be okay.", LOGGER_DEBUG);
+                                       Logger::log("Friendica server ".$server_url." seems to be okay.", Logger::DEBUG);
                                }
 
                                $data = Probe::uri($jj->url);
                                if ($data["network"] == Protocol::DFRN) {
-                                       logger("Profile ".$jj->url." is reachable (".$search.")", LOGGER_DEBUG);
-                                       logger("Add profile ".$jj->url." to local directory (".$search.")", LOGGER_DEBUG);
+                                       Logger::log("Profile ".$jj->url." is reachable (".$search.")", Logger::DEBUG);
+                                       Logger::log("Add profile ".$jj->url." to local directory (".$search.")", Logger::DEBUG);
 
                                        if ($jj->tags != "") {
                                                $data["keywords"] = $jj->tags;
@@ -254,7 +255,7 @@ class DiscoverPoCo
 
                                        GContact::update($data);
                                } else {
-                                       logger("Profile ".$jj->url." is not responding or no Friendica contact - but network ".$data["network"], LOGGER_DEBUG);
+                                       Logger::log("Profile ".$jj->url." is not responding or no Friendica contact - but network ".$data["network"], Logger::DEBUG);
                                }
                        }
                }
index de2133bdc804f4bff06017e57a2357980702cca0..21e873502ba1add6c95a555eab7b3e96b4699d16 100644 (file)
@@ -9,6 +9,7 @@ namespace Friendica\Worker;
 use Friendica\BaseObject;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
+use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Model\Item;
@@ -26,7 +27,7 @@ class Expire
                Hook::loadHooks();
 
                if ($param == 'delete') {
-                       logger('Delete expired items', LOGGER_DEBUG);
+                       Logger::log('Delete expired items', Logger::DEBUG);
                        // physically remove anything that has been deleted for more than two months
                        $condition = ["`deleted` AND `changed` < UTC_TIMESTAMP() - INTERVAL 60 DAY"];
                        $rows = DBA::select('item', ['id'],  $condition);
@@ -37,62 +38,62 @@ class Expire
 
                        // Normally we shouldn't have orphaned data at all.
                        // If we do have some, then we have to check why.
-                       logger('Deleting orphaned item activities - start', LOGGER_DEBUG);
+                       Logger::log('Deleting orphaned item activities - start', Logger::DEBUG);
                        $condition = ["NOT EXISTS (SELECT `iaid` FROM `item` WHERE `item`.`iaid` = `item-activity`.`id`)"];
                        DBA::delete('item-activity', $condition);
-                       logger('Orphaned item activities deleted: ' . DBA::affectedRows(), LOGGER_DEBUG);
+                       Logger::log('Orphaned item activities deleted: ' . DBA::affectedRows(), Logger::DEBUG);
 
-                       logger('Deleting orphaned item content - start', LOGGER_DEBUG);
+                       Logger::log('Deleting orphaned item content - start', Logger::DEBUG);
                        $condition = ["NOT EXISTS (SELECT `icid` FROM `item` WHERE `item`.`icid` = `item-content`.`id`)"];
                        DBA::delete('item-content', $condition);
-                       logger('Orphaned item content deleted: ' . DBA::affectedRows(), LOGGER_DEBUG);
+                       Logger::log('Orphaned item content deleted: ' . DBA::affectedRows(), Logger::DEBUG);
 
                        // make this optional as it could have a performance impact on large sites
                        if (intval(Config::get('system', 'optimize_items'))) {
                                DBA::e("OPTIMIZE TABLE `item`");
                        }
 
-                       logger('Delete expired items - done', LOGGER_DEBUG);
+                       Logger::log('Delete expired items - done', Logger::DEBUG);
                        return;
                } elseif (intval($param) > 0) {
                        $user = DBA::selectFirst('user', ['uid', 'username', 'expire'], ['uid' => $param]);
                        if (DBA::isResult($user)) {
-                               logger('Expire items for user '.$user['uid'].' ('.$user['username'].') - interval: '.$user['expire'], LOGGER_DEBUG);
+                               Logger::log('Expire items for user '.$user['uid'].' ('.$user['username'].') - interval: '.$user['expire'], Logger::DEBUG);
                                Item::expire($user['uid'], $user['expire']);
-                               logger('Expire items for user '.$user['uid'].' ('.$user['username'].') - done ', LOGGER_DEBUG);
+                               Logger::log('Expire items for user '.$user['uid'].' ('.$user['username'].') - done ', Logger::DEBUG);
                        }
                        return;
                } elseif ($param == 'hook' && !empty($hook_function)) {
                        foreach (Hook::getByName('expire') as $hook) {
                                if ($hook[1] == $hook_function) {
-                                       logger("Calling expire hook '" . $hook[1] . "'", LOGGER_DEBUG);
+                                       Logger::log("Calling expire hook '" . $hook[1] . "'", Logger::DEBUG);
                                        Hook::callSingle($a, 'expire', $hook, $data);
                                }
                        }
                        return;
                }
 
-               logger('expire: start');
+               Logger::log('expire: start');
 
                Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                'Expire', 'delete');
 
                $r = DBA::p("SELECT `uid`, `username` FROM `user` WHERE `expire` != 0");
                while ($row = DBA::fetch($r)) {
-                       logger('Calling expiry for user '.$row['uid'].' ('.$row['username'].')', LOGGER_DEBUG);
+                       Logger::log('Calling expiry for user '.$row['uid'].' ('.$row['username'].')', Logger::DEBUG);
                        Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                        'Expire', (int)$row['uid']);
                }
                DBA::close($r);
 
-               logger('expire: calling hooks');
+               Logger::log('expire: calling hooks');
                foreach (Hook::getByName('expire') as $hook) {
-                       logger("Calling expire hook for '" . $hook[1] . "'", LOGGER_DEBUG);
+                       Logger::log("Calling expire hook for '" . $hook[1] . "'", Logger::DEBUG);
                        Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                        'Expire', 'hook', $hook[1]);
                }
 
-               logger('expire: end');
+               Logger::log('expire: end');
 
                return;
        }
index 116ca207025d90cad7677b96cf8bb957d60bf2fa..55da28f914eaec004360d5cfe7cf06846508a64b 100644 (file)
@@ -6,6 +6,7 @@
 namespace Friendica\Worker;
 
 use Friendica\Core\Cache;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\GContact;
@@ -24,7 +25,7 @@ class GProbe {
                        DBA::escape(normalise_link($url))
                );
 
-               logger("gprobe start for ".normalise_link($url), LOGGER_DEBUG);
+               Logger::log("gprobe start for ".normalise_link($url), Logger::DEBUG);
 
                if (!DBA::isResult($r)) {
                        // Is it a DDoS attempt?
@@ -33,7 +34,7 @@ class GProbe {
                        $result = Cache::get("gprobe:".$urlparts["host"]);
                        if (!is_null($result)) {
                                if (in_array($result["network"], [Protocol::FEED, Protocol::PHANTOM])) {
-                                       logger("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), LOGGER_DEBUG);
+                                       Logger::log("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), Logger::DEBUG);
                                        return;
                                }
                        }
@@ -60,7 +61,7 @@ class GProbe {
                        }
                }
 
-               logger("gprobe end for ".normalise_link($url), LOGGER_DEBUG);
+               Logger::log("gprobe end for ".normalise_link($url), Logger::DEBUG);
                return;
        }
 }
index 480938ec534577a787856099c1c0271ea04c4352..2d0140c17161c443d868a15e7be1aac8f7ee1ae1 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\BaseObject;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -57,7 +58,7 @@ class Notifier
        {
                $a = BaseObject::getApp();
 
-               logger('notifier: invoked: '.$cmd.': '.$item_id, LOGGER_DEBUG);
+               Logger::log('notifier: invoked: '.$cmd.': '.$item_id, Logger::DEBUG);
 
                $top_level = false;
                $recipients = [];
@@ -104,7 +105,7 @@ class Notifier
 
                        $inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser(0);
                        foreach ($inboxes as $inbox) {
-                               logger('Account removal for user ' . $item_id . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+                               Logger::log('Account removal for user ' . $item_id . ' to ' . $inbox .' via ActivityPub', Logger::DEBUG);
                                Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                        'APDelivery', Delivery::REMOVAL, '', $inbox, $item_id);
                        }
@@ -147,7 +148,7 @@ class Notifier
                        }
 
                        if ((count($items) == 1) && ($items[0]['id'] === $target_item['id']) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
-                               logger('notifier: top level post');
+                               Logger::log('notifier: top level post');
                                $top_level = true;
                        }
                }
@@ -184,7 +185,7 @@ class Notifier
                        $condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]];
                        $thr_parent = Item::selectFirst($fields, $condition);
 
-                       logger('GUID: '.$target_item["guid"].': Parent is '.$parent['network'].'. Thread parent is '.$thr_parent['network'], LOGGER_DEBUG);
+                       Logger::log('GUID: '.$target_item["guid"].': Parent is '.$parent['network'].'. Thread parent is '.$thr_parent['network'], Logger::DEBUG);
 
                        // This is IMPORTANT!!!!
 
@@ -248,7 +249,7 @@ class Notifier
                                $recipients = [$parent['contact-id']];
                                $recipients_followup  = [$parent['contact-id']];
 
-                               logger('notifier: followup '.$target_item["guid"].' to '.$conversant_str, LOGGER_DEBUG);
+                               Logger::log('notifier: followup '.$target_item["guid"].' to '.$conversant_str, Logger::DEBUG);
 
                                //if (!$target_item['private'] && $target_item['wall'] &&
                                if (!$target_item['private'] &&
@@ -278,16 +279,16 @@ class Notifier
                                        $push_notify = false;
                                }
 
-                               logger("Notify ".$target_item["guid"]." via PuSH: ".($push_notify?"Yes":"No"), LOGGER_DEBUG);
+                               Logger::log("Notify ".$target_item["guid"]." via PuSH: ".($push_notify?"Yes":"No"), Logger::DEBUG);
                        } else {
                                $followup = false;
 
-                               logger('Distributing directly '.$target_item["guid"], LOGGER_DEBUG);
+                               Logger::log('Distributing directly '.$target_item["guid"], Logger::DEBUG);
 
                                // don't send deletions onward for other people's stuff
 
                                if ($target_item['deleted'] && !intval($target_item['wall'])) {
-                                       logger('notifier: ignoring delete notification for non-wall item');
+                                       Logger::log('notifier: ignoring delete notification for non-wall item');
                                        return;
                                }
 
@@ -328,7 +329,7 @@ class Notifier
                                }
 
                                if (count($url_recipients)) {
-                                       logger('notifier: '.$target_item["guid"].' url_recipients ' . print_r($url_recipients,true));
+                                       Logger::log('notifier: '.$target_item["guid"].' url_recipients ' . print_r($url_recipients,true));
                                }
 
                                $conversants = array_unique($conversants);
@@ -345,31 +346,31 @@ class Notifier
                        if (($thr_parent && ($thr_parent['network'] == Protocol::OSTATUS)) || ($parent['network'] == Protocol::OSTATUS)) {
                                $diaspora_delivery = false;
 
-                               logger('Some parent is OStatus for '.$target_item["guid"]." - Author: ".$thr_parent['author-id']." - Owner: ".$thr_parent['owner-id'], LOGGER_DEBUG);
+                               Logger::log('Some parent is OStatus for '.$target_item["guid"]." - Author: ".$thr_parent['author-id']." - Owner: ".$thr_parent['owner-id'], Logger::DEBUG);
 
                                // Send a salmon to the parent author
                                $probed_contact = DBA::selectFirst('contact', ['url', 'notify'], ['id' => $thr_parent['author-id']]);
                                if (DBA::isResult($probed_contact) && !empty($probed_contact["notify"])) {
-                                       logger('Notify parent author '.$probed_contact["url"].': '.$probed_contact["notify"]);
+                                       Logger::log('Notify parent author '.$probed_contact["url"].': '.$probed_contact["notify"]);
                                        $url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
                                }
 
                                // Send a salmon to the parent owner
                                $probed_contact = DBA::selectFirst('contact', ['url', 'notify'], ['id' => $thr_parent['owner-id']]);
                                if (DBA::isResult($probed_contact) && !empty($probed_contact["notify"])) {
-                                       logger('Notify parent owner '.$probed_contact["url"].': '.$probed_contact["notify"]);
+                                       Logger::log('Notify parent owner '.$probed_contact["url"].': '.$probed_contact["notify"]);
                                        $url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
                                }
 
                                // Send a salmon notification to every person we mentioned in the post
                                $arr = explode(',',$target_item['tag']);
                                foreach ($arr as $x) {
-                                       //logger('Checking tag '.$x, LOGGER_DEBUG);
+                                       //Logger::log('Checking tag '.$x, Logger::DEBUG);
                                        $matches = null;
                                        if (preg_match('/@\[url=([^\]]*)\]/',$x,$matches)) {
                                                        $probed_contact = Probe::uri($matches[1]);
                                                if ($probed_contact["notify"] != "") {
-                                                       logger('Notify mentioned user '.$probed_contact["url"].': '.$probed_contact["notify"]);
+                                                       Logger::log('Notify mentioned user '.$probed_contact["url"].': '.$probed_contact["notify"]);
                                                        $url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
                                                }
                                        }
@@ -419,7 +420,7 @@ class Notifier
                // delivery loop
                if (DBA::isResult($r)) {
                        foreach ($r as $contact) {
-                               logger("Deliver ".$item_id." to ".$contact['url']." via network ".$contact['network'], LOGGER_DEBUG);
+                               Logger::log("Deliver ".$item_id." to ".$contact['url']." via network ".$contact['network'], Logger::DEBUG);
 
                                Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                                'Delivery', $cmd, $item_id, (int)$contact['id']);
@@ -432,7 +433,7 @@ class Notifier
                        $slap = OStatus::salmon($target_item, $owner);
                        foreach ($url_recipients as $url) {
                                if ($url) {
-                                       logger('notifier: urldelivery: ' . $url);
+                                       Logger::log('notifier: urldelivery: ' . $url);
                                        $deliver_status = Salmon::slapper($owner, $url, $slap);
                                        /// @TODO Redeliver/queue these items on failure, though there is no contact record
                                }
@@ -469,19 +470,19 @@ class Notifier
                        $r = array_merge($r2, $r1);
 
                        if (DBA::isResult($r)) {
-                               logger('pubdeliver '.$target_item["guid"].': '.print_r($r,true), LOGGER_DEBUG);
+                               Logger::log('pubdeliver '.$target_item["guid"].': '.print_r($r,true), Logger::DEBUG);
 
                                foreach ($r as $rr) {
                                        // except for Diaspora batch jobs
                                        // Don't deliver to folks who have already been delivered to
 
                                        if (($rr['network'] !== Protocol::DIASPORA) && (in_array($rr['id'], $conversants))) {
-                                               logger('notifier: already delivered id=' . $rr['id']);
+                                               Logger::log('notifier: already delivered id=' . $rr['id']);
                                                continue;
                                        }
 
                                        if (!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION]) && !$followup) {
-                                               logger('notifier: delivery agent: '.$rr['name'].' '.$rr['id'].' '.$rr['network'].' '.$target_item["guid"]);
+                                               Logger::log('notifier: delivery agent: '.$rr['name'].' '.$rr['id'].' '.$rr['network'].' '.$target_item["guid"]);
                                                Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                                                'Delivery', $cmd, $item_id, (int)$rr['id']);
                                        }
@@ -493,13 +494,13 @@ class Notifier
 
                // Notify PuSH subscribers (Used for OStatus distribution of regular posts)
                if ($push_notify) {
-                       logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG);
+                       Logger::log('Activating internal PuSH for item '.$item_id, Logger::DEBUG);
 
                        // Handling the pubsubhubbub requests
                        PushSubscriber::publishFeed($owner['uid'], $a->queue['priority']);
                }
 
-               logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG);
+               Logger::log('notifier: calling hooks for ' . $cmd . ' ' . $item_id, Logger::DEBUG);
 
                if ($normal_mode) {
                        Hook::fork($a->queue['priority'], 'notifier_normal', $target_item);
@@ -517,15 +518,15 @@ class Notifier
 
                if ($target_item['origin']) {
                        $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $uid);
-                       logger('Origin item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', LOGGER_DEBUG);
+                       Logger::log('Origin item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', Logger::DEBUG);
                } elseif (!DBA::exists('conversation', ['item-uri' => $target_item['uri'], 'protocol' => Conversation::PARCEL_ACTIVITYPUB])) {
-                       logger('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' is no AP post. It will not be distributed.', LOGGER_DEBUG);
+                       Logger::log('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' is no AP post. It will not be distributed.', Logger::DEBUG);
                        return;
                } else {
                        // Remote items are transmitted via the personal inboxes.
                        // Doing so ensures that the dedicated receiver will get the message.
                        $personal = true;
-                       logger('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', LOGGER_DEBUG);
+                       Logger::log('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', Logger::DEBUG);
                }
 
                if ($parent['origin']) {
@@ -534,7 +535,7 @@ class Notifier
                }
 
                if (empty($inboxes)) {
-                       logger('No inboxes found for item ' . $item_id . ' with URL ' . $target_item['uri'] . '. It will not be distributed.', LOGGER_DEBUG);
+                       Logger::log('No inboxes found for item ' . $item_id . ' with URL ' . $target_item['uri'] . '. It will not be distributed.', Logger::DEBUG);
                        return;
                }
 
@@ -542,7 +543,7 @@ class Notifier
                ActivityPub\Transmitter::createCachedActivityFromItem($item_id, true);
 
                foreach ($inboxes as $inbox) {
-                       logger('Deliver ' . $item_id .' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+                       Logger::log('Deliver ' . $item_id .' to ' . $inbox .' via ActivityPub', Logger::DEBUG);
 
                        Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                        'APDelivery', $cmd, $item_id, $inbox, $uid);
index 5227c7983d58f98433ee046d6c4d7108bae17428..77745b8070dcb496b406e66e91322919a88b2c67 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Worker;
 use Friendica\BaseObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
@@ -29,7 +30,7 @@ class OnePoll
 
                require_once 'include/items.php';
 
-               logger('start');
+               Logger::log('start');
 
                $manual_id  = 0;
                $generation = 0;
@@ -42,7 +43,7 @@ class OnePoll
                }
 
                if (!$contact_id) {
-                       logger('no contact');
+                       Logger::log('no contact');
                        return;
                }
 
@@ -50,7 +51,7 @@ class OnePoll
 
                $contact = DBA::selectFirst('contact', [], ['id' => $contact_id]);
                if (!DBA::isResult($contact)) {
-                       logger('Contact not found or cannot be used.');
+                       Logger::log('Contact not found or cannot be used.');
                        return;
                }
 
@@ -86,7 +87,7 @@ class OnePoll
                        $updated = DateTimeFormat::utcNow();
 
                        if ($last_updated) {
-                               logger('Contact '.$contact['id'].' had last update on '.$last_updated, LOGGER_DEBUG);
+                               Logger::log('Contact '.$contact['id'].' had last update on '.$last_updated, Logger::DEBUG);
 
                                // The last public item can be older than the last item we got
                                if ($last_updated < $contact['last-item']) {
@@ -99,7 +100,7 @@ class OnePoll
                        } else {
                                self::updateContact($contact, ['last-update' => $updated, 'failure_update' => $updated]);
                                Contact::markForArchival($contact);
-                               logger('Contact '.$contact['id'].' is marked for archival', LOGGER_DEBUG);
+                               Logger::log('Contact '.$contact['id'].' is marked for archival', Logger::DEBUG);
                        }
 
                        return;
@@ -129,7 +130,7 @@ class OnePoll
                // Update the contact entry
                if (($contact['network'] === Protocol::OSTATUS) || ($contact['network'] === Protocol::DIASPORA) || ($contact['network'] === Protocol::DFRN)) {
                        if (!PortableContact::reachable($contact['url'])) {
-                               logger("Skipping probably dead contact ".$contact['url']);
+                               Logger::log("Skipping probably dead contact ".$contact['url']);
 
                                // set the last-update so we don't keep polling
                                DBA::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
@@ -138,7 +139,7 @@ class OnePoll
 
                        if (!Contact::updateFromProbe($contact["id"])) {
                                Contact::markForArchival($contact);
-                               logger('Contact is marked dead');
+                               Logger::log('Contact is marked dead');
 
                                // set the last-update so we don't keep polling
                                DBA::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
@@ -153,7 +154,7 @@ class OnePoll
                }
 
                if ($importer_uid == 0) {
-                       logger('Ignore public contacts');
+                       Logger::log('Ignore public contacts');
 
                        // set the last-update so we don't keep polling
                        DBA::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
@@ -165,7 +166,7 @@ class OnePoll
                );
 
                if (!DBA::isResult($r)) {
-                       logger('No self contact for user '.$importer_uid);
+                       Logger::log('No self contact for user '.$importer_uid);
 
                        // set the last-update so we don't keep polling
                        DBA::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
@@ -175,7 +176,7 @@ class OnePoll
                $importer = $r[0];
                $url = '';
 
-               logger("poll: ({$contact['network']}-{$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
+               Logger::log("poll: ({$contact['network']}-{$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
 
                if ($contact['network'] === Protocol::DFRN) {
                        $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
@@ -213,10 +214,10 @@ class OnePoll
                        $handshake_xml = $curlResult->getBody();
                        $html_code = $curlResult->getReturnCode();
 
-                       logger('handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
+                       Logger::log('handshake with url ' . $url . ' returns xml: ' . $handshake_xml, Logger::DATA);
 
                        if (!strlen($handshake_xml) || ($html_code >= 400) || !$html_code) {
-                               logger("$url appears to be dead - marking for death ");
+                               Logger::log("$url appears to be dead - marking for death ");
 
                                // dead connection - might be a transient event, or this might
                                // mean the software was uninstalled or the domain expired.
@@ -231,7 +232,7 @@ class OnePoll
                        }
 
                        if (!strstr($handshake_xml, '<')) {
-                               logger('response from ' . $url . ' did not contain XML.');
+                               Logger::log('response from ' . $url . ' did not contain XML.');
 
                                Contact::markForArchival($contact);
 
@@ -244,7 +245,7 @@ class OnePoll
                        $res = XML::parseString($handshake_xml);
 
                        if (intval($res->status) == 1) {
-                               logger("$url replied status 1 - marking for death ");
+                               Logger::log("$url replied status 1 - marking for death ");
 
                                // we may not be friends anymore. Will keep trying for one month.
                                // set the last-update so we don't keep polling
@@ -253,7 +254,7 @@ class OnePoll
 
                                Contact::markForArchival($contact);
                        } elseif ($contact['term-date'] > DBA::NULL_DATETIME) {
-                               logger("$url back from the dead - removing mark for death");
+                               Logger::log("$url back from the dead - removing mark for death");
                                Contact::unmarkForArchival($contact);
                        }
 
@@ -291,7 +292,7 @@ class OnePoll
 
                        if ($final_dfrn_id != $orig_id) {
                                // did not decode properly - cannot trust this site
-                               logger('ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
+                               Logger::log('ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
 
                                // set the last-update so we don't keep polling
                                DBA::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
@@ -347,7 +348,7 @@ class OnePoll
                        $xml = $curlResult->getBody();
 
                } elseif ($contact['network'] === Protocol::MAIL) {
-                       logger("Mail: Fetching for ".$contact['addr'], LOGGER_DEBUG);
+                       Logger::log("Mail: Fetching for ".$contact['addr'], Logger::DEBUG);
 
                        $mail_disabled = ((function_exists('imap_open') && !Config::get('system', 'imap_disabled')) ? 0 : 1);
                        if ($mail_disabled) {
@@ -357,7 +358,7 @@ class OnePoll
                                return;
                        }
 
-                       logger("Mail: Enabled", LOGGER_DEBUG);
+                       Logger::log("Mail: Enabled", Logger::DEBUG);
 
                        $mbox = null;
                        $user = DBA::selectFirst('user', ['prvkey'], ['uid' => $importer_uid]);
@@ -370,13 +371,13 @@ class OnePoll
                                openssl_private_decrypt(hex2bin($mailconf['pass']), $password, $user['prvkey']);
                                $mbox = Email::connect($mailbox, $mailconf['user'], $password);
                                unset($password);
-                               logger("Mail: Connect to " . $mailconf['user']);
+                               Logger::log("Mail: Connect to " . $mailconf['user']);
                                if ($mbox) {
                                        $fields = ['last_check' => DateTimeFormat::utcNow()];
                                        DBA::update('mailacct', $fields, ['id' => $mailconf['id']]);
-                                       logger("Mail: Connected to " . $mailconf['user']);
+                                       Logger::log("Mail: Connected to " . $mailconf['user']);
                                } else {
-                                       logger("Mail: Connection error ".$mailconf['user']." ".print_r(imap_errors(), true));
+                                       Logger::log("Mail: Connection error ".$mailconf['user']." ".print_r(imap_errors(), true));
                                }
                        }
 
@@ -384,17 +385,17 @@ class OnePoll
                                $msgs = Email::poll($mbox, $contact['addr']);
 
                                if (count($msgs)) {
-                                       logger("Mail: Parsing ".count($msgs)." mails from ".$contact['addr']." for ".$mailconf['user'], LOGGER_DEBUG);
+                                       Logger::log("Mail: Parsing ".count($msgs)." mails from ".$contact['addr']." for ".$mailconf['user'], Logger::DEBUG);
 
                                        $metas = Email::messageMeta($mbox, implode(',', $msgs));
 
                                        if (count($metas) != count($msgs)) {
-                                               logger("for " . $mailconf['user'] . " there are ". count($msgs) . " messages but received " . count($metas) . " metas", LOGGER_DEBUG);
+                                               Logger::log("for " . $mailconf['user'] . " there are ". count($msgs) . " messages but received " . count($metas) . " metas", Logger::DEBUG);
                                        } else {
                                                $msgs = array_combine($msgs, $metas);
 
                                                foreach ($msgs as $msg_uid => $meta) {
-                                                       logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
+                                                       Logger::log("Mail: Parsing mail ".$msg_uid, Logger::DATA);
 
                                                        $datarray = [];
                                                        $datarray['verb'] = ACTIVITY_POST;
@@ -409,7 +410,7 @@ class OnePoll
                                                        $condition = ['uid' => $importer_uid, 'uri' => $datarray['uri']];
                                                        $item = Item::selectFirst($fields, $condition);
                                                        if (DBA::isResult($item)) {
-                                                               logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user']." UID: ".$importer_uid." URI: ".$datarray['uri'],LOGGER_DEBUG);
+                                                               Logger::log("Mail: Seen before ".$msg_uid." for ".$mailconf['user']." UID: ".$importer_uid." URI: ".$datarray['uri'],Logger::DEBUG);
 
                                                                // Only delete when mails aren't automatically moved or deleted
                                                                if (($mailconf['action'] != 1) && ($mailconf['action'] != 3))
@@ -420,18 +421,18 @@ class OnePoll
 
                                                                switch ($mailconf['action']) {
                                                                        case 0:
-                                                                               logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", LOGGER_DEBUG);
+                                                                               Logger::log("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", Logger::DEBUG);
                                                                                break;
                                                                        case 1:
-                                                                               logger("Mail: Deleting ".$msg_uid." for ".$mailconf['user']);
+                                                                               Logger::log("Mail: Deleting ".$msg_uid." for ".$mailconf['user']);
                                                                                imap_delete($mbox, $msg_uid, FT_UID);
                                                                                break;
                                                                        case 2:
-                                                                               logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf['user']);
+                                                                               Logger::log("Mail: Mark as seen ".$msg_uid." for ".$mailconf['user']);
                                                                                imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
                                                                                break;
                                                                        case 3:
-                                                                               logger("Mail: Moving ".$msg_uid." to ".$mailconf['movetofolder']." for ".$mailconf['user']);
+                                                                               Logger::log("Mail: Moving ".$msg_uid." to ".$mailconf['movetofolder']." for ".$mailconf['user']);
                                                                                imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
                                                                                if ($mailconf['movetofolder'] != "") {
                                                                                        imap_mail_move($mbox, $msg_uid, $mailconf['movetofolder'], FT_UID);
@@ -502,13 +503,13 @@ class OnePoll
 
                                                        $r = Email::getMessage($mbox, $msg_uid, $reply);
                                                        if (!$r) {
-                                                               logger("Mail: can't fetch msg ".$msg_uid." for ".$mailconf['user']);
+                                                               Logger::log("Mail: can't fetch msg ".$msg_uid." for ".$mailconf['user']);
                                                                continue;
                                                        }
                                                        $datarray['body'] = escape_tags($r['body']);
                                                        $datarray['body'] = BBCode::limitBodySize($datarray['body']);
 
-                                                       logger("Mail: Importing ".$msg_uid." for ".$mailconf['user']);
+                                                       Logger::log("Mail: Importing ".$msg_uid." for ".$mailconf['user']);
 
                                                        /// @TODO Adding a gravatar for the original author would be cool
 
@@ -554,18 +555,18 @@ class OnePoll
 
                                                        switch ($mailconf['action']) {
                                                                case 0:
-                                                                       logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", LOGGER_DEBUG);
+                                                                       Logger::log("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", Logger::DEBUG);
                                                                        break;
                                                                case 1:
-                                                                       logger("Mail: Deleting ".$msg_uid." for ".$mailconf['user']);
+                                                                       Logger::log("Mail: Deleting ".$msg_uid." for ".$mailconf['user']);
                                                                        imap_delete($mbox, $msg_uid, FT_UID);
                                                                        break;
                                                                case 2:
-                                                                       logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf['user']);
+                                                                       Logger::log("Mail: Mark as seen ".$msg_uid." for ".$mailconf['user']);
                                                                        imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
                                                                        break;
                                                                case 3:
-                                                                       logger("Mail: Moving ".$msg_uid." to ".$mailconf['movetofolder']." for ".$mailconf['user']);
+                                                                       Logger::log("Mail: Moving ".$msg_uid." to ".$mailconf['movetofolder']." for ".$mailconf['user']);
                                                                        imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
                                                                        if ($mailconf['movetofolder'] != "") {
                                                                                imap_mail_move($mbox, $msg_uid, $mailconf['movetofolder'], FT_UID);
@@ -575,18 +576,18 @@ class OnePoll
                                                }
                                        }
                                } else {
-                                       logger("Mail: no mails for ".$mailconf['user']);
+                                       Logger::log("Mail: no mails for ".$mailconf['user']);
                                }
 
-                               logger("Mail: closing connection for ".$mailconf['user']);
+                               Logger::log("Mail: closing connection for ".$mailconf['user']);
                                imap_close($mbox);
                        }
                }
 
                if ($xml) {
-                       logger('received xml : ' . $xml, LOGGER_DATA);
+                       Logger::log('received xml : ' . $xml, Logger::DATA);
                        if (!strstr($xml, '<')) {
-                               logger('post_handshake: response from ' . $url . ' did not contain XML.');
+                               Logger::log('post_handshake: response from ' . $url . ' did not contain XML.');
 
                                $fields = ['last-update' => DateTimeFormat::utcNow(), 'failure_update' => DateTimeFormat::utcNow()];
                                self::updateContact($contact, $fields);
@@ -595,7 +596,7 @@ class OnePoll
                        }
 
 
-                       logger("Consume feed of contact ".$contact['id']);
+                       Logger::log("Consume feed of contact ".$contact['id']);
 
                        consume_feed($xml, $importer, $contact, $hub);
 
@@ -617,10 +618,10 @@ class OnePoll
                                $hub_update = true;
                        }
 
-                       logger("Contact ".$contact['id']." returned hub: ".$hub." Network: ".$contact['network']." Relation: ".$contact['rel']." Update: ".$hub_update);
+                       Logger::log("Contact ".$contact['id']." returned hub: ".$hub." Network: ".$contact['network']." Relation: ".$contact['rel']." Update: ".$hub_update);
 
                        if (strlen($hub) && $hub_update && (($contact['rel'] != Contact::FOLLOWER) || $contact['network'] == Protocol::FEED)) {
-                               logger('hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
+                               Logger::log('hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
                                $hubs = explode(',', $hub);
 
                                if (count($hubs)) {
index cebc27ca55b83644e14242ac627954ced123d660..808d47299fe9455b034efee3999e6fffe1a4a4ae 100644 (file)
@@ -7,9 +7,10 @@
 namespace Friendica\Worker;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
+use Friendica\Core\Worker;
 use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\ActivityPub;
-use Friendica\Core\Worker;
 
 class ProfileUpdate {
        public static function execute($uid = 0) {
@@ -22,7 +23,7 @@ class ProfileUpdate {
                $inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser($uid);
 
                foreach ($inboxes as $inbox) {
-                       logger('Profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+                       Logger::log('Profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', Logger::DEBUG);
                        Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
                                'APDelivery', Delivery::PROFILEUPDATE, '', $inbox, $uid);
                }
index 38d9c07868a56b75edc592d22f3f55a3d55255ae..801bdc888065e6b6fe2075803e9bcdbfeab9dd11 100644 (file)
@@ -6,6 +6,7 @@
 namespace Friendica\Worker;
 
 use Friendica\BaseObject;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\PushSubscriber;
@@ -37,7 +38,7 @@ class PubSubPublish
                /// @todo Check server status with PortableContact::checkServer()
                // Before this can be done we need a way to safely detect the server url.
 
-               logger("Generate feed of user " . $subscriber['nickname']. " to " . $subscriber['callback_url']. " - last updated " . $subscriber['last_update'], LOGGER_DEBUG);
+               Logger::log("Generate feed of user " . $subscriber['nickname']. " to " . $subscriber['callback_url']. " - last updated " . $subscriber['last_update'], Logger::DEBUG);
 
                $last_update = $subscriber['last_update'];
                $params = OStatus::feed($subscriber['nickname'], $last_update);
@@ -54,7 +55,7 @@ class PubSubPublish
                                        $subscriber['topic']),
                                "X-Hub-Signature: sha1=" . $hmac_sig];
 
-               logger('POST ' . print_r($headers, true) . "\n" . $params, LOGGER_DATA);
+               Logger::log('POST ' . print_r($headers, true) . "\n" . $params, Logger::DATA);
 
                $postResult = Network::post($subscriber['callback_url'], $params, $headers);
                $ret = $postResult->getReturnCode();
@@ -62,11 +63,11 @@ class PubSubPublish
                $condition = ['id' => $subscriber['id']];
 
                if ($ret >= 200 && $ret <= 299) {
-                       logger('Successfully pushed to ' . $subscriber['callback_url']);
+                       Logger::log('Successfully pushed to ' . $subscriber['callback_url']);
 
                        PushSubscriber::reset($subscriber['id'], $last_update);
                } else {
-                       logger('Delivery error when pushing to ' . $subscriber['callback_url'] . ' HTTP: ' . $ret);
+                       Logger::log('Delivery error when pushing to ' . $subscriber['callback_url'] . ' HTTP: ' . $ret);
 
                        PushSubscriber::delay($subscriber['id']);
                }
index 6cad9ac53f8d8ecb00bcde5dbc2028da1bda3122..8dc34a594a1eda8a035d2a505b87a5c2b8b2026d 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Worker;
 use Friendica\Core\Addon;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
@@ -32,7 +33,7 @@ class Queue
                $no_dead_check = Config::get('system', 'queue_no_dead_check', false);
 
                if (!$queue_id) {
-                       logger('filling queue jobs - start');
+                       Logger::log('filling queue jobs - start');
 
                        // Handling the pubsubhubbub requests
                        PushSubscriber::requeue();
@@ -43,11 +44,11 @@ class Queue
 
                        if (DBA::isResult($r)) {
                                foreach ($r as $q_item) {
-                                       logger('Call queue for id ' . $q_item['id']);
+                                       Logger::log('Call queue for id ' . $q_item['id']);
                                        Worker::add(['priority' => PRIORITY_LOW, 'dont_fork' => true], "Queue", (int) $q_item['id']);
                                }
                        }
-                       logger('filling queue jobs - end');
+                       Logger::log('filling queue jobs - end');
                        return;
                }
 
@@ -72,7 +73,7 @@ class Queue
                $dead = Cache::get($cachekey_deadguy . $contact['notify']);
 
                if (!is_null($dead) && $dead && !$no_dead_check) {
-                       logger('queue: skipping known dead url: ' . $contact['notify']);
+                       Logger::log('queue: skipping known dead url: ' . $contact['notify']);
                        QueueModel::updateTime($q_item['id']);
                        return;
                }
@@ -84,14 +85,14 @@ class Queue
                                $vital = Cache::get($cachekey_server . $server);
 
                                if (is_null($vital)) {
-                                       logger("Check server " . $server . " (" . $contact["network"] . ")");
+                                       Logger::log("Check server " . $server . " (" . $contact["network"] . ")");
 
                                        $vital = PortableContact::checkServer($server, $contact["network"], true);
                                        Cache::set($cachekey_server . $server, $vital, Cache::MINUTE);
                                }
 
                                if (!is_null($vital) && !$vital) {
-                                       logger('queue: skipping dead server: ' . $server);
+                                       Logger::log('queue: skipping dead server: ' . $server);
                                        QueueModel::updateTime($q_item['id']);
                                        return;
                                }
@@ -112,7 +113,7 @@ class Queue
 
                switch ($contact['network']) {
                        case Protocol::DFRN:
-                               logger('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
+                               Logger::log('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
                                $deliver_status = DFRN::deliver($owner, $contact, $data);
 
                                if (($deliver_status >= 200) && ($deliver_status <= 299)) {
@@ -124,7 +125,7 @@ class Queue
                                break;
 
                        case Protocol::OSTATUS:
-                               logger('queue: slapdelivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
+                               Logger::log('queue: slapdelivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
                                $deliver_status = Salmon::slapper($owner, $contact['notify'], $data);
 
                                if ($deliver_status == -1) {
@@ -136,7 +137,7 @@ class Queue
                                break;
 
                        case Protocol::DIASPORA:
-                               logger('queue: diaspora_delivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
+                               Logger::log('queue: diaspora_delivery: item ' . $q_item['id'] . ' for ' . $contact['name'] . ' <' . $contact['url'] . '>');
                                $deliver_status = Diaspora::transmit($owner, $contact, $data, $public, true, 'Queue:' . $q_item['id'], true);
 
                                if ((($deliver_status >= 200) && ($deliver_status <= 299)) ||
@@ -159,7 +160,7 @@ class Queue
                                }
                                break;
                }
-               logger('Deliver status ' . (int)$deliver_status . ' for item ' . $q_item['id'] . ' to ' . $contact['name'] . ' <' . $contact['url'] . '>');
+               Logger::log('Deliver status ' . (int)$deliver_status . ' for item ' . $q_item['id'] . ' to ' . $contact['name'] . ' <' . $contact['url'] . '>');
 
                return;
        }
index 31474abfbf4deccf99e606e7d745270421527c1f..2efd77d553779d3cc2fa3f759ba8e6466389a818 100644 (file)
@@ -5,10 +5,11 @@
  */
 namespace Friendica\Worker;
 
-use Friendica\Model\Item;
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
+use Friendica\Model\Item;
 
-require_once("include/items.php");
+require_once "include/items.php";
 
 class SpoolPost {
        public static function execute() {
@@ -49,7 +50,7 @@ class SpoolPost {
 
                                        $result = Item::insert($arr);
 
-                                       logger("Spool file ".$file." stored: ".$result, LOGGER_DEBUG);
+                                       Logger::log("Spool file ".$file." stored: ".$result, Logger::DEBUG);
                                        unlink($fullfile);
                                }
                                closedir($dh);
index 3dac20b6cf4b9e71a99df1a7f8dfd99fa35ab096..cccaed8e2b4dce7b49d04f4b59b7f5b9dfa092ca 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Friendica\Worker;
 
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
 
 class TagUpdate
@@ -10,7 +11,7 @@ class TagUpdate
        {
                $messages = DBA::p("SELECT `oid`,`item`.`guid`, `item`.`created`, `item`.`received` FROM `term` INNER JOIN `item` ON `item`.`id`=`term`.`oid` WHERE `term`.`otype` = 1 AND `term`.`guid` = ''");
 
-               logger('fetched messages: ' . DBA::numRows($messages));
+               Logger::log('fetched messages: ' . DBA::numRows($messages));
                while ($message = DBA::fetch($messages)) {
                        if ($message['uid'] == 0) {
                                $global = true;
@@ -29,7 +30,7 @@ class TagUpdate
 
                $messages = DBA::select('item', ['guid'], ['uid' => 0]);
 
-               logger('fetched messages: ' . DBA::numRows($messages));
+               Logger::log('fetched messages: ' . DBA::numRows($messages));
                while ($message = DBA::fetch(messages)) {
                        DBA::update('item', ['global' => true], ['guid' => $message['guid']]);
                }
index 67362917c379418ed2d98652e332e99b351ffd58..b7a78b51f4bef72c7fb6d4b4b7fa7b8ba8c2918a 100644 (file)
@@ -6,6 +6,7 @@
 
 namespace Friendica\Worker;
 
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Network\Probe;
@@ -16,10 +17,10 @@ class UpdateGContact
 {
        public static function execute($contact_id)
        {
-               logger('update_gcontact: start');
+               Logger::log('update_gcontact: start');
 
                if (empty($contact_id)) {
-                       logger('update_gcontact: no contact');
+                       Logger::log('update_gcontact: no contact');
                        return;
                }
 
index 6365f6cc0df864aa297cfbdb6c2e54ff2bedb098..31408d2a544da1b1818cd8510c5f2fb111ae7711 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-27 21:18+0000\n"
+"POT-Creation-Date: 2018-10-31 09:45+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,9660 +18,9720 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 
-#: index.php:265 mod/apps.php:14
-msgid "You must be logged in to use addons. "
-msgstr ""
+#: include/api.php:1141
+#, php-format
+msgid "Daily posting limit of %d post reached. The post was rejected."
+msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
+msgstr[0] ""
+msgstr[1] ""
 
-#: index.php:312 mod/fetch.php:20 mod/fetch.php:47 mod/fetch.php:54
-#: mod/help.php:62
-msgid "Not Found"
-msgstr ""
+#: include/api.php:1155
+#, php-format
+msgid "Weekly posting limit of %d post reached. The post was rejected."
+msgid_plural "Weekly posting limit of %d posts reached. The post was rejected."
+msgstr[0] ""
+msgstr[1] ""
 
-#: index.php:317 mod/viewcontacts.php:35 mod/dfrn_poll.php:486 mod/help.php:65
-#: mod/cal.php:44
-msgid "Page not found."
+#: include/api.php:1169
+#, php-format
+msgid "Monthly posting limit of %d post reached. The post was rejected."
 msgstr ""
 
-#: index.php:435 mod/group.php:83 mod/profperm.php:29
-msgid "Permission denied"
+#: include/api.php:4319 mod/photos.php:92 mod/photos.php:200 mod/photos.php:733
+#: mod/photos.php:1166 mod/photos.php:1183 mod/photos.php:1678
+#: mod/profile_photo.php:86 mod/profile_photo.php:95 mod/profile_photo.php:104
+#: mod/profile_photo.php:213 mod/profile_photo.php:302
+#: mod/profile_photo.php:312 src/Model/User.php:650 src/Model/User.php:658
+#: src/Model/User.php:666
+msgid "Profile Photos"
 msgstr ""
 
-#: index.php:436 include/items.php:413 mod/crepair.php:100
-#: mod/wallmessage.php:16 mod/wallmessage.php:40 mod/wallmessage.php:79
-#: mod/wallmessage.php:103 mod/dfrn_confirm.php:67 mod/dirfind.php:27
-#: mod/manage.php:131 mod/settings.php:43 mod/settings.php:149
-#: mod/settings.php:665 mod/common.php:28 mod/network.php:34 mod/group.php:26
-#: mod/delegate.php:27 mod/delegate.php:45 mod/delegate.php:56
-#: mod/repair_ostatus.php:16 mod/viewcontacts.php:60 mod/unfollow.php:20
-#: mod/unfollow.php:73 mod/unfollow.php:105 mod/register.php:53
-#: mod/notifications.php:67 mod/message.php:60 mod/message.php:105
-#: mod/ostatus_subscribe.php:17 mod/nogroup.php:23 mod/suggest.php:61
-#: mod/wall_upload.php:104 mod/wall_upload.php:107 mod/api.php:35
-#: mod/api.php:40 mod/profile_photo.php:29 mod/profile_photo.php:176
-#: mod/profile_photo.php:198 mod/wall_attach.php:80 mod/wall_attach.php:83
-#: mod/item.php:166 mod/uimport.php:15 mod/cal.php:306 mod/regmod.php:108
-#: mod/editpost.php:19 mod/fsuggest.php:80 mod/allfriends.php:23
-#: mod/contact.php:387 mod/events.php:195 mod/follow.php:54 mod/follow.php:118
-#: mod/attach.php:39 mod/poke.php:144 mod/invite.php:21 mod/invite.php:112
-#: mod/notes.php:32 mod/profiles.php:179 mod/profiles.php:511
-#: mod/photos.php:183 mod/photos.php:1067
-msgid "Permission denied."
+#: include/conversation.php:153 include/conversation.php:289
+#: include/text.php:1351
+msgid "event"
 msgstr ""
 
-#: index.php:464
-msgid "toggle mobile"
+#: include/conversation.php:156 include/conversation.php:166
+#: include/conversation.php:292 include/conversation.php:301
+#: mod/subthread.php:88 mod/tagger.php:70
+msgid "status"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:54 src/Model/User.php:544
-msgid "default"
+#: include/conversation.php:161 include/conversation.php:297
+#: include/text.php:1353 mod/subthread.php:88 mod/tagger.php:70
+msgid "photo"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:55
-msgid "greenzero"
+#: include/conversation.php:173
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:56
-msgid "purplezero"
+#: include/conversation.php:175
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:57
-msgid "easterbunny"
+#: include/conversation.php:177
+#, php-format
+msgid "%1$s attends %2$s's %3$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:58
-msgid "darkzero"
+#: include/conversation.php:179
+#, php-format
+msgid "%1$s doesn't attend %2$s's %3$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:59
-msgid "comix"
+#: include/conversation.php:181
+#, php-format
+msgid "%1$s attends maybe %2$s's %3$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:60
-msgid "slackr"
+#: include/conversation.php:216
+#, php-format
+msgid "%1$s is now friends with %2$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:71 view/theme/quattro/config.php:73
-#: view/theme/vier/config.php:119 view/theme/frio/config.php:118
-#: mod/crepair.php:150 mod/install.php:204 mod/install.php:242
-#: mod/manage.php:184 mod/message.php:264 mod/message.php:430
-#: mod/fsuggest.php:114 mod/contact.php:631 mod/events.php:560
-#: mod/localtime.php:56 mod/poke.php:194 mod/invite.php:155
-#: mod/profiles.php:577 mod/photos.php:1096 mod/photos.php:1182
-#: mod/photos.php:1454 mod/photos.php:1499 mod/photos.php:1538
-#: mod/photos.php:1598 src/Object/Post.php:795
-msgid "Submit"
+#: include/conversation.php:257
+#, php-format
+msgid "%1$s poked %2$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:73 view/theme/quattro/config.php:75
-#: view/theme/vier/config.php:121 view/theme/frio/config.php:120
-#: mod/settings.php:981
-msgid "Theme settings"
+#: include/conversation.php:311 mod/tagger.php:108
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:74
-msgid "Variations"
+#: include/conversation.php:333
+msgid "post/item"
 msgstr ""
 
-#: view/theme/quattro/config.php:76
-msgid "Alignment"
+#: include/conversation.php:334
+#, php-format
+msgid "%1$s marked %2$s's %3$s as favorite"
 msgstr ""
 
-#: view/theme/quattro/config.php:76
-msgid "Left"
+#: include/conversation.php:548 mod/photos.php:1507 mod/profiles.php:354
+msgid "Likes"
 msgstr ""
 
-#: view/theme/quattro/config.php:76
-msgid "Center"
+#: include/conversation.php:548 mod/photos.php:1507 mod/profiles.php:358
+msgid "Dislikes"
 msgstr ""
 
-#: view/theme/quattro/config.php:77
-msgid "Color scheme"
+#: include/conversation.php:549 include/conversation.php:1480
+#: mod/photos.php:1508
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:549 mod/photos.php:1508
+msgid "Not attending"
 msgstr ""
 
-#: view/theme/quattro/config.php:78
-msgid "Posts font size"
+#: include/conversation.php:549 mod/photos.php:1508
+msgid "Might attend"
 msgstr ""
 
-#: view/theme/quattro/config.php:79
-msgid "Textareas font size"
+#: include/conversation.php:629 mod/photos.php:1564 src/Object/Post.php:196
+msgid "Select"
 msgstr ""
 
-#: view/theme/vier/config.php:75
-msgid "Comma separated list of helper forums"
+#: include/conversation.php:630 mod/admin.php:1926 mod/photos.php:1565
+#: mod/settings.php:739 src/Module/Contact.php:822 src/Module/Contact.php:1097
+msgid "Delete"
 msgstr ""
 
-#: view/theme/vier/config.php:115 src/Core/ACL.php:298
-msgid "don't show"
+#: include/conversation.php:664 src/Object/Post.php:369 src/Object/Post.php:370
+#, php-format
+msgid "View %s's profile @ %s"
 msgstr ""
 
-#: view/theme/vier/config.php:115 src/Core/ACL.php:297
-msgid "show"
+#: include/conversation.php:676 src/Object/Post.php:357
+msgid "Categories:"
 msgstr ""
 
-#: view/theme/vier/config.php:122
-msgid "Set style"
+#: include/conversation.php:677 src/Object/Post.php:358
+msgid "Filed under:"
 msgstr ""
 
-#: view/theme/vier/config.php:123
-msgid "Community Pages"
+#: include/conversation.php:684 src/Object/Post.php:383
+#, php-format
+msgid "%s from %s"
 msgstr ""
 
-#: view/theme/vier/config.php:124 view/theme/vier/theme.php:149
-msgid "Community Profiles"
+#: include/conversation.php:699
+msgid "View in context"
 msgstr ""
 
-#: view/theme/vier/config.php:125
-msgid "Help or @NewHere ?"
+#: include/conversation.php:701 include/conversation.php:1148
+#: mod/editpost.php:106 mod/message.php:262 mod/message.php:425
+#: mod/photos.php:1480 mod/wallmessage.php:139 src/Object/Post.php:408
+msgid "Please wait"
 msgstr ""
 
-#: view/theme/vier/config.php:126 view/theme/vier/theme.php:386
-msgid "Connect Services"
+#: include/conversation.php:765
+msgid "remove"
 msgstr ""
 
-#: view/theme/vier/config.php:127
-msgid "Find Friends"
+#: include/conversation.php:769
+msgid "Delete Selected Items"
 msgstr ""
 
-#: view/theme/vier/config.php:128 view/theme/vier/theme.php:179
-msgid "Last users"
+#: include/conversation.php:869 view/theme/frio/theme.php:367
+msgid "Follow Thread"
 msgstr ""
 
-#: view/theme/vier/theme.php:197 src/Content/Widget.php:59
-msgid "Find People"
+#: include/conversation.php:870 src/Model/Contact.php:949
+msgid "View Status"
 msgstr ""
 
-#: view/theme/vier/theme.php:198 src/Content/Widget.php:60
-msgid "Enter name or interest"
+#: include/conversation.php:871 include/conversation.php:887
+#: mod/allfriends.php:75 mod/directory.php:165 mod/dirfind.php:226
+#: mod/match.php:89 mod/suggest.php:85 src/Model/Contact.php:889
+#: src/Model/Contact.php:942 src/Model/Contact.php:950
+msgid "View Profile"
 msgstr ""
 
-#: view/theme/vier/theme.php:199 include/conversation.php:881
-#: mod/dirfind.php:231 mod/match.php:90 mod/suggest.php:86
-#: mod/allfriends.php:76 mod/contact.php:611 mod/follow.php:143
-#: src/Model/Contact.php:944 src/Content/Widget.php:61
-msgid "Connect/Follow"
+#: include/conversation.php:872 src/Model/Contact.php:951
+msgid "View Photos"
 msgstr ""
 
-#: view/theme/vier/theme.php:200 src/Content/Widget.php:62
-msgid "Examples: Robert Morgenstein, Fishing"
+#: include/conversation.php:873 src/Model/Contact.php:943
+#: src/Model/Contact.php:952
+msgid "Network Posts"
 msgstr ""
 
-#: view/theme/vier/theme.php:201 mod/directory.php:214 mod/contact.php:845
-#: src/Content/Widget.php:63
-msgid "Find"
+#: include/conversation.php:874 src/Model/Contact.php:944
+#: src/Model/Contact.php:953
+msgid "View Contact"
 msgstr ""
 
-#: view/theme/vier/theme.php:202 mod/suggest.php:117 src/Content/Widget.php:64
-msgid "Friend Suggestions"
+#: include/conversation.php:875 src/Model/Contact.php:955
+msgid "Send PM"
 msgstr ""
 
-#: view/theme/vier/theme.php:203 src/Content/Widget.php:65
-msgid "Similar Interests"
+#: include/conversation.php:879 src/Model/Contact.php:956
+msgid "Poke"
 msgstr ""
 
-#: view/theme/vier/theme.php:204 src/Content/Widget.php:66
-msgid "Random Profile"
+#: include/conversation.php:884 mod/allfriends.php:76 mod/dirfind.php:227
+#: mod/follow.php:145 mod/match.php:90 mod/suggest.php:86
+#: view/theme/vier/theme.php:199 src/Content/Widget.php:61
+#: src/Model/Contact.php:945 src/Module/Contact.php:578
+msgid "Connect/Follow"
 msgstr ""
 
-#: view/theme/vier/theme.php:205 src/Content/Widget.php:67
-msgid "Invite Friends"
+#: include/conversation.php:1002
+#, php-format
+msgid "%s likes this."
 msgstr ""
 
-#: view/theme/vier/theme.php:206 mod/directory.php:207
-#: src/Content/Widget.php:68
-msgid "Global Directory"
+#: include/conversation.php:1005
+#, php-format
+msgid "%s doesn't like this."
 msgstr ""
 
-#: view/theme/vier/theme.php:208 src/Content/Widget.php:70
-msgid "Local Directory"
+#: include/conversation.php:1008
+#, php-format
+msgid "%s attends."
 msgstr ""
 
-#: view/theme/vier/theme.php:251 include/text.php:909 src/Content/Nav.php:151
-#: src/Content/ForumManager.php:130
-msgid "Forums"
+#: include/conversation.php:1011
+#, php-format
+msgid "%s doesn't attend."
 msgstr ""
 
-#: view/theme/vier/theme.php:253 src/Content/ForumManager.php:132
-msgid "External link to forum"
+#: include/conversation.php:1014
+#, php-format
+msgid "%s attends maybe."
 msgstr ""
 
-#: view/theme/vier/theme.php:256 include/items.php:490 src/Object/Post.php:429
-#: src/App.php:799 src/Content/Widget.php:307 src/Content/ForumManager.php:135
-msgid "show more"
+#: include/conversation.php:1025
+msgid "and"
 msgstr ""
 
-#: view/theme/vier/theme.php:289
-msgid "Quick Start"
+#: include/conversation.php:1031
+#, php-format
+msgid "and %d other people"
 msgstr ""
 
-#: view/theme/vier/theme.php:295 mod/help.php:56 src/Content/Nav.php:134
-msgid "Help"
+#: include/conversation.php:1040
+#, php-format
+msgid "<span  %1$s>%2$d people</span> like this"
 msgstr ""
 
-#: view/theme/frio/config.php:102
-msgid "Custom"
+#: include/conversation.php:1041
+#, php-format
+msgid "%s like this."
 msgstr ""
 
-#: view/theme/frio/config.php:114
-msgid "Note"
+#: include/conversation.php:1044
+#, php-format
+msgid "<span  %1$s>%2$d people</span> don't like this"
 msgstr ""
 
-#: view/theme/frio/config.php:114
-msgid "Check image permissions if all users are allowed to see the image"
+#: include/conversation.php:1045
+#, php-format
+msgid "%s don't like this."
 msgstr ""
 
-#: view/theme/frio/config.php:121
-msgid "Select color scheme"
+#: include/conversation.php:1048
+#, php-format
+msgid "<span  %1$s>%2$d people</span> attend"
 msgstr ""
 
-#: view/theme/frio/config.php:122
-msgid "Navigation bar background color"
+#: include/conversation.php:1049
+#, php-format
+msgid "%s attend."
 msgstr ""
 
-#: view/theme/frio/config.php:123
-msgid "Navigation bar icon color "
+#: include/conversation.php:1052
+#, php-format
+msgid "<span  %1$s>%2$d people</span> don't attend"
 msgstr ""
 
-#: view/theme/frio/config.php:124
-msgid "Link color"
+#: include/conversation.php:1053
+#, php-format
+msgid "%s don't attend."
 msgstr ""
 
-#: view/theme/frio/config.php:125
-msgid "Set the background color"
+#: include/conversation.php:1056
+#, php-format
+msgid "<span  %1$s>%2$d people</span> attend maybe"
 msgstr ""
 
-#: view/theme/frio/config.php:126
-msgid "Content background opacity"
+#: include/conversation.php:1057
+#, php-format
+msgid "%s attend maybe."
 msgstr ""
 
-#: view/theme/frio/config.php:127
-msgid "Set the background image"
+#: include/conversation.php:1087
+msgid "Visible to <strong>everybody</strong>"
 msgstr ""
 
-#: view/theme/frio/config.php:128
-msgid "Background image style"
+#: include/conversation.php:1088 src/Object/Post.php:811
+msgid "Please enter a image/video/audio/webpage URL:"
 msgstr ""
 
-#: view/theme/frio/config.php:133
-msgid "Login page background image"
+#: include/conversation.php:1089
+msgid "Tag term:"
 msgstr ""
 
-#: view/theme/frio/config.php:137
-msgid "Login page background color"
+#: include/conversation.php:1090 mod/filer.php:34
+msgid "Save to Folder:"
 msgstr ""
 
-#: view/theme/frio/config.php:137
-msgid "Leave background image and color empty for theme defaults"
+#: include/conversation.php:1091
+msgid "Where are you right now?"
 msgstr ""
 
-#: view/theme/frio/theme.php:248
-msgid "Guest"
+#: include/conversation.php:1092
+msgid "Delete item(s)?"
 msgstr ""
 
-#: view/theme/frio/theme.php:253
-msgid "Visitor"
+#: include/conversation.php:1124
+msgid "New Post"
 msgstr ""
 
-#: view/theme/frio/theme.php:266 src/Module/Login.php:309
-#: src/Content/Nav.php:97
-msgid "Logout"
+#: include/conversation.php:1127
+msgid "Share"
 msgstr ""
 
-#: view/theme/frio/theme.php:266 src/Content/Nav.php:97
-msgid "End this session"
+#: include/conversation.php:1128 mod/editpost.php:92 mod/message.php:260
+#: mod/message.php:422 mod/wallmessage.php:137
+msgid "Upload photo"
 msgstr ""
 
-#: view/theme/frio/theme.php:269 mod/contact.php:690 mod/contact.php:880
-#: src/Model/Profile.php:888 src/Content/Nav.php:100
-msgid "Status"
+#: include/conversation.php:1129 mod/editpost.php:93
+msgid "upload photo"
 msgstr ""
 
-#: view/theme/frio/theme.php:269 src/Content/Nav.php:100
-#: src/Content/Nav.php:186
-msgid "Your posts and conversations"
+#: include/conversation.php:1130 mod/editpost.php:94
+msgid "Attach file"
 msgstr ""
 
-#: view/theme/frio/theme.php:270 mod/newmember.php:24 mod/profperm.php:116
-#: mod/contact.php:692 mod/contact.php:896 src/Model/Profile.php:730
-#: src/Model/Profile.php:863 src/Model/Profile.php:896 src/Content/Nav.php:101
-msgid "Profile"
+#: include/conversation.php:1131 mod/editpost.php:95
+msgid "attach file"
 msgstr ""
 
-#: view/theme/frio/theme.php:270 src/Content/Nav.php:101
-msgid "Your profile page"
+#: include/conversation.php:1132 src/Object/Post.php:803
+msgid "Bold"
 msgstr ""
 
-#: view/theme/frio/theme.php:271 mod/fbrowser.php:35 src/Model/Profile.php:904
-#: src/Content/Nav.php:102
-msgid "Photos"
+#: include/conversation.php:1133 src/Object/Post.php:804
+msgid "Italic"
 msgstr ""
 
-#: view/theme/frio/theme.php:271 src/Content/Nav.php:102
-msgid "Your photos"
+#: include/conversation.php:1134 src/Object/Post.php:805
+msgid "Underline"
 msgstr ""
 
-#: view/theme/frio/theme.php:272 src/Model/Profile.php:912
-#: src/Model/Profile.php:915 src/Content/Nav.php:103
-msgid "Videos"
+#: include/conversation.php:1135 src/Object/Post.php:806
+msgid "Quote"
 msgstr ""
 
-#: view/theme/frio/theme.php:272 src/Content/Nav.php:103
-msgid "Your videos"
+#: include/conversation.php:1136 src/Object/Post.php:807
+msgid "Code"
 msgstr ""
 
-#: view/theme/frio/theme.php:273 view/theme/frio/theme.php:277 mod/cal.php:276
-#: mod/events.php:391 src/Model/Profile.php:924 src/Model/Profile.php:935
-#: src/Content/Nav.php:104 src/Content/Nav.php:170
-msgid "Events"
+#: include/conversation.php:1137 src/Object/Post.php:808
+msgid "Image"
 msgstr ""
 
-#: view/theme/frio/theme.php:273 src/Content/Nav.php:104
-msgid "Your events"
+#: include/conversation.php:1138 src/Object/Post.php:809
+msgid "Link"
 msgstr ""
 
-#: view/theme/frio/theme.php:276 mod/admin.php:771
-#: src/Core/NotificationsManager.php:179 src/Content/Nav.php:183
-msgid "Network"
+#: include/conversation.php:1139 src/Object/Post.php:810
+msgid "Link or Media"
 msgstr ""
 
-#: view/theme/frio/theme.php:276 src/Content/Nav.php:183
-msgid "Conversations from your friends"
+#: include/conversation.php:1140 mod/editpost.php:102
+msgid "Set your location"
 msgstr ""
 
-#: view/theme/frio/theme.php:277 src/Model/Profile.php:927
-#: src/Model/Profile.php:938 src/Content/Nav.php:170
-msgid "Events and Calendar"
+#: include/conversation.php:1141 mod/editpost.php:103
+msgid "set location"
 msgstr ""
 
-#: view/theme/frio/theme.php:278 mod/message.php:127 src/Content/Nav.php:196
-msgid "Messages"
+#: include/conversation.php:1142 mod/editpost.php:104
+msgid "Clear browser location"
 msgstr ""
 
-#: view/theme/frio/theme.php:278 src/Content/Nav.php:196
-msgid "Private mail"
+#: include/conversation.php:1143 mod/editpost.php:105
+msgid "clear location"
 msgstr ""
 
-#: view/theme/frio/theme.php:279 mod/settings.php:131 mod/newmember.php:19
-#: mod/admin.php:2015 mod/admin.php:2285 src/Content/Nav.php:207
-msgid "Settings"
+#: include/conversation.php:1145 mod/editpost.php:120
+msgid "Set title"
 msgstr ""
 
-#: view/theme/frio/theme.php:279 src/Content/Nav.php:207
-msgid "Account settings"
+#: include/conversation.php:1147 mod/editpost.php:122
+msgid "Categories (comma-separated list)"
 msgstr ""
 
-#: view/theme/frio/theme.php:280 include/text.php:906 mod/viewcontacts.php:125
-#: mod/contact.php:839 mod/contact.php:908 src/Model/Profile.php:967
-#: src/Model/Profile.php:970 src/Content/Nav.php:147 src/Content/Nav.php:213
-msgid "Contacts"
+#: include/conversation.php:1149 mod/editpost.php:107
+msgid "Permission settings"
 msgstr ""
 
-#: view/theme/frio/theme.php:280 src/Content/Nav.php:213
-msgid "Manage/edit friends and contacts"
+#: include/conversation.php:1150 mod/editpost.php:137
+msgid "permissions"
 msgstr ""
 
-#: view/theme/frio/theme.php:367 include/conversation.php:866
-msgid "Follow Thread"
+#: include/conversation.php:1159 mod/editpost.php:117
+msgid "Public post"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:24
-msgid "Top Banner"
+#: include/conversation.php:1163 mod/editpost.php:128 mod/events.php:555
+#: mod/photos.php:1498 mod/photos.php:1537 mod/photos.php:1597
+#: src/Object/Post.php:812
+msgid "Preview"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:24
-msgid ""
-"Resize image to the width of the screen and show background color below on "
-"long pages."
+#: include/conversation.php:1167 include/items.php:400 mod/fbrowser.php:104
+#: mod/fbrowser.php:135 mod/dfrn_request.php:656 mod/editpost.php:131
+#: mod/follow.php:163 mod/message.php:153 mod/photos.php:256 mod/photos.php:328
+#: mod/settings.php:679 mod/settings.php:705 mod/suggest.php:43
+#: mod/tagrm.php:19 mod/tagrm.php:112 mod/unfollow.php:132 mod/videos.php:141
+#: src/Module/Contact.php:450
+msgid "Cancel"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:25
-msgid "Full screen"
+#: include/conversation.php:1172
+msgid "Post to Groups"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:25
-msgid ""
-"Resize image to fill entire screen, clipping either the right or the bottom."
+#: include/conversation.php:1173
+msgid "Post to Contacts"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:26
-msgid "Single row mosaic"
+#: include/conversation.php:1174
+msgid "Private post"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:26
-msgid ""
-"Resize image to repeat it on a single row, either vertical or horizontal."
+#: include/conversation.php:1179 mod/editpost.php:135 src/Model/Profile.php:358
+msgid "Message"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:27
-msgid "Mosaic"
+#: include/conversation.php:1180 mod/editpost.php:136
+msgid "Browser"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:27
-msgid "Repeat image to fill the screen."
+#: include/conversation.php:1451
+msgid "View all"
 msgstr ""
 
-#: update.php:194
-#, php-format
-msgid "%s: Updating author-id and owner-id in item and thread table. "
-msgstr ""
+#: include/conversation.php:1474
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] ""
+msgstr[1] ""
 
-#: update.php:240
-#, php-format
-msgid "%s: Updating post-type."
-msgstr ""
+#: include/conversation.php:1477
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] ""
+msgstr[1] ""
 
-#: include/items.php:356 mod/display.php:71 mod/display.php:254
-#: mod/display.php:350 mod/admin.php:283 mod/admin.php:1963 mod/admin.php:2211
-#: mod/notice.php:22 mod/viewsrc.php:22
-msgid "Item not found."
+#: include/conversation.php:1483
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:1486 src/Content/ContactSelector.php:147
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/enotify.php:53
+msgid "Friendica Notification"
 msgstr ""
 
-#: include/items.php:394
-msgid "Do you really want to delete this item?"
+#: include/enotify.php:56
+msgid "Thank You,"
 msgstr ""
 
-#: include/items.php:396 mod/settings.php:1100 mod/settings.php:1106
-#: mod/settings.php:1113 mod/settings.php:1117 mod/settings.php:1121
-#: mod/settings.php:1125 mod/settings.php:1129 mod/settings.php:1133
-#: mod/settings.php:1153 mod/settings.php:1154 mod/settings.php:1155
-#: mod/settings.php:1156 mod/settings.php:1157 mod/register.php:237
-#: mod/message.php:154 mod/suggest.php:40 mod/dfrn_request.php:645
-#: mod/api.php:110 mod/contact.php:471 mod/follow.php:150 mod/profiles.php:541
-#: mod/profiles.php:544 mod/profiles.php:566
-msgid "Yes"
+#: include/enotify.php:59
+#, php-format
+msgid "%1$s, %2$s Administrator"
 msgstr ""
 
-#: include/items.php:399 include/conversation.php:1179 mod/videos.php:146
-#: mod/settings.php:676 mod/settings.php:702 mod/unfollow.php:130
-#: mod/message.php:157 mod/tagrm.php:19 mod/tagrm.php:91 mod/suggest.php:43
-#: mod/dfrn_request.php:655 mod/editpost.php:146 mod/contact.php:474
-#: mod/follow.php:161 mod/fbrowser.php:104 mod/fbrowser.php:135
-#: mod/photos.php:255 mod/photos.php:327
-msgid "Cancel"
+#: include/enotify.php:61
+#, php-format
+msgid "%s Administrator"
 msgstr ""
 
-#: include/items.php:484 src/Content/Feature.php:96
-msgid "Archives"
+#: include/enotify.php:124
+#, php-format
+msgid "[Friendica:Notify] New mail received at %s"
 msgstr ""
 
-#: include/conversation.php:151 include/conversation.php:287
-#: include/text.php:1611
-msgid "event"
+#: include/enotify.php:126
+#, php-format
+msgid "%1$s sent you a new private message at %2$s."
 msgstr ""
 
-#: include/conversation.php:154 include/conversation.php:164
-#: include/conversation.php:290 include/conversation.php:299 mod/tagger.php:70
-#: mod/subthread.php:87
-msgid "status"
+#: include/enotify.php:127
+msgid "a private message"
 msgstr ""
 
-#: include/conversation.php:159 include/conversation.php:295
-#: include/text.php:1613 mod/tagger.php:70 mod/subthread.php:87
-msgid "photo"
+#: include/enotify.php:127
+#, php-format
+msgid "%1$s sent you %2$s."
 msgstr ""
 
-#: include/conversation.php:171
+#: include/enotify.php:129
 #, php-format
-msgid "%1$s likes %2$s's %3$s"
+msgid "Please visit %s to view and/or reply to your private messages."
 msgstr ""
 
-#: include/conversation.php:173
+#: include/enotify.php:163
 #, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
+msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
 msgstr ""
 
-#: include/conversation.php:175
+#: include/enotify.php:171
 #, php-format
-msgid "%1$s attends %2$s's %3$s"
+msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
 msgstr ""
 
-#: include/conversation.php:177
+#: include/enotify.php:181
 #, php-format
-msgid "%1$s doesn't attend %2$s's %3$s"
+msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
 msgstr ""
 
-#: include/conversation.php:179
+#: include/enotify.php:193
 #, php-format
-msgid "%1$s attends maybe %2$s's %3$s"
+msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
 msgstr ""
 
-#: include/conversation.php:214
+#: include/enotify.php:195
 #, php-format
-msgid "%1$s is now friends with %2$s"
+msgid "%s commented on an item/conversation you have been following."
 msgstr ""
 
-#: include/conversation.php:255
+#: include/enotify.php:198 include/enotify.php:213 include/enotify.php:228
+#: include/enotify.php:243 include/enotify.php:262 include/enotify.php:278
 #, php-format
-msgid "%1$s poked %2$s"
+msgid "Please visit %s to view and/or reply to the conversation."
 msgstr ""
 
-#: include/conversation.php:309 mod/tagger.php:108
+#: include/enotify.php:205
 #, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgid "[Friendica:Notify] %s posted to your profile wall"
 msgstr ""
 
-#: include/conversation.php:331
-msgid "post/item"
+#: include/enotify.php:207
+#, php-format
+msgid "%1$s posted to your profile wall at %2$s"
 msgstr ""
 
-#: include/conversation.php:332
+#: include/enotify.php:208
 #, php-format
-msgid "%1$s marked %2$s's %3$s as favorite"
+msgid "%1$s posted to [url=%2$s]your wall[/url]"
 msgstr ""
 
-#: include/conversation.php:545 mod/profiles.php:352 mod/photos.php:1509
-msgid "Likes"
+#: include/enotify.php:220
+#, php-format
+msgid "[Friendica:Notify] %s tagged you"
 msgstr ""
 
-#: include/conversation.php:545 mod/profiles.php:356 mod/photos.php:1509
-msgid "Dislikes"
+#: include/enotify.php:222
+#, php-format
+msgid "%1$s tagged you at %2$s"
 msgstr ""
 
-#: include/conversation.php:546 include/conversation.php:1492
-#: mod/photos.php:1510
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] ""
-msgstr[1] ""
+#: include/enotify.php:223
+#, php-format
+msgid "%1$s [url=%2$s]tagged you[/url]."
+msgstr ""
 
-#: include/conversation.php:546 mod/photos.php:1510
-msgid "Not attending"
+#: include/enotify.php:235
+#, php-format
+msgid "[Friendica:Notify] %s shared a new post"
 msgstr ""
 
-#: include/conversation.php:546 mod/photos.php:1510
-msgid "Might attend"
+#: include/enotify.php:237
+#, php-format
+msgid "%1$s shared a new post at %2$s"
 msgstr ""
 
-#: include/conversation.php:626 mod/photos.php:1566 src/Object/Post.php:195
-msgid "Select"
+#: include/enotify.php:238
+#, php-format
+msgid "%1$s [url=%2$s]shared a post[/url]."
 msgstr ""
 
-#: include/conversation.php:627 mod/settings.php:736 mod/admin.php:1906
-#: mod/contact.php:855 mod/contact.php:1133 mod/photos.php:1567
-msgid "Delete"
+#: include/enotify.php:250
+#, php-format
+msgid "[Friendica:Notify] %1$s poked you"
 msgstr ""
 
-#: include/conversation.php:661 src/Object/Post.php:362 src/Object/Post.php:363
+#: include/enotify.php:252
 #, php-format
-msgid "View %s's profile @ %s"
+msgid "%1$s poked you at %2$s"
 msgstr ""
 
-#: include/conversation.php:673 src/Object/Post.php:350
-msgid "Categories:"
+#: include/enotify.php:253
+#, php-format
+msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr ""
 
-#: include/conversation.php:674 src/Object/Post.php:351
-msgid "Filed under:"
+#: include/enotify.php:270
+#, php-format
+msgid "[Friendica:Notify] %s tagged your post"
 msgstr ""
 
-#: include/conversation.php:681 src/Object/Post.php:376
+#: include/enotify.php:272
 #, php-format
-msgid "%s from %s"
+msgid "%1$s tagged your post at %2$s"
 msgstr ""
 
-#: include/conversation.php:696
-msgid "View in context"
+#: include/enotify.php:273
+#, php-format
+msgid "%1$s tagged [url=%2$s]your post[/url]"
 msgstr ""
 
-#: include/conversation.php:698 include/conversation.php:1160
-#: mod/wallmessage.php:145 mod/message.php:263 mod/message.php:431
-#: mod/editpost.php:121 mod/photos.php:1482 src/Object/Post.php:401
-msgid "Please wait"
+#: include/enotify.php:285
+msgid "[Friendica:Notify] Introduction received"
 msgstr ""
 
-#: include/conversation.php:762
-msgid "remove"
+#: include/enotify.php:287
+#, php-format
+msgid "You've received an introduction from '%1$s' at %2$s"
 msgstr ""
 
-#: include/conversation.php:766
-msgid "Delete Selected Items"
+#: include/enotify.php:288
+#, php-format
+msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
 msgstr ""
 
-#: include/conversation.php:867 src/Model/Contact.php:948
-msgid "View Status"
+#: include/enotify.php:293 include/enotify.php:339
+#, php-format
+msgid "You may visit their profile at %s"
 msgstr ""
 
-#: include/conversation.php:868 include/conversation.php:884
-#: mod/dirfind.php:230 mod/directory.php:164 mod/match.php:89
-#: mod/suggest.php:85 mod/allfriends.php:75 src/Model/Contact.php:888
-#: src/Model/Contact.php:941 src/Model/Contact.php:949
-msgid "View Profile"
+#: include/enotify.php:295
+#, php-format
+msgid "Please visit %s to approve or reject the introduction."
 msgstr ""
 
-#: include/conversation.php:869 src/Model/Contact.php:950
-msgid "View Photos"
+#: include/enotify.php:302
+msgid "[Friendica:Notify] A new person is sharing with you"
 msgstr ""
 
-#: include/conversation.php:870 src/Model/Contact.php:942
-#: src/Model/Contact.php:951
-msgid "Network Posts"
+#: include/enotify.php:304 include/enotify.php:305
+#, php-format
+msgid "%1$s is sharing with you at %2$s"
 msgstr ""
 
-#: include/conversation.php:871 src/Model/Contact.php:943
-#: src/Model/Contact.php:952
-msgid "View Contact"
+#: include/enotify.php:312
+msgid "[Friendica:Notify] You have a new follower"
 msgstr ""
 
-#: include/conversation.php:872 src/Model/Contact.php:954
-msgid "Send PM"
+#: include/enotify.php:314 include/enotify.php:315
+#, php-format
+msgid "You have a new follower at %2$s : %1$s"
 msgstr ""
 
-#: include/conversation.php:876 src/Model/Contact.php:955
-msgid "Poke"
+#: include/enotify.php:328
+msgid "[Friendica:Notify] Friend suggestion received"
 msgstr ""
 
-#: include/conversation.php:999
+#: include/enotify.php:330
 #, php-format
-msgid "%s likes this."
+msgid "You've received a friend suggestion from '%1$s' at %2$s"
 msgstr ""
 
-#: include/conversation.php:1002
+#: include/enotify.php:331
 #, php-format
-msgid "%s doesn't like this."
+msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
 msgstr ""
 
-#: include/conversation.php:1005
-#, php-format
-msgid "%s attends."
+#: include/enotify.php:337
+msgid "Name:"
 msgstr ""
 
-#: include/conversation.php:1008
-#, php-format
-msgid "%s doesn't attend."
+#: include/enotify.php:338
+msgid "Photo:"
 msgstr ""
 
-#: include/conversation.php:1011
+#: include/enotify.php:341
 #, php-format
-msgid "%s attends maybe."
+msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: include/conversation.php:1022
-msgid "and"
+#: include/enotify.php:349 include/enotify.php:364
+msgid "[Friendica:Notify] Connection accepted"
 msgstr ""
 
-#: include/conversation.php:1028
+#: include/enotify.php:351 include/enotify.php:366
 #, php-format
-msgid "and %d other people"
+msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr ""
 
-#: include/conversation.php:1037
+#: include/enotify.php:352 include/enotify.php:367
 #, php-format
-msgid "<span  %1$s>%2$d people</span> like this"
+msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
 msgstr ""
 
-#: include/conversation.php:1038
-#, php-format
-msgid "%s like this."
+#: include/enotify.php:357
+msgid ""
+"You are now mutual friends and may exchange status updates, photos, and "
+"email without restriction."
 msgstr ""
 
-#: include/conversation.php:1041
+#: include/enotify.php:359
 #, php-format
-msgid "<span  %1$s>%2$d people</span> don't like this"
+msgid "Please visit %s if you wish to make any changes to this relationship."
 msgstr ""
 
-#: include/conversation.php:1042
+#: include/enotify.php:372
 #, php-format
-msgid "%s don't like this."
+msgid ""
+"'%1$s' has chosen to accept you a fan, which restricts some forms of "
+"communication - such as private messaging and some profile interactions. If "
+"this is a celebrity or community page, these settings were applied "
+"automatically."
 msgstr ""
 
-#: include/conversation.php:1045
+#: include/enotify.php:374
 #, php-format
-msgid "<span  %1$s>%2$d people</span> attend"
+msgid ""
+"'%1$s' may choose to extend this into a two-way or more permissive "
+"relationship in the future."
 msgstr ""
 
-#: include/conversation.php:1046
+#: include/enotify.php:376
 #, php-format
-msgid "%s attend."
+msgid "Please visit %s  if you wish to make any changes to this relationship."
 msgstr ""
 
-#: include/conversation.php:1049
-#, php-format
-msgid "<span  %1$s>%2$d people</span> don't attend"
+#: include/enotify.php:386 mod/removeme.php:47
+msgid "[Friendica System Notify]"
 msgstr ""
 
-#: include/conversation.php:1050
-#, php-format
-msgid "%s don't attend."
+#: include/enotify.php:386
+msgid "registration request"
 msgstr ""
 
-#: include/conversation.php:1053
+#: include/enotify.php:388
 #, php-format
-msgid "<span  %1$s>%2$d people</span> attend maybe"
+msgid "You've received a registration request from '%1$s' at %2$s"
 msgstr ""
 
-#: include/conversation.php:1054
+#: include/enotify.php:389
 #, php-format
-msgid "%s attend maybe."
+msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
 msgstr ""
 
-#: include/conversation.php:1084 include/conversation.php:1100
-msgid "Visible to <strong>everybody</strong>"
+#: include/enotify.php:394
+#, php-format
+msgid ""
+"Full Name:\t%s\n"
+"Site Location:\t%s\n"
+"Login Name:\t%s (%s)"
 msgstr ""
 
-#: include/conversation.php:1085 include/conversation.php:1101
-#: mod/wallmessage.php:120 mod/wallmessage.php:127 mod/message.php:199
-#: mod/message.php:206 mod/message.php:344 mod/message.php:351
-msgid "Please enter a link URL:"
+#: include/enotify.php:400
+#, php-format
+msgid "Please visit %s to approve or reject the request."
 msgstr ""
 
-#: include/conversation.php:1086 include/conversation.php:1102
-msgid "Please enter a video link/URL:"
+#: include/items.php:357 mod/admin.php:292 mod/admin.php:1984
+#: mod/admin.php:2230 mod/display.php:73 mod/display.php:251
+#: mod/display.php:347 mod/notice.php:21 mod/viewsrc.php:22
+msgid "Item not found."
 msgstr ""
 
-#: include/conversation.php:1087 include/conversation.php:1103
-msgid "Please enter an audio link/URL:"
+#: include/items.php:395
+msgid "Do you really want to delete this item?"
 msgstr ""
 
-#: include/conversation.php:1088 include/conversation.php:1104
-msgid "Tag term:"
+#: include/items.php:397 mod/api.php:111 mod/dfrn_request.php:646
+#: mod/follow.php:152 mod/message.php:150 mod/profiles.php:540
+#: mod/profiles.php:543 mod/profiles.php:565 mod/register.php:237
+#: mod/settings.php:1098 mod/settings.php:1104 mod/settings.php:1111
+#: mod/settings.php:1115 mod/settings.php:1119 mod/settings.php:1123
+#: mod/settings.php:1127 mod/settings.php:1131 mod/settings.php:1151
+#: mod/settings.php:1152 mod/settings.php:1153 mod/settings.php:1154
+#: mod/settings.php:1155 mod/suggest.php:40 src/Module/Contact.php:447
+msgid "Yes"
 msgstr ""
 
-#: include/conversation.php:1089 include/conversation.php:1105 mod/filer.php:34
-msgid "Save to Folder:"
+#: include/items.php:414 mod/allfriends.php:23 mod/api.php:36 mod/api.php:41
+#: mod/attach.php:39 mod/cal.php:303 mod/common.php:28 mod/crepair.php:99
+#: mod/delegate.php:29 mod/delegate.php:47 mod/delegate.php:58
+#: mod/dfrn_confirm.php:68 mod/dirfind.php:27 mod/editpost.php:19
+#: mod/events.php:197 mod/follow.php:56 mod/follow.php:120 mod/fsuggest.php:80
+#: mod/group.php:28 mod/invite.php:23 mod/invite.php:109 mod/item.php:167
+#: mod/manage.php:131 mod/message.php:56 mod/message.php:101 mod/network.php:36
+#: mod/nogroup.php:23 mod/notes.php:33 mod/notifications.php:69
+#: mod/ostatus_subscribe.php:17 mod/photos.php:185 mod/photos.php:1060
+#: mod/poke.php:141 mod/profile_photo.php:31 mod/profile_photo.php:178
+#: mod/profile_photo.php:200 mod/profiles.php:181 mod/profiles.php:513
+#: mod/register.php:53 mod/regmod.php:91 mod/repair_ostatus.php:16
+#: mod/settings.php:46 mod/settings.php:152 mod/settings.php:668
+#: mod/suggest.php:61 mod/uimport.php:16 mod/unfollow.php:20
+#: mod/unfollow.php:75 mod/unfollow.php:107 mod/viewcontacts.php:62
+#: mod/wall_attach.php:80 mod/wall_attach.php:83 mod/wall_upload.php:105
+#: mod/wall_upload.php:108 mod/wallmessage.php:17 mod/wallmessage.php:41
+#: mod/wallmessage.php:80 mod/wallmessage.php:104 src/Module/Contact.php:363
+#: src/App.php:1876
+msgid "Permission denied."
 msgstr ""
 
-#: include/conversation.php:1090 include/conversation.php:1106
-msgid "Where are you right now?"
+#: include/items.php:485 src/Content/Feature.php:96
+msgid "Archives"
 msgstr ""
 
-#: include/conversation.php:1091
-msgid "Delete item(s)?"
+#: include/items.php:491 view/theme/vier/theme.php:256
+#: src/Content/ForumManager.php:135 src/Content/Widget.php:307
+#: src/Object/Post.php:436 src/App.php:785
+msgid "show more"
 msgstr ""
 
-#: include/conversation.php:1138
-msgid "New Post"
+#: include/text.php:274
+msgid "Loading more entries..."
 msgstr ""
 
-#: include/conversation.php:1141
-msgid "Share"
+#: include/text.php:275
+msgid "The end"
 msgstr ""
 
-#: include/conversation.php:1142 mod/wallmessage.php:143 mod/message.php:261
-#: mod/message.php:428 mod/editpost.php:107
-msgid "Upload photo"
+#: include/text.php:510
+msgid "No contacts"
 msgstr ""
 
-#: include/conversation.php:1143 mod/editpost.php:108
-msgid "upload photo"
-msgstr ""
+#: include/text.php:534
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] ""
+msgstr[1] ""
 
-#: include/conversation.php:1144 mod/editpost.php:109
-msgid "Attach file"
+#: include/text.php:547
+msgid "View Contacts"
 msgstr ""
 
-#: include/conversation.php:1145 mod/editpost.php:110
-msgid "attach file"
+#: include/text.php:632 mod/editpost.php:91 mod/filer.php:35 mod/notes.php:54
+msgid "Save"
 msgstr ""
 
-#: include/conversation.php:1146 mod/wallmessage.php:144 mod/message.php:262
-#: mod/message.php:429 mod/editpost.php:111
-msgid "Insert web link"
+#: include/text.php:632
+msgid "Follow"
 msgstr ""
 
-#: include/conversation.php:1147 mod/editpost.php:112
-msgid "web link"
+#: include/text.php:638 mod/search.php:163 src/Content/Nav.php:194
+msgid "Search"
 msgstr ""
 
-#: include/conversation.php:1148 mod/editpost.php:113
-msgid "Insert video link"
+#: include/text.php:641 src/Content/Nav.php:76
+msgid "@name, !forum, #tags, content"
 msgstr ""
 
-#: include/conversation.php:1149 mod/editpost.php:114
-msgid "video link"
+#: include/text.php:647 src/Content/Nav.php:197
+msgid "Full Text"
 msgstr ""
 
-#: include/conversation.php:1150 mod/editpost.php:115
-msgid "Insert audio link"
+#: include/text.php:648 src/Content/Widget/TagCloud.php:54
+#: src/Content/Nav.php:198
+msgid "Tags"
 msgstr ""
 
-#: include/conversation.php:1151 mod/editpost.php:116
-msgid "audio link"
+#: include/text.php:649 mod/viewcontacts.php:129 view/theme/frio/theme.php:282
+#: src/Content/Nav.php:199 src/Content/Nav.php:265 src/Model/Profile.php:968
+#: src/Model/Profile.php:971 src/Module/Contact.php:806
+#: src/Module/Contact.php:876
+msgid "Contacts"
 msgstr ""
 
-#: include/conversation.php:1152 mod/editpost.php:117
-msgid "Set your location"
+#: include/text.php:652 view/theme/vier/theme.php:251
+#: src/Content/ForumManager.php:130 src/Content/Nav.php:203
+msgid "Forums"
 msgstr ""
 
-#: include/conversation.php:1153 mod/editpost.php:118
-msgid "set location"
+#: include/text.php:696
+msgid "poke"
 msgstr ""
 
-#: include/conversation.php:1154 mod/editpost.php:119
-msgid "Clear browser location"
+#: include/text.php:696
+msgid "poked"
 msgstr ""
 
-#: include/conversation.php:1155 mod/editpost.php:120
-msgid "clear location"
+#: include/text.php:697
+msgid "ping"
 msgstr ""
 
-#: include/conversation.php:1157 mod/editpost.php:135
-msgid "Set title"
+#: include/text.php:697
+msgid "pinged"
 msgstr ""
 
-#: include/conversation.php:1159 mod/editpost.php:137
-msgid "Categories (comma-separated list)"
+#: include/text.php:698
+msgid "prod"
 msgstr ""
 
-#: include/conversation.php:1161 mod/editpost.php:122
-msgid "Permission settings"
+#: include/text.php:698
+msgid "prodded"
 msgstr ""
 
-#: include/conversation.php:1162 mod/editpost.php:152
-msgid "permissions"
+#: include/text.php:699
+msgid "slap"
 msgstr ""
 
-#: include/conversation.php:1171 mod/editpost.php:132
-msgid "Public post"
+#: include/text.php:699
+msgid "slapped"
 msgstr ""
 
-#: include/conversation.php:1175 mod/editpost.php:143 mod/events.php:558
-#: mod/photos.php:1500 mod/photos.php:1539 mod/photos.php:1599
-#: src/Object/Post.php:804
-msgid "Preview"
+#: include/text.php:700
+msgid "finger"
 msgstr ""
 
-#: include/conversation.php:1184
-msgid "Post to Groups"
+#: include/text.php:700
+msgid "fingered"
 msgstr ""
 
-#: include/conversation.php:1185
-msgid "Post to Contacts"
+#: include/text.php:701
+msgid "rebuff"
 msgstr ""
 
-#: include/conversation.php:1186
-msgid "Private post"
+#: include/text.php:701
+msgid "rebuffed"
 msgstr ""
 
-#: include/conversation.php:1191 mod/editpost.php:150 src/Model/Profile.php:357
-msgid "Message"
+#: include/text.php:715 mod/settings.php:944 src/Model/Event.php:390
+msgid "Monday"
 msgstr ""
 
-#: include/conversation.php:1192 mod/editpost.php:151
-msgid "Browser"
+#: include/text.php:715 src/Model/Event.php:391
+msgid "Tuesday"
 msgstr ""
 
-#: include/conversation.php:1463
-msgid "View all"
+#: include/text.php:715 src/Model/Event.php:392
+msgid "Wednesday"
 msgstr ""
 
-#: include/conversation.php:1486
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1489
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1495
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1498 src/Content/ContactSelector.php:127
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/security.php:83
-msgid "Welcome "
+#: include/text.php:715 src/Model/Event.php:393
+msgid "Thursday"
 msgstr ""
 
-#: include/security.php:84
-msgid "Please upload a profile photo."
+#: include/text.php:715 src/Model/Event.php:394
+msgid "Friday"
 msgstr ""
 
-#: include/security.php:86
-msgid "Welcome back "
+#: include/text.php:715 src/Model/Event.php:395
+msgid "Saturday"
 msgstr ""
 
-#: include/security.php:424
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
+#: include/text.php:715 mod/settings.php:944 src/Model/Event.php:389
+msgid "Sunday"
 msgstr ""
 
-#: include/enotify.php:52
-msgid "Friendica Notification"
+#: include/text.php:719 src/Model/Event.php:410
+msgid "January"
 msgstr ""
 
-#: include/enotify.php:55
-msgid "Thank You,"
+#: include/text.php:719 src/Model/Event.php:411
+msgid "February"
 msgstr ""
 
-#: include/enotify.php:58
-#, php-format
-msgid "%1$s, %2$s Administrator"
+#: include/text.php:719 src/Model/Event.php:412
+msgid "March"
 msgstr ""
 
-#: include/enotify.php:60
-#, php-format
-msgid "%s Administrator"
+#: include/text.php:719 src/Model/Event.php:413
+msgid "April"
 msgstr ""
 
-#: include/enotify.php:123
-#, php-format
-msgid "[Friendica:Notify] New mail received at %s"
+#: include/text.php:719 include/text.php:736 src/Model/Event.php:401
+#: src/Model/Event.php:414
+msgid "May"
 msgstr ""
 
-#: include/enotify.php:125
-#, php-format
-msgid "%1$s sent you a new private message at %2$s."
+#: include/text.php:719 src/Model/Event.php:415
+msgid "June"
 msgstr ""
 
-#: include/enotify.php:126
-msgid "a private message"
+#: include/text.php:719 src/Model/Event.php:416
+msgid "July"
 msgstr ""
 
-#: include/enotify.php:126
-#, php-format
-msgid "%1$s sent you %2$s."
+#: include/text.php:719 src/Model/Event.php:417
+msgid "August"
 msgstr ""
 
-#: include/enotify.php:128
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
+#: include/text.php:719 src/Model/Event.php:418
+msgid "September"
 msgstr ""
 
-#: include/enotify.php:161
-#, php-format
-msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
+#: include/text.php:719 src/Model/Event.php:419
+msgid "October"
 msgstr ""
 
-#: include/enotify.php:169
-#, php-format
-msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
+#: include/text.php:719 src/Model/Event.php:420
+msgid "November"
 msgstr ""
 
-#: include/enotify.php:179
-#, php-format
-msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
+#: include/text.php:719 src/Model/Event.php:421
+msgid "December"
 msgstr ""
 
-#: include/enotify.php:191
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
+#: include/text.php:733 src/Model/Event.php:382
+msgid "Mon"
 msgstr ""
 
-#: include/enotify.php:193
-#, php-format
-msgid "%s commented on an item/conversation you have been following."
+#: include/text.php:733 src/Model/Event.php:383
+msgid "Tue"
 msgstr ""
 
-#: include/enotify.php:196 include/enotify.php:211 include/enotify.php:226
-#: include/enotify.php:241 include/enotify.php:260 include/enotify.php:276
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
+#: include/text.php:733 src/Model/Event.php:384
+msgid "Wed"
 msgstr ""
 
-#: include/enotify.php:203
-#, php-format
-msgid "[Friendica:Notify] %s posted to your profile wall"
+#: include/text.php:733 src/Model/Event.php:385
+msgid "Thu"
 msgstr ""
 
-#: include/enotify.php:205
-#, php-format
-msgid "%1$s posted to your profile wall at %2$s"
+#: include/text.php:733 src/Model/Event.php:386
+msgid "Fri"
 msgstr ""
 
-#: include/enotify.php:206
-#, php-format
-msgid "%1$s posted to [url=%2$s]your wall[/url]"
+#: include/text.php:733 src/Model/Event.php:387
+msgid "Sat"
 msgstr ""
 
-#: include/enotify.php:218
-#, php-format
-msgid "[Friendica:Notify] %s tagged you"
+#: include/text.php:733 src/Model/Event.php:381
+msgid "Sun"
 msgstr ""
 
-#: include/enotify.php:220
-#, php-format
-msgid "%1$s tagged you at %2$s"
+#: include/text.php:736 src/Model/Event.php:397
+msgid "Jan"
 msgstr ""
 
-#: include/enotify.php:221
-#, php-format
-msgid "%1$s [url=%2$s]tagged you[/url]."
+#: include/text.php:736 src/Model/Event.php:398
+msgid "Feb"
 msgstr ""
 
-#: include/enotify.php:233
-#, php-format
-msgid "[Friendica:Notify] %s shared a new post"
+#: include/text.php:736 src/Model/Event.php:399
+msgid "Mar"
 msgstr ""
 
-#: include/enotify.php:235
-#, php-format
-msgid "%1$s shared a new post at %2$s"
+#: include/text.php:736 src/Model/Event.php:400
+msgid "Apr"
 msgstr ""
 
-#: include/enotify.php:236
-#, php-format
-msgid "%1$s [url=%2$s]shared a post[/url]."
+#: include/text.php:736 src/Model/Event.php:403
+msgid "Jul"
 msgstr ""
 
-#: include/enotify.php:248
-#, php-format
-msgid "[Friendica:Notify] %1$s poked you"
+#: include/text.php:736 src/Model/Event.php:404
+msgid "Aug"
 msgstr ""
 
-#: include/enotify.php:250
-#, php-format
-msgid "%1$s poked you at %2$s"
+#: include/text.php:736
+msgid "Sep"
 msgstr ""
 
-#: include/enotify.php:251
-#, php-format
-msgid "%1$s [url=%2$s]poked you[/url]."
+#: include/text.php:736 src/Model/Event.php:406
+msgid "Oct"
 msgstr ""
 
-#: include/enotify.php:268
-#, php-format
-msgid "[Friendica:Notify] %s tagged your post"
+#: include/text.php:736 src/Model/Event.php:407
+msgid "Nov"
 msgstr ""
 
-#: include/enotify.php:270
-#, php-format
-msgid "%1$s tagged your post at %2$s"
+#: include/text.php:736 src/Model/Event.php:408
+msgid "Dec"
 msgstr ""
 
-#: include/enotify.php:271
+#: include/text.php:882
 #, php-format
-msgid "%1$s tagged [url=%2$s]your post[/url]"
+msgid "Content warning: %s"
 msgstr ""
 
-#: include/enotify.php:283
-msgid "[Friendica:Notify] Introduction received"
+#: include/text.php:944 mod/videos.php:371
+msgid "View Video"
 msgstr ""
 
-#: include/enotify.php:285
-#, php-format
-msgid "You've received an introduction from '%1$s' at %2$s"
+#: include/text.php:961
+msgid "bytes"
 msgstr ""
 
-#: include/enotify.php:286
-#, php-format
-msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
+#: include/text.php:994 include/text.php:1005 include/text.php:1040
+msgid "Click to open/close"
 msgstr ""
 
-#: include/enotify.php:291 include/enotify.php:337
-#, php-format
-msgid "You may visit their profile at %s"
+#: include/text.php:1155
+msgid "View on separate page"
 msgstr ""
 
-#: include/enotify.php:293
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
+#: include/text.php:1156
+msgid "view on separate page"
 msgstr ""
 
-#: include/enotify.php:300
-msgid "[Friendica:Notify] A new person is sharing with you"
+#: include/text.php:1161 include/text.php:1168 src/Model/Event.php:617
+msgid "link to source"
 msgstr ""
 
-#: include/enotify.php:302 include/enotify.php:303
-#, php-format
-msgid "%1$s is sharing with you at %2$s"
+#: include/text.php:1355
+msgid "activity"
 msgstr ""
 
-#: include/enotify.php:310
-msgid "[Friendica:Notify] You have a new follower"
+#: include/text.php:1357 src/Object/Post.php:435 src/Object/Post.php:447
+msgid "comment"
+msgid_plural "comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/text.php:1360
+msgid "post"
 msgstr ""
 
-#: include/enotify.php:312 include/enotify.php:313
-#, php-format
-msgid "You have a new follower at %2$s : %1$s"
+#: include/text.php:1515
+msgid "Item filed"
 msgstr ""
 
-#: include/enotify.php:326
-msgid "[Friendica:Notify] Friend suggestion received"
+#: mod/credits.php:18
+msgid "Credits"
 msgstr ""
 
-#: include/enotify.php:328
-#, php-format
-msgid "You've received a friend suggestion from '%1$s' at %2$s"
+#: mod/credits.php:19
+msgid ""
+"Friendica is a community project, that would not be possible without the "
+"help of many people. Here is a list of those who have contributed to the "
+"code or the translation of Friendica. Thank you all!"
 msgstr ""
 
-#: include/enotify.php:329
-#, php-format
-msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
+#: mod/maintenance.php:24
+msgid "System down for maintenance"
 msgstr ""
 
-#: include/enotify.php:335
-msgid "Name:"
+#: mod/localtime.php:19 src/Model/Event.php:36 src/Model/Event.php:837
+msgid "l F d, Y \\@ g:i A"
 msgstr ""
 
-#: include/enotify.php:336
-msgid "Photo:"
+#: mod/localtime.php:33
+msgid "Time Conversion"
 msgstr ""
 
-#: include/enotify.php:339
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
+#: mod/localtime.php:35
+msgid ""
+"Friendica provides this service for sharing events with other networks and "
+"friends in unknown timezones."
 msgstr ""
 
-#: include/enotify.php:347 include/enotify.php:362
-msgid "[Friendica:Notify] Connection accepted"
+#: mod/localtime.php:39
+#, php-format
+msgid "UTC time: %s"
 msgstr ""
 
-#: include/enotify.php:349 include/enotify.php:364
+#: mod/localtime.php:42
 #, php-format
-msgid "'%1$s' has accepted your connection request at %2$s"
+msgid "Current timezone: %s"
 msgstr ""
 
-#: include/enotify.php:350 include/enotify.php:365
+#: mod/localtime.php:46
 #, php-format
-msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
+msgid "Converted localtime: %s"
 msgstr ""
 
-#: include/enotify.php:355
-msgid ""
-"You are now mutual friends and may exchange status updates, photos, and "
-"email without restriction."
+#: mod/localtime.php:52
+msgid "Please select your timezone:"
 msgstr ""
 
-#: include/enotify.php:357
-#, php-format
-msgid "Please visit %s if you wish to make any changes to this relationship."
+#: mod/localtime.php:56 mod/crepair.php:149 mod/events.php:557
+#: mod/fsuggest.php:114 mod/invite.php:152 mod/manage.php:184
+#: mod/message.php:263 mod/message.php:424 mod/photos.php:1089
+#: mod/photos.php:1177 mod/photos.php:1452 mod/photos.php:1497
+#: mod/photos.php:1536 mod/photos.php:1596 mod/poke.php:191
+#: mod/profiles.php:576 view/theme/duepuntozero/config.php:71
+#: view/theme/frio/config.php:118 view/theme/quattro/config.php:73
+#: view/theme/vier/config.php:119 src/Module/Contact.php:598
+#: src/Module/Install.php:187 src/Module/Install.php:222
+#: src/Object/Post.php:802
+msgid "Submit"
 msgstr ""
 
-#: include/enotify.php:370
-#, php-format
-msgid ""
-"'%1$s' has chosen to accept you a fan, which restricts some forms of "
-"communication - such as private messaging and some profile interactions. If "
-"this is a celebrity or community page, these settings were applied "
-"automatically."
+#: mod/update_community.php:23 mod/update_display.php:24
+#: mod/update_notes.php:36 mod/update_profile.php:35 mod/update_contacts.php:23
+#: mod/update_network.php:33
+msgid "[Embedded content - reload page to view]"
 msgstr ""
 
-#: include/enotify.php:372
-#, php-format
-msgid ""
-"'%1$s' may choose to extend this into a two-way or more permissive "
-"relationship in the future."
+#: mod/fbrowser.php:35 view/theme/frio/theme.php:273 src/Content/Nav.php:154
+#: src/Model/Profile.php:905
+msgid "Photos"
 msgstr ""
 
-#: include/enotify.php:374
-#, php-format
-msgid "Please visit %s  if you wish to make any changes to this relationship."
+#: mod/fbrowser.php:44 mod/fbrowser.php:69 mod/photos.php:200
+#: mod/photos.php:1071 mod/photos.php:1166 mod/photos.php:1183
+#: mod/photos.php:1652 mod/photos.php:1667 src/Model/Photo.php:244
+#: src/Model/Photo.php:253
+msgid "Contact Photos"
 msgstr ""
 
-#: include/enotify.php:384 mod/removeme.php:47
-msgid "[Friendica System Notify]"
+#: mod/fbrowser.php:106 mod/fbrowser.php:137 mod/profile_photo.php:249
+msgid "Upload"
 msgstr ""
 
-#: include/enotify.php:384
-msgid "registration request"
+#: mod/fbrowser.php:132
+msgid "Files"
 msgstr ""
 
-#: include/enotify.php:386
-#, php-format
-msgid "You've received a registration request from '%1$s' at %2$s"
+#: mod/oexchange.php:30
+msgid "Post successful."
 msgstr ""
 
-#: include/enotify.php:387
-#, php-format
-msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
+#: mod/uexport.php:44
+msgid "Export account"
 msgstr ""
 
-#: include/enotify.php:392
-#, php-format
+#: mod/uexport.php:44
 msgid ""
-"Full Name:\t%s\n"
-"Site Location:\t%s\n"
-"Login Name:\t%s (%s)"
+"Export your account info and contacts. Use this to make a backup of your "
+"account and/or to move it to another server."
 msgstr ""
 
-#: include/enotify.php:398
-#, php-format
-msgid "Please visit %s to approve or reject the request."
+#: mod/uexport.php:45
+msgid "Export all"
 msgstr ""
 
-#: include/text.php:302
-msgid "newer"
+#: mod/uexport.php:45
+msgid ""
+"Export your accout info, contacts and all your items as json. Could be a "
+"very big file, and could take a lot of time. Use this to make a full backup "
+"of your account (photos are not exported)"
 msgstr ""
 
-#: include/text.php:303
-msgid "older"
+#: mod/uexport.php:52 mod/settings.php:118
+msgid "Export personal data"
 msgstr ""
 
-#: include/text.php:308
-msgid "first"
+#: mod/admin.php:113
+msgid "Theme settings updated."
 msgstr ""
 
-#: include/text.php:309
-msgid "prev"
+#: mod/admin.php:186 src/Content/Nav.php:227
+msgid "Information"
 msgstr ""
 
-#: include/text.php:343
-msgid "next"
+#: mod/admin.php:187
+msgid "Overview"
 msgstr ""
 
-#: include/text.php:344
-msgid "last"
+#: mod/admin.php:188 mod/admin.php:731
+msgid "Federation Statistics"
 msgstr ""
 
-#: include/text.php:398
-msgid "Loading more entries..."
+#: mod/admin.php:189
+msgid "Configuration"
 msgstr ""
 
-#: include/text.php:399
-msgid "The end"
+#: mod/admin.php:190 mod/admin.php:1454
+msgid "Site"
 msgstr ""
 
-#: include/text.php:767
-msgid "No contacts"
+#: mod/admin.php:191 mod/admin.php:1383 mod/admin.php:1916 mod/admin.php:1933
+msgid "Users"
 msgstr ""
 
-#: include/text.php:791
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/text.php:804
-msgid "View Contacts"
+#: mod/admin.php:192 mod/admin.php:2032 mod/admin.php:2092 mod/settings.php:97
+msgid "Addons"
 msgstr ""
 
-#: include/text.php:889 mod/filer.php:35 mod/editpost.php:106 mod/notes.php:54
-msgid "Save"
+#: mod/admin.php:193 mod/admin.php:2302 mod/admin.php:2346
+msgid "Themes"
 msgstr ""
 
-#: include/text.php:889
-msgid "Follow"
+#: mod/admin.php:194 mod/settings.php:75
+msgid "Additional features"
 msgstr ""
 
-#: include/text.php:895 mod/search.php:162 src/Content/Nav.php:142
-msgid "Search"
+#: mod/admin.php:195 mod/admin.php:319 mod/register.php:290
+#: src/Content/Nav.php:230 src/Module/Tos.php:70
+msgid "Terms of Service"
 msgstr ""
 
-#: include/text.php:898 src/Content/Nav.php:58
-msgid "@name, !forum, #tags, content"
+#: mod/admin.php:196
+msgid "Database"
 msgstr ""
 
-#: include/text.php:904 src/Content/Nav.php:145
-msgid "Full Text"
+#: mod/admin.php:197
+msgid "DB updates"
 msgstr ""
 
-#: include/text.php:905 src/Content/Nav.php:146
-#: src/Content/Widget/TagCloud.php:53
-msgid "Tags"
+#: mod/admin.php:198 mod/admin.php:774
+msgid "Inspect Queue"
 msgstr ""
 
-#: include/text.php:953
-msgid "poke"
+#: mod/admin.php:199
+msgid "Inspect Deferred Workers"
 msgstr ""
 
-#: include/text.php:953
-msgid "poked"
+#: mod/admin.php:200
+msgid "Inspect worker Queue"
 msgstr ""
 
-#: include/text.php:954
-msgid "ping"
+#: mod/admin.php:201
+msgid "Tools"
 msgstr ""
 
-#: include/text.php:954
-msgid "pinged"
+#: mod/admin.php:202
+msgid "Contact Blocklist"
 msgstr ""
 
-#: include/text.php:955
-msgid "prod"
+#: mod/admin.php:203 mod/admin.php:381
+msgid "Server Blocklist"
 msgstr ""
 
-#: include/text.php:955
-msgid "prodded"
+#: mod/admin.php:204 mod/admin.php:539
+msgid "Delete Item"
 msgstr ""
 
-#: include/text.php:956
-msgid "slap"
+#: mod/admin.php:205 mod/admin.php:206 mod/admin.php:2421
+msgid "Logs"
 msgstr ""
 
-#: include/text.php:956
-msgid "slapped"
+#: mod/admin.php:207 mod/admin.php:2488
+msgid "View Logs"
 msgstr ""
 
-#: include/text.php:957
-msgid "finger"
+#: mod/admin.php:209
+msgid "Diagnostics"
 msgstr ""
 
-#: include/text.php:957
-msgid "fingered"
+#: mod/admin.php:210
+msgid "PHP Info"
 msgstr ""
 
-#: include/text.php:958
-msgid "rebuff"
+#: mod/admin.php:211
+msgid "probe address"
 msgstr ""
 
-#: include/text.php:958
-msgid "rebuffed"
+#: mod/admin.php:212
+msgid "check webfinger"
 msgstr ""
 
-#: include/text.php:972 mod/settings.php:941 src/Model/Event.php:389
-msgid "Monday"
+#: mod/admin.php:232 src/Content/Nav.php:270
+msgid "Admin"
 msgstr ""
 
-#: include/text.php:972 src/Model/Event.php:390
-msgid "Tuesday"
+#: mod/admin.php:233
+msgid "Addon Features"
 msgstr ""
 
-#: include/text.php:972 src/Model/Event.php:391
-msgid "Wednesday"
+#: mod/admin.php:234
+msgid "User registrations waiting for confirmation"
 msgstr ""
 
-#: include/text.php:972 src/Model/Event.php:392
-msgid "Thursday"
+#: mod/admin.php:318 mod/admin.php:380 mod/admin.php:496 mod/admin.php:538
+#: mod/admin.php:730 mod/admin.php:773 mod/admin.php:824 mod/admin.php:942
+#: mod/admin.php:1453 mod/admin.php:1915 mod/admin.php:2031 mod/admin.php:2091
+#: mod/admin.php:2301 mod/admin.php:2345 mod/admin.php:2420 mod/admin.php:2487
+msgid "Administration"
 msgstr ""
 
-#: include/text.php:972 src/Model/Event.php:393
-msgid "Friday"
+#: mod/admin.php:320
+msgid "Display Terms of Service"
 msgstr ""
 
-#: include/text.php:972 src/Model/Event.php:394
-msgid "Saturday"
+#: mod/admin.php:320
+msgid ""
+"Enable the Terms of Service page. If this is enabled a link to the terms "
+"will be added to the registration form and the general information page."
 msgstr ""
 
-#: include/text.php:972 mod/settings.php:941 src/Model/Event.php:388
-msgid "Sunday"
+#: mod/admin.php:321
+msgid "Display Privacy Statement"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:409
-msgid "January"
+#: mod/admin.php:321
+#, php-format
+msgid ""
+"Show some informations regarding the needed information to operate the node "
+"according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:410
-msgid "February"
+#: mod/admin.php:322
+msgid "Privacy Statement Preview"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:411
-msgid "March"
+#: mod/admin.php:324
+msgid "The Terms of Service"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:412
-msgid "April"
+#: mod/admin.php:324
+msgid ""
+"Enter the Terms of Service for your node here. You can use BBCode. Headers "
+"of sections should be [h2] and below."
 msgstr ""
 
-#: include/text.php:976 include/text.php:993 src/Model/Event.php:400
-#: src/Model/Event.php:413
-msgid "May"
+#: mod/admin.php:326 mod/admin.php:1455 mod/admin.php:2093 mod/admin.php:2347
+#: mod/admin.php:2422 mod/admin.php:2569 mod/delegate.php:172
+#: mod/settings.php:678 mod/settings.php:785 mod/settings.php:873
+#: mod/settings.php:962 mod/settings.php:1187
+msgid "Save Settings"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:414
-msgid "June"
+#: mod/admin.php:372 mod/admin.php:390 mod/dfrn_request.php:346
+#: mod/friendica.php:113 src/Model/Contact.php:1597
+msgid "Blocked domain"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:415
-msgid "July"
+#: mod/admin.php:372
+msgid "The blocked domain"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:416
-msgid "August"
+#: mod/admin.php:373 mod/admin.php:391 mod/friendica.php:113
+msgid "Reason for the block"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:417
-msgid "September"
+#: mod/admin.php:373 mod/admin.php:386
+msgid "The reason why you blocked this domain."
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:418
-msgid "October"
+#: mod/admin.php:374
+msgid "Delete domain"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:419
-msgid "November"
+#: mod/admin.php:374
+msgid "Check to delete this entry from the blocklist"
 msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:420
-msgid "December"
+#: mod/admin.php:382
+msgid ""
+"This page can be used to define a black list of servers from the federated "
+"network that are not allowed to interact with your node. For all entered "
+"domains you should also give a reason why you have blocked the remote server."
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:381
-msgid "Mon"
+#: mod/admin.php:383
+msgid ""
+"The list of blocked servers will be made publically available on the /"
+"friendica page so that your users and people investigating communication "
+"problems can find the reason easily."
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:382
-msgid "Tue"
+#: mod/admin.php:384
+msgid "Add new entry to block list"
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:383
-msgid "Wed"
+#: mod/admin.php:385
+msgid "Server Domain"
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:384
-msgid "Thu"
+#: mod/admin.php:385
+msgid ""
+"The domain of the new server to add to the block list. Do not include the "
+"protocol."
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:385
-msgid "Fri"
+#: mod/admin.php:386
+msgid "Block reason"
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:386
-msgid "Sat"
+#: mod/admin.php:387
+msgid "Add Entry"
 msgstr ""
 
-#: include/text.php:990 src/Model/Event.php:380
-msgid "Sun"
+#: mod/admin.php:388
+msgid "Save changes to the blocklist"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:396
-msgid "Jan"
+#: mod/admin.php:389
+msgid "Current Entries in the Blocklist"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:397
-msgid "Feb"
+#: mod/admin.php:392
+msgid "Delete entry from blocklist"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:398
-msgid "Mar"
+#: mod/admin.php:395
+msgid "Delete entry from blocklist?"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:399
-msgid "Apr"
+#: mod/admin.php:421
+msgid "Server added to blocklist."
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:402
-msgid "Jul"
+#: mod/admin.php:437
+msgid "Site blocklist updated."
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:403
-msgid "Aug"
+#: mod/admin.php:460 src/Core/Console/GlobalCommunityBlock.php:68
+msgid "The contact has been blocked from the node"
 msgstr ""
 
-#: include/text.php:993
-msgid "Sep"
+#: mod/admin.php:462 src/Core/Console/GlobalCommunityBlock.php:65
+#, php-format
+msgid "Could not find any contact entry for this URL (%s)"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:405
-msgid "Oct"
+#: mod/admin.php:469
+#, php-format
+msgid "%s contact unblocked"
+msgid_plural "%s contacts unblocked"
+msgstr[0] ""
+msgstr[1] ""
+
+#: mod/admin.php:497
+msgid "Remote Contact Blocklist"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:406
-msgid "Nov"
+#: mod/admin.php:498
+msgid ""
+"This page allows you to prevent any message from a remote contact to reach "
+"your node."
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:407
-msgid "Dec"
+#: mod/admin.php:499
+msgid "Block Remote Contact"
 msgstr ""
 
-#: include/text.php:1139
-#, php-format
-msgid "Content warning: %s"
+#: mod/admin.php:500 mod/admin.php:1918
+msgid "select all"
 msgstr ""
 
-#: include/text.php:1204 mod/videos.php:376
-msgid "View Video"
+#: mod/admin.php:501
+msgid "select none"
 msgstr ""
 
-#: include/text.php:1221
-msgid "bytes"
+#: mod/admin.php:502 mod/admin.php:1927 src/Module/Contact.php:625
+#: src/Module/Contact.php:819 src/Module/Contact.php:1072
+msgid "Block"
 msgstr ""
 
-#: include/text.php:1254 include/text.php:1265 include/text.php:1300
-msgid "Click to open/close"
+#: mod/admin.php:503 mod/admin.php:1929 src/Module/Contact.php:625
+#: src/Module/Contact.php:819 src/Module/Contact.php:1072
+msgid "Unblock"
 msgstr ""
 
-#: include/text.php:1415
-msgid "View on separate page"
+#: mod/admin.php:504
+msgid "No remote contact is blocked from this node."
 msgstr ""
 
-#: include/text.php:1416
-msgid "view on separate page"
+#: mod/admin.php:506
+msgid "Blocked Remote Contacts"
 msgstr ""
 
-#: include/text.php:1421 include/text.php:1428 src/Model/Event.php:616
-msgid "link to source"
+#: mod/admin.php:507
+msgid "Block New Remote Contact"
 msgstr ""
 
-#: include/text.php:1615
-msgid "activity"
+#: mod/admin.php:508
+msgid "Photo"
 msgstr ""
 
-#: include/text.php:1617 src/Object/Post.php:428 src/Object/Post.php:440
-msgid "comment"
-msgid_plural "comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/text.php:1620
-msgid "post"
+#: mod/admin.php:508 mod/admin.php:1910 mod/admin.php:1921 mod/admin.php:1935
+#: mod/admin.php:1951 mod/crepair.php:159 mod/settings.php:680
+#: mod/settings.php:706
+msgid "Name"
 msgstr ""
 
-#: include/text.php:1775
-msgid "Item filed"
+#: mod/admin.php:508 mod/profiles.php:393
+msgid "Address"
 msgstr ""
 
-#: include/api.php:1140
-#, php-format
-msgid "Daily posting limit of %d post reached. The post was rejected."
-msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
-msgstr[0] ""
-msgstr[1] ""
+#: mod/admin.php:508 mod/admin.php:518 mod/follow.php:168
+#: mod/notifications.php:176 mod/notifications.php:260 mod/unfollow.php:137
+#: src/Module/Contact.php:644
+msgid "Profile URL"
+msgstr ""
 
-#: include/api.php:1154
+#: mod/admin.php:516
 #, php-format
-msgid "Weekly posting limit of %d post reached. The post was rejected."
-msgid_plural "Weekly posting limit of %d posts reached. The post was rejected."
+msgid "%s total blocked contact"
+msgid_plural "%s total blocked contacts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/api.php:1168
-#, php-format
-msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr ""
-
-#: include/api.php:4240 mod/profile_photo.php:84 mod/profile_photo.php:93
-#: mod/profile_photo.php:102 mod/profile_photo.php:211
-#: mod/profile_photo.php:300 mod/profile_photo.php:310 mod/photos.php:90
-#: mod/photos.php:198 mod/photos.php:735 mod/photos.php:1171
-#: mod/photos.php:1188 mod/photos.php:1680 src/Model/User.php:595
-#: src/Model/User.php:603 src/Model/User.php:611
-msgid "Profile Photos"
-msgstr ""
-
-#: mod/crepair.php:89
-msgid "Contact settings applied."
-msgstr ""
-
-#: mod/crepair.php:91
-msgid "Contact update failed."
+#: mod/admin.php:518
+msgid "URL of the remote contact to block."
 msgstr ""
 
-#: mod/crepair.php:112 mod/redir.php:29 mod/redir.php:127
-#: mod/dfrn_confirm.php:128 mod/fsuggest.php:30 mod/fsuggest.php:96
-msgid "Contact not found."
+#: mod/admin.php:540
+msgid "Delete this Item"
 msgstr ""
 
-#: mod/crepair.php:116
+#: mod/admin.php:541
 msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect "
-"information your communications with this contact may stop working."
+"On this page you can delete an item from your node. If the item is a top "
+"level posting, the entire thread will be deleted."
 msgstr ""
 
-#: mod/crepair.php:117
+#: mod/admin.php:542
 msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr ""
-
-#: mod/crepair.php:131 mod/crepair.php:133
-msgid "No mirroring"
+"You need to know the GUID of the item. You can find it e.g. by looking at "
+"the display URL. The last part of http://example.com/display/123456 is the "
+"GUID, here 123456."
 msgstr ""
 
-#: mod/crepair.php:131
-msgid "Mirror as forwarded posting"
+#: mod/admin.php:543
+msgid "GUID"
 msgstr ""
 
-#: mod/crepair.php:131 mod/crepair.php:133
-msgid "Mirror as my own posting"
+#: mod/admin.php:543
+msgid "The GUID of the item you want to delete."
 msgstr ""
 
-#: mod/crepair.php:146
-msgid "Return to contact editor"
+#: mod/admin.php:577
+msgid "Item marked for deletion."
 msgstr ""
 
-#: mod/crepair.php:148
-msgid "Refetch contact data"
+#: mod/admin.php:648
+msgid "unknown"
 msgstr ""
 
-#: mod/crepair.php:151
-msgid "Remote Self"
+#: mod/admin.php:724
+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/crepair.php:154
-msgid "Mirror postings from this contact"
+#: mod/admin.php:725
+msgid ""
+"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
+"will improve the data displayed here."
 msgstr ""
 
-#: mod/crepair.php:156
+#: mod/admin.php:737
+#, php-format
 msgid ""
-"Mark this contact as remote_self, this will cause friendica to repost new "
-"entries from this contact."
+"Currently this node is aware of %d nodes with %d registered users from the "
+"following platforms:"
 msgstr ""
 
-#: mod/crepair.php:160 mod/settings.php:677 mod/settings.php:703
-#: mod/admin.php:500 mod/admin.php:1890 mod/admin.php:1901 mod/admin.php:1915
-#: mod/admin.php:1931
-msgid "Name"
+#: mod/admin.php:776 mod/admin.php:827
+msgid "ID"
 msgstr ""
 
-#: mod/crepair.php:161
-msgid "Account Nickname"
+#: mod/admin.php:777
+msgid "Recipient Name"
 msgstr ""
 
-#: mod/crepair.php:162
-msgid "@Tagname - overrides Name/Nickname"
+#: mod/admin.php:778
+msgid "Recipient Profile"
 msgstr ""
 
-#: mod/crepair.php:163
-msgid "Account URL"
+#: mod/admin.php:779 view/theme/frio/theme.php:278
+#: src/Core/NotificationsManager.php:180 src/Content/Nav.php:235
+msgid "Network"
 msgstr ""
 
-#: mod/crepair.php:164
-msgid "Friend Request URL"
+#: mod/admin.php:780 mod/admin.php:829
+msgid "Created"
 msgstr ""
 
-#: mod/crepair.php:165
-msgid "Friend Confirm URL"
+#: mod/admin.php:781
+msgid "Last Tried"
 msgstr ""
 
-#: mod/crepair.php:166
-msgid "Notification Endpoint URL"
+#: mod/admin.php:782
+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/crepair.php:167
-msgid "Poll/Feed URL"
+#: mod/admin.php:803
+msgid "Inspect Deferred Worker Queue"
 msgstr ""
 
-#: mod/crepair.php:168
-msgid "New photo from this URL"
+#: mod/admin.php:804
+msgid ""
+"This page lists the deferred worker jobs. This are jobs that couldn't be "
+"executed at the first time."
 msgstr ""
 
-#: mod/wallmessage.php:49 mod/wallmessage.php:112
-#, php-format
-msgid "Number of daily wall messages for %s exceeded. Message failed."
+#: mod/admin.php:807
+msgid "Inspect Worker Queue"
 msgstr ""
 
-#: mod/wallmessage.php:57 mod/message.php:74
-msgid "No recipient selected."
+#: mod/admin.php:808
+msgid ""
+"This page lists the currently queued worker jobs. These jobs are handled by "
+"the worker cronjob you've set up during install."
 msgstr ""
 
-#: mod/wallmessage.php:60
-msgid "Unable to check your home location."
+#: mod/admin.php:828
+msgid "Job Parameters"
 msgstr ""
 
-#: mod/wallmessage.php:63 mod/message.php:81
-msgid "Message could not be sent."
+#: mod/admin.php:830
+msgid "Priority"
 msgstr ""
 
-#: mod/wallmessage.php:66 mod/message.php:84
-msgid "Message collection failure."
+#: mod/admin.php:855
+#, php-format
+msgid ""
+"Your DB still runs with MyISAM tables. You should change the engine type to "
+"InnoDB. As Friendica will use InnoDB only features in the future, you should "
+"change this! See <a href=\"%s\">here</a> for a guide that may be helpful "
+"converting the table engines. You may also use the command <tt>php bin/"
+"console.php dbstructure toinnodb</tt> of your Friendica installation for an "
+"automatic conversion.<br />"
 msgstr ""
 
-#: mod/wallmessage.php:69 mod/message.php:87
-msgid "Message sent."
+#: mod/admin.php:862
+#, php-format
+msgid ""
+"There is a new version of Friendica available for download. Your current "
+"version is %1$s, upstream version is %2$s"
 msgstr ""
 
-#: mod/wallmessage.php:86 mod/wallmessage.php:95
-msgid "No recipient."
+#: mod/admin.php:872
+msgid ""
+"The database update failed. Please run \"php bin/console.php dbstructure "
+"update\" from the command line and have a look at the errors that might "
+"appear."
 msgstr ""
 
-#: mod/wallmessage.php:132 mod/message.php:249
-msgid "Send Private Message"
+#: mod/admin.php:878
+msgid "The worker was never executed. Please check your database structure!"
 msgstr ""
 
-#: mod/wallmessage.php:133
+#: mod/admin.php:881
 #, php-format
 msgid ""
-"If you wish for %s to respond, please check that the privacy settings on "
-"your site allow private mail from unknown senders."
+"The last worker execution was on %s UTC. This is older than one hour. Please "
+"check your crontab settings."
 msgstr ""
 
-#: mod/wallmessage.php:134 mod/message.php:250 mod/message.php:419
-msgid "To:"
+#: mod/admin.php:887
+#, php-format
+msgid ""
+"Friendica's configuration now is stored in config/local.ini.php, please copy "
+"config/local-sample.ini.php and move your config from <code>.htconfig.php</"
+"code>. See <a href=\"%s\">the Config help page</a> for help with the "
+"transition."
 msgstr ""
 
-#: mod/wallmessage.php:135 mod/message.php:254 mod/message.php:421
-msgid "Subject:"
+#: mod/admin.php:894
+#, php-format
+msgid ""
+"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
+"configuration issue that prevents server to server communication. See <a "
+"href=\"%s\">the installation page</a> for help."
 msgstr ""
 
-#: mod/wallmessage.php:141 mod/message.php:258 mod/message.php:424
-#: mod/invite.php:150
-msgid "Your message:"
+#: mod/admin.php:900
+msgid "Normal Account"
 msgstr ""
 
-#: mod/lockview.php:46 mod/lockview.php:57
-msgid "Remote privacy information not available."
+#: mod/admin.php:901
+msgid "Automatic Follower Account"
 msgstr ""
 
-#: mod/lockview.php:66
-msgid "Visible to:"
+#: mod/admin.php:902
+msgid "Public Forum Account"
 msgstr ""
 
-#: mod/install.php:98
-msgid "Friendica Communications Server - Setup"
+#: mod/admin.php:903
+msgid "Automatic Friend Account"
 msgstr ""
 
-#: mod/install.php:104
-msgid "Could not connect to database."
+#: mod/admin.php:904
+msgid "Blog Account"
 msgstr ""
 
-#: mod/install.php:108
-msgid "Could not create table."
+#: mod/admin.php:905
+msgid "Private Forum Account"
 msgstr ""
 
-#: mod/install.php:114
-msgid "Your Friendica site database has been installed."
+#: mod/admin.php:928
+msgid "Message queues"
 msgstr ""
 
-#: mod/install.php:119
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
+#: mod/admin.php:934
+msgid "Server Settings"
 msgstr ""
 
-#: mod/install.php:120 mod/install.php:164 mod/install.php:272
-msgid "Please see the file \"INSTALL.txt\"."
+#: mod/admin.php:943
+msgid "Summary"
 msgstr ""
 
-#: mod/install.php:132
-msgid "Database already in use."
+#: mod/admin.php:945
+msgid "Registered users"
 msgstr ""
 
-#: mod/install.php:161
-msgid "System check"
+#: mod/admin.php:947
+msgid "Pending registrations"
 msgstr ""
 
-#: mod/install.php:165 mod/cal.php:279 mod/events.php:395
-msgid "Next"
+#: mod/admin.php:948
+msgid "Version"
 msgstr ""
 
-#: mod/install.php:166
-msgid "Check again"
+#: mod/admin.php:953
+msgid "Active addons"
 msgstr ""
 
-#: mod/install.php:185
-msgid "Database connection"
+#: mod/admin.php:985
+msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr ""
 
-#: mod/install.php:186
-msgid ""
-"In order to install Friendica we need to know how to connect to your "
-"database."
+#: mod/admin.php:1318
+msgid "Site settings updated."
 msgstr ""
 
-#: mod/install.php:187
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
+#: mod/admin.php:1345 mod/settings.php:906
+msgid "No special theme for mobile devices"
 msgstr ""
 
-#: mod/install.php:188
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
+#: mod/admin.php:1374
+msgid "No community page for local users"
 msgstr ""
 
-#: mod/install.php:192
-msgid "Database Server Name"
+#: mod/admin.php:1375
+msgid "No community page"
 msgstr ""
 
-#: mod/install.php:193
-msgid "Database Login Name"
+#: mod/admin.php:1376
+msgid "Public postings from users of this site"
 msgstr ""
 
-#: mod/install.php:194
-msgid "Database Login Password"
+#: mod/admin.php:1377
+msgid "Public postings from the federated network"
 msgstr ""
 
-#: mod/install.php:194
-msgid "For security reasons the password must not be empty"
+#: mod/admin.php:1378
+msgid "Public postings from local users and the federated network"
 msgstr ""
 
-#: mod/install.php:195
-msgid "Database Name"
+#: mod/admin.php:1382 mod/admin.php:1549 mod/admin.php:1559
+#: src/Module/Contact.php:550
+msgid "Disabled"
 msgstr ""
 
-#: mod/install.php:196 mod/install.php:233
-msgid "Site administrator email address"
+#: mod/admin.php:1384
+msgid "Users, Global Contacts"
 msgstr ""
 
-#: mod/install.php:196 mod/install.php:233
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
+#: mod/admin.php:1385
+msgid "Users, Global Contacts/fallback"
 msgstr ""
 
-#: mod/install.php:198 mod/install.php:236
-msgid "Please select a default timezone for your website"
+#: mod/admin.php:1389
+msgid "One month"
 msgstr ""
 
-#: mod/install.php:223
-msgid "Site settings"
+#: mod/admin.php:1390
+msgid "Three months"
 msgstr ""
 
-#: mod/install.php:237
-msgid "System Language:"
+#: mod/admin.php:1391
+msgid "Half a year"
 msgstr ""
 
-#: mod/install.php:237
-msgid ""
-"Set the default language for your Friendica installation interface and to "
-"send emails."
+#: mod/admin.php:1392
+msgid "One year"
 msgstr ""
 
-#: mod/install.php:253
-msgid ""
-"The database configuration file \"config/local.ini.php\" could not be "
-"written. Please use the enclosed text to create a configuration file in your "
-"web server root."
+#: mod/admin.php:1397
+msgid "Multi user instance"
 msgstr ""
 
-#: mod/install.php:270
-msgid "<h1>What next</h1>"
+#: mod/admin.php:1423
+msgid "Closed"
 msgstr ""
 
-#: mod/install.php:271
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the worker."
+#: mod/admin.php:1424
+msgid "Requires approval"
 msgstr ""
 
-#: mod/install.php:274
-#, php-format
-msgid ""
-"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
-"and register as new user. Remember to use the same email you have entered as "
-"administrator email. This will allow you to enter the site admin panel."
+#: mod/admin.php:1425
+msgid "Open"
 msgstr ""
 
-#: mod/dfrn_confirm.php:73 mod/profiles.php:38 mod/profiles.php:148
-#: mod/profiles.php:193 mod/profiles.php:523
-msgid "Profile not found."
+#: mod/admin.php:1429
+msgid "No SSL policy, links will track page SSL state"
 msgstr ""
 
-#: mod/dfrn_confirm.php:129
-msgid ""
-"This may occasionally happen if contact was requested by both persons and it "
-"has already been approved."
+#: mod/admin.php:1430
+msgid "Force all links to use SSL"
 msgstr ""
 
-#: mod/dfrn_confirm.php:239
-msgid "Response from remote site was not understood."
+#: mod/admin.php:1431
+msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr ""
 
-#: mod/dfrn_confirm.php:246 mod/dfrn_confirm.php:252
-msgid "Unexpected response from remote site: "
+#: mod/admin.php:1435
+msgid "Don't check"
 msgstr ""
 
-#: mod/dfrn_confirm.php:261
-msgid "Confirmation completed successfully."
+#: mod/admin.php:1436
+msgid "check the stable version"
 msgstr ""
 
-#: mod/dfrn_confirm.php:273
-msgid "Temporary failure. Please wait and try again."
+#: mod/admin.php:1437
+msgid "check the development version"
 msgstr ""
 
-#: mod/dfrn_confirm.php:276
-msgid "Introduction failed or was revoked."
+#: mod/admin.php:1456
+msgid "Republish users to directory"
 msgstr ""
 
-#: mod/dfrn_confirm.php:281
-msgid "Remote site reported: "
+#: mod/admin.php:1457 mod/register.php:266
+msgid "Registration"
 msgstr ""
 
-#: mod/dfrn_confirm.php:382
-msgid "Unable to set contact photo."
+#: mod/admin.php:1458
+msgid "File upload"
 msgstr ""
 
-#: mod/dfrn_confirm.php:444
-#, php-format
-msgid "No user record found for '%s' "
+#: mod/admin.php:1459
+msgid "Policies"
 msgstr ""
 
-#: mod/dfrn_confirm.php:454
-msgid "Our site encryption key is apparently messed up."
+#: mod/admin.php:1460 mod/events.php:559 src/Model/Profile.php:866
+#: src/Module/Contact.php:897
+msgid "Advanced"
 msgstr ""
 
-#: mod/dfrn_confirm.php:465
-msgid "Empty site URL was provided or URL could not be decrypted by us."
+#: mod/admin.php:1461
+msgid "Auto Discovered Contact Directory"
 msgstr ""
 
-#: mod/dfrn_confirm.php:481
-msgid "Contact record was not found for you on our site."
+#: mod/admin.php:1462
+msgid "Performance"
 msgstr ""
 
-#: mod/dfrn_confirm.php:495
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
+#: mod/admin.php:1463
+msgid "Worker"
 msgstr ""
 
-#: mod/dfrn_confirm.php:511
+#: mod/admin.php:1464
+msgid "Message Relay"
+msgstr ""
+
+#: mod/admin.php:1465
 msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
+"Relocate - WARNING: advanced function. Could make this server unreachable."
 msgstr ""
 
-#: mod/dfrn_confirm.php:522
-msgid "Unable to set your contact credentials on our system."
+#: mod/admin.php:1468
+msgid "Site name"
 msgstr ""
 
-#: mod/dfrn_confirm.php:578
-msgid "Unable to update your contact profile details on our system"
+#: mod/admin.php:1469
+msgid "Host name"
 msgstr ""
 
-#: mod/dfrn_confirm.php:608 mod/dfrn_request.php:561 src/Model/Contact.php:1909
-msgid "[Name Withheld]"
+#: mod/admin.php:1470
+msgid "Sender Email"
 msgstr ""
 
-#: mod/dirfind.php:53
-#, php-format
-msgid "People Search - %s"
+#: mod/admin.php:1470
+msgid ""
+"The email address your server shall use to send notification emails from."
 msgstr ""
 
-#: mod/dirfind.php:64
-#, php-format
-msgid "Forum Search - %s"
+#: mod/admin.php:1471
+msgid "Banner/Logo"
 msgstr ""
 
-#: mod/dirfind.php:221 mod/match.php:105 mod/suggest.php:104
-#: mod/allfriends.php:92 src/Model/Profile.php:305 src/Content/Widget.php:37
-msgid "Connect"
+#: mod/admin.php:1472
+msgid "Shortcut icon"
 msgstr ""
 
-#: mod/dirfind.php:265 mod/match.php:125
-msgid "No matches"
+#: mod/admin.php:1472
+msgid "Link to an icon that will be used for browsers."
 msgstr ""
 
-#: mod/manage.php:180
-msgid "Manage Identities and/or Pages"
+#: mod/admin.php:1473
+msgid "Touch icon"
 msgstr ""
 
-#: mod/manage.php:181
-msgid ""
-"Toggle between different identities or community/group pages which share "
-"your account details or which you have been granted \"manage\" permissions"
+#: mod/admin.php:1473
+msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr ""
 
-#: mod/manage.php:182
-msgid "Select an identity to manage: "
+#: mod/admin.php:1474
+msgid "Additional Info"
 msgstr ""
 
-#: mod/videos.php:138
-msgid "Do you really want to delete this video?"
+#: mod/admin.php:1474
+#, php-format
+msgid ""
+"For public servers: you can add additional information here that will be "
+"listed at %s/servers."
 msgstr ""
 
-#: mod/videos.php:143
-msgid "Delete Video"
+#: mod/admin.php:1475
+msgid "System language"
 msgstr ""
 
-#: mod/videos.php:198 mod/webfinger.php:16 mod/directory.php:42
-#: mod/search.php:105 mod/search.php:111 mod/viewcontacts.php:48
-#: mod/display.php:203 mod/dfrn_request.php:599 mod/probe.php:13
-#: mod/community.php:28 mod/photos.php:947
-msgid "Public access denied."
+#: mod/admin.php:1476
+msgid "System theme"
 msgstr ""
 
-#: mod/videos.php:206
-msgid "No videos selected"
+#: mod/admin.php:1476
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
 msgstr ""
 
-#: mod/videos.php:307 mod/photos.php:1052
-msgid "Access to this item is restricted."
+#: mod/admin.php:1477
+msgid "Mobile system theme"
 msgstr ""
 
-#: mod/videos.php:383 mod/photos.php:1701
-msgid "View Album"
+#: mod/admin.php:1477
+msgid "Theme for mobile devices"
 msgstr ""
 
-#: mod/videos.php:391
-msgid "Recent Videos"
+#: mod/admin.php:1478
+msgid "SSL link policy"
 msgstr ""
 
-#: mod/videos.php:393
-msgid "Upload New Videos"
+#: mod/admin.php:1478
+msgid "Determines whether generated links should be forced to use SSL"
 msgstr ""
 
-#: mod/webfinger.php:17 mod/probe.php:14
-msgid "Only logged in users are permitted to perform a probing."
+#: mod/admin.php:1479
+msgid "Force SSL"
 msgstr ""
 
-#: mod/directory.php:151 mod/notifications.php:248 mod/contact.php:681
-#: mod/events.php:548 src/Model/Event.php:67 src/Model/Event.php:94
-#: src/Model/Event.php:431 src/Model/Event.php:922 src/Model/Profile.php:430
-msgid "Location:"
+#: mod/admin.php:1479
+msgid ""
+"Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
+"to endless loops."
 msgstr ""
 
-#: mod/directory.php:156 mod/notifications.php:254 src/Model/Profile.php:433
-#: src/Model/Profile.php:745
-msgid "Gender:"
+#: mod/admin.php:1480
+msgid "Hide help entry from navigation menu"
 msgstr ""
 
-#: mod/directory.php:157 src/Model/Profile.php:434 src/Model/Profile.php:769
-msgid "Status:"
+#: mod/admin.php:1480
+msgid ""
+"Hides the menu entry for the Help pages from the navigation menu. You can "
+"still access it calling /help directly."
 msgstr ""
 
-#: mod/directory.php:158 src/Model/Profile.php:435 src/Model/Profile.php:786
-msgid "Homepage:"
+#: mod/admin.php:1481
+msgid "Single user instance"
 msgstr ""
 
-#: mod/directory.php:159 mod/notifications.php:250 mod/contact.php:685
-#: src/Model/Profile.php:436 src/Model/Profile.php:806
-msgid "About:"
+#: mod/admin.php:1481
+msgid "Make this instance multi-user or single-user for the named user"
 msgstr ""
 
-#: mod/directory.php:209
-msgid "Find on this site"
+#: mod/admin.php:1482
+msgid "Maximum image size"
 msgstr ""
 
-#: mod/directory.php:211
-msgid "Results for:"
+#: mod/admin.php:1482
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
 msgstr ""
 
-#: mod/directory.php:213
-msgid "Site Directory"
+#: mod/admin.php:1483
+msgid "Maximum image length"
 msgstr ""
 
-#: mod/directory.php:218
-msgid "No entries (some entries may be hidden)."
+#: mod/admin.php:1483
+msgid ""
+"Maximum length in pixels of the longest side of uploaded images. Default is "
+"-1, which means no limits."
 msgstr ""
 
-#: mod/match.php:48
-msgid "No keywords to match. Please add keywords to your default profile."
+#: mod/admin.php:1484
+msgid "JPEG image quality"
 msgstr ""
 
-#: mod/match.php:104
-msgid "is interested in:"
+#: mod/admin.php:1484
+msgid ""
+"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
+"100, which is full quality."
 msgstr ""
 
-#: mod/match.php:120
-msgid "Profile Match"
+#: mod/admin.php:1486
+msgid "Register policy"
 msgstr ""
 
-#: mod/settings.php:51 mod/photos.php:134
-msgid "everybody"
+#: mod/admin.php:1487
+msgid "Maximum Daily Registrations"
 msgstr ""
 
-#: mod/settings.php:56
-msgid "Account"
+#: mod/admin.php:1487
+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/settings.php:64 src/Model/Profile.php:385 src/Content/Nav.php:210
-msgid "Profiles"
+#: mod/admin.php:1488
+msgid "Register text"
 msgstr ""
 
-#: mod/settings.php:72 mod/admin.php:190
-msgid "Additional features"
+#: mod/admin.php:1488
+msgid ""
+"Will be displayed prominently on the registration page. You can use BBCode "
+"here."
 msgstr ""
 
-#: mod/settings.php:80
-msgid "Display"
+#: mod/admin.php:1489
+msgid "Forbidden Nicknames"
 msgstr ""
 
-#: mod/settings.php:87 mod/settings.php:840
-msgid "Social Networks"
+#: mod/admin.php:1489
+msgid ""
+"Comma separated list of nicknames that are forbidden from registration. "
+"Preset is a list of role names according RFC 2142."
 msgstr ""
 
-#: mod/settings.php:94 mod/admin.php:188 mod/admin.php:2013 mod/admin.php:2073
-msgid "Addons"
+#: mod/admin.php:1490
+msgid "Accounts abandoned after x days"
 msgstr ""
 
-#: mod/settings.php:101 src/Content/Nav.php:205
-msgid "Delegations"
+#: mod/admin.php:1490
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
 msgstr ""
 
-#: mod/settings.php:108
-msgid "Connected apps"
+#: mod/admin.php:1491
+msgid "Allowed friend domains"
 msgstr ""
 
-#: mod/settings.php:115 mod/uexport.php:52
-msgid "Export personal data"
+#: mod/admin.php:1491
+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/settings.php:122
-msgid "Remove account"
+#: mod/admin.php:1492
+msgid "Allowed email domains"
 msgstr ""
 
-#: mod/settings.php:174
-msgid "Missing some important data!"
+#: mod/admin.php:1492
+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/settings.php:176 mod/settings.php:701 mod/contact.php:851
-msgid "Update"
+#: mod/admin.php:1493
+msgid "No OEmbed rich content"
 msgstr ""
 
-#: mod/settings.php:285
-msgid "Failed to connect with email account using the settings provided."
+#: mod/admin.php:1493
+msgid ""
+"Don't show the rich content (e.g. embedded PDF), except from the domains "
+"listed below."
 msgstr ""
 
-#: mod/settings.php:290
-msgid "Email settings updated."
+#: mod/admin.php:1494
+msgid "Allowed OEmbed domains"
 msgstr ""
 
-#: mod/settings.php:306
-msgid "Features updated"
+#: mod/admin.php:1494
+msgid ""
+"Comma separated list of domains which oembed content is allowed to be "
+"displayed. Wildcards are accepted."
 msgstr ""
 
-#: mod/settings.php:379
-msgid "Relocate message has been send to your contacts"
+#: mod/admin.php:1495
+msgid "Block public"
 msgstr ""
 
-#: mod/settings.php:391 src/Model/User.php:377
-msgid "Passwords do not match. Password unchanged."
+#: mod/admin.php:1495
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
 msgstr ""
 
-#: mod/settings.php:396
-msgid "Empty passwords are not allowed. Password unchanged."
+#: mod/admin.php:1496
+msgid "Force publish"
 msgstr ""
 
-#: mod/settings.php:401 src/Core/Console/NewPassword.php:82
+#: mod/admin.php:1496
 msgid ""
-"The new password has been exposed in a public data dump, please choose "
-"another."
+"Check to force all profiles on this site to be listed in the site directory."
 msgstr ""
 
-#: mod/settings.php:407
-msgid "Wrong password."
+#: mod/admin.php:1496
+msgid "Enabling this may violate privacy laws like the GDPR"
 msgstr ""
 
-#: mod/settings.php:414 src/Core/Console/NewPassword.php:89
-msgid "Password changed."
+#: mod/admin.php:1497
+msgid "Global directory URL"
 msgstr ""
 
-#: mod/settings.php:416 src/Core/Console/NewPassword.php:86
-msgid "Password update failed. Please try again."
+#: mod/admin.php:1497
+msgid ""
+"URL to the global directory. If this is not set, the global directory is "
+"completely unavailable to the application."
 msgstr ""
 
-#: mod/settings.php:500
-msgid " Please use a shorter name."
+#: mod/admin.php:1498
+msgid "Private posts by default for new users"
 msgstr ""
 
-#: mod/settings.php:503
-msgid " Name too short."
+#: mod/admin.php:1498
+msgid ""
+"Set default post permissions for all new members to the default privacy "
+"group rather than public."
 msgstr ""
 
-#: mod/settings.php:511
-msgid "Wrong Password"
+#: mod/admin.php:1499
+msgid "Don't include post content in email notifications"
 msgstr ""
 
-#: mod/settings.php:516
-msgid "Invalid email."
+#: mod/admin.php:1499
+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/settings.php:522
-msgid "Cannot change to that email."
+#: mod/admin.php:1500
+msgid "Disallow public access to addons listed in the apps menu."
 msgstr ""
 
-#: mod/settings.php:572
-msgid "Private forum has no privacy permissions. Using default privacy group."
+#: mod/admin.php:1500
+msgid ""
+"Checking this box will restrict addons listed in the apps menu to members "
+"only."
 msgstr ""
 
-#: mod/settings.php:575
-msgid "Private forum has no privacy permissions and no default privacy group."
+#: mod/admin.php:1501
+msgid "Don't embed private images in posts"
 msgstr ""
 
-#: mod/settings.php:615
-msgid "Settings updated."
+#: mod/admin.php:1501
+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/settings.php:674 mod/settings.php:700 mod/settings.php:734
-msgid "Add application"
+#: mod/admin.php:1502
+msgid "Explicit Content"
 msgstr ""
 
-#: mod/settings.php:675 mod/settings.php:782 mod/settings.php:870
-#: mod/settings.php:959 mod/settings.php:1189 mod/delegate.php:170
-#: mod/admin.php:317 mod/admin.php:1426 mod/admin.php:2074 mod/admin.php:2328
-#: mod/admin.php:2403 mod/admin.php:2550
-msgid "Save Settings"
+#: mod/admin.php:1502
+msgid ""
+"Set this to announce that your node is used mostly for explicit content that "
+"might not be suited for minors. This information will be published in the "
+"node information and might be used, e.g. by the global directory, to filter "
+"your node from listings of nodes to join. Additionally a note about this "
+"will be shown at the user registration page."
 msgstr ""
 
-#: mod/settings.php:678 mod/settings.php:704
-msgid "Consumer Key"
+#: mod/admin.php:1503
+msgid "Allow Users to set remote_self"
 msgstr ""
 
-#: mod/settings.php:679 mod/settings.php:705
-msgid "Consumer Secret"
+#: mod/admin.php:1503
+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/settings.php:680 mod/settings.php:706
-msgid "Redirect"
+#: mod/admin.php:1504
+msgid "Block multiple registrations"
 msgstr ""
 
-#: mod/settings.php:681 mod/settings.php:707
-msgid "Icon url"
+#: mod/admin.php:1504
+msgid "Disallow users to register additional accounts for use as pages."
 msgstr ""
 
-#: mod/settings.php:692
-msgid "You can't edit this application."
+#: mod/admin.php:1505
+msgid "OpenID support"
 msgstr ""
 
-#: mod/settings.php:733
-msgid "Connected Apps"
+#: mod/admin.php:1505
+msgid "OpenID support for registration and logins."
 msgstr ""
 
-#: mod/settings.php:735 src/Object/Post.php:158 src/Object/Post.php:160
-msgid "Edit"
+#: mod/admin.php:1506
+msgid "Fullname check"
 msgstr ""
 
-#: mod/settings.php:737
-msgid "Client key starts with"
+#: mod/admin.php:1506
+msgid ""
+"Force users to register with a space between firstname and lastname in Full "
+"name, as an antispam measure"
 msgstr ""
 
-#: mod/settings.php:738
-msgid "No name"
+#: mod/admin.php:1507
+msgid "Community pages for visitors"
 msgstr ""
 
-#: mod/settings.php:739
-msgid "Remove authorization"
+#: mod/admin.php:1507
+msgid ""
+"Which community pages should be available for visitors. Local users always "
+"see both pages."
 msgstr ""
 
-#: mod/settings.php:750
-msgid "No Addon settings configured"
+#: mod/admin.php:1508
+msgid "Posts per user on community page"
 msgstr ""
 
-#: mod/settings.php:759
-msgid "Addon Settings"
+#: mod/admin.php:1508
+msgid ""
+"The maximum number of posts per user on the community page. (Not valid for "
+"'Global Community')"
 msgstr ""
 
-#: mod/settings.php:773 mod/admin.php:2539 mod/admin.php:2540
-msgid "Off"
+#: mod/admin.php:1509
+msgid "Enable OStatus support"
 msgstr ""
 
-#: mod/settings.php:773 mod/admin.php:2539 mod/admin.php:2540
-msgid "On"
+#: mod/admin.php:1509
+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/settings.php:780
-msgid "Additional Features"
+#: mod/admin.php:1510
+msgid "Only import OStatus/ActivityPub threads from our contacts"
 msgstr ""
 
-#: mod/settings.php:803 src/Content/ContactSelector.php:82
-msgid "Diaspora"
+#: mod/admin.php:1510
+msgid ""
+"Normally we import every content from our OStatus and ActivityPub contacts. "
+"With this option we only store threads that are started by a contact that is "
+"known on our system."
 msgstr ""
 
-#: mod/settings.php:803 mod/settings.php:804
-msgid "enabled"
+#: mod/admin.php:1511
+msgid "OStatus support can only be enabled if threading is enabled."
 msgstr ""
 
-#: mod/settings.php:803 mod/settings.php:804
-msgid "disabled"
+#: mod/admin.php:1513
+msgid ""
+"Diaspora support can't be enabled because Friendica was installed into a sub "
+"directory."
 msgstr ""
 
-#: mod/settings.php:803 mod/settings.php:804
-#, php-format
-msgid "Built-in support for %s connectivity is %s"
+#: mod/admin.php:1514
+msgid "Enable Diaspora support"
 msgstr ""
 
-#: mod/settings.php:804
-msgid "GNU Social (OStatus)"
+#: mod/admin.php:1514
+msgid "Provide built-in Diaspora network compatibility."
 msgstr ""
 
-#: mod/settings.php:835
-msgid "Email access is disabled on this site."
+#: mod/admin.php:1515
+msgid "Only allow Friendica contacts"
 msgstr ""
 
-#: mod/settings.php:845
-msgid "General Social Media Settings"
+#: mod/admin.php:1515
+msgid ""
+"All contacts must use Friendica protocols. All other built-in communication "
+"protocols disabled."
 msgstr ""
 
-#: mod/settings.php:846
-msgid "Disable Content Warning"
+#: mod/admin.php:1516
+msgid "Verify SSL"
 msgstr ""
 
-#: mod/settings.php:846
+#: mod/admin.php:1516
 msgid ""
-"Users on networks like Mastodon or Pleroma are able to set a content warning "
-"field which collapse their post by default. This disables the automatic "
-"collapsing and sets the content warning as the post title. Doesn't affect "
-"any other content filtering you eventually set up."
+"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/settings.php:847
-msgid "Disable intelligent shortening"
+#: mod/admin.php:1517
+msgid "Proxy user"
 msgstr ""
 
-#: mod/settings.php:847
-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."
+#: mod/admin.php:1518
+msgid "Proxy URL"
 msgstr ""
 
-#: mod/settings.php:848
-msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
+#: mod/admin.php:1519
+msgid "Network timeout"
 msgstr ""
 
-#: mod/settings.php:848
-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."
+#: mod/admin.php:1519
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr ""
 
-#: mod/settings.php:849
-msgid "Default group for OStatus contacts"
+#: mod/admin.php:1520
+msgid "Maximum Load Average"
 msgstr ""
 
-#: mod/settings.php:850
-msgid "Your legacy GNU Social account"
+#: mod/admin.php:1520
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
 msgstr ""
 
-#: mod/settings.php:850
-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."
+#: mod/admin.php:1521
+msgid "Maximum Load Average (Frontend)"
 msgstr ""
 
-#: mod/settings.php:853
-msgid "Repair OStatus subscriptions"
+#: mod/admin.php:1521
+msgid "Maximum system load before the frontend quits service - default 50."
 msgstr ""
 
-#: mod/settings.php:857
-msgid "Email/Mailbox Setup"
+#: mod/admin.php:1522
+msgid "Minimal Memory"
 msgstr ""
 
-#: mod/settings.php:858
+#: mod/admin.php:1522
 msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
+"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
+"default 0 (deactivated)."
 msgstr ""
 
-#: mod/settings.php:859
-msgid "Last successful email check:"
+#: mod/admin.php:1523
+msgid "Maximum table size for optimization"
 msgstr ""
 
-#: mod/settings.php:861
-msgid "IMAP server name:"
+#: mod/admin.php:1523
+msgid ""
+"Maximum table size (in MB) for the automatic optimization. Enter -1 to "
+"disable it."
 msgstr ""
 
-#: mod/settings.php:862
-msgid "IMAP port:"
+#: mod/admin.php:1524
+msgid "Minimum level of fragmentation"
 msgstr ""
 
-#: mod/settings.php:863
-msgid "Security:"
+#: mod/admin.php:1524
+msgid ""
+"Minimum fragmenation level to start the automatic optimization - default "
+"value is 30%."
 msgstr ""
 
-#: mod/settings.php:863 mod/settings.php:868
-msgid "None"
+#: mod/admin.php:1526
+msgid "Periodical check of global contacts"
 msgstr ""
 
-#: mod/settings.php:864
-msgid "Email login name:"
+#: mod/admin.php:1526
+msgid ""
+"If enabled, the global contacts are checked periodically for missing or "
+"outdated data and the vitality of the contacts and servers."
 msgstr ""
 
-#: mod/settings.php:865
-msgid "Email password:"
+#: mod/admin.php:1527
+msgid "Days between requery"
 msgstr ""
 
-#: mod/settings.php:866
-msgid "Reply-to address:"
+#: mod/admin.php:1527
+msgid "Number of days after which a server is requeried for his contacts."
 msgstr ""
 
-#: mod/settings.php:867
-msgid "Send public posts to all email contacts:"
+#: mod/admin.php:1528
+msgid "Discover contacts from other servers"
 msgstr ""
 
-#: mod/settings.php:868
-msgid "Action after import:"
+#: mod/admin.php:1528
+msgid ""
+"Periodically query other servers for contacts. You can choose between "
+"'users': the users on the remote system, 'Global Contacts': active contacts "
+"that are known on the system. The fallback is meant for Redmatrix servers "
+"and older friendica servers, where global contacts weren't available. The "
+"fallback increases the server load, so the recommened setting is 'Users, "
+"Global Contacts'."
 msgstr ""
 
-#: mod/settings.php:868 src/Content/Nav.php:193
-msgid "Mark as seen"
+#: mod/admin.php:1529
+msgid "Timeframe for fetching global contacts"
 msgstr ""
 
-#: mod/settings.php:868
-msgid "Move to folder"
+#: mod/admin.php:1529
+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/settings.php:869
-msgid "Move to folder:"
+#: mod/admin.php:1530
+msgid "Search the local directory"
 msgstr ""
 
-#: mod/settings.php:903 mod/admin.php:1316
-msgid "No special theme for mobile devices"
+#: mod/admin.php:1530
+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/settings.php:912
-#, php-format
-msgid "%s - (Unsupported)"
+#: mod/admin.php:1532
+msgid "Publish server information"
 msgstr ""
 
-#: mod/settings.php:914
-#, php-format
-msgid "%s - (Experimental)"
+#: mod/admin.php:1532
+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 "
+"profiles, number of posts and the activated protocols and connectors. See <a "
+"href='http://the-federation.info/'>the-federation.info</a> for details."
 msgstr ""
 
-#: mod/settings.php:957
-msgid "Display Settings"
+#: mod/admin.php:1534
+msgid "Check upstream version"
 msgstr ""
 
-#: mod/settings.php:963 mod/settings.php:987
-msgid "Display Theme:"
+#: mod/admin.php:1534
+msgid ""
+"Enables checking for new Friendica versions at github. If there is a new "
+"version, you will be informed in the admin panel overview."
 msgstr ""
 
-#: mod/settings.php:964
-msgid "Mobile Theme:"
+#: mod/admin.php:1535
+msgid "Suppress Tags"
 msgstr ""
 
-#: mod/settings.php:965
-msgid "Suppress warning of insecure networks"
+#: mod/admin.php:1535
+msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr ""
 
-#: mod/settings.php:965
+#: mod/admin.php:1536
+msgid "Clean database"
+msgstr ""
+
+#: mod/admin.php:1536
 msgid ""
-"Should the system suppress the warning that the current group contains "
-"members of networks that can't receive non public postings."
+"Remove old remote items, orphaned database records and old content from some "
+"other helper tables."
 msgstr ""
 
-#: mod/settings.php:966
-msgid "Update browser every xx seconds"
+#: mod/admin.php:1537
+msgid "Lifespan of remote items"
 msgstr ""
 
-#: mod/settings.php:966
-msgid "Minimum of 10 seconds. Enter -1 to disable it."
+#: mod/admin.php:1537
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"remote items will be deleted. Own items, and marked or filed items are "
+"always kept. 0 disables this behaviour."
 msgstr ""
 
-#: mod/settings.php:967
-msgid "Number of items to display per page:"
+#: mod/admin.php:1538
+msgid "Lifespan of unclaimed items"
 msgstr ""
 
-#: mod/settings.php:967 mod/settings.php:968
-msgid "Maximum of 100 items"
+#: mod/admin.php:1538
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"unclaimed remote items (mostly content from the relay) will be deleted. "
+"Default value is 90 days. Defaults to the general lifespan value of remote "
+"items if set to 0."
 msgstr ""
 
-#: mod/settings.php:968
-msgid "Number of items to display per page when viewed from mobile device:"
+#: mod/admin.php:1539
+msgid "Path to item cache"
 msgstr ""
 
-#: mod/settings.php:969
-msgid "Don't show emoticons"
+#: mod/admin.php:1539
+msgid "The item caches buffers generated bbcode and external images."
 msgstr ""
 
-#: mod/settings.php:970
-msgid "Calendar"
+#: mod/admin.php:1540
+msgid "Cache duration in seconds"
 msgstr ""
 
-#: mod/settings.php:971
-msgid "Beginning of week:"
+#: mod/admin.php:1540
+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/settings.php:972
-msgid "Don't show notices"
+#: mod/admin.php:1541
+msgid "Maximum numbers of comments per post"
 msgstr ""
 
-#: mod/settings.php:973
-msgid "Infinite scroll"
+#: mod/admin.php:1541
+msgid "How much comments should be shown for each post? Default value is 100."
 msgstr ""
 
-#: mod/settings.php:974
-msgid "Automatic updates only at the top of the network page"
+#: mod/admin.php:1542
+msgid "Temp path"
 msgstr ""
 
-#: mod/settings.php:974
+#: mod/admin.php:1542
 msgid ""
-"When disabled, the network page is updated all the time, which could be "
-"confusing while reading."
+"If you have a restricted system where the webserver can't access the system "
+"temp path, enter another path here."
 msgstr ""
 
-#: mod/settings.php:975
-msgid "Bandwidth Saver Mode"
+#: mod/admin.php:1543
+msgid "Base path to installation"
 msgstr ""
 
-#: mod/settings.php:975
+#: mod/admin.php:1543
 msgid ""
-"When enabled, embedded content is not displayed on automatic updates, they "
-"only show on page reload."
+"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/settings.php:976
-msgid "Smart Threading"
+#: mod/admin.php:1544
+msgid "Disable picture proxy"
 msgstr ""
 
-#: mod/settings.php:976
+#: mod/admin.php:1544
 msgid ""
-"When enabled, suppress extraneous thread indentation while keeping it where "
-"it matters. Only works if threading is available and enabled."
+"The picture proxy increases performance and privacy. It shouldn't be used on "
+"systems with very low bandwidth."
 msgstr ""
 
-#: mod/settings.php:978
-msgid "General Theme Settings"
+#: mod/admin.php:1545
+msgid "Only search in tags"
 msgstr ""
 
-#: mod/settings.php:979
-msgid "Custom Theme Settings"
+#: mod/admin.php:1545
+msgid "On large systems the text search can slow down the system extremely."
 msgstr ""
 
-#: mod/settings.php:980
-msgid "Content Settings"
+#: mod/admin.php:1547
+msgid "New base url"
 msgstr ""
 
-#: mod/settings.php:1000
-msgid "Unable to find your profile. Please contact your admin."
+#: mod/admin.php:1547
+msgid ""
+"Change base url for this server. Sends relocate message to all Friendica and "
+"Diaspora* contacts of all users."
 msgstr ""
 
-#: mod/settings.php:1039
-msgid "Account Types"
+#: mod/admin.php:1549
+msgid "RINO Encryption"
 msgstr ""
 
-#: mod/settings.php:1040
-msgid "Personal Page Subtypes"
+#: mod/admin.php:1549
+msgid "Encryption layer between nodes."
 msgstr ""
 
-#: mod/settings.php:1041
-msgid "Community Forum Subtypes"
+#: mod/admin.php:1549
+msgid "Enabled"
 msgstr ""
 
-#: mod/settings.php:1048 mod/admin.php:1841
-msgid "Personal Page"
+#: mod/admin.php:1551
+msgid "Maximum number of parallel workers"
 msgstr ""
 
-#: mod/settings.php:1049
-msgid "Account for a personal profile."
+#: mod/admin.php:1551
+#, php-format
+msgid ""
+"On shared hosters set this to %d. On larger systems, values of %d are great. "
+"Default value is %d."
 msgstr ""
 
-#: mod/settings.php:1052 mod/admin.php:1842
-msgid "Organisation Page"
+#: mod/admin.php:1552
+msgid "Don't use 'proc_open' with the worker"
 msgstr ""
 
-#: mod/settings.php:1053
+#: mod/admin.php:1552
 msgid ""
-"Account for an organisation that automatically approves contact requests as "
-"\"Followers\"."
+"Enable this if your system doesn't allow the use of 'proc_open'. This can "
+"happen on shared hosters. If this is enabled you should increase the "
+"frequency of worker calls in your crontab."
 msgstr ""
 
-#: mod/settings.php:1056 mod/admin.php:1843
-msgid "News Page"
+#: mod/admin.php:1553
+msgid "Enable fastlane"
 msgstr ""
 
-#: mod/settings.php:1057
+#: mod/admin.php:1553
 msgid ""
-"Account for a news reflector that automatically approves contact requests as "
-"\"Followers\"."
+"When enabed, the fastlane mechanism starts an additional worker if processes "
+"with higher priority are blocked by processes of lower priority."
 msgstr ""
 
-#: mod/settings.php:1060 mod/admin.php:1844
-msgid "Community Forum"
+#: mod/admin.php:1554
+msgid "Enable frontend worker"
 msgstr ""
 
-#: mod/settings.php:1061
-msgid "Account for community discussions."
+#: mod/admin.php:1554
+#, php-format
+msgid ""
+"When enabled the Worker process is triggered when backend access is "
+"performed \\x28e.g. messages being delivered\\x29. On smaller sites you "
+"might want to call %s/worker on a regular basis via an external cron job. "
+"You should only enable this option if you cannot utilize cron/scheduled jobs "
+"on your server."
 msgstr ""
 
-#: mod/settings.php:1064 mod/admin.php:1834
-msgid "Normal Account Page"
+#: mod/admin.php:1556
+msgid "Subscribe to relay"
 msgstr ""
 
-#: mod/settings.php:1065
+#: mod/admin.php:1556
 msgid ""
-"Account for a regular personal profile that requires manual approval of "
-"\"Friends\" and \"Followers\"."
+"Enables the receiving of public posts from the relay. They will be included "
+"in the search, subscribed tags and on the global community page."
 msgstr ""
 
-#: mod/settings.php:1068 mod/admin.php:1835
-msgid "Soapbox Page"
+#: mod/admin.php:1557
+msgid "Relay server"
 msgstr ""
 
-#: mod/settings.php:1069
+#: mod/admin.php:1557
 msgid ""
-"Account for a public profile that automatically approves contact requests as "
-"\"Followers\"."
+"Address of the relay server where public posts should be send to. For "
+"example https://relay.diasp.org"
 msgstr ""
 
-#: mod/settings.php:1072 mod/admin.php:1836
-msgid "Public Forum"
+#: mod/admin.php:1558
+msgid "Direct relay transfer"
 msgstr ""
 
-#: mod/settings.php:1073
-msgid "Automatically approves all contact requests."
+#: mod/admin.php:1558
+msgid ""
+"Enables the direct transfer to other servers without using the relay servers"
 msgstr ""
 
-#: mod/settings.php:1076 mod/admin.php:1837
-msgid "Automatic Friend Page"
+#: mod/admin.php:1559
+msgid "Relay scope"
 msgstr ""
 
-#: mod/settings.php:1077
+#: mod/admin.php:1559
 msgid ""
-"Account for a popular profile that automatically approves contact requests "
-"as \"Friends\"."
+"Can be 'all' or 'tags'. 'all' means that every public post should be "
+"received. 'tags' means that only posts with selected tags should be received."
 msgstr ""
 
-#: mod/settings.php:1080
-msgid "Private Forum [Experimental]"
+#: mod/admin.php:1559
+msgid "all"
 msgstr ""
 
-#: mod/settings.php:1081
-msgid "Requires manual approval of contact requests."
+#: mod/admin.php:1559
+msgid "tags"
 msgstr ""
 
-#: mod/settings.php:1092
-msgid "OpenID:"
+#: mod/admin.php:1560
+msgid "Server tags"
 msgstr ""
 
-#: mod/settings.php:1092
-msgid "(Optional) Allow this OpenID to login to this account."
+#: mod/admin.php:1560
+msgid "Comma separated list of tags for the 'tags' subscription."
 msgstr ""
 
-#: mod/settings.php:1100
-msgid "Publish your default profile in your local site directory?"
+#: mod/admin.php:1561
+msgid "Allow user tags"
 msgstr ""
 
-#: mod/settings.php:1100
-#, php-format
+#: mod/admin.php:1561
 msgid ""
-"Your profile will be published in this node's <a href=\"%s\">local "
-"directory</a>. Your profile details may be publicly visible depending on the "
-"system settings."
+"If enabled, the tags from the saved searches will used for the 'tags' "
+"subscription in addition to the 'relay_server_tags'."
 msgstr ""
 
-#: mod/settings.php:1100 mod/settings.php:1106 mod/settings.php:1113
-#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1125
-#: mod/settings.php:1129 mod/settings.php:1133 mod/settings.php:1153
-#: mod/settings.php:1154 mod/settings.php:1155 mod/settings.php:1156
-#: mod/settings.php:1157 mod/register.php:238 mod/dfrn_request.php:645
-#: mod/api.php:111 mod/follow.php:150 mod/profiles.php:541 mod/profiles.php:545
-#: mod/profiles.php:566
-msgid "No"
+#: mod/admin.php:1564
+msgid "Start Relocation"
 msgstr ""
 
-#: mod/settings.php:1106
-msgid "Publish your default profile in the global social directory?"
+#: mod/admin.php:1590
+msgid "Update has been marked successful"
 msgstr ""
 
-#: mod/settings.php:1106
+#: mod/admin.php:1597
 #, php-format
-msgid ""
-"Your profile will be published in the global friendica directories (e.g. <a "
-"href=\"%s\">%s</a>). Your profile will be visible in public."
+msgid "Database structure update %s was successfully applied."
 msgstr ""
 
-#: mod/settings.php:1113
-msgid "Hide your contact/friend list from viewers of your default profile?"
+#: mod/admin.php:1600
+#, php-format
+msgid "Executing of database structure update %s failed with error: %s"
 msgstr ""
 
-#: mod/settings.php:1113
-msgid ""
-"Your contact list won't be shown in your default profile page. You can "
-"decide to show your contact list separately for each additional profile you "
-"create"
+#: mod/admin.php:1616
+#, php-format
+msgid "Executing %s failed with error: %s"
 msgstr ""
 
-#: mod/settings.php:1117
-msgid "Hide your profile details from anonymous viewers?"
+#: mod/admin.php:1618
+#, php-format
+msgid "Update %s was successfully applied."
 msgstr ""
 
-#: mod/settings.php:1117
-msgid ""
-"Anonymous visitors will only see your profile picture, your display name and "
-"the nickname you are using on your profile page. Your public posts and "
-"replies will still be accessible by other means."
+#: mod/admin.php:1621
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr ""
 
-#: mod/settings.php:1121
-msgid "Allow friends to post to your profile page?"
+#: mod/admin.php:1624
+#, php-format
+msgid "There was no additional update function %s that needed to be called."
 msgstr ""
 
-#: mod/settings.php:1121
-msgid ""
-"Your contacts may write posts on your profile wall. These posts will be "
-"distributed to your contacts"
+#: mod/admin.php:1647
+msgid "No failed updates."
 msgstr ""
 
-#: mod/settings.php:1125
-msgid "Allow friends to tag your posts?"
+#: mod/admin.php:1648
+msgid "Check database structure"
 msgstr ""
 
-#: mod/settings.php:1125
-msgid "Your contacts can add additional tags to your posts."
+#: mod/admin.php:1653
+msgid "Failed Updates"
 msgstr ""
 
-#: mod/settings.php:1129
-msgid "Allow us to suggest you as a potential friend to new members?"
+#: mod/admin.php:1654
+msgid ""
+"This does not include updates prior to 1139, which did not return a status."
 msgstr ""
 
-#: mod/settings.php:1129
-msgid "If you like, Friendica may suggest new members to add you as a contact."
+#: mod/admin.php:1655
+msgid "Mark success (if update was manually applied)"
 msgstr ""
 
-#: mod/settings.php:1133
-msgid "Permit unknown people to send you private mail?"
+#: mod/admin.php:1656
+msgid "Attempt to execute this update step automatically"
 msgstr ""
 
-#: mod/settings.php:1133
+#: mod/admin.php:1695
+#, php-format
 msgid ""
-"Friendica network users may send you private messages even if they are not "
-"in your contact list."
-msgstr ""
-
-#: mod/settings.php:1137
-msgid "Profile is <strong>not published</strong>."
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/settings.php:1143
+#: mod/admin.php:1698
 #, php-format
-msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
+msgid ""
+"\n"
+"\t\t\tThe login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%1$s\n"
+"\t\t\tLogin Name:\t\t%2$s\n"
+"\t\t\tPassword:\t\t%3$s\n"
+"\n"
+"\t\t\tYou may change your password from your account \"Settings\" page after "
+"logging\n"
+"\t\t\tin.\n"
+"\n"
+"\t\t\tPlease take a few moments to review the other account settings on that "
+"page.\n"
+"\n"
+"\t\t\tYou may also wish to add some basic information to your default "
+"profile\n"
+"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
+"\n"
+"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
+"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - "
+"and\n"
+"\t\t\tperhaps what country you live in; if you do not wish to be more "
+"specific\n"
+"\t\t\tthan that.\n"
+"\n"
+"\t\t\tWe fully respect your right to privacy, and none of these items are "
+"necessary.\n"
+"\t\t\tIf you are new and do not know anybody here, they may help\n"
+"\t\t\tyou to make some new and interesting friends.\n"
+"\n"
+"\t\t\tIf you ever want to delete your account, you can do so at %1$s/"
+"removeme\n"
+"\n"
+"\t\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/settings.php:1150
-msgid "Automatically expire posts after this many days:"
+#: mod/admin.php:1735 src/Model/User.php:771
+#, php-format
+msgid "Registration details for %s"
 msgstr ""
 
-#: mod/settings.php:1150
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr ""
+#: mod/admin.php:1745
+#, php-format
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:1151
-msgid "Advanced expiration settings"
-msgstr ""
-
-#: mod/settings.php:1152
-msgid "Advanced Expiration"
-msgstr ""
+#: mod/admin.php:1751
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:1153
-msgid "Expire posts:"
+#: mod/admin.php:1798
+#, php-format
+msgid "User '%s' deleted"
 msgstr ""
 
-#: mod/settings.php:1154
-msgid "Expire personal notes:"
+#: mod/admin.php:1806
+#, php-format
+msgid "User '%s' unblocked"
 msgstr ""
 
-#: mod/settings.php:1155
-msgid "Expire starred posts:"
+#: mod/admin.php:1806
+#, php-format
+msgid "User '%s' blocked"
 msgstr ""
 
-#: mod/settings.php:1156
-msgid "Expire photos:"
+#: mod/admin.php:1854 mod/settings.php:1062
+msgid "Normal Account Page"
 msgstr ""
 
-#: mod/settings.php:1157
-msgid "Only expire posts by others:"
+#: mod/admin.php:1855 mod/settings.php:1066
+msgid "Soapbox Page"
 msgstr ""
 
-#: mod/settings.php:1187
-msgid "Account Settings"
+#: mod/admin.php:1856 mod/settings.php:1070
+msgid "Public Forum"
 msgstr ""
 
-#: mod/settings.php:1195
-msgid "Password Settings"
+#: mod/admin.php:1857 mod/settings.php:1074
+msgid "Automatic Friend Page"
 msgstr ""
 
-#: mod/settings.php:1196 mod/register.php:275
-msgid "New Password:"
+#: mod/admin.php:1858
+msgid "Private Forum"
 msgstr ""
 
-#: mod/settings.php:1197 mod/register.php:276
-msgid "Confirm:"
+#: mod/admin.php:1861 mod/settings.php:1046
+msgid "Personal Page"
 msgstr ""
 
-#: mod/settings.php:1197
-msgid "Leave password fields blank unless changing"
+#: mod/admin.php:1862 mod/settings.php:1050
+msgid "Organisation Page"
 msgstr ""
 
-#: mod/settings.php:1198
-msgid "Current Password:"
+#: mod/admin.php:1863 mod/settings.php:1054
+msgid "News Page"
 msgstr ""
 
-#: mod/settings.php:1198 mod/settings.php:1199
-msgid "Your current password to confirm the changes"
+#: mod/admin.php:1864 mod/settings.php:1058
+msgid "Community Forum"
 msgstr ""
 
-#: mod/settings.php:1199
-msgid "Password:"
+#: mod/admin.php:1910 mod/admin.php:1921 mod/admin.php:1935 mod/admin.php:1953
+#: src/Content/ContactSelector.php:83
+msgid "Email"
 msgstr ""
 
-#: mod/settings.php:1203
-msgid "Basic Settings"
+#: mod/admin.php:1910 mod/admin.php:1935
+msgid "Register date"
 msgstr ""
 
-#: mod/settings.php:1204 src/Model/Profile.php:738
-msgid "Full Name:"
+#: mod/admin.php:1910 mod/admin.php:1935
+msgid "Last login"
 msgstr ""
 
-#: mod/settings.php:1205
-msgid "Email Address:"
+#: mod/admin.php:1910 mod/admin.php:1935
+msgid "Last item"
 msgstr ""
 
-#: mod/settings.php:1206
-msgid "Your Timezone:"
+#: mod/admin.php:1910
+msgid "Type"
 msgstr ""
 
-#: mod/settings.php:1207
-msgid "Your Language:"
+#: mod/admin.php:1917
+msgid "Add User"
 msgstr ""
 
-#: mod/settings.php:1207
-msgid ""
-"Set the language we use to show you friendica interface and to send you "
-"emails"
+#: mod/admin.php:1919
+msgid "User registrations waiting for confirm"
 msgstr ""
 
-#: mod/settings.php:1208
-msgid "Default Post Location:"
+#: mod/admin.php:1920
+msgid "User waiting for permanent deletion"
 msgstr ""
 
-#: mod/settings.php:1209
-msgid "Use Browser Location:"
+#: mod/admin.php:1921
+msgid "Request date"
 msgstr ""
 
-#: mod/settings.php:1212
-msgid "Security and Privacy Settings"
+#: mod/admin.php:1922
+msgid "No registrations."
 msgstr ""
 
-#: mod/settings.php:1214
-msgid "Maximum Friend Requests/Day:"
+#: mod/admin.php:1923
+msgid "Note from the user"
 msgstr ""
 
-#: mod/settings.php:1214 mod/settings.php:1243
-msgid "(to prevent spam abuse)"
+#: mod/admin.php:1924 mod/notifications.php:180 mod/notifications.php:266
+msgid "Approve"
 msgstr ""
 
-#: mod/settings.php:1215
-msgid "Default Post Permissions"
+#: mod/admin.php:1925
+msgid "Deny"
 msgstr ""
 
-#: mod/settings.php:1216
-msgid "(click to open/close)"
+#: mod/admin.php:1928
+msgid "User blocked"
 msgstr ""
 
-#: mod/settings.php:1224 mod/photos.php:1128 mod/photos.php:1458
-msgid "Show to Groups"
+#: mod/admin.php:1930
+msgid "Site admin"
 msgstr ""
 
-#: mod/settings.php:1225 mod/photos.php:1129 mod/photos.php:1459
-msgid "Show to Contacts"
+#: mod/admin.php:1931
+msgid "Account expired"
 msgstr ""
 
-#: mod/settings.php:1226
-msgid "Default Private Post"
+#: mod/admin.php:1934
+msgid "New User"
 msgstr ""
 
-#: mod/settings.php:1227
-msgid "Default Public Post"
+#: mod/admin.php:1935
+msgid "Delete in"
 msgstr ""
 
-#: mod/settings.php:1231
-msgid "Default Permissions for New Posts"
+#: mod/admin.php:1940
+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/settings.php:1243
-msgid "Maximum private messages per day from unknown people:"
+#: mod/admin.php:1941
+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/settings.php:1246
-msgid "Notification Settings"
+#: mod/admin.php:1951
+msgid "Name of the new user."
 msgstr ""
 
-#: mod/settings.php:1247
-msgid "Send a notification email when:"
+#: mod/admin.php:1952
+msgid "Nickname"
 msgstr ""
 
-#: mod/settings.php:1248
-msgid "You receive an introduction"
+#: mod/admin.php:1952
+msgid "Nickname of the new user."
 msgstr ""
 
-#: mod/settings.php:1249
-msgid "Your introductions are confirmed"
+#: mod/admin.php:1953
+msgid "Email address of the new user."
 msgstr ""
 
-#: mod/settings.php:1250
-msgid "Someone writes on your profile wall"
+#: mod/admin.php:1994
+#, php-format
+msgid "Addon %s disabled."
 msgstr ""
 
-#: mod/settings.php:1251
-msgid "Someone writes a followup comment"
+#: mod/admin.php:1997
+#, php-format
+msgid "Addon %s enabled."
 msgstr ""
 
-#: mod/settings.php:1252
-msgid "You receive a private message"
+#: mod/admin.php:2008 mod/admin.php:2257
+msgid "Disable"
 msgstr ""
 
-#: mod/settings.php:1253
-msgid "You receive a friend suggestion"
+#: mod/admin.php:2011 mod/admin.php:2260
+msgid "Enable"
 msgstr ""
 
-#: mod/settings.php:1254
-msgid "You are tagged in a post"
+#: mod/admin.php:2033 mod/admin.php:2303
+msgid "Toggle"
 msgstr ""
 
-#: mod/settings.php:1255
-msgid "You are poked/prodded/etc. in a post"
+#: mod/admin.php:2034 mod/admin.php:2304 mod/newmember.php:19
+#: mod/settings.php:134 view/theme/frio/theme.php:281 src/Content/Nav.php:259
+msgid "Settings"
 msgstr ""
 
-#: mod/settings.php:1257
-msgid "Activate desktop notifications"
+#: mod/admin.php:2041 mod/admin.php:2312
+msgid "Author: "
 msgstr ""
 
-#: mod/settings.php:1257
-msgid "Show desktop popup on new notifications"
+#: mod/admin.php:2042 mod/admin.php:2313
+msgid "Maintainer: "
 msgstr ""
 
-#: mod/settings.php:1259
-msgid "Text-only notification emails"
+#: mod/admin.php:2094
+msgid "Reload active addons"
 msgstr ""
 
-#: mod/settings.php:1261
-msgid "Send text only notification emails, without the html part"
+#: mod/admin.php:2099
+#, php-format
+msgid ""
+"There are currently no addons available on your node. You can find the "
+"official addon repository at %1$s and might find other interesting addons in "
+"the open addon registry at %2$s"
 msgstr ""
 
-#: mod/settings.php:1263
-msgid "Show detailled notifications"
+#: mod/admin.php:2219
+msgid "No themes found."
 msgstr ""
 
-#: mod/settings.php:1265
-msgid ""
-"Per default, notifications are condensed to a single notification per item. "
-"When enabled every notification is displayed."
+#: mod/admin.php:2294
+msgid "Screenshot"
 msgstr ""
 
-#: mod/settings.php:1267
-msgid "Advanced Account/Page Type Settings"
+#: mod/admin.php:2348
+msgid "Reload active themes"
 msgstr ""
 
-#: mod/settings.php:1268
-msgid "Change the behaviour of this account for special situations"
+#: mod/admin.php:2353
+#, php-format
+msgid "No themes found on the system. They should be placed in %1$s"
 msgstr ""
 
-#: mod/settings.php:1271
-msgid "Relocate"
+#: mod/admin.php:2354
+msgid "[Experimental]"
 msgstr ""
 
-#: mod/settings.php:1272
-msgid ""
-"If you have moved this profile from another server, and some of your "
-"contacts don't receive your updates, try pushing this button."
+#: mod/admin.php:2355
+msgid "[Unsupported]"
 msgstr ""
 
-#: mod/settings.php:1273
-msgid "Resend relocate message to contacts"
+#: mod/admin.php:2379
+msgid "Log settings updated."
 msgstr ""
 
-#: mod/ping.php:289
-msgid "{0} wants to be your friend"
+#: mod/admin.php:2412
+msgid "PHP log currently enabled."
 msgstr ""
 
-#: mod/ping.php:305
-msgid "{0} sent you a message"
+#: mod/admin.php:2414
+msgid "PHP log currently disabled."
 msgstr ""
 
-#: mod/ping.php:321
-msgid "{0} requested registration"
+#: mod/admin.php:2423
+msgid "Clear"
 msgstr ""
 
-#: mod/search.php:39 mod/network.php:194
-msgid "Remove term"
+#: mod/admin.php:2427
+msgid "Enable Debugging"
 msgstr ""
 
-#: mod/search.php:48 mod/network.php:201 src/Content/Feature.php:100
-msgid "Saved Searches"
+#: mod/admin.php:2428
+msgid "Log file"
 msgstr ""
 
-#: mod/search.php:112
-msgid "Only logged in users are permitted to perform a search."
+#: mod/admin.php:2428
+msgid ""
+"Must be writable by web server. Relative to your Friendica top-level "
+"directory."
 msgstr ""
 
-#: mod/search.php:136
-msgid "Too Many Requests"
+#: mod/admin.php:2429
+msgid "Log level"
 msgstr ""
 
-#: mod/search.php:137
-msgid "Only one search per minute is permitted for not logged in users."
+#: mod/admin.php:2431
+msgid "PHP logging"
 msgstr ""
 
-#: mod/search.php:240 mod/community.php:161
-msgid "No results."
+#: mod/admin.php:2432
+msgid ""
+"To temporarily enable logging of PHP errors and warnings you can prepend the "
+"following to the index.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/search.php:246
+#: mod/admin.php:2463
 #, php-format
-msgid "Items tagged with: %s"
+msgid ""
+"Error trying to open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see "
+"if file %1$s exist and is readable."
 msgstr ""
 
-#: mod/search.php:248 mod/contact.php:844
+#: mod/admin.php:2467
 #, php-format
-msgid "Results for: %s"
+msgid ""
+"Couldn't open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see if file "
+"%1$s is readable."
 msgstr ""
 
-#: mod/common.php:93
-msgid "No contacts in common."
+#: mod/admin.php:2558 mod/admin.php:2559 mod/settings.php:776
+msgid "Off"
 msgstr ""
 
-#: mod/common.php:142 mod/contact.php:919
-msgid "Common Friends"
+#: mod/admin.php:2558 mod/admin.php:2559 mod/settings.php:776
+msgid "On"
 msgstr ""
 
-#: mod/bookmarklet.php:24 src/Module/Login.php:310 src/Content/Nav.php:114
-msgid "Login"
+#: mod/admin.php:2559
+#, php-format
+msgid "Lock feature %s"
 msgstr ""
 
-#: mod/bookmarklet.php:34
-msgid "Bad Request"
+#: mod/admin.php:2567
+msgid "Manage Additional Features"
 msgstr ""
 
-#: mod/bookmarklet.php:56
-msgid "The post was created"
+#: mod/allfriends.php:53
+msgid "No friends to display."
 msgstr ""
 
-#: mod/network.php:202 src/Model/Group.php:401
-msgid "add"
+#: mod/allfriends.php:92 mod/dirfind.php:217 mod/match.php:105
+#: mod/suggest.php:104 src/Content/Widget.php:37 src/Model/Profile.php:306
+msgid "Connect"
 msgstr ""
 
-#: mod/network.php:548
-#, php-format
-msgid ""
-"Warning: This group contains %s member from a network that doesn't allow non "
-"public messages."
-msgid_plural ""
-"Warning: This group contains %s members from a network that doesn't allow "
-"non public messages."
-msgstr[0] ""
-msgstr[1] ""
-
-#: mod/network.php:551
-msgid "Messages in this group won't be send to these receivers."
+#: mod/api.php:86 mod/api.php:108
+msgid "Authorize application connection"
 msgstr ""
 
-#: mod/network.php:620
-msgid "No such group"
+#: mod/api.php:87
+msgid "Return to your app and insert this Securty Code:"
 msgstr ""
 
-#: mod/network.php:641 mod/group.php:247
-msgid "Group is empty"
+#: mod/api.php:96
+msgid "Please login to continue."
 msgstr ""
 
-#: mod/network.php:645
-#, php-format
-msgid "Group: %s"
+#: mod/api.php:110
+msgid ""
+"Do you want to authorize this application to access your posts and contacts, "
+"and/or create new posts for you?"
 msgstr ""
 
-#: mod/network.php:671
-msgid "Private messages to this person are at risk of public disclosure."
+#: mod/api.php:112 mod/dfrn_request.php:646 mod/follow.php:152
+#: mod/profiles.php:540 mod/profiles.php:544 mod/profiles.php:565
+#: mod/register.php:238 mod/settings.php:1098 mod/settings.php:1104
+#: mod/settings.php:1111 mod/settings.php:1115 mod/settings.php:1119
+#: mod/settings.php:1123 mod/settings.php:1127 mod/settings.php:1131
+#: mod/settings.php:1151 mod/settings.php:1152 mod/settings.php:1153
+#: mod/settings.php:1154 mod/settings.php:1155
+msgid "No"
 msgstr ""
 
-#: mod/network.php:674
-msgid "Invalid contact."
+#: mod/apps.php:14 src/App.php:1746
+msgid "You must be logged in to use addons. "
 msgstr ""
 
-#: mod/network.php:945
-msgid "Commented Order"
+#: mod/apps.php:19
+msgid "Applications"
 msgstr ""
 
-#: mod/network.php:948
-msgid "Sort by Comment Date"
+#: mod/apps.php:24
+msgid "No installed applications."
 msgstr ""
 
-#: mod/network.php:953
-msgid "Posted Order"
+#: mod/attach.php:16
+msgid "Item not available."
 msgstr ""
 
-#: mod/network.php:956
-msgid "Sort by Post Date"
+#: mod/attach.php:26
+msgid "Item was not found."
 msgstr ""
 
-#: mod/network.php:964 mod/profiles.php:594
-#: src/Core/NotificationsManager.php:186
-msgid "Personal"
+#: mod/babel.php:24
+msgid "Source input"
 msgstr ""
 
-#: mod/network.php:967
-msgid "Posts that mention or involve you"
+#: mod/babel.php:30
+msgid "BBCode::toPlaintext"
 msgstr ""
 
-#: mod/network.php:975
-msgid "New"
+#: mod/babel.php:36
+msgid "BBCode::convert (raw HTML)"
 msgstr ""
 
-#: mod/network.php:978
-msgid "Activity Stream - by date"
+#: mod/babel.php:41
+msgid "BBCode::convert"
 msgstr ""
 
-#: mod/network.php:986
-msgid "Shared Links"
+#: mod/babel.php:47
+msgid "BBCode::convert => HTML::toBBCode"
 msgstr ""
 
-#: mod/network.php:989
-msgid "Interesting Links"
+#: mod/babel.php:53
+msgid "BBCode::toMarkdown"
 msgstr ""
 
-#: mod/network.php:997
-msgid "Starred"
+#: mod/babel.php:59
+msgid "BBCode::toMarkdown => Markdown::convert"
 msgstr ""
 
-#: mod/network.php:1000
-msgid "Favourite Posts"
+#: mod/babel.php:65
+msgid "BBCode::toMarkdown => Markdown::toBBCode"
 msgstr ""
 
-#: mod/group.php:36
-msgid "Group created."
+#: mod/babel.php:71
+msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
 msgstr ""
 
-#: mod/group.php:42
-msgid "Could not create group."
+#: mod/babel.php:78
+msgid "Source input (Diaspora format)"
 msgstr ""
 
-#: mod/group.php:56 mod/group.php:187
-msgid "Group not found."
+#: mod/babel.php:84
+msgid "Markdown::convert (raw HTML)"
 msgstr ""
 
-#: mod/group.php:70
-msgid "Group name changed."
+#: mod/babel.php:89
+msgid "Markdown::convert"
 msgstr ""
 
-#: mod/group.php:101
-msgid "Save Group"
+#: mod/babel.php:95
+msgid "Markdown::toBBCode"
 msgstr ""
 
-#: mod/group.php:102
-msgid "Filter"
+#: mod/babel.php:102
+msgid "Raw HTML input"
 msgstr ""
 
-#: mod/group.php:107
-msgid "Create a group of contacts/friends."
+#: mod/babel.php:107
+msgid "HTML Input"
 msgstr ""
 
-#: mod/group.php:108 mod/group.php:134 mod/group.php:229
-#: src/Model/Group.php:410
-msgid "Group Name: "
+#: mod/babel.php:113
+msgid "HTML::toBBCode"
 msgstr ""
 
-#: mod/group.php:125 src/Model/Group.php:407
-msgid "Contacts not in any group"
+#: mod/babel.php:119
+msgid "HTML::toBBCode => BBCode::convert"
 msgstr ""
 
-#: mod/group.php:157
-msgid "Group removed."
+#: mod/babel.php:124
+msgid "HTML::toBBCode => BBCode::convert (raw HTML)"
 msgstr ""
 
-#: mod/group.php:159
-msgid "Unable to remove group."
+#: mod/babel.php:130
+msgid "HTML::toMarkdown"
 msgstr ""
 
-#: mod/group.php:222
-msgid "Delete Group"
+#: mod/babel.php:136
+msgid "HTML::toPlaintext"
 msgstr ""
 
-#: mod/group.php:233
-msgid "Edit Group Name"
+#: mod/babel.php:144
+msgid "Source text"
 msgstr ""
 
-#: mod/group.php:244
-msgid "Members"
+#: mod/babel.php:145
+msgid "BBCode"
 msgstr ""
 
-#: mod/group.php:246 mod/contact.php:742
-msgid "All Contacts"
+#: mod/babel.php:146
+msgid "Markdown"
 msgstr ""
 
-#: mod/group.php:260
-msgid "Remove contact from group"
+#: mod/babel.php:147
+msgid "HTML"
 msgstr ""
 
-#: mod/group.php:278 mod/profperm.php:118
-msgid "Click on a contact to add or remove."
+#: mod/bookmarklet.php:24 src/Content/Nav.php:166 src/Module/Login.php:320
+msgid "Login"
 msgstr ""
 
-#: mod/group.php:292
-msgid "Add contact to group"
+#: mod/bookmarklet.php:34
+msgid "Bad Request"
 msgstr ""
 
-#: mod/delegate.php:39
-msgid "Parent user not found."
+#: mod/bookmarklet.php:56
+msgid "The post was created"
 msgstr ""
 
-#: mod/delegate.php:146
-msgid "No parent user"
+#: mod/cal.php:34 mod/cal.php:38 mod/community.php:37 mod/follow.php:19
+#: mod/viewcontacts.php:22 mod/viewcontacts.php:26 mod/viewsrc.php:13
+msgid "Access denied."
 msgstr ""
 
-#: mod/delegate.php:161
-msgid "Parent Password:"
+#: mod/cal.php:46 mod/dfrn_poll.php:492 mod/help.php:65 mod/viewcontacts.php:37
+#: src/App.php:1797
+msgid "Page not found."
 msgstr ""
 
-#: mod/delegate.php:161
-msgid ""
-"Please enter the password of the parent account to legitimize your request."
+#: mod/cal.php:141 mod/display.php:309 mod/profile.php:188
+msgid "Access to this profile has been restricted."
 msgstr ""
 
-#: mod/delegate.php:166
-msgid "Parent User"
+#: mod/cal.php:273 mod/events.php:388 view/theme/frio/theme.php:275
+#: view/theme/frio/theme.php:279 src/Content/Nav.php:156
+#: src/Content/Nav.php:222 src/Model/Profile.php:925 src/Model/Profile.php:936
+msgid "Events"
 msgstr ""
 
-#: mod/delegate.php:169
-msgid ""
-"Parent users have total control about this account, including the account "
-"settings. Please double check whom you give this access."
+#: mod/cal.php:274 mod/events.php:389
+msgid "View"
 msgstr ""
 
-#: mod/delegate.php:171 src/Content/Nav.php:205
-msgid "Delegate Page Management"
+#: mod/cal.php:275 mod/events.php:391
+msgid "Previous"
 msgstr ""
 
-#: mod/delegate.php:172
-msgid "Delegates"
+#: mod/cal.php:276 mod/events.php:392 src/Module/Install.php:133
+msgid "Next"
 msgstr ""
 
-#: mod/delegate.php:174
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
+#: mod/cal.php:279 mod/events.php:397 src/Model/Event.php:423
+msgid "today"
 msgstr ""
 
-#: mod/delegate.php:175
-msgid "Existing Page Delegates"
+#: mod/cal.php:280 mod/events.php:398 src/Util/Temporal.php:311
+#: src/Model/Event.php:424
+msgid "month"
 msgstr ""
 
-#: mod/delegate.php:177
-msgid "Potential Delegates"
+#: mod/cal.php:281 mod/events.php:399 src/Util/Temporal.php:312
+#: src/Model/Event.php:425
+msgid "week"
 msgstr ""
 
-#: mod/delegate.php:179 mod/tagrm.php:90
-msgid "Remove"
+#: mod/cal.php:282 mod/events.php:400 src/Util/Temporal.php:313
+#: src/Model/Event.php:426
+msgid "day"
 msgstr ""
 
-#: mod/delegate.php:180
-msgid "Add"
+#: mod/cal.php:283 mod/events.php:401
+msgid "list"
 msgstr ""
 
-#: mod/delegate.php:181
-msgid "No entries."
+#: mod/cal.php:296 src/Core/Console/NewPassword.php:68 src/Model/User.php:258
+msgid "User not found"
 msgstr ""
 
-#: mod/uexport.php:44
-msgid "Export account"
+#: mod/cal.php:312
+msgid "This calendar format is not supported"
 msgstr ""
 
-#: mod/uexport.php:44
-msgid ""
-"Export your account info and contacts. Use this to make a backup of your "
-"account and/or to move it to another server."
+#: mod/cal.php:314
+msgid "No exportable data found"
 msgstr ""
 
-#: mod/uexport.php:45
-msgid "Export all"
+#: mod/cal.php:331
+msgid "calendar"
 msgstr ""
 
-#: mod/uexport.php:45
-msgid ""
-"Export your accout info, contacts and all your items as json. Could be a "
-"very big file, and could take a lot of time. Use this to make a full backup "
-"of your account (photos are not exported)"
+#: mod/common.php:91
+msgid "No contacts in common."
 msgstr ""
 
-#: mod/repair_ostatus.php:21
-msgid "Resubscribing to OStatus contacts"
+#: mod/common.php:142 src/Module/Contact.php:887
+msgid "Common Friends"
 msgstr ""
 
-#: mod/repair_ostatus.php:37
-msgid "Error"
+#: mod/community.php:30 mod/dfrn_request.php:600 mod/directory.php:41
+#: mod/display.php:201 mod/photos.php:941 mod/probe.php:13 mod/search.php:106
+#: mod/search.php:112 mod/videos.php:193 mod/viewcontacts.php:50
+#: mod/webfinger.php:16
+msgid "Public access denied."
 msgstr ""
 
-#: mod/repair_ostatus.php:52 mod/ostatus_subscribe.php:65
-msgid "Done"
+#: mod/community.php:73
+msgid "Community option not available."
 msgstr ""
 
-#: mod/repair_ostatus.php:58 mod/ostatus_subscribe.php:89
-msgid "Keep this window open until done."
+#: mod/community.php:90
+msgid "Not available."
 msgstr ""
 
-#: mod/viewcontacts.php:20 mod/viewcontacts.php:24 mod/cal.php:32
-#: mod/cal.php:36 mod/follow.php:19 mod/community.php:35 mod/viewsrc.php:13
-msgid "Access denied."
+#: mod/community.php:102
+msgid "Local Community"
 msgstr ""
 
-#: mod/viewcontacts.php:90
-msgid "No contacts."
+#: mod/community.php:105
+msgid "Posts from local users on this server"
 msgstr ""
 
-#: mod/viewcontacts.php:106 mod/contact.php:640 mod/contact.php:1055
-#, php-format
-msgid "Visit %s's profile [%s]"
+#: mod/community.php:113
+msgid "Global Community"
 msgstr ""
 
-#: mod/unfollow.php:38 mod/unfollow.php:88
-msgid "You aren't following this contact."
+#: mod/community.php:116
+msgid "Posts from users of the whole federated network"
 msgstr ""
 
-#: mod/unfollow.php:44 mod/unfollow.php:94
-msgid "Unfollowing is currently not supported by your network."
+#: mod/community.php:162 mod/search.php:243
+msgid "No results."
 msgstr ""
 
-#: mod/unfollow.php:65
-msgid "Contact unfollowed"
+#: mod/community.php:206
+msgid ""
+"This community stream shows all public posts received by this node. They may "
+"not reflect the opinions of this node’s users."
 msgstr ""
 
-#: mod/unfollow.php:113 mod/contact.php:607
-msgid "Disconnect/Unfollow"
+#: mod/crepair.php:88
+msgid "Contact settings applied."
 msgstr ""
 
-#: mod/unfollow.php:126 mod/dfrn_request.php:652 mod/follow.php:157
-msgid "Your Identity Address:"
+#: mod/crepair.php:90
+msgid "Contact update failed."
 msgstr ""
 
-#: mod/unfollow.php:129 mod/dfrn_request.php:654 mod/follow.php:62
-msgid "Submit Request"
+#: mod/crepair.php:111 mod/dfrn_confirm.php:129 mod/fsuggest.php:30
+#: mod/fsuggest.php:96 mod/redir.php:30 mod/redir.php:128
+msgid "Contact not found."
 msgstr ""
 
-#: mod/unfollow.php:135 mod/notifications.php:174 mod/notifications.php:258
-#: mod/admin.php:500 mod/admin.php:510 mod/contact.php:677 mod/follow.php:166
-msgid "Profile URL"
+#: mod/crepair.php:115
+msgid ""
+"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect "
+"information your communications with this contact may stop working."
 msgstr ""
 
-#: mod/unfollow.php:145 mod/contact.php:891 mod/follow.php:189
-#: src/Model/Profile.php:891
-msgid "Status Messages and Posts"
+#: mod/crepair.php:116
+msgid ""
+"Please use your browser 'Back' button <strong>now</strong> if you are "
+"uncertain what to do on this page."
 msgstr ""
 
-#: mod/update_notes.php:36 mod/update_network.php:33 mod/update_contacts.php:24
-#: mod/update_profile.php:35 mod/update_community.php:23
-#: mod/update_display.php:24
-msgid "[Embedded content - reload page to view]"
+#: mod/crepair.php:130 mod/crepair.php:132
+msgid "No mirroring"
 msgstr ""
 
-#: mod/register.php:99
-msgid ""
-"Registration successful. Please check your email for further instructions."
+#: mod/crepair.php:130
+msgid "Mirror as forwarded posting"
 msgstr ""
 
-#: mod/register.php:103
-#, php-format
-msgid ""
-"Failed to send email message. Here your accout details:<br> login: %s<br> "
-"password: %s<br><br>You can change your password after login."
+#: mod/crepair.php:130 mod/crepair.php:132
+msgid "Mirror as my own posting"
 msgstr ""
 
-#: mod/register.php:110
-msgid "Registration successful."
+#: mod/crepair.php:145
+msgid "Return to contact editor"
 msgstr ""
 
-#: mod/register.php:115
-msgid "Your registration can not be processed."
+#: mod/crepair.php:147
+msgid "Refetch contact data"
 msgstr ""
 
-#: mod/register.php:162
-msgid "Your registration is pending approval by the site owner."
+#: mod/crepair.php:150
+msgid "Remote Self"
 msgstr ""
 
-#: mod/register.php:191 mod/uimport.php:37
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
+#: mod/crepair.php:153
+msgid "Mirror postings from this contact"
 msgstr ""
 
-#: mod/register.php:220
+#: mod/crepair.php:155
 msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
+"Mark this contact as remote_self, this will cause friendica to repost new "
+"entries from this contact."
 msgstr ""
 
-#: mod/register.php:221
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
+#: mod/crepair.php:160
+msgid "Account Nickname"
 msgstr ""
 
-#: mod/register.php:222
-msgid "Your OpenID (optional): "
+#: mod/crepair.php:161
+msgid "@Tagname - overrides Name/Nickname"
 msgstr ""
 
-#: mod/register.php:234
-msgid "Include your profile in member directory?"
+#: mod/crepair.php:162
+msgid "Account URL"
 msgstr ""
 
-#: mod/register.php:261
-msgid "Note for the admin"
+#: mod/crepair.php:163
+msgid "Friend Request URL"
 msgstr ""
 
-#: mod/register.php:261
-msgid "Leave a message for the admin, why you want to join this node"
+#: mod/crepair.php:164
+msgid "Friend Confirm URL"
 msgstr ""
 
-#: mod/register.php:262
-msgid "Membership on this site is by invitation only."
+#: mod/crepair.php:165
+msgid "Notification Endpoint URL"
 msgstr ""
 
-#: mod/register.php:263
-msgid "Your invitation code: "
+#: mod/crepair.php:166
+msgid "Poll/Feed URL"
 msgstr ""
 
-#: mod/register.php:266 mod/admin.php:1428
-msgid "Registration"
+#: mod/crepair.php:167
+msgid "New photo from this URL"
 msgstr ""
 
-#: mod/register.php:272
-msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
+#: mod/delegate.php:41
+msgid "Parent user not found."
 msgstr ""
 
-#: mod/register.php:273
-msgid ""
-"Your Email Address: (Initial information will be send there, so this has to "
-"be an existing address.)"
+#: mod/delegate.php:148
+msgid "No parent user"
 msgstr ""
 
-#: mod/register.php:275
-msgid "Leave empty for an auto generated password."
+#: mod/delegate.php:163
+msgid "Parent Password:"
 msgstr ""
 
-#: mod/register.php:277
-#, php-format
+#: mod/delegate.php:163
 msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be '<strong>nickname@%s</strong>'."
+"Please enter the password of the parent account to legitimize your request."
 msgstr ""
 
-#: mod/register.php:278
-msgid "Choose a nickname: "
+#: mod/delegate.php:168
+msgid "Parent User"
 msgstr ""
 
-#: mod/register.php:281 src/Module/Login.php:281 src/Content/Nav.php:128
-msgid "Register"
+#: mod/delegate.php:171
+msgid ""
+"Parent users have total control about this account, including the account "
+"settings. Please double check whom you give this access."
 msgstr ""
 
-#: mod/register.php:287 mod/uimport.php:52
-msgid "Import"
+#: mod/delegate.php:173 src/Content/Nav.php:257
+msgid "Delegate Page Management"
 msgstr ""
 
-#: mod/register.php:288
-msgid "Import your profile to this friendica instance"
+#: mod/delegate.php:174
+msgid "Delegates"
 msgstr ""
 
-#: mod/register.php:290 mod/admin.php:191 mod/admin.php:310
-#: src/Module/Tos.php:70 src/Content/Nav.php:178
-msgid "Terms of Service"
+#: mod/delegate.php:176
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
 msgstr ""
 
-#: mod/register.php:296
-msgid "Note: This node explicitly contains adult content"
+#: mod/delegate.php:177
+msgid "Existing Page Delegates"
 msgstr ""
 
-#: mod/notifications.php:35
-msgid "Invalid request identifier."
+#: mod/delegate.php:179
+msgid "Potential Delegates"
 msgstr ""
 
-#: mod/notifications.php:44 mod/notifications.php:182 mod/notifications.php:230
-#: mod/message.php:114
-msgid "Discard"
+#: mod/delegate.php:181 mod/tagrm.php:111
+msgid "Remove"
 msgstr ""
 
-#: mod/notifications.php:57 mod/notifications.php:181 mod/notifications.php:266
-#: mod/contact.php:659 mod/contact.php:853 mod/contact.php:1116
-msgid "Ignore"
+#: mod/delegate.php:182
+msgid "Add"
 msgstr ""
 
-#: mod/notifications.php:90 src/Content/Nav.php:191
-msgid "Notifications"
+#: mod/delegate.php:183
+msgid "No entries."
 msgstr ""
 
-#: mod/notifications.php:102
-msgid "Network Notifications"
+#: mod/dfrn_confirm.php:74 mod/profiles.php:40 mod/profiles.php:150
+#: mod/profiles.php:195 mod/profiles.php:525
+msgid "Profile not found."
 msgstr ""
 
-#: mod/notifications.php:107 mod/notify.php:81
-msgid "System Notifications"
+#: mod/dfrn_confirm.php:130
+msgid ""
+"This may occasionally happen if contact was requested by both persons and it "
+"has already been approved."
 msgstr ""
 
-#: mod/notifications.php:112
-msgid "Personal Notifications"
+#: mod/dfrn_confirm.php:240
+msgid "Response from remote site was not understood."
 msgstr ""
 
-#: mod/notifications.php:117
-msgid "Home Notifications"
+#: mod/dfrn_confirm.php:247 mod/dfrn_confirm.php:253
+msgid "Unexpected response from remote site: "
 msgstr ""
 
-#: mod/notifications.php:137
-msgid "Show unread"
+#: mod/dfrn_confirm.php:262
+msgid "Confirmation completed successfully."
 msgstr ""
 
-#: mod/notifications.php:137
-msgid "Show all"
+#: mod/dfrn_confirm.php:274
+msgid "Temporary failure. Please wait and try again."
 msgstr ""
 
-#: mod/notifications.php:148
-msgid "Show Ignored Requests"
+#: mod/dfrn_confirm.php:277
+msgid "Introduction failed or was revoked."
 msgstr ""
 
-#: mod/notifications.php:148
-msgid "Hide Ignored Requests"
+#: mod/dfrn_confirm.php:282
+msgid "Remote site reported: "
 msgstr ""
 
-#: mod/notifications.php:161 mod/notifications.php:238
-msgid "Notification type:"
+#: mod/dfrn_confirm.php:383
+msgid "Unable to set contact photo."
 msgstr ""
 
-#: mod/notifications.php:164
-msgid "Suggested by:"
+#: mod/dfrn_confirm.php:445
+#, php-format
+msgid "No user record found for '%s' "
 msgstr ""
 
-#: mod/notifications.php:176 mod/notifications.php:255 mod/contact.php:667
-msgid "Hide this contact from others"
+#: mod/dfrn_confirm.php:455
+msgid "Our site encryption key is apparently messed up."
 msgstr ""
 
-#: mod/notifications.php:178 mod/notifications.php:264 mod/admin.php:1904
-msgid "Approve"
+#: mod/dfrn_confirm.php:466
+msgid "Empty site URL was provided or URL could not be decrypted by us."
 msgstr ""
 
-#: mod/notifications.php:198
-msgid "Claims to be known to you: "
+#: mod/dfrn_confirm.php:482
+msgid "Contact record was not found for you on our site."
 msgstr ""
 
-#: mod/notifications.php:199
-msgid "yes"
+#: mod/dfrn_confirm.php:496
+#, php-format
+msgid "Site public key not available in contact record for URL %s."
 msgstr ""
 
-#: mod/notifications.php:199
-msgid "no"
+#: mod/dfrn_confirm.php:512
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
 msgstr ""
 
-#: mod/notifications.php:200 mod/notifications.php:204
-msgid "Shall your connection be bidirectional or not?"
+#: mod/dfrn_confirm.php:523
+msgid "Unable to set your contact credentials on our system."
 msgstr ""
 
-#: mod/notifications.php:201 mod/notifications.php:205
-#, php-format
-msgid ""
-"Accepting %s as a friend allows %s to subscribe to your posts, and you will "
-"also receive updates from them in your news feed."
+#: mod/dfrn_confirm.php:579
+msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: mod/notifications.php:202
-#, php-format
-msgid ""
-"Accepting %s as a subscriber allows them to subscribe to your posts, but you "
-"will not receive updates from them in your news feed."
+#: mod/dfrn_confirm.php:609 mod/dfrn_request.php:562 src/Model/Contact.php:1913
+msgid "[Name Withheld]"
 msgstr ""
 
-#: mod/notifications.php:206
+#: mod/dfrn_poll.php:127 mod/dfrn_poll.php:536
 #, php-format
-msgid ""
-"Accepting %s as a sharer allows them to subscribe to your posts, but you "
-"will not receive updates from them in your news feed."
+msgid "%1$s welcomes %2$s"
 msgstr ""
 
-#: mod/notifications.php:217
-msgid "Friend"
+#: mod/dfrn_request.php:95
+msgid "This introduction has already been accepted."
 msgstr ""
 
-#: mod/notifications.php:218
-msgid "Sharer"
+#: mod/dfrn_request.php:113 mod/dfrn_request.php:354
+msgid "Profile location is not valid or does not contain profile information."
 msgstr ""
 
-#: mod/notifications.php:218
-msgid "Subscriber"
+#: mod/dfrn_request.php:117 mod/dfrn_request.php:358
+msgid "Warning: profile location has no identifiable owner name."
 msgstr ""
 
-#: mod/notifications.php:252 mod/contact.php:687 mod/follow.php:177
-#: src/Model/Profile.php:794
-msgid "Tags:"
+#: mod/dfrn_request.php:120 mod/dfrn_request.php:361
+msgid "Warning: profile location has no profile photo."
 msgstr ""
 
-#: mod/notifications.php:261 mod/contact.php:81 src/Model/Profile.php:533
-msgid "Network:"
+#: mod/dfrn_request.php:124 mod/dfrn_request.php:365
+#, 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:162
+msgid "Introduction complete."
 msgstr ""
 
-#: mod/notifications.php:274
-msgid "No introductions."
+#: mod/dfrn_request.php:198
+msgid "Unrecoverable protocol error."
+msgstr ""
+
+#: mod/dfrn_request.php:225
+msgid "Profile unavailable."
 msgstr ""
 
-#: mod/notifications.php:308
+#: mod/dfrn_request.php:247
 #, php-format
-msgid "No more %s notifications."
+msgid "%s has received too many connection requests today."
 msgstr ""
 
-#: mod/message.php:31 mod/message.php:120 src/Content/Nav.php:199
-msgid "New Message"
+#: mod/dfrn_request.php:248
+msgid "Spam protection measures have been invoked."
 msgstr ""
 
-#: mod/message.php:78
-msgid "Unable to locate contact information."
+#: mod/dfrn_request.php:249
+msgid "Friends are advised to please try again in 24 hours."
 msgstr ""
 
-#: mod/message.php:152
-msgid "Do you really want to delete this message?"
+#: mod/dfrn_request.php:275
+msgid "Invalid locator"
 msgstr ""
 
-#: mod/message.php:169
-msgid "Message deleted."
+#: mod/dfrn_request.php:311
+msgid "You have already introduced yourself here."
 msgstr ""
 
-#: mod/message.php:184
-msgid "Conversation removed."
+#: mod/dfrn_request.php:314
+#, php-format
+msgid "Apparently you are already friends with %s."
 msgstr ""
 
-#: mod/message.php:290
-msgid "No messages."
+#: mod/dfrn_request.php:334
+msgid "Invalid profile URL."
 msgstr ""
 
-#: mod/message.php:331
-msgid "Message not available."
+#: mod/dfrn_request.php:340 src/Model/Contact.php:1592
+msgid "Disallowed profile URL."
 msgstr ""
 
-#: mod/message.php:395
-msgid "Delete message"
+#: mod/dfrn_request.php:413 src/Module/Contact.php:238
+msgid "Failed to update contact record."
 msgstr ""
 
-#: mod/message.php:397 mod/message.php:498
-msgid "D, d M Y - g:i A"
+#: mod/dfrn_request.php:433
+msgid "Your introduction has been sent."
 msgstr ""
 
-#: mod/message.php:412 mod/message.php:495
-msgid "Delete conversation"
+#: mod/dfrn_request.php:471
+msgid ""
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
+msgstr ""
+
+#: mod/dfrn_request.php:487
+msgid "Please login to confirm introduction."
 msgstr ""
 
-#: mod/message.php:414
+#: mod/dfrn_request.php:495
 msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
+"Incorrect identity currently logged in. Please login to <strong>this</"
+"strong> profile."
 msgstr ""
 
-#: mod/message.php:418
-msgid "Send Reply"
+#: mod/dfrn_request.php:509 mod/dfrn_request.php:526
+msgid "Confirm"
 msgstr ""
 
-#: mod/message.php:469
-#, php-format
-msgid "Unknown sender - %s"
+#: mod/dfrn_request.php:521
+msgid "Hide this contact"
 msgstr ""
 
-#: mod/message.php:471
+#: mod/dfrn_request.php:524
 #, php-format
-msgid "You and %s"
+msgid "Welcome home %s."
 msgstr ""
 
-#: mod/message.php:473
+#: mod/dfrn_request.php:525
 #, php-format
-msgid "%s and You"
+msgid "Please confirm your introduction/connection request to %s."
+msgstr ""
+
+#: mod/dfrn_request.php:635
+msgid ""
+"Please enter your 'Identity Address' from one of the following supported "
+"communications networks:"
 msgstr ""
 
-#: mod/message.php:501
+#: mod/dfrn_request.php:638
 #, php-format
-msgid "%d message"
-msgid_plural "%d messages"
-msgstr[0] ""
-msgstr[1] ""
+msgid ""
+"If you are not yet a member of the free social web, <a href=\"%s\">follow "
+"this link to find a public Friendica site and join us today</a>."
+msgstr ""
 
-#: mod/hcard.php:19
-msgid "No profile"
+#: mod/dfrn_request.php:643
+msgid "Friend/Connection Request"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:22
-msgid "Subscribing to OStatus contacts"
+#: mod/dfrn_request.php:644
+msgid ""
+"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
+"testuser@gnusocial.de"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:34
-msgid "No contact provided."
+#: mod/dfrn_request.php:645 mod/follow.php:151
+msgid "Please answer the following:"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:41
-msgid "Couldn't fetch information for contact."
+#: mod/dfrn_request.php:646 mod/follow.php:152
+#, php-format
+msgid "Does %s know you?"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:51
-msgid "Couldn't fetch friends for contact."
+#: mod/dfrn_request.php:647 mod/follow.php:153
+msgid "Add a personal note:"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:79
-msgid "success"
+#: mod/dfrn_request.php:649 src/Content/ContactSelector.php:80
+msgid "Friendica"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:81
-msgid "failed"
+#: mod/dfrn_request.php:650
+msgid "GNU Social (Pleroma, Mastodon)"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:84 src/Object/Post.php:264
-msgid "ignored"
+#: mod/dfrn_request.php:651
+msgid "Diaspora (Socialhome, Hubzilla)"
 msgstr ""
 
-#: mod/dfrn_poll.php:126 mod/dfrn_poll.php:549
+#: mod/dfrn_request.php:652
 #, php-format
-msgid "%1$s welcomes %2$s"
+msgid ""
+" - please do not use this form.  Instead, enter %s into your Diaspora search "
+"bar."
 msgstr ""
 
-#: mod/removeme.php:47
-msgid "User deleted their account"
+#: mod/dfrn_request.php:653 mod/follow.php:159 mod/unfollow.php:128
+msgid "Your Identity Address:"
 msgstr ""
 
-#: mod/removeme.php:48
-msgid ""
-"On your Friendica node an user deleted their account. Please ensure that "
-"their data is removed from the backups."
+#: mod/dfrn_request.php:655 mod/follow.php:64 mod/unfollow.php:131
+msgid "Submit Request"
 msgstr ""
 
-#: mod/removeme.php:49
-#, php-format
-msgid "The user id is %d"
+#: mod/directory.php:152 mod/events.php:545 mod/notifications.php:250
+#: src/Model/Event.php:68 src/Model/Event.php:95 src/Model/Event.php:432
+#: src/Model/Event.php:923 src/Model/Profile.php:431 src/Module/Contact.php:648
+msgid "Location:"
 msgstr ""
 
-#: mod/removeme.php:81 mod/removeme.php:84
-msgid "Remove My Account"
+#: mod/directory.php:157 mod/notifications.php:256 src/Model/Profile.php:434
+#: src/Model/Profile.php:746
+msgid "Gender:"
 msgstr ""
 
-#: mod/removeme.php:82
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
+#: mod/directory.php:158 src/Model/Profile.php:435 src/Model/Profile.php:770
+msgid "Status:"
 msgstr ""
 
-#: mod/removeme.php:83
-msgid "Please enter your password for verification:"
+#: mod/directory.php:159 src/Model/Profile.php:436 src/Model/Profile.php:787
+msgid "Homepage:"
 msgstr ""
 
-#: mod/tagrm.php:43
-msgid "Tag removed"
+#: mod/directory.php:160 mod/notifications.php:252 src/Model/Profile.php:437
+#: src/Model/Profile.php:807 src/Module/Contact.php:652
+msgid "About:"
 msgstr ""
 
-#: mod/tagrm.php:77
-msgid "Remove Item Tag"
+#: mod/directory.php:208 view/theme/vier/theme.php:206
+#: src/Content/Widget.php:68
+msgid "Global Directory"
 msgstr ""
 
-#: mod/tagrm.php:79
-msgid "Select a tag to remove: "
+#: mod/directory.php:210
+msgid "Find on this site"
 msgstr ""
 
-#: mod/home.php:39
-#, php-format
-msgid "Welcome to %s"
+#: mod/directory.php:212
+msgid "Results for:"
 msgstr ""
 
-#: mod/suggest.php:38
-msgid "Do you really want to delete this suggestion?"
+#: mod/directory.php:214
+msgid "Site Directory"
 msgstr ""
 
-#: mod/suggest.php:74
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
+#: mod/directory.php:215 view/theme/vier/theme.php:201
+#: src/Content/Widget.php:63 src/Module/Contact.php:812
+msgid "Find"
 msgstr ""
 
-#: mod/suggest.php:87 mod/suggest.php:107
-msgid "Ignore/Hide"
+#: mod/directory.php:219
+msgid "No entries (some entries may be hidden)."
 msgstr ""
 
-#: mod/filer.php:34
-msgid "- select -"
+#: mod/dirfind.php:53
+#, php-format
+msgid "People Search - %s"
 msgstr ""
 
-#: mod/friendica.php:78
+#: mod/dirfind.php:64
 #, php-format
-msgid ""
-"This is Friendica, version %s that is running at the web location %s. The "
-"database version is %s, the post update version is %s."
+msgid "Forum Search - %s"
 msgstr ""
 
-#: mod/friendica.php:84
-msgid ""
-"Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
-"about the Friendica project."
+#: mod/dirfind.php:259 mod/match.php:123
+msgid "No matches"
 msgstr ""
 
-#: mod/friendica.php:88
-msgid "Bug reports and issues: please visit"
+#: mod/editpost.php:26 mod/editpost.php:36
+msgid "Item not found"
 msgstr ""
 
-#: mod/friendica.php:88
-msgid "the bugtracker at github"
+#: mod/editpost.php:43
+msgid "Edit post"
 msgstr ""
 
-#: mod/friendica.php:91
-msgid ""
-"Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
+#: mod/editpost.php:96 mod/message.php:261 mod/message.php:423
+#: mod/wallmessage.php:138
+msgid "Insert web link"
 msgstr ""
 
-#: mod/friendica.php:105
-msgid "Installed addons/apps:"
+#: mod/editpost.php:97
+msgid "web link"
 msgstr ""
 
-#: mod/friendica.php:119
-msgid "No installed addons/apps"
+#: mod/editpost.php:98
+msgid "Insert video link"
 msgstr ""
 
-#: mod/friendica.php:124
-#, php-format
-msgid "Read about the <a href=\"%1$s/tos\">Terms of Service</a> of this node."
+#: mod/editpost.php:99
+msgid "video link"
 msgstr ""
 
-#: mod/friendica.php:129
-msgid "On this server the following remote servers are blocked."
+#: mod/editpost.php:100
+msgid "Insert audio link"
 msgstr ""
 
-#: mod/friendica.php:130 mod/admin.php:363 mod/admin.php:381
-#: mod/dfrn_request.php:345 src/Model/Contact.php:1593
-msgid "Blocked domain"
+#: mod/editpost.php:101
+msgid "audio link"
 msgstr ""
 
-#: mod/friendica.php:130 mod/admin.php:364 mod/admin.php:382
-msgid "Reason for the block"
+#: mod/editpost.php:116 src/Core/ACL.php:304
+msgid "CC: email addresses"
 msgstr ""
 
-#: mod/display.php:312 mod/cal.php:144 mod/profile.php:185
-msgid "Access to this profile has been restricted."
+#: mod/editpost.php:123 src/Core/ACL.php:305
+msgid "Example: bob@example.com, mary@example.com"
 msgstr ""
 
-#: mod/wall_upload.php:39 mod/wall_upload.php:55 mod/wall_upload.php:113
-#: mod/wall_upload.php:164 mod/wall_upload.php:167 mod/wall_attach.php:27
-#: mod/wall_attach.php:34 mod/wall_attach.php:89
-msgid "Invalid request."
+#: mod/events.php:107 mod/events.php:109
+msgid "Event can not end before it has started."
 msgstr ""
 
-#: mod/wall_upload.php:195 mod/profile_photo.php:151 mod/photos.php:778
-#: mod/photos.php:781 mod/photos.php:810
-#, php-format
-msgid "Image exceeds size limit of %s"
+#: mod/events.php:116 mod/events.php:118
+msgid "Event title and start time are required."
 msgstr ""
 
-#: mod/wall_upload.php:209 mod/profile_photo.php:160 mod/photos.php:833
-msgid "Unable to process image."
+#: mod/events.php:390
+msgid "Create New Event"
 msgstr ""
 
-#: mod/wall_upload.php:240 mod/item.php:473 src/Object/Image.php:966
-#: src/Object/Image.php:982 src/Object/Image.php:990 src/Object/Image.php:1015
-msgid "Wall Photos"
+#: mod/events.php:513
+msgid "Event details"
 msgstr ""
 
-#: mod/wall_upload.php:248 mod/profile_photo.php:305 mod/photos.php:862
-msgid "Image upload failed."
+#: mod/events.php:514
+msgid "Starting date and Title are required."
 msgstr ""
 
-#: mod/newmember.php:11
-msgid "Welcome to Friendica"
+#: mod/events.php:515 mod/events.php:520
+msgid "Event Starts:"
 msgstr ""
 
-#: mod/newmember.php:12
-msgid "New Member Checklist"
+#: mod/events.php:515 mod/events.php:547 mod/profiles.php:606
+msgid "Required"
 msgstr ""
 
-#: mod/newmember.php:14
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page. A link to this page "
-"will be visible from your home page for two weeks after your initial "
-"registration and then will quietly disappear."
+#: mod/events.php:528 mod/events.php:553
+msgid "Finish date/time is not known or not relevant"
 msgstr ""
 
-#: mod/newmember.php:15
-msgid "Getting Started"
+#: mod/events.php:530 mod/events.php:535
+msgid "Event Finishes:"
 msgstr ""
 
-#: mod/newmember.php:17
-msgid "Friendica Walk-Through"
+#: mod/events.php:541 mod/events.php:554
+msgid "Adjust for viewer timezone"
 msgstr ""
 
-#: mod/newmember.php:17
-msgid ""
-"On your <em>Quick Start</em> page - find a brief introduction to your "
-"profile and network tabs, make some new connections, and find some groups to "
-"join."
+#: mod/events.php:543
+msgid "Description:"
 msgstr ""
 
-#: mod/newmember.php:21
-msgid "Go to Your Settings"
+#: mod/events.php:547 mod/events.php:549
+msgid "Title:"
 msgstr ""
 
-#: mod/newmember.php:21
-msgid ""
-"On your <em>Settings</em> page -  change your initial password. Also make a "
-"note of your Identity Address. This looks just like an email address - and "
-"will be useful in making friends on the free social web."
+#: mod/events.php:550 mod/events.php:551
+msgid "Share this event"
 msgstr ""
 
-#: mod/newmember.php:22
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished "
-"directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
+#: mod/events.php:558 src/Model/Profile.php:865
+msgid "Basic"
 msgstr ""
 
-#: mod/newmember.php:26 mod/profile_photo.php:246 mod/profiles.php:598
-msgid "Upload Profile Photo"
+#: mod/events.php:560 mod/photos.php:1107 mod/photos.php:1448
+#: src/Core/ACL.php:307
+msgid "Permissions"
 msgstr ""
 
-#: mod/newmember.php:26
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make "
-"friends than people who do not."
+#: mod/events.php:576
+msgid "Failed to remove event"
 msgstr ""
 
-#: mod/newmember.php:27
-msgid "Edit Your Profile"
+#: mod/events.php:578
+msgid "Event removed"
 msgstr ""
 
-#: mod/newmember.php:27
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown "
-"visitors."
+#: mod/feedtest.php:21
+msgid "You must be logged in to use this module"
 msgstr ""
 
-#: mod/newmember.php:28
-msgid "Profile Keywords"
+#: mod/feedtest.php:48
+msgid "Source URL"
 msgstr ""
 
-#: mod/newmember.php:28
-msgid ""
-"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."
+#: mod/fetch.php:20 mod/fetch.php:47 mod/fetch.php:54 mod/help.php:62
+#: src/App.php:1794
+msgid "Not Found"
 msgstr ""
 
-#: mod/newmember.php:30
-msgid "Connecting"
+#: mod/filer.php:34
+msgid "- select -"
 msgstr ""
 
-#: mod/newmember.php:36
-msgid "Importing Emails"
+#: mod/follow.php:45
+msgid "The contact could not be added."
 msgstr ""
 
-#: mod/newmember.php:36
-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"
+#: mod/follow.php:75
+msgid "You already added this contact."
 msgstr ""
 
-#: mod/newmember.php:39
-msgid "Go to Your Contacts Page"
+#: mod/follow.php:85
+msgid "Diaspora support isn't enabled. Contact can't be added."
 msgstr ""
 
-#: mod/newmember.php:39
-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."
+#: mod/follow.php:92
+msgid "OStatus support is disabled. Contact can't be added."
 msgstr ""
 
-#: mod/newmember.php:40
-msgid "Go to Your Site's Directory"
+#: mod/follow.php:99
+msgid "The network type couldn't be detected. Contact can't be added."
 msgstr ""
 
-#: mod/newmember.php:40
-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."
+#: mod/follow.php:179 mod/notifications.php:254 src/Model/Profile.php:795
+#: src/Module/Contact.php:654
+msgid "Tags:"
 msgstr ""
 
-#: mod/newmember.php:41
-msgid "Finding New People"
+#: mod/follow.php:191 mod/unfollow.php:147 src/Model/Profile.php:892
+#: src/Module/Contact.php:859
+msgid "Status Messages and Posts"
 msgstr ""
 
-#: mod/newmember.php:41
+#: mod/friendica.php:70
+#, php-format
 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 "
-"interest, and provide suggestions based on network relationships. On a brand "
-"new site, friend suggestions will usually begin to be populated within 24 "
-"hours."
+"This is Friendica, version %s that is running at the web location %s. The "
+"database version is %s, the post update version is %s."
 msgstr ""
 
-#: mod/newmember.php:43 src/Model/Group.php:402
-msgid "Groups"
+#: mod/friendica.php:76
+msgid ""
+"Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
+"about the Friendica project."
 msgstr ""
 
-#: mod/newmember.php:45
-msgid "Group Your Contacts"
+#: mod/friendica.php:80
+msgid "Bug reports and issues: please visit"
 msgstr ""
 
-#: mod/newmember.php:45
-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."
+#: mod/friendica.php:80
+msgid "the bugtracker at github"
 msgstr ""
 
-#: mod/newmember.php:48
-msgid "Why Aren't My Posts Public?"
+#: mod/friendica.php:83
+msgid ""
+"Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
 msgstr ""
 
-#: mod/newmember.php:48
-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."
+#: mod/friendica.php:88
+msgid "Installed addons/apps:"
 msgstr ""
 
-#: mod/newmember.php:52
-msgid "Getting Help"
+#: mod/friendica.php:102
+msgid "No installed addons/apps"
 msgstr ""
 
-#: mod/newmember.php:54
-msgid "Go to the Help Section"
+#: mod/friendica.php:107
+#, php-format
+msgid "Read about the <a href=\"%1$s/tos\">Terms of Service</a> of this node."
 msgstr ""
 
-#: mod/newmember.php:54
-msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program "
-"features and resources."
+#: mod/friendica.php:112
+msgid "On this server the following remote servers are blocked."
 msgstr ""
 
-#: mod/lostpass.php:28
-msgid "No valid account found."
+#: mod/fsuggest.php:72
+msgid "Friend suggestion sent."
 msgstr ""
 
-#: mod/lostpass.php:40
-msgid "Password reset request issued. Check your email."
+#: mod/fsuggest.php:101
+msgid "Suggest Friends"
 msgstr ""
 
-#: mod/lostpass.php:46
+#: mod/fsuggest.php:103
 #, php-format
-msgid ""
-"\n"
-"\t\tDear %1$s,\n"
-"\t\t\tA request was recently received at \"%2$s\" to reset your account\n"
-"\t\tpassword. In order to confirm this request, please select the "
-"verification link\n"
-"\t\tbelow or paste it into your web browser address bar.\n"
-"\n"
-"\t\tIf you did NOT request this change, please DO NOT follow the link\n"
-"\t\tprovided and ignore and/or delete this email, the request will expire "
-"shortly.\n"
-"\n"
-"\t\tYour password will not be changed unless we can verify that you\n"
-"\t\tissued this request."
+msgid "Suggest a friend for %s"
 msgstr ""
 
-#: mod/lostpass.php:57
-#, php-format
-msgid ""
-"\n"
-"\t\tFollow this link soon to verify your identity:\n"
-"\n"
-"\t\t%1$s\n"
-"\n"
-"\t\tYou will then receive a follow-up message containing the new password.\n"
-"\t\tYou may change that password from your account settings page after "
-"logging in.\n"
-"\n"
-"\t\tThe login details are as follows:\n"
-"\n"
-"\t\tSite Location:\t%2$s\n"
-"\t\tLogin Name:\t%3$s"
+#: mod/group.php:38
+msgid "Group created."
 msgstr ""
 
-#: mod/lostpass.php:76
-#, php-format
-msgid "Password reset requested at %s"
+#: mod/group.php:44
+msgid "Could not create group."
 msgstr ""
 
-#: mod/lostpass.php:92
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
+#: mod/group.php:58 mod/group.php:185
+msgid "Group not found."
 msgstr ""
 
-#: mod/lostpass.php:105
-msgid "Request has expired, please make a new one."
+#: mod/group.php:72
+msgid "Group name changed."
 msgstr ""
 
-#: mod/lostpass.php:120
-msgid "Forgot your Password?"
+#: mod/group.php:85 mod/profperm.php:29 src/App.php:1875
+msgid "Permission denied"
 msgstr ""
 
-#: mod/lostpass.php:121
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
+#: mod/group.php:103
+msgid "Save Group"
 msgstr ""
 
-#: mod/lostpass.php:122 src/Module/Login.php:312
-msgid "Nickname or Email: "
+#: mod/group.php:104
+msgid "Filter"
 msgstr ""
 
-#: mod/lostpass.php:123
-msgid "Reset"
+#: mod/group.php:109
+msgid "Create a group of contacts/friends."
 msgstr ""
 
-#: mod/lostpass.php:139 src/Module/Login.php:324
-msgid "Password Reset"
+#: mod/group.php:110 mod/group.php:134 mod/group.php:227
+#: src/Model/Group.php:413
+msgid "Group Name: "
 msgstr ""
 
-#: mod/lostpass.php:140
-msgid "Your password has been reset as requested."
+#: mod/group.php:125 src/Model/Group.php:410
+msgid "Contacts not in any group"
 msgstr ""
 
-#: mod/lostpass.php:141
-msgid "Your new password is"
+#: mod/group.php:157
+msgid "Group removed."
 msgstr ""
 
-#: mod/lostpass.php:142
-msgid "Save or copy your new password - and then"
+#: mod/group.php:159
+msgid "Unable to remove group."
 msgstr ""
 
-#: mod/lostpass.php:143
-msgid "click here to login"
+#: mod/group.php:220
+msgid "Delete Group"
 msgstr ""
 
-#: mod/lostpass.php:144
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
+#: mod/group.php:231
+msgid "Edit Group Name"
 msgstr ""
 
-#: mod/lostpass.php:152
-#, php-format
-msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tYour password has been changed as requested. Please retain this\n"
-"\t\t\tinformation for your records (or change your password immediately to\n"
-"\t\t\tsomething that you will remember).\n"
-"\t\t"
+#: mod/group.php:242
+msgid "Members"
 msgstr ""
 
-#: mod/lostpass.php:158
-#, php-format
-msgid ""
-"\n"
-"\t\t\tYour login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%1$s\n"
-"\t\t\tLogin Name:\t%2$s\n"
-"\t\t\tPassword:\t%3$s\n"
-"\n"
-"\t\t\tYou may change that password from your account settings page after "
-"logging in.\n"
-"\t\t"
+#: mod/group.php:244 src/Module/Contact.php:709
+msgid "All Contacts"
 msgstr ""
 
-#: mod/lostpass.php:174
-#, php-format
-msgid "Your password has been changed at %s"
+#: mod/group.php:245 mod/network.php:653
+msgid "Group is empty"
 msgstr ""
 
-#: mod/babel.php:24
-msgid "Source input"
+#: mod/group.php:258
+msgid "Remove contact from group"
 msgstr ""
 
-#: mod/babel.php:30
-msgid "BBCode::toPlaintext"
+#: mod/group.php:276 mod/profperm.php:118
+msgid "Click on a contact to add or remove."
 msgstr ""
 
-#: mod/babel.php:36
-msgid "BBCode::convert (raw HTML)"
+#: mod/group.php:290
+msgid "Add contact to group"
 msgstr ""
 
-#: mod/babel.php:41
-msgid "BBCode::convert"
+#: mod/hcard.php:19
+msgid "No profile"
 msgstr ""
 
-#: mod/babel.php:47
-msgid "BBCode::convert => HTML::toBBCode"
+#: mod/help.php:49
+msgid "Help:"
 msgstr ""
 
-#: mod/babel.php:53
-msgid "BBCode::toMarkdown"
+#: mod/help.php:56 view/theme/vier/theme.php:295 src/Content/Nav.php:186
+msgid "Help"
 msgstr ""
 
-#: mod/babel.php:59
-msgid "BBCode::toMarkdown => Markdown::convert"
+#: mod/home.php:39
+#, php-format
+msgid "Welcome to %s"
 msgstr ""
 
-#: mod/babel.php:65
-msgid "BBCode::toMarkdown => Markdown::toBBCode"
+#: mod/invite.php:36
+msgid "Total invitation limit exceeded."
 msgstr ""
 
-#: mod/babel.php:71
-msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
+#: mod/invite.php:58
+#, php-format
+msgid "%s : Not a valid email address."
 msgstr ""
 
-#: mod/babel.php:78
-msgid "Source input (Diaspora format)"
+#: mod/invite.php:85
+msgid "Please join us on Friendica"
 msgstr ""
 
-#: mod/babel.php:84
-msgid "Markdown::convert (raw HTML)"
+#: mod/invite.php:94
+msgid "Invitation limit exceeded. Please contact your site administrator."
 msgstr ""
 
-#: mod/babel.php:89
-msgid "Markdown::convert"
+#: mod/invite.php:98
+#, php-format
+msgid "%s : Message delivery failed."
 msgstr ""
 
-#: mod/babel.php:95
-msgid "Markdown::toBBCode"
+#: mod/invite.php:102
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] ""
+msgstr[1] ""
+
+#: mod/invite.php:120
+msgid "You have no more invitations available"
 msgstr ""
 
-#: mod/babel.php:102
-msgid "Raw HTML input"
+#: mod/invite.php:128
+#, php-format
+msgid ""
+"Visit %s for a list of public sites that you can join. Friendica members on "
+"other sites can all connect with each other, as well as with members of many "
+"other social networks."
 msgstr ""
 
-#: mod/babel.php:107
-msgid "HTML Input"
+#: mod/invite.php:130
+#, php-format
+msgid ""
+"To accept this invitation, please visit and register at %s or any other "
+"public Friendica website."
 msgstr ""
 
-#: mod/babel.php:113
-msgid "HTML::toBBCode"
+#: mod/invite.php:131
+#, php-format
+msgid ""
+"Friendica sites all inter-connect to create a huge privacy-enhanced social "
+"web that is owned and controlled by its members. They can also connect with "
+"many traditional social networks. See %s for a list of alternate Friendica "
+"sites you can join."
 msgstr ""
 
-#: mod/babel.php:119
-msgid "HTML::toMarkdown"
+#: mod/invite.php:135
+msgid ""
+"Our apologies. This system is not currently configured to connect with other "
+"public sites or invite members."
 msgstr ""
 
-#: mod/babel.php:125
-msgid "HTML::toPlaintext"
+#: mod/invite.php:139
+msgid ""
+"Friendica sites all inter-connect to create a huge privacy-enhanced social "
+"web that is owned and controlled by its members. They can also connect with "
+"many traditional social networks."
 msgstr ""
 
-#: mod/babel.php:133
-msgid "Source text"
+#: mod/invite.php:138
+#, php-format
+msgid "To accept this invitation, please visit and register at %s."
 msgstr ""
 
-#: mod/babel.php:134
-msgid "BBCode"
+#: mod/invite.php:145
+msgid "Send invitations"
 msgstr ""
 
-#: mod/babel.php:135
-msgid "Markdown"
+#: mod/invite.php:146
+msgid "Enter email addresses, one per line:"
 msgstr ""
 
-#: mod/babel.php:136
-msgid "HTML"
+#: mod/invite.php:147 mod/message.php:257 mod/message.php:418
+#: mod/wallmessage.php:135
+msgid "Your message:"
 msgstr ""
 
-#: mod/admin.php:109
-msgid "Theme settings updated."
+#: mod/invite.php:147
+msgid ""
+"You are cordially invited to join me and other close friends on Friendica - "
+"and help us to create a better social web."
 msgstr ""
 
-#: mod/admin.php:182 src/Content/Nav.php:175
-msgid "Information"
+#: mod/invite.php:149
+msgid "You will need to supply this invitation code: $invite_code"
 msgstr ""
 
-#: mod/admin.php:183
-msgid "Overview"
+#: mod/invite.php:149
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
 msgstr ""
 
-#: mod/admin.php:184 mod/admin.php:723
-msgid "Federation Statistics"
+#: mod/invite.php:151
+msgid ""
+"For more information about the Friendica project and why we feel it is "
+"important, please visit http://friendi.ca"
 msgstr ""
 
-#: mod/admin.php:185
-msgid "Configuration"
+#: mod/item.php:118
+msgid "Unable to locate original post."
 msgstr ""
 
-#: mod/admin.php:186 mod/admin.php:1425
-msgid "Site"
+#: mod/item.php:286
+msgid "Empty post discarded."
 msgstr ""
 
-#: mod/admin.php:187 mod/admin.php:1354 mod/admin.php:1896 mod/admin.php:1913
-msgid "Users"
+#: mod/item.php:465 mod/wall_upload.php:241 src/Object/Image.php:968
+#: src/Object/Image.php:984 src/Object/Image.php:992 src/Object/Image.php:1017
+msgid "Wall Photos"
 msgstr ""
 
-#: mod/admin.php:189 mod/admin.php:2283 mod/admin.php:2327
-msgid "Themes"
+#: mod/item.php:805
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendica social network."
 msgstr ""
 
-#: mod/admin.php:192
-msgid "Database"
+#: mod/item.php:807
+#, php-format
+msgid "You may visit them online at %s"
 msgstr ""
 
-#: mod/admin.php:193
-msgid "DB updates"
+#: mod/item.php:808
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
 msgstr ""
 
-#: mod/admin.php:194 mod/admin.php:766
-msgid "Inspect Queue"
+#: mod/item.php:812
+#, php-format
+msgid "%s posted an update."
 msgstr ""
 
-#: mod/admin.php:195
-msgid "Inspect worker Queue"
+#: mod/lockview.php:46 mod/lockview.php:57
+msgid "Remote privacy information not available."
 msgstr ""
 
-#: mod/admin.php:196
-msgid "Tools"
+#: mod/lockview.php:66
+msgid "Visible to:"
 msgstr ""
 
-#: mod/admin.php:197
-msgid "Contact Blocklist"
+#: mod/lostpass.php:28
+msgid "No valid account found."
 msgstr ""
 
-#: mod/admin.php:198 mod/admin.php:372
-msgid "Server Blocklist"
+#: mod/lostpass.php:40
+msgid "Password reset request issued. Check your email."
 msgstr ""
 
-#: mod/admin.php:199 mod/admin.php:531
-msgid "Delete Item"
+#: mod/lostpass.php:46
+#, php-format
+msgid ""
+"\n"
+"\t\tDear %1$s,\n"
+"\t\t\tA request was recently received at \"%2$s\" to reset your account\n"
+"\t\tpassword. In order to confirm this request, please select the "
+"verification link\n"
+"\t\tbelow or paste it into your web browser address bar.\n"
+"\n"
+"\t\tIf you did NOT request this change, please DO NOT follow the link\n"
+"\t\tprovided and ignore and/or delete this email, the request will expire "
+"shortly.\n"
+"\n"
+"\t\tYour password will not be changed unless we can verify that you\n"
+"\t\tissued this request."
 msgstr ""
 
-#: mod/admin.php:200 mod/admin.php:201 mod/admin.php:2402
-msgid "Logs"
+#: mod/lostpass.php:57
+#, php-format
+msgid ""
+"\n"
+"\t\tFollow this link soon to verify your identity:\n"
+"\n"
+"\t\t%1$s\n"
+"\n"
+"\t\tYou will then receive a follow-up message containing the new password.\n"
+"\t\tYou may change that password from your account settings page after "
+"logging in.\n"
+"\n"
+"\t\tThe login details are as follows:\n"
+"\n"
+"\t\tSite Location:\t%2$s\n"
+"\t\tLogin Name:\t%3$s"
 msgstr ""
 
-#: mod/admin.php:202 mod/admin.php:2469
-msgid "View Logs"
+#: mod/lostpass.php:76
+#, php-format
+msgid "Password reset requested at %s"
 msgstr ""
 
-#: mod/admin.php:204
-msgid "Diagnostics"
+#: mod/lostpass.php:92
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
 msgstr ""
 
-#: mod/admin.php:205
-msgid "PHP Info"
+#: mod/lostpass.php:105
+msgid "Request has expired, please make a new one."
 msgstr ""
 
-#: mod/admin.php:206
-msgid "probe address"
+#: mod/lostpass.php:120
+msgid "Forgot your Password?"
 msgstr ""
 
-#: mod/admin.php:207
-msgid "check webfinger"
+#: mod/lostpass.php:121
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
 msgstr ""
 
-#: mod/admin.php:226 src/Content/Nav.php:218
-msgid "Admin"
+#: mod/lostpass.php:122 src/Module/Login.php:322
+msgid "Nickname or Email: "
 msgstr ""
 
-#: mod/admin.php:227
-msgid "Addon Features"
+#: mod/lostpass.php:123
+msgid "Reset"
 msgstr ""
 
-#: mod/admin.php:228
-msgid "User registrations waiting for confirmation"
+#: mod/lostpass.php:139 src/Module/Login.php:334
+msgid "Password Reset"
 msgstr ""
 
-#: mod/admin.php:309 mod/admin.php:371 mod/admin.php:488 mod/admin.php:530
-#: mod/admin.php:722 mod/admin.php:765 mod/admin.php:806 mod/admin.php:914
-#: mod/admin.php:1424 mod/admin.php:1895 mod/admin.php:2012 mod/admin.php:2072
-#: mod/admin.php:2282 mod/admin.php:2326 mod/admin.php:2401 mod/admin.php:2468
-msgid "Administration"
+#: mod/lostpass.php:140
+msgid "Your password has been reset as requested."
 msgstr ""
 
-#: mod/admin.php:311
-msgid "Display Terms of Service"
+#: mod/lostpass.php:141
+msgid "Your new password is"
+msgstr ""
+
+#: mod/lostpass.php:142
+msgid "Save or copy your new password - and then"
+msgstr ""
+
+#: mod/lostpass.php:143
+msgid "click here to login"
 msgstr ""
 
-#: mod/admin.php:311
+#: mod/lostpass.php:144
 msgid ""
-"Enable the Terms of Service page. If this is enabled a link to the terms "
-"will be added to the registration form and the general information page."
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
 msgstr ""
 
-#: mod/admin.php:312
-msgid "Display Privacy Statement"
+#: mod/lostpass.php:152
+#, php-format
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tYour password has been changed as requested. Please retain this\n"
+"\t\t\tinformation for your records (or change your password immediately to\n"
+"\t\t\tsomething that you will remember).\n"
+"\t\t"
 msgstr ""
 
-#: mod/admin.php:312
+#: mod/lostpass.php:158
 #, php-format
 msgid ""
-"Show some informations regarding the needed information to operate the node "
-"according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."
+"\n"
+"\t\t\tYour login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%1$s\n"
+"\t\t\tLogin Name:\t%2$s\n"
+"\t\t\tPassword:\t%3$s\n"
+"\n"
+"\t\t\tYou may change that password from your account settings page after "
+"logging in.\n"
+"\t\t"
 msgstr ""
 
-#: mod/admin.php:313
-msgid "Privacy Statement Preview"
+#: mod/lostpass.php:174
+#, php-format
+msgid "Your password has been changed at %s"
 msgstr ""
 
-#: mod/admin.php:315
-msgid "The Terms of Service"
+#: mod/manage.php:180
+msgid "Manage Identities and/or Pages"
 msgstr ""
 
-#: mod/admin.php:315
+#: mod/manage.php:181
 msgid ""
-"Enter the Terms of Service for your node here. You can use BBCode. Headers "
-"of sections should be [h2] and below."
+"Toggle between different identities or community/group pages which share "
+"your account details or which you have been granted \"manage\" permissions"
 msgstr ""
 
-#: mod/admin.php:363
-msgid "The blocked domain"
+#: mod/manage.php:182
+msgid "Select an identity to manage: "
 msgstr ""
 
-#: mod/admin.php:364 mod/admin.php:377
-msgid "The reason why you blocked this domain."
+#: mod/match.php:49
+msgid "No keywords to match. Please add keywords to your default profile."
 msgstr ""
 
-#: mod/admin.php:365
-msgid "Delete domain"
+#: mod/match.php:104
+msgid "is interested in:"
 msgstr ""
 
-#: mod/admin.php:365
-msgid "Check to delete this entry from the blocklist"
+#: mod/match.php:118
+msgid "Profile Match"
 msgstr ""
 
-#: mod/admin.php:373
-msgid ""
-"This page can be used to define a black list of servers from the federated "
-"network that are not allowed to interact with your node. For all entered "
-"domains you should also give a reason why you have blocked the remote server."
+#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:251
+msgid "New Message"
 msgstr ""
 
-#: mod/admin.php:374
-msgid ""
-"The list of blocked servers will be made publically available on the /"
-"friendica page so that your users and people investigating communication "
-"problems can find the reason easily."
+#: mod/message.php:70 mod/wallmessage.php:58
+msgid "No recipient selected."
 msgstr ""
 
-#: mod/admin.php:375
-msgid "Add new entry to block list"
+#: mod/message.php:74
+msgid "Unable to locate contact information."
 msgstr ""
 
-#: mod/admin.php:376
-msgid "Server Domain"
+#: mod/message.php:77 mod/wallmessage.php:64
+msgid "Message could not be sent."
 msgstr ""
 
-#: mod/admin.php:376
-msgid ""
-"The domain of the new server to add to the block list. Do not include the "
-"protocol."
+#: mod/message.php:80 mod/wallmessage.php:67
+msgid "Message collection failure."
 msgstr ""
 
-#: mod/admin.php:377
-msgid "Block reason"
+#: mod/message.php:83 mod/wallmessage.php:70
+msgid "Message sent."
 msgstr ""
 
-#: mod/admin.php:378
-msgid "Add Entry"
+#: mod/message.php:110 mod/notifications.php:46 mod/notifications.php:184
+#: mod/notifications.php:232
+msgid "Discard"
 msgstr ""
 
-#: mod/admin.php:379
-msgid "Save changes to the blocklist"
+#: mod/message.php:123 view/theme/frio/theme.php:280 src/Content/Nav.php:248
+msgid "Messages"
 msgstr ""
 
-#: mod/admin.php:380
-msgid "Current Entries in the Blocklist"
+#: mod/message.php:148
+msgid "Do you really want to delete this message?"
 msgstr ""
 
-#: mod/admin.php:383
-msgid "Delete entry from blocklist"
+#: mod/message.php:166
+msgid "Conversation not found."
 msgstr ""
 
-#: mod/admin.php:386
-msgid "Delete entry from blocklist?"
+#: mod/message.php:171
+msgid "Message deleted."
 msgstr ""
 
-#: mod/admin.php:412
-msgid "Server added to blocklist."
+#: mod/message.php:176 mod/message.php:191
+msgid "Conversation removed."
 msgstr ""
 
-#: mod/admin.php:428
-msgid "Site blocklist updated."
+#: mod/message.php:205 mod/message.php:345 mod/wallmessage.php:121
+msgid "Please enter a link URL:"
 msgstr ""
 
-#: mod/admin.php:451 src/Core/Console/GlobalCommunityBlock.php:68
-msgid "The contact has been blocked from the node"
+#: mod/message.php:248 mod/wallmessage.php:126
+msgid "Send Private Message"
 msgstr ""
 
-#: mod/admin.php:453 src/Core/Console/GlobalCommunityBlock.php:65
-#, php-format
-msgid "Could not find any contact entry for this URL (%s)"
+#: mod/message.php:249 mod/message.php:413 mod/wallmessage.php:128
+msgid "To:"
 msgstr ""
 
-#: mod/admin.php:460
-#, php-format
-msgid "%s contact unblocked"
-msgid_plural "%s contacts unblocked"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/message.php:253 mod/message.php:415 mod/wallmessage.php:129
+msgid "Subject:"
+msgstr ""
 
-#: mod/admin.php:489
-msgid "Remote Contact Blocklist"
+#: mod/message.php:291
+msgid "No messages."
 msgstr ""
 
-#: mod/admin.php:490
-msgid ""
-"This page allows you to prevent any message from a remote contact to reach "
-"your node."
+#: mod/message.php:332
+msgid "Message not available."
 msgstr ""
 
-#: mod/admin.php:491
-msgid "Block Remote Contact"
+#: mod/message.php:389
+msgid "Delete message"
 msgstr ""
 
-#: mod/admin.php:492 mod/admin.php:1898
-msgid "select all"
+#: mod/message.php:391 mod/message.php:492
+msgid "D, d M Y - g:i A"
 msgstr ""
 
-#: mod/admin.php:493
-msgid "select none"
+#: mod/message.php:406 mod/message.php:489
+msgid "Delete conversation"
 msgstr ""
 
-#: mod/admin.php:494 mod/admin.php:1907 mod/contact.php:658
-#: mod/contact.php:852 mod/contact.php:1108
-msgid "Block"
+#: mod/message.php:408
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
 msgstr ""
 
-#: mod/admin.php:495 mod/admin.php:1909 mod/contact.php:658
-#: mod/contact.php:852 mod/contact.php:1108
-msgid "Unblock"
+#: mod/message.php:412
+msgid "Send Reply"
 msgstr ""
 
-#: mod/admin.php:496
-msgid "No remote contact is blocked from this node."
+#: mod/message.php:463
+#, php-format
+msgid "Unknown sender - %s"
 msgstr ""
 
-#: mod/admin.php:498
-msgid "Blocked Remote Contacts"
+#: mod/message.php:465
+#, php-format
+msgid "You and %s"
 msgstr ""
 
-#: mod/admin.php:499
-msgid "Block New Remote Contact"
+#: mod/message.php:467
+#, php-format
+msgid "%s and You"
+msgstr ""
+
+#: mod/message.php:495
+#, php-format
+msgid "%d message"
+msgid_plural "%d messages"
+msgstr[0] ""
+msgstr[1] ""
+
+#: mod/network.php:198 mod/search.php:40
+msgid "Remove term"
+msgstr ""
+
+#: mod/network.php:205 mod/search.php:49 src/Content/Feature.php:100
+msgid "Saved Searches"
+msgstr ""
+
+#: mod/network.php:206 src/Model/Group.php:404
+msgid "add"
 msgstr ""
 
-#: mod/admin.php:500
-msgid "Photo"
+#: mod/network.php:561
+#, php-format
+msgid ""
+"Warning: This group contains %s member from a network that doesn't allow non "
+"public messages."
+msgid_plural ""
+"Warning: This group contains %s members from a network that doesn't allow "
+"non public messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#: mod/network.php:564
+msgid "Messages in this group won't be send to these receivers."
 msgstr ""
 
-#: mod/admin.php:500 mod/profiles.php:391
-msgid "Address"
+#: mod/network.php:632
+msgid "No such group"
 msgstr ""
 
-#: mod/admin.php:508
+#: mod/network.php:657
 #, php-format
-msgid "%s total blocked contact"
-msgid_plural "%s total blocked contacts"
-msgstr[0] ""
-msgstr[1] ""
-
-#: mod/admin.php:510
-msgid "URL of the remote contact to block."
+msgid "Group: %s"
 msgstr ""
 
-#: mod/admin.php:532
-msgid "Delete this Item"
+#: mod/network.php:683
+msgid "Private messages to this person are at risk of public disclosure."
 msgstr ""
 
-#: mod/admin.php:533
-msgid ""
-"On this page you can delete an item from your node. If the item is a top "
-"level posting, the entire thread will be deleted."
+#: mod/network.php:686
+msgid "Invalid contact."
 msgstr ""
 
-#: mod/admin.php:534
-msgid ""
-"You need to know the GUID of the item. You can find it e.g. by looking at "
-"the display URL. The last part of http://example.com/display/123456 is the "
-"GUID, here 123456."
+#: mod/network.php:964
+msgid "Commented Order"
 msgstr ""
 
-#: mod/admin.php:535
-msgid "GUID"
+#: mod/network.php:967
+msgid "Sort by Comment Date"
 msgstr ""
 
-#: mod/admin.php:535
-msgid "The GUID of the item you want to delete."
+#: mod/network.php:972
+msgid "Posted Order"
 msgstr ""
 
-#: mod/admin.php:569
-msgid "Item marked for deletion."
+#: mod/network.php:975
+msgid "Sort by Post Date"
 msgstr ""
 
-#: mod/admin.php:640
-msgid "unknown"
+#: mod/network.php:983 mod/profiles.php:593
+#: src/Core/NotificationsManager.php:187
+msgid "Personal"
 msgstr ""
 
-#: mod/admin.php:716
-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."
+#: mod/network.php:986
+msgid "Posts that mention or involve you"
 msgstr ""
 
-#: mod/admin.php:717
-msgid ""
-"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
-"will improve the data displayed here."
+#: mod/network.php:994
+msgid "New"
 msgstr ""
 
-#: mod/admin.php:729
-#, php-format
-msgid ""
-"Currently this node is aware of %d nodes with %d registered users from the "
-"following platforms:"
+#: mod/network.php:997
+msgid "Activity Stream - by date"
 msgstr ""
 
-#: mod/admin.php:768 mod/admin.php:809
-msgid "ID"
+#: mod/network.php:1005
+msgid "Shared Links"
 msgstr ""
 
-#: mod/admin.php:769
-msgid "Recipient Name"
+#: mod/network.php:1008
+msgid "Interesting Links"
 msgstr ""
 
-#: mod/admin.php:770
-msgid "Recipient Profile"
+#: mod/network.php:1016
+msgid "Starred"
 msgstr ""
 
-#: mod/admin.php:772 mod/admin.php:811
-msgid "Created"
+#: mod/network.php:1019
+msgid "Favourite Posts"
 msgstr ""
 
-#: mod/admin.php:773
-msgid "Last Tried"
+#: mod/newmember.php:11
+msgid "Welcome to Friendica"
 msgstr ""
 
-#: mod/admin.php:774
-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."
+#: mod/newmember.php:12
+msgid "New Member Checklist"
 msgstr ""
 
-#: mod/admin.php:807
-msgid "Inspect Worker Queue"
+#: mod/newmember.php:14
+msgid ""
+"We would like to offer some tips and links to help make your experience "
+"enjoyable. Click any item to visit the relevant page. A link to this page "
+"will be visible from your home page for two weeks after your initial "
+"registration and then will quietly disappear."
 msgstr ""
 
-#: mod/admin.php:810
-msgid "Job Parameters"
+#: mod/newmember.php:15
+msgid "Getting Started"
 msgstr ""
 
-#: mod/admin.php:812
-msgid "Priority"
+#: mod/newmember.php:17
+msgid "Friendica Walk-Through"
 msgstr ""
 
-#: mod/admin.php:813
+#: mod/newmember.php:17
 msgid ""
-"This page lists the currently queued worker jobs. These jobs are handled by "
-"the worker cronjob you've set up during install."
+"On your <em>Quick Start</em> page - find a brief introduction to your "
+"profile and network tabs, make some new connections, and find some groups to "
+"join."
 msgstr ""
 
-#: mod/admin.php:837
-#, php-format
-msgid ""
-"Your DB still runs with MyISAM tables. You should change the engine type to "
-"InnoDB. As Friendica will use InnoDB only features in the future, you should "
-"change this! See <a href=\"%s\">here</a> for a guide that may be helpful "
-"converting the table engines. You may also use the command <tt>php bin/"
-"console.php dbstructure toinnodb</tt> of your Friendica installation for an "
-"automatic conversion.<br />"
+#: mod/newmember.php:21
+msgid "Go to Your Settings"
 msgstr ""
 
-#: mod/admin.php:844
-#, php-format
+#: mod/newmember.php:21
 msgid ""
-"There is a new version of Friendica available for download. Your current "
-"version is %1$s, upstream version is %2$s"
+"On your <em>Settings</em> page -  change your initial password. Also make a "
+"note of your Identity Address. This looks just like an email address - and "
+"will be useful in making friends on the free social web."
 msgstr ""
 
-#: mod/admin.php:854
+#: mod/newmember.php:22
 msgid ""
-"The database update failed. Please run \"php bin/console.php dbstructure "
-"update\" from the command line and have a look at the errors that might "
-"appear."
-msgstr ""
-
-#: mod/admin.php:860
-msgid "The worker was never executed. Please check your database structure!"
+"Review the other settings, particularly the privacy settings. An unpublished "
+"directory listing is like having an unlisted phone number. In general, you "
+"should probably publish your listing - unless all of your friends and "
+"potential friends know exactly how to find you."
 msgstr ""
 
-#: mod/admin.php:863
-#, php-format
-msgid ""
-"The last worker execution was on %s UTC. This is older than one hour. Please "
-"check your crontab settings."
+#: mod/newmember.php:24 mod/profperm.php:116 view/theme/frio/theme.php:272
+#: src/Content/Nav.php:153 src/Model/Profile.php:731 src/Model/Profile.php:864
+#: src/Model/Profile.php:897 src/Module/Contact.php:659
+#: src/Module/Contact.php:864
+msgid "Profile"
 msgstr ""
 
-#: mod/admin.php:869
-#, php-format
-msgid ""
-"Friendica's configuration now is stored in config/local.ini.php, please copy "
-"config/local-sample.ini.php and move your config from <code>.htconfig.php</"
-"code>. See <a href=\"%s\">the Config help page</a> for help with the "
-"transition."
+#: mod/newmember.php:26 mod/profile_photo.php:248 mod/profiles.php:597
+msgid "Upload Profile Photo"
 msgstr ""
 
-#: mod/admin.php:876
-#, php-format
+#: mod/newmember.php:26
 msgid ""
-"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
-"configuration issue that prevents server to server communication. See <a "
-"href=\"%s\">the installation page</a> for help."
+"Upload a profile photo if you have not done so already. Studies have shown "
+"that people with real photos of themselves are ten times more likely to make "
+"friends than people who do not."
 msgstr ""
 
-#: mod/admin.php:882
-msgid "Normal Account"
+#: mod/newmember.php:27
+msgid "Edit Your Profile"
 msgstr ""
 
-#: mod/admin.php:883
-msgid "Automatic Follower Account"
+#: mod/newmember.php:27
+msgid ""
+"Edit your <strong>default</strong> profile to your liking. Review the "
+"settings for hiding your list of friends and hiding the profile from unknown "
+"visitors."
 msgstr ""
 
-#: mod/admin.php:884
-msgid "Public Forum Account"
+#: mod/newmember.php:28
+msgid "Profile Keywords"
 msgstr ""
 
-#: mod/admin.php:885
-msgid "Automatic Friend Account"
+#: mod/newmember.php:28
+msgid ""
+"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."
 msgstr ""
 
-#: mod/admin.php:886
-msgid "Blog Account"
+#: mod/newmember.php:30
+msgid "Connecting"
 msgstr ""
 
-#: mod/admin.php:887
-msgid "Private Forum Account"
+#: mod/newmember.php:36
+msgid "Importing Emails"
 msgstr ""
 
-#: mod/admin.php:909
-msgid "Message queues"
+#: mod/newmember.php:36
+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/admin.php:915
-msgid "Summary"
+#: mod/newmember.php:39
+msgid "Go to Your Contacts Page"
 msgstr ""
 
-#: mod/admin.php:917
-msgid "Registered users"
+#: mod/newmember.php:39
+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/admin.php:919
-msgid "Pending registrations"
+#: mod/newmember.php:40
+msgid "Go to Your Site's Directory"
 msgstr ""
 
-#: mod/admin.php:920
-msgid "Version"
+#: mod/newmember.php:40
+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/admin.php:925
-msgid "Active addons"
+#: mod/newmember.php:41
+msgid "Finding New People"
 msgstr ""
 
-#: mod/admin.php:956
-msgid "Can not parse base url. Must have at least <scheme>://<domain>"
+#: mod/newmember.php:41
+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 "
+"interest, and provide suggestions based on network relationships. On a brand "
+"new site, friend suggestions will usually begin to be populated within 24 "
+"hours."
 msgstr ""
 
-#: mod/admin.php:1289
-msgid "Site settings updated."
+#: mod/newmember.php:43 src/Model/Group.php:405
+msgid "Groups"
 msgstr ""
 
-#: mod/admin.php:1345
-msgid "No community page for local users"
+#: mod/newmember.php:45
+msgid "Group Your Contacts"
 msgstr ""
 
-#: mod/admin.php:1346
-msgid "No community page"
+#: mod/newmember.php:45
+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/admin.php:1347
-msgid "Public postings from users of this site"
+#: mod/newmember.php:48
+msgid "Why Aren't My Posts Public?"
 msgstr ""
 
-#: mod/admin.php:1348
-msgid "Public postings from the federated network"
+#: mod/newmember.php:48
+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/admin.php:1349
-msgid "Public postings from local users and the federated network"
+#: mod/newmember.php:52
+msgid "Getting Help"
 msgstr ""
 
-#: mod/admin.php:1353 mod/admin.php:1520 mod/admin.php:1530
-#: mod/contact.php:583
-msgid "Disabled"
+#: mod/newmember.php:54
+msgid "Go to the Help Section"
 msgstr ""
 
-#: mod/admin.php:1355
-msgid "Users, Global Contacts"
+#: mod/newmember.php:54
+msgid ""
+"Our <strong>help</strong> pages may be consulted for detail on other program "
+"features and resources."
 msgstr ""
 
-#: mod/admin.php:1356
-msgid "Users, Global Contacts/fallback"
+#: mod/notes.php:42 src/Model/Profile.php:947
+msgid "Personal Notes"
 msgstr ""
 
-#: mod/admin.php:1360
-msgid "One month"
+#: mod/notifications.php:37
+msgid "Invalid request identifier."
 msgstr ""
 
-#: mod/admin.php:1361
-msgid "Three months"
+#: mod/notifications.php:59 mod/notifications.php:183 mod/notifications.php:268
+#: src/Module/Contact.php:626 src/Module/Contact.php:820
+#: src/Module/Contact.php:1080
+msgid "Ignore"
 msgstr ""
 
-#: mod/admin.php:1362
-msgid "Half a year"
+#: mod/notifications.php:92 src/Content/Nav.php:243
+msgid "Notifications"
 msgstr ""
 
-#: mod/admin.php:1363
-msgid "One year"
+#: mod/notifications.php:104
+msgid "Network Notifications"
 msgstr ""
 
-#: mod/admin.php:1368
-msgid "Multi user instance"
+#: mod/notifications.php:109 mod/notify.php:81
+msgid "System Notifications"
 msgstr ""
 
-#: mod/admin.php:1394
-msgid "Closed"
+#: mod/notifications.php:114
+msgid "Personal Notifications"
 msgstr ""
 
-#: mod/admin.php:1395
-msgid "Requires approval"
+#: mod/notifications.php:119
+msgid "Home Notifications"
 msgstr ""
 
-#: mod/admin.php:1396
-msgid "Open"
+#: mod/notifications.php:139
+msgid "Show unread"
 msgstr ""
 
-#: mod/admin.php:1400
-msgid "No SSL policy, links will track page SSL state"
+#: mod/notifications.php:139
+msgid "Show all"
 msgstr ""
 
-#: mod/admin.php:1401
-msgid "Force all links to use SSL"
+#: mod/notifications.php:150
+msgid "Show Ignored Requests"
 msgstr ""
 
-#: mod/admin.php:1402
-msgid "Self-signed certificate, use SSL for local links only (discouraged)"
+#: mod/notifications.php:150
+msgid "Hide Ignored Requests"
 msgstr ""
 
-#: mod/admin.php:1406
-msgid "Don't check"
+#: mod/notifications.php:163 mod/notifications.php:240
+msgid "Notification type:"
 msgstr ""
 
-#: mod/admin.php:1407
-msgid "check the stable version"
+#: mod/notifications.php:166
+msgid "Suggested by:"
 msgstr ""
 
-#: mod/admin.php:1408
-msgid "check the development version"
+#: mod/notifications.php:178 mod/notifications.php:257
+#: src/Module/Contact.php:634
+msgid "Hide this contact from others"
 msgstr ""
 
-#: mod/admin.php:1427
-msgid "Republish users to directory"
+#: mod/notifications.php:200
+msgid "Claims to be known to you: "
 msgstr ""
 
-#: mod/admin.php:1429
-msgid "File upload"
+#: mod/notifications.php:201
+msgid "yes"
 msgstr ""
 
-#: mod/admin.php:1430
-msgid "Policies"
+#: mod/notifications.php:201
+msgid "no"
 msgstr ""
 
-#: mod/admin.php:1431 mod/contact.php:929 mod/events.php:562
-#: src/Model/Profile.php:865
-msgid "Advanced"
+#: mod/notifications.php:202 mod/notifications.php:206
+msgid "Shall your connection be bidirectional or not?"
 msgstr ""
 
-#: mod/admin.php:1432
-msgid "Auto Discovered Contact Directory"
+#: mod/notifications.php:203 mod/notifications.php:207
+#, php-format
+msgid ""
+"Accepting %s as a friend allows %s to subscribe to your posts, and you will "
+"also receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:1433
-msgid "Performance"
+#: mod/notifications.php:204
+#, php-format
+msgid ""
+"Accepting %s as a subscriber allows them to subscribe to your posts, but you "
+"will not receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:1434
-msgid "Worker"
+#: mod/notifications.php:208
+#, php-format
+msgid ""
+"Accepting %s as a sharer allows them to subscribe to your posts, but you "
+"will not receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:1435
-msgid "Message Relay"
+#: mod/notifications.php:219
+msgid "Friend"
 msgstr ""
 
-#: mod/admin.php:1436
-msgid ""
-"Relocate - WARNING: advanced function. Could make this server unreachable."
+#: mod/notifications.php:220
+msgid "Sharer"
 msgstr ""
 
-#: mod/admin.php:1439
-msgid "Site name"
+#: mod/notifications.php:220
+msgid "Subscriber"
 msgstr ""
 
-#: mod/admin.php:1440
-msgid "Host name"
+#: mod/notifications.php:263 src/Model/Profile.php:534
+#: src/Module/Contact.php:91
+msgid "Network:"
 msgstr ""
 
-#: mod/admin.php:1441
-msgid "Sender Email"
+#: mod/notifications.php:276
+msgid "No introductions."
 msgstr ""
 
-#: mod/admin.php:1441
-msgid ""
-"The email address your server shall use to send notification emails from."
+#: mod/notifications.php:310
+#, php-format
+msgid "No more %s notifications."
 msgstr ""
 
-#: mod/admin.php:1442
-msgid "Banner/Logo"
+#: mod/notify.php:77
+msgid "No more system notifications."
 msgstr ""
 
-#: mod/admin.php:1443
-msgid "Shortcut icon"
+#: mod/openid.php:31
+msgid "OpenID protocol error. No ID returned."
 msgstr ""
 
-#: mod/admin.php:1443
-msgid "Link to an icon that will be used for browsers."
+#: mod/openid.php:67
+msgid ""
+"Account not found and OpenID registration is not permitted on this site."
 msgstr ""
 
-#: mod/admin.php:1444
-msgid "Touch icon"
+#: mod/openid.php:117 src/Module/Login.php:92 src/Module/Login.php:142
+msgid "Login failed."
 msgstr ""
 
-#: mod/admin.php:1444
-msgid "Link to an icon that will be used for tablets and mobiles."
+#: mod/ostatus_subscribe.php:22
+msgid "Subscribing to OStatus contacts"
 msgstr ""
 
-#: mod/admin.php:1445
-msgid "Additional Info"
+#: mod/ostatus_subscribe.php:34
+msgid "No contact provided."
 msgstr ""
 
-#: mod/admin.php:1445
-#, php-format
-msgid ""
-"For public servers: you can add additional information here that will be "
-"listed at %s/servers."
+#: mod/ostatus_subscribe.php:41
+msgid "Couldn't fetch information for contact."
 msgstr ""
 
-#: mod/admin.php:1446
-msgid "System language"
+#: mod/ostatus_subscribe.php:51
+msgid "Couldn't fetch friends for contact."
 msgstr ""
 
-#: mod/admin.php:1447
-msgid "System theme"
+#: mod/ostatus_subscribe.php:65 mod/repair_ostatus.php:52
+msgid "Done"
 msgstr ""
 
-#: mod/admin.php:1447
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
+#: mod/ostatus_subscribe.php:79
+msgid "success"
 msgstr ""
 
-#: mod/admin.php:1448
-msgid "Mobile system theme"
+#: mod/ostatus_subscribe.php:81
+msgid "failed"
 msgstr ""
 
-#: mod/admin.php:1448
-msgid "Theme for mobile devices"
+#: mod/ostatus_subscribe.php:84 src/Object/Post.php:271
+msgid "ignored"
 msgstr ""
 
-#: mod/admin.php:1449
-msgid "SSL link policy"
+#: mod/ostatus_subscribe.php:89 mod/repair_ostatus.php:58
+msgid "Keep this window open until done."
 msgstr ""
 
-#: mod/admin.php:1449
-msgid "Determines whether generated links should be forced to use SSL"
+#: mod/photos.php:114 src/Model/Profile.php:908
+msgid "Photo Albums"
 msgstr ""
 
-#: mod/admin.php:1450
-msgid "Force SSL"
+#: mod/photos.php:115 mod/photos.php:1708
+msgid "Recent Photos"
 msgstr ""
 
-#: mod/admin.php:1450
-msgid ""
-"Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
-"to endless loops."
+#: mod/photos.php:118 mod/photos.php:1227 mod/photos.php:1710
+msgid "Upload New Photos"
 msgstr ""
 
-#: mod/admin.php:1451
-msgid "Hide help entry from navigation menu"
+#: mod/photos.php:136 mod/settings.php:54
+msgid "everybody"
 msgstr ""
 
-#: mod/admin.php:1451
-msgid ""
-"Hides the menu entry for the Help pages from the navigation menu. You can "
-"still access it calling /help directly."
+#: mod/photos.php:192
+msgid "Contact information unavailable"
 msgstr ""
 
-#: mod/admin.php:1452
-msgid "Single user instance"
+#: mod/photos.php:211
+msgid "Album not found."
 msgstr ""
 
-#: mod/admin.php:1452
-msgid "Make this instance multi-user or single-user for the named user"
+#: mod/photos.php:240 mod/photos.php:253 mod/photos.php:1178
+msgid "Delete Album"
 msgstr ""
 
-#: mod/admin.php:1453
-msgid "Maximum image size"
+#: mod/photos.php:251
+msgid "Do you really want to delete this photo album and all its photos?"
 msgstr ""
 
-#: mod/admin.php:1453
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
+#: mod/photos.php:313 mod/photos.php:325 mod/photos.php:1453
+msgid "Delete Photo"
 msgstr ""
 
-#: mod/admin.php:1454
-msgid "Maximum image length"
+#: mod/photos.php:323
+msgid "Do you really want to delete this photo?"
 msgstr ""
 
-#: mod/admin.php:1454
-msgid ""
-"Maximum length in pixels of the longest side of uploaded images. Default is "
-"-1, which means no limits."
+#: mod/photos.php:680
+msgid "a photo"
 msgstr ""
 
-#: mod/admin.php:1455
-msgid "JPEG image quality"
+#: mod/photos.php:680
+#, php-format
+msgid "%1$s was tagged in %2$s by %3$s"
 msgstr ""
 
-#: mod/admin.php:1455
-msgid ""
-"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
-"100, which is full quality."
+#: mod/photos.php:776 mod/photos.php:779 mod/photos.php:808
+#: mod/profile_photo.php:153 mod/wall_upload.php:196
+#, php-format
+msgid "Image exceeds size limit of %s"
 msgstr ""
 
-#: mod/admin.php:1457
-msgid "Register policy"
+#: mod/photos.php:782
+msgid "Image upload didn't complete, please try again"
 msgstr ""
 
-#: mod/admin.php:1458
-msgid "Maximum Daily Registrations"
+#: mod/photos.php:785
+msgid "Image file is missing"
 msgstr ""
 
-#: mod/admin.php:1458
+#: mod/photos.php:790
 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."
+"Server can't accept new file upload at this time, please contact your "
+"administrator"
 msgstr ""
 
-#: mod/admin.php:1459
-msgid "Register text"
+#: mod/photos.php:816
+msgid "Image file is empty."
 msgstr ""
 
-#: mod/admin.php:1459
-msgid ""
-"Will be displayed prominently on the registration page. You can use BBCode "
-"here."
+#: mod/photos.php:831 mod/profile_photo.php:162 mod/wall_upload.php:210
+msgid "Unable to process image."
 msgstr ""
 
-#: mod/admin.php:1460
-msgid "Forbidden Nicknames"
+#: mod/photos.php:860 mod/profile_photo.php:307 mod/wall_upload.php:249
+msgid "Image upload failed."
 msgstr ""
 
-#: mod/admin.php:1460
-msgid ""
-"Comma separated list of nicknames that are forbidden from registration. "
-"Preset is a list of role names according RFC 2142."
+#: mod/photos.php:948
+msgid "No photos selected"
 msgstr ""
 
-#: mod/admin.php:1461
-msgid "Accounts abandoned after x days"
+#: mod/photos.php:1045 mod/videos.php:301
+msgid "Access to this item is restricted."
 msgstr ""
 
-#: mod/admin.php:1461
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
+#: mod/photos.php:1099
+msgid "Upload Photos"
 msgstr ""
 
-#: mod/admin.php:1462
-msgid "Allowed friend domains"
+#: mod/photos.php:1103 mod/photos.php:1173
+msgid "New album name: "
 msgstr ""
 
-#: mod/admin.php:1462
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
+#: mod/photos.php:1104
+msgid "or select existing album:"
 msgstr ""
 
-#: mod/admin.php:1463
-msgid "Allowed email domains"
+#: mod/photos.php:1105
+msgid "Do not show a status post for this upload"
 msgstr ""
 
-#: mod/admin.php:1463
-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"
+#: mod/photos.php:1121 mod/photos.php:1456 mod/settings.php:1222
+msgid "Show to Groups"
 msgstr ""
 
-#: mod/admin.php:1464
-msgid "No OEmbed rich content"
+#: mod/photos.php:1122 mod/photos.php:1457 mod/settings.php:1223
+msgid "Show to Contacts"
 msgstr ""
 
-#: mod/admin.php:1464
-msgid ""
-"Don't show the rich content (e.g. embedded PDF), except from the domains "
-"listed below."
+#: mod/photos.php:1184
+msgid "Edit Album"
 msgstr ""
 
-#: mod/admin.php:1465
-msgid "Allowed OEmbed domains"
+#: mod/photos.php:1189
+msgid "Show Newest First"
 msgstr ""
 
-#: mod/admin.php:1465
-msgid ""
-"Comma separated list of domains which oembed content is allowed to be "
-"displayed. Wildcards are accepted."
+#: mod/photos.php:1191
+msgid "Show Oldest First"
 msgstr ""
 
-#: mod/admin.php:1466
-msgid "Block public"
+#: mod/photos.php:1212 mod/photos.php:1693
+msgid "View Photo"
 msgstr ""
 
-#: mod/admin.php:1466
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
+#: mod/photos.php:1253
+msgid "Permission denied. Access to this item may be restricted."
 msgstr ""
 
-#: mod/admin.php:1467
-msgid "Force publish"
+#: mod/photos.php:1255
+msgid "Photo not available"
 msgstr ""
 
-#: mod/admin.php:1467
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
+#: mod/photos.php:1330
+msgid "View photo"
 msgstr ""
 
-#: mod/admin.php:1467
-msgid "Enabling this may violate privacy laws like the GDPR"
+#: mod/photos.php:1330
+msgid "Edit photo"
 msgstr ""
 
-#: mod/admin.php:1468
-msgid "Global directory URL"
+#: mod/photos.php:1331
+msgid "Use as profile photo"
 msgstr ""
 
-#: mod/admin.php:1468
-msgid ""
-"URL to the global directory. If this is not set, the global directory is "
-"completely unavailable to the application."
+#: mod/photos.php:1337 src/Object/Post.php:152
+msgid "Private Message"
 msgstr ""
 
-#: mod/admin.php:1469
-msgid "Private posts by default for new users"
+#: mod/photos.php:1357
+msgid "View Full Size"
 msgstr ""
 
-#: mod/admin.php:1469
-msgid ""
-"Set default post permissions for all new members to the default privacy "
-"group rather than public."
+#: mod/photos.php:1421
+msgid "Tags: "
 msgstr ""
 
-#: mod/admin.php:1470
-msgid "Don't include post content in email notifications"
+#: mod/photos.php:1424
+msgid "[Select tags to remove]"
 msgstr ""
 
-#: mod/admin.php:1470
-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."
+#: mod/photos.php:1439
+msgid "New album name"
 msgstr ""
 
-#: mod/admin.php:1471
-msgid "Disallow public access to addons listed in the apps menu."
+#: mod/photos.php:1440
+msgid "Caption"
 msgstr ""
 
-#: mod/admin.php:1471
-msgid ""
-"Checking this box will restrict addons listed in the apps menu to members "
-"only."
+#: mod/photos.php:1441
+msgid "Add a Tag"
 msgstr ""
 
-#: mod/admin.php:1472
-msgid "Don't embed private images in posts"
+#: mod/photos.php:1441
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 msgstr ""
 
-#: mod/admin.php:1472
-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."
+#: mod/photos.php:1442
+msgid "Do not rotate"
 msgstr ""
 
-#: mod/admin.php:1473
-msgid "Explicit Content"
+#: mod/photos.php:1443
+msgid "Rotate CW (right)"
 msgstr ""
 
-#: mod/admin.php:1473
-msgid ""
-"Set this to announce that your node is used mostly for explicit content that "
-"might not be suited for minors. This information will be published in the "
-"node information and might be used, e.g. by the global directory, to filter "
-"your node from listings of nodes to join. Additionally a note about this "
-"will be shown at the user registration page."
+#: mod/photos.php:1444
+msgid "Rotate CCW (left)"
 msgstr ""
 
-#: mod/admin.php:1474
-msgid "Allow Users to set remote_self"
+#: mod/photos.php:1478 src/Object/Post.php:300
+msgid "I like this (toggle)"
 msgstr ""
 
-#: mod/admin.php:1474
-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."
+#: mod/photos.php:1479 src/Object/Post.php:301
+msgid "I don't like this (toggle)"
 msgstr ""
 
-#: mod/admin.php:1475
-msgid "Block multiple registrations"
+#: mod/photos.php:1494 mod/photos.php:1533 mod/photos.php:1593
+#: src/Module/Contact.php:1013 src/Object/Post.php:799
+msgid "This is you"
 msgstr ""
 
-#: mod/admin.php:1475
-msgid "Disallow users to register additional accounts for use as pages."
+#: mod/photos.php:1496 mod/photos.php:1535 mod/photos.php:1595
+#: src/Object/Post.php:405 src/Object/Post.php:801
+msgid "Comment"
 msgstr ""
 
-#: mod/admin.php:1476
-msgid "OpenID support"
+#: mod/photos.php:1627
+msgid "Map"
 msgstr ""
 
-#: mod/admin.php:1476
-msgid "OpenID support for registration and logins."
+#: mod/photos.php:1699 mod/videos.php:378
+msgid "View Album"
 msgstr ""
 
-#: mod/admin.php:1477
-msgid "Fullname check"
+#: mod/ping.php:285
+msgid "{0} wants to be your friend"
 msgstr ""
 
-#: mod/admin.php:1477
-msgid ""
-"Force users to register with a space between firstname and lastname in Full "
-"name, as an antispam measure"
+#: mod/ping.php:301
+msgid "{0} sent you a message"
 msgstr ""
 
-#: mod/admin.php:1478
-msgid "Community pages for visitors"
+#: mod/ping.php:317
+msgid "{0} requested registration"
 msgstr ""
 
-#: mod/admin.php:1478
-msgid ""
-"Which community pages should be available for visitors. Local users always "
-"see both pages."
+#: mod/poke.php:184
+msgid "Poke/Prod"
 msgstr ""
 
-#: mod/admin.php:1479
-msgid "Posts per user on community page"
+#: mod/poke.php:185
+msgid "poke, prod or do other things to somebody"
 msgstr ""
 
-#: mod/admin.php:1479
-msgid ""
-"The maximum number of posts per user on the community page. (Not valid for "
-"'Global Community')"
+#: mod/poke.php:186
+msgid "Recipient"
 msgstr ""
 
-#: mod/admin.php:1480
-msgid "Enable OStatus support"
+#: mod/poke.php:187
+msgid "Choose what you wish to do to recipient"
 msgstr ""
 
-#: mod/admin.php:1480
-msgid ""
-"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
-"communications in OStatus are public, so privacy warnings will be "
-"occasionally displayed."
+#: mod/poke.php:190
+msgid "Make this post private"
 msgstr ""
 
-#: mod/admin.php:1481
-msgid "Only import OStatus/ActivityPub threads from our contacts"
+#: mod/probe.php:14 mod/webfinger.php:17
+msgid "Only logged in users are permitted to perform a probing."
 msgstr ""
 
-#: mod/admin.php:1481
-msgid ""
-"Normally we import every content from our OStatus and ActivityPub contacts. "
-"With this option we only store threads that are started by a contact that is "
-"known on our system."
+#: mod/profile.php:42 src/Model/Profile.php:129
+msgid "Requested profile is not available."
 msgstr ""
 
-#: mod/admin.php:1482
-msgid "OStatus support can only be enabled if threading is enabled."
+#: mod/profile.php:93 mod/profile.php:96 src/Protocol/OStatus.php:1286
+#, php-format
+msgid "%s's timeline"
 msgstr ""
 
-#: mod/admin.php:1484
-msgid ""
-"Diaspora support can't be enabled because Friendica was installed into a sub "
-"directory."
+#: mod/profile.php:94 src/Protocol/OStatus.php:1287
+#, php-format
+msgid "%s's posts"
 msgstr ""
 
-#: mod/admin.php:1485
-msgid "Enable Diaspora support"
+#: mod/profile.php:95 src/Protocol/OStatus.php:1288
+#, php-format
+msgid "%s's comments"
 msgstr ""
 
-#: mod/admin.php:1485
-msgid "Provide built-in Diaspora network compatibility."
+#: mod/profile_photo.php:57
+msgid "Image uploaded but image cropping failed."
 msgstr ""
 
-#: mod/admin.php:1486
-msgid "Only allow Friendica contacts"
+#: mod/profile_photo.php:89 mod/profile_photo.php:98 mod/profile_photo.php:107
+#: mod/profile_photo.php:315
+#, php-format
+msgid "Image size reduction [%s] failed."
 msgstr ""
 
-#: mod/admin.php:1486
+#: mod/profile_photo.php:126
 msgid ""
-"All contacts must use Friendica protocols. All other built-in communication "
-"protocols disabled."
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
 msgstr ""
 
-#: mod/admin.php:1487
-msgid "Verify SSL"
+#: mod/profile_photo.php:134
+msgid "Unable to process image"
 msgstr ""
 
-#: mod/admin.php:1487
-msgid ""
-"If you wish, you can turn on strict certificate checking. This will mean you "
-"cannot connect (at all) to self-signed SSL sites."
+#: mod/profile_photo.php:246
+msgid "Upload File:"
 msgstr ""
 
-#: mod/admin.php:1488
-msgid "Proxy user"
+#: mod/profile_photo.php:247
+msgid "Select a profile:"
 msgstr ""
 
-#: mod/admin.php:1489
-msgid "Proxy URL"
+#: mod/profile_photo.php:252
+msgid "or"
 msgstr ""
 
-#: mod/admin.php:1490
-msgid "Network timeout"
+#: mod/profile_photo.php:253
+msgid "skip this step"
 msgstr ""
 
-#: mod/admin.php:1490
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+#: mod/profile_photo.php:253
+msgid "select a photo from your photo albums"
 msgstr ""
 
-#: mod/admin.php:1491
-msgid "Maximum Load Average"
+#: mod/profile_photo.php:266
+msgid "Crop Image"
 msgstr ""
 
-#: mod/admin.php:1491
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
+#: mod/profile_photo.php:267
+msgid "Please adjust the image cropping for optimum viewing."
 msgstr ""
 
-#: mod/admin.php:1492
-msgid "Maximum Load Average (Frontend)"
+#: mod/profile_photo.php:269
+msgid "Done Editing"
 msgstr ""
 
-#: mod/admin.php:1492
-msgid "Maximum system load before the frontend quits service - default 50."
+#: mod/profile_photo.php:305
+msgid "Image uploaded successfully."
 msgstr ""
 
-#: mod/admin.php:1493
-msgid "Minimal Memory"
+#: mod/profiles.php:59
+msgid "Profile deleted."
 msgstr ""
 
-#: mod/admin.php:1493
-msgid ""
-"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
-"default 0 (deactivated)."
+#: mod/profiles.php:75 mod/profiles.php:111
+msgid "Profile-"
 msgstr ""
 
-#: mod/admin.php:1494
-msgid "Maximum table size for optimization"
+#: mod/profiles.php:94 mod/profiles.php:133
+msgid "New profile created."
 msgstr ""
 
-#: mod/admin.php:1494
-msgid ""
-"Maximum table size (in MB) for the automatic optimization. Enter -1 to "
-"disable it."
+#: mod/profiles.php:117
+msgid "Profile unavailable to clone."
 msgstr ""
 
-#: mod/admin.php:1495
-msgid "Minimum level of fragmentation"
+#: mod/profiles.php:205
+msgid "Profile Name is required."
 msgstr ""
 
-#: mod/admin.php:1495
-msgid ""
-"Minimum fragmenation level to start the automatic optimization - default "
-"value is 30%."
+#: mod/profiles.php:346
+msgid "Marital Status"
 msgstr ""
 
-#: mod/admin.php:1497
-msgid "Periodical check of global contacts"
+#: mod/profiles.php:350
+msgid "Romantic Partner"
 msgstr ""
 
-#: mod/admin.php:1497
-msgid ""
-"If enabled, the global contacts are checked periodically for missing or "
-"outdated data and the vitality of the contacts and servers."
+#: mod/profiles.php:362
+msgid "Work/Employment"
 msgstr ""
 
-#: mod/admin.php:1498
-msgid "Days between requery"
+#: mod/profiles.php:365
+msgid "Religion"
 msgstr ""
 
-#: mod/admin.php:1498
-msgid "Number of days after which a server is requeried for his contacts."
+#: mod/profiles.php:369
+msgid "Political Views"
 msgstr ""
 
-#: mod/admin.php:1499
-msgid "Discover contacts from other servers"
+#: mod/profiles.php:373
+msgid "Gender"
 msgstr ""
 
-#: mod/admin.php:1499
-msgid ""
-"Periodically query other servers for contacts. You can choose between "
-"'users': the users on the remote system, 'Global Contacts': active contacts "
-"that are known on the system. The fallback is meant for Redmatrix servers "
-"and older friendica servers, where global contacts weren't available. The "
-"fallback increases the server load, so the recommened setting is 'Users, "
-"Global Contacts'."
+#: mod/profiles.php:377
+msgid "Sexual Preference"
 msgstr ""
 
-#: mod/admin.php:1500
-msgid "Timeframe for fetching global contacts"
+#: mod/profiles.php:381
+msgid "XMPP"
 msgstr ""
 
-#: mod/admin.php:1500
-msgid ""
-"When the discovery is activated, this value defines the timeframe for the "
-"activity of the global contacts that are fetched from other servers."
+#: mod/profiles.php:385
+msgid "Homepage"
 msgstr ""
 
-#: mod/admin.php:1501
-msgid "Search the local directory"
+#: mod/profiles.php:389 mod/profiles.php:592
+msgid "Interests"
 msgstr ""
 
-#: mod/admin.php:1501
-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."
+#: mod/profiles.php:400 mod/profiles.php:588
+msgid "Location"
 msgstr ""
 
-#: mod/admin.php:1503
-msgid "Publish server information"
+#: mod/profiles.php:483
+msgid "Profile updated."
 msgstr ""
 
-#: mod/admin.php:1503
-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 "
-"profiles, number of posts and the activated protocols and connectors. See <a "
-"href='http://the-federation.info/'>the-federation.info</a> for details."
+#: mod/profiles.php:537
+msgid "Hide contacts and friends:"
 msgstr ""
 
-#: mod/admin.php:1505
-msgid "Check upstream version"
+#: mod/profiles.php:542
+msgid "Hide your contact/friend list from viewers of this profile?"
 msgstr ""
 
-#: mod/admin.php:1505
-msgid ""
-"Enables checking for new Friendica versions at github. If there is a new "
-"version, you will be informed in the admin panel overview."
+#: mod/profiles.php:562
+msgid "Show more profile fields:"
 msgstr ""
 
-#: mod/admin.php:1506
-msgid "Suppress Tags"
+#: mod/profiles.php:574
+msgid "Profile Actions"
 msgstr ""
 
-#: mod/admin.php:1506
-msgid "Suppress showing a list of hashtags at the end of the posting."
+#: mod/profiles.php:575
+msgid "Edit Profile Details"
 msgstr ""
 
-#: mod/admin.php:1507
-msgid "Clean database"
+#: mod/profiles.php:577
+msgid "Change Profile Photo"
 msgstr ""
 
-#: mod/admin.php:1507
-msgid ""
-"Remove old remote items, orphaned database records and old content from some "
-"other helper tables."
+#: mod/profiles.php:579
+msgid "View this profile"
 msgstr ""
 
-#: mod/admin.php:1508
-msgid "Lifespan of remote items"
+#: mod/profiles.php:580
+msgid "View all profiles"
 msgstr ""
 
-#: mod/admin.php:1508
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"remote items will be deleted. Own items, and marked or filed items are "
-"always kept. 0 disables this behaviour."
+#: mod/profiles.php:581 mod/profiles.php:676 src/Model/Profile.php:407
+msgid "Edit visibility"
 msgstr ""
 
-#: mod/admin.php:1509
-msgid "Lifespan of unclaimed items"
+#: mod/profiles.php:582
+msgid "Create a new profile using these settings"
 msgstr ""
 
-#: mod/admin.php:1509
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"unclaimed remote items (mostly content from the relay) will be deleted. "
-"Default value is 90 days. Defaults to the general lifespan value of remote "
-"items if set to 0."
+#: mod/profiles.php:583
+msgid "Clone this profile"
 msgstr ""
 
-#: mod/admin.php:1510
-msgid "Path to item cache"
+#: mod/profiles.php:584
+msgid "Delete this profile"
 msgstr ""
 
-#: mod/admin.php:1510
-msgid "The item caches buffers generated bbcode and external images."
+#: mod/profiles.php:586
+msgid "Basic information"
+msgstr ""
+
+#: mod/profiles.php:587
+msgid "Profile picture"
 msgstr ""
 
-#: mod/admin.php:1511
-msgid "Cache duration in seconds"
+#: mod/profiles.php:589
+msgid "Preferences"
 msgstr ""
 
-#: mod/admin.php:1511
-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."
+#: mod/profiles.php:590
+msgid "Status information"
 msgstr ""
 
-#: mod/admin.php:1512
-msgid "Maximum numbers of comments per post"
+#: mod/profiles.php:591
+msgid "Additional information"
 msgstr ""
 
-#: mod/admin.php:1512
-msgid "How much comments should be shown for each post? Default value is 100."
+#: mod/profiles.php:594
+msgid "Relation"
 msgstr ""
 
-#: mod/admin.php:1513
-msgid "Temp path"
+#: mod/profiles.php:595 src/Util/Temporal.php:82 src/Util/Temporal.php:84
+msgid "Miscellaneous"
 msgstr ""
 
-#: mod/admin.php:1513
-msgid ""
-"If you have a restricted system where the webserver can't access the system "
-"temp path, enter another path here."
+#: mod/profiles.php:598
+msgid "Your Gender:"
 msgstr ""
 
-#: mod/admin.php:1514
-msgid "Base path to installation"
+#: mod/profiles.php:599
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
 msgstr ""
 
-#: mod/admin.php:1514
-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."
+#: mod/profiles.php:600 src/Model/Profile.php:783
+msgid "Sexual Preference:"
 msgstr ""
 
-#: mod/admin.php:1515
-msgid "Disable picture proxy"
+#: mod/profiles.php:601
+msgid "Example: fishing photography software"
 msgstr ""
 
-#: mod/admin.php:1515
-msgid ""
-"The picture proxy increases performance and privacy. It shouldn't be used on "
-"systems with very low bandwidth."
+#: mod/profiles.php:606
+msgid "Profile Name:"
 msgstr ""
 
-#: mod/admin.php:1516
-msgid "Only search in tags"
+#: mod/profiles.php:608
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
 msgstr ""
 
-#: mod/admin.php:1516
-msgid "On large systems the text search can slow down the system extremely."
+#: mod/profiles.php:609
+msgid "Your Full Name:"
 msgstr ""
 
-#: mod/admin.php:1518
-msgid "New base url"
+#: mod/profiles.php:610
+msgid "Title/Description:"
 msgstr ""
 
-#: mod/admin.php:1518
-msgid ""
-"Change base url for this server. Sends relocate message to all Friendica and "
-"Diaspora* contacts of all users."
+#: mod/profiles.php:613
+msgid "Street Address:"
 msgstr ""
 
-#: mod/admin.php:1520
-msgid "RINO Encryption"
+#: mod/profiles.php:614
+msgid "Locality/City:"
 msgstr ""
 
-#: mod/admin.php:1520
-msgid "Encryption layer between nodes."
+#: mod/profiles.php:615
+msgid "Region/State:"
 msgstr ""
 
-#: mod/admin.php:1520
-msgid "Enabled"
+#: mod/profiles.php:616
+msgid "Postal/Zip Code:"
 msgstr ""
 
-#: mod/admin.php:1522
-msgid "Maximum number of parallel workers"
+#: mod/profiles.php:617
+msgid "Country:"
 msgstr ""
 
-#: mod/admin.php:1522
-#, php-format
-msgid ""
-"On shared hosters set this to %d. On larger systems, values of %d are great. "
-"Default value is %d."
+#: mod/profiles.php:618 src/Util/Temporal.php:150
+msgid "Age: "
 msgstr ""
 
-#: mod/admin.php:1523
-msgid "Don't use 'proc_open' with the worker"
+#: mod/profiles.php:621
+msgid "Who: (if applicable)"
 msgstr ""
 
-#: mod/admin.php:1523
-msgid ""
-"Enable this if your system doesn't allow the use of 'proc_open'. This can "
-"happen on shared hosters. If this is enabled you should increase the "
-"frequency of worker calls in your crontab."
+#: mod/profiles.php:621
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
 msgstr ""
 
-#: mod/admin.php:1524
-msgid "Enable fastlane"
+#: mod/profiles.php:622
+msgid "Since [date]:"
 msgstr ""
 
-#: mod/admin.php:1524
-msgid ""
-"When enabed, the fastlane mechanism starts an additional worker if processes "
-"with higher priority are blocked by processes of lower priority."
+#: mod/profiles.php:624
+msgid "Tell us about yourself..."
 msgstr ""
 
-#: mod/admin.php:1525
-msgid "Enable frontend worker"
+#: mod/profiles.php:625
+msgid "XMPP (Jabber) address:"
 msgstr ""
 
-#: mod/admin.php:1525
-#, php-format
+#: mod/profiles.php:625
 msgid ""
-"When enabled the Worker process is triggered when backend access is "
-"performed \\x28e.g. messages being delivered\\x29. On smaller sites you "
-"might want to call %s/worker on a regular basis via an external cron job. "
-"You should only enable this option if you cannot utilize cron/scheduled jobs "
-"on your server."
+"The XMPP address will be propagated to your contacts so that they can follow "
+"you."
 msgstr ""
 
-#: mod/admin.php:1527
-msgid "Subscribe to relay"
+#: mod/profiles.php:626
+msgid "Homepage URL:"
 msgstr ""
 
-#: mod/admin.php:1527
-msgid ""
-"Enables the receiving of public posts from the relay. They will be included "
-"in the search, subscribed tags and on the global community page."
+#: mod/profiles.php:627 src/Model/Profile.php:791
+msgid "Hometown:"
 msgstr ""
 
-#: mod/admin.php:1528
-msgid "Relay server"
+#: mod/profiles.php:628 src/Model/Profile.php:799
+msgid "Political Views:"
 msgstr ""
 
-#: mod/admin.php:1528
-msgid ""
-"Address of the relay server where public posts should be send to. For "
-"example https://relay.diasp.org"
+#: mod/profiles.php:629
+msgid "Religious Views:"
 msgstr ""
 
-#: mod/admin.php:1529
-msgid "Direct relay transfer"
+#: mod/profiles.php:630
+msgid "Public Keywords:"
 msgstr ""
 
-#: mod/admin.php:1529
-msgid ""
-"Enables the direct transfer to other servers without using the relay servers"
+#: mod/profiles.php:630
+msgid "(Used for suggesting potential friends, can be seen by others)"
 msgstr ""
 
-#: mod/admin.php:1530
-msgid "Relay scope"
+#: mod/profiles.php:631
+msgid "Private Keywords:"
 msgstr ""
 
-#: mod/admin.php:1530
-msgid ""
-"Can be 'all' or 'tags'. 'all' means that every public post should be "
-"received. 'tags' means that only posts with selected tags should be received."
+#: mod/profiles.php:631
+msgid "(Used for searching profiles, never shown to others)"
 msgstr ""
 
-#: mod/admin.php:1530
-msgid "all"
+#: mod/profiles.php:632 src/Model/Profile.php:815
+msgid "Likes:"
 msgstr ""
 
-#: mod/admin.php:1530
-msgid "tags"
+#: mod/profiles.php:633 src/Model/Profile.php:819
+msgid "Dislikes:"
 msgstr ""
 
-#: mod/admin.php:1531
-msgid "Server tags"
+#: mod/profiles.php:634
+msgid "Musical interests"
 msgstr ""
 
-#: mod/admin.php:1531
-msgid "Comma separated list of tags for the 'tags' subscription."
+#: mod/profiles.php:635
+msgid "Books, literature"
 msgstr ""
 
-#: mod/admin.php:1532
-msgid "Allow user tags"
+#: mod/profiles.php:636
+msgid "Television"
 msgstr ""
 
-#: mod/admin.php:1532
-msgid ""
-"If enabled, the tags from the saved searches will used for the 'tags' "
-"subscription in addition to the 'relay_server_tags'."
+#: mod/profiles.php:637
+msgid "Film/dance/culture/entertainment"
 msgstr ""
 
-#: mod/admin.php:1535
-msgid "Start Relocation"
+#: mod/profiles.php:638
+msgid "Hobbies/Interests"
 msgstr ""
 
-#: mod/admin.php:1561
-msgid "Update has been marked successful"
+#: mod/profiles.php:639
+msgid "Love/romance"
 msgstr ""
 
-#: mod/admin.php:1568
-#, php-format
-msgid "Database structure update %s was successfully applied."
+#: mod/profiles.php:640
+msgid "Work/employment"
 msgstr ""
 
-#: mod/admin.php:1571
-#, php-format
-msgid "Executing of database structure update %s failed with error: %s"
+#: mod/profiles.php:641
+msgid "School/education"
 msgstr ""
 
-#: mod/admin.php:1587
-#, php-format
-msgid "Executing %s failed with error: %s"
+#: mod/profiles.php:642
+msgid "Contact information and Social Networks"
 msgstr ""
 
-#: mod/admin.php:1589
-#, php-format
-msgid "Update %s was successfully applied."
+#: mod/profiles.php:673 src/Model/Profile.php:403
+msgid "Profile Image"
 msgstr ""
 
-#: mod/admin.php:1592
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
+#: mod/profiles.php:675 src/Model/Profile.php:406
+msgid "visible to everybody"
 msgstr ""
 
-#: mod/admin.php:1595
-#, php-format
-msgid "There was no additional update function %s that needed to be called."
+#: mod/profiles.php:682
+msgid "Edit/Manage Profiles"
 msgstr ""
 
-#: mod/admin.php:1618
-msgid "No failed updates."
+#: mod/profiles.php:683 src/Model/Profile.php:393 src/Model/Profile.php:415
+msgid "Change profile photo"
 msgstr ""
 
-#: mod/admin.php:1619
-msgid "Check database structure"
+#: mod/profiles.php:684 src/Model/Profile.php:394
+msgid "Create New Profile"
 msgstr ""
 
-#: mod/admin.php:1624
-msgid "Failed Updates"
+#: mod/profperm.php:35 mod/profperm.php:68
+msgid "Invalid profile identifier."
 msgstr ""
 
-#: mod/admin.php:1625
-msgid ""
-"This does not include updates prior to 1139, which did not return a status."
+#: mod/profperm.php:114
+msgid "Profile Visibility Editor"
 msgstr ""
 
-#: mod/admin.php:1626
-msgid "Mark success (if update was manually applied)"
+#: mod/profperm.php:127
+msgid "Visible To"
 msgstr ""
 
-#: mod/admin.php:1627
-msgid "Attempt to execute this update step automatically"
+#: mod/profperm.php:143
+msgid "All Contacts (with secure profile access)"
 msgstr ""
 
-#: mod/admin.php:1666
-#, php-format
+#: mod/register.php:103
 msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tthe administrator of %2$s has set up an account for you."
+"Registration successful. Please check your email for further instructions."
 msgstr ""
 
-#: mod/admin.php:1669
+#: mod/register.php:107
 #, php-format
 msgid ""
-"\n"
-"\t\t\tThe login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%1$s\n"
-"\t\t\tLogin Name:\t\t%2$s\n"
-"\t\t\tPassword:\t\t%3$s\n"
-"\n"
-"\t\t\tYou may change your password from your account \"Settings\" page after "
-"logging\n"
-"\t\t\tin.\n"
-"\n"
-"\t\t\tPlease take a few moments to review the other account settings on that "
-"page.\n"
-"\n"
-"\t\t\tYou may also wish to add some basic information to your default "
-"profile\n"
-"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
-"\n"
-"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
-"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - "
-"and\n"
-"\t\t\tperhaps what country you live in; if you do not wish to be more "
-"specific\n"
-"\t\t\tthan that.\n"
-"\n"
-"\t\t\tWe fully respect your right to privacy, and none of these items are "
-"necessary.\n"
-"\t\t\tIf you are new and do not know anybody here, they may help\n"
-"\t\t\tyou to make some new and interesting friends.\n"
-"\n"
-"\t\t\tIf you ever want to delete your account, you can do so at %1$s/"
-"removeme\n"
-"\n"
-"\t\t\tThank you and welcome to %4$s."
+"Failed to send email message. Here your accout details:<br> login: %s<br> "
+"password: %s<br><br>You can change your password after login."
 msgstr ""
 
-#: mod/admin.php:1706 src/Model/User.php:707
-#, php-format
-msgid "Registration details for %s"
+#: mod/register.php:114
+msgid "Registration successful."
 msgstr ""
 
-#: mod/admin.php:1716
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/register.php:119
+msgid "Your registration can not be processed."
+msgstr ""
 
-#: mod/admin.php:1722
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/register.php:162
+msgid "Your registration is pending approval by the site owner."
+msgstr ""
 
-#: mod/admin.php:1769
-#, php-format
-msgid "User '%s' deleted"
+#: mod/register.php:191 mod/uimport.php:38
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
 msgstr ""
 
-#: mod/admin.php:1777
-#, php-format
-msgid "User '%s' unblocked"
+#: mod/register.php:220
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
 msgstr ""
 
-#: mod/admin.php:1777
-#, php-format
-msgid "User '%s' blocked"
+#: mod/register.php:221
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
 msgstr ""
 
-#: mod/admin.php:1838
-msgid "Private Forum"
+#: mod/register.php:222
+msgid "Your OpenID (optional): "
 msgstr ""
 
-#: mod/admin.php:1890 mod/admin.php:1901 mod/admin.php:1915 mod/admin.php:1933
-#: src/Content/ContactSelector.php:81
-msgid "Email"
+#: mod/register.php:234
+msgid "Include your profile in member directory?"
 msgstr ""
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Register date"
+#: mod/register.php:261
+msgid "Note for the admin"
 msgstr ""
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Last login"
+#: mod/register.php:261
+msgid "Leave a message for the admin, why you want to join this node"
 msgstr ""
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Last item"
+#: mod/register.php:262
+msgid "Membership on this site is by invitation only."
 msgstr ""
 
-#: mod/admin.php:1890
-msgid "Type"
+#: mod/register.php:263
+msgid "Your invitation code: "
 msgstr ""
 
-#: mod/admin.php:1897
-msgid "Add User"
+#: mod/register.php:272
+msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
 msgstr ""
 
-#: mod/admin.php:1899
-msgid "User registrations waiting for confirm"
+#: mod/register.php:273
+msgid ""
+"Your Email Address: (Initial information will be send there, so this has to "
+"be an existing address.)"
 msgstr ""
 
-#: mod/admin.php:1900
-msgid "User waiting for permanent deletion"
+#: mod/register.php:275 mod/settings.php:1194
+msgid "New Password:"
 msgstr ""
 
-#: mod/admin.php:1901
-msgid "Request date"
+#: mod/register.php:275
+msgid "Leave empty for an auto generated password."
 msgstr ""
 
-#: mod/admin.php:1902
-msgid "No registrations."
+#: mod/register.php:276 mod/settings.php:1195
+msgid "Confirm:"
 msgstr ""
 
-#: mod/admin.php:1903
-msgid "Note from the user"
+#: mod/register.php:277
+#, php-format
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be '<strong>nickname@%s</strong>'."
 msgstr ""
 
-#: mod/admin.php:1905
-msgid "Deny"
+#: mod/register.php:278
+msgid "Choose a nickname: "
 msgstr ""
 
-#: mod/admin.php:1908
-msgid "User blocked"
+#: mod/register.php:281 src/Content/Nav.php:180 src/Module/Login.php:291
+msgid "Register"
 msgstr ""
 
-#: mod/admin.php:1910
-msgid "Site admin"
+#: mod/register.php:287 mod/uimport.php:53
+msgid "Import"
 msgstr ""
 
-#: mod/admin.php:1911
-msgid "Account expired"
+#: mod/register.php:288
+msgid "Import your profile to this friendica instance"
 msgstr ""
 
-#: mod/admin.php:1914
-msgid "New User"
+#: mod/register.php:296
+msgid "Note: This node explicitly contains adult content"
 msgstr ""
 
-#: mod/admin.php:1915
-msgid "Deleted since"
+#: mod/regmod.php:55
+msgid "Account approved."
 msgstr ""
 
-#: mod/admin.php:1920
+#: mod/regmod.php:79
+#, php-format
+msgid "Registration revoked for %s"
+msgstr ""
+
+#: mod/regmod.php:86
+msgid "Please login."
+msgstr ""
+
+#: mod/removeme.php:47
+msgid "User deleted their account"
+msgstr ""
+
+#: mod/removeme.php:48
 msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
+"On your Friendica node an user deleted their account. Please ensure that "
+"their data is removed from the backups."
 msgstr ""
 
-#: mod/admin.php:1921
+#: mod/removeme.php:49
+#, php-format
+msgid "The user id is %d"
+msgstr ""
+
+#: mod/removeme.php:81 mod/removeme.php:84
+msgid "Remove My Account"
+msgstr ""
+
+#: mod/removeme.php:82
 msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
 msgstr ""
 
-#: mod/admin.php:1931
-msgid "Name of the new user."
+#: mod/removeme.php:83
+msgid "Please enter your password for verification:"
 msgstr ""
 
-#: mod/admin.php:1932
-msgid "Nickname"
+#: mod/repair_ostatus.php:21
+msgid "Resubscribing to OStatus contacts"
 msgstr ""
 
-#: mod/admin.php:1932
-msgid "Nickname of the new user."
+#: mod/repair_ostatus.php:37
+msgid "Error"
 msgstr ""
 
-#: mod/admin.php:1933
-msgid "Email address of the new user."
+#: mod/search.php:113
+msgid "Only logged in users are permitted to perform a search."
+msgstr ""
+
+#: mod/search.php:137
+msgid "Too Many Requests"
+msgstr ""
+
+#: mod/search.php:138
+msgid "Only one search per minute is permitted for not logged in users."
 msgstr ""
 
-#: mod/admin.php:1975
+#: mod/search.php:249
 #, php-format
-msgid "Addon %s disabled."
+msgid "Items tagged with: %s"
 msgstr ""
 
-#: mod/admin.php:1979
+#: mod/search.php:251 src/Module/Contact.php:811
 #, php-format
-msgid "Addon %s enabled."
+msgid "Results for: %s"
 msgstr ""
 
-#: mod/admin.php:1989 mod/admin.php:2238
-msgid "Disable"
+#: mod/settings.php:59
+msgid "Account"
 msgstr ""
 
-#: mod/admin.php:1992 mod/admin.php:2241
-msgid "Enable"
+#: mod/settings.php:67 src/Content/Nav.php:262 src/Model/Profile.php:386
+msgid "Profiles"
 msgstr ""
 
-#: mod/admin.php:2014 mod/admin.php:2284
-msgid "Toggle"
+#: mod/settings.php:83
+msgid "Display"
 msgstr ""
 
-#: mod/admin.php:2022 mod/admin.php:2293
-msgid "Author: "
+#: mod/settings.php:90 mod/settings.php:843
+msgid "Social Networks"
 msgstr ""
 
-#: mod/admin.php:2023 mod/admin.php:2294
-msgid "Maintainer: "
+#: mod/settings.php:104 src/Content/Nav.php:257
+msgid "Delegations"
 msgstr ""
 
-#: mod/admin.php:2075
-msgid "Reload active addons"
+#: mod/settings.php:111
+msgid "Connected apps"
 msgstr ""
 
-#: mod/admin.php:2080
-#, php-format
-msgid ""
-"There are currently no addons available on your node. You can find the "
-"official addon repository at %1$s and might find other interesting addons in "
-"the open addon registry at %2$s"
+#: mod/settings.php:125
+msgid "Remove account"
 msgstr ""
 
-#: mod/admin.php:2200
-msgid "No themes found."
+#: mod/settings.php:177
+msgid "Missing some important data!"
 msgstr ""
 
-#: mod/admin.php:2275
-msgid "Screenshot"
+#: mod/settings.php:179 mod/settings.php:704 src/Module/Contact.php:818
+msgid "Update"
 msgstr ""
 
-#: mod/admin.php:2329
-msgid "Reload active themes"
+#: mod/settings.php:288
+msgid "Failed to connect with email account using the settings provided."
 msgstr ""
 
-#: mod/admin.php:2334
-#, php-format
-msgid "No themes found on the system. They should be placed in %1$s"
+#: mod/settings.php:293
+msgid "Email settings updated."
 msgstr ""
 
-#: mod/admin.php:2335
-msgid "[Experimental]"
+#: mod/settings.php:309
+msgid "Features updated"
 msgstr ""
 
-#: mod/admin.php:2336
-msgid "[Unsupported]"
+#: mod/settings.php:382
+msgid "Relocate message has been send to your contacts"
 msgstr ""
 
-#: mod/admin.php:2360
-msgid "Log settings updated."
+#: mod/settings.php:394 src/Model/User.php:421
+msgid "Passwords do not match. Password unchanged."
 msgstr ""
 
-#: mod/admin.php:2393
-msgid "PHP log currently enabled."
+#: mod/settings.php:399
+msgid "Empty passwords are not allowed. Password unchanged."
 msgstr ""
 
-#: mod/admin.php:2395
-msgid "PHP log currently disabled."
+#: mod/settings.php:404 src/Core/Console/NewPassword.php:82
+msgid ""
+"The new password has been exposed in a public data dump, please choose "
+"another."
 msgstr ""
 
-#: mod/admin.php:2404
-msgid "Clear"
+#: mod/settings.php:410
+msgid "Wrong password."
 msgstr ""
 
-#: mod/admin.php:2408
-msgid "Enable Debugging"
+#: mod/settings.php:417 src/Core/Console/NewPassword.php:89
+msgid "Password changed."
 msgstr ""
 
-#: mod/admin.php:2409
-msgid "Log file"
+#: mod/settings.php:419 src/Core/Console/NewPassword.php:86
+msgid "Password update failed. Please try again."
 msgstr ""
 
-#: mod/admin.php:2409
-msgid ""
-"Must be writable by web server. Relative to your Friendica top-level "
-"directory."
+#: mod/settings.php:503
+msgid " Please use a shorter name."
 msgstr ""
 
-#: mod/admin.php:2410
-msgid "Log level"
+#: mod/settings.php:506
+msgid " Name too short."
 msgstr ""
 
-#: mod/admin.php:2412
-msgid "PHP logging"
+#: mod/settings.php:514
+msgid "Wrong Password"
 msgstr ""
 
-#: mod/admin.php:2413
-msgid ""
-"To temporarily enable logging of PHP errors and warnings you can prepend the "
-"following to the index.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."
+#: mod/settings.php:519
+msgid "Invalid email."
 msgstr ""
 
-#: mod/admin.php:2444
-#, php-format
-msgid ""
-"Error trying to open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see "
-"if file %1$s exist and is readable."
+#: mod/settings.php:525
+msgid "Cannot change to that email."
 msgstr ""
 
-#: mod/admin.php:2448
-#, php-format
-msgid ""
-"Couldn't open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see if file "
-"%1$s is readable."
+#: mod/settings.php:575
+msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr ""
 
-#: mod/admin.php:2540
-#, php-format
-msgid "Lock feature %s"
+#: mod/settings.php:578
+msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr ""
 
-#: mod/admin.php:2548
-msgid "Manage Additional Features"
+#: mod/settings.php:618
+msgid "Settings updated."
 msgstr ""
 
-#: mod/openid.php:29
-msgid "OpenID protocol error. No ID returned."
+#: mod/settings.php:677 mod/settings.php:703 mod/settings.php:737
+msgid "Add application"
 msgstr ""
 
-#: mod/openid.php:66
-msgid ""
-"Account not found and OpenID registration is not permitted on this site."
+#: mod/settings.php:681 mod/settings.php:707
+msgid "Consumer Key"
 msgstr ""
 
-#: mod/openid.php:116 src/Module/Login.php:85 src/Module/Login.php:134
-msgid "Login failed."
+#: mod/settings.php:682 mod/settings.php:708
+msgid "Consumer Secret"
 msgstr ""
 
-#: mod/dfrn_request.php:94
-msgid "This introduction has already been accepted."
+#: mod/settings.php:683 mod/settings.php:709
+msgid "Redirect"
 msgstr ""
 
-#: mod/dfrn_request.php:112 mod/dfrn_request.php:353
-msgid "Profile location is not valid or does not contain profile information."
+#: mod/settings.php:684 mod/settings.php:710
+msgid "Icon url"
 msgstr ""
 
-#: mod/dfrn_request.php:116 mod/dfrn_request.php:357
-msgid "Warning: profile location has no identifiable owner name."
+#: mod/settings.php:695
+msgid "You can't edit this application."
 msgstr ""
 
-#: mod/dfrn_request.php:119 mod/dfrn_request.php:360
-msgid "Warning: profile location has no profile photo."
+#: mod/settings.php:736
+msgid "Connected Apps"
 msgstr ""
 
-#: mod/dfrn_request.php:123 mod/dfrn_request.php:364
-#, 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/settings.php:738 src/Object/Post.php:159 src/Object/Post.php:161
+msgid "Edit"
+msgstr ""
 
-#: mod/dfrn_request.php:161
-msgid "Introduction complete."
+#: mod/settings.php:740
+msgid "Client key starts with"
 msgstr ""
 
-#: mod/dfrn_request.php:197
-msgid "Unrecoverable protocol error."
+#: mod/settings.php:741
+msgid "No name"
 msgstr ""
 
-#: mod/dfrn_request.php:224
-msgid "Profile unavailable."
+#: mod/settings.php:742
+msgid "Remove authorization"
+msgstr ""
+
+#: mod/settings.php:753
+msgid "No Addon settings configured"
 msgstr ""
 
-#: mod/dfrn_request.php:246
-#, php-format
-msgid "%s has received too many connection requests today."
+#: mod/settings.php:762
+msgid "Addon Settings"
 msgstr ""
 
-#: mod/dfrn_request.php:247
-msgid "Spam protection measures have been invoked."
+#: mod/settings.php:783
+msgid "Additional Features"
 msgstr ""
 
-#: mod/dfrn_request.php:248
-msgid "Friends are advised to please try again in 24 hours."
+#: mod/settings.php:806 src/Content/ContactSelector.php:84
+msgid "Diaspora"
 msgstr ""
 
-#: mod/dfrn_request.php:274
-msgid "Invalid locator"
+#: mod/settings.php:806 mod/settings.php:807
+msgid "enabled"
 msgstr ""
 
-#: mod/dfrn_request.php:310
-msgid "You have already introduced yourself here."
+#: mod/settings.php:806 mod/settings.php:807
+msgid "disabled"
 msgstr ""
 
-#: mod/dfrn_request.php:313
+#: mod/settings.php:806 mod/settings.php:807
 #, php-format
-msgid "Apparently you are already friends with %s."
+msgid "Built-in support for %s connectivity is %s"
 msgstr ""
 
-#: mod/dfrn_request.php:333
-msgid "Invalid profile URL."
+#: mod/settings.php:807
+msgid "GNU Social (OStatus)"
 msgstr ""
 
-#: mod/dfrn_request.php:339 src/Model/Contact.php:1588
-msgid "Disallowed profile URL."
+#: mod/settings.php:838
+msgid "Email access is disabled on this site."
 msgstr ""
 
-#: mod/dfrn_request.php:412 mod/contact.php:241
-msgid "Failed to update contact record."
+#: mod/settings.php:848
+msgid "General Social Media Settings"
 msgstr ""
 
-#: mod/dfrn_request.php:432
-msgid "Your introduction has been sent."
+#: mod/settings.php:849
+msgid "Disable Content Warning"
 msgstr ""
 
-#: mod/dfrn_request.php:470
+#: mod/settings.php:849
 msgid ""
-"Remote subscription can't be done for your network. Please subscribe "
-"directly on your system."
+"Users on networks like Mastodon or Pleroma are able to set a content warning "
+"field which collapse their post by default. This disables the automatic "
+"collapsing and sets the content warning as the post title. Doesn't affect "
+"any other content filtering you eventually set up."
 msgstr ""
 
-#: mod/dfrn_request.php:486
-msgid "Please login to confirm introduction."
+#: mod/settings.php:850
+msgid "Disable intelligent shortening"
 msgstr ""
 
-#: mod/dfrn_request.php:494
+#: mod/settings.php:850
 msgid ""
-"Incorrect identity currently logged in. Please login to <strong>this</"
-"strong> profile."
+"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/dfrn_request.php:508 mod/dfrn_request.php:525
-msgid "Confirm"
+#: mod/settings.php:851
+msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
 msgstr ""
 
-#: mod/dfrn_request.php:520
-msgid "Hide this contact"
+#: mod/settings.php:851
+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/dfrn_request.php:523
-#, php-format
-msgid "Welcome home %s."
+#: mod/settings.php:852
+msgid "Default group for OStatus contacts"
 msgstr ""
 
-#: mod/dfrn_request.php:524
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
+#: mod/settings.php:853
+msgid "Your legacy GNU Social account"
 msgstr ""
 
-#: mod/dfrn_request.php:634
+#: mod/settings.php:853
 msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
+"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/dfrn_request.php:637
-#, php-format
-msgid ""
-"If you are not yet a member of the free social web, <a href=\"%s\">follow "
-"this link to find a public Friendica site and join us today</a>."
+#: mod/settings.php:856
+msgid "Repair OStatus subscriptions"
 msgstr ""
 
-#: mod/dfrn_request.php:642
-msgid "Friend/Connection Request"
+#: mod/settings.php:860
+msgid "Email/Mailbox Setup"
 msgstr ""
 
-#: mod/dfrn_request.php:643
+#: mod/settings.php:861
 msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@gnusocial.de"
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
 msgstr ""
 
-#: mod/dfrn_request.php:644 mod/follow.php:149
-msgid "Please answer the following:"
+#: mod/settings.php:862
+msgid "Last successful email check:"
 msgstr ""
 
-#: mod/dfrn_request.php:645 mod/follow.php:150
-#, php-format
-msgid "Does %s know you?"
+#: mod/settings.php:864
+msgid "IMAP server name:"
 msgstr ""
 
-#: mod/dfrn_request.php:646 mod/follow.php:151
-msgid "Add a personal note:"
+#: mod/settings.php:865
+msgid "IMAP port:"
 msgstr ""
 
-#: mod/dfrn_request.php:648 src/Content/ContactSelector.php:78
-msgid "Friendica"
+#: mod/settings.php:866
+msgid "Security:"
 msgstr ""
 
-#: mod/dfrn_request.php:649
-msgid "GNU Social (Pleroma, Mastodon)"
+#: mod/settings.php:866 mod/settings.php:871
+msgid "None"
 msgstr ""
 
-#: mod/dfrn_request.php:650
-msgid "Diaspora (Socialhome, Hubzilla)"
+#: mod/settings.php:867
+msgid "Email login name:"
 msgstr ""
 
-#: mod/dfrn_request.php:651
-#, php-format
-msgid ""
-" - please do not use this form.  Instead, enter %s into your Diaspora search "
-"bar."
+#: mod/settings.php:868
+msgid "Email password:"
 msgstr ""
 
-#: mod/api.php:85 mod/api.php:107
-msgid "Authorize application connection"
+#: mod/settings.php:869
+msgid "Reply-to address:"
 msgstr ""
 
-#: mod/api.php:86
-msgid "Return to your app and insert this Securty Code:"
+#: mod/settings.php:870
+msgid "Send public posts to all email contacts:"
 msgstr ""
 
-#: mod/api.php:95
-msgid "Please login to continue."
+#: mod/settings.php:871
+msgid "Action after import:"
 msgstr ""
 
-#: mod/api.php:109
-msgid ""
-"Do you want to authorize this application to access your posts and contacts, "
-"and/or create new posts for you?"
+#: mod/settings.php:871 src/Content/Nav.php:245
+msgid "Mark as seen"
 msgstr ""
 
-#: mod/profile_photo.php:55
-msgid "Image uploaded but image cropping failed."
+#: mod/settings.php:871
+msgid "Move to folder"
 msgstr ""
 
-#: mod/profile_photo.php:87 mod/profile_photo.php:96 mod/profile_photo.php:105
-#: mod/profile_photo.php:313
-#, php-format
-msgid "Image size reduction [%s] failed."
+#: mod/settings.php:872
+msgid "Move to folder:"
 msgstr ""
 
-#: mod/profile_photo.php:124
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
+#: mod/settings.php:915
+#, php-format
+msgid "%s - (Unsupported)"
 msgstr ""
 
-#: mod/profile_photo.php:132
-msgid "Unable to process image"
+#: mod/settings.php:917
+#, php-format
+msgid "%s - (Experimental)"
 msgstr ""
 
-#: mod/profile_photo.php:244
-msgid "Upload File:"
+#: mod/settings.php:960
+msgid "Display Settings"
 msgstr ""
 
-#: mod/profile_photo.php:245
-msgid "Select a profile:"
+#: mod/settings.php:966
+msgid "Display Theme:"
 msgstr ""
 
-#: mod/profile_photo.php:247 mod/fbrowser.php:106 mod/fbrowser.php:137
-msgid "Upload"
+#: mod/settings.php:967
+msgid "Mobile Theme:"
 msgstr ""
 
-#: mod/profile_photo.php:250
-msgid "or"
+#: mod/settings.php:968
+msgid "Suppress warning of insecure networks"
 msgstr ""
 
-#: mod/profile_photo.php:251
-msgid "skip this step"
+#: mod/settings.php:968
+msgid ""
+"Should the system suppress the warning that the current group contains "
+"members of networks that can't receive non public postings."
 msgstr ""
 
-#: mod/profile_photo.php:251
-msgid "select a photo from your photo albums"
+#: mod/settings.php:969
+msgid "Update browser every xx seconds"
 msgstr ""
 
-#: mod/profile_photo.php:264
-msgid "Crop Image"
+#: mod/settings.php:969
+msgid "Minimum of 10 seconds. Enter -1 to disable it."
 msgstr ""
 
-#: mod/profile_photo.php:265
-msgid "Please adjust the image cropping for optimum viewing."
+#: mod/settings.php:970
+msgid "Number of items to display per page:"
 msgstr ""
 
-#: mod/profile_photo.php:267
-msgid "Done Editing"
+#: mod/settings.php:970 mod/settings.php:971
+msgid "Maximum of 100 items"
 msgstr ""
 
-#: mod/profile_photo.php:303
-msgid "Image uploaded successfully."
+#: mod/settings.php:971
+msgid "Number of items to display per page when viewed from mobile device:"
 msgstr ""
 
-#: mod/wall_attach.php:107
-msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
+#: mod/settings.php:972
+msgid "Don't show emoticons"
 msgstr ""
 
-#: mod/wall_attach.php:107
-msgid "Or - did you try to upload an empty file?"
+#: mod/settings.php:973
+msgid "Calendar"
 msgstr ""
 
-#: mod/wall_attach.php:118
-#, php-format
-msgid "File exceeds size limit of %s"
+#: mod/settings.php:974
+msgid "Beginning of week:"
 msgstr ""
 
-#: mod/wall_attach.php:142 mod/wall_attach.php:158
-msgid "File upload failed."
+#: mod/settings.php:975
+msgid "Don't show notices"
 msgstr ""
 
-#: mod/item.php:117
-msgid "Unable to locate original post."
+#: mod/settings.php:976
+msgid "Infinite scroll"
 msgstr ""
 
-#: mod/item.php:285
-msgid "Empty post discarded."
+#: mod/settings.php:977
+msgid "Automatic updates only at the top of the network page"
 msgstr ""
 
-#: mod/item.php:809
-#, php-format
+#: mod/settings.php:977
 msgid ""
-"This message was sent to you by %s, a member of the Friendica social network."
+"When disabled, the network page is updated all the time, which could be "
+"confusing while reading."
 msgstr ""
 
-#: mod/item.php:811
-#, php-format
-msgid "You may visit them online at %s"
+#: mod/settings.php:978
+msgid "Bandwidth Saver Mode"
 msgstr ""
 
-#: mod/item.php:812
+#: mod/settings.php:978
 msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr ""
-
-#: mod/item.php:816
-#, php-format
-msgid "%s posted an update."
-msgstr ""
-
-#: mod/help.php:49
-msgid "Help:"
+"When enabled, embedded content is not displayed on automatic updates, they "
+"only show on page reload."
 msgstr ""
 
-#: mod/uimport.php:28
-msgid "User imports on closed servers can only be done by an administrator."
+#: mod/settings.php:979
+msgid "Smart Threading"
 msgstr ""
 
-#: mod/uimport.php:54
-msgid "Move account"
+#: mod/settings.php:979
+msgid ""
+"When enabled, suppress extraneous thread indentation while keeping it where "
+"it matters. Only works if threading is available and enabled."
 msgstr ""
 
-#: mod/uimport.php:55
-msgid "You can import an account from another Friendica server."
+#: mod/settings.php:981
+msgid "General Theme Settings"
 msgstr ""
 
-#: mod/uimport.php:56
-msgid ""
-"You need to export your account from the old server and upload it here. We "
-"will recreate your old account here with all your contacts. We will try also "
-"to inform your friends that you moved here."
+#: mod/settings.php:982
+msgid "Custom Theme Settings"
 msgstr ""
 
-#: mod/uimport.php:57
-msgid ""
-"This feature is experimental. We can't import contacts from the OStatus "
-"network (GNU Social/Statusnet) or from Diaspora"
+#: mod/settings.php:983
+msgid "Content Settings"
 msgstr ""
 
-#: mod/uimport.php:58
-msgid "Account file"
+#: mod/settings.php:984 view/theme/duepuntozero/config.php:73
+#: view/theme/frio/config.php:120 view/theme/quattro/config.php:75
+#: view/theme/vier/config.php:121
+msgid "Theme settings"
 msgstr ""
 
-#: mod/uimport.php:58
-msgid ""
-"To export your account, go to \"Settings->Export your personal data\" and "
-"select \"Export account\""
+#: mod/settings.php:998
+msgid "Unable to find your profile. Please contact your admin."
 msgstr ""
 
-#: mod/profperm.php:35 mod/profperm.php:68
-msgid "Invalid profile identifier."
+#: mod/settings.php:1037
+msgid "Account Types"
 msgstr ""
 
-#: mod/profperm.php:114
-msgid "Profile Visibility Editor"
+#: mod/settings.php:1038
+msgid "Personal Page Subtypes"
 msgstr ""
 
-#: mod/profperm.php:127
-msgid "Visible To"
+#: mod/settings.php:1039
+msgid "Community Forum Subtypes"
 msgstr ""
 
-#: mod/profperm.php:143
-msgid "All Contacts (with secure profile access)"
+#: mod/settings.php:1047
+msgid "Account for a personal profile."
 msgstr ""
 
-#: mod/cal.php:277 mod/events.php:392
-msgid "View"
+#: mod/settings.php:1051
+msgid ""
+"Account for an organisation that automatically approves contact requests as "
+"\"Followers\"."
 msgstr ""
 
-#: mod/cal.php:278 mod/events.php:394
-msgid "Previous"
+#: mod/settings.php:1055
+msgid ""
+"Account for a news reflector that automatically approves contact requests as "
+"\"Followers\"."
 msgstr ""
 
-#: mod/cal.php:282 mod/events.php:400 src/Model/Event.php:422
-msgid "today"
+#: mod/settings.php:1059
+msgid "Account for community discussions."
 msgstr ""
 
-#: mod/cal.php:283 mod/events.php:401 src/Util/Temporal.php:304
-#: src/Model/Event.php:423
-msgid "month"
+#: mod/settings.php:1063
+msgid ""
+"Account for a regular personal profile that requires manual approval of "
+"\"Friends\" and \"Followers\"."
 msgstr ""
 
-#: mod/cal.php:284 mod/events.php:402 src/Util/Temporal.php:305
-#: src/Model/Event.php:424
-msgid "week"
+#: mod/settings.php:1067
+msgid ""
+"Account for a public profile that automatically approves contact requests as "
+"\"Followers\"."
 msgstr ""
 
-#: mod/cal.php:285 mod/events.php:403 src/Util/Temporal.php:306
-#: src/Model/Event.php:425
-msgid "day"
+#: mod/settings.php:1071
+msgid "Automatically approves all contact requests."
 msgstr ""
 
-#: mod/cal.php:286 mod/events.php:404
-msgid "list"
+#: mod/settings.php:1075
+msgid ""
+"Account for a popular profile that automatically approves contact requests "
+"as \"Friends\"."
 msgstr ""
 
-#: mod/cal.php:299 src/Core/Console/NewPassword.php:68 src/Model/User.php:221
-msgid "User not found"
+#: mod/settings.php:1078
+msgid "Private Forum [Experimental]"
 msgstr ""
 
-#: mod/cal.php:315
-msgid "This calendar format is not supported"
+#: mod/settings.php:1079
+msgid "Requires manual approval of contact requests."
 msgstr ""
 
-#: mod/cal.php:317
-msgid "No exportable data found"
+#: mod/settings.php:1090
+msgid "OpenID:"
 msgstr ""
 
-#: mod/cal.php:334
-msgid "calendar"
+#: mod/settings.php:1090
+msgid "(Optional) Allow this OpenID to login to this account."
 msgstr ""
 
-#: mod/regmod.php:70
-msgid "Account approved."
+#: mod/settings.php:1098
+msgid "Publish your default profile in your local site directory?"
 msgstr ""
 
-#: mod/regmod.php:95
+#: mod/settings.php:1098
 #, php-format
-msgid "Registration revoked for %s"
-msgstr ""
-
-#: mod/regmod.php:102
-msgid "Please login."
+msgid ""
+"Your profile will be published in this node's <a href=\"%s\">local "
+"directory</a>. Your profile details may be publicly visible depending on the "
+"system settings."
 msgstr ""
 
-#: mod/editpost.php:27 mod/editpost.php:42
-msgid "Item not found"
+#: mod/settings.php:1104
+msgid "Publish your default profile in the global social directory?"
 msgstr ""
 
-#: mod/editpost.php:49
-msgid "Edit post"
+#: mod/settings.php:1104
+#, php-format
+msgid ""
+"Your profile will be published in the global friendica directories (e.g. <a "
+"href=\"%s\">%s</a>). Your profile will be visible in public."
 msgstr ""
 
-#: mod/editpost.php:131 src/Core/ACL.php:304
-msgid "CC: email addresses"
+#: mod/settings.php:1111
+msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr ""
 
-#: mod/editpost.php:138 src/Core/ACL.php:305
-msgid "Example: bob@example.com, mary@example.com"
+#: mod/settings.php:1111
+msgid ""
+"Your contact list won't be shown in your default profile page. You can "
+"decide to show your contact list separately for each additional profile you "
+"create"
 msgstr ""
 
-#: mod/apps.php:19
-msgid "Applications"
+#: mod/settings.php:1115
+msgid "Hide your profile details from anonymous viewers?"
 msgstr ""
 
-#: mod/apps.php:22
-msgid "No installed applications."
+#: mod/settings.php:1115
+msgid ""
+"Anonymous visitors will only see your profile picture, your display name and "
+"the nickname you are using on your profile page. Your public posts and "
+"replies will still be accessible by other means."
 msgstr ""
 
-#: mod/feedtest.php:21
-msgid "You must be logged in to use this module"
+#: mod/settings.php:1119
+msgid "Allow friends to post to your profile page?"
 msgstr ""
 
-#: mod/feedtest.php:49
-msgid "Source URL"
+#: mod/settings.php:1119
+msgid ""
+"Your contacts may write posts on your profile wall. These posts will be "
+"distributed to your contacts"
 msgstr ""
 
-#: mod/fsuggest.php:72
-msgid "Friend suggestion sent."
+#: mod/settings.php:1123
+msgid "Allow friends to tag your posts?"
 msgstr ""
 
-#: mod/fsuggest.php:101
-msgid "Suggest Friends"
+#: mod/settings.php:1123
+msgid "Your contacts can add additional tags to your posts."
 msgstr ""
 
-#: mod/fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
+#: mod/settings.php:1127
+msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr ""
 
-#: mod/maintenance.php:24
-msgid "System down for maintenance"
+#: mod/settings.php:1127
+msgid "If you like, Friendica may suggest new members to add you as a contact."
 msgstr ""
 
-#: mod/profile.php:39 src/Model/Profile.php:128
-msgid "Requested profile is not available."
+#: mod/settings.php:1131
+msgid "Permit unknown people to send you private mail?"
 msgstr ""
 
-#: mod/profile.php:89 mod/profile.php:92 src/Protocol/OStatus.php:1285
-#, php-format
-msgid "%s's timeline"
+#: mod/settings.php:1131
+msgid ""
+"Friendica network users may send you private messages even if they are not "
+"in your contact list."
 msgstr ""
 
-#: mod/profile.php:90 src/Protocol/OStatus.php:1286
-#, php-format
-msgid "%s's posts"
+#: mod/settings.php:1135
+msgid "Profile is <strong>not published</strong>."
 msgstr ""
 
-#: mod/profile.php:91 src/Protocol/OStatus.php:1287
+#: mod/settings.php:1141
 #, php-format
-msgid "%s's comments"
+msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr ""
 
-#: mod/allfriends.php:53
-msgid "No friends to display."
+#: mod/settings.php:1148
+msgid "Automatically expire posts after this many days:"
 msgstr ""
 
-#: mod/contact.php:168
-#, php-format
-msgid "%d contact edited."
-msgid_plural "%d contacts edited."
-msgstr[0] ""
-msgstr[1] ""
-
-#: mod/contact.php:195 mod/contact.php:401
-msgid "Could not access contact record."
+#: mod/settings.php:1148
+msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr ""
 
-#: mod/contact.php:205
-msgid "Could not locate selected profile."
+#: mod/settings.php:1149
+msgid "Advanced expiration settings"
 msgstr ""
 
-#: mod/contact.php:239
-msgid "Contact updated."
+#: mod/settings.php:1150
+msgid "Advanced Expiration"
 msgstr ""
 
-#: mod/contact.php:422
-msgid "Contact has been blocked"
+#: mod/settings.php:1151
+msgid "Expire posts:"
 msgstr ""
 
-#: mod/contact.php:422
-msgid "Contact has been unblocked"
+#: mod/settings.php:1152
+msgid "Expire personal notes:"
 msgstr ""
 
-#: mod/contact.php:432
-msgid "Contact has been ignored"
+#: mod/settings.php:1153
+msgid "Expire starred posts:"
 msgstr ""
 
-#: mod/contact.php:432
-msgid "Contact has been unignored"
+#: mod/settings.php:1154
+msgid "Expire photos:"
 msgstr ""
 
-#: mod/contact.php:442
-msgid "Contact has been archived"
+#: mod/settings.php:1155
+msgid "Only expire posts by others:"
 msgstr ""
 
-#: mod/contact.php:442
-msgid "Contact has been unarchived"
+#: mod/settings.php:1185
+msgid "Account Settings"
 msgstr ""
 
-#: mod/contact.php:466
-msgid "Drop contact"
+#: mod/settings.php:1193
+msgid "Password Settings"
 msgstr ""
 
-#: mod/contact.php:469 mod/contact.php:848
-msgid "Do you really want to delete this contact?"
+#: mod/settings.php:1195
+msgid "Leave password fields blank unless changing"
 msgstr ""
 
-#: mod/contact.php:487
-msgid "Contact has been removed."
+#: mod/settings.php:1196
+msgid "Current Password:"
 msgstr ""
 
-#: mod/contact.php:524
-#, php-format
-msgid "You are mutual friends with %s"
+#: mod/settings.php:1196 mod/settings.php:1197
+msgid "Your current password to confirm the changes"
 msgstr ""
 
-#: mod/contact.php:529
-#, php-format
-msgid "You are sharing with %s"
+#: mod/settings.php:1197
+msgid "Password:"
 msgstr ""
 
-#: mod/contact.php:534
-#, php-format
-msgid "%s is sharing with you"
+#: mod/settings.php:1201
+msgid "Basic Settings"
 msgstr ""
 
-#: mod/contact.php:558
-msgid "Private communications are not available for this contact."
+#: mod/settings.php:1202 src/Model/Profile.php:739
+msgid "Full Name:"
 msgstr ""
 
-#: mod/contact.php:560
-msgid "Never"
+#: mod/settings.php:1203
+msgid "Email Address:"
 msgstr ""
 
-#: mod/contact.php:563
-msgid "(Update was successful)"
+#: mod/settings.php:1204
+msgid "Your Timezone:"
 msgstr ""
 
-#: mod/contact.php:563
-msgid "(Update was not successful)"
+#: mod/settings.php:1205
+msgid "Your Language:"
 msgstr ""
 
-#: mod/contact.php:565 mod/contact.php:1089
-msgid "Suggest friends"
+#: mod/settings.php:1205
+msgid ""
+"Set the language we use to show you friendica interface and to send you "
+"emails"
 msgstr ""
 
-#: mod/contact.php:569
-#, php-format
-msgid "Network type: %s"
+#: mod/settings.php:1206
+msgid "Default Post Location:"
 msgstr ""
 
-#: mod/contact.php:574
-msgid "Communications lost with this contact!"
+#: mod/settings.php:1207
+msgid "Use Browser Location:"
 msgstr ""
 
-#: mod/contact.php:580
-msgid "Fetch further information for feeds"
+#: mod/settings.php:1210
+msgid "Security and Privacy Settings"
 msgstr ""
 
-#: mod/contact.php:582
-msgid ""
-"Fetch information like preview pictures, title and teaser from the feed "
-"item. You can activate this if the feed doesn't contain much text. Keywords "
-"are taken from the meta header in the feed item and are posted as hash tags."
+#: mod/settings.php:1212
+msgid "Maximum Friend Requests/Day:"
 msgstr ""
 
-#: mod/contact.php:584
-msgid "Fetch information"
+#: mod/settings.php:1212 mod/settings.php:1241
+msgid "(to prevent spam abuse)"
 msgstr ""
 
-#: mod/contact.php:585
-msgid "Fetch keywords"
+#: mod/settings.php:1213
+msgid "Default Post Permissions"
 msgstr ""
 
-#: mod/contact.php:586
-msgid "Fetch information and keywords"
+#: mod/settings.php:1214
+msgid "(click to open/close)"
 msgstr ""
 
-#: mod/contact.php:618
-msgid "Profile Visibility"
+#: mod/settings.php:1224
+msgid "Default Private Post"
 msgstr ""
 
-#: mod/contact.php:619
-msgid "Contact Information / Notes"
+#: mod/settings.php:1225
+msgid "Default Public Post"
 msgstr ""
 
-#: mod/contact.php:620
-msgid "Contact Settings"
+#: mod/settings.php:1229
+msgid "Default Permissions for New Posts"
 msgstr ""
 
-#: mod/contact.php:629
-msgid "Contact"
+#: mod/settings.php:1241
+msgid "Maximum private messages per day from unknown people:"
 msgstr ""
 
-#: mod/contact.php:633
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
+#: mod/settings.php:1244
+msgid "Notification Settings"
 msgstr ""
 
-#: mod/contact.php:635
-msgid "Their personal note"
+#: mod/settings.php:1245
+msgid "Send a notification email when:"
 msgstr ""
 
-#: mod/contact.php:637
-msgid "Edit contact notes"
+#: mod/settings.php:1246
+msgid "You receive an introduction"
 msgstr ""
 
-#: mod/contact.php:641
-msgid "Block/Unblock contact"
+#: mod/settings.php:1247
+msgid "Your introductions are confirmed"
 msgstr ""
 
-#: mod/contact.php:642
-msgid "Ignore contact"
+#: mod/settings.php:1248
+msgid "Someone writes on your profile wall"
 msgstr ""
 
-#: mod/contact.php:643
-msgid "Repair URL settings"
+#: mod/settings.php:1249
+msgid "Someone writes a followup comment"
 msgstr ""
 
-#: mod/contact.php:644
-msgid "View conversations"
+#: mod/settings.php:1250
+msgid "You receive a private message"
 msgstr ""
 
-#: mod/contact.php:649
-msgid "Last update:"
+#: mod/settings.php:1251
+msgid "You receive a friend suggestion"
 msgstr ""
 
-#: mod/contact.php:651
-msgid "Update public posts"
+#: mod/settings.php:1252
+msgid "You are tagged in a post"
 msgstr ""
 
-#: mod/contact.php:653 mod/contact.php:1099
-msgid "Update now"
+#: mod/settings.php:1253
+msgid "You are poked/prodded/etc. in a post"
 msgstr ""
 
-#: mod/contact.php:659 mod/contact.php:853 mod/contact.php:1116
-msgid "Unignore"
+#: mod/settings.php:1255
+msgid "Activate desktop notifications"
 msgstr ""
 
-#: mod/contact.php:663
-msgid "Currently blocked"
+#: mod/settings.php:1255
+msgid "Show desktop popup on new notifications"
 msgstr ""
 
-#: mod/contact.php:664
-msgid "Currently ignored"
+#: mod/settings.php:1257
+msgid "Text-only notification emails"
 msgstr ""
 
-#: mod/contact.php:665
-msgid "Currently archived"
+#: mod/settings.php:1259
+msgid "Send text only notification emails, without the html part"
 msgstr ""
 
-#: mod/contact.php:666
-msgid "Awaiting connection acknowledge"
+#: mod/settings.php:1261
+msgid "Show detailled notifications"
 msgstr ""
 
-#: mod/contact.php:667
+#: mod/settings.php:1263
 msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
+"Per default, notifications are condensed to a single notification per item. "
+"When enabled every notification is displayed."
 msgstr ""
 
-#: mod/contact.php:668
-msgid "Notification for new posts"
+#: mod/settings.php:1265
+msgid "Advanced Account/Page Type Settings"
 msgstr ""
 
-#: mod/contact.php:668
-msgid "Send a notification of every new post of this contact"
+#: mod/settings.php:1266
+msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
-#: mod/contact.php:671
-msgid "Blacklisted keywords"
+#: mod/settings.php:1269
+msgid "Relocate"
 msgstr ""
 
-#: mod/contact.php:671
+#: mod/settings.php:1270
 msgid ""
-"Comma separated list of keywords that should not be converted to hashtags, "
-"when \"Fetch information and keywords\" is selected"
+"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/contact.php:683 src/Model/Profile.php:437
-msgid "XMPP:"
+#: mod/settings.php:1271
+msgid "Resend relocate message to contacts"
 msgstr ""
 
-#: mod/contact.php:688
-msgid "Actions"
+#: mod/subthread.php:104
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
 msgstr ""
 
-#: mod/contact.php:734
-msgid "Suggestions"
+#: mod/suggest.php:38
+msgid "Do you really want to delete this suggestion?"
+msgstr ""
+
+#: mod/suggest.php:74
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
 msgstr ""
 
-#: mod/contact.php:737
-msgid "Suggest potential friends"
+#: mod/suggest.php:87 mod/suggest.php:107
+msgid "Ignore/Hide"
 msgstr ""
 
-#: mod/contact.php:745
-msgid "Show all contacts"
+#: mod/suggest.php:117 view/theme/vier/theme.php:202 src/Content/Widget.php:64
+msgid "Friend Suggestions"
 msgstr ""
 
-#: mod/contact.php:750
-msgid "Unblocked"
+#: mod/tagrm.php:30
+msgid "Tag(s) removed"
 msgstr ""
 
-#: mod/contact.php:753
-msgid "Only show unblocked contacts"
+#: mod/tagrm.php:98
+msgid "Remove Item Tag"
 msgstr ""
 
-#: mod/contact.php:758
-msgid "Blocked"
+#: mod/tagrm.php:100
+msgid "Select a tag to remove: "
 msgstr ""
 
-#: mod/contact.php:761
-msgid "Only show blocked contacts"
+#: mod/uimport.php:29
+msgid "User imports on closed servers can only be done by an administrator."
 msgstr ""
 
-#: mod/contact.php:766
-msgid "Ignored"
+#: mod/uimport.php:55
+msgid "Move account"
 msgstr ""
 
-#: mod/contact.php:769
-msgid "Only show ignored contacts"
+#: mod/uimport.php:56
+msgid "You can import an account from another Friendica server."
 msgstr ""
 
-#: mod/contact.php:774
-msgid "Archived"
+#: mod/uimport.php:57
+msgid ""
+"You need to export your account from the old server and upload it here. We "
+"will recreate your old account here with all your contacts. We will try also "
+"to inform your friends that you moved here."
 msgstr ""
 
-#: mod/contact.php:777
-msgid "Only show archived contacts"
+#: mod/uimport.php:58
+msgid ""
+"This feature is experimental. We can't import contacts from the OStatus "
+"network (GNU Social/Statusnet) or from Diaspora"
 msgstr ""
 
-#: mod/contact.php:782
-msgid "Hidden"
+#: mod/uimport.php:59
+msgid "Account file"
 msgstr ""
 
-#: mod/contact.php:785
-msgid "Only show hidden contacts"
+#: mod/uimport.php:59
+msgid ""
+"To export your account, go to \"Settings->Export your personal data\" and "
+"select \"Export account\""
 msgstr ""
 
-#: mod/contact.php:843
-msgid "Search your contacts"
+#: mod/unfollow.php:34 mod/unfollow.php:90
+msgid "You aren't following this contact."
 msgstr ""
 
-#: mod/contact.php:854 mod/contact.php:1125
-msgid "Archive"
+#: mod/unfollow.php:44 mod/unfollow.php:96
+msgid "Unfollowing is currently not supported by your network."
 msgstr ""
 
-#: mod/contact.php:854 mod/contact.php:1125
-msgid "Unarchive"
+#: mod/unfollow.php:65
+msgid "Contact unfollowed"
 msgstr ""
 
-#: mod/contact.php:857
-msgid "Batch Actions"
+#: mod/unfollow.php:115 src/Module/Contact.php:574
+msgid "Disconnect/Unfollow"
 msgstr ""
 
-#: mod/contact.php:883
-msgid "Conversations started by this contact"
+#: mod/videos.php:133
+msgid "Do you really want to delete this video?"
 msgstr ""
 
-#: mod/contact.php:888
-msgid "Posts and Comments"
+#: mod/videos.php:138
+msgid "Delete Video"
 msgstr ""
 
-#: mod/contact.php:899 src/Model/Profile.php:899
-msgid "Profile Details"
+#: mod/videos.php:200
+msgid "No videos selected"
 msgstr ""
 
-#: mod/contact.php:911
-msgid "View all contacts"
+#: mod/videos.php:386
+msgid "Recent Videos"
 msgstr ""
 
-#: mod/contact.php:922
-msgid "View all common friends"
+#: mod/videos.php:388
+msgid "Upload New Videos"
 msgstr ""
 
-#: mod/contact.php:932
-msgid "Advanced Contact Settings"
+#: mod/viewcontacts.php:94
+msgid "No contacts."
 msgstr ""
 
-#: mod/contact.php:1022
-msgid "Mutual Friendship"
+#: mod/viewcontacts.php:110 src/Module/Contact.php:607
+#: src/Module/Contact.php:1019
+#, php-format
+msgid "Visit %s's profile [%s]"
 msgstr ""
 
-#: mod/contact.php:1027
-msgid "is a fan of yours"
+#: mod/wall_attach.php:27 mod/wall_attach.php:34 mod/wall_attach.php:89
+#: mod/wall_upload.php:40 mod/wall_upload.php:56 mod/wall_upload.php:114
+#: mod/wall_upload.php:165 mod/wall_upload.php:168
+msgid "Invalid request."
 msgstr ""
 
-#: mod/contact.php:1032
-msgid "you are a fan of"
+#: mod/wall_attach.php:107
+msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
 msgstr ""
 
-#: mod/contact.php:1049 mod/photos.php:1496 mod/photos.php:1535
-#: mod/photos.php:1595 src/Object/Post.php:792
-msgid "This is you"
+#: mod/wall_attach.php:107
+msgid "Or - did you try to upload an empty file?"
 msgstr ""
 
-#: mod/contact.php:1056
-msgid "Edit contact"
+#: mod/wall_attach.php:118
+#, php-format
+msgid "File exceeds size limit of %s"
 msgstr ""
 
-#: mod/contact.php:1110
-msgid "Toggle Blocked status"
+#: mod/wall_attach.php:142 mod/wall_attach.php:158
+msgid "File upload failed."
 msgstr ""
 
-#: mod/contact.php:1118
-msgid "Toggle Ignored status"
+#: mod/wallmessage.php:50 mod/wallmessage.php:113
+#, php-format
+msgid "Number of daily wall messages for %s exceeded. Message failed."
 msgstr ""
 
-#: mod/contact.php:1127
-msgid "Toggle Archive status"
+#: mod/wallmessage.php:61
+msgid "Unable to check your home location."
 msgstr ""
 
-#: mod/contact.php:1135
-msgid "Delete contact"
+#: mod/wallmessage.php:87 mod/wallmessage.php:96
+msgid "No recipient."
 msgstr ""
 
-#: mod/events.php:105 mod/events.php:107
-msgid "Event can not end before it has started."
+#: mod/wallmessage.php:127
+#, php-format
+msgid ""
+"If you wish for %s to respond, please check that the privacy settings on "
+"your site allow private mail from unknown senders."
 msgstr ""
 
-#: mod/events.php:114 mod/events.php:116
-msgid "Event title and start time are required."
+#: view/theme/duepuntozero/config.php:54 src/Model/User.php:599
+msgid "default"
 msgstr ""
 
-#: mod/events.php:393
-msgid "Create New Event"
+#: view/theme/duepuntozero/config.php:55
+msgid "greenzero"
 msgstr ""
 
-#: mod/events.php:516
-msgid "Event details"
+#: view/theme/duepuntozero/config.php:56
+msgid "purplezero"
 msgstr ""
 
-#: mod/events.php:517
-msgid "Starting date and Title are required."
+#: view/theme/duepuntozero/config.php:57
+msgid "easterbunny"
 msgstr ""
 
-#: mod/events.php:518 mod/events.php:523
-msgid "Event Starts:"
+#: view/theme/duepuntozero/config.php:58
+msgid "darkzero"
 msgstr ""
 
-#: mod/events.php:518 mod/events.php:550 mod/profiles.php:607
-msgid "Required"
+#: view/theme/duepuntozero/config.php:59
+msgid "comix"
 msgstr ""
 
-#: mod/events.php:531 mod/events.php:556
-msgid "Finish date/time is not known or not relevant"
+#: view/theme/duepuntozero/config.php:60
+msgid "slackr"
 msgstr ""
 
-#: mod/events.php:533 mod/events.php:538
-msgid "Event Finishes:"
+#: view/theme/duepuntozero/config.php:74
+msgid "Variations"
 msgstr ""
 
-#: mod/events.php:544 mod/events.php:557
-msgid "Adjust for viewer timezone"
+#: view/theme/frio/php/Image.php:24
+msgid "Top Banner"
 msgstr ""
 
-#: mod/events.php:546
-msgid "Description:"
+#: view/theme/frio/php/Image.php:24
+msgid ""
+"Resize image to the width of the screen and show background color below on "
+"long pages."
 msgstr ""
 
-#: mod/events.php:550 mod/events.php:552
-msgid "Title:"
+#: view/theme/frio/php/Image.php:25
+msgid "Full screen"
 msgstr ""
 
-#: mod/events.php:553 mod/events.php:554
-msgid "Share this event"
+#: view/theme/frio/php/Image.php:25
+msgid ""
+"Resize image to fill entire screen, clipping either the right or the bottom."
 msgstr ""
 
-#: mod/events.php:561 src/Model/Profile.php:864
-msgid "Basic"
+#: view/theme/frio/php/Image.php:26
+msgid "Single row mosaic"
 msgstr ""
 
-#: mod/events.php:563 mod/photos.php:1114 mod/photos.php:1450
-#: src/Core/ACL.php:307
-msgid "Permissions"
+#: view/theme/frio/php/Image.php:26
+msgid ""
+"Resize image to repeat it on a single row, either vertical or horizontal."
 msgstr ""
 
-#: mod/events.php:579
-msgid "Failed to remove event"
+#: view/theme/frio/php/Image.php:27
+msgid "Mosaic"
 msgstr ""
 
-#: mod/events.php:581
-msgid "Event removed"
+#: view/theme/frio/php/Image.php:27
+msgid "Repeat image to fill the screen."
 msgstr ""
 
-#: mod/follow.php:45
-msgid "The contact could not be added."
+#: view/theme/frio/config.php:102
+msgid "Custom"
 msgstr ""
 
-#: mod/follow.php:73
-msgid "You already added this contact."
+#: view/theme/frio/config.php:114
+msgid "Note"
 msgstr ""
 
-#: mod/follow.php:83
-msgid "Diaspora support isn't enabled. Contact can't be added."
+#: view/theme/frio/config.php:114
+msgid "Check image permissions if all users are allowed to see the image"
 msgstr ""
 
-#: mod/follow.php:90
-msgid "OStatus support is disabled. Contact can't be added."
+#: view/theme/frio/config.php:121
+msgid "Select color scheme"
 msgstr ""
 
-#: mod/follow.php:97
-msgid "The network type couldn't be detected. Contact can't be added."
+#: view/theme/frio/config.php:122
+msgid "Navigation bar background color"
 msgstr ""
 
-#: mod/fbrowser.php:44 mod/fbrowser.php:69 mod/photos.php:198
-#: mod/photos.php:1078 mod/photos.php:1171 mod/photos.php:1188
-#: mod/photos.php:1654 mod/photos.php:1669 src/Model/Photo.php:243
-#: src/Model/Photo.php:252
-msgid "Contact Photos"
+#: view/theme/frio/config.php:123
+msgid "Navigation bar icon color "
 msgstr ""
 
-#: mod/fbrowser.php:132
-msgid "Files"
+#: view/theme/frio/config.php:124
+msgid "Link color"
 msgstr ""
 
-#: mod/oexchange.php:30
-msgid "Post successful."
+#: view/theme/frio/config.php:125
+msgid "Set the background color"
 msgstr ""
 
-#: mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
+#: view/theme/frio/config.php:126
+msgid "Content background opacity"
 msgstr ""
 
-#: mod/credits.php:18
-msgid "Credits"
+#: view/theme/frio/config.php:127
+msgid "Set the background image"
 msgstr ""
 
-#: mod/credits.php:19
-msgid ""
-"Friendica is a community project, that would not be possible without the "
-"help of many people. Here is a list of those who have contributed to the "
-"code or the translation of Friendica. Thank you all!"
+#: view/theme/frio/config.php:128
+msgid "Background image style"
 msgstr ""
 
-#: mod/attach.php:16
-msgid "Item not available."
+#: view/theme/frio/config.php:133
+msgid "Login page background image"
 msgstr ""
 
-#: mod/attach.php:26
-msgid "Item was not found."
+#: view/theme/frio/config.php:137
+msgid "Login page background color"
 msgstr ""
 
-#: mod/notify.php:77
-msgid "No more system notifications."
+#: view/theme/frio/config.php:137
+msgid "Leave background image and color empty for theme defaults"
 msgstr ""
 
-#: mod/community.php:71
-msgid "Community option not available."
+#: view/theme/frio/theme.php:250
+msgid "Guest"
 msgstr ""
 
-#: mod/community.php:88
-msgid "Not available."
+#: view/theme/frio/theme.php:255
+msgid "Visitor"
 msgstr ""
 
-#: mod/community.php:101
-msgid "Local Community"
+#: view/theme/frio/theme.php:268 src/Content/Nav.php:149
+#: src/Module/Login.php:319
+msgid "Logout"
 msgstr ""
 
-#: mod/community.php:104
-msgid "Posts from local users on this server"
+#: view/theme/frio/theme.php:268 src/Content/Nav.php:149
+msgid "End this session"
 msgstr ""
 
-#: mod/community.php:112
-msgid "Global Community"
+#: view/theme/frio/theme.php:271 src/Content/Nav.php:152
+#: src/Model/Profile.php:889 src/Module/Contact.php:657
+#: src/Module/Contact.php:848
+msgid "Status"
 msgstr ""
 
-#: mod/community.php:115
-msgid "Posts from users of the whole federated network"
+#: view/theme/frio/theme.php:271 src/Content/Nav.php:152
+#: src/Content/Nav.php:238
+msgid "Your posts and conversations"
 msgstr ""
 
-#: mod/community.php:205
-msgid ""
-"This community stream shows all public posts received by this node. They may "
-"not reflect the opinions of this node’s users."
+#: view/theme/frio/theme.php:272 src/Content/Nav.php:153
+msgid "Your profile page"
 msgstr ""
 
-#: mod/localtime.php:19 src/Model/Event.php:35 src/Model/Event.php:836
-msgid "l F d, Y \\@ g:i A"
+#: view/theme/frio/theme.php:273 src/Content/Nav.php:154
+msgid "Your photos"
 msgstr ""
 
-#: mod/localtime.php:33
-msgid "Time Conversion"
+#: view/theme/frio/theme.php:274 src/Content/Nav.php:155
+#: src/Model/Profile.php:913 src/Model/Profile.php:916
+msgid "Videos"
 msgstr ""
 
-#: mod/localtime.php:35
-msgid ""
-"Friendica provides this service for sharing events with other networks and "
-"friends in unknown timezones."
+#: view/theme/frio/theme.php:274 src/Content/Nav.php:155
+msgid "Your videos"
 msgstr ""
 
-#: mod/localtime.php:39
-#, php-format
-msgid "UTC time: %s"
+#: view/theme/frio/theme.php:275 src/Content/Nav.php:156
+msgid "Your events"
 msgstr ""
 
-#: mod/localtime.php:42
-#, php-format
-msgid "Current timezone: %s"
+#: view/theme/frio/theme.php:278 src/Content/Nav.php:235
+msgid "Conversations from your friends"
 msgstr ""
 
-#: mod/localtime.php:46
-#, php-format
-msgid "Converted localtime: %s"
+#: view/theme/frio/theme.php:279 src/Content/Nav.php:222
+#: src/Model/Profile.php:928 src/Model/Profile.php:939
+msgid "Events and Calendar"
 msgstr ""
 
-#: mod/localtime.php:52
-msgid "Please select your timezone:"
+#: view/theme/frio/theme.php:280 src/Content/Nav.php:248
+msgid "Private mail"
 msgstr ""
 
-#: mod/poke.php:187
-msgid "Poke/Prod"
+#: view/theme/frio/theme.php:281 src/Content/Nav.php:259
+msgid "Account settings"
 msgstr ""
 
-#: mod/poke.php:188
-msgid "poke, prod or do other things to somebody"
+#: view/theme/frio/theme.php:282 src/Content/Nav.php:265
+msgid "Manage/edit friends and contacts"
 msgstr ""
 
-#: mod/poke.php:189
-msgid "Recipient"
+#: view/theme/quattro/config.php:76
+msgid "Alignment"
 msgstr ""
 
-#: mod/poke.php:190
-msgid "Choose what you wish to do to recipient"
+#: view/theme/quattro/config.php:76
+msgid "Left"
 msgstr ""
 
-#: mod/poke.php:193
-msgid "Make this post private"
+#: view/theme/quattro/config.php:76
+msgid "Center"
 msgstr ""
 
-#: mod/invite.php:34
-msgid "Total invitation limit exceeded."
+#: view/theme/quattro/config.php:77
+msgid "Color scheme"
 msgstr ""
 
-#: mod/invite.php:56
-#, php-format
-msgid "%s : Not a valid email address."
+#: view/theme/quattro/config.php:78
+msgid "Posts font size"
 msgstr ""
 
-#: mod/invite.php:88
-msgid "Please join us on Friendica"
+#: view/theme/quattro/config.php:79
+msgid "Textareas font size"
 msgstr ""
 
-#: mod/invite.php:97
-msgid "Invitation limit exceeded. Please contact your site administrator."
+#: view/theme/vier/config.php:75
+msgid "Comma separated list of helper forums"
 msgstr ""
 
-#: mod/invite.php:101
-#, php-format
-msgid "%s : Message delivery failed."
+#: view/theme/vier/config.php:115 src/Core/ACL.php:298
+msgid "don't show"
 msgstr ""
 
-#: mod/invite.php:105
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] ""
-msgstr[1] ""
+#: view/theme/vier/config.php:115 src/Core/ACL.php:297
+msgid "show"
+msgstr ""
 
-#: mod/invite.php:123
-msgid "You have no more invitations available"
+#: view/theme/vier/config.php:122
+msgid "Set style"
 msgstr ""
 
-#: mod/invite.php:131
-#, php-format
-msgid ""
-"Visit %s for a list of public sites that you can join. Friendica members on "
-"other sites can all connect with each other, as well as with members of many "
-"other social networks."
+#: view/theme/vier/config.php:123
+msgid "Community Pages"
 msgstr ""
 
-#: mod/invite.php:133
-#, php-format
-msgid ""
-"To accept this invitation, please visit and register at %s or any other "
-"public Friendica website."
+#: view/theme/vier/config.php:124 view/theme/vier/theme.php:149
+msgid "Community Profiles"
 msgstr ""
 
-#: mod/invite.php:134
-#, php-format
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks. See %s for a list of alternate Friendica "
-"sites you can join."
+#: view/theme/vier/config.php:125
+msgid "Help or @NewHere ?"
 msgstr ""
 
-#: mod/invite.php:138
-msgid ""
-"Our apologies. This system is not currently configured to connect with other "
-"public sites or invite members."
+#: view/theme/vier/config.php:126 view/theme/vier/theme.php:386
+msgid "Connect Services"
 msgstr ""
 
-#: mod/invite.php:142
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks."
+#: view/theme/vier/config.php:127
+msgid "Find Friends"
 msgstr ""
 
-#: mod/invite.php:141
-#, php-format
-msgid "To accept this invitation, please visit and register at %s."
+#: view/theme/vier/config.php:128 view/theme/vier/theme.php:179
+msgid "Last users"
 msgstr ""
 
-#: mod/invite.php:148
-msgid "Send invitations"
+#: view/theme/vier/theme.php:197 src/Content/Widget.php:59
+msgid "Find People"
 msgstr ""
 
-#: mod/invite.php:149
-msgid "Enter email addresses, one per line:"
+#: view/theme/vier/theme.php:198 src/Content/Widget.php:60
+msgid "Enter name or interest"
 msgstr ""
 
-#: mod/invite.php:150
-msgid ""
-"You are cordially invited to join me and other close friends on Friendica - "
-"and help us to create a better social web."
+#: view/theme/vier/theme.php:200 src/Content/Widget.php:62
+msgid "Examples: Robert Morgenstein, Fishing"
 msgstr ""
 
-#: mod/invite.php:152
-msgid "You will need to supply this invitation code: $invite_code"
+#: view/theme/vier/theme.php:203 src/Content/Widget.php:65
+msgid "Similar Interests"
 msgstr ""
 
-#: mod/invite.php:152
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
+#: view/theme/vier/theme.php:204 src/Content/Widget.php:66
+msgid "Random Profile"
 msgstr ""
 
-#: mod/invite.php:154
-msgid ""
-"For more information about the Friendica project and why we feel it is "
-"important, please visit http://friendi.ca"
+#: view/theme/vier/theme.php:205 src/Content/Widget.php:67
+msgid "Invite Friends"
 msgstr ""
 
-#: mod/notes.php:42 src/Model/Profile.php:946
-msgid "Personal Notes"
+#: view/theme/vier/theme.php:208 src/Content/Widget.php:70
+msgid "Local Directory"
 msgstr ""
 
-#: mod/profiles.php:57
-msgid "Profile deleted."
+#: view/theme/vier/theme.php:253 src/Content/ForumManager.php:132
+msgid "External link to forum"
 msgstr ""
 
-#: mod/profiles.php:73 mod/profiles.php:109
-msgid "Profile-"
+#: view/theme/vier/theme.php:289
+msgid "Quick Start"
 msgstr ""
 
-#: mod/profiles.php:92 mod/profiles.php:131
-msgid "New profile created."
+#: src/Core/Console/ArchiveContact.php:65
+#, php-format
+msgid "Could not find any unarchived contact entry for this URL (%s)"
 msgstr ""
 
-#: mod/profiles.php:115
-msgid "Profile unavailable to clone."
+#: src/Core/Console/ArchiveContact.php:70
+msgid "The contact entries have been archived"
 msgstr ""
 
-#: mod/profiles.php:203
-msgid "Profile Name is required."
+#: src/Core/Console/NewPassword.php:73
+msgid "Enter new password: "
 msgstr ""
 
-#: mod/profiles.php:344
-msgid "Marital Status"
+#: src/Core/Console/NewPassword.php:78 src/Model/User.php:313
+msgid "Password can't be empty"
 msgstr ""
 
-#: mod/profiles.php:348
-msgid "Romantic Partner"
+#: src/Core/Console/PostUpdate.php:49
+#, php-format
+msgid "Post update version number has been set to %s."
 msgstr ""
 
-#: mod/profiles.php:360
-msgid "Work/Employment"
+#: src/Core/Console/PostUpdate.php:57
+msgid "Execute pending post updates."
 msgstr ""
 
-#: mod/profiles.php:363
-msgid "Religion"
+#: src/Core/Console/PostUpdate.php:63
+msgid "All pending post updates are done."
 msgstr ""
 
-#: mod/profiles.php:367
-msgid "Political Views"
+#: src/Core/ACL.php:284
+msgid "Post to Email"
 msgstr ""
 
-#: mod/profiles.php:371
-msgid "Gender"
+#: src/Core/ACL.php:290
+msgid "Hide your profile details from unknown viewers?"
 msgstr ""
 
-#: mod/profiles.php:375
-msgid "Sexual Preference"
+#: src/Core/ACL.php:289
+#, php-format
+msgid "Connectors disabled, since \"%s\" is enabled."
 msgstr ""
 
-#: mod/profiles.php:379
-msgid "XMPP"
+#: src/Core/ACL.php:296
+msgid "Visible to everybody"
 msgstr ""
 
-#: mod/profiles.php:383
-msgid "Homepage"
+#: src/Core/ACL.php:308
+msgid "Close"
 msgstr ""
 
-#: mod/profiles.php:387 mod/profiles.php:593
-msgid "Interests"
+#: src/Core/Authentication.php:88
+msgid "Welcome "
 msgstr ""
 
-#: mod/profiles.php:398 mod/profiles.php:589
-msgid "Location"
+#: src/Core/Authentication.php:89
+msgid "Please upload a profile photo."
 msgstr ""
 
-#: mod/profiles.php:481
-msgid "Profile updated."
+#: src/Core/Authentication.php:91
+msgid "Welcome back "
 msgstr ""
 
-#: mod/profiles.php:538
-msgid "Hide contacts and friends:"
+#: src/Core/Installer.php:158
+msgid ""
+"The database configuration file \"config/local.ini.php\" could not be "
+"written. Please use the enclosed text to create a configuration file in your "
+"web server root."
 msgstr ""
 
-#: mod/profiles.php:543
-msgid "Hide your contact/friend list from viewers of this profile?"
+#: src/Core/Installer.php:174
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
 msgstr ""
 
-#: mod/profiles.php:563
-msgid "Show more profile fields:"
+#: src/Core/Installer.php:175 src/Module/Install.php:262
+msgid "Please see the file \"INSTALL.txt\"."
 msgstr ""
 
-#: mod/profiles.php:575
-msgid "Profile Actions"
+#: src/Core/Installer.php:237
+msgid "Could not find a command line version of PHP in the web server PATH."
 msgstr ""
 
-#: mod/profiles.php:576
-msgid "Edit Profile Details"
+#: src/Core/Installer.php:238
+msgid ""
+"If you don't have a command line version of PHP installed on your server, "
+"you will not be able to run the background processing. See <a href='https://"
+"github.com/friendica/friendica/blob/master/doc/Install.md#set-up-the-"
+"worker'>'Setup the worker'</a>"
 msgstr ""
 
-#: mod/profiles.php:578
-msgid "Change Profile Photo"
+#: src/Core/Installer.php:242
+msgid "PHP executable path"
 msgstr ""
 
-#: mod/profiles.php:580
-msgid "View this profile"
+#: src/Core/Installer.php:242
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
 msgstr ""
 
-#: mod/profiles.php:581
-msgid "View all profiles"
+#: src/Core/Installer.php:247
+msgid "Command line PHP"
 msgstr ""
 
-#: mod/profiles.php:582 mod/profiles.php:677 src/Model/Profile.php:406
-msgid "Edit visibility"
+#: src/Core/Installer.php:256
+msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
 msgstr ""
 
-#: mod/profiles.php:583
-msgid "Create a new profile using these settings"
+#: src/Core/Installer.php:257
+msgid "Found PHP version: "
 msgstr ""
 
-#: mod/profiles.php:584
-msgid "Clone this profile"
+#: src/Core/Installer.php:259
+msgid "PHP cli binary"
 msgstr ""
 
-#: mod/profiles.php:585
-msgid "Delete this profile"
+#: src/Core/Installer.php:272
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
 msgstr ""
 
-#: mod/profiles.php:587
-msgid "Basic information"
+#: src/Core/Installer.php:273
+msgid "This is required for message delivery to work."
 msgstr ""
 
-#: mod/profiles.php:588
-msgid "Profile picture"
+#: src/Core/Installer.php:278
+msgid "PHP register_argc_argv"
 msgstr ""
 
-#: mod/profiles.php:590
-msgid "Preferences"
+#: src/Core/Installer.php:310
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
 msgstr ""
 
-#: mod/profiles.php:591
-msgid "Status information"
+#: src/Core/Installer.php:311
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
 msgstr ""
 
-#: mod/profiles.php:592
-msgid "Additional information"
+#: src/Core/Installer.php:314
+msgid "Generate encryption keys"
 msgstr ""
 
-#: mod/profiles.php:595
-msgid "Relation"
+#: src/Core/Installer.php:365
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
 msgstr ""
 
-#: mod/profiles.php:596 src/Util/Temporal.php:81 src/Util/Temporal.php:83
-msgid "Miscellaneous"
+#: src/Core/Installer.php:370
+msgid "Apache mod_rewrite module"
 msgstr ""
 
-#: mod/profiles.php:599
-msgid "Your Gender:"
+#: src/Core/Installer.php:376
+msgid "Error: PDO or MySQLi PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:600
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+#: src/Core/Installer.php:381
+msgid "Error: The MySQL driver for PDO is not installed."
 msgstr ""
 
-#: mod/profiles.php:601 src/Model/Profile.php:782
-msgid "Sexual Preference:"
+#: src/Core/Installer.php:385
+msgid "PDO or MySQLi PHP module"
 msgstr ""
 
-#: mod/profiles.php:602
-msgid "Example: fishing photography software"
+#: src/Core/Installer.php:393
+msgid "Error, XML PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:607
-msgid "Profile Name:"
+#: src/Core/Installer.php:397
+msgid "XML PHP module"
 msgstr ""
 
-#: mod/profiles.php:609
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
+#: src/Core/Installer.php:400 tests/src/Core/InstallerTest.php:94
+msgid "libCurl PHP module"
 msgstr ""
 
-#: mod/profiles.php:610
-msgid "Your Full Name:"
+#: src/Core/Installer.php:401 tests/src/Core/InstallerTest.php:95
+msgid "Error: libCURL PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:611
-msgid "Title/Description:"
+#: src/Core/Installer.php:407 tests/src/Core/InstallerTest.php:104
+msgid "GD graphics PHP module"
 msgstr ""
 
-#: mod/profiles.php:614
-msgid "Street Address:"
+#: src/Core/Installer.php:408 tests/src/Core/InstallerTest.php:105
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
 msgstr ""
 
-#: mod/profiles.php:615
-msgid "Locality/City:"
+#: src/Core/Installer.php:414 tests/src/Core/InstallerTest.php:114
+msgid "OpenSSL PHP module"
 msgstr ""
 
-#: mod/profiles.php:616
-msgid "Region/State:"
+#: src/Core/Installer.php:415 tests/src/Core/InstallerTest.php:115
+msgid "Error: openssl PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:617
-msgid "Postal/Zip Code:"
+#: src/Core/Installer.php:421 tests/src/Core/InstallerTest.php:124
+msgid "mb_string PHP module"
 msgstr ""
 
-#: mod/profiles.php:618
-msgid "Country:"
+#: src/Core/Installer.php:422 tests/src/Core/InstallerTest.php:125
+msgid "Error: mb_string PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:619 src/Util/Temporal.php:149
-msgid "Age: "
+#: src/Core/Installer.php:428 tests/src/Core/InstallerTest.php:134
+msgid "iconv PHP module"
 msgstr ""
 
-#: mod/profiles.php:622
-msgid "Who: (if applicable)"
+#: src/Core/Installer.php:429 tests/src/Core/InstallerTest.php:135
+msgid "Error: iconv PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:622
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+#: src/Core/Installer.php:435 tests/src/Core/InstallerTest.php:144
+msgid "POSIX PHP module"
 msgstr ""
 
-#: mod/profiles.php:623
-msgid "Since [date]:"
+#: src/Core/Installer.php:436 tests/src/Core/InstallerTest.php:145
+msgid "Error: POSIX PHP module required but not installed."
 msgstr ""
 
-#: mod/profiles.php:625
-msgid "Tell us about yourself..."
+#: src/Core/Installer.php:459
+msgid ""
+"The web installer needs to be able to create a file called \"local.ini.php\" "
+"in the \"config\" folder of your web server and it is unable to do so."
 msgstr ""
 
-#: mod/profiles.php:626
-msgid "XMPP (Jabber) address:"
+#: src/Core/Installer.php:460
+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 ""
 
-#: mod/profiles.php:626
+#: src/Core/Installer.php:461
 msgid ""
-"The XMPP address will be propagated to your contacts so that they can follow "
-"you."
+"At the end of this procedure, we will give you a text to save in a file "
+"named local.ini.php in your Friendica \"config\" folder."
 msgstr ""
 
-#: mod/profiles.php:627
-msgid "Homepage URL:"
+#: src/Core/Installer.php:462
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation. "
+"Please see the file \"INSTALL.txt\" for instructions."
 msgstr ""
 
-#: mod/profiles.php:628 src/Model/Profile.php:790
-msgid "Hometown:"
+#: src/Core/Installer.php:465
+msgid "config/local.ini.php is writable"
 msgstr ""
 
-#: mod/profiles.php:629 src/Model/Profile.php:798
-msgid "Political Views:"
+#: src/Core/Installer.php:485
+msgid ""
+"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
 msgstr ""
 
-#: mod/profiles.php:630
-msgid "Religious Views:"
+#: src/Core/Installer.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 ""
 
-#: mod/profiles.php:631
-msgid "Public Keywords:"
+#: src/Core/Installer.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 ""
 
-#: mod/profiles.php:631
-msgid "(Used for suggesting potential friends, can be seen by others)"
+#: src/Core/Installer.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 ""
 
-#: mod/profiles.php:632
-msgid "Private Keywords:"
+#: src/Core/Installer.php:491
+msgid "view/smarty3 is writable"
 msgstr ""
 
-#: mod/profiles.php:632
-msgid "(Used for searching profiles, never shown to others)"
+#: src/Core/Installer.php:519
+msgid ""
+"Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist "
+"to .htaccess."
 msgstr ""
 
-#: mod/profiles.php:633 src/Model/Profile.php:814
-msgid "Likes:"
+#: src/Core/Installer.php:521
+msgid "Error message from Curl when fetching"
 msgstr ""
 
-#: mod/profiles.php:634 src/Model/Profile.php:818
-msgid "Dislikes:"
+#: src/Core/Installer.php:526
+msgid "Url rewrite is working"
 msgstr ""
 
-#: mod/profiles.php:635
-msgid "Musical interests"
+#: src/Core/Installer.php:555 tests/src/Core/InstallerTest.php:317
+msgid "ImageMagick PHP extension is not installed"
 msgstr ""
 
-#: mod/profiles.php:636
-msgid "Books, literature"
+#: src/Core/Installer.php:557
+msgid "ImageMagick PHP extension is installed"
 msgstr ""
 
-#: mod/profiles.php:637
-msgid "Television"
+#: src/Core/Installer.php:559 tests/src/Core/InstallerTest.php:277
+#: tests/src/Core/InstallerTest.php:301
+msgid "ImageMagick supports GIF"
 msgstr ""
 
-#: mod/profiles.php:638
-msgid "Film/dance/culture/entertainment"
+#: src/Core/Installer.php:581
+msgid "Could not connect to database."
 msgstr ""
 
-#: mod/profiles.php:639
-msgid "Hobbies/Interests"
+#: src/Core/Installer.php:588
+msgid "Database already in use."
 msgstr ""
 
-#: mod/profiles.php:640
-msgid "Love/romance"
+#: src/Core/NotificationsManager.php:173
+msgid "System"
 msgstr ""
 
-#: mod/profiles.php:641
-msgid "Work/employment"
+#: src/Core/NotificationsManager.php:194 src/Content/Nav.php:176
+#: src/Content/Nav.php:238
+msgid "Home"
 msgstr ""
 
-#: mod/profiles.php:642
-msgid "School/education"
+#: src/Core/NotificationsManager.php:201 src/Content/Nav.php:242
+msgid "Introductions"
 msgstr ""
 
-#: mod/profiles.php:643
-msgid "Contact information and Social Networks"
+#: src/Core/NotificationsManager.php:263 src/Core/NotificationsManager.php:275
+#, php-format
+msgid "%s commented on %s's post"
 msgstr ""
 
-#: mod/profiles.php:674 src/Model/Profile.php:402
-msgid "Profile Image"
+#: src/Core/NotificationsManager.php:274
+#, php-format
+msgid "%s created a new post"
 msgstr ""
 
-#: mod/profiles.php:676 src/Model/Profile.php:405
-msgid "visible to everybody"
+#: src/Core/NotificationsManager.php:288
+#, php-format
+msgid "%s liked %s's post"
 msgstr ""
 
-#: mod/profiles.php:683
-msgid "Edit/Manage Profiles"
+#: src/Core/NotificationsManager.php:301
+#, php-format
+msgid "%s disliked %s's post"
 msgstr ""
 
-#: mod/profiles.php:684 src/Model/Profile.php:392 src/Model/Profile.php:414
-msgid "Change profile photo"
+#: src/Core/NotificationsManager.php:314
+#, php-format
+msgid "%s is attending %s's event"
 msgstr ""
 
-#: mod/profiles.php:685 src/Model/Profile.php:393
-msgid "Create New Profile"
+#: src/Core/NotificationsManager.php:327
+#, php-format
+msgid "%s is not attending %s's event"
 msgstr ""
 
-#: mod/photos.php:112 src/Model/Profile.php:907
-msgid "Photo Albums"
+#: src/Core/NotificationsManager.php:340
+#, php-format
+msgid "%s may attend %s's event"
 msgstr ""
 
-#: mod/photos.php:113 mod/photos.php:1710
-msgid "Recent Photos"
+#: src/Core/NotificationsManager.php:373
+#, php-format
+msgid "%s is now friends with %s"
 msgstr ""
 
-#: mod/photos.php:116 mod/photos.php:1232 mod/photos.php:1712
-msgid "Upload New Photos"
+#: src/Core/NotificationsManager.php:639
+msgid "Friend Suggestion"
 msgstr ""
 
-#: mod/photos.php:190
-msgid "Contact information unavailable"
+#: src/Core/NotificationsManager.php:673
+msgid "Friend/Connect Request"
 msgstr ""
 
-#: mod/photos.php:209
-msgid "Album not found."
+#: src/Core/NotificationsManager.php:673
+msgid "New Follower"
 msgstr ""
 
-#: mod/photos.php:239 mod/photos.php:252 mod/photos.php:1183
-msgid "Delete Album"
+#: src/Core/UserImport.php:101
+msgid "Error decoding account file"
 msgstr ""
 
-#: mod/photos.php:250
-msgid "Do you really want to delete this photo album and all its photos?"
+#: src/Core/UserImport.php:107
+msgid "Error! No version data in file! This is not a Friendica account file?"
 msgstr ""
 
-#: mod/photos.php:312 mod/photos.php:324 mod/photos.php:1455
-msgid "Delete Photo"
+#: src/Core/UserImport.php:115
+#, php-format
+msgid "User '%s' already exists on this server!"
 msgstr ""
 
-#: mod/photos.php:322
-msgid "Do you really want to delete this photo?"
+#: src/Core/UserImport.php:148
+msgid "User creation error"
 msgstr ""
 
-#: mod/photos.php:679
-msgid "a photo"
+#: src/Core/UserImport.php:166
+msgid "User profile creation error"
 msgstr ""
 
-#: mod/photos.php:679
+#: src/Core/UserImport.php:210
 #, php-format
-msgid "%1$s was tagged in %2$s by %3$s"
+msgid "%d contact not imported"
+msgid_plural "%d contacts not imported"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Core/UserImport.php:275
+msgid "Done. You can now login with your username and password"
 msgstr ""
 
-#: mod/photos.php:784
-msgid "Image upload didn't complete, please try again"
+#: src/Util/Temporal.php:148 src/Model/Profile.php:759
+msgid "Birthday:"
 msgstr ""
 
-#: mod/photos.php:787
-msgid "Image file is missing"
+#: src/Util/Temporal.php:152
+msgid "YYYY-MM-DD or MM-DD"
 msgstr ""
 
-#: mod/photos.php:792
-msgid ""
-"Server can't accept new file upload at this time, please contact your "
-"administrator"
+#: src/Util/Temporal.php:295
+msgid "never"
 msgstr ""
 
-#: mod/photos.php:818
-msgid "Image file is empty."
+#: src/Util/Temporal.php:302
+msgid "less than a second ago"
 msgstr ""
 
-#: mod/photos.php:955
-msgid "No photos selected"
+#: src/Util/Temporal.php:310
+msgid "year"
 msgstr ""
 
-#: mod/photos.php:1106
-msgid "Upload Photos"
+#: src/Util/Temporal.php:310
+msgid "years"
 msgstr ""
 
-#: mod/photos.php:1110 mod/photos.php:1178
-msgid "New album name: "
+#: src/Util/Temporal.php:311
+msgid "months"
 msgstr ""
 
-#: mod/photos.php:1111
-msgid "or select existing album:"
+#: src/Util/Temporal.php:312
+msgid "weeks"
 msgstr ""
 
-#: mod/photos.php:1112
-msgid "Do not show a status post for this upload"
+#: src/Util/Temporal.php:313
+msgid "days"
 msgstr ""
 
-#: mod/photos.php:1189
-msgid "Edit Album"
+#: src/Util/Temporal.php:314
+msgid "hour"
 msgstr ""
 
-#: mod/photos.php:1194
-msgid "Show Newest First"
+#: src/Util/Temporal.php:314
+msgid "hours"
 msgstr ""
 
-#: mod/photos.php:1196
-msgid "Show Oldest First"
+#: src/Util/Temporal.php:315
+msgid "minute"
 msgstr ""
 
-#: mod/photos.php:1217 mod/photos.php:1695
-msgid "View Photo"
+#: src/Util/Temporal.php:315
+msgid "minutes"
 msgstr ""
 
-#: mod/photos.php:1258
-msgid "Permission denied. Access to this item may be restricted."
+#: src/Util/Temporal.php:316
+msgid "second"
 msgstr ""
 
-#: mod/photos.php:1260
-msgid "Photo not available"
+#: src/Util/Temporal.php:316
+msgid "seconds"
 msgstr ""
 
-#: mod/photos.php:1335
-msgid "View photo"
+#: src/Util/Temporal.php:326
+#, php-format
+msgid "in %1$d %2$s"
 msgstr ""
 
-#: mod/photos.php:1335
-msgid "Edit photo"
+#: src/Util/Temporal.php:329
+#, php-format
+msgid "%1$d %2$s ago"
 msgstr ""
 
-#: mod/photos.php:1336
-msgid "Use as profile photo"
+#: src/Content/Text/BBCode.php:423
+msgid "view full size"
 msgstr ""
 
-#: mod/photos.php:1342 src/Object/Post.php:151
-msgid "Private Message"
+#: src/Content/Text/BBCode.php:855 src/Content/Text/BBCode.php:1574
+#: src/Content/Text/BBCode.php:1575
+msgid "Image/photo"
 msgstr ""
 
-#: mod/photos.php:1362
-msgid "View Full Size"
+#: src/Content/Text/BBCode.php:958
+#, php-format
+msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
 msgstr ""
 
-#: mod/photos.php:1423
-msgid "Tags: "
+#: src/Content/Text/BBCode.php:1501 src/Content/Text/BBCode.php:1523
+msgid "$1 wrote:"
 msgstr ""
 
-#: mod/photos.php:1426
-msgid "[Remove any tag]"
+#: src/Content/Text/BBCode.php:1585 src/Content/Text/BBCode.php:1586
+msgid "Encrypted content"
 msgstr ""
 
-#: mod/photos.php:1441
-msgid "New album name"
+#: src/Content/Text/BBCode.php:1693
+msgid "Invalid source protocol"
 msgstr ""
 
-#: mod/photos.php:1442
-msgid "Caption"
+#: src/Content/Text/BBCode.php:1704
+msgid "Invalid link protocol"
 msgstr ""
 
-#: mod/photos.php:1443
-msgid "Add a Tag"
+#: src/Content/Widget/CalendarExport.php:65
+msgid "Export"
 msgstr ""
 
-#: mod/photos.php:1443
-msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+#: src/Content/Widget/CalendarExport.php:66
+msgid "Export calendar as ical"
 msgstr ""
 
-#: mod/photos.php:1444
-msgid "Do not rotate"
+#: src/Content/Widget/CalendarExport.php:67
+msgid "Export calendar as csv"
 msgstr ""
 
-#: mod/photos.php:1445
-msgid "Rotate CW (right)"
+#: src/Content/Feature.php:79
+msgid "General Features"
 msgstr ""
 
-#: mod/photos.php:1446
-msgid "Rotate CCW (left)"
+#: src/Content/Feature.php:81
+msgid "Multiple Profiles"
 msgstr ""
 
-#: mod/photos.php:1480 src/Object/Post.php:293
-msgid "I like this (toggle)"
+#: src/Content/Feature.php:81
+msgid "Ability to create multiple profiles"
 msgstr ""
 
-#: mod/photos.php:1481 src/Object/Post.php:294
-msgid "I don't like this (toggle)"
+#: src/Content/Feature.php:82
+msgid "Photo Location"
 msgstr ""
 
-#: mod/photos.php:1498 mod/photos.php:1537 mod/photos.php:1597
-#: src/Object/Post.php:398 src/Object/Post.php:794
-msgid "Comment"
+#: src/Content/Feature.php:82
+msgid ""
+"Photo metadata is normally stripped. This extracts the location (if present) "
+"prior to stripping metadata and links it to a map."
 msgstr ""
 
-#: mod/photos.php:1629
-msgid "Map"
+#: src/Content/Feature.php:83
+msgid "Export Public Calendar"
 msgstr ""
 
-#: local/test.php:1919
-#, php-format
-msgid ""
-"<span><a href=\"%s\" target=\"_blank\" class=\"shared-wall-item-name\">%s</"
-"a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"
+#: src/Content/Feature.php:83
+msgid "Ability for visitors to download the public calendar"
 msgstr ""
 
-#: local/testshare.php:158 src/Content/Text/BBCode.php:992
-#, php-format
-msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
+#: src/Content/Feature.php:88
+msgid "Post Composition Features"
 msgstr ""
 
-#: local/testshare.php:180
-#, php-format
-msgid ""
-"<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a href="
-"\"%s\" target=\"_blank\">post</a>"
+#: src/Content/Feature.php:89
+msgid "Post Preview"
 msgstr ""
 
-#: boot.php:653
-#, php-format
-msgid "Update %s failed. See error logs."
+#: src/Content/Feature.php:89
+msgid "Allow previewing posts and comments before publishing them"
 msgstr ""
 
-#: src/Database/DBStructure.php:33
-msgid "There are no tables on MyISAM."
+#: src/Content/Feature.php:90
+msgid "Auto-mention Forums"
 msgstr ""
 
-#: src/Database/DBStructure.php:76
-#, php-format
+#: src/Content/Feature.php:90
 msgid ""
-"\n"
-"\t\t\t\tThe friendica developers released update %s recently,\n"
-"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
-"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact "
-"a\n"
-"\t\t\t\tfriendica developer if you can not help me on your own. My database "
-"might be invalid."
+"Add/remove mention when a forum page is selected/deselected in ACL window."
 msgstr ""
 
-#: src/Database/DBStructure.php:81
-#, php-format
-msgid ""
-"The error message is\n"
-"[pre]%s[/pre]"
+#: src/Content/Feature.php:95
+msgid "Network Sidebar"
 msgstr ""
 
-#: src/Database/DBStructure.php:192
-#, php-format
-msgid ""
-"\n"
-"Error %d occurred during database update:\n"
-"%s\n"
+#: src/Content/Feature.php:96
+msgid "Ability to select posts by date ranges"
 msgstr ""
 
-#: src/Database/DBStructure.php:195
-msgid "Errors encountered performing database changes: "
+#: src/Content/Feature.php:97 src/Content/Feature.php:127
+msgid "List Forums"
 msgstr ""
 
-#: src/Database/DBStructure.php:211
-#, php-format
-msgid "%s: Database update"
+#: src/Content/Feature.php:97
+msgid "Enable widget to display the forums your are connected with"
 msgstr ""
 
-#: src/Database/DBStructure.php:473
-#, php-format
-msgid "%s: updating %s table."
+#: src/Content/Feature.php:98
+msgid "Group Filter"
+msgstr ""
+
+#: src/Content/Feature.php:98
+msgid "Enable widget to display Network posts only from selected group"
+msgstr ""
+
+#: src/Content/Feature.php:99
+msgid "Network Filter"
 msgstr ""
 
-#: src/Core/Install.php:139
-msgid "Could not find a command line version of PHP in the web server PATH."
+#: src/Content/Feature.php:99
+msgid "Enable widget to display Network posts only from selected network"
 msgstr ""
 
-#: src/Core/Install.php:140
-msgid ""
-"If you don't have a command line version of PHP installed on your server, "
-"you will not be able to run the background processing. See <a href='https://"
-"github.com/friendica/friendica/blob/master/doc/Install.md#set-up-the-"
-"worker'>'Setup the worker'</a>"
+#: src/Content/Feature.php:100
+msgid "Save search terms for re-use"
 msgstr ""
 
-#: src/Core/Install.php:144
-msgid "PHP executable path"
+#: src/Content/Feature.php:105
+msgid "Network Tabs"
 msgstr ""
 
-#: src/Core/Install.php:144
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
+#: src/Content/Feature.php:106
+msgid "Network Personal Tab"
 msgstr ""
 
-#: src/Core/Install.php:149
-msgid "Command line PHP"
+#: src/Content/Feature.php:106
+msgid "Enable tab to display only Network posts that you've interacted on"
 msgstr ""
 
-#: src/Core/Install.php:158
-msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
+#: src/Content/Feature.php:107
+msgid "Network New Tab"
 msgstr ""
 
-#: src/Core/Install.php:159
-msgid "Found PHP version: "
+#: src/Content/Feature.php:107
+msgid "Enable tab to display only new Network posts (from the last 12 hours)"
 msgstr ""
 
-#: src/Core/Install.php:161
-msgid "PHP cli binary"
+#: src/Content/Feature.php:108
+msgid "Network Shared Links Tab"
 msgstr ""
 
-#: src/Core/Install.php:171
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
+#: src/Content/Feature.php:108
+msgid "Enable tab to display only Network posts with links in them"
 msgstr ""
 
-#: src/Core/Install.php:172
-msgid "This is required for message delivery to work."
+#: src/Content/Feature.php:113
+msgid "Post/Comment Tools"
 msgstr ""
 
-#: src/Core/Install.php:174
-msgid "PHP register_argc_argv"
+#: src/Content/Feature.php:114
+msgid "Multiple Deletion"
 msgstr ""
 
-#: src/Core/Install.php:202
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
+#: src/Content/Feature.php:114
+msgid "Select and delete multiple posts/comments at once"
 msgstr ""
 
-#: src/Core/Install.php:203
-msgid ""
-"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
-"installation.php\"."
+#: src/Content/Feature.php:115
+msgid "Edit Sent Posts"
 msgstr ""
 
-#: src/Core/Install.php:205
-msgid "Generate encryption keys"
+#: src/Content/Feature.php:115
+msgid "Edit and correct posts and comments after sending"
 msgstr ""
 
-#: src/Core/Install.php:226
-msgid "libCurl PHP module"
+#: src/Content/Feature.php:116
+msgid "Tagging"
 msgstr ""
 
-#: src/Core/Install.php:227
-msgid "GD graphics PHP module"
+#: src/Content/Feature.php:116
+msgid "Ability to tag existing posts"
 msgstr ""
 
-#: src/Core/Install.php:228
-msgid "OpenSSL PHP module"
+#: src/Content/Feature.php:117
+msgid "Post Categories"
 msgstr ""
 
-#: src/Core/Install.php:229
-msgid "PDO or MySQLi PHP module"
+#: src/Content/Feature.php:117
+msgid "Add categories to your posts"
 msgstr ""
 
-#: src/Core/Install.php:230
-msgid "mb_string PHP module"
+#: src/Content/Feature.php:118 src/Content/Widget.php:195
+msgid "Saved Folders"
 msgstr ""
 
-#: src/Core/Install.php:231
-msgid "XML PHP module"
+#: src/Content/Feature.php:118
+msgid "Ability to file posts under folders"
 msgstr ""
 
-#: src/Core/Install.php:232
-msgid "iconv PHP module"
+#: src/Content/Feature.php:119
+msgid "Dislike Posts"
 msgstr ""
 
-#: src/Core/Install.php:233
-msgid "POSIX PHP module"
+#: src/Content/Feature.php:119
+msgid "Ability to dislike posts/comments"
 msgstr ""
 
-#: src/Core/Install.php:237 src/Core/Install.php:239
-msgid "Apache mod_rewrite module"
+#: src/Content/Feature.php:120
+msgid "Star Posts"
 msgstr ""
 
-#: src/Core/Install.php:237
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
+#: src/Content/Feature.php:120
+msgid "Ability to mark special posts with a star indicator"
 msgstr ""
 
-#: src/Core/Install.php:245
-msgid "Error: libCURL PHP module required but not installed."
+#: src/Content/Feature.php:121
+msgid "Mute Post Notifications"
 msgstr ""
 
-#: src/Core/Install.php:249
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
+#: src/Content/Feature.php:121
+msgid "Ability to mute notifications for a thread"
 msgstr ""
 
-#: src/Core/Install.php:253
-msgid "Error: openssl PHP module required but not installed."
+#: src/Content/Feature.php:126
+msgid "Advanced Profile Settings"
 msgstr ""
 
-#: src/Core/Install.php:257
-msgid "Error: PDO or MySQLi PHP module required but not installed."
+#: src/Content/Feature.php:127
+msgid "Show visitors public community forums at the Advanced Profile Page"
 msgstr ""
 
-#: src/Core/Install.php:261
-msgid "Error: The MySQL driver for PDO is not installed."
+#: src/Content/Feature.php:128
+msgid "Tag Cloud"
 msgstr ""
 
-#: src/Core/Install.php:265
-msgid "Error: mb_string PHP module required but not installed."
+#: src/Content/Feature.php:128
+msgid "Provide a personal tag cloud on your profile page"
 msgstr ""
 
-#: src/Core/Install.php:269
-msgid "Error: iconv PHP module required but not installed."
+#: src/Content/Feature.php:129
+msgid "Display Membership Date"
 msgstr ""
 
-#: src/Core/Install.php:273
-msgid "Error: POSIX PHP module required but not installed."
+#: src/Content/Feature.php:129
+msgid "Display membership date in profile"
 msgstr ""
 
-#: src/Core/Install.php:283
-msgid "Error, XML PHP module required but not installed."
+#: src/Content/ContactSelector.php:56
+msgid "Frequently"
 msgstr ""
 
-#: src/Core/Install.php:302
-msgid ""
-"The web installer needs to be able to create a file called \"local.ini.php\" "
-"in the \"config\" folder of your web server and it is unable to do so."
+#: src/Content/ContactSelector.php:57
+msgid "Hourly"
 msgstr ""
 
-#: src/Core/Install.php:303
-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."
+#: src/Content/ContactSelector.php:58
+msgid "Twice daily"
 msgstr ""
 
-#: src/Core/Install.php:304
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named local.ini.php in your Friendica \"config\" folder."
+#: src/Content/ContactSelector.php:59
+msgid "Daily"
 msgstr ""
 
-#: src/Core/Install.php:305
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation. "
-"Please see the file \"INSTALL.txt\" for instructions."
+#: src/Content/ContactSelector.php:60
+msgid "Weekly"
 msgstr ""
 
-#: src/Core/Install.php:308
-msgid "config/local.ini.php is writable"
+#: src/Content/ContactSelector.php:61
+msgid "Monthly"
 msgstr ""
 
-#: src/Core/Install.php:326
-msgid ""
-"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
+#: src/Content/ContactSelector.php:81
+msgid "OStatus"
 msgstr ""
 
-#: src/Core/Install.php:327
-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."
+#: src/Content/ContactSelector.php:82
+msgid "RSS/Atom"
 msgstr ""
 
-#: src/Core/Install.php:328
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has "
-"write access to this folder."
+#: src/Content/ContactSelector.php:85
+msgid "Zot!"
 msgstr ""
 
-#: src/Core/Install.php:329
-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."
+#: src/Content/ContactSelector.php:86
+msgid "LinkedIn"
 msgstr ""
 
-#: src/Core/Install.php:332
-msgid "view/smarty3 is writable"
+#: src/Content/ContactSelector.php:87
+msgid "XMPP/IM"
 msgstr ""
 
-#: src/Core/Install.php:357
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
+#: src/Content/ContactSelector.php:88
+msgid "MySpace"
 msgstr ""
 
-#: src/Core/Install.php:359
-msgid "Error message from Curl when fetching"
+#: src/Content/ContactSelector.php:89
+msgid "Google+"
 msgstr ""
 
-#: src/Core/Install.php:363
-msgid "Url rewrite is working"
+#: src/Content/ContactSelector.php:90
+msgid "pump.io"
 msgstr ""
 
-#: src/Core/Install.php:390
-msgid "ImageMagick PHP extension is not installed"
+#: src/Content/ContactSelector.php:91
+msgid "Twitter"
 msgstr ""
 
-#: src/Core/Install.php:392
-msgid "ImageMagick PHP extension is installed"
+#: src/Content/ContactSelector.php:92
+msgid "Diaspora Connector"
 msgstr ""
 
-#: src/Core/Install.php:394
-msgid "ImageMagick supports GIF"
+#: src/Content/ContactSelector.php:93
+msgid "GNU Social Connector"
 msgstr ""
 
-#: src/Core/ACL.php:284
-msgid "Post to Email"
+#: src/Content/ContactSelector.php:94
+msgid "ActivityPub"
 msgstr ""
 
-#: src/Core/ACL.php:290
-msgid "Hide your profile details from unknown viewers?"
+#: src/Content/ContactSelector.php:95
+msgid "pnut"
 msgstr ""
 
-#: src/Core/ACL.php:289
-#, php-format
-msgid "Connectors disabled, since \"%s\" is enabled."
+#: src/Content/ContactSelector.php:147
+msgid "Male"
 msgstr ""
 
-#: src/Core/ACL.php:296
-msgid "Visible to everybody"
+#: src/Content/ContactSelector.php:147
+msgid "Female"
 msgstr ""
 
-#: src/Core/ACL.php:308
-msgid "Close"
+#: src/Content/ContactSelector.php:147
+msgid "Currently Male"
 msgstr ""
 
-#: src/Core/Console/ArchiveContact.php:65
-#, php-format
-msgid "Could not find any unarchived contact entry for this URL (%s)"
+#: src/Content/ContactSelector.php:147
+msgid "Currently Female"
 msgstr ""
 
-#: src/Core/Console/ArchiveContact.php:70
-msgid "The contact entries have been archived"
+#: src/Content/ContactSelector.php:147
+msgid "Mostly Male"
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:49
-#, php-format
-msgid "Post update version number has been set to %s."
+#: src/Content/ContactSelector.php:147
+msgid "Mostly Female"
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:57
-msgid "Execute pending post updates."
+#: src/Content/ContactSelector.php:147
+msgid "Transgender"
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:63
-msgid "All pending post updates are done."
+#: src/Content/ContactSelector.php:147
+msgid "Intersex"
 msgstr ""
 
-#: src/Core/Console/NewPassword.php:73
-msgid "Enter new password: "
+#: src/Content/ContactSelector.php:147
+msgid "Transsexual"
 msgstr ""
 
-#: src/Core/Console/NewPassword.php:78 src/Model/User.php:269
-msgid "Password can't be empty"
+#: src/Content/ContactSelector.php:147
+msgid "Hermaphrodite"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:172
-msgid "System"
+#: src/Content/ContactSelector.php:147
+msgid "Neuter"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:193 src/Content/Nav.php:124
-#: src/Content/Nav.php:186
-msgid "Home"
+#: src/Content/ContactSelector.php:147
+msgid "Non-specific"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:200 src/Content/Nav.php:190
-msgid "Introductions"
+#: src/Content/ContactSelector.php:147
+msgid "Other"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:262 src/Core/NotificationsManager.php:274
-#, php-format
-msgid "%s commented on %s's post"
+#: src/Content/ContactSelector.php:169
+msgid "Males"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:273
-#, php-format
-msgid "%s created a new post"
+#: src/Content/ContactSelector.php:169
+msgid "Females"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:287
-#, php-format
-msgid "%s liked %s's post"
+#: src/Content/ContactSelector.php:169
+msgid "Gay"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:300
-#, php-format
-msgid "%s disliked %s's post"
+#: src/Content/ContactSelector.php:169
+msgid "Lesbian"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:313
-#, php-format
-msgid "%s is attending %s's event"
+#: src/Content/ContactSelector.php:169
+msgid "No Preference"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:326
-#, php-format
-msgid "%s is not attending %s's event"
+#: src/Content/ContactSelector.php:169
+msgid "Bisexual"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:339
-#, php-format
-msgid "%s may attend %s's event"
+#: src/Content/ContactSelector.php:169
+msgid "Autosexual"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:372
-#, php-format
-msgid "%s is now friends with %s"
+#: src/Content/ContactSelector.php:169
+msgid "Abstinent"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:638
-msgid "Friend Suggestion"
+#: src/Content/ContactSelector.php:169
+msgid "Virgin"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:672
-msgid "Friend/Connect Request"
+#: src/Content/ContactSelector.php:169
+msgid "Deviant"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:672
-msgid "New Follower"
+#: src/Content/ContactSelector.php:169
+msgid "Fetish"
 msgstr ""
 
-#: src/Core/UserImport.php:100
-msgid "Error decoding account file"
+#: src/Content/ContactSelector.php:169
+msgid "Oodles"
 msgstr ""
 
-#: src/Core/UserImport.php:106
-msgid "Error! No version data in file! This is not a Friendica account file?"
+#: src/Content/ContactSelector.php:169
+msgid "Nonsexual"
 msgstr ""
 
-#: src/Core/UserImport.php:114
-#, php-format
-msgid "User '%s' already exists on this server!"
+#: src/Content/ContactSelector.php:191
+msgid "Single"
 msgstr ""
 
-#: src/Core/UserImport.php:147
-msgid "User creation error"
+#: src/Content/ContactSelector.php:191
+msgid "Lonely"
 msgstr ""
 
-#: src/Core/UserImport.php:165
-msgid "User profile creation error"
+#: src/Content/ContactSelector.php:191
+msgid "Available"
 msgstr ""
 
-#: src/Core/UserImport.php:209
-#, php-format
-msgid "%d contact not imported"
-msgid_plural "%d contacts not imported"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Content/ContactSelector.php:191
+msgid "Unavailable"
+msgstr ""
 
-#: src/Core/UserImport.php:274
-msgid "Done. You can now login with your username and password"
+#: src/Content/ContactSelector.php:191
+msgid "Has crush"
 msgstr ""
 
-#: src/Worker/Delivery.php:425
-msgid "(no subject)"
+#: src/Content/ContactSelector.php:191
+msgid "Infatuated"
 msgstr ""
 
-#: src/Object/Post.php:130
-msgid "This entry was edited"
+#: src/Content/ContactSelector.php:191
+msgid "Dating"
 msgstr ""
 
-#: src/Object/Post.php:190
-msgid "Delete globally"
+#: src/Content/ContactSelector.php:191
+msgid "Unfaithful"
 msgstr ""
 
-#: src/Object/Post.php:190
-msgid "Remove locally"
+#: src/Content/ContactSelector.php:191
+msgid "Sex Addict"
 msgstr ""
 
-#: src/Object/Post.php:203
-msgid "save to folder"
+#: src/Content/ContactSelector.php:191 src/Model/User.php:616
+msgid "Friends"
 msgstr ""
 
-#: src/Object/Post.php:232
-msgid "I will attend"
+#: src/Content/ContactSelector.php:191
+msgid "Friends/Benefits"
 msgstr ""
 
-#: src/Object/Post.php:232
-msgid "I will not attend"
+#: src/Content/ContactSelector.php:191
+msgid "Casual"
 msgstr ""
 
-#: src/Object/Post.php:232
-msgid "I might attend"
+#: src/Content/ContactSelector.php:191
+msgid "Engaged"
 msgstr ""
 
-#: src/Object/Post.php:259
-msgid "ignore thread"
+#: src/Content/ContactSelector.php:191
+msgid "Married"
 msgstr ""
 
-#: src/Object/Post.php:260
-msgid "unignore thread"
+#: src/Content/ContactSelector.php:191
+msgid "Imaginarily married"
 msgstr ""
 
-#: src/Object/Post.php:261
-msgid "toggle ignore status"
+#: src/Content/ContactSelector.php:191
+msgid "Partners"
 msgstr ""
 
-#: src/Object/Post.php:272
-msgid "add star"
+#: src/Content/ContactSelector.php:191
+msgid "Cohabiting"
 msgstr ""
 
-#: src/Object/Post.php:273
-msgid "remove star"
+#: src/Content/ContactSelector.php:191
+msgid "Common law"
 msgstr ""
 
-#: src/Object/Post.php:274
-msgid "toggle star status"
+#: src/Content/ContactSelector.php:191
+msgid "Happy"
 msgstr ""
 
-#: src/Object/Post.php:277
-msgid "starred"
+#: src/Content/ContactSelector.php:191
+msgid "Not looking"
 msgstr ""
 
-#: src/Object/Post.php:282
-msgid "add tag"
+#: src/Content/ContactSelector.php:191
+msgid "Swinger"
 msgstr ""
 
-#: src/Object/Post.php:293
-msgid "like"
+#: src/Content/ContactSelector.php:191
+msgid "Betrayed"
 msgstr ""
 
-#: src/Object/Post.php:294
-msgid "dislike"
+#: src/Content/ContactSelector.php:191
+msgid "Separated"
 msgstr ""
 
-#: src/Object/Post.php:297
-msgid "Share this"
+#: src/Content/ContactSelector.php:191
+msgid "Unstable"
 msgstr ""
 
-#: src/Object/Post.php:297
-msgid "share"
+#: src/Content/ContactSelector.php:191
+msgid "Divorced"
 msgstr ""
 
-#: src/Object/Post.php:364
-msgid "to"
+#: src/Content/ContactSelector.php:191
+msgid "Imaginarily divorced"
 msgstr ""
 
-#: src/Object/Post.php:365
-msgid "via"
+#: src/Content/ContactSelector.php:191
+msgid "Widowed"
 msgstr ""
 
-#: src/Object/Post.php:366
-msgid "Wall-to-Wall"
+#: src/Content/ContactSelector.php:191
+msgid "Uncertain"
 msgstr ""
 
-#: src/Object/Post.php:367
-msgid "via Wall-To-Wall:"
+#: src/Content/ContactSelector.php:191
+msgid "It's complicated"
 msgstr ""
 
-#: src/Object/Post.php:426
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Content/ContactSelector.php:191
+msgid "Don't care"
+msgstr ""
 
-#: src/Object/Post.php:796
-msgid "Bold"
+#: src/Content/ContactSelector.php:191
+msgid "Ask me"
 msgstr ""
 
-#: src/Object/Post.php:797
-msgid "Italic"
+#: src/Content/Nav.php:71
+msgid "Nothing new here"
 msgstr ""
 
-#: src/Object/Post.php:798
-msgid "Underline"
+#: src/Content/Nav.php:75
+msgid "Clear notifications"
 msgstr ""
 
-#: src/Object/Post.php:799
-msgid "Quote"
+#: src/Content/Nav.php:157
+msgid "Personal notes"
 msgstr ""
 
-#: src/Object/Post.php:800
-msgid "Code"
+#: src/Content/Nav.php:157
+msgid "Your personal notes"
 msgstr ""
 
-#: src/Object/Post.php:801
-msgid "Image"
+#: src/Content/Nav.php:166
+msgid "Sign in"
 msgstr ""
 
-#: src/Object/Post.php:802
-msgid "Link"
+#: src/Content/Nav.php:176
+msgid "Home Page"
 msgstr ""
 
-#: src/Object/Post.php:803
-msgid "Video"
+#: src/Content/Nav.php:180
+msgid "Create an account"
 msgstr ""
 
-#: src/App.php:798
-msgid "Delete this item?"
+#: src/Content/Nav.php:186
+msgid "Help and documentation"
 msgstr ""
 
-#: src/App.php:800
-msgid "show fewer"
+#: src/Content/Nav.php:190
+msgid "Apps"
 msgstr ""
 
-#: src/App.php:1416
-msgid "No system theme config value set."
+#: src/Content/Nav.php:190
+msgid "Addon applications, utilities, games"
 msgstr ""
 
-#: src/Module/Logout.php:28
-msgid "Logged out."
+#: src/Content/Nav.php:194
+msgid "Search site content"
 msgstr ""
 
-#: src/Module/Login.php:100 src/Model/User.php:408
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
+#: src/Content/Nav.php:218
+msgid "Community"
 msgstr ""
 
-#: src/Module/Login.php:100 src/Model/User.php:408
-msgid "The error message was:"
+#: src/Content/Nav.php:218
+msgid "Conversations on this and other servers"
 msgstr ""
 
-#: src/Module/Login.php:280
-msgid "Create a New Account"
+#: src/Content/Nav.php:225
+msgid "Directory"
 msgstr ""
 
-#: src/Module/Login.php:313
-msgid "Password: "
+#: src/Content/Nav.php:225
+msgid "People directory"
 msgstr ""
 
-#: src/Module/Login.php:314
-msgid "Remember me"
+#: src/Content/Nav.php:227
+msgid "Information about this friendica instance"
 msgstr ""
 
-#: src/Module/Login.php:317
-msgid "Or login using OpenID: "
+#: src/Content/Nav.php:230
+msgid "Terms of Service of this Friendica instance"
 msgstr ""
 
-#: src/Module/Login.php:323
-msgid "Forgot your password?"
+#: src/Content/Nav.php:236
+msgid "Network Reset"
 msgstr ""
 
-#: src/Module/Login.php:326
-msgid "Website Terms of Service"
+#: src/Content/Nav.php:236
+msgid "Load Network page with no filters"
 msgstr ""
 
-#: src/Module/Login.php:327
-msgid "terms of service"
+#: src/Content/Nav.php:242
+msgid "Friend Requests"
 msgstr ""
 
-#: src/Module/Login.php:329
-msgid "Website Privacy Policy"
+#: src/Content/Nav.php:244
+msgid "See all notifications"
 msgstr ""
 
-#: src/Module/Login.php:330
-msgid "privacy policy"
+#: src/Content/Nav.php:245
+msgid "Mark all system notifications seen"
 msgstr ""
 
-#: src/Module/Tos.php:34 src/Module/Tos.php:74
-msgid ""
-"At the time of registration, and for providing communications between the "
-"user account and their contacts, the user has to provide a display name (pen "
-"name), an username (nickname) and a working email address. The names will be "
-"accessible on the profile page of the account by any visitor of the page, "
-"even if other profile details are not displayed. The email address will only "
-"be used to send the user notifications about interactions, but wont be "
-"visibly displayed. The listing of an account in the node's user directory or "
-"the global user directory is optional and can be controlled in the user "
-"settings, it is not necessary for communication."
+#: src/Content/Nav.php:249
+msgid "Inbox"
 msgstr ""
 
-#: src/Module/Tos.php:35 src/Module/Tos.php:75
-msgid ""
-"This data is required for communication and is passed on to the nodes of the "
-"communication partners and is stored there. Users can enter additional "
-"private data that may be transmitted to the communication partners accounts."
+#: src/Content/Nav.php:250
+msgid "Outbox"
 msgstr ""
 
-#: src/Module/Tos.php:36 src/Module/Tos.php:76
-#, php-format
-msgid ""
-"At any point in time a logged in user can export their account data from the "
-"<a href=\"%1$s/settings/uexport\">account settings</a>. If the user wants to "
-"delete their account they can do so at <a href=\"%1$s/removeme\">%1$s/"
-"removeme</a>. The deletion of the account will be permanent. Deletion of the "
-"data will also be requested from the nodes of the communication partners."
+#: src/Content/Nav.php:254
+msgid "Manage"
 msgstr ""
 
-#: src/Module/Tos.php:39 src/Module/Tos.php:73
-msgid "Privacy Statement"
+#: src/Content/Nav.php:254
+msgid "Manage other pages"
 msgstr ""
 
-#: src/Module/Proxy.php:138
-msgid "Bad Request."
+#: src/Content/Nav.php:262
+msgid "Manage/Edit Profiles"
 msgstr ""
 
-#: src/Protocol/OStatus.php:1823
-#, php-format
-msgid "%s is now following %s."
+#: src/Content/Nav.php:270
+msgid "Site setup and configuration"
 msgstr ""
 
-#: src/Protocol/OStatus.php:1824
-msgid "following"
+#: src/Content/Nav.php:273
+msgid "Navigation"
 msgstr ""
 
-#: src/Protocol/OStatus.php:1827
-#, php-format
-msgid "%s stopped following %s."
+#: src/Content/Nav.php:273
+msgid "Site map"
 msgstr ""
 
-#: src/Protocol/OStatus.php:1828
-msgid "stopped following"
+#: src/Content/OEmbed.php:256
+msgid "Embedding disabled"
 msgstr ""
 
-#: src/Protocol/DFRN.php:1528 src/Model/Contact.php:1974
-#, php-format
-msgid "%s's birthday"
+#: src/Content/OEmbed.php:376
+msgid "Embedded content"
 msgstr ""
 
-#: src/Protocol/DFRN.php:1529 src/Model/Contact.php:1975
-#, php-format
-msgid "Happy Birthday %s"
+#: src/Content/Pager.php:165
+msgid "newer"
 msgstr ""
 
-#: src/Protocol/Diaspora.php:2434
-msgid "Sharing notification from Diaspora network"
+#: src/Content/Pager.php:170
+msgid "older"
 msgstr ""
 
-#: src/Protocol/Diaspora.php:3531
-msgid "Attachments:"
+#: src/Content/Pager.php:209
+msgid "first"
 msgstr ""
 
-#: src/Util/Temporal.php:147 src/Model/Profile.php:758
-msgid "Birthday:"
+#: src/Content/Pager.php:214
+msgid "prev"
 msgstr ""
 
-#: src/Util/Temporal.php:151
-msgid "YYYY-MM-DD or MM-DD"
+#: src/Content/Pager.php:269
+msgid "next"
 msgstr ""
 
-#: src/Util/Temporal.php:294
-msgid "never"
+#: src/Content/Pager.php:274
+msgid "last"
 msgstr ""
 
-#: src/Util/Temporal.php:300
-msgid "less than a second ago"
+#: src/Content/Widget.php:33
+msgid "Add New Contact"
 msgstr ""
 
-#: src/Util/Temporal.php:303
-msgid "year"
+#: src/Content/Widget.php:34
+msgid "Enter address or web location"
 msgstr ""
 
-#: src/Util/Temporal.php:303
-msgid "years"
+#: src/Content/Widget.php:35
+msgid "Example: bob@example.com, http://example.com/barbara"
 msgstr ""
 
-#: src/Util/Temporal.php:304
-msgid "months"
+#: src/Content/Widget.php:53
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Content/Widget.php:154
+msgid "Networks"
 msgstr ""
 
-#: src/Util/Temporal.php:305
-msgid "weeks"
+#: src/Content/Widget.php:157
+msgid "All Networks"
 msgstr ""
 
-#: src/Util/Temporal.php:306
-msgid "days"
+#: src/Content/Widget.php:198 src/Content/Widget.php:238
+msgid "Everything"
 msgstr ""
 
-#: src/Util/Temporal.php:307
-msgid "hour"
+#: src/Content/Widget.php:235
+msgid "Categories"
 msgstr ""
 
-#: src/Util/Temporal.php:307
-msgid "hours"
+#: src/Content/Widget.php:302
+#, php-format
+msgid "%d contact in common"
+msgid_plural "%d contacts in common"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Database/DBStructure.php:41
+msgid "There are no tables on MyISAM."
 msgstr ""
 
-#: src/Util/Temporal.php:308
-msgid "minute"
+#: src/Database/DBStructure.php:84
+#, php-format
+msgid ""
+"\n"
+"\t\t\t\tThe friendica developers released update %s recently,\n"
+"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
+"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact "
+"a\n"
+"\t\t\t\tfriendica developer if you can not help me on your own. My database "
+"might be invalid."
 msgstr ""
 
-#: src/Util/Temporal.php:308
-msgid "minutes"
+#: src/Database/DBStructure.php:90
+#, php-format
+msgid ""
+"The error message is\n"
+"[pre]%s[/pre]"
 msgstr ""
 
-#: src/Util/Temporal.php:309
-msgid "second"
+#: src/Database/DBStructure.php:201
+#, php-format
+msgid ""
+"\n"
+"Error %d occurred during database update:\n"
+"%s\n"
 msgstr ""
 
-#: src/Util/Temporal.php:309
-msgid "seconds"
+#: src/Database/DBStructure.php:204
+msgid "Errors encountered performing database changes: "
 msgstr ""
 
-#: src/Util/Temporal.php:318
+#: src/Database/DBStructure.php:220
 #, php-format
-msgid "%1$d %2$s ago"
+msgid "%s: Database update"
 msgstr ""
 
-#: src/Model/Mail.php:39 src/Model/Mail.php:171
-msgid "[no subject]"
+#: src/Database/DBStructure.php:482
+#, php-format
+msgid "%s: updating %s table."
 msgstr ""
 
-#: src/Model/Contact.php:953
+#: src/Model/Contact.php:954
 msgid "Drop Contact"
 msgstr ""
 
-#: src/Model/Contact.php:1408
+#: src/Model/Contact.php:1412
 msgid "Organisation"
 msgstr ""
 
-#: src/Model/Contact.php:1412
+#: src/Model/Contact.php:1416
 msgid "News"
 msgstr ""
 
-#: src/Model/Contact.php:1416
+#: src/Model/Contact.php:1420
 msgid "Forum"
 msgstr ""
 
-#: src/Model/Contact.php:1598
+#: src/Model/Contact.php:1602
 msgid "Connect URL missing."
 msgstr ""
 
-#: src/Model/Contact.php:1607
+#: src/Model/Contact.php:1611
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr ""
 
-#: src/Model/Contact.php:1646
+#: src/Model/Contact.php:1650
 msgid ""
 "This site is not configured to allow communications with other networks."
 msgstr ""
 
-#: src/Model/Contact.php:1647 src/Model/Contact.php:1661
+#: src/Model/Contact.php:1651 src/Model/Contact.php:1665
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr ""
 
-#: src/Model/Contact.php:1659
+#: src/Model/Contact.php:1663
 msgid "The profile address specified does not provide adequate information."
 msgstr ""
 
-#: src/Model/Contact.php:1664
+#: src/Model/Contact.php:1668
 msgid "An author or name was not found."
 msgstr ""
 
-#: src/Model/Contact.php:1667
+#: src/Model/Contact.php:1671
 msgid "No browser URL could be matched to this address."
 msgstr ""
 
-#: src/Model/Contact.php:1670
+#: src/Model/Contact.php:1674
 msgid ""
 "Unable to match @-style Identity Address with a known protocol or email "
 "contact."
 msgstr ""
 
-#: src/Model/Contact.php:1671
+#: src/Model/Contact.php:1675
 msgid "Use mailto: in front of address to force email check."
 msgstr ""
 
-#: src/Model/Contact.php:1677
+#: src/Model/Contact.php:1681
 msgid ""
 "The profile address specified belongs to a network which has been disabled "
 "on this site."
 msgstr ""
 
-#: src/Model/Contact.php:1682
+#: src/Model/Contact.php:1686
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr ""
 
-#: src/Model/Contact.php:1733
+#: src/Model/Contact.php:1737
 msgid "Unable to retrieve contact information."
 msgstr ""
 
-#: src/Model/Event.php:60 src/Model/Event.php:77 src/Model/Event.php:429
-#: src/Model/Event.php:904
+#: src/Model/Contact.php:1984 src/Protocol/DFRN.php:1531
+#, php-format
+msgid "%s's birthday"
+msgstr ""
+
+#: src/Model/Contact.php:1985 src/Protocol/DFRN.php:1532
+#, php-format
+msgid "Happy Birthday %s"
+msgstr ""
+
+#: src/Model/Event.php:61 src/Model/Event.php:78 src/Model/Event.php:430
+#: src/Model/Event.php:905
 msgid "Starts:"
 msgstr ""
 
-#: src/Model/Event.php:63 src/Model/Event.php:83 src/Model/Event.php:430
-#: src/Model/Event.php:908
+#: src/Model/Event.php:64 src/Model/Event.php:84 src/Model/Event.php:431
+#: src/Model/Event.php:909
 msgid "Finishes:"
 msgstr ""
 
-#: src/Model/Event.php:378
+#: src/Model/Event.php:379
 msgid "all-day"
 msgstr ""
 
-#: src/Model/Event.php:401
+#: src/Model/Event.php:402
 msgid "Jun"
 msgstr ""
 
-#: src/Model/Event.php:404
+#: src/Model/Event.php:405
 msgid "Sept"
 msgstr ""
 
-#: src/Model/Event.php:427
+#: src/Model/Event.php:428
 msgid "No events to display"
 msgstr ""
 
-#: src/Model/Event.php:551
+#: src/Model/Event.php:552
 msgid "l, F j"
 msgstr ""
 
-#: src/Model/Event.php:582
+#: src/Model/Event.php:583
 msgid "Edit event"
 msgstr ""
 
-#: src/Model/Event.php:583
+#: src/Model/Event.php:584
 msgid "Duplicate event"
 msgstr ""
 
-#: src/Model/Event.php:584
+#: src/Model/Event.php:585
 msgid "Delete event"
 msgstr ""
 
-#: src/Model/Event.php:837
+#: src/Model/Event.php:838
 msgid "D g:i A"
 msgstr ""
 
-#: src/Model/Event.php:838
+#: src/Model/Event.php:839
 msgid "g:i A"
 msgstr ""
 
-#: src/Model/Event.php:923 src/Model/Event.php:925
+#: src/Model/Event.php:924 src/Model/Event.php:926
 msgid "Show map"
 msgstr ""
 
-#: src/Model/Event.php:924
+#: src/Model/Event.php:925
 msgid "Hide map"
 msgstr ""
 
-#: src/Model/User.php:168
-msgid "Login failed"
-msgstr ""
-
-#: src/Model/User.php:199
-msgid "Not enough information to authenticate"
-msgstr ""
-
-#: src/Model/User.php:384
-msgid "An invitation is required."
-msgstr ""
-
-#: src/Model/User.php:388
-msgid "Invitation could not be verified."
-msgstr ""
-
-#: src/Model/User.php:395
-msgid "Invalid OpenID url"
-msgstr ""
-
-#: src/Model/User.php:414
-msgid "Please enter the required information."
-msgstr ""
-
-#: src/Model/User.php:427
-msgid "Please use a shorter name."
-msgstr ""
-
-#: src/Model/User.php:430
-msgid "Name too short."
-msgstr ""
-
-#: src/Model/User.php:438
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr ""
-
-#: src/Model/User.php:443
-msgid "Your email domain is not among those allowed on this site."
-msgstr ""
-
-#: src/Model/User.php:447
-msgid "Not a valid email address."
-msgstr ""
-
-#: src/Model/User.php:450
-msgid "The nickname was blocked from registration by the nodes admin."
-msgstr ""
-
-#: src/Model/User.php:454 src/Model/User.php:462
-msgid "Cannot use that email."
-msgstr ""
-
-#: src/Model/User.php:469
-msgid "Your nickname can only contain a-z, 0-9 and _."
-msgstr ""
-
-#: src/Model/User.php:476 src/Model/User.php:533
-msgid "Nickname is already registered. Please choose another."
-msgstr ""
-
-#: src/Model/User.php:486
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr ""
-
-#: src/Model/User.php:520 src/Model/User.php:524
-msgid "An error occurred during registration. Please try again."
-msgstr ""
-
-#: src/Model/User.php:549
-msgid "An error occurred creating your default profile. Please try again."
-msgstr ""
-
-#: src/Model/User.php:556
-msgid "An error occurred creating your self contact. Please try again."
-msgstr ""
-
-#: src/Model/User.php:561 src/Content/ContactSelector.php:171
-msgid "Friends"
-msgstr ""
-
-#: src/Model/User.php:565
-msgid ""
-"An error occurred creating your default contact group. Please try again."
-msgstr ""
-
-#: src/Model/User.php:639
-#, php-format
-msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tThank you for registering at %2$s. Your account is pending for "
-"approval by the administrator.\n"
-"\t\t"
-msgstr ""
-
-#: src/Model/User.php:649
-#, php-format
-msgid "Registration at %s"
-msgstr ""
-
-#: src/Model/User.php:667
-#, php-format
-msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tThank you for registering at %2$s. Your account has been created.\n"
-"\t\t"
-msgstr ""
-
-#: src/Model/User.php:671
-#, php-format
-msgid ""
-"\n"
-"\t\t\tThe login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%3$s\n"
-"\t\t\tLogin Name:\t\t%1$s\n"
-"\t\t\tPassword:\t\t%5$s\n"
-"\n"
-"\t\t\tYou may change your password from your account \"Settings\" page after "
-"logging\n"
-"\t\t\tin.\n"
-"\n"
-"\t\t\tPlease take a few moments to review the other account settings on that "
-"page.\n"
-"\n"
-"\t\t\tYou may also wish to add some basic information to your default "
-"profile\n"
-"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
-"\n"
-"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
-"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - "
-"and\n"
-"\t\t\tperhaps what country you live in; if you do not wish to be more "
-"specific\n"
-"\t\t\tthan that.\n"
-"\n"
-"\t\t\tWe fully respect your right to privacy, and none of these items are "
-"necessary.\n"
-"\t\t\tIf you are new and do not know anybody here, they may help\n"
-"\t\t\tyou to make some new and interesting friends.\n"
-"\n"
-"\t\t\tIf you ever want to delete your account, you can do so at %3$s/"
-"removeme\n"
-"\n"
-"\t\t\tThank you and welcome to %2$s."
-msgstr ""
-
-#: src/Model/Group.php:43
+#: src/Model/Group.php:46
 msgid ""
 "A deleted group with this name was revived. Existing item permissions "
 "<strong>may</strong> apply to this group and any future members. If this is "
 "not what you intended, please create another group with a different name."
 msgstr ""
 
-#: src/Model/Group.php:329
+#: src/Model/Group.php:332
 msgid "Default privacy group for new contacts"
 msgstr ""
 
-#: src/Model/Group.php:362
+#: src/Model/Group.php:365
 msgid "Everybody"
 msgstr ""
 
-#: src/Model/Group.php:382
+#: src/Model/Group.php:385
 msgid "edit"
 msgstr ""
 
-#: src/Model/Group.php:406
+#: src/Model/Group.php:409
 msgid "Edit group"
 msgstr ""
 
-#: src/Model/Group.php:409
+#: src/Model/Group.php:412
 msgid "Create a new group"
 msgstr ""
 
-#: src/Model/Group.php:411
+#: src/Model/Group.php:414
 msgid "Edit groups"
 msgstr ""
 
-#: src/Model/Profile.php:110
+#: src/Model/Mail.php:40 src/Model/Mail.php:172
+msgid "[no subject]"
+msgstr ""
+
+#: src/Model/Profile.php:111
 msgid "Requested account is not available."
 msgstr ""
 
-#: src/Model/Profile.php:176 src/Model/Profile.php:412
-#: src/Model/Profile.php:859
+#: src/Model/Profile.php:177 src/Model/Profile.php:413
+#: src/Model/Profile.php:860
 msgid "Edit profile"
 msgstr ""
 
-#: src/Model/Profile.php:346
+#: src/Model/Profile.php:347
 msgid "Atom feed"
 msgstr ""
 
-#: src/Model/Profile.php:385
+#: src/Model/Profile.php:386
 msgid "Manage/edit profiles"
 msgstr ""
 
-#: src/Model/Profile.php:563 src/Model/Profile.php:652
+#: src/Model/Profile.php:438 src/Module/Contact.php:650
+msgid "XMPP:"
+msgstr ""
+
+#: src/Model/Profile.php:564 src/Model/Profile.php:653
 msgid "g A l F d"
 msgstr ""
 
-#: src/Model/Profile.php:564
+#: src/Model/Profile.php:565
 msgid "F d"
 msgstr ""
 
-#: src/Model/Profile.php:617 src/Model/Profile.php:703
+#: src/Model/Profile.php:618 src/Model/Profile.php:704
 msgid "[today]"
 msgstr ""
 
-#: src/Model/Profile.php:628
+#: src/Model/Profile.php:629
 msgid "Birthday Reminders"
 msgstr ""
 
-#: src/Model/Profile.php:629
+#: src/Model/Profile.php:630
 msgid "Birthdays this week:"
 msgstr ""
 
-#: src/Model/Profile.php:690
+#: src/Model/Profile.php:691
 msgid "[No description]"
 msgstr ""
 
-#: src/Model/Profile.php:717
+#: src/Model/Profile.php:718
 msgid "Event Reminders"
 msgstr ""
 
-#: src/Model/Profile.php:718
+#: src/Model/Profile.php:719
 msgid "Upcoming events the next 7 days:"
 msgstr ""
 
-#: src/Model/Profile.php:741
+#: src/Model/Profile.php:742
 msgid "Member since:"
 msgstr ""
 
-#: src/Model/Profile.php:749
+#: src/Model/Profile.php:750
 msgid "j F, Y"
 msgstr ""
 
-#: src/Model/Profile.php:750
+#: src/Model/Profile.php:751
 msgid "j F"
 msgstr ""
 
-#: src/Model/Profile.php:765
+#: src/Model/Profile.php:766
 msgid "Age:"
 msgstr ""
 
-#: src/Model/Profile.php:778
+#: src/Model/Profile.php:779
 #, php-format
 msgid "for %1$d %2$s"
 msgstr ""
 
-#: src/Model/Profile.php:802
+#: src/Model/Profile.php:803
 msgid "Religion:"
 msgstr ""
 
-#: src/Model/Profile.php:810
+#: src/Model/Profile.php:811
 msgid "Hobbies/Interests:"
 msgstr ""
 
-#: src/Model/Profile.php:822
+#: src/Model/Profile.php:823
 msgid "Contact information and Social Networks:"
 msgstr ""
 
-#: src/Model/Profile.php:826
+#: src/Model/Profile.php:827
 msgid "Musical interests:"
 msgstr ""
 
-#: src/Model/Profile.php:830
+#: src/Model/Profile.php:831
 msgid "Books, literature:"
 msgstr ""
 
-#: src/Model/Profile.php:834
+#: src/Model/Profile.php:835
 msgid "Television:"
 msgstr ""
 
-#: src/Model/Profile.php:838
+#: src/Model/Profile.php:839
 msgid "Film/dance/culture/entertainment:"
 msgstr ""
 
-#: src/Model/Profile.php:842
+#: src/Model/Profile.php:843
 msgid "Love/Romance:"
 msgstr ""
 
-#: src/Model/Profile.php:846
+#: src/Model/Profile.php:847
 msgid "Work/employment:"
 msgstr ""
 
-#: src/Model/Profile.php:850
+#: src/Model/Profile.php:851
 msgid "School/education:"
 msgstr ""
 
-#: src/Model/Profile.php:855
+#: src/Model/Profile.php:856
 msgid "Forums:"
 msgstr ""
 
-#: src/Model/Profile.php:949
+#: src/Model/Profile.php:900 src/Module/Contact.php:867
+msgid "Profile Details"
+msgstr ""
+
+#: src/Model/Profile.php:950
 msgid "Only You Can See This"
 msgstr ""
 
-#: src/Model/Profile.php:957 src/Model/Profile.php:960
+#: src/Model/Profile.php:958 src/Model/Profile.php:961
 msgid "Tips for New Members"
 msgstr ""
 
-#: src/Model/Profile.php:1119
+#: src/Model/Profile.php:1123
 #, php-format
 msgid "OpenWebAuth: %1$s welcomes %2$s"
 msgstr ""
 
-#: src/Content/Widget.php:33
-msgid "Add New Contact"
+#: src/Model/User.php:205
+msgid "Login failed"
 msgstr ""
 
-#: src/Content/Widget.php:34
-msgid "Enter address or web location"
+#: src/Model/User.php:236
+msgid "Not enough information to authenticate"
 msgstr ""
 
-#: src/Content/Widget.php:35
-msgid "Example: bob@example.com, http://example.com/barbara"
+#: src/Model/User.php:428
+msgid "An invitation is required."
 msgstr ""
 
-#: src/Content/Widget.php:53
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Model/User.php:432
+msgid "Invitation could not be verified."
+msgstr ""
 
-#: src/Content/Widget.php:154
-msgid "Networks"
+#: src/Model/User.php:439
+msgid "Invalid OpenID url"
 msgstr ""
 
-#: src/Content/Widget.php:157
-msgid "All Networks"
+#: src/Model/User.php:452 src/Module/Login.php:106
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
 msgstr ""
 
-#: src/Content/Widget.php:195 src/Content/Feature.php:118
-msgid "Saved Folders"
+#: src/Model/User.php:452 src/Module/Login.php:106
+msgid "The error message was:"
 msgstr ""
 
-#: src/Content/Widget.php:198 src/Content/Widget.php:238
-msgid "Everything"
+#: src/Model/User.php:458
+msgid "Please enter the required information."
 msgstr ""
 
-#: src/Content/Widget.php:235
-msgid "Categories"
+#: src/Model/User.php:474
+#, php-format
+msgid ""
+"system.username_min_length (%s) and system.username_max_length (%s) are "
+"excluding each other, swapping values."
 msgstr ""
 
-#: src/Content/Widget.php:302
+#: src/Model/User.php:481
 #, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
+msgid "Username should be at least %s character."
+msgid_plural "Username should be at least %s characters."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Content/ContactSelector.php:54
-msgid "Frequently"
+#: src/Model/User.php:485
+#, php-format
+msgid "Username should be at most %s character."
+msgid_plural "Username should be at most %s characters."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Model/User.php:493
+msgid "That doesn't appear to be your full (First Last) name."
 msgstr ""
 
-#: src/Content/ContactSelector.php:55
-msgid "Hourly"
+#: src/Model/User.php:498
+msgid "Your email domain is not among those allowed on this site."
 msgstr ""
 
-#: src/Content/ContactSelector.php:56
-msgid "Twice daily"
+#: src/Model/User.php:502
+msgid "Not a valid email address."
+msgstr ""
+
+#: src/Model/User.php:505
+msgid "The nickname was blocked from registration by the nodes admin."
+msgstr ""
+
+#: src/Model/User.php:509 src/Model/User.php:517
+msgid "Cannot use that email."
+msgstr ""
+
+#: src/Model/User.php:524
+msgid "Your nickname can only contain a-z, 0-9 and _."
+msgstr ""
+
+#: src/Model/User.php:531 src/Model/User.php:588
+msgid "Nickname is already registered. Please choose another."
+msgstr ""
+
+#: src/Model/User.php:541
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr ""
+
+#: src/Model/User.php:575 src/Model/User.php:579
+msgid "An error occurred during registration. Please try again."
+msgstr ""
+
+#: src/Model/User.php:604
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+
+#: src/Model/User.php:611
+msgid "An error occurred creating your self contact. Please try again."
+msgstr ""
+
+#: src/Model/User.php:620
+msgid ""
+"An error occurred creating your default contact group. Please try again."
+msgstr ""
+
+#: src/Model/User.php:695
+#, php-format
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tThank you for registering at %2$s. Your account is pending for "
+"approval by the administrator.\n"
+"\n"
+"\t\t\tYour login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%3$s\n"
+"\t\t\tLogin Name:\t\t%4$s\n"
+"\t\t\tPassword:\t\t%5$s\n"
+"\t\t"
+msgstr ""
+
+#: src/Model/User.php:712
+#, php-format
+msgid "Registration at %s"
+msgstr ""
+
+#: src/Model/User.php:730
+#, php-format
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tThank you for registering at %2$s. Your account has been created.\n"
+"\t\t"
 msgstr ""
 
-#: src/Content/ContactSelector.php:57
-msgid "Daily"
+#: src/Model/User.php:736
+#, php-format
+msgid ""
+"\n"
+"\t\t\tThe login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%3$s\n"
+"\t\t\tLogin Name:\t\t%1$s\n"
+"\t\t\tPassword:\t\t%5$s\n"
+"\n"
+"\t\t\tYou may change your password from your account \"Settings\" page after "
+"logging\n"
+"\t\t\tin.\n"
+"\n"
+"\t\t\tPlease take a few moments to review the other account settings on that "
+"page.\n"
+"\n"
+"\t\t\tYou may also wish to add some basic information to your default "
+"profile\n"
+"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
+"\n"
+"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
+"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - "
+"and\n"
+"\t\t\tperhaps what country you live in; if you do not wish to be more "
+"specific\n"
+"\t\t\tthan that.\n"
+"\n"
+"\t\t\tWe fully respect your right to privacy, and none of these items are "
+"necessary.\n"
+"\t\t\tIf you are new and do not know anybody here, they may help\n"
+"\t\t\tyou to make some new and interesting friends.\n"
+"\n"
+"\t\t\tIf you ever want to delete your account, you can do so at %3$s/"
+"removeme\n"
+"\n"
+"\t\t\tThank you and welcome to %2$s."
 msgstr ""
 
-#: src/Content/ContactSelector.php:58
-msgid "Weekly"
+#: src/Protocol/Diaspora.php:2433
+msgid "Sharing notification from Diaspora network"
 msgstr ""
 
-#: src/Content/ContactSelector.php:59
-msgid "Monthly"
+#: src/Protocol/Diaspora.php:3527
+msgid "Attachments:"
 msgstr ""
 
-#: src/Content/ContactSelector.php:79
-msgid "OStatus"
+#: src/Protocol/OStatus.php:1824
+#, php-format
+msgid "%s is now following %s."
 msgstr ""
 
-#: src/Content/ContactSelector.php:80
-msgid "RSS/Atom"
+#: src/Protocol/OStatus.php:1825
+msgid "following"
 msgstr ""
 
-#: src/Content/ContactSelector.php:83
-msgid "Zot!"
+#: src/Protocol/OStatus.php:1828
+#, php-format
+msgid "%s stopped following %s."
 msgstr ""
 
-#: src/Content/ContactSelector.php:84
-msgid "LinkedIn"
+#: src/Protocol/OStatus.php:1829
+msgid "stopped following"
 msgstr ""
 
-#: src/Content/ContactSelector.php:85
-msgid "XMPP/IM"
+#: src/Worker/Delivery.php:427
+msgid "(no subject)"
 msgstr ""
 
-#: src/Content/ContactSelector.php:86
-msgid "MySpace"
-msgstr ""
+#: src/Module/Contact.php:169
+#, php-format
+msgid "%d contact edited."
+msgid_plural "%d contacts edited."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/Content/ContactSelector.php:87
-msgid "Google+"
+#: src/Module/Contact.php:194 src/Module/Contact.php:377
+msgid "Could not access contact record."
 msgstr ""
 
-#: src/Content/ContactSelector.php:88
-msgid "pump.io"
+#: src/Module/Contact.php:204
+msgid "Could not locate selected profile."
 msgstr ""
 
-#: src/Content/ContactSelector.php:89
-msgid "Twitter"
+#: src/Module/Contact.php:236
+msgid "Contact updated."
 msgstr ""
 
-#: src/Content/ContactSelector.php:90
-msgid "Diaspora Connector"
+#: src/Module/Contact.php:398
+msgid "Contact has been blocked"
 msgstr ""
 
-#: src/Content/ContactSelector.php:91
-msgid "GNU Social Connector"
+#: src/Module/Contact.php:398
+msgid "Contact has been unblocked"
 msgstr ""
 
-#: src/Content/ContactSelector.php:92
-msgid "ActivityPub"
+#: src/Module/Contact.php:408
+msgid "Contact has been ignored"
 msgstr ""
 
-#: src/Content/ContactSelector.php:93
-msgid "pnut"
+#: src/Module/Contact.php:408
+msgid "Contact has been unignored"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Male"
+#: src/Module/Contact.php:418
+msgid "Contact has been archived"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Female"
+#: src/Module/Contact.php:418
+msgid "Contact has been unarchived"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Currently Male"
+#: src/Module/Contact.php:442
+msgid "Drop contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Currently Female"
+#: src/Module/Contact.php:445 src/Module/Contact.php:815
+msgid "Do you really want to delete this contact?"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Mostly Male"
+#: src/Module/Contact.php:459
+msgid "Contact has been removed."
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Mostly Female"
+#: src/Module/Contact.php:490
+#, php-format
+msgid "You are mutual friends with %s"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Transgender"
+#: src/Module/Contact.php:495
+#, php-format
+msgid "You are sharing with %s"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Intersex"
+#: src/Module/Contact.php:500
+#, php-format
+msgid "%s is sharing with you"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Transsexual"
+#: src/Module/Contact.php:524
+msgid "Private communications are not available for this contact."
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Hermaphrodite"
+#: src/Module/Contact.php:526
+msgid "Never"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Neuter"
+#: src/Module/Contact.php:529
+msgid "(Update was successful)"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Non-specific"
+#: src/Module/Contact.php:529
+msgid "(Update was not successful)"
 msgstr ""
 
-#: src/Content/ContactSelector.php:127
-msgid "Other"
+#: src/Module/Contact.php:531 src/Module/Contact.php:1053
+msgid "Suggest friends"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Males"
+#: src/Module/Contact.php:535
+#, php-format
+msgid "Network type: %s"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Females"
+#: src/Module/Contact.php:540
+msgid "Communications lost with this contact!"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Gay"
+#: src/Module/Contact.php:546
+msgid "Fetch further information for feeds"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Lesbian"
+#: src/Module/Contact.php:548
+msgid ""
+"Fetch information like preview pictures, title and teaser from the feed "
+"item. You can activate this if the feed doesn't contain much text. Keywords "
+"are taken from the meta header in the feed item and are posted as hash tags."
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "No Preference"
+#: src/Module/Contact.php:551
+msgid "Fetch information"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Bisexual"
+#: src/Module/Contact.php:552
+msgid "Fetch keywords"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Autosexual"
+#: src/Module/Contact.php:553
+msgid "Fetch information and keywords"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Abstinent"
+#: src/Module/Contact.php:585
+msgid "Profile Visibility"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Virgin"
+#: src/Module/Contact.php:586
+msgid "Contact Information / Notes"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Deviant"
+#: src/Module/Contact.php:587
+msgid "Contact Settings"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Fetish"
+#: src/Module/Contact.php:596
+msgid "Contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Oodles"
+#: src/Module/Contact.php:600
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
 msgstr ""
 
-#: src/Content/ContactSelector.php:149
-msgid "Nonsexual"
+#: src/Module/Contact.php:602
+msgid "Their personal note"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Single"
+#: src/Module/Contact.php:604
+msgid "Edit contact notes"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Lonely"
+#: src/Module/Contact.php:608
+msgid "Block/Unblock contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Available"
+#: src/Module/Contact.php:609
+msgid "Ignore contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Unavailable"
+#: src/Module/Contact.php:610
+msgid "Repair URL settings"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Has crush"
+#: src/Module/Contact.php:611
+msgid "View conversations"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Infatuated"
+#: src/Module/Contact.php:616
+msgid "Last update:"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Dating"
+#: src/Module/Contact.php:618
+msgid "Update public posts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Unfaithful"
+#: src/Module/Contact.php:620 src/Module/Contact.php:1063
+msgid "Update now"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Sex Addict"
+#: src/Module/Contact.php:626 src/Module/Contact.php:820
+#: src/Module/Contact.php:1080
+msgid "Unignore"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Friends/Benefits"
+#: src/Module/Contact.php:630
+msgid "Currently blocked"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Casual"
+#: src/Module/Contact.php:631
+msgid "Currently ignored"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Engaged"
+#: src/Module/Contact.php:632
+msgid "Currently archived"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Married"
+#: src/Module/Contact.php:633
+msgid "Awaiting connection acknowledge"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Imaginarily married"
+#: src/Module/Contact.php:634
+msgid ""
+"Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Partners"
+#: src/Module/Contact.php:635
+msgid "Notification for new posts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Cohabiting"
+#: src/Module/Contact.php:635
+msgid "Send a notification of every new post of this contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Common law"
+#: src/Module/Contact.php:638
+msgid "Blacklisted keywords"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Happy"
+#: src/Module/Contact.php:638
+msgid ""
+"Comma separated list of keywords that should not be converted to hashtags, "
+"when \"Fetch information and keywords\" is selected"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Not looking"
+#: src/Module/Contact.php:655
+msgid "Actions"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Swinger"
+#: src/Module/Contact.php:701
+msgid "Suggestions"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Betrayed"
+#: src/Module/Contact.php:704
+msgid "Suggest potential friends"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Separated"
+#: src/Module/Contact.php:712
+msgid "Show all contacts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Unstable"
+#: src/Module/Contact.php:717
+msgid "Unblocked"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Divorced"
+#: src/Module/Contact.php:720
+msgid "Only show unblocked contacts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Imaginarily divorced"
+#: src/Module/Contact.php:725
+msgid "Blocked"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Widowed"
+#: src/Module/Contact.php:728
+msgid "Only show blocked contacts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Uncertain"
+#: src/Module/Contact.php:733
+msgid "Ignored"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "It's complicated"
+#: src/Module/Contact.php:736
+msgid "Only show ignored contacts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Don't care"
+#: src/Module/Contact.php:741
+msgid "Archived"
 msgstr ""
 
-#: src/Content/ContactSelector.php:171
-msgid "Ask me"
+#: src/Module/Contact.php:744
+msgid "Only show archived contacts"
 msgstr ""
 
-#: src/Content/Feature.php:79
-msgid "General Features"
+#: src/Module/Contact.php:749
+msgid "Hidden"
 msgstr ""
 
-#: src/Content/Feature.php:81
-msgid "Multiple Profiles"
+#: src/Module/Contact.php:752
+msgid "Only show hidden contacts"
 msgstr ""
 
-#: src/Content/Feature.php:81
-msgid "Ability to create multiple profiles"
+#: src/Module/Contact.php:810
+msgid "Search your contacts"
 msgstr ""
 
-#: src/Content/Feature.php:82
-msgid "Photo Location"
+#: src/Module/Contact.php:821 src/Module/Contact.php:1089
+msgid "Archive"
 msgstr ""
 
-#: src/Content/Feature.php:82
-msgid ""
-"Photo metadata is normally stripped. This extracts the location (if present) "
-"prior to stripping metadata and links it to a map."
+#: src/Module/Contact.php:821 src/Module/Contact.php:1089
+msgid "Unarchive"
 msgstr ""
 
-#: src/Content/Feature.php:83
-msgid "Export Public Calendar"
+#: src/Module/Contact.php:824
+msgid "Batch Actions"
 msgstr ""
 
-#: src/Content/Feature.php:83
-msgid "Ability for visitors to download the public calendar"
+#: src/Module/Contact.php:851
+msgid "Conversations started by this contact"
 msgstr ""
 
-#: src/Content/Feature.php:88
-msgid "Post Composition Features"
+#: src/Module/Contact.php:856
+msgid "Posts and Comments"
 msgstr ""
 
-#: src/Content/Feature.php:89
-msgid "Post Preview"
+#: src/Module/Contact.php:879
+msgid "View all contacts"
 msgstr ""
 
-#: src/Content/Feature.php:89
-msgid "Allow previewing posts and comments before publishing them"
+#: src/Module/Contact.php:890
+msgid "View all common friends"
 msgstr ""
 
-#: src/Content/Feature.php:90
-msgid "Auto-mention Forums"
+#: src/Module/Contact.php:900
+msgid "Advanced Contact Settings"
 msgstr ""
-
-#: src/Content/Feature.php:90
-msgid ""
-"Add/remove mention when a forum page is selected/deselected in ACL window."
+
+#: src/Module/Contact.php:986
+msgid "Mutual Friendship"
 msgstr ""
 
-#: src/Content/Feature.php:95
-msgid "Network Sidebar"
+#: src/Module/Contact.php:991
+msgid "is a fan of yours"
 msgstr ""
 
-#: src/Content/Feature.php:96
-msgid "Ability to select posts by date ranges"
+#: src/Module/Contact.php:996
+msgid "you are a fan of"
 msgstr ""
 
-#: src/Content/Feature.php:97 src/Content/Feature.php:127
-msgid "List Forums"
+#: src/Module/Contact.php:1020
+msgid "Edit contact"
 msgstr ""
 
-#: src/Content/Feature.php:97
-msgid "Enable widget to display the forums your are connected with"
+#: src/Module/Contact.php:1074
+msgid "Toggle Blocked status"
 msgstr ""
 
-#: src/Content/Feature.php:98
-msgid "Group Filter"
+#: src/Module/Contact.php:1082
+msgid "Toggle Ignored status"
 msgstr ""
 
-#: src/Content/Feature.php:98
-msgid "Enable widget to display Network posts only from selected group"
+#: src/Module/Contact.php:1091
+msgid "Toggle Archive status"
 msgstr ""
 
-#: src/Content/Feature.php:99
-msgid "Network Filter"
+#: src/Module/Contact.php:1099
+msgid "Delete contact"
 msgstr ""
 
-#: src/Content/Feature.php:99
-msgid "Enable widget to display Network posts only from selected network"
+#: src/Module/Install.php:118
+msgid "Friendica Communctions Server - Setup"
 msgstr ""
 
-#: src/Content/Feature.php:100
-msgid "Save search terms for re-use"
+#: src/Module/Install.php:129
+msgid "System check"
 msgstr ""
 
-#: src/Content/Feature.php:105
-msgid "Network Tabs"
+#: src/Module/Install.php:132
+msgid "Please see the file \"Install.txt\"."
 msgstr ""
 
-#: src/Content/Feature.php:106
-msgid "Network Personal Tab"
+#: src/Module/Install.php:134
+msgid "Check again"
 msgstr ""
 
-#: src/Content/Feature.php:106
-msgid "Enable tab to display only Network posts that you've interacted on"
+#: src/Module/Install.php:151
+msgid "Database connection"
 msgstr ""
 
-#: src/Content/Feature.php:107
-msgid "Network New Tab"
+#: src/Module/Install.php:152
+msgid ""
+"In order to install Friendica we need to know how to connect to your "
+"database."
 msgstr ""
 
-#: src/Content/Feature.php:107
-msgid "Enable tab to display only new Network posts (from the last 12 hours)"
+#: src/Module/Install.php:153
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
 msgstr ""
 
-#: src/Content/Feature.php:108
-msgid "Network Shared Links Tab"
+#: src/Module/Install.php:154
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
 msgstr ""
 
-#: src/Content/Feature.php:108
-msgid "Enable tab to display only Network posts with links in them"
+#: src/Module/Install.php:157
+msgid "Database Server Name"
 msgstr ""
 
-#: src/Content/Feature.php:113
-msgid "Post/Comment Tools"
+#: src/Module/Install.php:162
+msgid "Database Login Name"
 msgstr ""
 
-#: src/Content/Feature.php:114
-msgid "Multiple Deletion"
+#: src/Module/Install.php:168
+msgid "Database Login Password"
 msgstr ""
 
-#: src/Content/Feature.php:114
-msgid "Select and delete multiple posts/comments at once"
+#: src/Module/Install.php:170
+msgid "For security reasons the password must not be empty"
 msgstr ""
 
-#: src/Content/Feature.php:115
-msgid "Edit Sent Posts"
+#: src/Module/Install.php:173
+msgid "Database Name"
 msgstr ""
 
-#: src/Content/Feature.php:115
-msgid "Edit and correct posts and comments after sending"
+#: src/Module/Install.php:178 src/Module/Install.php:214
+msgid "Site administrator email address"
 msgstr ""
 
-#: src/Content/Feature.php:116
-msgid "Tagging"
+#: src/Module/Install.php:180 src/Module/Install.php:214
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
 msgstr ""
 
-#: src/Content/Feature.php:116
-msgid "Ability to tag existing posts"
+#: src/Module/Install.php:184 src/Module/Install.php:215
+msgid "Please select a default timezone for your website"
 msgstr ""
 
-#: src/Content/Feature.php:117
-msgid "Post Categories"
+#: src/Module/Install.php:208
+msgid "Site settings"
 msgstr ""
 
-#: src/Content/Feature.php:117
-msgid "Add categories to your posts"
+#: src/Module/Install.php:217
+msgid "System Language:"
 msgstr ""
 
-#: src/Content/Feature.php:118
-msgid "Ability to file posts under folders"
+#: src/Module/Install.php:219
+msgid ""
+"Set the default language for your Friendica installation interface and to "
+"send emails."
 msgstr ""
 
-#: src/Content/Feature.php:119
-msgid "Dislike Posts"
+#: src/Module/Install.php:231
+msgid "Your Friendica site database has been installed."
 msgstr ""
 
-#: src/Content/Feature.php:119
-msgid "Ability to dislike posts/comments"
+#: src/Module/Install.php:239
+msgid "Installation finished"
 msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Star Posts"
+#: src/Module/Install.php:260
+msgid "<h1>What next</h1>"
 msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Ability to mark special posts with a star indicator"
+#: src/Module/Install.php:261
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the worker."
 msgstr ""
 
-#: src/Content/Feature.php:121
-msgid "Mute Post Notifications"
+#: src/Module/Install.php:264
+#, php-format
+msgid ""
+"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
+"and register as new user. Remember to use the same email you have entered as "
+"administrator email. This will allow you to enter the site admin panel."
 msgstr ""
 
-#: src/Content/Feature.php:121
-msgid "Ability to mute notifications for a thread"
+#: src/Module/Itemsource.php:32
+msgid "Item Guid"
 msgstr ""
 
-#: src/Content/Feature.php:126
-msgid "Advanced Profile Settings"
+#: src/Module/Login.php:290
+msgid "Create a New Account"
 msgstr ""
 
-#: src/Content/Feature.php:127
-msgid "Show visitors public community forums at the Advanced Profile Page"
+#: src/Module/Login.php:323
+msgid "Password: "
 msgstr ""
 
-#: src/Content/Feature.php:128
-msgid "Tag Cloud"
+#: src/Module/Login.php:324
+msgid "Remember me"
 msgstr ""
 
-#: src/Content/Feature.php:128
-msgid "Provide a personal tag cloud on your profile page"
+#: src/Module/Login.php:327
+msgid "Or login using OpenID: "
 msgstr ""
 
-#: src/Content/Feature.php:129
-msgid "Display Membership Date"
+#: src/Module/Login.php:333
+msgid "Forgot your password?"
 msgstr ""
 
-#: src/Content/Feature.php:129
-msgid "Display membership date in profile"
+#: src/Module/Login.php:336
+msgid "Website Terms of Service"
 msgstr ""
 
-#: src/Content/Nav.php:53
-msgid "Nothing new here"
+#: src/Module/Login.php:337
+msgid "terms of service"
 msgstr ""
 
-#: src/Content/Nav.php:57
-msgid "Clear notifications"
+#: src/Module/Login.php:339
+msgid "Website Privacy Policy"
 msgstr ""
 
-#: src/Content/Nav.php:105
-msgid "Personal notes"
+#: src/Module/Login.php:340
+msgid "privacy policy"
 msgstr ""
 
-#: src/Content/Nav.php:105
-msgid "Your personal notes"
+#: src/Module/Logout.php:29
+msgid "Logged out."
 msgstr ""
 
-#: src/Content/Nav.php:114
-msgid "Sign in"
+#: src/Module/Proxy.php:136
+msgid "Bad Request."
 msgstr ""
 
-#: src/Content/Nav.php:124
-msgid "Home Page"
+#: src/Module/Tos.php:34 src/Module/Tos.php:74
+msgid ""
+"At the time of registration, and for providing communications between the "
+"user account and their contacts, the user has to provide a display name (pen "
+"name), an username (nickname) and a working email address. The names will be "
+"accessible on the profile page of the account by any visitor of the page, "
+"even if other profile details are not displayed. The email address will only "
+"be used to send the user notifications about interactions, but wont be "
+"visibly displayed. The listing of an account in the node's user directory or "
+"the global user directory is optional and can be controlled in the user "
+"settings, it is not necessary for communication."
 msgstr ""
 
-#: src/Content/Nav.php:128
-msgid "Create an account"
+#: src/Module/Tos.php:35 src/Module/Tos.php:75
+msgid ""
+"This data is required for communication and is passed on to the nodes of the "
+"communication partners and is stored there. Users can enter additional "
+"private data that may be transmitted to the communication partners accounts."
 msgstr ""
 
-#: src/Content/Nav.php:134
-msgid "Help and documentation"
+#: src/Module/Tos.php:36 src/Module/Tos.php:76
+#, php-format
+msgid ""
+"At any point in time a logged in user can export their account data from the "
+"<a href=\"%1$s/settings/uexport\">account settings</a>. If the user wants to "
+"delete their account they can do so at <a href=\"%1$s/removeme\">%1$s/"
+"removeme</a>. The deletion of the account will be permanent. Deletion of the "
+"data will also be requested from the nodes of the communication partners."
 msgstr ""
 
-#: src/Content/Nav.php:138
-msgid "Apps"
+#: src/Module/Tos.php:39 src/Module/Tos.php:73
+msgid "Privacy Statement"
 msgstr ""
 
-#: src/Content/Nav.php:138
-msgid "Addon applications, utilities, games"
+#: src/Object/Post.php:131
+msgid "This entry was edited"
 msgstr ""
 
-#: src/Content/Nav.php:142
-msgid "Search site content"
+#: src/Object/Post.php:191
+msgid "Delete globally"
 msgstr ""
 
-#: src/Content/Nav.php:166
-msgid "Community"
+#: src/Object/Post.php:191
+msgid "Remove locally"
 msgstr ""
 
-#: src/Content/Nav.php:166
-msgid "Conversations on this and other servers"
+#: src/Object/Post.php:204
+msgid "save to folder"
 msgstr ""
 
-#: src/Content/Nav.php:173
-msgid "Directory"
+#: src/Object/Post.php:239
+msgid "I will attend"
 msgstr ""
 
-#: src/Content/Nav.php:173
-msgid "People directory"
+#: src/Object/Post.php:239
+msgid "I will not attend"
 msgstr ""
 
-#: src/Content/Nav.php:175
-msgid "Information about this friendica instance"
+#: src/Object/Post.php:239
+msgid "I might attend"
 msgstr ""
 
-#: src/Content/Nav.php:178
-msgid "Terms of Service of this Friendica instance"
+#: src/Object/Post.php:266
+msgid "ignore thread"
 msgstr ""
 
-#: src/Content/Nav.php:184
-msgid "Network Reset"
+#: src/Object/Post.php:267
+msgid "unignore thread"
 msgstr ""
 
-#: src/Content/Nav.php:184
-msgid "Load Network page with no filters"
+#: src/Object/Post.php:268
+msgid "toggle ignore status"
 msgstr ""
 
-#: src/Content/Nav.php:190
-msgid "Friend Requests"
+#: src/Object/Post.php:279
+msgid "add star"
 msgstr ""
 
-#: src/Content/Nav.php:192
-msgid "See all notifications"
+#: src/Object/Post.php:280
+msgid "remove star"
 msgstr ""
 
-#: src/Content/Nav.php:193
-msgid "Mark all system notifications seen"
+#: src/Object/Post.php:281
+msgid "toggle star status"
 msgstr ""
 
-#: src/Content/Nav.php:197
-msgid "Inbox"
+#: src/Object/Post.php:284
+msgid "starred"
 msgstr ""
 
-#: src/Content/Nav.php:198
-msgid "Outbox"
+#: src/Object/Post.php:289
+msgid "add tag"
 msgstr ""
 
-#: src/Content/Nav.php:202
-msgid "Manage"
+#: src/Object/Post.php:300
+msgid "like"
 msgstr ""
 
-#: src/Content/Nav.php:202
-msgid "Manage other pages"
+#: src/Object/Post.php:301
+msgid "dislike"
 msgstr ""
 
-#: src/Content/Nav.php:210
-msgid "Manage/Edit Profiles"
+#: src/Object/Post.php:304
+msgid "Share this"
 msgstr ""
 
-#: src/Content/Nav.php:218
-msgid "Site setup and configuration"
+#: src/Object/Post.php:304
+msgid "share"
 msgstr ""
 
-#: src/Content/Nav.php:221
-msgid "Navigation"
+#: src/Object/Post.php:371
+msgid "to"
 msgstr ""
 
-#: src/Content/Nav.php:221
-msgid "Site map"
+#: src/Object/Post.php:372
+msgid "via"
 msgstr ""
 
-#: src/Content/Widget/CalendarExport.php:65
-msgid "Export"
+#: src/Object/Post.php:373
+msgid "Wall-to-Wall"
 msgstr ""
 
-#: src/Content/Widget/CalendarExport.php:66
-msgid "Export calendar as ical"
+#: src/Object/Post.php:374
+msgid "via Wall-To-Wall:"
 msgstr ""
 
-#: src/Content/Widget/CalendarExport.php:67
-msgid "Export calendar as csv"
+#: src/Object/Post.php:433
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/App.php:784
+msgid "Delete this item?"
 msgstr ""
 
-#: src/Content/OEmbed.php:256
-msgid "Embedding disabled"
+#: src/App.php:786
+msgid "show fewer"
 msgstr ""
 
-#: src/Content/OEmbed.php:376
-msgid "Embedded content"
+#: src/App.php:828
+msgid "toggle mobile"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:422
-msgid "view full size"
+#: src/App.php:1473
+msgid "No system theme config value set."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:854 src/Content/Text/BBCode.php:1623
-#: src/Content/Text/BBCode.php:1624
-msgid "Image/photo"
+#: src/BaseModule.php:133
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1550 src/Content/Text/BBCode.php:1572
-msgid "$1 wrote:"
+#: src/LegacyModule.php:29
+#, php-format
+msgid "Legacy module file not found: %s"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1632 src/Content/Text/BBCode.php:1633
-msgid "Encrypted content"
+#: boot.php:549
+#, php-format
+msgid "Update %s failed. See error logs."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1752
-msgid "Invalid source protocol"
+#: update.php:194
+#, php-format
+msgid "%s: Updating author-id and owner-id in item and thread table. "
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1763
-msgid "Invalid link protocol"
+#: update.php:240
+#, php-format
+msgid "%s: Updating post-type."
 msgstr ""
index 841fe98d153f187e214dad57653b49bccd70f9e1..56dacd332fb674dc15908b1c456253188b90f069 100644 (file)
 # Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016-2018
 # zottel <transifex@zottel.net>, 2011-2012
 # tschlotfeldt <ts+transifex@ml.tschlotfeldt.de>, 2011
+# Vinzenz Vietzke <vinz@vinzv.de>, 2018
 msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-09-27 21:18+0000\n"
-"PO-Revision-Date: 2018-10-06 08:11+0000\n"
-"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
+"PO-Revision-Date: 2018-10-28 12:07+0000\n"
+"Last-Translator: Vinzenz Vietzke <vinz@vinzv.de>\n"
 "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -85,16 +86,16 @@ msgstr "Zugriff verweigert"
 #: mod/profile_photo.php:198 mod/wall_attach.php:80 mod/wall_attach.php:83
 #: mod/item.php:166 mod/uimport.php:15 mod/cal.php:306 mod/regmod.php:108
 #: mod/editpost.php:19 mod/fsuggest.php:80 mod/allfriends.php:23
-#: mod/contacts.php:387 mod/events.php:195 mod/follow.php:54
-#: mod/follow.php:118 mod/attach.php:39 mod/poke.php:144 mod/invite.php:21
-#: mod/invite.php:112 mod/notes.php:32 mod/profiles.php:179
-#: mod/profiles.php:511 mod/photos.php:183 mod/photos.php:1067
+#: mod/contact.php:387 mod/events.php:195 mod/follow.php:54 mod/follow.php:118
+#: mod/attach.php:39 mod/poke.php:144 mod/invite.php:21 mod/invite.php:112
+#: mod/notes.php:32 mod/profiles.php:179 mod/profiles.php:511
+#: mod/photos.php:183 mod/photos.php:1067
 msgid "Permission denied."
 msgstr "Zugriff verweigert."
 
 #: index.php:464
 msgid "toggle mobile"
-msgstr "auf/von Mobile Ansicht wechseln"
+msgstr "mobile Ansicht umschalten"
 
 #: view/theme/duepuntozero/config.php:54 src/Model/User.php:544
 msgid "default"
@@ -128,7 +129,7 @@ msgstr "slackr"
 #: view/theme/vier/config.php:119 view/theme/frio/config.php:118
 #: mod/crepair.php:150 mod/install.php:204 mod/install.php:242
 #: mod/manage.php:184 mod/message.php:264 mod/message.php:430
-#: mod/fsuggest.php:114 mod/contacts.php:631 mod/events.php:560
+#: mod/fsuggest.php:114 mod/contact.php:631 mod/events.php:560
 #: mod/localtime.php:56 mod/poke.php:194 mod/invite.php:155
 #: mod/profiles.php:577 mod/photos.php:1096 mod/photos.php:1182
 #: mod/photos.php:1454 mod/photos.php:1499 mod/photos.php:1538
@@ -220,7 +221,7 @@ msgstr "Name oder Interessen eingeben"
 
 #: view/theme/vier/theme.php:199 include/conversation.php:881
 #: mod/dirfind.php:231 mod/match.php:90 mod/suggest.php:86
-#: mod/allfriends.php:76 mod/contacts.php:611 mod/follow.php:143
+#: mod/allfriends.php:76 mod/contact.php:611 mod/follow.php:143
 #: src/Model/Contact.php:944 src/Content/Widget.php:61
 msgid "Connect/Follow"
 msgstr "Verbinden/Folgen"
@@ -229,7 +230,7 @@ msgstr "Verbinden/Folgen"
 msgid "Examples: Robert Morgenstein, Fishing"
 msgstr "Beispiel: Robert Morgenstein, Angeln"
 
-#: view/theme/vier/theme.php:201 mod/directory.php:214 mod/contacts.php:845
+#: view/theme/vier/theme.php:201 mod/directory.php:214 mod/contact.php:845
 #: src/Content/Widget.php:63
 msgid "Find"
 msgstr "Finde"
@@ -323,7 +324,7 @@ msgstr "Hintergrundbild festlegen"
 
 #: view/theme/frio/config.php:128
 msgid "Background image style"
-msgstr "Stiel des Hintergrundbildes"
+msgstr "Stil des Hintergrundbildes"
 
 #: view/theme/frio/config.php:133
 msgid "Login page background image"
@@ -354,7 +355,7 @@ msgstr "Abmelden"
 msgid "End this session"
 msgstr "Diese Sitzung beenden"
 
-#: view/theme/frio/theme.php:269 mod/contacts.php:690 mod/contacts.php:880
+#: view/theme/frio/theme.php:269 mod/contact.php:690 mod/contact.php:880
 #: src/Model/Profile.php:888 src/Content/Nav.php:100
 msgid "Status"
 msgstr "Status"
@@ -365,7 +366,7 @@ msgid "Your posts and conversations"
 msgstr "Deine Beiträge und Unterhaltungen"
 
 #: view/theme/frio/theme.php:270 mod/newmember.php:24 mod/profperm.php:116
-#: mod/contacts.php:692 mod/contacts.php:896 src/Model/Profile.php:730
+#: mod/contact.php:692 mod/contact.php:896 src/Model/Profile.php:730
 #: src/Model/Profile.php:863 src/Model/Profile.php:896 src/Content/Nav.php:101
 msgid "Profile"
 msgstr "Profil"
@@ -434,14 +435,14 @@ msgid "Account settings"
 msgstr "Kontoeinstellungen"
 
 #: view/theme/frio/theme.php:280 include/text.php:906 mod/viewcontacts.php:125
-#: mod/contacts.php:839 mod/contacts.php:908 src/Model/Profile.php:967
+#: mod/contact.php:839 mod/contact.php:908 src/Model/Profile.php:967
 #: src/Model/Profile.php:970 src/Content/Nav.php:147 src/Content/Nav.php:213
 msgid "Contacts"
 msgstr "Kontakte"
 
 #: view/theme/frio/theme.php:280 src/Content/Nav.php:213
 msgid "Manage/edit friends and contacts"
-msgstr " Kontakte verwalten/editieren"
+msgstr "Freunde und Kontakte verwalten/bearbeiten"
 
 #: view/theme/frio/theme.php:367 include/conversation.php:866
 msgid "Follow Thread"
@@ -509,15 +510,15 @@ msgstr "Möchtest Du wirklich dieses Item löschen?"
 #: mod/settings.php:1153 mod/settings.php:1154 mod/settings.php:1155
 #: mod/settings.php:1156 mod/settings.php:1157 mod/register.php:237
 #: mod/message.php:154 mod/suggest.php:40 mod/dfrn_request.php:645
-#: mod/api.php:110 mod/contacts.php:471 mod/follow.php:150
-#: mod/profiles.php:541 mod/profiles.php:544 mod/profiles.php:566
+#: mod/api.php:110 mod/contact.php:471 mod/follow.php:150 mod/profiles.php:541
+#: mod/profiles.php:544 mod/profiles.php:566
 msgid "Yes"
 msgstr "Ja"
 
 #: include/items.php:399 include/conversation.php:1179 mod/videos.php:146
 #: mod/settings.php:676 mod/settings.php:702 mod/unfollow.php:130
 #: mod/message.php:157 mod/tagrm.php:19 mod/tagrm.php:91 mod/suggest.php:43
-#: mod/dfrn_request.php:655 mod/editpost.php:146 mod/contacts.php:474
+#: mod/dfrn_request.php:655 mod/editpost.php:146 mod/contact.php:474
 #: mod/follow.php:161 mod/fbrowser.php:104 mod/fbrowser.php:135
 #: mod/photos.php:255 mod/photos.php:327
 msgid "Cancel"
@@ -620,7 +621,7 @@ msgid "Select"
 msgstr "Auswählen"
 
 #: include/conversation.php:627 mod/settings.php:736 mod/admin.php:1906
-#: mod/contacts.php:855 mod/contacts.php:1133 mod/photos.php:1567
+#: mod/contact.php:855 mod/contact.php:1133 mod/photos.php:1567
 msgid "Delete"
 msgstr "Löschen"
 
@@ -2055,7 +2056,7 @@ msgstr "Neues Video hochladen"
 msgid "Only logged in users are permitted to perform a probing."
 msgstr "Nur eingeloggten Benutzern ist das Untersuchen von Adressen gestattet."
 
-#: mod/directory.php:151 mod/notifications.php:248 mod/contacts.php:681
+#: mod/directory.php:151 mod/notifications.php:248 mod/contact.php:681
 #: mod/events.php:548 src/Model/Event.php:67 src/Model/Event.php:94
 #: src/Model/Event.php:431 src/Model/Event.php:922 src/Model/Profile.php:430
 msgid "Location:"
@@ -2074,7 +2075,7 @@ msgstr "Status:"
 msgid "Homepage:"
 msgstr "Homepage:"
 
-#: mod/directory.php:159 mod/notifications.php:250 mod/contacts.php:685
+#: mod/directory.php:159 mod/notifications.php:250 mod/contact.php:685
 #: src/Model/Profile.php:436 src/Model/Profile.php:806
 msgid "About:"
 msgstr "Über:"
@@ -2155,7 +2156,7 @@ msgstr "Konto löschen"
 msgid "Missing some important data!"
 msgstr "Wichtige Daten fehlen!"
 
-#: mod/settings.php:176 mod/settings.php:701 mod/contacts.php:851
+#: mod/settings.php:176 mod/settings.php:701 mod/contact.php:851
 msgid "Update"
 msgstr "Aktualisierungen"
 
@@ -2335,7 +2336,7 @@ msgstr "Allgemeine Einstellungen zu Sozialen Medien"
 
 #: mod/settings.php:846
 msgid "Disable Content Warning"
-msgstr "Inhaltswarnungen ausschalten"
+msgstr "Inhaltswarnung ausschalten"
 
 #: mod/settings.php:846
 msgid ""
@@ -2343,7 +2344,7 @@ msgid ""
 " field which collapse their post by default. This disables the automatic "
 "collapsing and sets the content warning as the post title. Doesn't affect "
 "any other content filtering you eventually set up."
-msgstr "Nutzer von anderen Netzwerken, wie z.B. Mastodon oder Pleroma, können Inhaltswarnungen, welche die Beiträge standardmäßig einklappen. Diese Einstellung deaktiviert das automatische Einklappt solcher Beiträge und setzt die Inhaltswarnung als Titel des Beitrags. Wenn du andere Filtereinstellungen vorgenommen hast, werden diese hierdurch nicht beeinflusst."
+msgstr "Benutzer in Netzwerken wie Mastodon oder Pleroma können ein Inhaltswarnfeld einstellen, das ihren Beitrag standardmäßig ausblendet. Dies deaktiviert das automatische Zusammenklappen und setzt die Inhaltswarnung als Beitragstitel. Beeinflusst keine anderen Inhaltsfilterungen, die du eventuell eingerichtet hast."
 
 #: mod/settings.php:847
 msgid "Disable intelligent shortening"
@@ -2380,7 +2381,7 @@ 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."
+msgstr "Wenn du deinen alten GNU Social/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:853
 msgid "Repair OStatus subscriptions"
@@ -2476,7 +2477,7 @@ msgstr "Mobiles Theme"
 
 #: mod/settings.php:965
 msgid "Suppress warning of insecure networks"
-msgstr "Warnung wegen unsicheren Netzwerken unterdrücken"
+msgstr "Warnung vor unsicheren Netzwerken unterdrücken"
 
 #: mod/settings.php:965
 msgid ""
@@ -3048,7 +3049,7 @@ msgstr "Keine Ergebnisse."
 msgid "Items tagged with: %s"
 msgstr "Beiträge die mit %s getaggt sind"
 
-#: mod/search.php:248 mod/contacts.php:844
+#: mod/search.php:248 mod/contact.php:844
 #, php-format
 msgid "Results for: %s"
 msgstr "Ergebnisse für: %s"
@@ -3057,7 +3058,7 @@ msgstr "Ergebnisse für: %s"
 msgid "No contacts in common."
 msgstr "Keine gemeinsamen Kontakte."
 
-#: mod/common.php:142 mod/contacts.php:919
+#: mod/common.php:142 mod/contact.php:919
 msgid "Common Friends"
 msgstr "Gemeinsame Kontakte"
 
@@ -3219,7 +3220,7 @@ msgstr "Gruppen Name bearbeiten"
 msgid "Members"
 msgstr "Mitglieder"
 
-#: mod/group.php:246 mod/contacts.php:742
+#: mod/group.php:246 mod/contact.php:742
 msgid "All Contacts"
 msgstr "Alle Kontakte"
 
@@ -3343,7 +3344,7 @@ msgstr "Zugriff verweigert."
 msgid "No contacts."
 msgstr "Keine Kontakte."
 
-#: mod/viewcontacts.php:106 mod/contacts.php:640 mod/contacts.php:1055
+#: mod/viewcontacts.php:106 mod/contact.php:640 mod/contact.php:1055
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr "Besuche %ss Profil [%s]"
@@ -3360,7 +3361,7 @@ msgstr "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt."
 msgid "Contact unfollowed"
 msgstr "Kontakt wird nicht mehr gefolgt"
 
-#: mod/unfollow.php:113 mod/contacts.php:607
+#: mod/unfollow.php:113 mod/contact.php:607
 msgid "Disconnect/Unfollow"
 msgstr "Verbindung lösen/Nicht mehr folgen"
 
@@ -3373,11 +3374,11 @@ msgid "Submit Request"
 msgstr "Anfrage abschicken"
 
 #: mod/unfollow.php:135 mod/notifications.php:174 mod/notifications.php:258
-#: mod/admin.php:500 mod/admin.php:510 mod/contacts.php:677 mod/follow.php:166
+#: mod/admin.php:500 mod/admin.php:510 mod/contact.php:677 mod/follow.php:166
 msgid "Profile URL"
 msgstr "Profil URL"
 
-#: mod/unfollow.php:145 mod/contacts.php:891 mod/follow.php:189
+#: mod/unfollow.php:145 mod/contact.php:891 mod/follow.php:189
 #: src/Model/Profile.php:891
 msgid "Status Messages and Posts"
 msgstr "Statusnachrichten und Beiträge"
@@ -3514,8 +3515,8 @@ msgid "Discard"
 msgstr "Verwerfen"
 
 #: mod/notifications.php:57 mod/notifications.php:181
-#: mod/notifications.php:266 mod/contacts.php:659 mod/contacts.php:853
-#: mod/contacts.php:1116
+#: mod/notifications.php:266 mod/contact.php:659 mod/contact.php:853
+#: mod/contact.php:1116
 msgid "Ignore"
 msgstr "Ignorieren"
 
@@ -3563,7 +3564,7 @@ msgstr "Art der Benachrichtigung:"
 msgid "Suggested by:"
 msgstr "Vorgeschlagen von:"
 
-#: mod/notifications.php:176 mod/notifications.php:255 mod/contacts.php:667
+#: mod/notifications.php:176 mod/notifications.php:255 mod/contact.php:667
 msgid "Hide this contact from others"
 msgstr "Verbirg diesen Kontakt vor Anderen"
 
@@ -3620,12 +3621,12 @@ msgstr "Teilenden"
 msgid "Subscriber"
 msgstr "Abonnent"
 
-#: mod/notifications.php:252 mod/contacts.php:687 mod/follow.php:177
+#: mod/notifications.php:252 mod/contact.php:687 mod/follow.php:177
 #: src/Model/Profile.php:794
 msgid "Tags:"
 msgstr "Tags:"
 
-#: mod/notifications.php:261 mod/contacts.php:81 src/Model/Profile.php:533
+#: mod/notifications.php:261 mod/contact.php:81 src/Model/Profile.php:533
 msgid "Network:"
 msgstr "Netzwerk:"
 
@@ -4539,13 +4540,13 @@ msgstr "Alle auswählen"
 msgid "select none"
 msgstr "Auswahl aufheben"
 
-#: mod/admin.php:494 mod/admin.php:1907 mod/contacts.php:658
-#: mod/contacts.php:852 mod/contacts.php:1108
+#: mod/admin.php:494 mod/admin.php:1907 mod/contact.php:658
+#: mod/contact.php:852 mod/contact.php:1108
 msgid "Block"
 msgstr "Sperren"
 
-#: mod/admin.php:495 mod/admin.php:1909 mod/contacts.php:658
-#: mod/contacts.php:852 mod/contacts.php:1108
+#: mod/admin.php:495 mod/admin.php:1909 mod/contact.php:658
+#: mod/contact.php:852 mod/contact.php:1108
 msgid "Unblock"
 msgstr "Entsperren"
 
@@ -4808,7 +4809,7 @@ msgid "Public postings from local users and the federated network"
 msgstr "Öffentliche Beiträge von lokalen Nutzern und aus dem föderalen Netzwerk"
 
 #: mod/admin.php:1353 mod/admin.php:1520 mod/admin.php:1530
-#: mod/contacts.php:583
+#: mod/contact.php:583
 msgid "Disabled"
 msgstr "Deaktiviert"
 
@@ -4888,7 +4889,7 @@ msgstr "Datei hochladen"
 msgid "Policies"
 msgstr "Regeln"
 
-#: mod/admin.php:1431 mod/contacts.php:929 mod/events.php:562
+#: mod/admin.php:1431 mod/contact.php:929 mod/events.php:562
 #: src/Model/Profile.php:865
 msgid "Advanced"
 msgstr "Erweitert"
@@ -4912,7 +4913,7 @@ msgstr "Nachrichten Relais"
 #: mod/admin.php:1436
 msgid ""
 "Relocate - WARNING: advanced function. Could make this server unreachable."
-msgstr "Umsiedeln - WARNUNG: Könnte diesen Server unerreichbar machen."
+msgstr "Umziehen - WARNUNG: Funktion für Fortgeschrittene. Könnte diesen Server unerreichbar machen."
 
 #: mod/admin.php:1439
 msgid "Site name"
@@ -5290,7 +5291,7 @@ 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."
+msgstr "Biete die eingebaute OStatus (StatusNet, GNU Social, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt."
 
 #: mod/admin.php:1481
 msgid "Only import OStatus/ActivityPub threads from our contacts"
@@ -6122,7 +6123,7 @@ msgstr "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladr
 
 #: mod/dfrn_request.php:119 mod/dfrn_request.php:360
 msgid "Warning: profile location has no profile photo."
-msgstr "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse."
+msgstr "Warnung: Es gibt kein Profilbild an der angegebenen Profiladresse."
 
 #: mod/dfrn_request.php:123 mod/dfrn_request.php:364
 #, php-format
@@ -6177,7 +6178,7 @@ msgstr "Ungültige Profil-URL."
 msgid "Disallowed profile URL."
 msgstr "Nicht erlaubte Profil-URL."
 
-#: mod/dfrn_request.php:412 mod/contacts.php:241
+#: mod/dfrn_request.php:412 mod/contact.php:241
 msgid "Failed to update contact record."
 msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
 
@@ -6587,364 +6588,364 @@ msgstr "Kommentare von %s"
 msgid "No friends to display."
 msgstr "Keine Kontakte zum Anzeigen."
 
-#: mod/contacts.php:168
+#: mod/contact.php:168
 #, php-format
 msgid "%d contact edited."
 msgid_plural "%d contacts edited."
 msgstr[0] "%d Kontakt bearbeitet."
 msgstr[1] "%d Kontakte bearbeitet."
 
-#: mod/contacts.php:195 mod/contacts.php:401
+#: mod/contact.php:195 mod/contact.php:401
 msgid "Could not access contact record."
 msgstr "Konnte nicht auf die Kontaktdaten zugreifen."
 
-#: mod/contacts.php:205
+#: mod/contact.php:205
 msgid "Could not locate selected profile."
 msgstr "Konnte das ausgewählte Profil nicht finden."
 
-#: mod/contacts.php:239
+#: mod/contact.php:239
 msgid "Contact updated."
 msgstr "Kontakt aktualisiert."
 
-#: mod/contacts.php:422
+#: mod/contact.php:422
 msgid "Contact has been blocked"
 msgstr "Kontakt wurde blockiert"
 
-#: mod/contacts.php:422
+#: mod/contact.php:422
 msgid "Contact has been unblocked"
 msgstr "Kontakt wurde wieder freigegeben"
 
-#: mod/contacts.php:432
+#: mod/contact.php:432
 msgid "Contact has been ignored"
 msgstr "Kontakt wurde ignoriert"
 
-#: mod/contacts.php:432
+#: mod/contact.php:432
 msgid "Contact has been unignored"
 msgstr "Kontakt wird nicht mehr ignoriert"
 
-#: mod/contacts.php:442
+#: mod/contact.php:442
 msgid "Contact has been archived"
 msgstr "Kontakt wurde archiviert"
 
-#: mod/contacts.php:442
+#: mod/contact.php:442
 msgid "Contact has been unarchived"
 msgstr "Kontakt wurde aus dem Archiv geholt"
 
-#: mod/contacts.php:466
+#: mod/contact.php:466
 msgid "Drop contact"
 msgstr "Kontakt löschen"
 
-#: mod/contacts.php:469 mod/contacts.php:848
+#: mod/contact.php:469 mod/contact.php:848
 msgid "Do you really want to delete this contact?"
 msgstr "Möchtest Du wirklich diesen Kontakt löschen?"
 
-#: mod/contacts.php:487
+#: mod/contact.php:487
 msgid "Contact has been removed."
 msgstr "Kontakt wurde entfernt."
 
-#: mod/contacts.php:524
+#: mod/contact.php:524
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr "Du hast mit %s eine beidseitige Freundschaft"
 
-#: mod/contacts.php:529
+#: mod/contact.php:529
 #, php-format
 msgid "You are sharing with %s"
 msgstr "Du teilst mit %s"
 
-#: mod/contacts.php:534
+#: mod/contact.php:534
 #, php-format
 msgid "%s is sharing with you"
 msgstr "%s teilt mit Dir"
 
-#: mod/contacts.php:558
+#: mod/contact.php:558
 msgid "Private communications are not available for this contact."
 msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar."
 
-#: mod/contacts.php:560
+#: mod/contact.php:560
 msgid "Never"
 msgstr "Niemals"
 
-#: mod/contacts.php:563
+#: mod/contact.php:563
 msgid "(Update was successful)"
 msgstr "(Aktualisierung war erfolgreich)"
 
-#: mod/contacts.php:563
+#: mod/contact.php:563
 msgid "(Update was not successful)"
 msgstr "(Aktualisierung war nicht erfolgreich)"
 
-#: mod/contacts.php:565 mod/contacts.php:1089
+#: mod/contact.php:565 mod/contact.php:1089
 msgid "Suggest friends"
 msgstr "Kontakte vorschlagen"
 
-#: mod/contacts.php:569
+#: mod/contact.php:569
 #, php-format
 msgid "Network type: %s"
 msgstr "Netzwerktyp: %s"
 
-#: mod/contacts.php:574
+#: mod/contact.php:574
 msgid "Communications lost with this contact!"
 msgstr "Verbindungen mit diesem Kontakt verloren!"
 
-#: mod/contacts.php:580
+#: mod/contact.php:580
 msgid "Fetch further information for feeds"
 msgstr "Weitere Informationen zu Feeds holen"
 
-#: mod/contacts.php:582
+#: mod/contact.php:582
 msgid ""
 "Fetch information like preview pictures, title and teaser from the feed "
 "item. You can activate this if the feed doesn't contain much text. Keywords "
 "are taken from the meta header in the feed item and are posted as hash tags."
 msgstr "Zusätzliche Informationen wie Vorschaubilder, Titel und Zusammenfassungen vom Feed-Eintrag laden. Du kannst diese Option aktivieren, wenn der Feed nicht all zu viel Text beinhaltet. Schlagwörter werden auf den Meta-Informationen des Feed-Headers bezogen und als Hash-Tags verwendet."
 
-#: mod/contacts.php:584
+#: mod/contact.php:584
 msgid "Fetch information"
 msgstr "Beziehe Information"
 
-#: mod/contacts.php:585
+#: mod/contact.php:585
 msgid "Fetch keywords"
 msgstr "Schlüsselwörter abrufen"
 
-#: mod/contacts.php:586
+#: mod/contact.php:586
 msgid "Fetch information and keywords"
 msgstr "Beziehe Information und Schlüsselworte"
 
-#: mod/contacts.php:618
+#: mod/contact.php:618
 msgid "Profile Visibility"
 msgstr "Profil-Sichtbarkeit"
 
-#: mod/contacts.php:619
+#: mod/contact.php:619
 msgid "Contact Information / Notes"
 msgstr "Kontakt Informationen / Notizen"
 
-#: mod/contacts.php:620
+#: mod/contact.php:620
 msgid "Contact Settings"
 msgstr "Kontakteinstellungen"
 
-#: mod/contacts.php:629
+#: mod/contact.php:629
 msgid "Contact"
 msgstr "Kontakt"
 
-#: mod/contacts.php:633
+#: mod/contact.php:633
 #, 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:635
+#: mod/contact.php:635
 msgid "Their personal note"
 msgstr "Die persönliche Mitteilung"
 
-#: mod/contacts.php:637
+#: mod/contact.php:637
 msgid "Edit contact notes"
 msgstr "Notizen zum Kontakt bearbeiten"
 
-#: mod/contacts.php:641
+#: mod/contact.php:641
 msgid "Block/Unblock contact"
 msgstr "Kontakt blockieren/freischalten"
 
-#: mod/contacts.php:642
+#: mod/contact.php:642
 msgid "Ignore contact"
 msgstr "Ignoriere den Kontakt"
 
-#: mod/contacts.php:643
+#: mod/contact.php:643
 msgid "Repair URL settings"
 msgstr "URL Einstellungen reparieren"
 
-#: mod/contacts.php:644
+#: mod/contact.php:644
 msgid "View conversations"
 msgstr "Unterhaltungen anzeigen"
 
-#: mod/contacts.php:649
+#: mod/contact.php:649
 msgid "Last update:"
 msgstr "Letzte Aktualisierung: "
 
-#: mod/contacts.php:651
+#: mod/contact.php:651
 msgid "Update public posts"
 msgstr "Öffentliche Beiträge aktualisieren"
 
-#: mod/contacts.php:653 mod/contacts.php:1099
+#: mod/contact.php:653 mod/contact.php:1099
 msgid "Update now"
 msgstr "Jetzt aktualisieren"
 
-#: mod/contacts.php:659 mod/contacts.php:853 mod/contacts.php:1116
+#: mod/contact.php:659 mod/contact.php:853 mod/contact.php:1116
 msgid "Unignore"
 msgstr "Ignorieren aufheben"
 
-#: mod/contacts.php:663
+#: mod/contact.php:663
 msgid "Currently blocked"
 msgstr "Derzeit geblockt"
 
-#: mod/contacts.php:664
+#: mod/contact.php:664
 msgid "Currently ignored"
 msgstr "Derzeit ignoriert"
 
-#: mod/contacts.php:665
+#: mod/contact.php:665
 msgid "Currently archived"
 msgstr "Momentan archiviert"
 
-#: mod/contacts.php:666
+#: mod/contact.php:666
 msgid "Awaiting connection acknowledge"
 msgstr "Bedarf der Bestätigung des Kontakts"
 
-#: mod/contacts.php:667
+#: mod/contact.php:667
 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:668
+#: mod/contact.php:668
 msgid "Notification for new posts"
 msgstr "Benachrichtigung bei neuen Beiträgen"
 
-#: mod/contacts.php:668
+#: mod/contact.php:668
 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:671
+#: mod/contact.php:671
 msgid "Blacklisted keywords"
 msgstr "Blacklistete Schlüsselworte "
 
-#: mod/contacts.php:671
+#: mod/contact.php:671
 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:683 src/Model/Profile.php:437
+#: mod/contact.php:683 src/Model/Profile.php:437
 msgid "XMPP:"
 msgstr "XMPP:"
 
-#: mod/contacts.php:688
+#: mod/contact.php:688
 msgid "Actions"
 msgstr "Aktionen"
 
-#: mod/contacts.php:734
+#: mod/contact.php:734
 msgid "Suggestions"
 msgstr "Kontaktvorschläge"
 
-#: mod/contacts.php:737
+#: mod/contact.php:737
 msgid "Suggest potential friends"
 msgstr "Kontakte vorschlagen"
 
-#: mod/contacts.php:745
+#: mod/contact.php:745
 msgid "Show all contacts"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:750
+#: mod/contact.php:750
 msgid "Unblocked"
 msgstr "Ungeblockt"
 
-#: mod/contacts.php:753
+#: mod/contact.php:753
 msgid "Only show unblocked contacts"
 msgstr "Nur nicht-blockierte Kontakte anzeigen"
 
-#: mod/contacts.php:758
+#: mod/contact.php:758
 msgid "Blocked"
 msgstr "Geblockt"
 
-#: mod/contacts.php:761
+#: mod/contact.php:761
 msgid "Only show blocked contacts"
 msgstr "Nur blockierte Kontakte anzeigen"
 
-#: mod/contacts.php:766
+#: mod/contact.php:766
 msgid "Ignored"
 msgstr "Ignoriert"
 
-#: mod/contacts.php:769
+#: mod/contact.php:769
 msgid "Only show ignored contacts"
 msgstr "Nur ignorierte Kontakte anzeigen"
 
-#: mod/contacts.php:774
+#: mod/contact.php:774
 msgid "Archived"
 msgstr "Archiviert"
 
-#: mod/contacts.php:777
+#: mod/contact.php:777
 msgid "Only show archived contacts"
 msgstr "Nur archivierte Kontakte anzeigen"
 
-#: mod/contacts.php:782
+#: mod/contact.php:782
 msgid "Hidden"
 msgstr "Verborgen"
 
-#: mod/contacts.php:785
+#: mod/contact.php:785
 msgid "Only show hidden contacts"
 msgstr "Nur verborgene Kontakte anzeigen"
 
-#: mod/contacts.php:843
+#: mod/contact.php:843
 msgid "Search your contacts"
 msgstr "Suche in deinen Kontakten"
 
-#: mod/contacts.php:854 mod/contacts.php:1125
+#: mod/contact.php:854 mod/contact.php:1125
 msgid "Archive"
 msgstr "Archivieren"
 
-#: mod/contacts.php:854 mod/contacts.php:1125
+#: mod/contact.php:854 mod/contact.php:1125
 msgid "Unarchive"
 msgstr "Aus Archiv zurückholen"
 
-#: mod/contacts.php:857
+#: mod/contact.php:857
 msgid "Batch Actions"
 msgstr "Stapelverarbeitung"
 
-#: mod/contacts.php:883
+#: mod/contact.php:883
 msgid "Conversations started by this contact"
 msgstr "Unterhaltungen, die von diesem Kontakt begonnen wurden"
 
-#: mod/contacts.php:888
+#: mod/contact.php:888
 msgid "Posts and Comments"
 msgstr "Statusnachrichten und Kommentare"
 
-#: mod/contacts.php:899 src/Model/Profile.php:899
+#: mod/contact.php:899 src/Model/Profile.php:899
 msgid "Profile Details"
 msgstr "Profildetails"
 
-#: mod/contacts.php:911
+#: mod/contact.php:911
 msgid "View all contacts"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:922
+#: mod/contact.php:922
 msgid "View all common friends"
 msgstr "Alle Kontakte anzeigen"
 
-#: mod/contacts.php:932
+#: mod/contact.php:932
 msgid "Advanced Contact Settings"
 msgstr "Fortgeschrittene Kontakteinstellungen"
 
-#: mod/contacts.php:1022
+#: mod/contact.php:1022
 msgid "Mutual Friendship"
 msgstr "Beidseitige Freundschaft"
 
-#: mod/contacts.php:1027
+#: mod/contact.php:1027
 msgid "is a fan of yours"
 msgstr "ist ein Fan von dir"
 
-#: mod/contacts.php:1032
+#: mod/contact.php:1032
 msgid "you are a fan of"
 msgstr "Du bist Fan von"
 
-#: mod/contacts.php:1049 mod/photos.php:1496 mod/photos.php:1535
+#: mod/contact.php:1049 mod/photos.php:1496 mod/photos.php:1535
 #: mod/photos.php:1595 src/Object/Post.php:792
 msgid "This is you"
 msgstr "Das bist Du"
 
-#: mod/contacts.php:1056
+#: mod/contact.php:1056
 msgid "Edit contact"
 msgstr "Kontakt bearbeiten"
 
-#: mod/contacts.php:1110
+#: mod/contact.php:1110
 msgid "Toggle Blocked status"
 msgstr "Geblockt-Status ein-/ausschalten"
 
-#: mod/contacts.php:1118
+#: mod/contact.php:1118
 msgid "Toggle Ignored status"
 msgstr "Ignoriert-Status ein-/ausschalten"
 
-#: mod/contacts.php:1127
+#: mod/contact.php:1127
 msgid "Toggle Archive status"
 msgstr "Archiviert-Status ein-/ausschalten"
 
-#: mod/contacts.php:1135
+#: mod/contact.php:1135
 msgid "Delete contact"
 msgstr "Lösche den Kontakt"
 
@@ -9101,7 +9102,7 @@ msgstr "Diaspora Connector"
 
 #: src/Content/ContactSelector.php:91
 msgid "GNU Social Connector"
-msgstr "GNU social Connector"
+msgstr "GNU Social Connector"
 
 #: src/Content/ContactSelector.php:92
 msgid "ActivityPub"
index f80bf544bbcdb3df2da8a98fa8cdb9e4e01c2a5a..dcc31edd80edfd221c922be72268fdba7bb8490d 100644 (file)
@@ -11,7 +11,7 @@ $a->strings["Not Found"] = "Nicht gefunden";
 $a->strings["Page not found."] = "Seite nicht gefunden.";
 $a->strings["Permission denied"] = "Zugriff verweigert";
 $a->strings["Permission denied."] = "Zugriff verweigert.";
-$a->strings["toggle mobile"] = "auf/von Mobile Ansicht wechseln";
+$a->strings["toggle mobile"] = "mobile Ansicht umschalten";
 $a->strings["default"] = "Standard";
 $a->strings["greenzero"] = "greenzero";
 $a->strings["purplezero"] = "purplezero";
@@ -64,7 +64,7 @@ $a->strings["Link color"] = "Linkfarbe";
 $a->strings["Set the background color"] = "Hintergrundfarbe festlegen";
 $a->strings["Content background opacity"] = "Opazität des Hintergrunds von Beiträgen";
 $a->strings["Set the background image"] = "Hintergrundbild festlegen";
-$a->strings["Background image style"] = "Stiel des Hintergrundbildes";
+$a->strings["Background image style"] = "Stil des Hintergrundbildes";
 $a->strings["Login page background image"] = "Hintergrundbild der Login-Seite";
 $a->strings["Login page background color"] = "Hintergrundfarbe der Login-Seite";
 $a->strings["Leave background image and color empty for theme defaults"] = "Wenn die Theme Vorgaben verwendet werden sollen, lass bitte die Felder für die Hintergrundfarbe und das Hintergrundbild leer.";
@@ -90,7 +90,7 @@ $a->strings["Private mail"] = "Private E-Mail";
 $a->strings["Settings"] = "Einstellungen";
 $a->strings["Account settings"] = "Kontoeinstellungen";
 $a->strings["Contacts"] = "Kontakte";
-$a->strings["Manage/edit friends and contacts"] = " Kontakte verwalten/editieren";
+$a->strings["Manage/edit friends and contacts"] = "Freunde und Kontakte verwalten/bearbeiten";
 $a->strings["Follow Thread"] = "Folge der Unterhaltung";
 $a->strings["Top Banner"] = "Top Banner";
 $a->strings["Resize image to the width of the screen and show background color below on long pages."] = "Skaliere das Hintergrundbild so, dass es die Breite der Seite einnimmt und fülle den Rest der Seite mit der Hintergrundfarbe bei langen Seiten.";
@@ -535,15 +535,15 @@ $a->strings["Built-in support for %s connectivity is %s"] = "Eingebaute Unterst
 $a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)";
 $a->strings["Email access is disabled on this site."] = "Zugriff auf E-Mails für diese Seite deaktiviert.";
 $a->strings["General Social Media Settings"] = "Allgemeine Einstellungen zu Sozialen Medien";
-$a->strings["Disable Content Warning"] = "Inhaltswarnungen ausschalten";
-$a->strings["Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn't affect any other content filtering you eventually set up."] = "Nutzer von anderen Netzwerken, wie z.B. Mastodon oder Pleroma, können Inhaltswarnungen, welche die Beiträge standardmäßig einklappen. Diese Einstellung deaktiviert das automatische Einklappt solcher Beiträge und setzt die Inhaltswarnung als Titel des Beitrags. Wenn du andere Filtereinstellungen vorgenommen hast, werden diese hierdurch nicht beeinflusst.";
+$a->strings["Disable Content Warning"] = "Inhaltswarnung ausschalten";
+$a->strings["Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn't affect any other content filtering you eventually set up."] = "Benutzer in Netzwerken wie Mastodon oder Pleroma können ein Inhaltswarnfeld einstellen, das ihren Beitrag standardmäßig ausblendet. Dies deaktiviert das automatische Zusammenklappen und setzt die Inhaltswarnung als Beitragstitel. Beeinflusst keine anderen Inhaltsfilterungen, die du eventuell eingerichtet hast.";
 $a->strings["Disable intelligent shortening"] = "Intelligentes Link kürzen ausschalten";
 $a->strings["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."] = "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.";
 $a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen";
 $a->strings["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."] = "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,.";
 $a->strings["Default group for OStatus contacts"] = "Voreingestellte Gruppe für OStatus Kontakte";
 $a->strings["Your legacy GNU Social account"] = "Dein alter GNU Social Account";
-$a->strings["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."] = "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.";
+$a->strings["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."] = "Wenn du deinen alten GNU Social/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden.";
 $a->strings["Repair OStatus subscriptions"] = "OStatus Abonnements reparieren";
 $a->strings["Email/Mailbox Setup"] = "E-Mail/Postfach-Einstellungen";
 $a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an.";
@@ -566,7 +566,7 @@ $a->strings["%s - (Experimental)"] = "%s - (Experimentell)";
 $a->strings["Display Settings"] = "Anzeige-Einstellungen";
 $a->strings["Display Theme:"] = "Theme:";
 $a->strings["Mobile Theme:"] = "Mobiles Theme";
-$a->strings["Suppress warning of insecure networks"] = "Warnung wegen unsicheren Netzwerken unterdrücken";
+$a->strings["Suppress warning of insecure networks"] = "Warnung vor unsicheren Netzwerken unterdrücken";
 $a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Soll das System Warnungen unterdrücken, die angezeigt werden weil von dir eingerichtete Kontakt-Gruppen Accounts aus Netzwerken beinhalten, die keine nicht öffentlichen Beiträge empfangen können.";
 $a->strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren";
 $a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimum sind 10 Sekunden. Gib -1 ein um abzuschalten.";
@@ -1110,7 +1110,7 @@ $a->strings["Auto Discovered Contact Directory"] = "Automatisch ein Kontaktverze
 $a->strings["Performance"] = "Performance";
 $a->strings["Worker"] = "Worker";
 $a->strings["Message Relay"] = "Nachrichten Relais";
-$a->strings["Relocate - WARNING: advanced function. Could make this server unreachable."] = "Umsiedeln - WARNUNG: Könnte diesen Server unerreichbar machen.";
+$a->strings["Relocate - WARNING: advanced function. Could make this server unreachable."] = "Umziehen - WARNUNG: Funktion für Fortgeschrittene. Könnte diesen Server unerreichbar machen.";
 $a->strings["Site name"] = "Seitenname";
 $a->strings["Host name"] = "Host Name";
 $a->strings["Sender Email"] = "Absender für Emails";
@@ -1188,7 +1188,7 @@ $a->strings["Which community pages should be available for visitors. Local users
 $a->strings["Posts per user on community page"] = "Anzahl der Beiträge pro Benutzer auf der Gemeinschaftsseite";
 $a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "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.";
 $a->strings["Enable OStatus support"] = "OStatus Unterstützung aktivieren";
-$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "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.";
+$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Biete die eingebaute OStatus (StatusNet, GNU Social, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt.";
 $a->strings["Only import OStatus/ActivityPub threads from our contacts"] = "Nur OStatus/ActivityPub Konversationen unserer Kontakte importieren";
 $a->strings["Normally we import every content from our OStatus and ActivityPub contacts. With this option we only store threads that are started by a contact that is known on our system."] = "Normalerweise werden alle Inhalte von OStatus und ActivityPub Kontakten importiert. Mit dieser Option werden nur solche Konversationen gespeichert, die von Kontakten der Nutzer dieses Knotens gestartet wurden.";
 $a->strings["OStatus support can only be enabled if threading is enabled."] = "OStatus Unterstützung kann nur aktiviert werden wenn \"Threading\" aktiviert ist. ";
@@ -1363,7 +1363,7 @@ $a->strings["Login failed."] = "Anmeldung fehlgeschlagen.";
 $a->strings["This introduction has already been accepted."] = "Diese Kontaktanfrage wurde bereits akzeptiert.";
 $a->strings["Profile location is not valid or does not contain profile information."] = "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung.";
 $a->strings["Warning: profile location has no identifiable owner name."] = "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden.";
-$a->strings["Warning: profile location has no profile photo."] = "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse.";
+$a->strings["Warning: profile location has no profile photo."] = "Warnung: Es gibt kein Profilbild an der angegebenen Profiladresse.";
 $a->strings["%d required parameter was not found at the given location"] = [
        0 => "%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden",
        1 => "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden",
@@ -2058,7 +2058,7 @@ $a->strings["Google+"] = "Google+";
 $a->strings["pump.io"] = "pump.io";
 $a->strings["Twitter"] = "Twitter";
 $a->strings["Diaspora Connector"] = "Diaspora Connector";
-$a->strings["GNU Social Connector"] = "GNU social Connector";
+$a->strings["GNU Social Connector"] = "GNU Social Connector";
 $a->strings["ActivityPub"] = "ActivityPub";
 $a->strings["pnut"] = "pnut";
 $a->strings["Male"] = "Männlich";
index 58048efbcd8e4816adc4fbdfeac97c0681bcc8b3..9f03b436d02d31ae6e0d44b088c2f5e33ac079ff 100644 (file)
@@ -1538,11 +1538,11 @@ aside .panel-body {
 }
 
 /* Thread hover effects */
-.wall-item-container .wall-item-content a,
-.wall-item-container a,
-.wall-item-container .fakelink,
-.toplevel_item .fakelink,
-.toplevel_item .wall-item-container .wall-item-responses a {
+.desktop-view .wall-item-container .wall-item-content a,
+.desktop-view .wall-item-container a,
+.desktop-view .wall-item-container .fakelink,
+.desktop-view .toplevel_item .fakelink,
+.desktop-view .toplevel_item .wall-item-container .wall-item-responses a {
     color: #555;
     -webkit-transition: all 0.25s ease-in-out;
     -moz-transition: all 0.25s ease-in-out;
index aa86c9723880c8b383c26e2d5ebd091105c65b6b..24c722e8e3f51347215e696f11c091d82c79b12b 100644 (file)
@@ -18,6 +18,12 @@ require_once 'view/theme/frio/php/frio_boot.php';
 if (!isset($minimal)) {
        $minimal = false;
 }
+
+$basepath = $a->getURLPath() ? "/" . $a->getURLPath() . "/" : "/";
+$frio = "view/theme/frio";
+$view_mode_class = ($a->is_mobile || $a->is_tablet) ? 'mobile-view' : 'desktop-view';
+$is_singleuser = Config::get('system', 'singleuser');
+$is_singleuser_class = $is_singleuser ? "is-singleuser" : "is-not-singleuser";
 ?>
 <html>
        <head>
@@ -26,9 +32,6 @@ if (!isset($minimal)) {
                <script  type="text/javascript">var baseurl = "<?php echo System::baseUrl(); ?>";</script>
                <script type="text/javascript">var frio = "<?php echo 'view/theme/frio'; ?>";</script>
 <?php
-               $basepath = $a->getURLPath() ? "/" . $a->getURLPath() . "/" : "/";
-               $frio = "view/theme/frio";
-
                // Because we use minimal for modals the header and the included js stuff should be only loaded
                // if the page is an standard page (so we don't have it twice for modals)
                //
@@ -52,18 +55,16 @@ if (!isset($minimal)) {
                } else {
                        $nav_bg = PConfig::get($uid, 'frio', 'nav_bg');
                }
+
                if (empty($nav_bg)) {
                        $nav_bg = "#708fa0";
                }
-               echo '
-                       <meta name="theme-color" content="' . $nav_bg . '" />';
 
-               $is_singleuser = Config::get('system','singleuser');
-               $is_singleuser_class = $is_singleuser ? "is-singleuser" : "is-not-singleuser";
+               echo '<meta name="theme-color" content="' . $nav_bg . '" />';
 ?>
        </head>
 
-       <body id="top" class="mod-<?php echo $a->module." ".$is_singleuser_class;?>">
+       <body id="top" class="mod-<?php echo $a->module . " " . $is_singleuser_class . " " . $view_mode_class;?>">
                <a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>
 <?php
        if (x($page, 'nav') && !$minimal) {
@@ -81,7 +82,7 @@ if (!isset($minimal)) {
        // special minimal style for modal dialogs
        if ($minimal) {
 ?>
-               <section class="minimal" style="margin:0px!important; padding:0px!important; float:none!important;display:block!important;">
+               <section class="minimal" style="margin:0px!important; padding:0px!important; float:none!important; display:block!important;">
                        <?php if (x($page, 'content')) echo $page['content']; ?>
                        <div id="page-footer"></div>
                </section>
index f46b42788fe9253da7355c6e9285f695cff474f2..8cb4c342959293e754167d61563b932414bdfc59 100644 (file)
@@ -13,6 +13,7 @@ use Friendica\Content\Widget;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -63,7 +64,7 @@ function frio_install()
        Addon::registerHook('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup');
        Addon::registerHook('display_item', 'view/theme/frio/theme.php', 'frio_display_item');
 
-       logger('installed theme frio');
+       Logger::log('installed theme frio');
 }
 
 function frio_uninstall()
@@ -75,7 +76,7 @@ function frio_uninstall()
        Addon::unregisterHook('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup');
        Addon::unregisterHook('display_item', 'view/theme/frio/theme.php', 'frio_display_item');
 
-       logger('uninstalled theme frio');
+       Logger::log('uninstalled theme frio');
 }
 
 /**
index d777864825a11cf98b2aeb1d692ab1567b44d7b4..196d3776561e165632fcfaa184f55ba206134fd6 100644 (file)
@@ -2,6 +2,7 @@
 /**
  * @file view/theme/vier/style.php
  */
+use Friendica\Core\Logger;
 use Friendica\Core\Config;
 use Friendica\Core\PConfig;
 use Friendica\Model\Profile;
@@ -30,8 +31,8 @@ foreach (['style', $style] as $file) {
                        $modified = $stylemodified;
                }
        } else {
-               //TODO: use LOGGER_ERROR?
-               logger('Error: missing file: "' . $stylecssfile .'" (userid: '. $uid .')');
+               //TODO: use Logger::ERROR?
+               Logger::log('Error: missing file: "' . $stylecssfile .'" (userid: '. $uid .')');
        }
 }
 $modified = gmdate('r', $modified);