use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
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");
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";
// 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;
}
$last_cron = time();
}
- logger("Sleeping", LOGGER_DEBUG);
+ Logger::log("Sleeping", Logger::DEBUG);
$start = time();
do {
$seconds = (time() - $start);
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);
}
}
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
*
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;
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";
var_dump($consumer, $token);
die();
} catch (Exception $e) {
- logger($e);
+ Logger::log($e);
}
// workaround for HTTP-auth in CGI mode
}
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");
}
}
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');
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),
+ $a->performance["network"] + $a->performance["file"]), 2),
round($duration, 2)
),
- LOGGER_DEBUG
+ Logger::DEBUG
);
if (Config::get("rendertime", "callstack")) {
$o .= $func . ": " . $time . "\n";
}
}
- logger($o, LOGGER_DEBUG);
+ Logger::log($o, Logger::DEBUG);
}
}
}
}
- 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}");
$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)) {
}
}
- logger("api_get_user: user ".$user, LOGGER_DEBUG);
+ Logger::log("api_get_user: user ".$user, Logger::DEBUG);
if (!$user) {
if (api_user() === false) {
}
}
- logger('api_user: ' . $extra_query . ', user: ' . $user);
+ Logger::log('api_user: ' . $extra_query . ', user: ' . $user);
// user info
$uinfo = q(
$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);
$a = get_app();
if (api_user() === false) {
- logger('api_statuses_update: no user');
+ Logger::log('api_statuses_update: no user');
throw new ForbiddenException();
}
$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));
}
$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));
}
$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));
}
$a = get_app();
if (api_user() === false) {
- logger('no user');
+ Logger::log('no user');
throw new ForbiddenException();
}
"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];
}
$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`";
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;
$id = intval(defaults($a->argv, 4, 0));
}
- logger('API: api_statuses_show: ' . $id);
+ Logger::log('API: api_statuses_show: ' . $id);
$conversation = !empty($_REQUEST['conversation']);
$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]);
$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]);
$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);
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;
// 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 = [];
$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");
}
$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");
}
$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");
}
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");
}
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
}
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();
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");
}
}
$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");
}
}
$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");
}
}
$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) {
'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(
// 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;
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;
$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 = [];
}
}
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;
// 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
$user = DBA::selectFirst('user', $fields, ['uid' => $params['uid']]);
if (!DBA::isResult($user)) {
- logger('Unknown user ' . $params['uid']);
+ Logger::log('Unknown user ' . $params['uid']);
return;
}
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;
}
$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();
|| $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];
$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);
}
}
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;
$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"]);
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 = "^\[\]";
// 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);
}
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);
}
}
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;
}
$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']]);
$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;
use Friendica\Util\Map;
use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Core\Logger;
+use Friendica\Model\FileTag;
+
require_once "include/conversation.php";
/**
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.
*
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
];
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
];
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;
}
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), '/');
}
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;
$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) . "%%'";
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;
$users+= $u['count'];
}
- logger('accounts: ' . print_r($accounts, true), LOGGER_DATA);
+ Logger::log('accounts: ' . print_r($accounts, true), Logger::DATA);
$pending = Register::getPendingCount();
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')) {
{
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);
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;
);
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']);
}
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;
// 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'];
$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);
}
/*
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;
$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);
/*
*
$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.
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;
}
*/
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;
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);
}
}
$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.
Contact::updateAvatar($photo, $local_uid, $dfrn_record);
- logger('dfrn_confirm: request - photos imported');
+ Logger::log('dfrn_confirm: request - photos imported');
$new_relation = Contact::SHARING;
// 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`.*
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
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');
}
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');
}
$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');
}
$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 = 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');
}
// 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 = '';
$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');
// 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');
}
// 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);
// 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');
}
}
// 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);
$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) {
'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();
}
$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 = '';
$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
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;
$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();
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);
}
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');
}
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",
}
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');
}
// 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;
])->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;
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;
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;
}
$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",
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;
}
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);
}
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\System;
+use Friendcia\Model\FileTag;
use Friendica\Model\Item;
use Friendica\Database\DBA;
'$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,
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;
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;
*/
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
+use Friendica\Model\FileTag;
require_once 'include/items.php';
$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");
<?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();
}
$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();
}
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;
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);
*/
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'];
}
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));
// 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;
}
}
}
}
- 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
$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();
}
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);
}
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();
$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) {
// 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;
$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();
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;
$_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;
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;
return;
}
- logger('cron_start');
+ Logger::log('cron_start');
$users = q("SELECT `user`.`uid`, `user`.`login_date`, `contact`.`last-item`
FROM `user`
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');
}
use Friendica\Core\Authentication;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
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'))) {
$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();
}
*/
use Friendica\App;
use Friendica\Core\Addon;
+use Friendica\Core\Logger;
use Friendica\Util\Network;
use Friendica\Util\ParseUrl;
}
}
- 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
$result = sprintf($template, $url, ($title) ? $title : $url, $text) . $str_tags;
- logger('(unparsed): returns: ' . $result);
+ Logger::log('(unparsed): returns: ' . $result);
echo $result;
exit();
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;
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();
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();
}
}
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),
$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)) {
$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');
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;
$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();
}
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;
$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),
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`
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",
intval($itemsPerPage)
);
}
- logger("Query done", LOGGER_DEBUG);
+ Logger::log("Query done", Logger::DEBUG);
$ret = [];
if (x($_GET, 'sorted')) {
} 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');
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;
$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",
);
if (!DBA::isResult($r)) {
- logger('poke: no contact ' . $contact_id);
+ Logger::log('poke: no contact ' . $contact_id);
return;
}
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;
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;
<?php
use Friendica\App;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
$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, '');
}
$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, '');
}
// 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);
}
{
$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 );
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();
}
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);
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\PushSubscriber;
} 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);
}
if (!$nick) {
- logger('Bad hub_topic=$hub_topic, ignoring.');
+ Logger::log('Bad hub_topic=$hub_topic, ignoring.');
System::httpExit(404);
}
$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);
}
'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);
}
// 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);
}
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Protocol\Diaspora;
{
$enabled = intval(Config::get('system', 'diaspora_enabled'));
if (!$enabled) {
- logger('mod-diaspora: disabled');
+ Logger::log('mod-diaspora: disabled');
System::httpExit(500);
}
// 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");
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) {
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Database\DBA;
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);
}
}
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);
}
}
'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 : '');
$url .= $separator . 'zrl=' . urlencode($my_profile);
}
- logger('redirecting to ' . $url, LOGGER_DEBUG);
+ Logger::log('redirecting to ' . $url, Logger::DEBUG);
$a->redirect($url);
}
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;
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;
}
* @file mod/salmon.php
*/
use Friendica\App;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\System;
$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);
$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);
}
$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);
}
$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);
$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);
/*
);
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);
//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
}
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;
$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` = ?",
$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('%',?,'%')",
'$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;
}
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;
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())
);
// 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);
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) {
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();
}
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;
$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;
}
}
if (!$owner) {
- logger('like: no owner');
+ Logger::log('like: no owner');
return;
}
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;
$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;
}
if (DBA::isResult($r)) {
$contact = $r[0];
} else {
- logger('tagger: no contact_id');
+ Logger::log('tagger: no contact_id');
return;
}
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\UserImport;
function uimport_post(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;
}
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Core\Config;
use Friendica\Database\DBA;
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'])) : '');
$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');
}
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();
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]);
*/
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Mail;
);
if (! DBA::isResult($r)) {
- logger('wallmessage: no recipient');
+ Logger::log('wallmessage: no recipient');
return;
}
if (! DBA::isResult($r)) {
notice(L10n::t('No recipient.') . EOL);
- logger('wallmessage: no recipient');
+ Logger::log('wallmessage: no recipient');
return;
}
*/
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\Util\DateTimeFormat;
Worker::startProcess();
- logger("Front end worker started: ".getmypid());
+ Logger::log("Front end worker started: ".getmypid());
Worker::callWorker();
Worker::endProcess();
- logger("Front end worker ended: ".getmypid());
+ Logger::log("Front end worker ended: ".getmypid());
killme();
}
$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;
}
}
$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;
$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;
}
}
$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);
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;
}
} 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']);
}
}
}
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");
namespace Friendica;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\System;
/**
{
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);
}
{
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();
}
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;
$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)) {
$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]'
: ''),
$s
);
- logger('scale_external_images: new string: ' . $s, LOGGER_DEBUG);
+ Logger::log('scale_external_images: new string: ' . $s, Logger::DEBUG);
}
}
}
// 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 = '';
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;
}
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;
}
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;
}
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
+use Friendica\Model\FileTag;
use Friendica\Model\GContact;
use Friendica\Model\Profile;
$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' : ''));
}
}
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' : ''));
}
}
use Friendica\App;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
/**
*/
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');
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')) {
}
return true;
} else {
- logger("Addons: FAILED installing " . $addon);
+ Logger::log("Addons: FAILED installing " . $addon);
return false;
}
}
$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')) {
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;
}
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]);
* 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']);
}
namespace Friendica\Core\Cache;
use Friendica\Core\Cache;
+use Friendica\Core\Logger;
use Exception;
use Friendica\Network\HTTPException\InternalServerErrorException;
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 [];
}
}
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;
use Friendica\BaseObject;
use Friendica\Database\DBA;
+use Friendica\Core\Logger;
use Friendica\Core\System;
require_once 'boot.php';
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) {
* @brief Functions for preventing parallel execution of functions
*/
+use Friendica\Core\Logger;
use Friendica\Core\Cache\CacheDriverFactory;
use Friendica\Core\Cache\IMemoryCacheDriver;
}
return;
} catch (\Exception $exception) {
- logger('Using Cache driver for locking failed: ' . $exception->getMessage());
+ Logger::log('Using Cache driver for locking failed: ' . $exception->getMessage());
}
}
--- /dev/null
+<?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");
+ }
+}
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;
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']);
use Friendica\BaseObject;
use Friendica\Core\Cache;
+use Friendica\Core\Logger;
use Friendica\Core\Session;
use 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 '';
}
namespace Friendica\Core\Session;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Core\Session;
use Friendica\Database\DBA;
use SessionHandlerInterface;
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 '';
}
namespace Friendica\Core;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\XML;
}
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");
$err = 'OK';
}
- logger('http_status_exit ' . $val);
+ Logger::log('http_status_exit ' . $val);
header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
if (isset($description["title"])) {
namespace Friendica\Core;
+use Friendica\Core\Logger;
use Friendica\Core\System;
require_once 'boot.php';
// 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")) {
return false;
}
- logger("Addons: installing theme $theme");
+ Logger::log("Addons: installing theme $theme");
include_once "view/theme/$theme/theme.php";
$func();
return true;
} else {
- logger("Addons: FAILED installing theme $theme");
+ Logger::log("Addons: FAILED installing theme $theme");
return false;
}
}
namespace Friendica\Core;
use Friendica\App;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\Model\Photo;
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
$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;
*/
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
// 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;
}
$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;
$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();
$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();
}
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);
}
}
}
);
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);
}
}
$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);
}
}
namespace Friendica\Core;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Model\Process;
use Friendica\Util\DateTimeFormat;
// 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;
}
// 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;
}
// 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;
}
$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;
}
// 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;
}
}
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);
}
/**
// 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;
}
}
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;
}
}
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"]]);
}
$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);
* 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")) {
}
}
- 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),
+ $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);
}
}
$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;
}
}
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;
}
// 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.
['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);
}
}
}
$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 {
++$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;
}
$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?
self::runCron();
- logger('Call worker', LOGGER_DEBUG);
+ Logger::log('Call worker', Logger::DEBUG);
self::spawnWorker();
return;
}
*/
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");
$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;
}
$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]);
// Please use App->getConfigVariable() instead.
//use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Util\DateTimeFormat;
use mysqli;
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);
$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.
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;
$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);
}
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;
}
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;
}
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) {
$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) {
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;
}
use Friendica\Core\Config;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Util\DateTimeFormat;
require_once 'boot.php';
// 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;
}
//try the logger
- logger("CRITICAL: Database structure update failed: ".$error_message);
+ Logger::log("CRITICAL: Database structure update failed: ".$error_message);
}
$errors = '';
- logger('updating structure', LOGGER_DEBUG);
+ Logger::log('updating structure', Logger::DEBUG);
// Get the current structure
$database = [];
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);
}
}
namespace Friendica\Database;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Model\Contact;
use Friendica\Model\Item;
return true;
}
- logger("Start", LOGGER_DEBUG);
+ Logger::log("Start", Logger::DEBUG);
$end_id = Config::get("system", "post_update_1194_end");
if (!$end_id) {
}
}
- logger("End ID: ".$end_id, LOGGER_DEBUG);
+ Logger::log("End ID: ".$end_id, Logger::DEBUG);
$start_id = Config::get("system", "post_update_1194_start");
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),
} 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);
}
/**
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`
}
Config::set("system", "post_update_version", 1206);
- logger("Done", LOGGER_DEBUG);
+ Logger::log("Done", Logger::DEBUG);
return true;
}
$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',
$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;
}
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
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;
}
$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'];
$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;
}
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;
}
namespace Friendica\Model;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Protocol\ActivityPub;
use Friendica\Util\Network;
// 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;
}
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;
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
*/
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;
}
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;
}
}
} 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);
}
}
// 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
$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);
namespace Friendica\Model;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\Util\DateTimeFormat;
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);
}
}
}
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;
}
DBA::delete('event', ['id' => $event_id]);
- logger("Deleted event ".$event_id, LOGGER_DEBUG);
+ Logger::log("Deleted event ".$event_id, Logger::DEBUG);
}
/**
--- /dev/null
+<?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 <, >, 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 <, >, 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;
+ }
+}
use Exception;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Core\Worker;
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'];
}
}
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;
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"];
$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;
}
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"]);
}
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"]);
// 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"]);
$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;
}
);
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;
}
*/
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";
use Friendica\BaseModule;
use Friendica\BaseObject;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Util\Security;
'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');
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;
} 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);
'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;
}
$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);
}
}
}
}
- 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;
}
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
$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;
}
$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']);
$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;
}
}
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"];
// 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;
}
$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;
}
$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;
}
}
// 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 {
* 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;
}
$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;
}
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 {
$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;
}
}
unset($item['api_source']);
if (x($item, 'cancel')) {
- logger('post cancelled by addon.');
+ Logger::log('post cancelled by addon.');
return 0;
}
*/
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'];
$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;
}
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]);
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'])) {
*/
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)) {
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);
}
}
// 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;
}
// 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');
$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);
$fields = $condition;
}
- logger('Update content for ' . json_encode($condition));
+ Logger::log('Update content for ' . json_encode($condition));
DBA::update('item-content', $fields, $condition, true);
}
$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);
}
}
$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);
}
}
$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.
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]);
}
}
}
!$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;
}
// 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]);
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;
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;
$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
// 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]);
}
}
- 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);
}
}
}
++$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)
$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;
}
}
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;
}
$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;
}
$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;
}
}
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);
}
}
$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);
}
}
}
namespace Friendica\Model;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
}
if (!$convid) {
- logger('send message: conversation not found.');
+ Logger::log('send message: conversation not found.');
return -4;
}
}
if (!$convid) {
- logger('send message: conversation not found.');
+ Logger::log('send message: conversation not found.');
return -4;
}
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;
$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;
$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;
// 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);
// 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);
}
}
// 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;
}
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)
*/
namespace Friendica\Model;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\Util\DateTimeFormat;
$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']);
}
'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
}
}
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
$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);
}
}
// 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);
}
}
namespace Friendica\Model;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Util\DateTimeFormat;
*/
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;
*/
public static function removeItem($id)
{
- logger('queue: remove queue item ' . $id);
+ Logger::log('queue: remove queue item ' . $id);
DBA::delete('queue', ['id' => $id]);
}
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;
}
}
'content' => $msg,
'batch' =>($batch) ? 1 : 0
]);
- logger('Added item ' . $guid . ' for ' . $cid);
+ Logger::log('Added item ' . $guid . ' for ' . $cid);
}
}
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;
$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;
$a = get_app();
- logger('Removing user: ' . $uid);
+ Logger::log('Removing user: ' . $uid);
$user = DBA::selectFirst('user', [], ['uid' => $uid]);
$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]]);
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;
);
}
} 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();
}
);
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();
}
$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();
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;
{
$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'] : '');
}
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);
}
return $ret;
}
- logger('Contact is already authenticated', LOGGER_DEBUG);
+ Logger::log('Contact is already authenticated', Logger::DEBUG);
System::externalRedirect($dest);
}
namespace Friendica\Module;
use Friendica\BaseModule;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
$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);
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);
}
}
}
namespace Friendica\Network;
-
+use Friendica\Core\Logger;
use Friendica\Network\HTTPException\InternalServerErrorException;
/**
$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();
$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) {
namespace Friendica\Network;
use Friendica\Core\Addon;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Database\DBA;
*/
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');
}
namespace Friendica\Network;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use OAuthConsumer;
use 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);
*/
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);
*/
public function new_request_token($consumer, $callback = null)
{
- logger(__function__ . ":" . $consumer . ", " . $callback);
+ Logger::log(__function__ . ":" . $consumer . ", " . $callback);
$key = self::genToken();
$sec = self::genToken();
*/
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
// 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();
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;
$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']);
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();
$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 [];
}
self::$baseurl = "http://".$host;
- logger("Probing successful for ".$host, LOGGER_DEBUG);
+ Logger::log("Probing successful for ".$host, Logger::DEBUG);
return $lrdd;
}
$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) {
}
if (!$lrdd) {
- logger("No lrdd data found for ".$uri, LOGGER_DEBUG);
+ Logger::log("No lrdd data found for ".$uri, Logger::DEBUG);
return [];
}
}
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;
}
$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);
}
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;
}
$result = false;
- logger("Probing ".$uri, LOGGER_DEBUG);
+ Logger::log("Probing ".$uri, Logger::DEBUG);
if (in_array($network, ["", Protocol::DFRN])) {
$result = self::dfrn($webfinger);
$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);
$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;
// 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;
}
}
$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;
}
{
$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);
$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;
}
}
$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;
$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;
}
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;
break;
}
- // logger('exif: ' . print_r($exif,true));
+ // Logger::log('exif: ' . print_r($exif,true));
return $exif;
}
*/
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();
}
}
}
- logger('Image: guessType: type='.$type, LOGGER_DEBUG);
+ Logger::log('Image: guessType: type='.$type, Logger::DEBUG);
return $type;
}
);
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([]);
}
/// $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);
$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([]);
}
if (!isset($data["mime"])) {
unlink($tempfile);
- logger("File is no picture", LOGGER_DEBUG);
+ Logger::log("File is no picture", Logger::DEBUG);
return([]);
}
if (!$Image->isValid()) {
unlink($tempfile);
- logger("Picture is no valid picture", LOGGER_DEBUG);
+ Logger::log("Picture is no valid picture", Logger::DEBUG);
return([]);
}
$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([]);
}
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;
{
$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;
}
/*
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;
}
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;
}
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;
}
namespace Friendica\Object;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Object\Post;
use Friendica\Util\Security;
$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;
}
$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;
}
* 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;
}
$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;
namespace Friendica\Protocol\ActivityPub;
use Friendica\Database\DBA;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Model\Conversation;
use Friendica\Model\Contact;
}
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);
}
{
$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]);
}
}
$event_id = Event::store($event);
- logger('Event '.$event_id.' was stored', LOGGER_DEBUG);
+ Logger::log('Event '.$event_id.' was stored', Logger::DEBUG);
}
/**
/// @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;
}
$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'];
}
}
$item_id = Item::insert($item);
- logger('Storing for user ' . $item['uid'] . ': ' . $item_id);
+ Logger::log('Storing for user ' . $item['uid'] . ': ' . $item_id);
}
}
$object = ActivityPub::fetchContent($url);
if (empty($object)) {
- logger('Activity ' . $url . ' was not fetchable, aborting.');
+ Logger::log('Activity ' . $url . ' was not fetchable, aborting.');
return;
}
$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.');
}
/**
}
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']);
}
/**
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);
}
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;
}
}
DBA::close($contacts);
- logger('Deleted contact ' . $activity['object_id'], LOGGER_DEBUG);
+ Logger::log('Deleted contact ' . $activity['object_id'], Logger::DEBUG);
}
/**
$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;
}
$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);
}
/**
$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;
}
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);
}
}
$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;
}
}
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);
}
/**
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);
}
}
use Friendica\Database\DBA;
use Friendica\Util\HTTPSignature;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Model\Contact;
use Friendica\Model\APContact;
{
$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;
}
$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;
}
{
$actor = JsonLD::fetchElement($activity, 'as:actor');
if (empty($actor)) {
- logger('Empty actor', LOGGER_DEBUG);
+ Logger::log('Empty actor', Logger::DEBUG);
return [];
}
$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 [];
}
}
$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
$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;
}
{
$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;
}
// $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;
}
break;
default:
- logger('Unknown activity: ' . $type . ' ' . $object_data['object_type'], LOGGER_DEBUG);
+ Logger::log('Unknown activity: ' . $type . ' ' . $object_data['object_type'], Logger::DEBUG);
break;
}
}
$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 = '';
}
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']);
// 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);
}
}
$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;
}
return self::fetchObject($object_id);
}
- logger('Unhandled object type: ' . $type, LOGGER_DEBUG);
+ Logger::log('Unhandled object type: ' . $type, Logger::DEBUG);
}
/**
use Friendica\BaseObject;
use Friendica\Database\DBA;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Util\HTTPSignature;
use Friendica\Core\Protocol;
$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);
}
$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);
}
$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);
}
'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);
'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);
'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);
'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);
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;
);
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();
}
);
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();
}
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) {
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;
}
}
$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 = '';
$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);
return -3; // timed out
}
- logger('dfrn_deliver: ' . $xml, LOGGER_DATA);
+ Logger::log('dfrn_deliver: ' . $xml, Logger::DATA);
if (empty($xml)) {
Contact::markForArchival($contact);
}
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;
}
$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;
}
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;
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:
break;
default:
- logger("rino: invalid requested version '$rino_remote_version'");
+ Logger::log("rino: invalid requested version '$rino_remote_version'");
Contact::markForArchival($contact);
return -8;
}
}
}
- 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)) {
}
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;
}
}
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)) {
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;
}
$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;
}
$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
}
}
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;
}
}
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)) {
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]');
$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;
}
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"]];
// 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.
$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',
*/
private static function processMail($xpath, $mail, $importer)
{
- logger("Processing mails");
+ Logger::log("Processing mails");
/// @TODO Rewrite this to one statement
$msg = [];
notification($notif_params);
- logger("Mail is processed, notification was sent.");
+ Logger::log("Mail is processed, notification was sent.");
}
/**
{
$a = get_app();
- logger("Processing suggestions");
+ Logger::log("Processing suggestions");
/// @TODO Rewrite this to one statement
$suggest = [];
*/
private static function processRelocation($xpath, $relocation, $importer)
{
- logger("Processing relocations");
+ Logger::log("Processing relocations");
/// @TODO Rewrite this to one statement
$relocate = [];
);
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;
}
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
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` ";
}
*/
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) {
*/
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
// 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;
}
$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;
}
*/
private static function processEntry($header, $xpath, $entry, $importer, $xml)
{
- logger("Processing entries");
+ Logger::log("Processing entries");
$item = $header;
);
// 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;
}
// 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"];
}
$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;
}
// 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;
}
$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);
}
} 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"])) {
* 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;
}
$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);
*/
private static function processDeletion($xpath, $deletion, $importer)
{
- logger("Processing deletions");
+ Logger::log("Processing deletions");
$uri = null;
foreach ($deletion->attributes as $attributes) {
$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;
}
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;
}
}
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']]);
}
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()"));
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;
}
$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);
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]);
}
}
}
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;
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) {
$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;
}
$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;
}
$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 {
$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 {
$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 {
$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 {
$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 {
$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');
} 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;
}
$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);
}
if (!$base) {
- logger('unable to locate salmon data in xml');
+ Logger::log('unable to locate salmon data in xml');
System::httpExit(400);
}
}
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),
{
$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;
}
if (is_null($fields)) {
$private = true;
if (!($fields = self::validPosting($msg))) {
- logger("Invalid posting");
+ Logger::log("Invalid posting");
return false;
}
} else {
$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);
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);
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);
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);
return self::receiveStatusMessage($importer, $fields, $msg["message"]);
default:
- logger("Unknown message type ".$type);
+ Logger::log("Unknown message type ".$type);
return false;
}
$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;
}
$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".
// 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;
}
}
}
// 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;
{
$handle = strval($handle);
- logger("Fetching diaspora key for: ".$handle);
+ Logger::log("Fetching diaspora key for: ".$handle);
$r = self::personByHandle($handle);
if ($r) {
$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");
}
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"
{
$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]);
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'];
*/
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'",
}
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;
}
// );
//
// $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
{
$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);
}
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;
{
$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"];
}
$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);
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);
// 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;
// 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) {
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);
}
// 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;
}
}
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;
}
}
$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;
}
// 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;
}
DBA::update('gcontact', $fields, ['addr' => $old_handle]);
- logger('Contacts are updated.');
+ Logger::log('Contacts are updated.');
return true;
}
DBA::delete('gcontact', ['addr' => $author]);
- logger('Removed contacts for ' . $author);
+ Logger::log('Removed contacts for ' . $author);
return true;
}
{
$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;
$person = self::personByHandle($author);
if (!is_array($person)) {
- logger("unable to find author details");
+ Logger::log("unable to find author details");
return false;
}
}
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));
}
$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;
}
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;
}
$messages = $data->message;
if (!count($messages)) {
- logger("empty conversation");
+ Logger::log("empty conversation");
return false;
}
}
}
if (!$conversation) {
- logger("unable to create conversation.");
+ Logger::log("unable to create conversation.");
return false;
}
$person = self::personByHandle($author);
if (!is_array($person)) {
- logger("unable to find author details");
+ Logger::log("unable to find author details");
return false;
}
}
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));
}
$conversation = DBA::selectFirst('conv', [], $condition);
if (!DBA::isResult($conversation)) {
- logger("conversation not available.");
+ Logger::log("conversation not available.");
return false;
}
$person = self::personByHandle($author);
if (!$person) {
- logger("unable to find author details");
+ Logger::log("unable to find author details");
return false;
}
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;
}
$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;
}
$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]);
} 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);
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;
}
// 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
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;
}
$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
} 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"]);
$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
public static function originalItem($guid, $orig_author)
{
if (empty($guid)) {
- logger('Empty guid. Quitting.');
+ Logger::log('Empty guid. Quitting.');
return false;
}
$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.
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);
}
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);
}
$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;
}
$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;
}
// 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;
$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;
}
$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":
break;
default:
- logger("Unknown target type ".$target_type);
+ Logger::log("Unknown target type ".$target_type);
return false;
}
return true;
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);
}
*/
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;
}
}
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;
$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);
}
{
$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'])) {
$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;
}
"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);
"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);
}
"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);
}
"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);
}
$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;
}
$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
$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"]);
}
"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"]);
}
$cnv = DBA::selectFirst('conv', [], ['id' => $item["convid"], 'uid' => $item["uid"]]);
if (!DBA::isResult($cnv)) {
- logger("conversation not found.");
+ Logger::log("conversation not found.");
return;
}
$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);
}
}
{
$owner = User::getOwnerDataById($uid);
if (empty($owner)) {
+ Logger::log("No owner post, so not storing signature", Logger::DEBUG);
return false;
}
{
$owner = User::getOwnerDataById($uid);
if (empty($owner)) {
+ Logger::log("No owner post, so not storing signature", Logger::DEBUG);
return false;
}
*/
namespace Friendica\Protocol;
+use Friendica\Core\Logger;
use Friendica\Content\Text\HTML;
use Friendica\Core\Protocol;
$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;
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));
//$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);
}
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;
$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;
}
$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;
}
$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;
}
}
}
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);
$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;
}
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;
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"]);
}
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;
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);
}
}
}
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;
}
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;
// 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);
// 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
}
}
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);
}
}
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;
}
{
$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']);
}
/**
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"];
$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);
}
}
{
$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;
}
$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);
}
/**
$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]);
}
}
$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();
}
$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();
}
}
$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();
}
}
$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();
}
}
$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'];
}
}
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;
}
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);
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);
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);
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'];
}
$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;
}
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;
$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;
$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;
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);
}
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;
}
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;
$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"];
}
// 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"];
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;
}
$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;
}
$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;
}
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;
}
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') {
}
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 {
$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;
// 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;
}
// 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;
}
}
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
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;
}
*/
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");
$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);
}
}
// 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);
$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)) {
}
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);
}
}
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)) {
}
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';
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,
$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;
*/
namespace Friendica\Protocol;
+use Friendica\Core\Logger;
use Friendica\Network\Probe;
use Friendica\Util\Crypto;
use Friendica\Util\Network;
{
$ret = [];
- logger('Fetching salmon key for '.$uri);
+ Logger::log('Fetching salmon key for '.$uri);
$arr = Probe::lrdd($uri);
}
- 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.
}
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
// 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,
}
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,
$return_code = $postResult->getReturnCode();
}
- logger('slapper for '.$url.' returned ' . $return_code);
+ Logger::log('slapper for '.$url.' returned ' . $return_code);
if (! $return_code) {
return -1;
use Friendica\Core\Addon;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use ASN_BASE;
use ASNValue;
$result = openssl_pkey_new($openssl_options);
if (empty($result)) {
- logger('new_keypair: failed');
+ Logger::log('new_keypair: failed');
return false;
}
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)) {
// 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;
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);
// 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';
namespace Friendica\Util;
+use Friendica\Core\Logger;
use DateTime;
use DateTimeZone;
use Exception;
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);
}
use Friendica\Core\Addon;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
use Friendica\Protocol\Email;
$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;
}
}
use Friendica\BaseObject;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Model\User;
use Friendica\Model\APContact;
$sig_block = self::parseSigheader($headers['authorization']);
if (!$sig_block) {
- logger('no signature provided.');
+ Logger::log('no signature provided.');
return $result;
}
$key = $key($sig_block['keyId']);
}
- logger('Got keyID ' . $sig_block['keyId']);
+ Logger::log('Got keyID ' . $sig_block['keyId']);
if (!$key) {
return $result;
$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;
$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);
}
$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']];
}
}
namespace Friendica\Util;
use Friendica\Core\Cache;
+use Friendica\Core\Logger;
use Exception;
/**
}
if ($recursion > 5) {
- logger('jsonld bomb detected at: ' . $url);
+ Logger::log('jsonld bomb detected at: ' . $url);
exit();
}
}
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;
}
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);
namespace Friendica\Util;
+use Friendica\Core\Logger;
use Friendica\Util\JsonLD;
use Friendica\Util\DateTimeFormat;
use Friendica\Protocol\ActivityPub;
$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;
namespace Friendica\Util;
use Friendica\Core\Addon;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Core\Config;
use Friendica\Network\CurlResult;
$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);
}
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);
}
$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);
}
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);
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);
}
$a->saveTimestamp($stamp1, 'network');
- logger('post_url: end ' . $url, LOGGER_DATA);
+ Logger::log('post_url: end ' . $url, Logger::DATA);
return $curlResponse;
}
$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'];
}
use DOMXPath;
use Friendica\Content\OEmbed;
use Friendica\Core\Addon;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Object\Image;
}
if ($count > 10) {
- logger('Endless loop detected for ' . $url, LOGGER_DEBUG);
+ Logger::log('Endless loop detected for ' . $url, Logger::DEBUG);
return $siteinfo;
}
}
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);
}
}
}
- 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);
*/
namespace Friendica\Util;
+use Friendica\Core\Logger;
use DOMXPath;
use SimpleXMLElement;
}
if (!function_exists('xml_parser_create')) {
- logger('Xml::toArray: parser function missing');
+ Logger::log('Xml::toArray: parser function missing');
return [];
}
}
if (! $parser) {
- logger('Xml::toArray: xml_parser_create: no resource');
+ Logger::log('Xml::toArray: xml_parser_create: no resource');
return [];
}
@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;
$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();
}
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
*/
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;
namespace Friendica\Worker;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Util\Network;
{
public static function execute()
{
- logger('checkversion: start');
+ Logger::log('checkversion: start');
$checkurl = Config::get('system', 'check_new_version_url', 'none');
// 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;
}
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;
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");
// Poll contacts
self::pollContacts($parameter, $generation);
- logger('cron: end');
+ Logger::log('cron: end');
Config::set('system', 'last_cron', time());
$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']);
}
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;
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
return;
}
- logger("Xronjob " . $command . " is unknown.", LOGGER_DEBUG);
+ Logger::log("Xronjob " . $command . " is unknown.", Logger::DEBUG);
return;
}
// 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) {
}
// 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"]));
}
}
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"]));
$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']);
}
}
namespace Friendica\Worker;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
$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);
} 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);
} 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);
} 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);
} 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);
} 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);
$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
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) {
$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);
}
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;
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;
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;
}
// 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;
}
*/
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;
}
}
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);
$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']) {
*/
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;
$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));
// 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;
}
$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']);
}
$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;
}
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) {
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);
}
/**
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']]);
use Friendica\Core\Addon;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\Util\Network;
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']));
}
use Friendica\Core\Cache;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
} 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 != "") {
} 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')) {
}
}
- logger('end '.$search);
+ Logger::log('end '.$search);
return;
}
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"]);
}
private static function discoverUsers() {
- logger("Discover users", LOGGER_DEBUG);
+ Logger::log("Discover users", Logger::DEBUG);
$starttime = time();
}
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) {
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;
}
}
// 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"])) {
$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;
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);
}
}
}
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;
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);
// 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;
}
namespace Friendica\Worker;
use Friendica\Core\Cache;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\Model\GContact;
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?
$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;
}
}
}
}
- logger("gprobe end for ".normalise_link($url), LOGGER_DEBUG);
+ Logger::log("gprobe end for ".normalise_link($url), Logger::DEBUG);
return;
}
}
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;
{
$a = BaseObject::getApp();
- logger('notifier: invoked: '.$cmd.': '.$item_id, LOGGER_DEBUG);
+ Logger::log('notifier: invoked: '.$cmd.': '.$item_id, Logger::DEBUG);
$top_level = false;
$recipients = [];
$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);
}
}
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;
}
}
$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!!!!
$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'] &&
$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;
}
}
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);
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"];
}
}
// 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']);
$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
}
$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']);
}
// 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);
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']) {
}
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;
}
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);
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;
require_once 'include/items.php';
- logger('start');
+ Logger::log('start');
$manual_id = 0;
$generation = 0;
}
if (!$contact_id) {
- logger('no contact');
+ Logger::log('no contact');
return;
}
$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;
}
$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']) {
} 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;
// 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']]);
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']]);
}
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']]);
);
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']]);
$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']);
$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.
}
if (!strstr($handshake_xml, '<')) {
- logger('response from ' . $url . ' did not contain XML.');
+ Logger::log('response from ' . $url . ' did not contain XML.');
Contact::markForArchival($contact);
$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
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);
}
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']]);
$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) {
return;
}
- logger("Mail: Enabled", LOGGER_DEBUG);
+ Logger::log("Mail: Enabled", Logger::DEBUG);
$mbox = null;
$user = DBA::selectFirst('user', ['prvkey'], ['uid' => $importer_uid]);
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));
}
}
$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;
$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))
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);
$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
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);
}
}
} 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);
}
- logger("Consume feed of contact ".$contact['id']);
+ Logger::log("Consume feed of contact ".$contact['id']);
consume_feed($xml, $importer, $contact, $hub);
$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)) {
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) {
$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);
}
namespace Friendica\Worker;
use Friendica\BaseObject;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\PushSubscriber;
/// @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);
$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();
$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']);
}
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;
$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();
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;
}
$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;
}
$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;
}
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)) {
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) {
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)) ||
}
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;
}
*/
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() {
$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);
namespace Friendica\Worker;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
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;
$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']]);
}
namespace Friendica\Worker;
+use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\Network\Probe;
{
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;
}
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"
"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\">♥</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\">♥</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 ""
# 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"
#: 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"
#: 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
#: 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"
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"
#: 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"
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"
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"
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"
#: 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"
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"
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:"
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:"
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"
#: mod/settings.php:846
msgid "Disable Content Warning"
-msgstr "Inhaltswarnungen ausschalten"
+msgstr "Inhaltswarnung ausschalten"
#: mod/settings.php:846
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"
"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"
#: 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 ""
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"
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"
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"
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]"
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"
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"
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"
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"
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:"
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"
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"
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"
#: 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"
"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"
#: 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
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."
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"
#: src/Content/ContactSelector.php:91
msgid "GNU Social Connector"
-msgstr "GNU social Connector"
+msgstr "GNU Social Connector"
#: src/Content/ContactSelector.php:92
msgid "ActivityPub"
$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";
$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.";
$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.";
$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.";
$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.";
$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";
$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. ";
$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",
$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";
}
/* 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;
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>
<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)
//
} 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) {
// 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>
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;
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()
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');
}
/**
/**
* @file view/theme/vier/style.php
*/
+use Friendica\Core\Logger;
use Friendica\Core\Config;
use Friendica\Core\PConfig;
use Friendica\Model\Profile;
$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);