From ab49a613c9ad617d981c401981fb8bdf8efb5e3f Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 9 Sep 2018 16:19:30 +0200 Subject: [PATCH 001/728] Added original keys to gender --- src/Content/ContactSelector.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 5ba6528ed0..9de8b5fb7f 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -145,15 +145,29 @@ class ContactSelector public static function gender($current = "", $suffix = "") { $o = ''; - $select = ['', L10n::t('Male'), L10n::t('Female'), L10n::t('Currently Male'), L10n::t('Currently Female'), L10n::t('Mostly Male'), L10n::t('Mostly Female'), L10n::t('Transgender'), L10n::t('Intersex'), L10n::t('Transsexual'), L10n::t('Hermaphrodite'), L10n::t('Neuter'), L10n::t('Non-specific'), L10n::t('Other'), L10n::t('Undecided')]; + $select[''] = ''; + $select['Male'] = L10n::t('Male'); + $select['Female'] = L10n::t('Female'); + $select['Currently Male'] = L10n::t('Currently Male'); + $select['Currently Female'] = L10n::t('Currently Female'); + $select['Mostly Male'] = L10n::t('Mostly Male'); + $select['Mostly Female'] = L10n::t('Mostly Female'); + $select['Transgender'] = L10n::t('Transgender'); + $select['Intersex'] = L10n::t('Intersex'); + $select['Transsexual'] = L10n::t('Transsexual'); + $select['Hermaphrodite'] = L10n::t('Hermaphrodite'); + $select['Neuter'] = L10n::t('Neuter'); + $select['Non-specific'] = L10n::t('Non-specific'); + $select['Other'] = L10n::t('Other'); + $select['Undecided'] = L10n::t('Undecided'); Addon::callHooks('gender_selector', $select); $o .= "'; From b70d762574e52cfb08b619ef6d95e17698a64232 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 9 Sep 2018 16:23:37 +0200 Subject: [PATCH 002/728] Added original keys to sexual preference --- src/Content/ContactSelector.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 9de8b5fb7f..8ebf11babd 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -181,16 +181,27 @@ class ContactSelector public static function sexualPreference($current = "", $suffix = "") { $o = ''; - $select = ['', L10n::t('Males'), L10n::t('Females'), L10n::t('Gay'), L10n::t('Lesbian'), L10n::t('No Preference'), L10n::t('Bisexual'), L10n::t('Autosexual'), L10n::t('Abstinent'), L10n::t('Virgin'), L10n::t('Deviant'), L10n::t('Fetish'), L10n::t('Oodles'), L10n::t('Nonsexual')]; - + $select['Males'] = L10n::t('Males'); + $select['Females'] = L10n::t('Females'); + $select['Gay'] = L10n::t('Gay'); + $select['Lesbian'] = L10n::t('Lesbian'); + $select['No Preference'] = L10n::t('No Preference'); + $select['Bisexual'] = L10n::t('Bisexual'); + $select['Autosexual'] = L10n::t('Autosexual'); + $select['Abstinent'] = L10n::t('Abstinent'); + $select['Virgin'] = L10n::t('Virgin'); + $select['Deviant'] = L10n::t('Deviant'); + $select['Fetish'] = L10n::t('Fetish'); + $select['Oodles'] = L10n::t('Oodles'); + $select['Nonsexual'] = L10n::t('Nonsexual'); Addon::callHooks('sexpref_selector', $select); $o .= "'; From 1d8c64cfec14976ed2a9a9e0c7aa128aff71a1b5 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 9 Sep 2018 16:28:26 +0200 Subject: [PATCH 003/728] Added original keys to maritial status --- src/Content/ContactSelector.php | 36 ++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 8ebf11babd..20b5a1f92e 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -214,15 +214,45 @@ class ContactSelector public static function maritalStatus($current = "") { $o = ''; - $select = ['', L10n::t('Single'), L10n::t('Lonely'), L10n::t('Available'), L10n::t('Unavailable'), L10n::t('Has crush'), L10n::t('Infatuated'), L10n::t('Dating'), L10n::t('Unfaithful'), L10n::t('Sex Addict'), L10n::t('Friends'), L10n::t('Friends/Benefits'), L10n::t('Casual'), L10n::t('Engaged'), L10n::t('Married'), L10n::t('Imaginarily married'), L10n::t('Partners'), L10n::t('Cohabiting'), L10n::t('Common law'), L10n::t('Happy'), L10n::t('Not looking'), L10n::t('Swinger'), L10n::t('Betrayed'), L10n::t('Separated'), L10n::t('Unstable'), L10n::t('Divorced'), L10n::t('Imaginarily divorced'), L10n::t('Widowed'), L10n::t('Uncertain'), L10n::t('It\'s complicated'), L10n::t('Don\'t care'), L10n::t('Ask me')]; + $select['Single'] = L10n::t('Single'); + $select['Lonely'] = L10n::t('Lonely'); + $select['Available'] = L10n::t('Available'); + $select['Unavailable'] = L10n::t('Unavailable'); + $select['Has crush'] = L10n::t('Has crush'); + $select['Infatuated'] = L10n::t('Infatuated'); + $select['Dating'] = L10n::t('Dating'); + $select['Unfaithful'] = L10n::t('Unfaithful'); + $select['Sex Addict'] = L10n::t('Sex Addict'); + $select['Friends'] = L10n::t('Friends'); + $select['Friends/Benefits'] = L10n::t('Friends/Benefits'); + $select['Casual'] = L10n::t('Casual'); + $select['Engaged'] = L10n::t('Engaged'); + $select['Married'] = L10n::t('Married'); + $select['Imaginarily married'] = L10n::t('Imaginarily married'); + $select['Partners'] = L10n::t('Partners'); + $select['Cohabiting'] = L10n::t('Cohabiting'); + $select['Common law'] = L10n::t('Common law'); + $select['Happy'] = L10n::t('Happy'); + $select['Not looking'] = L10n::t('Not looking'); + $select['Swinger'] = L10n::t('Swinger'); + $select['Betrayed'] = L10n::t('Betrayed'); + $select['Separated'] = L10n::t('Separated'); + $select['Unstable'] = L10n::t('Unstable'); + $select['Divorced'] = L10n::t('Divorced'); + $select['Imaginarily divorced'] = L10n::t('Imaginarily divorced'); + $select['Widowed'] = L10n::t('Widowed'); + $select['Uncertain'] = L10n::t('Uncertain'); + $select['It\'s complicated'] = L10n::t('It\'s complicated'); + $select['Don\'t care'] = L10n::t('Don\'t care'); + $select['Ask me'] = L10n::t('Ask me'); Addon::callHooks('marital_selector', $select); $o .= ''; From 4d81158dd1a4f90e3add42b5fd5cd16b550b39bf Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 9 Sep 2018 16:48:31 +0200 Subject: [PATCH 004/728] Translated gender etc. in profile view --- src/Model/Profile.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 41e992aa49..a5fb908a78 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -760,7 +760,7 @@ class Profile } if ($a->profile['gender']) { - $profile['gender'] = [L10n::t('Gender:'), $a->profile['gender']]; + $profile['gender'] = [L10n::t('Gender:'), L10n::t($a->profile['gender'])]; } if (!empty($a->profile['dob']) && $a->profile['dob'] > DBA::NULL_DATE) { @@ -784,7 +784,7 @@ class Profile } if ($a->profile['marital']) { - $profile['marital'] = [L10n::t('Status:'), $a->profile['marital']]; + $profile['marital'] = [L10n::t('Status:'), L10n::t($a->profile['marital'])]; } /// @TODO Maybe use x() here, plus below? @@ -797,7 +797,7 @@ class Profile } if ($a->profile['sexual']) { - $profile['sexual'] = [L10n::t('Sexual Preference:'), $a->profile['sexual']]; + $profile['sexual'] = [L10n::t('Sexual Preference:'), L10n::t($a->profile['sexual'])]; } if ($a->profile['homepage']) { From 24dbb69421db2ec74b47144770abe7e3846b9471 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 26 Sep 2018 10:30:36 +0200 Subject: [PATCH 005/728] Added EMPTY key + updated to hypolite's suggestions --- src/Content/ContactSelector.php | 125 +++++++++++++++++--------------- 1 file changed, 66 insertions(+), 59 deletions(-) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 20b5a1f92e..f9bf6d3710 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -145,21 +145,23 @@ class ContactSelector public static function gender($current = "", $suffix = "") { $o = ''; - $select[''] = ''; - $select['Male'] = L10n::t('Male'); - $select['Female'] = L10n::t('Female'); - $select['Currently Male'] = L10n::t('Currently Male'); - $select['Currently Female'] = L10n::t('Currently Female'); - $select['Mostly Male'] = L10n::t('Mostly Male'); - $select['Mostly Female'] = L10n::t('Mostly Female'); - $select['Transgender'] = L10n::t('Transgender'); - $select['Intersex'] = L10n::t('Intersex'); - $select['Transsexual'] = L10n::t('Transsexual'); - $select['Hermaphrodite'] = L10n::t('Hermaphrodite'); - $select['Neuter'] = L10n::t('Neuter'); - $select['Non-specific'] = L10n::t('Non-specific'); - $select['Other'] = L10n::t('Other'); - $select['Undecided'] = L10n::t('Undecided'); + $select = [ + 'EMPTY' => '', + 'Male' => L10n::t('Male'), + 'Female' => L10n::t('Female'), + 'Currently Male' => L10n::t('Currently Male'), + 'Currently Female' => L10n::t('Currently Female'), + 'Mostly Male' => L10n::t('Mostly Male'), + 'Mostly Female' => L10n::t('Mostly Female'), + 'Transgender' => L10n::t('Transgender'), + 'Intersex' => L10n::t('Intersex'), + 'Transsexual' => L10n::t('Transsexual'), + 'Hermaphrodite' => L10n::t('Hermaphrodite'), + 'Neuter' => L10n::t('Neuter'), + 'Non-specific' => L10n::t('Non-specific'), + 'Other' => L10n::t('Other'), + 'Undecided' => L10n::t('Undecided'), + ]; Addon::callHooks('gender_selector', $select); @@ -181,19 +183,22 @@ class ContactSelector public static function sexualPreference($current = "", $suffix = "") { $o = ''; - $select['Males'] = L10n::t('Males'); - $select['Females'] = L10n::t('Females'); - $select['Gay'] = L10n::t('Gay'); - $select['Lesbian'] = L10n::t('Lesbian'); - $select['No Preference'] = L10n::t('No Preference'); - $select['Bisexual'] = L10n::t('Bisexual'); - $select['Autosexual'] = L10n::t('Autosexual'); - $select['Abstinent'] = L10n::t('Abstinent'); - $select['Virgin'] = L10n::t('Virgin'); - $select['Deviant'] = L10n::t('Deviant'); - $select['Fetish'] = L10n::t('Fetish'); - $select['Oodles'] = L10n::t('Oodles'); - $select['Nonsexual'] = L10n::t('Nonsexual'); + $select = [ + 'EMPTY' => '', + 'Males' => L10n::t('Males'), + 'Females' => L10n::t('Females'), + 'Gay' => L10n::t('Gay'), + 'Lesbian' => L10n::t('Lesbian'), + 'No Preference' => L10n::t('No Preference'), + 'Bisexual' => L10n::t('Bisexual'), + 'Autosexual' => L10n::t('Autosexual'), + 'Abstinent' => L10n::t('Abstinent'), + 'Virgin' => L10n::t('Virgin'), + 'Deviant' => L10n::t('Deviant'), + 'Fetish' => L10n::t('Fetish'), + 'Oodles' => L10n::t('Oodles'), + 'Nonsexual' => L10n::t('Nonsexual'), + ]; Addon::callHooks('sexpref_selector', $select); @@ -214,37 +219,39 @@ class ContactSelector public static function maritalStatus($current = "") { $o = ''; - $select['Single'] = L10n::t('Single'); - $select['Lonely'] = L10n::t('Lonely'); - $select['Available'] = L10n::t('Available'); - $select['Unavailable'] = L10n::t('Unavailable'); - $select['Has crush'] = L10n::t('Has crush'); - $select['Infatuated'] = L10n::t('Infatuated'); - $select['Dating'] = L10n::t('Dating'); - $select['Unfaithful'] = L10n::t('Unfaithful'); - $select['Sex Addict'] = L10n::t('Sex Addict'); - $select['Friends'] = L10n::t('Friends'); - $select['Friends/Benefits'] = L10n::t('Friends/Benefits'); - $select['Casual'] = L10n::t('Casual'); - $select['Engaged'] = L10n::t('Engaged'); - $select['Married'] = L10n::t('Married'); - $select['Imaginarily married'] = L10n::t('Imaginarily married'); - $select['Partners'] = L10n::t('Partners'); - $select['Cohabiting'] = L10n::t('Cohabiting'); - $select['Common law'] = L10n::t('Common law'); - $select['Happy'] = L10n::t('Happy'); - $select['Not looking'] = L10n::t('Not looking'); - $select['Swinger'] = L10n::t('Swinger'); - $select['Betrayed'] = L10n::t('Betrayed'); - $select['Separated'] = L10n::t('Separated'); - $select['Unstable'] = L10n::t('Unstable'); - $select['Divorced'] = L10n::t('Divorced'); - $select['Imaginarily divorced'] = L10n::t('Imaginarily divorced'); - $select['Widowed'] = L10n::t('Widowed'); - $select['Uncertain'] = L10n::t('Uncertain'); - $select['It\'s complicated'] = L10n::t('It\'s complicated'); - $select['Don\'t care'] = L10n::t('Don\'t care'); - $select['Ask me'] = L10n::t('Ask me'); + 'EMPTY' => '', + 'Single' => L10n::t('Single'), + 'Lonely' => L10n::t('Lonely'), + 'Available' => L10n::t('Available'), + 'Unavailable' => L10n::t('Unavailable'), + 'Has crush' => L10n::t('Has crush'), + 'Infatuated' => L10n::t('Infatuated'), + 'Dating' => L10n::t('Dating'), + 'Unfaithful' => L10n::t('Unfaithful'), + 'Sex Addict' => L10n::t('Sex Addict'), + 'Friends' => L10n::t('Friends'), + 'Friends/Benefits' => L10n::t('Friends/Benefits'), + 'Casual' => L10n::t('Casual'), + 'Engaged' => L10n::t('Engaged'), + 'Married' => L10n::t('Married'), + 'Imaginarily married' => L10n::t('Imaginarily married'), + 'Partners' => L10n::t('Partners'), + 'Cohabiting' => L10n::t('Cohabiting'), + 'Common law' => L10n::t('Common law'), + 'Happy' => L10n::t('Happy'), + 'Not looking' => L10n::t('Not looking'), + 'Swinger' => L10n::t('Swinger'), + 'Betrayed' => L10n::t('Betrayed'), + 'Separated' => L10n::t('Separated'), + 'Unstable' => L10n::t('Unstable'), + 'Divorced' => L10n::t('Divorced'), + 'Imaginarily divorced' => L10n::t('Imaginarily divorced'), + 'Widowed' => L10n::t('Widowed'), + 'Uncertain' => L10n::t('Uncertain'), + 'It\'s complicated' => L10n::t('It\'s complicated'), + 'Don\'t care' => L10n::t('Don\'t care'), + 'Ask me' => L10n::t('Ask me'), + ]; Addon::callHooks('marital_selector', $select); From c44ca31aeca8040bf30c3ba53e1555b389ac1493 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 26 Sep 2018 13:13:09 +0200 Subject: [PATCH 006/728] Why got this even approved? --- src/Content/ContactSelector.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index f9bf6d3710..86dd6f002d 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -219,6 +219,7 @@ class ContactSelector public static function maritalStatus($current = "") { $o = ''; + $select = [ 'EMPTY' => '', 'Single' => L10n::t('Single'), 'Lonely' => L10n::t('Lonely'), From bc553a2c492825df51456df145395f5bae2cc618 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 1 Oct 2018 11:57:34 +0200 Subject: [PATCH 007/728] Translated string will never match what's saved in DB if not english Rare jongens die Amerikanen ;) --- src/Content/ContactSelector.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 86dd6f002d..a2cc8c3a8c 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -168,7 +168,7 @@ class ContactSelector $o .= ""; foreach ($select as $neutral => $selection) { if ($selection !== 'NOTRANSLATION') { - $selected = (($selection == $current) ? ' selected="selected" ' : ''); + $selected = (($neutral == $current) ? ' selected="selected" ' : ''); $o .= ""; } } @@ -259,7 +259,7 @@ class ContactSelector $o .= '

{{$upload}}

+ {{include file="field_select.tpl" field=$storagebackend}} + {{foreach from=$storageform item=$field}} + {{include file=$field.field field=$field}} + {{/foreach}} +
{{include file="field_input.tpl" field=$maximagesize}} {{include file="field_input.tpl" field=$maximagelength}} {{include file="field_input.tpl" field=$jpegimagequality}} diff --git a/view/theme/frio/templates/admin/site.tpl b/view/theme/frio/templates/admin/site.tpl index 5d4fd2506e..c8ee133a95 100644 --- a/view/theme/frio/templates/admin/site.tpl +++ b/view/theme/frio/templates/admin/site.tpl @@ -135,7 +135,11 @@
- + {{include file="field_select.tpl" field=$storagebackend}} + {{foreach from=$storageform item=$field}} + {{include file=$field.field field=$field}} + {{/foreach}} +
{{include file="field_input.tpl" field=$maximagesize}} {{include file="field_input.tpl" field=$maximagelength}} {{include file="field_input.tpl" field=$jpegimagequality}} From a46cbfca3dfda12d4576b752382dc1d19c06c94f Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sat, 8 Dec 2018 18:49:47 +0100 Subject: [PATCH 038/728] Fix Module\Photo exit with error --- src/Module/Photo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Photo.php b/src/Module/Photo.php index b20c2657a5..3cf500719f 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -84,7 +84,7 @@ class Photo extends BaseModule if (is_null($img) || !$img->isValid()) { Logger::log("Invalid photo with id {$photo["id"]}."); - System::httpExit(500, "Internal Server Error"); + System::httpExit(500, ["description" => "Invalid photo with id {$photo["id"]}."]); } From 5fdc9097a24262101b0a967fcc45d8339b7b06ef Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sun, 9 Dec 2018 12:33:38 +0100 Subject: [PATCH 039/728] Rewrite Proxy module --- src/Module/Proxy.php | 338 ++++++++++++++++++++++++------------------- 1 file changed, 192 insertions(+), 146 deletions(-) diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 29e0f4f52f..b975069e7a 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -19,6 +19,10 @@ use Friendica\Util\Proxy as ProxyUtils; /** * @brief Module Proxy + * + * urls: + * /proxy/[sub1/[sub2/]][.ext][:size] + * /proxy?url= */ class Proxy extends BaseModule { @@ -66,21 +70,102 @@ class Proxy extends BaseModule header_remove('pragma'); } - $thumb = false; - $size = 1024; - $sizetype = ''; - $basepath = $a->getBasePath(); + $direct_cache = self::setupDirectCache(); - // If the cache path isn't there, try to create it - if (!is_dir($basepath . '/proxy') && is_writable($basepath)) { - mkdir($basepath . '/proxy'); + $request = self::getRequestInfo(); + + if (empty($request['url'])) { + System::httpExit(400, ['title' => L10n::t('Bad Request.')]); } - // Checking if caching into a folder in the webroot is activated and working - $direct_cache = (is_dir($basepath . '/proxy') && is_writable($basepath . '/proxy')); + // Webserver already tried direct cache... + // Try to use filecache; + $cachefile = self::responseFromCache($request); + + // Try to use photo from db + self::responseFromDB($request); + + + // + // If script is here, the requested url has never cached before. + // Let's fetch it, scale it if required, then save it in cache. + // + + + // It shouldn't happen but it does - spaces in URL + $request['url'] = str_replace(' ', '+', $request['url']); + $redirects = 0; + $fetchResult = Network::fetchUrlFull($request['url'], true, $redirects, 10); + $img_str = $fetchResult->getBody(); + + $tempfile = tempnam(get_temppath(), 'cache'); + file_put_contents($tempfile, $img_str); + $mime = mime_content_type($tempfile); + unlink($tempfile); + + // If there is an error then return a blank image + if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || (!$img_str)) { + self::responseError($request); + // stop. + } + + $image = new Image($img_str, $mime); + if (!$image->isValid()) { + self::responseError($request); + // stop. + } + + // Store original image + if ($direct_cache) { + // direct cache , store under ./proxy/ + file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true), $image->asString()); + } elseif($cachefile !== '') { + // cache file + file_put_contents($cachefile, $image->asString()); + } else { + // database + Photo::store($image, 0, 0, $request['urlhash'], $request['url'], '', 100); + } + + + // reduce quality - if it isn't a GIF + if ($image->getType() != 'image/gif') { + $image->scaleDown($request['size']); + } + + + // Store scaled image + if ($direct_cache && $request['sizetype'] != '') { + file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true) . $request['sizetype'], $image->asString()); + } + + self::responseImageHttpCache($image); + // stop. + } + + + /** + * @brief Build info about requested image to be proxied + * + * @return array + * [ + * 'url' => requested url, + * 'urlhash' => sha1 has of the url prefixed with 'pic:', + * 'size' => requested image size (int) + * 'sizetype' => requested image size (string): ':micro', ':thumb', ':small', ':medium', ':large' + * ] + */ + private static function getRequestInfo() + { + $a = self::getApp(); + $url = ''; + $size = 1024; + $sizetype = ''; + + // Look for filename in the arguments - if ((isset($a->argv[1]) || isset($a->argv[2]) || isset($a->argv[3])) && !isset($_REQUEST['url'])) { + if (($a->argc > 1) && !isset($_REQUEST['url'])) { if (isset($a->argv[3])) { $url = $a->argv[3]; } elseif (isset($a->argv[2])) { @@ -89,6 +174,7 @@ class Proxy extends BaseModule $url = $a->argv[1]; } + /// @TODO: Why? And what about $url in this case? if (isset($a->argv[3]) && ($a->argv[3] == 'thumb')) { $size = 200; } @@ -125,148 +211,108 @@ class Proxy extends BaseModule $url = base64_decode(strtr($url, '-_', '+/'), true); - if ($url) { - $_REQUEST['url'] = $url; - } } else { - $direct_cache = false; + $url = defaults($_REQUEST, 'url', ''); + } + + return [ + 'url' => $url, + 'urlhash' => 'pic:' . sha1($url), + 'size' => $size, + 'sizetype' => $sizetype, + ]; + } + + + /** + * @brief setup ./proxy folder for direct cache + * + * @return bool False if direct cache can't be used. + */ + private static function setupDirectCache() + { + $a = self::getApp(); + $basepath = $a->getBasePath(); + + // If the cache path isn't there, try to create it + if (!is_dir($basepath . '/proxy') && is_writable($basepath)) { + mkdir($basepath . '/proxy'); } - if (empty($_REQUEST['url'])) { - System::httpExit(400, ["title" => L10n::t('Bad Request.')]); + // Checking if caching into a folder in the webroot is activated and working + $direct_cache = (is_dir($basepath . '/proxy') && is_writable($basepath . '/proxy')); + // we don't use direct cache if image url is passed in args and not in querystring + $direct_cache = $direct_cache && ($a->argc > 1) && !isset($_REQUEST['url']); + + return $direct_cache; + } + + + /** + * @brief Try to reply with image in cachefile + * + * @param array $request Array from getRequestInfo + * + * @return string Cache file name, empty string if cache is not enabled. + * + * If cachefile exists, script ends here and this function will never returns + */ + private static function responseFromCache(&$request) + { + $cachefile = get_cachefile(hash('md5', $request['url'])); + if ($cachefile != '' && file_exists($cachefile)) { + $img = new Image(file_get_contents($cachefile), mime_content_type($cachefile)); + self::responseImageHttpCache($img); + // stop. } + return $cachefile; + } + + /** + * @brief Try to reply with image in database + * + * @param array $request Array from getRequestInfo + * + * If the image exists in database, then script ends here and this function will never returns + */ + private static function responseFromDB(&$request) { + + $photo = Photo::getPhoto($request['urlhash']); - if (!$direct_cache) { - $urlhash = 'pic:' . sha1($_REQUEST['url']); - - $cachefile = get_cachefile(hash('md5', $_REQUEST['url'])); - if ($cachefile != '' && file_exists($cachefile)) { - $img_str = file_get_contents($cachefile); - $mime = mime_content_type($cachefile); - - header('Content-type: ' . $mime); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); - header('Etag: "' . md5($img_str) . '"'); - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT'); - header('Cache-Control: max-age=31536000'); - - // reduce quality - if it isn't a GIF - if ($mime != 'image/gif') { - $image = new Image($img_str, $mime); - - if ($image->isValid()) { - $img_str = $image->asString(); - } - } - - echo $img_str; - exit(); - } - } else { - $cachefile = ''; + if ($photo !== false) { + $img = Photo::getImageForPhoto($photo); + self::responseImageHttpCache($img); + // stop. } - - $valid = true; - $photo = null; - - if (!$direct_cache && ($cachefile == '')) { - $photo = DBA::selectFirst('photo', ['data', 'desc'], ['resource-id' => $urlhash]); - - if (DBA::isResult($photo)) { - $img_str = $photo['data']; - $mime = $photo['desc']; - - if ($mime == '') { - $mime = 'image/jpeg'; - } - } - } - - if (!DBA::isResult($photo)) { - // It shouldn't happen but it does - spaces in URL - $_REQUEST['url'] = str_replace(' ', '+', $_REQUEST['url']); - $redirects = 0; - $fetchResult = Network::fetchUrlFull($_REQUEST['url'], true, $redirects, 10); - $img_str = $fetchResult->getBody(); - - $tempfile = tempnam(get_temppath(), 'cache'); - file_put_contents($tempfile, $img_str); - $mime = mime_content_type($tempfile); - unlink($tempfile); - - // If there is an error then return a blank image - if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || (!$img_str)) { - $img_str = file_get_contents('images/blank.png'); - $mime = 'image/png'; - $cachefile = ''; // Clear the cachefile so that the dummy isn't stored - $valid = false; - $image = new Image($img_str, 'image/png'); - - if ($image->isValid()) { - $image->scaleDown(10); - $img_str = $image->asString(); - } - } elseif ($mime != 'image/jpeg' && !$direct_cache && $cachefile == '') { - $image = @imagecreatefromstring($img_str); - - if ($image === FALSE) { - die(); - } - - $fields = ['uid' => 0, 'contact-id' => 0, 'guid' => System::createGUID(), 'resource-id' => $urlhash, 'created' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utcNow(), - 'filename' => basename($_REQUEST['url']), 'type' => '', 'album' => '', 'height' => imagesy($image), 'width' => imagesx($image), - 'datasize' => 0, 'data' => $img_str, 'scale' => 100, 'profile' => 0, - 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', 'desc' => $mime]; - DBA::insert('photo', $fields); - } else { - $image = new Image($img_str, $mime); - - if ($image->isValid() && !$direct_cache && ($cachefile == '')) { - Photo::store($image, 0, 0, $urlhash, $_REQUEST['url'], '', 100); - } - } - } - - $img_str_orig = $img_str; - - // reduce quality - if it isn't a GIF - if ($mime != 'image/gif') { - $image = new Image($img_str, $mime); - - if ($image->isValid()) { - $image->scaleDown($size); - $img_str = $image->asString(); - } - } - - /* - * If there is a real existing directory then put the cache file there - * advantage: real file access is really fast - * Otherwise write in cachefile - */ - if ($valid && $direct_cache) { - file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($_REQUEST['url'], true), $img_str_orig); - - if ($sizetype != '') { - file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($_REQUEST['url'], true) . $sizetype, $img_str); - } - } elseif ($cachefile != '') { - file_put_contents($cachefile, $img_str_orig); - } - - header('Content-type: ' . $mime); - - // Only output the cache headers when the file is valid - if ($valid) { - header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); - header('Etag: "' . md5($img_str) . '"'); - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT'); - header('Cache-Control: max-age=31536000'); - } - - echo $img_str; - + } + + /** + * @brief Output a blank image, without cache headers, in case of errors + * + */ + private static function responseError() { + header('Content-type: ' . $img->getType()); + echo file_get_contents('images/blank.png'); + exit(); + } + + /** + * @brief Output the image with cache headers + * + * @param Image $image + */ + private static function responseImageHttpCache(Image $img) + { + if (is_null($img) || !$img->isValid()) { + self::responseError(); + // stop. + } + header('Content-type: ' . $img->getType()); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); + header('Etag: "' . md5($img->asString()) . '"'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT'); + header('Cache-Control: max-age=31536000'); + echo $img->asString(); exit(); } - } From 36f30533b75df3d32eb54d28a072807134cb12f7 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sun, 9 Dec 2018 12:38:34 +0100 Subject: [PATCH 040/728] Code standards --- src/Module/Proxy.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index b975069e7a..d6c9a841c9 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -316,3 +316,5 @@ class Proxy extends BaseModule exit(); } } + + From 15a3fc05d35ce957bc9663c8ed9819f1cf5c22c6 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 11 Dec 2018 20:01:54 +0100 Subject: [PATCH 041/728] Photo model: set edited and updated on update, fix exists(), docs --- src/Model/Photo.php | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 4942381a4c..1b30879456 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -148,22 +148,31 @@ class Photo extends BaseObject * @brief Check if photo with given resource id exists * * @param string $resourceid Resource ID of the photo + * @param array $conditions Array of extra conditions. Optional * * @return boolean */ - public static function exists($resourceid) + public static function exists($resourceid, array $conditions = []) { - return DBA::count("photo", ["resource-id" => $resourceid]) > 0; + if (!is_null($resourceid)) { + $conditions["resource-id"] = $resourceid; + } + if (count($conditions) == 0) { + // no conditions defined. return false + return false; + } + return DBA::count("photo", $conditions) > 0; } + /** * @brief Get Image object for given row id. null if row id does not exist * - * @param integer $id Row id + * @param array $photo Photo data. Needs at least 'id', 'type', 'backend-class', 'backend-ref' * * @return \Friendica\Object\Image */ - public static function getImageForPhoto($photo) + public static function getImageForPhoto(array $photo) { $data = ""; if ($photo["backend-class"] == "") { @@ -307,11 +316,21 @@ class Photo extends BaseObject return $r; } - public static function delete(array $conditions, $options = []) + /** + * @brief Delete info from table and data from storage + * + * @param array $conditions Field condition(s) + * @param array $options Options array, Optional + * + * @return boolean + * + * @see \Friendica\Database\DBA::delete + */ + public static function delete(array $conditions, array $options = []) { // get photo to delete data info $photos = self::select(["backend-class","backend-ref"], $conditions); - + foreach($photos as $photo) { $backend_class = (string)$photo["backend-class"]; if ($backend_class !== "") { @@ -348,9 +367,10 @@ class Photo extends BaseObject $fields["data"] = $img->asString(); } } + $fields['updated'] = DateTimeFormat::utcNow(); } - $fields['updated'] = DateTimeFormat::utcNow(); + $fields['edited'] = DateTimeFormat::utcNow(); return DBA::update("photo", $fields, $conditions); } From d549787bc1f2b46133b14868ab57342d7c770908 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 11 Dec 2018 20:02:30 +0100 Subject: [PATCH 042/728] Remove empty line before code --- src/Model/Storage/StorageException.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Model/Storage/StorageException.php b/src/Model/Storage/StorageException.php index 4321bc1ceb..b55a39fe38 100644 --- a/src/Model/Storage/StorageException.php +++ b/src/Model/Storage/StorageException.php @@ -1,4 +1,3 @@ - Date: Tue, 11 Dec 2018 20:03:29 +0100 Subject: [PATCH 043/728] Use Model\Photo as much as possible Most important is to use `Photo::delete()` to have backend to remove data. --- include/api.php | 53 ++++++++++++++--------------------------- mod/item.php | 11 +++++---- mod/photos.php | 2 +- src/Model/Contact.php | 2 +- src/Model/Item.php | 19 ++++++--------- src/Model/Mail.php | 3 ++- src/Model/User.php | 3 ++- src/Worker/CronJobs.php | 2 +- 8 files changed, 39 insertions(+), 56 deletions(-) diff --git a/include/api.php b/include/api.php index 22ed066baf..c59ecd016a 100644 --- a/include/api.php +++ b/include/api.php @@ -3961,7 +3961,7 @@ function api_fr_photoalbum_delete($type) } // now let's delete all photos from the album - $result = DBA::delete('photo', ['uid' => api_user(), 'album' => $album]); + $result = Photo::delete(['uid' => api_user(), 'album' => $album]); // return success of deletion or error message if ($result) { @@ -3995,11 +3995,11 @@ function api_fr_photoalbum_update($type) throw new BadRequestException("no new albumname specified"); } // check if album is existing - if (!DBA::exists('photo', ['uid' => api_user(), 'album' => $album])) { + if (!Photo::exists(null, ['uid' => api_user(), 'album' => $album])) { throw new BadRequestException("album not available"); } // now let's update all photos to the albumname - $result = DBA::update('photo', ['album' => $album_new], ['uid' => api_user(), 'album' => $album]); + $result = Photo::update(['album' => $album_new], ['uid' => api_user(), 'album' => $album]); // return success of updating or error message if ($result) { @@ -4099,14 +4099,8 @@ function api_fr_photo_create_update($type) } else { $mode = "update"; - // check if photo is existing in database - $r = q( - "SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", - intval(api_user()), - DBA::escape($photo_id), - DBA::escape($album) - ); - if (!DBA::isResult($r)) { + // check if photo is existing in databasei + if (!Photo::exists($photo_id, ['uid' => api_user(), 'album' => $album]) { throw new BadRequestException("photo not available"); } } @@ -4135,47 +4129,40 @@ function api_fr_photo_create_update($type) // now let's do the changes in update-mode if ($mode == "update") { - $sql_extra = ""; + $updated_fields = []; if (!is_null($desc)) { - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`desc` = '$desc'"; + $updated_fields['desc'] = $desc; } if (!is_null($album_new)) { - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`album` = '$album_new'"; + $updated_fields['album'] = $album_new; } if (!is_null($allow_cid)) { $allow_cid = trim($allow_cid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_cid` = '$allow_cid'"; + $updated_fields['allow_cid'] = $allow_cid; } if (!is_null($deny_cid)) { $deny_cid = trim($deny_cid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_cid` = '$deny_cid'"; + $updated_fields['deny_cid'] = $deny_cid; } if (!is_null($allow_gid)) { $allow_gid = trim($allow_gid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_gid` = '$allow_gid'"; + $updated_fields['allow_gid'] = $allow_gid; } if (!is_null($deny_gid)) { $deny_gid = trim($deny_gid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_gid` = '$deny_gid'"; + $updated_fields['deny_gid'] = $deny_gid; } $result = false; - if ($sql_extra != "") { + if (count($updated_fields) > 0) { $nothingtodo = false; - $result = q( - "UPDATE `photo` SET %s, `edited`='%s' WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", - $sql_extra, - DateTimeFormat::utcNow(), // update edited timestamp - intval(api_user()), - DBA::escape($photo_id), - DBA::escape($album) - ); + $result = Photo::update($updated_fields, ['uid' => api_user(), 'resource-id' => $photo_id, 'album' => $album]); } else { $nothingtodo = true; } @@ -4224,16 +4211,12 @@ function api_fr_photo_delete($type) throw new BadRequestException("no photo_id specified"); } // check if photo is existing in database - $r = q( - "SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'", - intval(api_user()), - DBA::escape($photo_id) - ); - if (!DBA::isResult($r)) { + $r = Photo::exists($photo_id, ['uid' => api_user()]); + if (!$r) { throw new BadRequestException("photo not available"); } // now we can perform on the deletion of the photo - $result = DBA::delete('photo', ['uid' => api_user(), 'resource-id' => $photo_id]); + $result = Photo::delete(['uid' => api_user(), 'resource-id' => $photo_id]); // return success of deletion or error message if ($result) { @@ -4343,7 +4326,7 @@ function api_account_update_profile_image($type) // change specified profile or all profiles to the new resource-id if ($is_default_profile) { $condition = ["`profile` AND `resource-id` != ? AND `uid` = ?", $data['photo']['id'], api_user()]; - DBA::update('photo', ['profile' => false], $condition); + Photo::update(['profile' => false], $condition); } else { $fields = ['photo' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype, 'thumb' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype]; diff --git a/mod/item.php b/mod/item.php index 4617dfa02e..cc9de0dd60 100644 --- a/mod/item.php +++ b/mod/item.php @@ -31,6 +31,7 @@ use Friendica\Model\Contact; use Friendica\Model\Conversation; use Friendica\Model\FileTag; use Friendica\Model\Item; +use Friendica\Model\Photo; use Friendica\Protocol\Diaspora; use Friendica\Protocol\Email; use Friendica\Util\DateTimeFormat; @@ -456,16 +457,18 @@ function item_post(App $a) { // Ensure to only modify photos that you own $srch = '<' . intval($original_contact_id) . '>'; - $condition = ['allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', - 'resource-id' => $image_uri, 'uid' => $profile_uid]; - if (!DBA::exists('photo', $condition)) { + $condition = [ + 'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', + 'uid' => $profile_uid + ]; + if (!Photo::exists($image_uri, $condition)) { continue; } $fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny]; $condition = ['resource-id' => $image_uri, 'uid' => $profile_uid]; - DBA::update('photo', $fields, $condition); + Photo::update($fields, $condition); } } } diff --git a/mod/photos.php b/mod/photos.php index c72b66f259..3ccd3fa111 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -344,7 +344,7 @@ function photos_post(App $a) } if (DBA::isResult($r)) { - Photo::delete(['resource-id' => $r[0]['resource-id'], 'uid' => $page_owner_uid]); + Photo::delete(['uid' => $page_owner_uid, 'resource-id' => $r[0]['resource-id']]); Item::deleteForUser(['resource-id' => $r[0]['resource-id'], 'uid' => $page_owner_uid], $page_owner_uid); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 52bcc3b54b..1dac5dbf41 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -483,7 +483,7 @@ class Contact extends BaseObject 'gender' => $profile['gender'], 'avatar' => $profile['photo'], 'contact-type' => $user['account-type'], 'xmpp' => $profile['xmpp']]; - $avatar = DBA::selectFirst('photo', ['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); + $avatar = Photo::selectFirst(['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); if (DBA::isResult($avatar)) { if ($update_avatar) { $fields['avatar-date'] = DateTimeFormat::utcNow(); diff --git a/src/Model/Item.php b/src/Model/Item.php index 95256219a1..f4290aab97 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1030,7 +1030,7 @@ class Item extends BaseObject * generate a resource-id and therefore aren't intimately linked to the item. */ if (strlen($item['resource-id'])) { - DBA::delete('photo', ['resource-id' => $item['resource-id'], 'uid' => $item['uid']]); + Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]); } // If item is a link to an event, delete the event. @@ -2737,8 +2737,7 @@ class Item extends BaseObject if ($x) { $res = substr($i, $x + 1); $i = substr($i, 0, $x); - $fields = ['data', 'type', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']; - $photo = DBA::selectFirst('photo', $fields, ['resource-id' => $i, 'scale' => $res, 'uid' => $uid]); + $photo = Photo::getPhotoForUser($uid, $i, $res); if (DBA::isResult($photo)) { /* * Check to see if we should replace this photo link with an embedded image @@ -2762,9 +2761,7 @@ class Item extends BaseObject } } if ($replace) { - $data = $photo['data']; - $type = $photo['type']; - + $photo_img = Photo::getImageForPhoto($photo); // 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::log('scaling photo', Logger::DEBUG); @@ -2772,14 +2769,12 @@ class Item extends BaseObject $width = intval($match[1]); $height = intval($match[2]); - $Image = new Image($data, $type); - if ($Image->isValid()) { - $Image->scaleDown(max($width, $height)); - $data = $Image->asString(); - $type = $Image->getType(); - } + $photo_img->scaleDown(max($width, $height)); } + $data = $photo_img->asString(); + $type = $photo_img->getType(); + Logger::log('replacing photo', Logger::DEBUG); $image = 'data:' . $type . ';base64,' . base64_encode($data); Logger::log('replaced: ' . $image, Logger::DATA); diff --git a/src/Model/Mail.php b/src/Model/Mail.php index deedadeb0f..b47d4ac8e3 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -10,6 +10,7 @@ use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Model\Photo; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; @@ -141,7 +142,7 @@ class Mail } $image_uri = substr($image, strrpos($image, '/') + 1); $image_uri = substr($image_uri, 0, strpos($image_uri, '-')); - DBA::update('photo', ['allow-cid' => '<' . $recipient . '>'], ['resource-id' => $image_uri, 'album' => 'Wall Photos', 'uid' => local_user()]); + Photo::update(['allow-cid' => '<' . $recipient . '>'], ['resource-id' => $image_uri, 'album' => 'Wall Photos', 'uid' => local_user()]); } } } diff --git a/src/Model/User.php b/src/Model/User.php index 2effb660fb..4fc17ae82d 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -17,6 +17,7 @@ use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Model\Photo; use Friendica\Object\Image; use Friendica\Util\Crypto; use Friendica\Util\DateTimeFormat; @@ -701,7 +702,7 @@ class User } if (!$photo_failure) { - DBA::update('photo', ['profile' => 1], ['resource-id' => $hash]); + Photo::update(['profile' => 1], ['resource-id' => $hash]); } } } diff --git a/src/Worker/CronJobs.php b/src/Worker/CronJobs.php index b13afffd9a..ca50e0e75f 100644 --- a/src/Worker/CronJobs.php +++ b/src/Worker/CronJobs.php @@ -173,7 +173,7 @@ class CronJobs } $condition = ['`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime]; - DBA::delete('photo', $condition); + Photo::delete($condition); } // Delete the cached OEmbed entries that are older than three month From e7fbe04b115d2e35fe82d18b231502ee1a9ec232 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 11 Dec 2018 20:09:24 +0100 Subject: [PATCH 044/728] Fix parse error --- include/api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/api.php b/include/api.php index c59ecd016a..5a2248e6e7 100644 --- a/include/api.php +++ b/include/api.php @@ -4100,7 +4100,7 @@ function api_fr_photo_create_update($type) $mode = "update"; // check if photo is existing in databasei - if (!Photo::exists($photo_id, ['uid' => api_user(), 'album' => $album]) { + if (!Photo::exists($photo_id, ['uid' => api_user(), 'album' => $album])) { throw new BadRequestException("photo not available"); } } From 55292c954b93054bcf4551c560958580151fed03 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 12 Dec 2018 08:12:34 +0100 Subject: [PATCH 045/728] Remove resourceid parameter from Photo::exists() --- include/api.php | 6 +++--- mod/item.php | 4 ++-- src/Model/Photo.php | 10 +--------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/include/api.php b/include/api.php index 5a2248e6e7..9c18441103 100644 --- a/include/api.php +++ b/include/api.php @@ -3995,7 +3995,7 @@ function api_fr_photoalbum_update($type) throw new BadRequestException("no new albumname specified"); } // check if album is existing - if (!Photo::exists(null, ['uid' => api_user(), 'album' => $album])) { + if (!Photo::exists(['uid' => api_user(), 'album' => $album])) { throw new BadRequestException("album not available"); } // now let's update all photos to the albumname @@ -4100,7 +4100,7 @@ function api_fr_photo_create_update($type) $mode = "update"; // check if photo is existing in databasei - if (!Photo::exists($photo_id, ['uid' => api_user(), 'album' => $album])) { + if (!Photo::exists(['resource-id' => $photo_id, 'uid' => api_user(), 'album' => $album])) { throw new BadRequestException("photo not available"); } } @@ -4211,7 +4211,7 @@ function api_fr_photo_delete($type) throw new BadRequestException("no photo_id specified"); } // check if photo is existing in database - $r = Photo::exists($photo_id, ['uid' => api_user()]); + $r = Photo::exists(['resource-id' => $photo_id, 'uid' => api_user()]); if (!$r) { throw new BadRequestException("photo not available"); } diff --git a/mod/item.php b/mod/item.php index cc9de0dd60..62b088a04f 100644 --- a/mod/item.php +++ b/mod/item.php @@ -459,9 +459,9 @@ function item_post(App $a) { $condition = [ 'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', - 'uid' => $profile_uid + 'resource-id' => $image_uri, 'uid' => $profile_uid ]; - if (!Photo::exists($image_uri, $condition)) { + if (!Photo::exists($condition)) { continue; } diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 1b30879456..7eb7bb26ac 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -147,20 +147,12 @@ class Photo extends BaseObject /** * @brief Check if photo with given resource id exists * - * @param string $resourceid Resource ID of the photo * @param array $conditions Array of extra conditions. Optional * * @return boolean */ - public static function exists($resourceid, array $conditions = []) + public static function exists(array $conditions = []) { - if (!is_null($resourceid)) { - $conditions["resource-id"] = $resourceid; - } - if (count($conditions) == 0) { - // no conditions defined. return false - return false; - } return DBA::count("photo", $conditions) > 0; } From f2b29f6591f5190e36c4b75458da8ec793fcc798 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 12 Dec 2018 17:50:34 +0100 Subject: [PATCH 046/728] Fix moving stored data --- src/Core/StorageManager.php | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index e1bab23aca..ad2c0cb1db 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -4,6 +4,7 @@ namespace Friendica\Core; use Friendica\Database\DBA; use Friendica\Core\Config; +use Friendica\Core\Logger; @@ -105,35 +106,55 @@ class StorageManager /** * @brief Move resources to storage $dest * + * Copy existing data to destination storage and delete from source. + * This method cannot move to legacy in-table `data` field. + * * @param string $dest Destination storage class name * @param array $tables Tables to look in for resources. Optional, defaults to ['photo'] * * @retur int Number of moved resources */ - public static function move($dest, $tables = null) + public static function move(string $dest, $tables = null) { + if (is_null($dest) || empty($dest)) { + throw Exception('Can\'t move to NULL storage backend'); + } + if (is_null($tables)) { $tables = ['photo']; } $moved = 0; foreach ($tables as $table) { - $rr = DBA::select($table, ['id', 'data', 'backend-class', 'backend-ref'], ['`backend-class` != ?', $dest]); + // Get the rows where backend class is not the destination backend class + $rr = DBA::select( + $table, + ['id', 'data', 'backend-class', 'backend-ref'], + ['`backend-class` IS NULL or `backend-class` != ?' , $dest ] + ); + if (DBA::isResult($rr)) { while($r = $rr->fetch()) { $id = $r['id']; $data = $r['data']; $backendClass = $r['backend-class']; $backendRef = $r['backend-ref']; - if ($backendClass !== '') { + if (!is_null($backendClass) && $backendClass !== '') { + Logger::log("get data from old backend " . $backendClass . " : " . $backendRef); $data = $backendClass::get($backendRef); } + + Logger::log("save data to new backend " . $dest); $ref = $dest::put($data); + Logger::log("saved data as " . $ref); if ($ref !== '') { + Logger::log("update row"); $ru = DBA::update($table, ['backend-class' => $dest, 'backend-ref' => $ref, 'data' => ''], ['id' => $id]); + if ($ru) { - if ($backendClass !== '') { + if (!is_null($backendClass) && $backendClass !== '') { + Logger::log("delete data from old backend " . $backendClass . " : " . $backendRef); $backendClass::delete($backendRef); } $moved++; @@ -145,4 +166,5 @@ class StorageManager return $moved; } -} \ No newline at end of file +} + From 2f935a1fbf1797b26f4fad046599d231ed6c285d Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 12 Dec 2018 20:35:18 +0100 Subject: [PATCH 047/728] Fix unregister storage backend --- src/Core/StorageManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index ad2c0cb1db..4c7b151bf7 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -95,7 +95,7 @@ class StorageManager * * @param string $name User readable backend name */ - public static function unregister($class) + public static function unregister($name) { self::setup(); unset(self::$backends[$name]); @@ -114,7 +114,7 @@ class StorageManager * * @retur int Number of moved resources */ - public static function move(string $dest, $tables = null) + public static function move($dest, $tables = null) { if (is_null($dest) || empty($dest)) { throw Exception('Can\'t move to NULL storage backend'); From ce31ccaade3874233950e283b580007ea314f3aa Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 12 Dec 2018 20:36:56 +0100 Subject: [PATCH 048/728] Add docs about storage backend --- doc/AddonStorageBackend.md | 202 +++++++++++++++++++++++++++++++++++++ doc/Home.md | 1 + doc/Settings.md | 25 +++++ doc/tools.md | 3 + 4 files changed, 231 insertions(+) create mode 100644 doc/AddonStorageBackend.md diff --git a/doc/AddonStorageBackend.md b/doc/AddonStorageBackend.md new file mode 100644 index 0000000000..d6ad9d37db --- /dev/null +++ b/doc/AddonStorageBackend.md @@ -0,0 +1,202 @@ +Friendica Storage Backend Addon development +=========================================== + +* [Home](help) + +Storage backends can be added via addons. +A storage backend is implemented as a class, and the plugin register the class to make it avaiable to the system. + +## The Storage Backend Class + +The class must live in `Friendica\Addon\youraddonname` namespace, where `youraddonname` the folder name of your addon. + +The class must implement `Friendica\Model\Storage\IStorage` interface. All method in the interface must be implemented: + +namespace Friendica\Model\Storage; + + interface IStorage + { + public static function get($ref); + public static function put($data, $ref = ""); + public static function delete($ref); + public static function getOptions(); + public static function saveOptions($data); + } + +- `get($ref)` returns data pointed by `$ref` +- `put($data, $ref)` saves data in `$data` to position `$ref`, or a new position if `$ref` is empty. +- `delete($ref)` delete data pointed by `$ref` + +Each storage backend can have options the admin can set in admin page. + +- `getOptions()` returns an array with details about each option to build the interface. +- `saveOptions($data)` get `$data` from admin page, validate it and save it. + +The array returned by `getOptions()` is defined as: + + [ + 'option1name' => [ ..info.. ], + 'option2name' => [ ..info.. ], + ... + ] + +An empty array can be returned if backend doesn't have any options. + +The info array for each option is defined as: + + [ + 'type', + +define the field used in form, and the type of data. +one of 'checkbox', 'combobox', 'custom', 'datetime', 'input', 'intcheckbox', 'password', 'radio', 'richtext', 'select', 'select_raw', 'textarea', 'yesno' + + 'label', + +Translatable label of the field. This label will be shown in admin page + + value, + +Current value of the option + + 'help text', + +Translatable description for the field. Will be shown in admin page + + extra data + +Optional. Depends on which 'type' this option is: + +- 'select': array `[ value => label ]` of choices +- 'intcheckbox': value of input element +- 'select_raw': prebuild html string of `
diff --git a/view/theme/vier/templates/sub/delivery_count.tpl b/view/theme/vier/templates/sub/delivery_count.tpl new file mode 100644 index 0000000000..594ce38c53 --- /dev/null +++ b/view/theme/vier/templates/sub/delivery_count.tpl @@ -0,0 +1,13 @@ +{{if $delivery.queue_count == 0}} + + {{$delivery.notifier_pending|escape}} +{{elseif $delivery.queue_done == 0}} + + {{$delivery.delivery_pending|escape}} +{{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} + + {{$delivery.delivery_underway|escape}} +{{else}} + + {{$delivery.delivery_almost|escape}} +{{/if}} diff --git a/view/theme/vier/templates/wall_thread.tpl b/view/theme/vier/templates/wall_thread.tpl index 8a857bcb7d..607a789e56 100644 --- a/view/theme/vier/templates/wall_thread.tpl +++ b/view/theme/vier/templates/wall_thread.tpl @@ -56,6 +56,10 @@ {{if $item.owner_url}}{{$item.via}} {{$item.owner_name}}{{/if}} {{if $item.plink}}{{else}} {{/if}} + {{if $item.owner_self}} + • + {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} + {{/if}} {{if $item.lock}}{{$item.lock}}{{/if}} From ff1f6564f9a71a39ad7430d622e325bf03694121 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 7 Dec 2018 09:01:19 -0500 Subject: [PATCH 091/728] Remove delivery queue done incrementation for mail delivery --- src/Worker/Delivery.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 191692a906..d7d9ac504d 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -210,10 +210,6 @@ class Delivery extends BaseObject case Protocol::MAIL: self::deliverMail($cmd, $contact, $owner, $target_item); - - if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) { - ItemDeliveryData::incrementQueueDone($target_id); - } break; default: From 85eb6affdfda6701589b49b3bd05d22247f597ce Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 7 Dec 2018 23:51:08 -0500 Subject: [PATCH 092/728] Unit test fix --- src/Model/Item.php | 2 +- tests/datasets/api.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 122e4c431d..870c9b1256 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1799,7 +1799,7 @@ class Item extends BaseObject self::updateThread($parent_id); } - ItemDeliveryData::insert($item['id'], $delivery_data); + ItemDeliveryData::insert($current_post, $delivery_data); DBA::commit(); diff --git a/tests/datasets/api.yml b/tests/datasets/api.yml index 124c6b0d54..e4ef31219f 100644 --- a/tests/datasets/api.yml +++ b/tests/datasets/api.yml @@ -6,6 +6,7 @@ pconfig: photo: workerqueue: mail: +item-delivery-data: # Base test config to avoid notice messages config: From 38734f17b900f46fe42bba10c245254784e6debc Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 8 Dec 2018 15:22:54 -0500 Subject: [PATCH 093/728] Honor item delivery data legacy fields --- src/Model/Item.php | 4 ++-- src/Model/ItemDeliveryData.php | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 870c9b1256..f212045206 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -551,7 +551,7 @@ class Item extends BaseObject $fields['item-content'] = array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST); - $fields['item-delivery-data'] = ItemDeliveryData::FIELD_LIST; + $fields['item-delivery-data'] = array_merge(ItemDeliveryData::LEGACY_FIELD_LIST, ItemDeliveryData::FIELD_LIST); $fields['permissionset'] = ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']; @@ -730,7 +730,7 @@ class Item extends BaseObject foreach ($fields as $table => $table_fields) { foreach ($table_fields as $field => $select) { if (empty($selected) || in_array($select, $selected)) { - $legacy_fields = array_merge(ItemDeliveryData::FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); + $legacy_fields = array_merge(ItemDeliveryData::LEGACY_FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); if (self::isLegacyMode() && in_array($select, $legacy_fields)) { $selection[] = "`item`.`".$select."` AS `internal-item-" . $select . "`"; } diff --git a/src/Model/ItemDeliveryData.php b/src/Model/ItemDeliveryData.php index e3be073e8e..fa69af8419 100644 --- a/src/Model/ItemDeliveryData.php +++ b/src/Model/ItemDeliveryData.php @@ -10,10 +10,13 @@ use Friendica\Database\DBA; class ItemDeliveryData { - const FIELD_LIST = [ + const LEGACY_FIELD_LIST = [ // Legacy fields moved from item table 'postopts', 'inform', + ]; + + const FIELD_LIST = [ // New delivery fields with virtual field name in item fields 'queue_count' => 'delivery_queue_count', 'queue_done' => 'delivery_queue_done', From 16fabb4e04ad983fe1ef571e8a191535d355d605 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 11 Dec 2018 23:21:22 -0500 Subject: [PATCH 094/728] Replace misuses ItemDeliveryData::FIELD_LIST with LEGACY_FIELD_LIST --- src/Model/Item.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index f212045206..2222d71f55 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -190,7 +190,7 @@ class Item extends BaseObject // Fetch data from the item-content table whenever there is content there if (self::isLegacyMode()) { - $legacy_fields = array_merge(ItemDeliveryData::FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); + $legacy_fields = array_merge(ItemDeliveryData::LEGACY_FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); foreach ($legacy_fields as $field) { if (empty($row[$field]) && !empty($row['internal-item-' . $field])) { $row[$field] = $row['internal-item-' . $field]; @@ -726,11 +726,12 @@ class Item extends BaseObject $selected[] = 'interaction'; } + $legacy_fields = array_merge(ItemDeliveryData::LEGACY_FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); + $selection = []; foreach ($fields as $table => $table_fields) { foreach ($table_fields as $field => $select) { if (empty($selected) || in_array($select, $selected)) { - $legacy_fields = array_merge(ItemDeliveryData::LEGACY_FIELD_LIST, self::MIXED_CONTENT_FIELDLIST); if (self::isLegacyMode() && in_array($select, $legacy_fields)) { $selection[] = "`item`.`".$select."` AS `internal-item-" . $select . "`"; } From 5cb56a6b120a1aed376dda79252c218679ca6b2c Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Mon, 24 Dec 2018 10:53:44 +0100 Subject: [PATCH 095/728] Fixes some more things --- config/dbstructure.config.php | 2 +- mod/profiles.php | 6 +- update.php | 129 +++++++++++++++++++++++++++++++--- 3 files changed, 123 insertions(+), 14 deletions(-) diff --git a/config/dbstructure.config.php b/config/dbstructure.config.php index a59b7c361e..0be6ba4028 100644 --- a/config/dbstructure.config.php +++ b/config/dbstructure.config.php @@ -34,7 +34,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1297); + define('DB_UPDATE_VERSION', 1298); } return [ diff --git a/mod/profiles.php b/mod/profiles.php index 6a32fbee5a..70917d7df8 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -618,11 +618,11 @@ function profiles_content(App $a) { '$postal_code' => ['postal_code', L10n::t('Postal/Zip Code:'), $r[0]['postal-code']], '$country_name' => ['country_name', L10n::t('Country:'), $r[0]['country-name']], '$age' => ((intval($r[0]['dob'])) ? '(' . L10n::t('Age: ') . Temporal::getAgeByTimezone($r[0]['dob'],$a->user['timezone'],$a->user['timezone']) . ')' : ''), - '$gender' => ContactSelector::gender($r[0]['gender']), - '$marital' => ['selector' => ContactSelector::maritalStatus($r[0]['marital']), 'value' => $r[0]['marital']], + '$gender' => L10n::t(ContactSelector::gender($r[0]['gender'])), + '$marital' => ['selector' => ContactSelector::maritalStatus($r[0]['marital']), 'value' => L10n::t($r[0]['marital'])], '$with' => ['with', L10n::t("Who: \x28if applicable\x29"), strip_tags($r[0]['with']), L10n::t('Examples: cathy123, Cathy Williams, cathy@example.com')], '$howlong' => ['howlong', L10n::t('Since [date]:'), ($r[0]['howlong'] <= DBA::NULL_DATETIME ? '' : DateTimeFormat::local($r[0]['howlong']))], - '$sexual' => ['selector' => ContactSelector::sexualPreference($r[0]['sexual']), 'value' => $r[0]['sexual']], + '$sexual' => ['selector' => ContactSelector::sexualPreference($r[0]['sexual']), 'value' => L10n::t($r[0]['sexual'])], '$about' => ['about', L10n::t('Tell us about yourself...'), $r[0]['about']], '$xmpp' => ['xmpp', L10n::t("XMPP \x28Jabber\x29 address:"), $r[0]['xmpp'], L10n::t("The XMPP address will be propagated to your contacts so that they can follow you.")], '$homepage' => ['homepage', L10n::t('Homepage URL:'), $r[0]['homepage']], diff --git a/update.php b/update.php index 4fb3144920..d608669f16 100644 --- a/update.php +++ b/update.php @@ -291,16 +291,17 @@ function update_1288() return Update::SUCCESS; } - // Post-update script of PR 5751 -function update_1293() +function update_1296() { - $allGenders = DBA::select('contact', ['id', 'gender']); + $translateKey = 'gender'; + $allData = DBA::select('profile', ['id', $translateKey]); $allLangs = L10n::getAvailableLanguages(); $success = 0; $fail = 0; - foreach ($allGenders as $key => $gender) { - if ($gender['gender'] != '') { + foreach ($allData as $key => $data) { + $toTranslate = $data[$translateKey]; + if ($toTranslate != '') { foreach ($allLangs as $key => $lang) { $a = new \stdClass(); $a->strings = []; @@ -316,7 +317,7 @@ function update_1293() $localizedStrings = $a->strings; unset($a); - $key = array_search($gender['gender'], $localizedStrings); + $key = array_search($toTranslate, $localizedStrings); if ($key !== false) { break; } @@ -328,14 +329,122 @@ function update_1293() if ($key == '') { $fail++; } else { - DBA::update('contact', ['gender' => $key], ['id' => $gender['id']]); - logger::log('Updated contact ' . $gender['id'] . ' to gender ' . $key . - ' (was: ' . $gender['gender'] . ')'); + DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); + logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . + ' (was: ' . $data[$translateKey] . ')'); + Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); + Contact::updateSelfFromUserID($data['id']); + GContact::updateForUser($data['id']); $success++; } } } - Logger::log("Gender fix completed. Success: $success. Fail: $fail"); + Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); return Update::SUCCESS; } +// Post-update script of PR 5751 +function update_1297() +{ + $translateKey = 'marital'; + $allData = DBA::select('profile', ['id', $translateKey]); + $allLangs = L10n::getAvailableLanguages(); + $success = 0; + $fail = 0; + foreach ($allData as $key => $data) { + $toTranslate = $data[$translateKey]; + if ($toTranslate != '') { + foreach ($allLangs as $key => $lang) { + $a = new \stdClass(); + $a->strings = []; + + // First we get the the localizations + if (file_exists("view/lang/$lang/strings.php")) { + include "view/lang/$lang/strings.php"; + } + if (file_exists("addon/morechoice/lang/$lang/strings.php")) { + include "addon/morechoice/lang/$lang/strings.php"; + } + + $localizedStrings = $a->strings; + unset($a); + + $key = array_search($toTranslate, $localizedStrings); + if ($key !== false) { + break; + } + + // defaulting to empty string + $key = ''; + } + + if ($key == '') { + $fail++; + } else { + DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); + logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . + ' (was: ' . $data[$translateKey] . ')'); + Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); + Contact::updateSelfFromUserID($data['id']); + GContact::updateForUser($data['id']); + $success++; + } + } + } + + Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + return Update::SUCCESS; +} + +// Post-update script of PR 5751 +function update_1298() +{ + $translateKey = 'sexual'; + $allData = DBA::select('profile', ['id', $translateKey]); + $allLangs = L10n::getAvailableLanguages(); + $success = 0; + $fail = 0; + foreach ($allData as $key => $data) { + $toTranslate = $data[$translateKey]; + if ($toTranslate != '') { + foreach ($allLangs as $key => $lang) { + $a = new \stdClass(); + $a->strings = []; + + // First we get the the localizations + if (file_exists("view/lang/$lang/strings.php")) { + include "view/lang/$lang/strings.php"; + } + if (file_exists("addon/morechoice/lang/$lang/strings.php")) { + include "addon/morechoice/lang/$lang/strings.php"; + } + + $localizedStrings = $a->strings; + unset($a); + + $key = array_search($toTranslate, $localizedStrings); + if ($key !== false) { + break; + } + + // defaulting to empty string + $key = ''; + } + + if ($key == '') { + $fail++; + } else { + DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); + logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . + ' (was: ' . $data[$translateKey] . ')'); + Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); + Contact::updateSelfFromUserID($data['id']); + GContact::updateForUser($data['id']); + $success++; + } + } + } + + Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + return Update::SUCCESS; +} \ No newline at end of file From 1bdd0bcbb2b68537c108c7899593947e9e44c1de Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Mon, 24 Dec 2018 11:15:32 +0100 Subject: [PATCH 096/728] 1 update to rule them all --- update.php | 189 ++++++++++++----------------------------------------- 1 file changed, 43 insertions(+), 146 deletions(-) diff --git a/update.php b/update.php index d608669f16..6b8dc5d9e2 100644 --- a/update.php +++ b/update.php @@ -291,160 +291,57 @@ function update_1288() return Update::SUCCESS; } -// Post-update script of PR 5751 -function update_1296() -{ - $translateKey = 'gender'; - $allData = DBA::select('profile', ['id', $translateKey]); - $allLangs = L10n::getAvailableLanguages(); - $success = 0; - $fail = 0; - foreach ($allData as $key => $data) { - $toTranslate = $data[$translateKey]; - if ($toTranslate != '') { - foreach ($allLangs as $key => $lang) { - $a = new \stdClass(); - $a->strings = []; - - // First we get the the localizations - if (file_exists("view/lang/$lang/strings.php")) { - include "view/lang/$lang/strings.php"; - } - if (file_exists("addon/morechoice/lang/$lang/strings.php")) { - include "addon/morechoice/lang/$lang/strings.php"; - } - - $localizedStrings = $a->strings; - unset($a); - - $key = array_search($toTranslate, $localizedStrings); - if ($key !== false) { - break; - } - - // defaulting to empty string - $key = ''; - } - - if ($key == '') { - $fail++; - } else { - DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); - logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . - ' (was: ' . $data[$translateKey] . ')'); - Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); - Contact::updateSelfFromUserID($data['id']); - GContact::updateForUser($data['id']); - $success++; - } - } - } - - Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); - return Update::SUCCESS; -} -// Post-update script of PR 5751 -function update_1297() -{ - $translateKey = 'marital'; - $allData = DBA::select('profile', ['id', $translateKey]); - $allLangs = L10n::getAvailableLanguages(); - $success = 0; - $fail = 0; - foreach ($allData as $key => $data) { - $toTranslate = $data[$translateKey]; - if ($toTranslate != '') { - foreach ($allLangs as $key => $lang) { - $a = new \stdClass(); - $a->strings = []; - - // First we get the the localizations - if (file_exists("view/lang/$lang/strings.php")) { - include "view/lang/$lang/strings.php"; - } - if (file_exists("addon/morechoice/lang/$lang/strings.php")) { - include "addon/morechoice/lang/$lang/strings.php"; - } - - $localizedStrings = $a->strings; - unset($a); - - $key = array_search($toTranslate, $localizedStrings); - if ($key !== false) { - break; - } - - // defaulting to empty string - $key = ''; - } - - if ($key == '') { - $fail++; - } else { - DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); - logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . - ' (was: ' . $data[$translateKey] . ')'); - Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); - Contact::updateSelfFromUserID($data['id']); - GContact::updateForUser($data['id']); - $success++; - } - } - } - - Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); - return Update::SUCCESS; -} - // Post-update script of PR 5751 function update_1298() { - $translateKey = 'sexual'; - $allData = DBA::select('profile', ['id', $translateKey]); - $allLangs = L10n::getAvailableLanguages(); - $success = 0; - $fail = 0; - foreach ($allData as $key => $data) { - $toTranslate = $data[$translateKey]; - if ($toTranslate != '') { - foreach ($allLangs as $key => $lang) { - $a = new \stdClass(); - $a->strings = []; + $keys = ['gender', 'marital', 'sexual']; + foreach ($keys as $translateKey) { + $allData = DBA::select('profile', ['id', $translateKey]); + $allLangs = L10n::getAvailableLanguages(); + $success = 0; + $fail = 0; + foreach ($allData as $key => $data) { + $toTranslate = $data[$translateKey]; + if ($toTranslate != '') { + foreach ($allLangs as $key => $lang) { + $a = new \stdClass(); + $a->strings = []; - // First we get the the localizations - if (file_exists("view/lang/$lang/strings.php")) { - include "view/lang/$lang/strings.php"; - } - if (file_exists("addon/morechoice/lang/$lang/strings.php")) { - include "addon/morechoice/lang/$lang/strings.php"; + // First we get the the localizations + if (file_exists("view/lang/$lang/strings.php")) { + include "view/lang/$lang/strings.php"; + } + if (file_exists("addon/morechoice/lang/$lang/strings.php")) { + include "addon/morechoice/lang/$lang/strings.php"; + } + + $localizedStrings = $a->strings; + unset($a); + + $key = array_search($toTranslate, $localizedStrings); + if ($key !== false) { + break; + } + + // defaulting to empty string + $key = ''; } - $localizedStrings = $a->strings; - unset($a); - - $key = array_search($toTranslate, $localizedStrings); - if ($key !== false) { - break; + if ($key == '') { + $fail++; + } else { + DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); + logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . + ' (was: ' . $data[$translateKey] . ')'); + Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); + Contact::updateSelfFromUserID($data['id']); + GContact::updateForUser($data['id']); + $success++; } - - // defaulting to empty string - $key = ''; - } - - if ($key == '') { - $fail++; - } else { - DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); - logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . - ' (was: ' . $data[$translateKey] . ')'); - Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); - Contact::updateSelfFromUserID($data['id']); - GContact::updateForUser($data['id']); - $success++; } } - } - Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + } return Update::SUCCESS; -} \ No newline at end of file +} From 2d12705f7d1a1c4ce8aca326425d9ec299a088be Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Mon, 24 Dec 2018 11:29:37 +0100 Subject: [PATCH 097/728] Fix missing use --- update.php | 1 + 1 file changed, 1 insertion(+) diff --git a/update.php b/update.php index 6b8dc5d9e2..2663da21f0 100644 --- a/update.php +++ b/update.php @@ -9,6 +9,7 @@ use Friendica\Core\Update; use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Model\Contact; +use Friendica\Model\GContact; use Friendica\Model\Item; use Friendica\Model\User; use Friendica\Util\DateTimeFormat; From df386800d3c7d45e66eaf0187c6b21223bd4c580 Mon Sep 17 00:00:00 2001 From: Jeroen De meerleer Date: Mon, 24 Dec 2018 23:19:05 +0100 Subject: [PATCH 098/728] I'm wishing you and your family a very happy christmas --- index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/index.php b/index.php index 16fc2e0d08..b5b66da794 100644 --- a/index.php +++ b/index.php @@ -15,3 +15,4 @@ require __DIR__ . '/vendor/autoload.php'; $a = new Friendica\App(__DIR__, false); $a->runFrontend(); + From 895b3abf320a28ecf0f797f4f4900e6baf429308 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 26 Dec 2018 00:40:12 -0500 Subject: [PATCH 099/728] Remove/replace killme() with *exit() --- bin/worker.php | 2 +- include/api.php | 8 ++++---- library/OAuth1.php | 3 --- mod/_well_known.php | 1 - mod/admin.php | 3 +-- mod/amcd.php | 2 +- mod/api.php | 6 +++--- mod/attach.php | 2 +- mod/cal.php | 6 +++--- mod/contactgroup.php | 6 +++--- mod/dfrn_notify.php | 6 +++--- mod/dfrn_poll.php | 18 +++++++++--------- mod/dfrn_request.php | 3 +-- mod/display.php | 2 +- mod/events.php | 6 +++--- mod/fbrowser.php | 6 +++--- mod/fetch.php | 4 ++-- mod/filer.php | 4 ++-- mod/filerm.php | 4 ++-- mod/friendica.php | 2 +- mod/group.php | 2 +- mod/hovercard.php | 2 +- mod/ignored.php | 8 ++++---- mod/item.php | 18 +++++++++--------- mod/like.php | 4 +--- mod/lockview.php | 12 ++++++------ mod/manifest.php | 2 +- mod/modexp.php | 6 +++--- mod/network.php | 2 +- mod/nodeinfo.php | 3 --- mod/noscrape.php | 2 +- mod/notify.php | 2 +- mod/oexchange.php | 2 +- mod/opensearch.php | 2 +- mod/photos.php | 8 ++++---- mod/phpinfo.php | 2 +- mod/ping.php | 4 ++-- mod/poco.php | 6 +++--- mod/pretheme.php | 2 +- mod/probe.php | 2 +- mod/profiles.php | 4 ++-- mod/profperm.php | 2 +- mod/pubsub.php | 2 +- mod/pubsubhubbub.php | 2 +- mod/robots_txt.php | 2 +- mod/rsd_xml.php | 2 +- mod/search.php | 4 ++-- mod/share.php | 6 +++--- mod/starred.php | 8 ++++---- mod/statistics_json.php | 3 +-- mod/subthread.php | 2 +- mod/tagger.php | 4 +--- mod/uexport.php | 10 ++++------ mod/update_community.php | 2 +- mod/update_contact.php | 2 +- mod/update_display.php | 2 +- mod/update_network.php | 4 ++-- mod/update_notes.php | 2 +- mod/update_profile.php | 2 +- mod/view.php | 2 +- mod/viewsrc.php | 2 +- mod/wall_attach.php | 22 +++++++++++----------- mod/wall_upload.php | 28 ++++++++++++++-------------- mod/webfinger.php | 2 +- mod/worker.php | 2 +- mod/xrd.php | 4 ++-- src/BaseModule.php | 4 ++-- src/Core/Renderer.php | 2 +- src/Core/System.php | 4 ++-- src/Module/Oembed.php | 6 +++--- src/Module/Photo.php | 9 ++------- src/Protocol/DFRN.php | 10 +++++----- src/Render/FriendicaSmartyEngine.php | 2 +- src/Util/Emailer.php | 3 ++- src/Worker/Cron.php | 2 +- 75 files changed, 167 insertions(+), 187 deletions(-) diff --git a/bin/worker.php b/bin/worker.php index 78b6da5857..78b7a58a05 100755 --- a/bin/worker.php +++ b/bin/worker.php @@ -44,7 +44,7 @@ $spawn = array_key_exists('s', $options) || array_key_exists('spawn', $options); if ($spawn) { Worker::spawnWorker(); - killme(); + exit(); } $run_cron = !array_key_exists('n', $options) && !array_key_exists('no_cron', $options); diff --git a/include/api.php b/include/api.php index d657d8369c..6993cb6889 100644 --- a/include/api.php +++ b/include/api.php @@ -3928,10 +3928,10 @@ function api_oauth_request_token() $r = $oauth1->fetch_request_token(OAuthRequest::from_request()); } catch (Exception $e) { echo "error=" . OAuthUtil::urlencode_rfc3986($e->getMessage()); - killme(); + exit(); } echo $r; - killme(); + exit(); } /** @@ -3947,10 +3947,10 @@ function api_oauth_access_token() $r = $oauth1->fetch_access_token(OAuthRequest::from_request()); } catch (Exception $e) { echo "error=". OAuthUtil::urlencode_rfc3986($e->getMessage()); - killme(); + exit(); } echo $r; - killme(); + exit(); } /// @TODO move to top of file or somewhere better diff --git a/library/OAuth1.php b/library/OAuth1.php index 4746328316..27ee090b11 100644 --- a/library/OAuth1.php +++ b/library/OAuth1.php @@ -91,7 +91,6 @@ abstract class OAuthSignatureMethod { */ public function check_signature($request, $consumer, $token, $signature) { $built = $this->build_signature($request, $consumer, $token); - //echo "
"; var_dump($signature, $built, ($built == $signature)); killme();
     return ($built == $signature);
   }
 }
@@ -296,7 +295,6 @@ class OAuthRequest {
     $http_url =  substr($http_url, 0, strpos($http_url,$parameters['pagename'])+strlen($parameters['pagename']));
     unset( $parameters['pagename'] );
     
-	//echo "
".__function__."\n"; var_dump($http_method, $http_url, $parameters, $_SERVER['REQUEST_URI']); killme();
     return new OAuthRequest($http_method, $http_url, $parameters);
   }
 
@@ -561,7 +559,6 @@ class OAuthServer {
   public function verify_request(&$request) {
     $this->get_version($request);
     $consumer = $this->get_consumer($request);
-    //echo __file__.__line__.__function__."
"; var_dump($consumer); die();
     $token = $this->get_token($request, $consumer, "access");
     $this->check_signature($request, $consumer, $token);
     return array($consumer, $token);
diff --git a/mod/_well_known.php b/mod/_well_known.php
index 407fc756a9..f6a351bb23 100644
--- a/mod/_well_known.php
+++ b/mod/_well_known.php
@@ -27,7 +27,6 @@ function _well_known_init(App $a)
 		}
 	}
 	System::httpExit(404);
-	killme();
 }
 
 function wk_social_relay()
diff --git a/mod/admin.php b/mod/admin.php
index a0cc207e8d..17e58940ea 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -301,8 +301,7 @@ function admin_content(App $a)
 
 	if ($a->isAjax()) {
 		echo $o;
-		killme();
-		return '';
+		exit();
 	} else {
 		return $o;
 	}
diff --git a/mod/amcd.php b/mod/amcd.php
index c6013b942d..31b812ecd9 100644
--- a/mod/amcd.php
+++ b/mod/amcd.php
@@ -47,5 +47,5 @@ function amcd_content()
   }
 }
 JSON;
-	killme();
+	exit();
 }
diff --git a/mod/api.php b/mod/api.php
index e721462421..1f199c9a9a 100644
--- a/mod/api.php
+++ b/mod/api.php
@@ -59,7 +59,7 @@ function api_content(App $a)
 		} catch (Exception $e) {
 			echo "
";
 			var_dump($e);
-			killme();
+			exit();
 		}
 
 		if (!empty($_POST['oauth_yes'])) {
@@ -79,7 +79,7 @@ function api_content(App $a)
 					$glue = "?";
 				}
 				$a->internalRedirect($consumer->callback_url . $glue . 'oauth_token=' . OAuthUtil::urlencode_rfc3986($params['oauth_token']) . '&oauth_verifier=' . OAuthUtil::urlencode_rfc3986($verifier));
-				killme();
+				exit();
 			}
 
 			$tpl = Renderer::getMarkupTemplate("oauth_authorize_done.tpl");
@@ -117,5 +117,5 @@ function api_content(App $a)
 	}
 
 	echo api_call($a);
-	killme();
+	exit();
 }
diff --git a/mod/attach.php b/mod/attach.php
index cf2c8cc6dd..f3192d802d 100644
--- a/mod/attach.php
+++ b/mod/attach.php
@@ -49,6 +49,6 @@ function attach_init(App $a)
 	}
 
 	echo $r[0]['data'];
-	killme();
+	exit();
 	// NOTREACHED
 }
diff --git a/mod/cal.php b/mod/cal.php
index 526e33c00c..3d90ff03bf 100644
--- a/mod/cal.php
+++ b/mod/cal.php
@@ -244,7 +244,7 @@ function cal_content(App $a)
 
 		if (!empty($a->argv[2]) && ($a->argv[2] === 'json')) {
 			echo json_encode($events);
-			killme();
+			exit();
 		}
 
 		// links: array('href', 'text', 'extra css classes', 'title')
@@ -286,7 +286,7 @@ function cal_content(App $a)
 
 		if (!empty($_GET['id'])) {
 			echo $o;
-			killme();
+			exit();
 		}
 
 		return $o;
@@ -331,7 +331,7 @@ function cal_content(App $a)
 			header('Content-type: text/calendar');
 			header('content-disposition: attachment; filename="' . L10n::t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"');
 			echo $evexport["content"];
-			killme();
+			exit();
 		}
 
 		return;
diff --git a/mod/contactgroup.php b/mod/contactgroup.php
index 753d3a0733..07997cd116 100644
--- a/mod/contactgroup.php
+++ b/mod/contactgroup.php
@@ -8,7 +8,7 @@ use Friendica\Model\Group;
 function contactgroup_content(App $a)
 {
 	if (!local_user()) {
-		killme();
+		exit();
 	}
 
 	$change = null;
@@ -28,7 +28,7 @@ function contactgroup_content(App $a)
 			intval(local_user())
 		);
 		if (!DBA::isResult($r)) {
-			killme();
+			exit();
 		}
 
 		$group = $r[0];
@@ -49,5 +49,5 @@ function contactgroup_content(App $a)
 		}
 	}
 
-	killme();
+	exit();
 }
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index b911a27e21..c675258107 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -281,7 +281,7 @@ function dfrn_notify_content(App $a) {
 		$user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
 		if (!DBA::isResult($user)) {
 			Logger::log('User not found for nickname ' . $a->argv[1]);
-			killme();
+			exit();
 		}
 
 		$condition = [];
@@ -313,7 +313,7 @@ function dfrn_notify_content(App $a) {
 		$importer = DFRN::getImporter($contact['id'], $user['uid']);
 		if (empty($importer)) {
 			Logger::log('No importer data found for user ' . $a->argv[1] . ' and contact ' . $dfrn_id);
-			killme();
+			exit();
 		}
 
 		Logger::log("Remote rino version: ".$rino_remote." for ".$importer["url"], Logger::DATA);
@@ -370,6 +370,6 @@ function dfrn_notify_content(App $a) {
 			. "\t" . '' . $challenge . '' . "\r\n"
 			. '' . "\r\n";
 
-		killme();
+		exit();
 	}
 }
diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php
index 6b2016886d..928690060f 100644
--- a/mod/dfrn_poll.php
+++ b/mod/dfrn_poll.php
@@ -37,7 +37,7 @@ function dfrn_poll_init(App $a)
 		$nickname = $a->argv[1];
 		header("Content-type: application/atom+xml");
 		echo OStatus::feed($nickname, $last_update, 10);
-		killme();
+		exit();
 	}
 
 	$direction = -1;
@@ -71,7 +71,7 @@ function dfrn_poll_init(App $a)
 		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();
+		exit();
 	}
 
 	if (($type === 'profile') && (!strlen($sec))) {
@@ -198,7 +198,7 @@ function dfrn_poll_init(App $a)
 
 			header("Content-type: text/xml");
 			echo "0$decoded_challenge$sec";
-			killme();
+			exit();
 			// NOTREACHED
 		} else {
 			// old protocol
@@ -290,7 +290,7 @@ function dfrn_poll_post(App $a)
 
 			header("Content-type: text/xml");
 			echo "0$decoded_challenge$sec";
-			killme();
+			exit();
 			// NOTREACHED
 		}
 	}
@@ -307,7 +307,7 @@ function dfrn_poll_post(App $a)
 	);
 
 	if (!DBA::isResult($r)) {
-		killme();
+		exit();
 	}
 
 	$type = $r[0]['type'];
@@ -336,7 +336,7 @@ function dfrn_poll_post(App $a)
 
 	$r = q("SELECT * FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1");
 	if (!DBA::isResult($r)) {
-		killme();
+		exit();
 	}
 
 	$contact = $r[0];
@@ -368,7 +368,7 @@ function dfrn_poll_post(App $a)
 			$text
 		
 		";
-		killme();
+		exit();
 		// NOTREACHED
 	} else {
 		// Update the writable flag if it changed
@@ -391,7 +391,7 @@ function dfrn_poll_post(App $a)
 		header("Content-type: application/atom+xml");
 		$o = DFRN::feed($dfrn_id, $a->argv[1], $last_update, $direction);
 		echo $o;
-		killme();
+		exit();
 	}
 }
 
@@ -573,7 +573,7 @@ function dfrn_poll_content(App $a)
 				. "\t" . '' . $encrypted_id . '' . "\r\n"
 				. "\t" . '' . $challenge . '' . "\r\n"
 				. '' . "\r\n";
-			killme();
+			exit();
 			// NOTREACHED
 		}
 	}
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index 9f0583711f..0c7f4c2a6e 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -589,8 +589,7 @@ function dfrn_request_content(App $a)
 			}
 		}
 
-		killme();
-		return; // NOTREACHED
+		exit();
 	} else {
 		// Normal web request. Display our user's introduction form.
 		if ((Config::get('system', 'block_public')) && (!local_user()) && (!remote_user())) {
diff --git a/mod/display.php b/mod/display.php
index a616fc8cc3..dc43e08d34 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -426,5 +426,5 @@ function displayShowFeed($item_id, $conversation)
 	}
 	header("Content-type: application/atom+xml");
 	echo $xml;
-	killme();
+	exit();
 }
diff --git a/mod/events.php b/mod/events.php
index a54260c435..60fa039221 100644
--- a/mod/events.php
+++ b/mod/events.php
@@ -117,7 +117,7 @@ function events_post(App $a)
 		notice(L10n::t('Event can not end before it has started.') . EOL);
 		if (intval($_REQUEST['preview'])) {
 			echo L10n::t('Event can not end before it has started.');
-			killme();
+			exit();
 		}
 		$a->internalRedirect($onerror_path);
 	}
@@ -126,7 +126,7 @@ function events_post(App $a)
 		notice(L10n::t('Event title and start time are required.') . EOL);
 		if (intval($_REQUEST['preview'])) {
 			echo L10n::t('Event title and start time are required.');
-			killme();
+			exit();
 		}
 		$a->internalRedirect($onerror_path);
 	}
@@ -414,7 +414,7 @@ function events_content(App $a)
 
 		if (!empty($_GET['id'])) {
 			echo $o;
-			killme();
+			exit();
 		}
 
 		return $o;
diff --git a/mod/fbrowser.php b/mod/fbrowser.php
index d5310f4577..c6e669d022 100644
--- a/mod/fbrowser.php
+++ b/mod/fbrowser.php
@@ -18,11 +18,11 @@ use Friendica\Object\Image;
 function fbrowser_content(App $a)
 {
 	if (!local_user()) {
-		killme();
+		exit();
 	}
 
 	if ($a->argc == 1) {
-		killme();
+		exit();
 	}
 
 	$template_file = "filebrowser.tpl";
@@ -146,6 +146,6 @@ function fbrowser_content(App $a)
 		return $o;
 	} else {
 		echo $o;
-		killme();
+		exit();
 	}
 }
diff --git a/mod/fetch.php b/mod/fetch.php
index 5dcedb1aaf..1af8d07855 100644
--- a/mod/fetch.php
+++ b/mod/fetch.php
@@ -40,7 +40,7 @@ function fetch_init(App $a)
 
 				header("HTTP/1.1 301 Moved Permanently");
 				header("Location:".$location);
-				killme();
+				exit();
 			}
 		}
 
@@ -60,5 +60,5 @@ function fetch_init(App $a)
 	header("Content-Type: application/magic-envelope+xml; charset=utf-8");
 	echo Diaspora::buildMagicEnvelope($xml, $user);
 
-	killme();
+	exit();
 }
diff --git a/mod/filer.php b/mod/filer.php
index 4580dc6f67..0d9afe638b 100644
--- a/mod/filer.php
+++ b/mod/filer.php
@@ -13,7 +13,7 @@ use Friendica\Util\XML;
 function filer_content(App $a)
 {
 	if (! local_user()) {
-		killme();
+		exit();
 	}
 
 	$term = XML::unescape(trim(defaults($_GET, 'term', '')));
@@ -38,5 +38,5 @@ function filer_content(App $a)
 
 		echo $o;
 	}
-	killme();
+	exit();
 }
diff --git a/mod/filerm.php b/mod/filerm.php
index d240c2d6a7..f88c174cb0 100644
--- a/mod/filerm.php
+++ b/mod/filerm.php
@@ -10,7 +10,7 @@ function filerm_content(App $a)
 {
 	if (! local_user())
 	{
-		killme();
+		exit();
 	}
 
 	$term = XML::unescape(trim($_GET['term']));
@@ -37,5 +37,5 @@ function filerm_content(App $a)
 	}
 
 	$a->internalRedirect('/network?f=&file=' . rawurlencode($term));
-	killme();
+	exit();
 }
diff --git a/mod/friendica.php b/mod/friendica.php
index 81275df6fb..4466211607 100644
--- a/mod/friendica.php
+++ b/mod/friendica.php
@@ -68,7 +68,7 @@ function friendica_init(App $a)
 
 		header('Content-type: application/json; charset=utf-8');
 		echo json_encode($data);
-		killme();
+		exit();
 	}
 }
 
diff --git a/mod/group.php b/mod/group.php
index db0ae7fbd2..6a347a8093 100644
--- a/mod/group.php
+++ b/mod/group.php
@@ -307,7 +307,7 @@ function group_content(App $a) {
 	if ($change) {
 		$tpl = Renderer::getMarkupTemplate('groupeditor.tpl');
 		echo Renderer::replaceMacros($tpl, $context);
-		killme();
+		exit();
 	}
 
 	return Renderer::replaceMacros($tpl, $context);
diff --git a/mod/hovercard.php b/mod/hovercard.php
index 101ebd5af2..976d7c1832 100644
--- a/mod/hovercard.php
+++ b/mod/hovercard.php
@@ -41,7 +41,7 @@ function hovercard_content()
 	if ($datatype == 'tpl') {
 		$templatecontent = get_template_content('hovercard.tpl');
 		echo $templatecontent;
-		killme();
+		exit();
 	}
 
 	// If a contact is connected the url is internally changed to 'redir/CID'. We need the pure url to search for
diff --git a/mod/ignored.php b/mod/ignored.php
index 4f14119fef..e6d9a09d60 100644
--- a/mod/ignored.php
+++ b/mod/ignored.php
@@ -8,7 +8,7 @@ use Friendica\Model\Item;
 function ignored_init(App $a)
 {
 	if (!local_user()) {
-		killme();
+		exit();
 	}
 
 	if ($a->argc > 1) {
@@ -16,12 +16,12 @@ function ignored_init(App $a)
 	}
 
 	if (!$message_id) {
-		killme();
+		exit();
 	}
 
 	$thread = Item::selectFirstThreadForUser(local_user(), ['uid', 'ignored'], ['iid' => $message_id]);
 	if (!DBA::isResult($thread)) {
-		killme();
+		exit();
 	}
 
 	// Numeric values are needed for the json output further below
@@ -49,5 +49,5 @@ function ignored_init(App $a)
 	// the json doesn't really matter, it will either be 0 or 1
 
 	echo json_encode($ignored);
-	killme();
+	exit();
 }
diff --git a/mod/item.php b/mod/item.php
index c499e9ffc5..5e6f88bac7 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -51,7 +51,7 @@ function item_post(App $a) {
 		drop_items($arr_drop);
 		$json = ['success' => 1];
 		echo json_encode($json);
-		killme();
+		exit();
 	}
 
 	Addon::callHooks('post_local_start', $_REQUEST);
@@ -118,7 +118,7 @@ function item_post(App $a) {
 			if (!empty($_REQUEST['return'])) {
 				$a->internalRedirect($return_path);
 			}
-			killme();
+			exit();
 		}
 
 		$parent = $parent_item['id'];
@@ -169,7 +169,7 @@ function item_post(App $a) {
 			$a->internalRedirect($return_path);
 		}
 
-		killme();
+		exit();
 	}
 
 	// Init post instance
@@ -280,13 +280,13 @@ function item_post(App $a) {
 
 		if (!strlen($body)) {
 			if ($preview) {
-				killme();
+				exit();
 			}
 			info(L10n::t('Empty post discarded.') . EOL);
 			if (!empty($_REQUEST['return'])) {
 				$a->internalRedirect($return_path);
 			}
-			killme();
+			exit();
 		}
 	}
 
@@ -693,7 +693,7 @@ function item_post(App $a) {
 		}
 
 		echo json_encode($json);
-		killme();
+		exit();
 	}
 
 	if ($orig_post)	{
@@ -721,7 +721,7 @@ function item_post(App $a) {
 			Logger::log('return: ' . $return_path);
 			$a->internalRedirect($return_path);
 		}
-		killme();
+		exit();
 	} else {
 		$post_id = 0;
 	}
@@ -874,7 +874,7 @@ function item_post_return($baseurl, $api_source, $return_path)
 	Logger::log('post_json: ' . print_r($json, true), Logger::DEBUG);
 
 	echo json_encode($json);
-	killme();
+	exit();
 }
 
 function item_content(App $a)
@@ -900,7 +900,7 @@ function item_content(App $a)
 		if ($a->isAjax()) {
 			// ajax return: [, 0 (no perm) | ]
 			echo json_encode([intval($a->argv[2]), intval($o)]);
-			killme();
+			exit();
 		}
 	}
 
diff --git a/mod/like.php b/mod/like.php
index 7ce7b1a1b9..321992008e 100644
--- a/mod/like.php
+++ b/mod/like.php
@@ -28,7 +28,7 @@ function like_content(App $a) {
 	$return_path = defaults($_REQUEST, 'return', '');
 
 	like_content_return($a, $return_path);
-	killme(); // NOTREACHED
+	exit();
 }
 
 
@@ -46,6 +46,4 @@ function like_content_return(App $a, $return_path) {
 
 		$a->internalRedirect($return_path . $rand);
 	}
-
-	killme();
 }
diff --git a/mod/lockview.php b/mod/lockview.php
index a2301b4ccb..ef97cc91d0 100644
--- a/mod/lockview.php
+++ b/mod/lockview.php
@@ -19,11 +19,11 @@ function lockview_content(App $a)
 	}
 
 	if (!$item_id) {
-		killme();
+		exit();
 	}
 
 	if (!in_array($type, ['item','photo','event'])) {
-		killme();
+		exit();
 	}
 
 	$fields = ['uid', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'];
@@ -37,14 +37,14 @@ function lockview_content(App $a)
 	}
 
 	if (!DBA::isResult($item)) {
-		killme();
+		exit();
 	}
 
 	Addon::callHooks('lockview_content', $item);
 
 	if ($item['uid'] != local_user()) {
 		echo L10n::t('Remote privacy information not available.') . '
'; - killme(); + exit(); } if (isset($item['private']) @@ -55,7 +55,7 @@ function lockview_content(App $a) && empty($item['deny_gid'])) { echo L10n::t('Remote privacy information not available.') . '
'; - killme(); + exit(); } $allowed_users = expand_acl($item['allow_cid']); @@ -111,6 +111,6 @@ function lockview_content(App $a) } echo $o . implode(', ', $l); - killme(); + exit(); } diff --git a/mod/manifest.php b/mod/manifest.php index 9fbfde448e..bdb5298ef3 100644 --- a/mod/manifest.php +++ b/mod/manifest.php @@ -24,5 +24,5 @@ function manifest_content(App $a) { echo $o; - killme(); + exit(); } diff --git a/mod/modexp.php b/mod/modexp.php index 5819268e9d..cae91c4648 100644 --- a/mod/modexp.php +++ b/mod/modexp.php @@ -6,7 +6,7 @@ use Friendica\Database\DBA; function modexp_init(App $a) { if($a->argc != 2) - killme(); + exit(); $nick = $a->argv[1]; $r = q("SELECT `spubkey` FROM `user` WHERE `nickname` = '%s' LIMIT 1", @@ -14,7 +14,7 @@ function modexp_init(App $a) { ); if (! DBA::isResult($r)) { - killme(); + exit(); } $lines = explode("\n",$r[0]['spubkey']); @@ -30,7 +30,7 @@ function modexp_init(App $a) { header("Content-type: application/magic-public-key"); echo 'RSA' . '.' . $m . '.' . $e; - killme(); + exit(); } diff --git a/mod/network.php b/mod/network.php index 29a340afdc..ef53be4715 100644 --- a/mod/network.php +++ b/mod/network.php @@ -625,7 +625,7 @@ function networkThreadedView(App $a, $update, $parent) $group = DBA::selectFirst('group', ['name'], ['id' => $gid, 'uid' => local_user()]); if (!DBA::isResult($group)) { if ($update) { - killme(); + exit(); } notice(L10n::t('No such group') . EOL); $a->internalRedirect('network/0'); diff --git a/mod/nodeinfo.php b/mod/nodeinfo.php index 71aaae8d4e..5c25b6e551 100644 --- a/mod/nodeinfo.php +++ b/mod/nodeinfo.php @@ -24,12 +24,10 @@ function nodeinfo_wellknown(App $a) { function nodeinfo_init(App $a) { if (!Config::get('system', 'nodeinfo')) { System::httpExit(404); - killme(); } if (($a->argc != 2) || ($a->argv[1] != '1.0')) { System::httpExit(404); - killme(); } $smtp = (function_exists('imap_open') && !Config::get('system', 'imap_disabled') && !Config::get('system', 'dfrn_only')); @@ -149,7 +147,6 @@ function nodeinfo_cron() { $addon = 'statistics_json'; $addons = Config::get('system', 'addon'); - $addons_arr = []; if ($addons) { $addons_arr = explode(',',str_replace(' ', '',$addons)); diff --git a/mod/noscrape.php b/mod/noscrape.php index e1d51e5a80..3528a2f118 100644 --- a/mod/noscrape.php +++ b/mod/noscrape.php @@ -15,7 +15,7 @@ function noscrape_init(App $a) if ($a->argc > 1) { $which = $a->argv[1]; } else { - killme(); + exit(); } $profile = 0; diff --git a/mod/notify.php b/mod/notify.php index 959b581d59..2606e796ff 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -48,7 +48,7 @@ function notify_init(App $a) $r = $nm->setAllSeen(); $j = json_encode(['result' => ($r) ? 'success' : 'fail']); echo $j; - killme(); + exit(); } } diff --git a/mod/oexchange.php b/mod/oexchange.php index 6d682d6adf..e042a22f52 100644 --- a/mod/oexchange.php +++ b/mod/oexchange.php @@ -17,7 +17,7 @@ function oexchange_init(App $a) { $o = Renderer::replaceMacros($tpl, ['$base' => System::baseUrl()]); echo $o; - killme(); + exit(); } } diff --git a/mod/opensearch.php b/mod/opensearch.php index f4765b0621..2057f0b5d6 100644 --- a/mod/opensearch.php +++ b/mod/opensearch.php @@ -17,5 +17,5 @@ function opensearch_content(App $a) { echo $o; - killme(); + exit(); } diff --git a/mod/photos.php b/mod/photos.php index 3ccd3fa111..aff8041a9f 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -185,7 +185,7 @@ function photos_post(App $a) if (!$can_post) { notice(L10n::t('Permission denied.') . EOL); - killme(); + exit(); } $owner_record = User::getOwnerDataById($page_owner_uid); @@ -193,7 +193,7 @@ function photos_post(App $a) if (!$owner_record) { notice(L10n::t('Contact information unavailable') . EOL); Logger::log('photos_post: unable to locate contact record for page owner. uid=' . $page_owner_uid); - killme(); + exit(); } if ($a->argc > 3 && $a->argv[2] === 'album') { @@ -794,7 +794,7 @@ function photos_post(App $a) @unlink($src); $foo = 0; Addon::callHooks('photo_post_end',$foo); - killme(); + exit(); } $exif = $image->orient($src); @@ -820,7 +820,7 @@ function photos_post(App $a) if (!$r) { Logger::log('mod/photos.php: photos_post(): image store failed', Logger::DEBUG); notice(L10n::t('Image upload failed.') . EOL); - killme(); + exit(); } if ($width > 640 || $height > 640) { diff --git a/mod/phpinfo.php b/mod/phpinfo.php index 0155609abd..3228d250ba 100644 --- a/mod/phpinfo.php +++ b/mod/phpinfo.php @@ -10,5 +10,5 @@ function phpinfo_content() } phpinfo(); - killme(); + exit(); } diff --git a/mod/ping.php b/mod/ping.php index 18b126cce5..9d8311f1c4 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -115,7 +115,7 @@ function ping_init(App $a) header("Content-type: text/xml"); echo XML::fromArray($data, $xml); } - killme(); + exit(); } $notifs = ping_get_notifications(local_user()); @@ -386,7 +386,7 @@ function ping_init(App $a) echo XML::fromArray(["result" => $data], $xml); } - killme(); + exit(); } /** diff --git a/mod/poco.php b/mod/poco.php index 3456beb128..477b48b044 100644 --- a/mod/poco.php +++ b/mod/poco.php @@ -46,7 +46,7 @@ function poco_init(App $a) { $ret = PortableContact::serverlist(); header('Content-type: application/json'); echo json_encode($ret); - killme(); + exit(); } if ($a->argc > 1 && $a->argv[1] === '@global') { @@ -378,12 +378,12 @@ function poco_init(App $a) { if ($format === 'xml') { header('Content-type: text/xml'); echo Renderer::replaceMacros(Renderer::getMarkupTemplate('poco_xml.tpl'), XML::arrayEscape(['$response' => $ret])); - killme(); + exit(); } if ($format === 'json') { header('Content-type: application/json'); echo json_encode($ret); - killme(); + exit(); } else { System::httpExit(500); } diff --git a/mod/pretheme.php b/mod/pretheme.php index 4989eb87b7..14d1f2b9ea 100644 --- a/mod/pretheme.php +++ b/mod/pretheme.php @@ -21,5 +21,5 @@ function pretheme_init(App $a) { echo json_encode(['img' => Theme::getScreenshot($theme), 'desc' => $desc, 'version' => $version, 'credits' => $credits]); } - killme(); + exit(); } diff --git a/mod/probe.php b/mod/probe.php index 7c41df8ac5..e120ce1724 100644 --- a/mod/probe.php +++ b/mod/probe.php @@ -12,7 +12,7 @@ function probe_content(App $a) if (!local_user()) { System::httpExit(403, ["title" => L10n::t("Public access denied."), "description" => L10n::t("Only logged in users are permitted to perform a probing.")]); - killme(); + exit(); } $o = '
'; diff --git a/mod/profiles.php b/mod/profiles.php index 70917d7df8..b30739b304 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -117,7 +117,7 @@ function profiles_init(App $a) { ); if(! DBA::isResult($r1)) { notice(L10n::t('Profile unavailable to clone.') . EOL); - killme(); + exit(); return; } unset($r1[0]['id']); @@ -150,7 +150,7 @@ function profiles_init(App $a) { ); if (! DBA::isResult($r)) { notice(L10n::t('Profile not found.') . EOL); - killme(); + exit(); return; } diff --git a/mod/profperm.php b/mod/profperm.php index 5d7d8ed94b..218d1973ee 100644 --- a/mod/profperm.php +++ b/mod/profperm.php @@ -165,7 +165,7 @@ function profperm_content(App $a) { if (!empty($change)) { echo $o; - killme(); + exit(); } $o .= '
'; return $o; diff --git a/mod/pubsub.php b/mod/pubsub.php index 8d6e81a685..9b5bf1209e 100644 --- a/mod/pubsub.php +++ b/mod/pubsub.php @@ -17,7 +17,7 @@ function hub_return($valid, $body) } else { System::httpExit(404); } - killme(); + exit(); } // when receiving an XML feed, always return OK diff --git a/mod/pubsubhubbub.php b/mod/pubsubhubbub.php index 11fbf2cf5f..843406fe6f 100644 --- a/mod/pubsubhubbub.php +++ b/mod/pubsubhubbub.php @@ -136,5 +136,5 @@ function pubsubhubbub_init(App $a) { System::httpExit(202); } - killme(); + exit(); } diff --git a/mod/robots_txt.php b/mod/robots_txt.php index 29f520b18c..0575742dd8 100644 --- a/mod/robots_txt.php +++ b/mod/robots_txt.php @@ -26,5 +26,5 @@ function robots_txt_init(App $a) foreach ($allDisalloweds as $disallowed) { echo 'Disallow: ' . $disallowed . PHP_EOL; } - killme(); + exit(); } diff --git a/mod/rsd_xml.php b/mod/rsd_xml.php index 8c7170dcdf..84dedd6c56 100644 --- a/mod/rsd_xml.php +++ b/mod/rsd_xml.php @@ -22,5 +22,5 @@ function rsd_xml_content(App $a) '; - killme(); + exit(); } diff --git a/mod/search.php b/mod/search.php index 2cdfd6e128..3864f14882 100644 --- a/mod/search.php +++ b/mod/search.php @@ -102,7 +102,7 @@ function search_content(App $a) { System::httpExit(403, ["title" => L10n::t("Public access denied."), "description" => L10n::t("Only logged in users are permitted to perform a search.")]); - killme(); + exit(); //notice(L10n::t('Public access denied.').EOL); //return; } @@ -127,7 +127,7 @@ function search_content(App $a) { System::httpExit(429, ["title" => L10n::t("Too Many Requests"), "description" => L10n::t("Only one search per minute is permitted for not logged in users.")]); - killme(); + exit(); } Cache::set("remote_search:".$remote, json_encode(["time" => time(), "accesses" => $resultdata->accesses + 1]), Cache::HOUR); } else diff --git a/mod/share.php b/mod/share.php index 74de1967b4..bb3212ece0 100644 --- a/mod/share.php +++ b/mod/share.php @@ -8,7 +8,7 @@ function share_init(App $a) { $post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0); if (!$post_id || !local_user()) { - killme(); + exit(); } $fields = ['private', 'body', 'author-name', 'author-link', 'author-avatar', @@ -16,7 +16,7 @@ function share_init(App $a) { $item = Item::selectFirst($fields, ['id' => $post_id]); if (!DBA::isResult($item) || $item['private'] == 1) { - killme(); + exit(); } if (strpos($item['body'], "[/share]") !== false) { @@ -34,7 +34,7 @@ function share_init(App $a) { } echo $o; - killme(); + exit(); } /// @TODO Rewrite to handle over whole record array diff --git a/mod/starred.php b/mod/starred.php index 537f392023..1462513de6 100644 --- a/mod/starred.php +++ b/mod/starred.php @@ -12,18 +12,18 @@ function starred_init(App $a) { $message_id = null; if (!local_user()) { - killme(); + exit(); } if ($a->argc > 1) { $message_id = intval($a->argv[1]); } if (!$message_id) { - killme(); + exit(); } $item = Item::selectFirstForUser(local_user(), ['starred'], ['uid' => local_user(), 'id' => $message_id]); if (!DBA::isResult($item)) { - killme(); + exit(); } if (!intval($item['starred'])) { @@ -48,5 +48,5 @@ function starred_init(App $a) { // the json doesn't really matter, it will either be 0 or 1 echo json_encode($starred); - killme(); + exit(); } diff --git a/mod/statistics_json.php b/mod/statistics_json.php index e3577083b4..833b2e9a8e 100644 --- a/mod/statistics_json.php +++ b/mod/statistics_json.php @@ -14,7 +14,6 @@ function statistics_json_init(App $a) { if (!Config::get("system", "nodeinfo")) { System::httpExit(404); - killme(); } $statistics = [ @@ -56,5 +55,5 @@ function statistics_json_init(App $a) { header("Content-Type: application/json"); echo json_encode($statistics, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); Logger::log("statistics_init: printed " . print_r($statistics, true), Logger::DATA); - killme(); + exit(); } diff --git a/mod/subthread.php b/mod/subthread.php index bd7fee534e..3d71673033 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -151,6 +151,6 @@ EOT; Addon::callHooks('post_local_end', $arr); - killme(); + exit(); } diff --git a/mod/tagger.php b/mod/tagger.php index 78133a9e18..87895e16f8 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -203,7 +203,5 @@ EOT; Worker::add(PRIORITY_HIGH, "Notifier", "tag", $post_id); - killme(); - - return; // NOTREACHED + exit(); } diff --git a/mod/uexport.php b/mod/uexport.php index f0d91eeab0..11ed4b67ea 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -11,7 +11,7 @@ use Friendica\Database\DBA; function uexport_init(App $a) { if (!local_user()) { - killme(); + exit(); } require_once("mod/settings.php"); @@ -26,14 +26,14 @@ function uexport_content(App $a) { switch ($a->argv[1]) { case "backup": uexport_all($a); - killme(); + exit(); break; case "account": uexport_account($a); - killme(); + exit(); break; default: - killme(); + exit(); } } @@ -130,7 +130,6 @@ function uexport_account($a) { 'group_member' => $group_member, ]; - //echo "
"; var_dump(json_encode($output)); killme();
 	echo json_encode($output, JSON_PARTIAL_OUTPUT_ON_ERROR);
 }
 
@@ -152,7 +151,6 @@ function uexport_all(App $a) {
 	// chunk the output to avoid exhausting memory
 
 	for ($x = 0; $x < $total; $x += 500) {
-		$item = [];
 		$r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d",
 			intval(local_user()),
 			intval($x),
diff --git a/mod/update_community.php b/mod/update_community.php
index 088da0143c..e15520320e 100644
--- a/mod/update_community.php
+++ b/mod/update_community.php
@@ -34,5 +34,5 @@ function update_community_content(App $a) {
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
diff --git a/mod/update_contact.php b/mod/update_contact.php
index 361234fea7..bf15afa863 100644
--- a/mod/update_contact.php
+++ b/mod/update_contact.php
@@ -34,5 +34,5 @@ function update_contact_content(App $a)
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
diff --git a/mod/update_display.php b/mod/update_display.php
index 4b6d26cb7f..4059332510 100644
--- a/mod/update_display.php
+++ b/mod/update_display.php
@@ -35,5 +35,5 @@ function update_display_content(App $a)
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
diff --git a/mod/update_network.php b/mod/update_network.php
index 11dfc5e03c..6ba761d04a 100644
--- a/mod/update_network.php
+++ b/mod/update_network.php
@@ -13,7 +13,7 @@ require_once "mod/network.php";
 function update_network_content(App $a)
 {
 	if (!isset($_GET['p']) || !isset($_GET['item'])) {
-		killme();
+		exit();
 	}
 
 	$profile_uid = intval($_GET['p']);
@@ -44,5 +44,5 @@ function update_network_content(App $a)
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
diff --git a/mod/update_notes.php b/mod/update_notes.php
index 7db60e78e0..10f60c1ef1 100644
--- a/mod/update_notes.php
+++ b/mod/update_notes.php
@@ -48,5 +48,5 @@ function update_notes_content(App $a) {
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
\ No newline at end of file
diff --git a/mod/update_profile.php b/mod/update_profile.php
index 984fd7949c..bc6e511896 100644
--- a/mod/update_profile.php
+++ b/mod/update_profile.php
@@ -47,5 +47,5 @@ function update_profile_content(App $a) {
 	echo str_replace("\t", "       ", $text);
 	echo "";
 	echo "\r\n";
-	killme();
+	exit();
 }
\ No newline at end of file
diff --git a/mod/view.php b/mod/view.php
index 15b3733b3f..ce260db185 100644
--- a/mod/view.php
+++ b/mod/view.php
@@ -13,5 +13,5 @@ function view_init($a){
 			require_once("view/theme/$theme/style.php");
 	}
 	
-	killme();
+	exit();
 }
diff --git a/mod/viewsrc.php b/mod/viewsrc.php
index 7ed029aa78..f05996d2fb 100644
--- a/mod/viewsrc.php
+++ b/mod/viewsrc.php
@@ -28,7 +28,7 @@ function viewsrc_content(App $a)
 	if (DBA::isResult($item)) {
 		if ($a->isAjax()) {
 			echo str_replace("\n", '
', $item['body']); - killme(); + exit(); } else { $o .= str_replace("\n", '
', $item['body']); } diff --git a/mod/wall_attach.php b/mod/wall_attach.php index ba1a8205c5..9b790a440e 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -26,14 +26,14 @@ function wall_attach_post(App $a) { if (! DBA::isResult($r)) { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); - killme(); + exit(); } return; } } else { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); - killme(); + exit(); } return; @@ -79,17 +79,17 @@ function wall_attach_post(App $a) { if (! $can_post) { if ($r_json) { echo json_encode(['error' => L10n::t('Permission denied.')]); - killme(); + exit(); } notice(L10n::t('Permission denied.') . EOL ); - killme(); + exit(); } if (empty($_FILES['userfile'])) { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); } - killme(); + exit(); } $src = $_FILES['userfile']['tmp_name']; @@ -112,7 +112,7 @@ function wall_attach_post(App $a) { notice($msg . EOL); } @unlink($src); - killme(); + exit(); } if ($maxfilesize && $filesize > $maxfilesize) { @@ -123,7 +123,7 @@ function wall_attach_post(App $a) { echo $msg . EOL; } @unlink($src); - killme(); + exit(); } $filedata = @file_get_contents($src); @@ -146,7 +146,7 @@ function wall_attach_post(App $a) { } else { echo $msg . EOL; } - killme(); + exit(); } $r = q("SELECT `id` FROM `attach` WHERE `uid` = %d AND `created` = '%s' AND `hash` = '%s' LIMIT 1", @@ -162,18 +162,18 @@ function wall_attach_post(App $a) { } else { echo $msg . EOL; } - killme(); + exit(); } if ($r_json) { echo json_encode(['ok' => true]); - killme(); + exit(); } $lf = "\n"; echo $lf . $lf . '[attachment]' . $r[0]['id'] . '[/attachment]' . $lf; - killme(); + exit(); // NOTREACHED } diff --git a/mod/wall_upload.php b/mod/wall_upload.php index 89655981ea..d1fb918bfe 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -39,7 +39,7 @@ function wall_upload_post(App $a, $desktopmode = true) if (!DBA::isResult($r)) { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); - killme(); + exit(); } return; } @@ -55,7 +55,7 @@ function wall_upload_post(App $a, $desktopmode = true) } else { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); - killme(); + exit(); } return; } @@ -104,17 +104,17 @@ function wall_upload_post(App $a, $desktopmode = true) if (!$can_post) { if ($r_json) { echo json_encode(['error' => L10n::t('Permission denied.')]); - killme(); + exit(); } notice(L10n::t('Permission denied.') . EOL); - killme(); + exit(); } if (empty($_FILES['userfile']) && empty($_FILES['media'])) { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); } - killme(); + exit(); } $src = ''; @@ -164,10 +164,10 @@ function wall_upload_post(App $a, $desktopmode = true) if ($src == "") { if ($r_json) { echo json_encode(['error' => L10n::t('Invalid request.')]); - killme(); + exit(); } notice(L10n::t('Invalid request.').EOL); - killme(); + exit(); } // This is a special treatment for picture upload from Twidere @@ -201,7 +201,7 @@ function wall_upload_post(App $a, $desktopmode = true) echo $msg. EOL; } @unlink($src); - killme(); + exit(); } $imagedata = @file_get_contents($src); @@ -215,7 +215,7 @@ function wall_upload_post(App $a, $desktopmode = true) echo $msg. EOL; } @unlink($src); - killme(); + exit(); } $Image->orient($src); @@ -253,7 +253,7 @@ function wall_upload_post(App $a, $desktopmode = true) } else { echo $msg. EOL; } - killme(); + exit(); } if ($width > 640 || $height > 640) { @@ -283,7 +283,7 @@ function wall_upload_post(App $a, $desktopmode = true) if (!$r) { if ($r_json) { echo json_encode(['error' => '']); - killme(); + exit(); } return false; } @@ -300,7 +300,7 @@ function wall_upload_post(App $a, $desktopmode = true) if ($r_json) { echo json_encode(['picture' => $picture]); - killme(); + exit(); } Logger::log("upload done", Logger::DEBUG); return $picture; @@ -310,10 +310,10 @@ function wall_upload_post(App $a, $desktopmode = true) if ($r_json) { echo json_encode(['ok' => true]); - killme(); + exit(); } echo "\n\n" . '[url=' . System::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . System::baseUrl() . "/photo/{$hash}-{$smallest}.".$Image->getExt()."[/img][/url]\n\n"; - killme(); + exit(); // NOTREACHED } diff --git a/mod/webfinger.php b/mod/webfinger.php index a48d2dba6b..b22b1ee64a 100644 --- a/mod/webfinger.php +++ b/mod/webfinger.php @@ -17,7 +17,7 @@ function webfinger_content(App $a) "description" => L10n::t("Only logged in users are permitted to perform a probing.") ] ); - killme(); + exit(); } $o = '
'; diff --git a/mod/worker.php b/mod/worker.php index 00cb6699d1..86fed28bbe 100644 --- a/mod/worker.php +++ b/mod/worker.php @@ -58,5 +58,5 @@ function worker_init() Logger::log("Front end worker ended: ".getmypid()); - killme(); + exit(); } diff --git a/mod/xrd.php b/mod/xrd.php index 1611540a6c..b470197a2e 100644 --- a/mod/xrd.php +++ b/mod/xrd.php @@ -97,7 +97,7 @@ function xrd_json($a, $uri, $alias, $profile_url, $r) ]; echo json_encode($json); - killme(); + exit(); } function xrd_xml($a, $uri, $alias, $profile_url, $r) @@ -130,5 +130,5 @@ function xrd_xml($a, $uri, $alias, $profile_url, $r) Addon::callHooks('personal_xrd', $arr); echo $arr['xml']; - killme(); + exit(); } diff --git a/src/BaseModule.php b/src/BaseModule.php index 6c14d6ba77..85a506beaa 100644 --- a/src/BaseModule.php +++ b/src/BaseModule.php @@ -150,8 +150,8 @@ abstract class BaseModule extends BaseObject $a = \get_app(); 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(); + + System::httpExit(403); } } } diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 2ca91b4b6c..29b1606349 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -96,7 +96,7 @@ class Renderer extends BaseObject $template = $t->getTemplateFile($s, $root); } catch (Exception $e) { echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; - killme(); + exit(); } $a->saveTimestamp($stamp1, "file"); diff --git a/src/Core/System.php b/src/Core/System.php index ab347bc8b1..14631b5e9d 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -111,7 +111,7 @@ class System extends BaseObject echo XML::fromArray($xmldata, $xml); - killme(); + exit(); } /** @@ -185,7 +185,7 @@ class System extends BaseObject public static function jsonExit($x, $content_type = 'application/json') { header("Content-type: $content_type"); echo json_encode($x); - killme(); + exit(); } /** diff --git a/src/Module/Oembed.php b/src/Module/Oembed.php index 9ca4530d8b..d5ff62dac9 100644 --- a/src/Module/Oembed.php +++ b/src/Module/Oembed.php @@ -25,14 +25,14 @@ class Oembed extends BaseModule if ($a->argv[1] == 'b2h') { $url = ["", trim(hex2bin($_REQUEST['url']))]; echo Content\OEmbed::replaceCallback($url); - killme(); + exit(); } // Unused form: /oembed/h2b?text=... if ($a->argv[1] == 'h2b') { $text = trim(hex2bin($_REQUEST['text'])); echo Content\OEmbed::HTML2BBCode($text); - killme(); + exit(); } if ($a->argc == 2) { @@ -49,6 +49,6 @@ class Oembed extends BaseModule echo $j->html; echo ''; } - killme(); + exit(); } } diff --git a/src/Module/Photo.php b/src/Module/Photo.php index 9277670f62..ac31835be8 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -20,7 +20,6 @@ use Friendica\Network\HTTPException\InternalServerErrorException; */ class Photo extends BaseModule { - /** * @brief Module initializer * @@ -78,7 +77,7 @@ class Photo extends BaseModule if ($photo === false) { // not using System::httpExit() because we don't want html here. header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found" , true, 404); - killme(); + exit(); } $cacheable = ($photo["allow_cid"] . $photo["allow_gid"] . $photo["deny_cid"] . $photo["deny_gid"] === "") && (isset($photo["cacheable"]) ? $photo["cacheable"] : true); @@ -90,13 +89,11 @@ class Photo extends BaseModule System::httpExit(500, ["description" => "Invalid photo with id {$photo["id"]}."]); } - // if customsize is set and image is not a gif, resize it if ($img->getType() !== "image/gif" && $customsize > 0 && $customsize < 501) { $img->scaleToSquare($customsize); } - if (function_exists("header_remove")) { header_remove("Pragma"); header_remove("pragma"); @@ -117,11 +114,9 @@ class Photo extends BaseModule header("Cache-Control: max-age=31536000"); } - echo $img->asString(); - - killme(); + exit(); } private static function stripExtension($name) diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index d6b0a482ec..6c475b1852 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -171,7 +171,7 @@ class DFRN if (! DBA::isResult($r)) { Logger::log(sprintf('No contact found for nickname=%d', $owner_nick), Logger::WARNING); - killme(); + exit(); } $owner = $r[0]; @@ -207,7 +207,7 @@ class DFRN if (! DBA::isResult($r)) { Logger::log(sprintf('No contact found for uid=%d', $owner_id), Logger::WARNING); - killme(); + exit(); } $contact = $r[0]; @@ -353,7 +353,7 @@ class DFRN $ret = Item::select(Item::DELIVER_FIELDLIST, $condition); $items = Item::inArray($ret); if (!DBA::isResult($items)) { - killme(); + exit(); } $item = $items[0]; @@ -361,7 +361,7 @@ class DFRN if ($item['uid'] != 0) { $owner = User::getOwnerDataById($item['uid']); if (!$owner) { - killme(); + exit(); } } else { $owner = ['uid' => 0, 'nick' => 'feed-item']; @@ -1962,7 +1962,7 @@ class DFRN */ if (!DBA::isResult($fcontact)) { // Database record did not get created. Quietly give up. - killme(); + exit(); } $fid = $r[0]["id"]; diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index de078d233c..54295684cc 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -19,7 +19,7 @@ class FriendicaSmartyEngine implements ITemplateEngine { if (!is_writable('view/smarty3/')) { echo "ERROR: folder view/smarty3/ must be writable by webserver."; - killme(); + exit(); } } diff --git a/src/Util/Emailer.php b/src/Util/Emailer.php index b291076cc0..a13af739e6 100644 --- a/src/Util/Emailer.php +++ b/src/Util/Emailer.php @@ -88,8 +88,9 @@ class Emailer 'headers' => $messageHeader, 'parameters' => $sendmail_params ]; - //echo "
"; var_dump($hookdata); killme();
+
 		Addon::callHooks("emailer_send", $hookdata);
+
 		$res = mail(
 			$hookdata['to'],
 			$hookdata['subject'],
diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php
index 0e4b40bf66..837c0020fa 100644
--- a/src/Worker/Cron.php
+++ b/src/Worker/Cron.php
@@ -151,7 +151,7 @@ class Cron
 			$restart = true;
 			$generation = intval($generation);
 			if (!$generation) {
-				killme();
+				exit();
 			}
 		}
 

From 55e54bb9500f54bb075dcbc2054018de0969d9e7 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan 
Date: Wed, 26 Dec 2018 01:06:24 -0500
Subject: [PATCH 100/728] Replace deprecated Addon::callHooks with
 Hook::callAll

- Update documentation
---
 doc/Addons.md                        | 270 +++++++++++++--------------
 doc/de/Addons.md                     | 262 +++++++++++++-------------
 include/api.php                      |   8 +-
 include/conversation.php             |  14 +-
 include/enotify.php                  |  10 +-
 include/items.php                    |   4 +-
 mod/acl.php                          |   4 +-
 mod/directory.php                    |   4 +-
 mod/editpost.php                     |   1 -
 mod/friendica.php                    |   3 +-
 mod/home.php                         |   6 +-
 mod/item.php                         |   8 +-
 mod/lockview.php                     |   4 +-
 mod/manage.php                       |   5 +-
 mod/network.php                      |   5 +-
 mod/parse_url.php                    |   4 +-
 mod/photos.php                       |  19 +-
 mod/ping.php                         |   5 +-
 mod/poke.php                         |  10 +-
 mod/profile.php                      |   5 +-
 mod/profiles.php                     |   6 +-
 mod/register.php                     |   6 +-
 mod/settings.php                     |  18 +-
 mod/subthread.php                    |   4 +-
 mod/tagger.php                       |   4 +-
 mod/uexport.php                      |   4 +-
 mod/xrd.php                          |   4 +-
 src/App.php                          |  20 +-
 src/Content/ContactSelector.php      |  14 +-
 src/Content/Feature.php              |   6 +-
 src/Content/Nav.php                  |   9 +-
 src/Content/OEmbed.php               |   4 +-
 src/Content/Smilies.php              |   5 +-
 src/Content/Text/BBCode.php          |   6 +-
 src/Content/Text/HTML.php            |   7 +-
 src/Core/ACL.php                     |  14 +-
 src/Core/Authentication.php          |   7 +-
 src/Core/L10n.php                    |   5 +-
 src/Core/Worker.php                  |   3 +-
 src/Model/Contact.php                |   3 +-
 src/Model/Event.php                  |   6 +-
 src/Model/Item.php                   |  24 +--
 src/Model/Profile.php                |  12 +-
 src/Model/User.php                   |   3 +-
 src/Module/Contact.php               |   6 +-
 src/Module/Login.php                 |   6 +-
 src/Module/Logout.php                |   6 +-
 src/Network/FKOAuth1.php             |   4 +-
 src/Object/Post.php                  |   5 +-
 src/Protocol/DFRN.php                |   8 +-
 src/Render/FriendicaSmartyEngine.php |   4 +-
 src/Util/Crypto.php                  |   7 +-
 src/Util/Emailer.php                 |   6 +-
 src/Util/Map.php                     |   8 +-
 src/Util/Network.php                 |   5 +-
 src/Util/ParseUrl.php                |   5 +-
 src/Worker/Directory.php             |   4 +-
 src/Worker/Queue.php                 |   6 +-
 58 files changed, 450 insertions(+), 475 deletions(-)

diff --git a/doc/Addons.md b/doc/Addons.md
index bf139aea7f..3aee9b7384 100644
--- a/doc/Addons.md
+++ b/doc/Addons.md
@@ -417,281 +417,281 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
 ### index.php
 
-    Addon::callHooks('init_1');
-    Addon::callHooks('app_menu', $arr);
-    Addon::callHooks('page_content_top', $a->page['content']);
-    Addon::callHooks($a->module.'_mod_init', $placeholder);
-    Addon::callHooks($a->module.'_mod_init', $placeholder);
-    Addon::callHooks($a->module.'_mod_post', $_POST);
-    Addon::callHooks($a->module.'_mod_afterpost', $placeholder);
-    Addon::callHooks($a->module.'_mod_content', $arr);
-    Addon::callHooks($a->module.'_mod_aftercontent', $arr);
-    Addon::callHooks('page_end', $a->page['content']);
+    Hook::callAll('init_1');
+    Hook::callAll('app_menu', $arr);
+    Hook::callAll('page_content_top', $a->page['content']);
+    Hook::callAll($a->module.'_mod_init', $placeholder);
+    Hook::callAll($a->module.'_mod_init', $placeholder);
+    Hook::callAll($a->module.'_mod_post', $_POST);
+    Hook::callAll($a->module.'_mod_afterpost', $placeholder);
+    Hook::callAll($a->module.'_mod_content', $arr);
+    Hook::callAll($a->module.'_mod_aftercontent', $arr);
+    Hook::callAll('page_end', $a->page['content']);
 
 ### include/api.php
 
-    Addon::callHooks('logged_in', $a->user);
-    Addon::callHooks('authenticate', $addon_auth);
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
+    Hook::callAll('authenticate', $addon_auth);
+    Hook::callAll('logged_in', $a->user);
 
 ### include/enotify.php
 
-    Addon::callHooks('enotify', $h);
-    Addon::callHooks('enotify_store', $datarray);
-    Addon::callHooks('enotify_mail', $datarray);
-    Addon::callHooks('check_item_notification', $notification_data);
+    Hook::callAll('enotify', $h);
+    Hook::callAll('enotify_store', $datarray);
+    Hook::callAll('enotify_mail', $datarray);
+    Hook::callAll('check_item_notification', $notification_data);
 
 ### include/conversation.php
 
-    Addon::callHooks('conversation_start', $cb);
-    Addon::callHooks('render_location', $locate);
-    Addon::callHooks('display_item', $arr);
-    Addon::callHooks('display_item', $arr);
-    Addon::callHooks('item_photo_menu', $args);
-    Addon::callHooks('jot_tool', $jotplugins);
+    Hook::callAll('conversation_start', $cb);
+    Hook::callAll('render_location', $locate);
+    Hook::callAll('display_item', $arr);
+    Hook::callAll('display_item', $arr);
+    Hook::callAll('item_photo_menu', $args);
+    Hook::callAll('jot_tool', $jotplugins);
 
 ### include/text.php
 
-    Addon::callHooks('contact_block_end', $arr);
-    Addon::callHooks('poke_verbs', $arr);
-    Addon::callHooks('put_item_in_cache', $hook_data);
-    Addon::callHooks('prepare_body_init', $item);
-    Addon::callHooks('prepare_body_content_filter', $hook_data);
-    Addon::callHooks('prepare_body', $hook_data);
-    Addon::callHooks('prepare_body_final', $hook_data);
+    Hook::callAll('contact_block_end', $arr);
+    Hook::callAll('poke_verbs', $arr);
+    Hook::callAll('put_item_in_cache', $hook_data);
+    Hook::callAll('prepare_body_init', $item);
+    Hook::callAll('prepare_body_content_filter', $hook_data);
+    Hook::callAll('prepare_body', $hook_data);
+    Hook::callAll('prepare_body_final', $hook_data);
 
 ### include/items.php
 
-    Addon::callHooks('page_info_data', $data);
+    Hook::callAll('page_info_data', $data);
 
 ### mod/directory.php
 
-    Addon::callHooks('directory_item', $arr);
+    Hook::callAll('directory_item', $arr);
 
 ### mod/xrd.php
 
-    Addon::callHooks('personal_xrd', $arr);
+    Hook::callAll('personal_xrd', $arr);
 
 ### mod/ping.php
 
-    Addon::callHooks('network_ping', $arr);
+    Hook::callAll('network_ping', $arr);
 
 ### mod/parse_url.php
 
-    Addon::callHooks("parse_link", $arr);
+    Hook::callAll("parse_link", $arr);
 
 ### mod/manage.php
 
-    Addon::callHooks('home_init', $ret);
+    Hook::callAll('home_init', $ret);
 
 ### mod/acl.php
 
-    Addon::callHooks('acl_lookup_end', $results);
+    Hook::callAll('acl_lookup_end', $results);
 
 ### mod/network.php
 
-    Addon::callHooks('network_content_init', $arr);
-    Addon::callHooks('network_tabs', $arr);
+    Hook::callAll('network_content_init', $arr);
+    Hook::callAll('network_tabs', $arr);
 
 ### mod/friendica.php
 
-    Addon::callHooks('about_hook', $o);
+    Hook::callAll('about_hook', $o);
 
 ### mod/subthread.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/profiles.php
 
-    Addon::callHooks('profile_post', $_POST);
-    Addon::callHooks('profile_edit', $arr);
+    Hook::callAll('profile_post', $_POST);
+    Hook::callAll('profile_edit', $arr);
 
 ### mod/settings.php
 
-    Addon::callHooks('addon_settings_post', $_POST);
-    Addon::callHooks('connector_settings_post', $_POST);
-    Addon::callHooks('display_settings_post', $_POST);
-    Addon::callHooks('settings_post', $_POST);
-    Addon::callHooks('addon_settings', $settings_addons);
-    Addon::callHooks('connector_settings', $settings_connectors);
-    Addon::callHooks('display_settings', $o);
-    Addon::callHooks('settings_form', $o);
+    Hook::callAll('addon_settings_post', $_POST);
+    Hook::callAll('connector_settings_post', $_POST);
+    Hook::callAll('display_settings_post', $_POST);
+    Hook::callAll('settings_post', $_POST);
+    Hook::callAll('addon_settings', $settings_addons);
+    Hook::callAll('connector_settings', $settings_connectors);
+    Hook::callAll('display_settings', $o);
+    Hook::callAll('settings_form', $o);
 
 ### mod/photos.php
 
-    Addon::callHooks('photo_post_init', $_POST);
-    Addon::callHooks('photo_post_file', $ret);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', intval($item_id));
-    Addon::callHooks('photo_upload_form', $ret);
+    Hook::callAll('photo_post_init', $_POST);
+    Hook::callAll('photo_post_file', $ret);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', intval($item_id));
+    Hook::callAll('photo_upload_form', $ret);
 
 ### mod/profile.php
 
-    Addon::callHooks('profile_advanced', $o);
+    Hook::callAll('profile_advanced', $o);
 
 ### mod/home.php
 
-    Addon::callHooks('home_init', $ret);
-    Addon::callHooks("home_content", $content);
+    Hook::callAll('home_init', $ret);
+    Hook::callAll("home_content", $content);
 
 ### mod/poke.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/contacts.php
 
-    Addon::callHooks('contact_edit_post', $_POST);
-    Addon::callHooks('contact_edit', $arr);
+    Hook::callAll('contact_edit_post', $_POST);
+    Hook::callAll('contact_edit', $arr);
 
 ### mod/tagger.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/lockview.php
 
-    Addon::callHooks('lockview_content', $item);
+    Hook::callAll('lockview_content', $item);
 
 ### mod/uexport.php
 
-    Addon::callHooks('uexport_options', $options);
+    Hook::callAll('uexport_options', $options);
 
 ### mod/register.php
 
-    Addon::callHooks('register_post', $arr);
-    Addon::callHooks('register_form', $arr);
+    Hook::callAll('register_post', $arr);
+    Hook::callAll('register_form', $arr);
 
 ### mod/item.php
 
-    Addon::callHooks('post_local_start', $_REQUEST);
-    Addon::callHooks('post_local', $datarray);
-    Addon::callHooks('post_local_end', $datarray);
+    Hook::callAll('post_local_start', $_REQUEST);
+    Hook::callAll('post_local', $datarray);
+    Hook::callAll('post_local_end', $datarray);
 
 ### mod/editpost.php
 
-    Addon::callHooks('jot_tool', $jotplugins);
+    Hook::callAll('jot_tool', $jotplugins);
 
 ### src/Network/FKOAuth1.php
 
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
 
 ### src/Render/FriendicaSmartyEngine.php
 
-    Addon::callHooks("template_vars", $arr);
+    Hook::callAll("template_vars", $arr);
 
 ### src/App.php
 
-    Addon::callHooks('load_config');
-    Addon::callHooks('head');
-    Addon::callHooks('footer');
+    Hook::callAll('load_config');
+    Hook::callAll('head');
+    Hook::callAll('footer');
 
 ### src/Model/Item.php
 
-    Addon::callHooks('post_local', $item);
-    Addon::callHooks('post_remote', $item);
-    Addon::callHooks('post_local_end', $posted_item);
-    Addon::callHooks('post_remote_end', $posted_item);
-    Addon::callHooks('tagged', $arr);
-    Addon::callHooks('post_local_end', $new_item);
+    Hook::callAll('post_local', $item);
+    Hook::callAll('post_remote', $item);
+    Hook::callAll('post_local_end', $posted_item);
+    Hook::callAll('post_remote_end', $posted_item);
+    Hook::callAll('tagged', $arr);
+    Hook::callAll('post_local_end', $new_item);
 
 ### src/Model/Contact.php
 
-    Addon::callHooks('contact_photo_menu', $args);
-    Addon::callHooks('follow', $arr);
+    Hook::callAll('contact_photo_menu', $args);
+    Hook::callAll('follow', $arr);
 
 ### src/Model/Profile.php
 
-    Addon::callHooks('profile_sidebar_enter', $profile);
-    Addon::callHooks('profile_sidebar', $arr);
-    Addon::callHooks('profile_tabs', $arr);
-    Addon::callHooks('zrl_init', $arr);
-    Addon::callHooks('magic_auth_success', $arr);
+    Hook::callAll('profile_sidebar_enter', $profile);
+    Hook::callAll('profile_sidebar', $arr);
+    Hook::callAll('profile_tabs', $arr);
+    Hook::callAll('zrl_init', $arr);
+    Hook::callAll('magic_auth_success', $arr);
 
 ### src/Model/Event.php
 
-    Addon::callHooks('event_updated', $event['id']);
-    Addon::callHooks("event_created", $event['id']);
+    Hook::callAll('event_updated', $event['id']);
+    Hook::callAll("event_created", $event['id']);
 
 ### src/Model/User.php
 
-    Addon::callHooks('register_account', $uid);
-    Addon::callHooks('remove_user', $user);
+    Hook::callAll('register_account', $uid);
+    Hook::callAll('remove_user', $user);
 
 ### src/Content/Text/BBCode.php
 
-    Addon::callHooks('bbcode', $text);
-    Addon::callHooks('bb2diaspora', $text);
+    Hook::callAll('bbcode', $text);
+    Hook::callAll('bb2diaspora', $text);
 
 ### src/Content/Text/HTML.php
 
-    Addon::callHooks('html2bbcode', $message);
+    Hook::callAll('html2bbcode', $message);
 
 ### src/Content/Smilies.php
 
-    Addon::callHooks('smilie', $params);
+    Hook::callAll('smilie', $params);
 
 ### src/Content/Feature.php
 
-    Addon::callHooks('isEnabled', $arr);
-    Addon::callHooks('get', $arr);
+    Hook::callAll('isEnabled', $arr);
+    Hook::callAll('get', $arr);
 
 ### src/Content/ContactSelector.php
 
-    Addon::callHooks('network_to_name', $nets);
-    Addon::callHooks('gender_selector', $select);
-    Addon::callHooks('sexpref_selector', $select);
-    Addon::callHooks('marital_selector', $select);
+    Hook::callAll('network_to_name', $nets);
+    Hook::callAll('gender_selector', $select);
+    Hook::callAll('sexpref_selector', $select);
+    Hook::callAll('marital_selector', $select);
 
 ### src/Content/OEmbed.php
 
-    Addon::callHooks('oembed_fetch_url', $embedurl, $j);
+    Hook::callAll('oembed_fetch_url', $embedurl, $j);
 
 ### src/Content/Nav.php
 
-    Addon::callHooks('page_header', $a->page['nav']);
-    Addon::callHooks('nav_info', $nav);
+    Hook::callAll('page_header', $a->page['nav']);
+    Hook::callAll('nav_info', $nav);
 
 ### src/Worker/Directory.php
 
-    Addon::callHooks('globaldir_update', $arr);
+    Hook::callAll('globaldir_update', $arr);
 
 ### src/Worker/Notifier.php
 
-    Addon::callHooks('notifier_end', $target_item);
+    Hook::callAll('notifier_end', $target_item);
 
 ### src/Worker/Queue.php
 
-    Addon::callHooks('queue_predeliver', $r);
-    Addon::callHooks('queue_deliver', $params);
+    Hook::callAll('queue_predeliver', $r);
+    Hook::callAll('queue_deliver', $params);
 
 ### src/Module/Login.php
 
-    Addon::callHooks('authenticate', $addon_auth);
-    Addon::callHooks('login_hook', $o);
+    Hook::callAll('authenticate', $addon_auth);
+    Hook::callAll('login_hook', $o);
 
 ### src/Module/Logout.php
 
-    Addon::callHooks("logging_out");
+    Hook::callAll("logging_out");
 
 ### src/Object/Post.php
 
-    Addon::callHooks('render_location', $locate);
-    Addon::callHooks('display_item', $arr);
+    Hook::callAll('render_location', $locate);
+    Hook::callAll('display_item', $arr);
 
 ### src/Core/ACL.php
 
-    Addon::callHooks('contact_select_options', $x);
-    Addon::callHooks($a->module.'_pre_'.$selname, $arr);
-    Addon::callHooks($a->module.'_post_'.$selname, $o);
-    Addon::callHooks($a->module.'_pre_'.$selname, $arr);
-    Addon::callHooks($a->module.'_post_'.$selname, $o);
-    Addon::callHooks('jot_networks', $jotnets);
+    Hook::callAll('contact_select_options', $x);
+    Hook::callAll($a->module.'_pre_'.$selname, $arr);
+    Hook::callAll($a->module.'_post_'.$selname, $o);
+    Hook::callAll($a->module.'_pre_'.$selname, $arr);
+    Hook::callAll($a->module.'_post_'.$selname, $o);
+    Hook::callAll('jot_networks', $jotnets);
 
 ### src/Core/Authentication.php
 
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
 
 ### src/Core/Hook.php
 
@@ -699,31 +699,31 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
 ### src/Core/Worker.php
 
-    Addon::callHooks("proc_run", $arr);
+    Hook::callAll("proc_run", $arr);
 
 ### src/Util/Emailer.php
 
-    Addon::callHooks('emailer_send_prepare', $params);
-    Addon::callHooks("emailer_send", $hookdata);
+    Hook::callAll('emailer_send_prepare', $params);
+    Hook::callAll("emailer_send", $hookdata);
 
 ### src/Util/Map.php
 
-    Addon::callHooks('generate_map', $arr);
-    Addon::callHooks('generate_named_map', $arr);
-    Addon::callHooks('Map::getCoordinates', $arr);
+    Hook::callAll('generate_map', $arr);
+    Hook::callAll('generate_named_map', $arr);
+    Hook::callAll('Map::getCoordinates', $arr);
 
 ### src/Util/Network.php
 
-    Addon::callHooks('avatar_lookup', $avatar);
+    Hook::callAll('avatar_lookup', $avatar);
 
 ### src/Util/ParseUrl.php
 
-    Addon::callHooks("getsiteinfo", $siteinfo);
+    Hook::callAll("getsiteinfo", $siteinfo);
 
 ### src/Protocol/DFRN.php
 
-    Addon::callHooks('atom_feed_end', $atom);
-    Addon::callHooks('atom_feed_end', $atom);
+    Hook::callAll('atom_feed_end', $atom);
+    Hook::callAll('atom_feed_end', $atom);
 
 ### view/js/main.js
 
diff --git a/doc/de/Addons.md b/doc/de/Addons.md
index eb825c0729..d63f0aa37b 100644
--- a/doc/de/Addons.md
+++ b/doc/de/Addons.md
@@ -193,299 +193,299 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
 
 ### index.php
 
-    Addon::callHooks('init_1');
-    Addon::callHooks('app_menu', $arr);
-    Addon::callHooks('page_content_top', $a->page['content']);
-    Addon::callHooks($a->module.'_mod_init', $placeholder);
-    Addon::callHooks($a->module.'_mod_init', $placeholder);
-    Addon::callHooks($a->module.'_mod_post', $_POST);
-    Addon::callHooks($a->module.'_mod_afterpost', $placeholder);
-    Addon::callHooks($a->module.'_mod_content', $arr);
-    Addon::callHooks($a->module.'_mod_aftercontent', $arr);
-    Addon::callHooks('page_end', $a->page['content']);
+    Hook::callAll('init_1');
+    Hook::callAll('app_menu', $arr);
+    Hook::callAll('page_content_top', $a->page['content']);
+    Hook::callAll($a->module.'_mod_init', $placeholder);
+    Hook::callAll($a->module.'_mod_init', $placeholder);
+    Hook::callAll($a->module.'_mod_post', $_POST);
+    Hook::callAll($a->module.'_mod_afterpost', $placeholder);
+    Hook::callAll($a->module.'_mod_content', $arr);
+    Hook::callAll($a->module.'_mod_aftercontent', $arr);
+    Hook::callAll('page_end', $a->page['content']);
 
 ### include/api.php
 
-    Addon::callHooks('logged_in', $a->user);
-    Addon::callHooks('authenticate', $addon_auth);
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
+    Hook::callAll('authenticate', $addon_auth);
+    Hook::callAll('logged_in', $a->user);
 
 ### include/enotify.php
 
-    Addon::callHooks('enotify', $h);
-    Addon::callHooks('enotify_store', $datarray);
-    Addon::callHooks('enotify_mail', $datarray);
-    Addon::callHooks('check_item_notification', $notification_data);
+    Hook::callAll('enotify', $h);
+    Hook::callAll('enotify_store', $datarray);
+    Hook::callAll('enotify_mail', $datarray);
+    Hook::callAll('check_item_notification', $notification_data);
 
 ### include/conversation.php
 
-    Addon::callHooks('conversation_start', $cb);
-    Addon::callHooks('render_location', $locate);
-    Addon::callHooks('display_item', $arr);
-    Addon::callHooks('display_item', $arr);
-    Addon::callHooks('item_photo_menu', $args);
-    Addon::callHooks('jot_tool', $jotplugins);
+    Hook::callAll('conversation_start', $cb);
+    Hook::callAll('render_location', $locate);
+    Hook::callAll('display_item', $arr);
+    Hook::callAll('display_item', $arr);
+    Hook::callAll('item_photo_menu', $args);
+    Hook::callAll('jot_tool', $jotplugins);
 
 ### include/text.php
 
-    Addon::callHooks('contact_block_end', $arr);
-    Addon::callHooks('poke_verbs', $arr);
-    Addon::callHooks('put_item_in_cache', $hook_data);
-    Addon::callHooks('prepare_body_init', $item);
-    Addon::callHooks('prepare_body_content_filter', $hook_data);
-    Addon::callHooks('prepare_body', $hook_data);
-    Addon::callHooks('prepare_body_final', $hook_data);
+    Hook::callAll('contact_block_end', $arr);
+    Hook::callAll('poke_verbs', $arr);
+    Hook::callAll('put_item_in_cache', $hook_data);
+    Hook::callAll('prepare_body_init', $item);
+    Hook::callAll('prepare_body_content_filter', $hook_data);
+    Hook::callAll('prepare_body', $hook_data);
+    Hook::callAll('prepare_body_final', $hook_data);
 
 ### include/items.php
 
-    Addon::callHooks('page_info_data', $data);
+    Hook::callAll('page_info_data', $data);
 
 ### mod/directory.php
 
-    Addon::callHooks('directory_item', $arr);
+    Hook::callAll('directory_item', $arr);
 
 ### mod/xrd.php
 
-    Addon::callHooks('personal_xrd', $arr);
+    Hook::callAll('personal_xrd', $arr);
 
 ### mod/ping.php
 
-    Addon::callHooks('network_ping', $arr);
+    Hook::callAll('network_ping', $arr);
 
 ### mod/parse_url.php
 
-    Addon::callHooks("parse_link", $arr);
+    Hook::callAll("parse_link", $arr);
 
 ### mod/manage.php
 
-    Addon::callHooks('home_init', $ret);
+    Hook::callAll('home_init', $ret);
 
 ### mod/acl.php
 
-    Addon::callHooks('acl_lookup_end', $results);
+    Hook::callAll('acl_lookup_end', $results);
 
 ### mod/network.php
 
-    Addon::callHooks('network_content_init', $arr);
-    Addon::callHooks('network_tabs', $arr);
+    Hook::callAll('network_content_init', $arr);
+    Hook::callAll('network_tabs', $arr);
 
 ### mod/friendica.php
 
-    Addon::callHooks('about_hook', $o);
+    Hook::callAll('about_hook', $o);
 
 ### mod/subthread.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/profiles.php
 
-    Addon::callHooks('profile_post', $_POST);
-    Addon::callHooks('profile_edit', $arr);
+    Hook::callAll('profile_post', $_POST);
+    Hook::callAll('profile_edit', $arr);
 
 ### mod/settings.php
 
-    Addon::callHooks('addon_settings_post', $_POST);
-    Addon::callHooks('connector_settings_post', $_POST);
-    Addon::callHooks('display_settings_post', $_POST);
-    Addon::callHooks('settings_post', $_POST);
-    Addon::callHooks('addon_settings', $settings_addons);
-    Addon::callHooks('connector_settings', $settings_connectors);
-    Addon::callHooks('display_settings', $o);
-    Addon::callHooks('settings_form', $o);
+    Hook::callAll('addon_settings_post', $_POST);
+    Hook::callAll('connector_settings_post', $_POST);
+    Hook::callAll('display_settings_post', $_POST);
+    Hook::callAll('settings_post', $_POST);
+    Hook::callAll('addon_settings', $settings_addons);
+    Hook::callAll('connector_settings', $settings_connectors);
+    Hook::callAll('display_settings', $o);
+    Hook::callAll('settings_form', $o);
 
 ### mod/photos.php
 
-    Addon::callHooks('photo_post_init', $_POST);
-    Addon::callHooks('photo_post_file', $ret);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', $foo);
-    Addon::callHooks('photo_post_end', intval($item_id));
-    Addon::callHooks('photo_upload_form', $ret);
+    Hook::callAll('photo_post_init', $_POST);
+    Hook::callAll('photo_post_file', $ret);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', $foo);
+    Hook::callAll('photo_post_end', intval($item_id));
+    Hook::callAll('photo_upload_form', $ret);
 
 ### mod/profile.php
 
-    Addon::callHooks('profile_advanced', $o);
+    Hook::callAll('profile_advanced', $o);
 
 ### mod/home.php
 
-    Addon::callHooks('home_init', $ret);
-    Addon::callHooks("home_content", $content);
+    Hook::callAll('home_init', $ret);
+    Hook::callAll("home_content", $content);
 
 ### mod/poke.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/contacts.php
 
-    Addon::callHooks('contact_edit_post', $_POST);
-    Addon::callHooks('contact_edit', $arr);
+    Hook::callAll('contact_edit_post', $_POST);
+    Hook::callAll('contact_edit', $arr);
 
 ### mod/tagger.php
 
-    Addon::callHooks('post_local_end', $arr);
+    Hook::callAll('post_local_end', $arr);
 
 ### mod/lockview.php
 
-    Addon::callHooks('lockview_content', $item);
+    Hook::callAll('lockview_content', $item);
 
 ### mod/uexport.php
 
-    Addon::callHooks('uexport_options', $options);
+    Hook::callAll('uexport_options', $options);
 
 ### mod/register.php
 
-    Addon::callHooks('register_post', $arr);
-    Addon::callHooks('register_form', $arr);
+    Hook::callAll('register_post', $arr);
+    Hook::callAll('register_form', $arr);
 
 ### mod/item.php
 
-    Addon::callHooks('post_local_start', $_REQUEST);
-    Addon::callHooks('post_local', $datarray);
-    Addon::callHooks('post_local_end', $datarray);
+    Hook::callAll('post_local_start', $_REQUEST);
+    Hook::callAll('post_local', $datarray);
+    Hook::callAll('post_local_end', $datarray);
 
 ### mod/editpost.php
 
-    Addon::callHooks('jot_tool', $jotplugins);
+    Hook::callAll('jot_tool', $jotplugins);
 
 ### src/Network/FKOAuth1.php
 
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
 
 ### src/Render/FriendicaSmartyEngine.php
 
-    Addon::callHooks("template_vars", $arr);
+    Hook::callAll("template_vars", $arr);
 
 ### src/Model/Item.php
 
-    Addon::callHooks('post_local', $item);
-    Addon::callHooks('post_remote', $item);
-    Addon::callHooks('post_local_end', $posted_item);
-    Addon::callHooks('post_remote_end', $posted_item);
-    Addon::callHooks('tagged', $arr);
-    Addon::callHooks('post_local_end', $new_item);
+    Hook::callAll('post_local', $item);
+    Hook::callAll('post_remote', $item);
+    Hook::callAll('post_local_end', $posted_item);
+    Hook::callAll('post_remote_end', $posted_item);
+    Hook::callAll('tagged', $arr);
+    Hook::callAll('post_local_end', $new_item);
 
 ### src/Model/Contact.php
 
-    Addon::callHooks('contact_photo_menu', $args);
-    Addon::callHooks('follow', $arr);
+    Hook::callAll('contact_photo_menu', $args);
+    Hook::callAll('follow', $arr);
 
 ### src/Model/Profile.php
 
-    Addon::callHooks('profile_sidebar_enter', $profile);
-    Addon::callHooks('profile_sidebar', $arr);
-    Addon::callHooks('profile_tabs', $arr);
-    Addon::callHooks('zrl_init', $arr);
+    Hook::callAll('profile_sidebar_enter', $profile);
+    Hook::callAll('profile_sidebar', $arr);
+    Hook::callAll('profile_tabs', $arr);
+    Hook::callAll('zrl_init', $arr);
 
 ### src/Model/Event.php
 
-    Addon::callHooks('event_updated', $event['id']);
-    Addon::callHooks("event_created", $event['id']);
+    Hook::callAll('event_updated', $event['id']);
+    Hook::callAll("event_created", $event['id']);
 
 ### src/Model/User.php
 
-    Addon::callHooks('register_account', $uid);
-    Addon::callHooks('remove_user', $user);
+    Hook::callAll('register_account', $uid);
+    Hook::callAll('remove_user', $user);
 
 ### src/Content/Text/BBCode.php
 
-    Addon::callHooks('bbcode', $text);
-    Addon::callHooks('bb2diaspora', $text);
+    Hook::callAll('bbcode', $text);
+    Hook::callAll('bb2diaspora', $text);
 
 ### src/Content/Text/HTML.php
 
-    Addon::callHooks('html2bbcode', $message);
+    Hook::callAll('html2bbcode', $message);
 
 ### src/Content/Smilies.php
 
-    Addon::callHooks('smilie', $params);
+    Hook::callAll('smilie', $params);
 
 ### src/Content/Feature.php
 
-    Addon::callHooks('isEnabled', $arr);
-    Addon::callHooks('get', $arr);
+    Hook::callAll('isEnabled', $arr);
+    Hook::callAll('get', $arr);
 
 ### src/Content/ContactSelector.php
 
-    Addon::callHooks('network_to_name', $nets);
-    Addon::callHooks('gender_selector', $select);
-    Addon::callHooks('sexpref_selector', $select);
-    Addon::callHooks('marital_selector', $select);
+    Hook::callAll('network_to_name', $nets);
+    Hook::callAll('gender_selector', $select);
+    Hook::callAll('sexpref_selector', $select);
+    Hook::callAll('marital_selector', $select);
 
 ### src/Content/OEmbed.php
 
-    Addon::callHooks('oembed_fetch_url', $embedurl, $j);
+    Hook::callAll('oembed_fetch_url', $embedurl, $j);
 
 ### src/Content/Nav.php
 
-    Addon::callHooks('page_header', $a->page['nav']);
-    Addon::callHooks('nav_info', $nav);
+    Hook::callAll('page_header', $a->page['nav']);
+    Hook::callAll('nav_info', $nav);
 
 ### src/Core/Authentication.php
 
-    Addon::callHooks('logged_in', $a->user);
+    Hook::callAll('logged_in', $a->user);
 
 ### src/Worker/Directory.php
 
-    Addon::callHooks('globaldir_update', $arr);
+    Hook::callAll('globaldir_update', $arr);
 
 ### src/Worker/Notifier.php
 
-    Addon::callHooks('notifier_end', $target_item);
+    Hook::callAll('notifier_end', $target_item);
 
 ### src/Worker/Queue.php
 
-    Addon::callHooks('queue_predeliver', $r);
-    Addon::callHooks('queue_deliver', $params);
+    Hook::callAll('queue_predeliver', $r);
+    Hook::callAll('queue_deliver', $params);
 
 ### src/Module/Login.php
 
-    Addon::callHooks('authenticate', $addon_auth);
-    Addon::callHooks('login_hook', $o);
+    Hook::callAll('authenticate', $addon_auth);
+    Hook::callAll('login_hook', $o);
 
 ### src/Module/Logout.php
 
-    Addon::callHooks("logging_out");
+    Hook::callAll("logging_out");
 
 ### src/Object/Post.php
 
-    Addon::callHooks('render_location', $locate);
-    Addon::callHooks('display_item', $arr);
+    Hook::callAll('render_location', $locate);
+    Hook::callAll('display_item', $arr);
 
 ### src/Core/ACL.php
 
-    Addon::callHooks('contact_select_options', $x);
-    Addon::callHooks($a->module.'_pre_'.$selname, $arr);
-    Addon::callHooks($a->module.'_post_'.$selname, $o);
-    Addon::callHooks($a->module.'_pre_'.$selname, $arr);
-    Addon::callHooks($a->module.'_post_'.$selname, $o);
-    Addon::callHooks('jot_networks', $jotnets);
+    Hook::callAll('contact_select_options', $x);
+    Hook::callAll($a->module.'_pre_'.$selname, $arr);
+    Hook::callAll($a->module.'_post_'.$selname, $o);
+    Hook::callAll($a->module.'_pre_'.$selname, $arr);
+    Hook::callAll($a->module.'_post_'.$selname, $o);
+    Hook::callAll('jot_networks', $jotnets);
 
 ### src/Core/Worker.php
 
-    Addon::callHooks("proc_run", $arr);
+    Hook::callAll("proc_run", $arr);
 
 ### src/Util/Emailer.php
 
-    Addon::callHooks('emailer_send_prepare', $params);
-    Addon::callHooks("emailer_send", $hookdata);
+    Hook::callAll('emailer_send_prepare', $params);
+    Hook::callAll("emailer_send", $hookdata);
 
 ### src/Util/Map.php
 
-    Addon::callHooks('generate_map', $arr);
-    Addon::callHooks('generate_named_map', $arr);
-    Addon::callHooks('Map::getCoordinates', $arr);
+    Hook::callAll('generate_map', $arr);
+    Hook::callAll('generate_named_map', $arr);
+    Hook::callAll('Map::getCoordinates', $arr);
 
 ### src/Util/Network.php
 
-    Addon::callHooks('avatar_lookup', $avatar);
+    Hook::callAll('avatar_lookup', $avatar);
 
 ### src/Util/ParseUrl.php
 
-    Addon::callHooks("getsiteinfo", $siteinfo);
+    Hook::callAll("getsiteinfo", $siteinfo);
 
 ### src/Protocol/DFRN.php
 
-    Addon::callHooks('atom_feed_end', $atom);
-    Addon::callHooks('atom_feed_end', $atom);
+    Hook::callAll('atom_feed_end', $atom);
+    Hook::callAll('atom_feed_end', $atom);
diff --git a/include/api.php b/include/api.php
index 6993cb6889..f28f182532 100644
--- a/include/api.php
+++ b/include/api.php
@@ -11,9 +11,9 @@ use Friendica\Content\ContactSelector;
 use Friendica\Content\Feature;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
-use Friendica\Core\Addon;
 use Friendica\Core\Authentication;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\NotificationsManager;
@@ -174,7 +174,7 @@ function api_login(App $a)
 		list($consumer, $token) = $oauth1->verify_request($request);
 		if (!is_null($token)) {
 			$oauth1->loginUser($token->uid);
-			Addon::callHooks('logged_in', $a->user);
+			Hook::callAll('logged_in', $a->user);
 			return;
 		}
 		echo __FILE__.__LINE__.__FUNCTION__ . "
";
@@ -224,7 +224,7 @@ function api_login(App $a)
 	* Addons should never set 'authenticated' except to indicate success - as hooks may be chained
 	* and later addons should not interfere with an earlier one that succeeded.
 	*/
-	Addon::callHooks('authenticate', $addon_auth);
+	Hook::callAll('authenticate', $addon_auth);
 
 	if ($addon_auth['authenticated'] && count($addon_auth['user_record'])) {
 		$record = $addon_auth['user_record'];
@@ -247,7 +247,7 @@ function api_login(App $a)
 
 	$_SESSION["allow_api"] = true;
 
-	Addon::callHooks('logged_in', $a->user);
+	Hook::callAll('logged_in', $a->user);
 }
 
 /**
diff --git a/include/conversation.php b/include/conversation.php
index 1059941b9e..e15ac3f71a 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -8,8 +8,8 @@ use Friendica\Content\ContactSelector;
 use Friendica\Content\Feature;
 use Friendica\Content\Pager;
 use Friendica\Content\Text\BBCode;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
@@ -543,7 +543,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 	}
 
 	$cb = ['items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview];
-	Addon::callHooks('conversation_start',$cb);
+	Hook::callAll('conversation_start',$cb);
 
 	$items = $cb['items'];
 
@@ -615,7 +615,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 				}
 
 				$locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => ''];
-				Addon::callHooks('render_location',$locate);
+				Hook::callAll('render_location',$locate);
 
 				$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
 
@@ -706,7 +706,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 				];
 
 				$arr = ['item' => $item, 'output' => $tmp_item];
-				Addon::callHooks('display_item', $arr);
+				Hook::callAll('display_item', $arr);
 
 				$threads[$threadsid]['id'] = $item['id'];
 				$threads[$threadsid]['network'] = $item['network'];
@@ -743,7 +743,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 
 				/// @todo Check if this call is needed or not
 				$arr = ['item' => $item];
-				Addon::callHooks('display_item', $arr);
+				Hook::callAll('display_item', $arr);
 
 				$item['pagedrop'] = $page_dropping;
 
@@ -892,7 +892,7 @@ function item_photo_menu($item) {
 
 	$args = ['item' => $item, 'menu' => $menu];
 
-	Addon::callHooks('item_photo_menu', $args);
+	Hook::callAll('item_photo_menu', $args);
 
 	$menu = $args['menu'];
 
@@ -1097,7 +1097,7 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
 	]);
 
 	$jotplugins = '';
-	Addon::callHooks('jot_tool', $jotplugins);
+	Hook::callAll('jot_tool', $jotplugins);
 
 	// Private/public post links for the non-JS ACL form
 	$private_post = 1;
diff --git a/include/enotify.php b/include/enotify.php
index 9edfaaca82..e2b5105feb 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -4,8 +4,8 @@
  */
 
 use Friendica\Content\Text\BBCode;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
@@ -441,7 +441,7 @@ function notification($params)
 		'itemlink'  => $itemlink
 	];
 
-	Addon::callHooks('enotify', $h);
+	Hook::callAll('enotify', $h);
 
 	$subject   = $h['subject'];
 
@@ -481,7 +481,7 @@ function notification($params)
 		$datarray['otype'] = $params['otype'];
 		$datarray['abort'] = false;
 
-		Addon::callHooks('enotify_store', $datarray);
+		Hook::callAll('enotify_store', $datarray);
 
 		if ($datarray['abort']) {
 			L10n::popLang();
@@ -584,7 +584,7 @@ function notification($params)
 		$datarray['subject'] = $subject;
 		$datarray['headers'] = $additional_mail_header;
 
-		Addon::callHooks('enotify_mail', $datarray);
+		Hook::callAll('enotify_mail', $datarray);
 
 		// check whether sending post content in email notifications is allowed
 		// always true for SYSTEM_EMAIL
@@ -677,7 +677,7 @@ function check_user_notification($itemid) {
  */
 function check_item_notification($itemid, $uid, $defaulttype = "") {
 	$notification_data = ["uid" => $uid, "profiles" => []];
-	Addon::callHooks('check_item_notification', $notification_data);
+	Hook::callAll('check_item_notification', $notification_data);
 
 	$profiles = $notification_data["profiles"];
 
diff --git a/include/items.php b/include/items.php
index db60519a2c..3dd405e786 100644
--- a/include/items.php
+++ b/include/items.php
@@ -5,8 +5,8 @@
 
 use Friendica\BaseObject;
 use Friendica\Content\Feature;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
@@ -27,7 +27,7 @@ use Friendica\Util\Temporal;
 require_once 'mod/share.php';
 function add_page_info_data(array $data, $no_photos = false)
 {
-	Addon::callHooks('page_info_data', $data);
+	Hook::callAll('page_info_data', $data);
 
 	if (empty($data['type'])) {
 		return '';
diff --git a/mod/acl.php b/mod/acl.php
index 9f93b76a9b..fc67556739 100644
--- a/mod/acl.php
+++ b/mod/acl.php
@@ -5,7 +5,7 @@
 use Friendica\App;
 use Friendica\Content\Widget;
 use Friendica\Core\ACL;
-use Friendica\Core\Addon;
+use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
@@ -305,7 +305,7 @@ function acl_content(App $a)
 		'search'   => $search,
 	];
 
-	Addon::callHooks('acl_lookup_end', $results);
+	Hook::callAll('acl_lookup_end', $results);
 
 	$o = [
 		'tot'   => $results['tot'],
diff --git a/mod/directory.php b/mod/directory.php
index fa5ce73d4c..0a37c1dc04 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -7,8 +7,8 @@ use Friendica\App;
 use Friendica\Content\Nav;
 use Friendica\Content\Pager;
 use Friendica\Content\Widget;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
@@ -190,7 +190,7 @@ function directory_content(App $a)
 
 			$arr = ['contact' => $rr, 'entry' => $entry];
 
-			Addon::callHooks('directory_item', $arr);
+			Hook::callAll('directory_item', $arr);
 
 			unset($profile);
 			unset($location);
diff --git a/mod/editpost.php b/mod/editpost.php
index 1e53285830..bf103cf23c 100644
--- a/mod/editpost.php
+++ b/mod/editpost.php
@@ -4,7 +4,6 @@
  */
 use Friendica\App;
 use Friendica\Content\Feature;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
diff --git a/mod/friendica.php b/mod/friendica.php
index 4466211607..686e2e804b 100644
--- a/mod/friendica.php
+++ b/mod/friendica.php
@@ -6,6 +6,7 @@
 use Friendica\App;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
@@ -126,7 +127,7 @@ function friendica_content(App $a)
 		$o .= '
' . PHP_EOL; } - Addon::callHooks('about_hook', $o); + Hook::callAll('about_hook', $o); return $o; } diff --git a/mod/home.php b/mod/home.php index 02ec51dc0b..8e53c24f3d 100644 --- a/mod/home.php +++ b/mod/home.php @@ -3,8 +3,8 @@ * @file mod/home.php */ use Friendica\App; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; @@ -14,7 +14,7 @@ if(! function_exists('home_init')) { function home_init(App $a) { $ret = []; - Addon::callHooks('home_init',$ret); + Hook::callAll('home_init',$ret); if (local_user() && ($a->user['nickname'])) { $a->internalRedirect('network'); @@ -51,7 +51,7 @@ function home_content(App $a) { $login = Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED ? 0 : 1); $content = ''; - Addon::callHooks("home_content",$content); + Hook::callAll("home_content",$content); $tpl = Renderer::getMarkupTemplate('home.tpl'); diff --git a/mod/item.php b/mod/item.php index 5e6f88bac7..3d6d886eeb 100644 --- a/mod/item.php +++ b/mod/item.php @@ -19,8 +19,8 @@ use Friendica\App; use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\Protocol; @@ -54,7 +54,7 @@ function item_post(App $a) { exit(); } - Addon::callHooks('post_local_start', $_REQUEST); + Hook::callAll('post_local_start', $_REQUEST); Logger::log('postvars ' . print_r($_REQUEST, true), Logger::DATA); @@ -679,7 +679,7 @@ function item_post(App $a) { exit(); } - Addon::callHooks('post_local',$datarray); + Hook::callAll('post_local',$datarray); if (!empty($datarray['cancel'])) { Logger::log('mod_item: post cancelled by addon.'); @@ -795,7 +795,7 @@ function item_post(App $a) { } } - Addon::callHooks('post_local_end', $datarray); + Hook::callAll('post_local_end', $datarray); if (strlen($emailcc) && $profile_uid == local_user()) { $erecips = explode(',', $emailcc); diff --git a/mod/lockview.php b/mod/lockview.php index ef97cc91d0..35c4b04332 100644 --- a/mod/lockview.php +++ b/mod/lockview.php @@ -3,7 +3,7 @@ * @file mod/lockview.php */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Database\DBA; use Friendica\Model\Item; @@ -40,7 +40,7 @@ function lockview_content(App $a) exit(); } - Addon::callHooks('lockview_content', $item); + Hook::callAll('lockview_content', $item); if ($item['uid'] != local_user()) { echo L10n::t('Remote privacy information not available.') . '
'; diff --git a/mod/manage.php b/mod/manage.php index 4d0b65de15..52ddfdf032 100644 --- a/mod/manage.php +++ b/mod/manage.php @@ -4,10 +4,9 @@ */ use Friendica\App; use Friendica\Core\Authentication; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; -use Friendica\Core\System; use Friendica\Database\DBA; function manage_post(App $a) { @@ -116,7 +115,7 @@ function manage_post(App $a) { } $ret = []; - Addon::callHooks('home_init',$ret); + Hook::callAll('home_init',$ret); $a->internalRedirect('profile/' . $a->user['nickname'] ); // NOTREACHED diff --git a/mod/network.php b/mod/network.php index ef53be4715..015be2b17c 100644 --- a/mod/network.php +++ b/mod/network.php @@ -12,7 +12,6 @@ use Friendica\Content\Pager; use Friendica\Content\Widget; use Friendica\Content\Text\HTML; use Friendica\Core\ACL; -use Friendica\Core\Addon; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; @@ -355,7 +354,7 @@ function network_content(App $a, $update = 0, $parent = 0) /// @TODO Is this really necessary? $a is already available to hooks $arr = ['query' => $a->query_string]; - Addon::callHooks('network_content_init', $arr); + Hook::callAll('network_content_init', $arr); $flat_mode = false; @@ -1024,7 +1023,7 @@ function network_tabs(App $a) } $arr = ['tabs' => $tabs]; - Addon::callHooks('network_tabs', $arr); + Hook::callAll('network_tabs', $arr); $tpl = Renderer::getMarkupTemplate('common_tabs.tpl'); diff --git a/mod/parse_url.php b/mod/parse_url.php index 02fbfa1b7d..14ec4d42ce 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -10,7 +10,7 @@ * @see ParseUrl::getSiteinfo() for more information about scraping embeddable content */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Util\Network; use Friendica\Util\ParseUrl; @@ -97,7 +97,7 @@ function parse_url_content(App $a) $arr = ['url' => $url, 'text' => '']; - Addon::callHooks('parse_link', $arr); + Hook::callAll('parse_link', $arr); if (strlen($arr['text'])) { echo $arr['text']; diff --git a/mod/photos.php b/mod/photos.php index aff8041a9f..3a92774654 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -9,13 +9,12 @@ use Friendica\Content\Nav; use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; use Friendica\Core\ACL; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\Renderer; use Friendica\Core\System; -use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Group; @@ -666,7 +665,7 @@ function photos_post(App $a) // default post action - upload a photo - Addon::callHooks('photo_post_init', $_POST); + Hook::callAll('photo_post_init', $_POST); // Determine the album to use $album = !empty($_REQUEST['album']) ? Strings::escapeTags(trim($_REQUEST['album'])) : ''; @@ -714,7 +713,7 @@ function photos_post(App $a) $ret = ['src' => '', 'filename' => '', 'filesize' => 0, 'type' => '']; - Addon::callHooks('photo_post_file', $ret); + Hook::callAll('photo_post_file', $ret); if (!empty($ret['src']) && !empty($ret['filesize'])) { $src = $ret['src']; @@ -754,7 +753,7 @@ function photos_post(App $a) } @unlink($src); $foo = 0; - Addon::callHooks('photo_post_end', $foo); + Hook::callAll('photo_post_end', $foo); return; } @@ -770,7 +769,7 @@ function photos_post(App $a) notice(L10n::t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize)) . EOL); @unlink($src); $foo = 0; - Addon::callHooks('photo_post_end', $foo); + Hook::callAll('photo_post_end', $foo); return; } @@ -778,7 +777,7 @@ function photos_post(App $a) notice(L10n::t('Image file is empty.') . EOL); @unlink($src); $foo = 0; - Addon::callHooks('photo_post_end', $foo); + Hook::callAll('photo_post_end', $foo); return; } @@ -793,7 +792,7 @@ function photos_post(App $a) notice(L10n::t('Unable to process image.') . EOL); @unlink($src); $foo = 0; - Addon::callHooks('photo_post_end',$foo); + Hook::callAll('photo_post_end',$foo); exit(); } @@ -879,7 +878,7 @@ function photos_post(App $a) // Update the photo albums cache Photo::clearAlbumCache($page_owner_uid); - Addon::callHooks('photo_post_end', $item_id); + Hook::callAll('photo_post_end', $item_id); // addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook // if they do not wish to be redirected @@ -1042,7 +1041,7 @@ function photos_content(App $a) 'addon_text' => $uploader, 'default_upload' => true]; - Addon::callHooks('photo_upload_form',$ret); + Hook::callAll('photo_upload_form',$ret); $default_upload_box = Renderer::replaceMacros(Renderer::getMarkupTemplate('photos_default_uploader_box.tpl'), []); $default_upload_submit = Renderer::replaceMacros(Renderer::getMarkupTemplate('photos_default_uploader_submit.tpl'), [ diff --git a/mod/ping.php b/mod/ping.php index 9d8311f1c4..872e9f935b 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -4,12 +4,11 @@ */ use Friendica\App; -use Friendica\Content\Feature; use Friendica\Content\ForumManager; use Friendica\Content\Text\BBCode; -use Friendica\Core\Addon; use Friendica\Core\Cache; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\PConfig; use Friendica\Core\System; @@ -129,7 +128,7 @@ function ping_init(App $a) if (DBA::isResult($items)) { $items_unseen = Item::inArray($items); $arr = ['items' => $items_unseen]; - Addon::callHooks('network_ping', $arr); + Hook::callAll('network_ping', $arr); foreach ($items_unseen as $item) { if ($item['wall']) { diff --git a/mod/poke.php b/mod/poke.php index fb1fae85d6..b8a1ba7bfd 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -14,12 +14,11 @@ */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\Renderer; use Friendica\Core\System; -use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Model\Item; use Friendica\Util\Strings; @@ -129,9 +128,9 @@ function poke_init(App $a) $arr['object'] .= XML::escape('' . "\n"); $arr['object'] .= '' . "\n"; - $item_id = Item::insert($arr); + Item::insert($arr); - Addon::callHooks('post_local_end', $arr); + Hook::callAll('post_local_end', $arr); return; } @@ -143,9 +142,6 @@ function poke_content(App $a) return; } - $name = ''; - $id = ''; - if (empty($_GET['c'])) { return; } diff --git a/mod/profile.php b/mod/profile.php index 51f8ca7534..f7d665334d 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -8,10 +8,9 @@ use Friendica\Content\Nav; use Friendica\Content\Pager; use Friendica\Content\Widget; use Friendica\Core\ACL; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; -use Friendica\Core\Logger; use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Database\DBA; @@ -167,7 +166,7 @@ function profile_content(App $a, $update = 0) if ($tab === 'profile') { $o .= Profile::getAdvanced($a); - Addon::callHooks('profile_advanced', $o); + Hook::callAll('profile_advanced', $o); return $o; } diff --git a/mod/profiles.php b/mod/profiles.php index b30739b304..74a3d91f07 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -8,8 +8,8 @@ use Friendica\BaseModule; use Friendica\Content\ContactSelector; use Friendica\Content\Feature; use Friendica\Content\Nav; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\PConfig; use Friendica\Core\Renderer; @@ -186,7 +186,7 @@ function profiles_post(App $a) { $namechanged = false; - Addon::callHooks('profile_post', $_POST); + Hook::callAll('profile_post', $_POST); if (($a->argc > 1) && ($a->argv[1] !== "new") && intval($a->argv[1])) { $orig = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1", @@ -645,7 +645,7 @@ function profiles_content(App $a) { ]); $arr = ['profile' => $r[0], 'entry' => $o]; - Addon::callHooks('profile_edit', $arr); + Hook::callAll('profile_edit', $arr); return $o; } else { diff --git a/mod/register.php b/mod/register.php index b13ec22509..0125ae417e 100644 --- a/mod/register.php +++ b/mod/register.php @@ -6,8 +6,8 @@ use Friendica\App; use Friendica\BaseModule; use Friendica\Content\Text\BBCode; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -26,7 +26,7 @@ function register_post(App $a) $blocked = 1; $arr = ['post' => $_POST]; - Addon::callHooks('register_post', $arr); + Hook::callAll('register_post', $arr); $max_dailies = intval(Config::get('system', 'max_daily_registrations')); if ($max_dailies) { @@ -241,7 +241,7 @@ function register_content(App $a) $arr = ['template' => $tpl]; - Addon::callHooks('register_form', $arr); + Hook::callAll('register_form', $arr); $tpl = $arr['template']; diff --git a/mod/settings.php b/mod/settings.php index 048abff731..14c0cc64d7 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -8,8 +8,8 @@ use Friendica\BaseModule; use Friendica\Content\Feature; use Friendica\Content\Nav; use Friendica\Core\ACL; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -215,7 +215,7 @@ function settings_post(App $a) if (($a->argc > 1) && ($a->argv[1] == 'addon')) { BaseModule::checkFormSecurityTokenRedirectOnError('/settings/addon', 'settings_addon'); - Addon::callHooks('addon_settings_post', $_POST); + Hook::callAll('addon_settings_post', $_POST); return; } @@ -297,7 +297,7 @@ function settings_post(App $a) } } - Addon::callHooks('connector_settings_post', $_POST); + Hook::callAll('connector_settings_post', $_POST); return; } @@ -372,7 +372,7 @@ function settings_post(App $a) intval(local_user()) ); - Addon::callHooks('display_settings_post', $_POST); + Hook::callAll('display_settings_post', $_POST); $a->internalRedirect('settings/display'); return; // NOTREACHED } @@ -385,7 +385,7 @@ function settings_post(App $a) $a->internalRedirect('settings'); } - Addon::callHooks('settings_post', $_POST); + Hook::callAll('settings_post', $_POST); if (!empty($_POST['password']) || !empty($_POST['confirm'])) { $newpass = $_POST['password']; @@ -743,7 +743,7 @@ function settings_content(App $a) $settings_addons = L10n::t('No Addon settings configured'); } - Addon::callHooks('addon_settings', $settings_addons); + Hook::callAll('addon_settings', $settings_addons); $tpl = Renderer::getMarkupTemplate('settings/addons.tpl'); @@ -790,7 +790,7 @@ function settings_content(App $a) } $settings_connectors = ''; - Addon::callHooks('connector_settings', $settings_connectors); + Hook::callAll('connector_settings', $settings_connectors); if (is_site_admin()) { $diasp_enabled = L10n::t('Built-in support for %s connectivity is %s', L10n::t('Diaspora'), ((Config::get('system', 'diaspora_enabled')) ? L10n::t('enabled') : L10n::t('disabled'))); @@ -863,7 +863,7 @@ function settings_content(App $a) '$submit' => L10n::t('Save Settings'), ]); - Addon::callHooks('display_settings', $o); + Hook::callAll('display_settings', $o); return $o; } @@ -1262,7 +1262,7 @@ function settings_content(App $a) ]); - Addon::callHooks('settings_form', $o); + Hook::callAll('settings_form', $o); $o .= '' . "\r\n"; diff --git a/mod/subthread.php b/mod/subthread.php index 3d71673033..23ebf4fe48 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -3,7 +3,7 @@ * @file mod/subthread.php */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\System; @@ -149,7 +149,7 @@ EOT; $arr['id'] = $post_id; - Addon::callHooks('post_local_end', $arr); + Hook::callAll('post_local_end', $arr); exit(); diff --git a/mod/tagger.php b/mod/tagger.php index 87895e16f8..7cb43e330c 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -3,7 +3,7 @@ * @file mod/tagger.php */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\System; @@ -199,7 +199,7 @@ EOT; $arr['id'] = $post_id; - Addon::callHooks('post_local_end', $arr); + Hook::callAll('post_local_end', $arr); Worker::add(PRIORITY_HIGH, "Notifier", "tag", $post_id); diff --git a/mod/uexport.php b/mod/uexport.php index 11ed4b67ea..523e2fef85 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -3,7 +3,7 @@ * @file mod/uexport.php */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; @@ -45,7 +45,7 @@ function uexport_content(App $a) { ['uexport/account', L10n::t('Export account'), L10n::t('Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server.')], ['uexport/backup', L10n::t('Export all'), L10n::t("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 \x28photos are not exported\x29")], ]; - Addon::callHooks('uexport_options', $options); + Hook::callAll('uexport_options', $options); $tpl = Renderer::getMarkupTemplate("uexport.tpl"); return Renderer::replaceMacros($tpl, [ diff --git a/mod/xrd.php b/mod/xrd.php index b470197a2e..1b3b4f3cc1 100644 --- a/mod/xrd.php +++ b/mod/xrd.php @@ -4,7 +4,7 @@ */ use Friendica\App; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; @@ -127,7 +127,7 @@ function xrd_xml($a, $uri, $alias, $profile_url, $r) ); $arr = ['user' => $r, 'xml' => $o]; - Addon::callHooks('personal_xrd', $arr); + Hook::callAll('personal_xrd', $arr); echo $arr['xml']; exit(); diff --git a/src/App.php b/src/App.php index c41cfdc6c0..df350542ad 100644 --- a/src/App.php +++ b/src/App.php @@ -781,7 +781,7 @@ class App $touch_icon = 'images/friendica-128.png'; } - Core\Addon::callHooks('head', $this->page['htmlhead']); + Core\Hook::callAll('head', $this->page['htmlhead']); $tpl = Core\Renderer::getMarkupTemplate('head.tpl'); /* put the head template at the beginning of page['htmlhead'] @@ -840,7 +840,7 @@ class App ]); } - Core\Addon::callHooks('footer', $this->page['footer']); + Core\Hook::callAll('footer', $this->page['footer']); $tpl = Core\Renderer::getMarkupTemplate('footer.tpl'); $this->page['footer'] = Core\Renderer::replaceMacros($tpl, [ @@ -1534,7 +1534,7 @@ class App } Core\Session::init(); - Core\Addon::callHooks('init_1'); + Core\Hook::callAll('init_1'); } // Exclude the backend processes from the session management @@ -1725,7 +1725,7 @@ class App $this->page['page_title'] = $this->module; $placeholder = ''; - Core\Addon::callHooks($this->module . '_mod_init', $placeholder); + Core\Hook::callAll($this->module . '_mod_init', $placeholder); call_user_func([$this->module_class, 'init']); @@ -1749,28 +1749,28 @@ class App if ($this->module_loaded) { if (! $this->error && $_SERVER['REQUEST_METHOD'] === 'POST') { - Core\Addon::callHooks($this->module . '_mod_post', $_POST); + Core\Hook::callAll($this->module . '_mod_post', $_POST); call_user_func([$this->module_class, 'post']); } if (! $this->error) { - Core\Addon::callHooks($this->module . '_mod_afterpost', $placeholder); + Core\Hook::callAll($this->module . '_mod_afterpost', $placeholder); call_user_func([$this->module_class, 'afterpost']); } if (! $this->error) { $arr = ['content' => $content]; - Core\Addon::callHooks($this->module . '_mod_content', $arr); + Core\Hook::callAll($this->module . '_mod_content', $arr); $content = $arr['content']; $arr = ['content' => call_user_func([$this->module_class, 'content'])]; - Core\Addon::callHooks($this->module . '_mod_aftercontent', $arr); + Core\Hook::callAll($this->module . '_mod_aftercontent', $arr); $content .= $arr['content']; } } // initialise content region if ($this->getMode()->isNormal()) { - Core\Addon::callHooks('page_content_top', $this->page['content']); + Core\Hook::callAll('page_content_top', $this->page['content']); } $this->page['content'] .= $content; @@ -1797,7 +1797,7 @@ class App } // Report anything which needs to be communicated in the notification area (before the main body) - Core\Addon::callHooks('page_end', $this->page['content']); + Core\Hook::callAll('page_end', $this->page['content']); // Add the navigation (menu) template if ($this->module != 'install' && $this->module != 'maintenance') { diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 6a5ee9112b..4ba579b514 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -4,10 +4,9 @@ */ namespace Friendica\Content; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Protocol; -use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Util\Network; use Friendica\Util\Strings; @@ -96,7 +95,7 @@ class ContactSelector Protocol::PNUT => L10n::t('pnut'), ]; - Addon::callHooks('network_to_name', $nets); + Hook::callAll('network_to_name', $nets); $search = array_keys($nets); $replace = array_values($nets); @@ -141,6 +140,7 @@ class ContactSelector /** * @param string $current optional, default empty * @param string $suffix optionsl, default empty + * @return string */ public static function gender($current = "", $suffix = "") { @@ -163,7 +163,7 @@ class ContactSelector 'Undecided' => L10n::t('Undecided'), ]; - Addon::callHooks('gender_selector', $select); + Hook::callAll('gender_selector', $select); $o .= ""; foreach ($select as $neutral => $selection) { @@ -215,6 +216,7 @@ class ContactSelector /** * @param string $current optional, default empty + * @return string */ public static function maritalStatus($current = "") { @@ -254,7 +256,7 @@ class ContactSelector 'Ask me' => L10n::t('Ask me'), ]; - Addon::callHooks('marital_selector', $select); + Hook::callAll('marital_selector', $select); $o .= '' . PHP_EOL; - Addon::callHooks($a->module . '_post_' . $selname, $o); + Hook::callAll($a->module . '_post_' . $selname, $o); return $o; } @@ -176,7 +174,7 @@ class ACL extends BaseObject $arr = ['contact' => $contacts, 'entry' => $o]; // e.g. 'network_pre_contact_deny', 'profile_pre_contact_allow' - Addon::callHooks($a->module . '_pre_' . $selname, $arr); + Hook::callAll($a->module . '_pre_' . $selname, $arr); $receiverlist = []; @@ -202,7 +200,7 @@ class ACL extends BaseObject $o .= implode(', ', $receiverlist); } - Addon::callHooks($a->module . '_post_' . $selname, $o); + Hook::callAll($a->module . '_post_' . $selname, $o); return $o; } @@ -285,7 +283,7 @@ class ACL extends BaseObject $jotnets .= '
' . L10n::t("Post to Email") . '
'; } - Addon::callHooks('jot_networks', $jotnets); + Hook::callAll('jot_networks', $jotnets); } else { $jotnets .= L10n::t('Connectors disabled, since "%s" is enabled.', L10n::t('Hide your profile details from unknown viewers?')); diff --git a/src/Core/Authentication.php b/src/Core/Authentication.php index ca5ec3fd08..235b99f8f7 100644 --- a/src/Core/Authentication.php +++ b/src/Core/Authentication.php @@ -6,11 +6,6 @@ namespace Friendica\Core; use Friendica\BaseObject; -use Friendica\Core\Addon; -use Friendica\Core\Config; -use Friendica\Core\L10n; -use Friendica\Core\Logger; -use Friendica\Core\PConfig; use Friendica\Database\DBA; use Friendica\Model\User; use Friendica\Util\DateTimeFormat; @@ -154,7 +149,7 @@ class Authentication extends BaseObject } if ($login_initial) { - Addon::callHooks('logged_in', $a->user); + Hook::callAll('logged_in', $a->user); if (($a->module !== 'home') && isset($_SESSION['return_path'])) { $a->internalRedirect($_SESSION['return_path']); diff --git a/src/Core/L10n.php b/src/Core/L10n.php index aa36c2e4f9..73042c7c26 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -6,9 +6,6 @@ namespace Friendica\Core; use Friendica\BaseObject; use Friendica\Database\DBA; -use Friendica\Core\Addon; -use Friendica\Core\Logger; -use Friendica\Core\System; /** * Provide Language, Translation, and Localization functions to the application @@ -402,7 +399,7 @@ class L10n extends BaseObject 'rebuff' => ['rebuffed', self::t('rebuff'), self::t('rebuffed')], ]; - Addon::callHooks('poke_verbs', $arr); + Hook::callAll('poke_verbs', $arr); return $arr; } diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 3a4be04381..aae3e85d08 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -5,7 +5,6 @@ namespace Friendica\Core; use Friendica\BaseObject; -use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Model\Process; use Friendica\Util\DateTimeFormat; @@ -1070,7 +1069,7 @@ class Worker $arr = ['args' => $args, 'run_cmd' => true]; - Addon::callHooks("proc_run", $arr); + Hook::callAll("proc_run", $arr); if (!$arr['run_cmd'] || !count($args)) { return true; } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 1dac5dbf41..3c9071b9fe 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -6,7 +6,6 @@ namespace Friendica\Model; use Friendica\BaseObject; use Friendica\Content\Pager; -use Friendica\Core\Addon; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; @@ -1007,7 +1006,7 @@ class Contact extends BaseObject $args = ['contact' => $contact, 'menu' => &$menu]; - Addon::callHooks('contact_photo_menu', $args); + Hook::callAll('contact_photo_menu', $args); $menucondensed = []; diff --git a/src/Model/Event.php b/src/Model/Event.php index ce77ee7a93..5f0238aad2 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -7,7 +7,7 @@ namespace Friendica\Model; use Friendica\BaseObject; use Friendica\Content\Text\BBCode; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -311,7 +311,7 @@ class Event extends BaseObject $item_id = 0; } - Addon::callHooks('event_updated', $event['id']); + Hook::callAll('event_updated', $event['id']); } else { $event['guid'] = defaults($arr, 'guid', System::createUUID()); @@ -361,7 +361,7 @@ class Event extends BaseObject $item_id = Item::insert($item_arr); } - Addon::callHooks("event_created", $event['id']); + Hook::callAll("event_created", $event['id']); } return $item_id; diff --git a/src/Model/Item.php b/src/Model/Item.php index 2222d71f55..0451e95b37 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -9,8 +9,8 @@ namespace Friendica\Model; use Friendica\BaseObject; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Lock; use Friendica\Core\Logger; use Friendica\Core\L10n; @@ -1608,11 +1608,11 @@ class Item extends BaseObject if ($notify) { $item['edit'] = false; $item['parent'] = $parent_id; - Addon::callHooks('post_local', $item); + Hook::callAll('post_local', $item); unset($item['edit']); unset($item['parent']); } else { - Addon::callHooks('post_remote', $item); + Hook::callAll('post_remote', $item); } // This array field is used to trigger some automatic reactions @@ -1785,9 +1785,9 @@ class Item extends BaseObject $posted_item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $current_post]); if (DBA::isResult($posted_item)) { if ($notify) { - Addon::callHooks('post_local_end', $posted_item); + Hook::callAll('post_local_end', $posted_item); } else { - Addon::callHooks('post_remote_end', $posted_item); + Hook::callAll('post_remote_end', $posted_item); } } else { Logger::log('new item not found in DB, id ' . $current_post); @@ -2532,7 +2532,7 @@ class Item extends BaseObject $arr = ['item' => $item, 'user' => $user]; - Addon::callHooks('tagged', $arr); + Hook::callAll('tagged', $arr); if (!$community_page && !$prvgroup) { return; @@ -3090,7 +3090,7 @@ class Item extends BaseObject $new_item['id'] = $new_item_id; - Addon::callHooks('post_local_end', $new_item); + Hook::callAll('post_local_end', $new_item); return true; } @@ -3255,7 +3255,7 @@ class Item extends BaseObject $item["rendered-hash"] = hash("md5", $item["body"]); $hook_data = ['item' => $item, 'rendered-html' => $item['rendered-html'], 'rendered-hash' => $item['rendered-hash']]; - Addon::callHooks('put_item_in_cache', $hook_data); + Hook::callAll('put_item_in_cache', $hook_data); $item['rendered-html'] = $hook_data['rendered-html']; $item['rendered-hash'] = $hook_data['rendered-hash']; unset($hook_data); @@ -3300,7 +3300,7 @@ class Item extends BaseObject public static function prepareBody(array &$item, $attach = false, $is_preview = false) { $a = self::getApp(); - Addon::callHooks('prepare_body_init', $item); + Hook::callAll('prepare_body_init', $item); // In order to provide theme developers more possibilities, event items // are treated differently. @@ -3326,7 +3326,7 @@ class Item extends BaseObject 'item' => $item, 'filter_reasons' => $filter_reasons ]; - Addon::callHooks('prepare_body_content_filter', $hook_data); + Hook::callAll('prepare_body_content_filter', $hook_data); $filter_reasons = $hook_data['filter_reasons']; unset($hook_data); } @@ -3348,7 +3348,7 @@ class Item extends BaseObject 'preview' => $is_preview, 'filter_reasons' => $filter_reasons ]; - Addon::callHooks('prepare_body', $hook_data); + Hook::callAll('prepare_body', $hook_data); $s = $hook_data['html']; unset($hook_data); @@ -3456,7 +3456,7 @@ class Item extends BaseObject $s = HTML::applyContentFilter($s, $filter_reasons); $hook_data = ['item' => $item, 'html' => $s]; - Addon::callHooks('prepare_body_final', $hook_data); + Hook::callAll('prepare_body_final', $hook_data); return $hook_data['html']; } diff --git a/src/Model/Profile.php b/src/Model/Profile.php index a5fb908a78..f78f422359 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -9,9 +9,9 @@ use Friendica\Content\Feature; use Friendica\Content\ForumManager; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; -use Friendica\Core\Addon; use Friendica\Core\Cache; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -300,7 +300,7 @@ class Profile $profile['network_link'] = ''; } - Addon::callHooks('profile_sidebar_enter', $profile); + Hook::callAll('profile_sidebar_enter', $profile); // don't show connect link to yourself @@ -548,7 +548,7 @@ class Profile $arr = ['profile' => &$profile, 'entry' => &$o]; - Addon::callHooks('profile_sidebar', $arr); + Hook::callAll('profile_sidebar', $arr); return $o; } @@ -992,7 +992,7 @@ class Profile } $arr = ['is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => $tab, 'tabs' => $tabs]; - Addon::callHooks('profile_tabs', $arr); + Hook::callAll('profile_tabs', $arr); $tpl = Renderer::getMarkupTemplate('common_tabs.tpl'); @@ -1033,7 +1033,7 @@ class Profile } $arr = ['zrl' => $my_url, 'url' => $a->cmd]; - Addon::callHooks('zrl_init', $arr); + Hook::callAll('zrl_init', $arr); // Try to find the public contact entry of the visitor. $cid = Contact::getIdForURL($my_url); @@ -1144,7 +1144,7 @@ class Profile * * \e array \b visitor * * \e string \b url */ - Addon::callHooks('magic_auth_success', $arr); + Hook::callAll('magic_auth_success', $arr); $a->contact = $arr['visitor']; diff --git a/src/Model/User.php b/src/Model/User.php index 4fc17ae82d..602ba9b33f 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -7,7 +7,6 @@ namespace Friendica\Model; use DivineOmega\PasswordExposed; use Exception; -use Friendica\Core\Addon; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; @@ -707,7 +706,7 @@ class User } } - Addon::callHooks('register_account', $uid); + Hook::callAll('register_account', $uid); $return['user'] = $user; return $return; diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 245e5f0b22..fa231b1de1 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -10,7 +10,7 @@ use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; use Friendica\Content\Widget; use Friendica\Core\ACL; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Protocol; use Friendica\Core\Renderer; @@ -194,7 +194,7 @@ class Contact extends BaseModule return; // NOTREACHED } - Addon::callHooks('contact_edit_post', $_POST); + Hook::callAll('contact_edit_post', $_POST); $profile_id = intval(defaults($_POST, 'profile-assign', 0)); if ($profile_id) { @@ -659,7 +659,7 @@ class Contact extends BaseModule $arr = ['contact' => $contact, 'output' => $o]; - Addon::callHooks('contact_edit', $arr); + Hook::callAll('contact_edit', $arr); return $arr['output']; } diff --git a/src/Module/Login.php b/src/Module/Login.php index 41ea917cf3..7a0e8e40e2 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -6,9 +6,9 @@ namespace Friendica\Module; use Exception; use Friendica\BaseModule; -use Friendica\Core\Addon; use Friendica\Core\Authentication; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\Renderer; @@ -131,7 +131,7 @@ class Login extends BaseModule * Addons should never set 'authenticated' except to indicate success - as hooks may be chained * and later addons should not interfere with an earlier one that succeeded. */ - Addon::callHooks('authenticate', $addon_auth); + Hook::callAll('authenticate', $addon_auth); try { if ($addon_auth['authenticated']) { @@ -340,7 +340,7 @@ class Login extends BaseModule ] ); - Addon::callHooks('login_hook', $o); + Hook::callAll('login_hook', $o); return $o; } diff --git a/src/Module/Logout.php b/src/Module/Logout.php index 7024fc110a..4ccba2d744 100644 --- a/src/Module/Logout.php +++ b/src/Module/Logout.php @@ -2,13 +2,13 @@ /** * @file src/Module/Logout.php */ + namespace Friendica\Module; use Friendica\BaseModule; -use Friendica\Core\Addon; use Friendica\Core\Authentication; +use Friendica\Core\Hook; use Friendica\Core\L10n; -use Friendica\Core\System; /** * Logout module @@ -22,7 +22,7 @@ class Logout extends BaseModule */ public static function init() { - Addon::callHooks("logging_out"); + Hook::callAll("logging_out"); Authentication::deleteSession(); info(L10n::t('Logged out.') . EOL); self::getApp()->internalRedirect(); diff --git a/src/Network/FKOAuth1.php b/src/Network/FKOAuth1.php index 43ef1257c5..1e84ff052b 100644 --- a/src/Network/FKOAuth1.php +++ b/src/Network/FKOAuth1.php @@ -4,7 +4,7 @@ */ namespace Friendica\Network; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\PConfig; use Friendica\Core\System; @@ -69,6 +69,6 @@ class FKOAuth1 extends OAuthServer DBA::update('user', ['login_date' => DateTimeFormat::utcNow()], ['uid' => $_SESSION['uid']]); - Addon::callHooks('logged_in', $a->user); + Hook::callAll('logged_in', $a->user); } } diff --git a/src/Object/Post.php b/src/Object/Post.php index 8aae024ffb..a1d6c1eab0 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -8,6 +8,7 @@ use Friendica\BaseObject; use Friendica\Content\ContactSelector; use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -229,7 +230,7 @@ class Post extends BaseObject } $locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => '']; - Addon::callHooks('render_location', $locate); + Hook::callAll('render_location', $locate); $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate)); // process action responses - e.g. like/dislike/attend/agree/whatever @@ -433,7 +434,7 @@ class Post extends BaseObject ]; $arr = ['item' => $item, 'output' => $tmp_item]; - Addon::callHooks('display_item', $arr); + Hook::callAll('display_item', $arr); $result = $arr['output']; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 6c475b1852..c08a24f423 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -14,8 +14,8 @@ use Friendica\App; use Friendica\Content\OEmbed; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Protocol; use Friendica\Core\System; @@ -295,12 +295,12 @@ class DFRN $root = self::addHeader($doc, $owner, $author, $alternatelink, true); /// @TODO This hook can't work anymore - // Addon::callHooks('atom_feed', $atom); + // \Friendica\Core\Hook::callAll('atom_feed', $atom); if (!DBA::isResult($items) || $onlyheader) { $atom = trim($doc->saveXML()); - Addon::callHooks('atom_feed_end', $atom); + Hook::callAll('atom_feed_end', $atom); return $atom; } @@ -329,7 +329,7 @@ class DFRN $atom = trim($doc->saveXML()); - Addon::callHooks('atom_feed_end', $atom); + Hook::callAll('atom_feed_end', $atom); return $atom; } diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 54295684cc..69a34ae565 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -4,7 +4,7 @@ */ namespace Friendica\Render; -use Friendica\Core\Addon; +use Friendica\Core\Hook; /** * Smarty implementation of the Friendica template engine interface @@ -39,7 +39,7 @@ class FriendicaSmartyEngine implements ITemplateEngine "template" => basename($s->filename), "vars" => $r ]; - Addon::callHooks("template_vars", $arr); + Hook::callAll("template_vars", $arr); $r = $arr['vars']; foreach ($r as $key => $value) { diff --git a/src/Util/Crypto.php b/src/Util/Crypto.php index 3426babe36..6e054df973 100644 --- a/src/Util/Crypto.php +++ b/src/Util/Crypto.php @@ -4,10 +4,9 @@ */ namespace Friendica\Util; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Logger; -use Friendica\Util\Strings; use ASN_BASE; use ASNValue; @@ -372,7 +371,7 @@ class Crypto return $result; } else { $x = ['data' => $data, 'pubkey' => $pubkey, 'alg' => $alg, 'result' => $data]; - Addon::callHooks('other_encapsulate', $x); + Hook::callAll('other_encapsulate', $x); return $x['result']; } @@ -455,7 +454,7 @@ class Crypto return self::$fn(Strings::base64UrlDecode($data['data']), $k, $i); } else { $x = ['data' => $data, 'prvkey' => $prvkey, 'alg' => $alg, 'result' => $data]; - Addon::callHooks('other_unencapsulate', $x); + Hook::callAll('other_unencapsulate', $x); return $x['result']; } diff --git a/src/Util/Emailer.php b/src/Util/Emailer.php index a13af739e6..e9bcbc200d 100644 --- a/src/Util/Emailer.php +++ b/src/Util/Emailer.php @@ -4,8 +4,8 @@ */ namespace Friendica\Util; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\PConfig; use Friendica\Protocol\Email; @@ -33,7 +33,7 @@ class Emailer */ public static function send($params) { - Addon::callHooks('emailer_send_prepare', $params); + Hook::callAll('emailer_send_prepare', $params); $email_textonly = false; if (!empty($params['uid'])) { @@ -89,7 +89,7 @@ class Emailer 'parameters' => $sendmail_params ]; - Addon::callHooks("emailer_send", $hookdata); + Hook::callAll("emailer_send", $hookdata); $res = mail( $hookdata['to'], diff --git a/src/Util/Map.php b/src/Util/Map.php index d3ac021665..a35235bf5c 100644 --- a/src/Util/Map.php +++ b/src/Util/Map.php @@ -4,7 +4,7 @@ */ namespace Friendica\Util; -use Friendica\Core\Addon; +use Friendica\Core\Hook; /** * Leaflet Map related functions @@ -14,19 +14,19 @@ class Map { $coord = trim($coord); $coord = str_replace([',','/',' '],[' ',' ',' '],$coord); $arr = ['lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'mode' => $html_mode, 'html' => '']; - Addon::callHooks('generate_map',$arr); + Hook::callAll('generate_map',$arr); return ($arr['html']) ? $arr['html'] : $coord; } public static function byLocation($location, $html_mode = 0) { $arr = ['location' => $location, 'mode' => $html_mode, 'html' => '']; - Addon::callHooks('generate_named_map',$arr); + Hook::callAll('generate_named_map',$arr); return ($arr['html']) ? $arr['html'] : $location; } public static function getCoordinates($location) { $arr = ['location' => $location, 'lat' => false, 'lon' => false]; - Addon::callHooks('Map::getCoordinates', $arr); + Hook::callAll('Map::getCoordinates', $arr); return $arr; } } diff --git a/src/Util/Network.php b/src/Util/Network.php index d4e18a8a63..5cac96b79c 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -4,12 +4,11 @@ */ namespace Friendica\Util; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Core\Config; use Friendica\Network\CurlResult; -use Friendica\Util\Strings; use DOMDocument; use DomXPath; @@ -533,7 +532,7 @@ class Network $avatar['url'] = ''; $avatar['success'] = false; - Addon::callHooks('avatar_lookup', $avatar); + Hook::callAll('avatar_lookup', $avatar); if (! $avatar['success']) { $avatar['url'] = System::baseUrl() . '/images/person-300.jpg'; diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index 70c5279cc8..cdafc7387b 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -8,11 +8,10 @@ namespace Friendica\Util; use DOMDocument; use DOMXPath; use Friendica\Content\OEmbed; -use Friendica\Core\Addon; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Object\Image; -use Friendica\Util\Strings; /** * @brief Class with methods for extracting certain content from an url @@ -422,7 +421,7 @@ class ParseUrl Logger::log('Siteinfo for ' . $url . ' ' . print_r($siteinfo, true), Logger::DEBUG); - Addon::callHooks('getsiteinfo', $siteinfo); + Hook::callAll('getsiteinfo', $siteinfo); return $siteinfo; } diff --git a/src/Worker/Directory.php b/src/Worker/Directory.php index b4b86e344e..8e8c0aa819 100644 --- a/src/Worker/Directory.php +++ b/src/Worker/Directory.php @@ -6,8 +6,8 @@ namespace Friendica\Worker; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Database\DBA; @@ -32,7 +32,7 @@ class Directory $arr = ['url' => $url]; - Addon::callHooks('globaldir_update', $arr); + Hook::callAll('globaldir_update', $arr); Logger::log('Updating directory: ' . $arr['url'], Logger::DEBUG); if (strlen($arr['url'])) { diff --git a/src/Worker/Queue.php b/src/Worker/Queue.php index 7ba18ae1c2..704ac00b4e 100644 --- a/src/Worker/Queue.php +++ b/src/Worker/Queue.php @@ -4,9 +4,9 @@ */ namespace Friendica\Worker; -use Friendica\Core\Addon; use Friendica\Core\Cache; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Protocol; use Friendica\Core\Worker; @@ -37,7 +37,7 @@ class Queue $r = DBA::toArray(DBA::p("SELECT `id` FROM `queue` WHERE `next` < UTC_TIMESTAMP() ORDER BY `batch`, `cid`")); - Addon::callHooks('queue_predeliver', $r); + Hook::callAll('queue_predeliver', $r); if (DBA::isResult($r)) { foreach ($r as $q_item) { @@ -148,7 +148,7 @@ class Queue default: $params = ['owner' => $owner, 'contact' => $contact, 'queue' => $q_item, 'result' => false]; - Addon::callHooks('queue_deliver', $params); + Hook::callAll('queue_deliver', $params); if ($params['result']) { QueueModel::removeItem($q_item['id']); From c90314cd6ad8b865205c0bca656df5e9efb65638 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 26 Dec 2018 10:06:05 -0500 Subject: [PATCH 101/728] Replace deprecated Addon::*registerHook by Hook::*register - Updated documentation --- doc/Addons.md | 6 +++--- doc/de/Addons.md | 2 +- view/theme/frio/theme.php | 26 +++++++++++++------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/doc/Addons.md b/doc/Addons.md index 3aee9b7384..29cf22bfe9 100644 --- a/doc/Addons.md +++ b/doc/Addons.md @@ -32,7 +32,7 @@ It will be displayed in the admin panel and should include some further informat Register your addon hooks during installation. - Addon::registerHook($hookname, $file, $function); + \Friendica\Core\Hook::register($hookname, $file, $function); $hookname is a string and corresponds to a known Friendica PHP hook. @@ -74,7 +74,7 @@ If your addon requires adding a stylesheet on all pages of Friendica, add the fo ```php function _install() { - Addon::registerHook('head', __FILE__, '_head'); + \Friendica\Core\Hook::register('head', __FILE__, '_head'); ... } @@ -97,7 +97,7 @@ If your addon requires adding a script on all pages of Friendica, add the follow ```php function _install() { - Addon::registerHook('footer', __FILE__, '_footer'); + \Friendica\Core\Hook::register('footer', __FILE__, '_footer'); ... } diff --git a/doc/de/Addons.md b/doc/de/Addons.md index d63f0aa37b..d85d4d07b1 100644 --- a/doc/de/Addons.md +++ b/doc/de/Addons.md @@ -26,7 +26,7 @@ Addons sollten einen Kommentarblock mit den folgenden vier Parametern enthalten: Registriere deine Addon-Hooks während der Installation. - Addon::registerHook($hookname, $file, $function); + \Friendica\Core\Hook::register($hookname, $file, $function); $hookname ist ein String und entspricht einem bekannten Friendica-Hook. diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php index 9bae9053af..d177e81d32 100644 --- a/view/theme/frio/theme.php +++ b/view/theme/frio/theme.php @@ -10,8 +10,8 @@ use Friendica\App; use Friendica\Content\Text\Plaintext; use Friendica\Content\Widget; -use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; @@ -46,24 +46,24 @@ EOT; function frio_install() { - Addon::registerHook('prepare_body_final', 'view/theme/frio/theme.php', 'frio_item_photo_links'); - Addon::registerHook('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); - Addon::registerHook('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); - Addon::registerHook('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); - 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'); + Hook::register('prepare_body_final', 'view/theme/frio/theme.php', 'frio_item_photo_links'); + Hook::register('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); + Hook::register('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); + Hook::register('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); + Hook::register('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup'); + Hook::register('display_item', 'view/theme/frio/theme.php', 'frio_display_item'); Logger::log('installed theme frio'); } function frio_uninstall() { - Addon::unregisterHook('prepare_body_final', 'view/theme/frio/theme.php', 'frio_item_photo_links'); - Addon::unregisterHook('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); - Addon::unregisterHook('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); - Addon::unregisterHook('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); - 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'); + Hook::unregister('prepare_body_final', 'view/theme/frio/theme.php', 'frio_item_photo_links'); + Hook::unregister('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); + Hook::unregister('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); + Hook::unregister('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); + Hook::unregister('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup'); + Hook::unregister('display_item', 'view/theme/frio/theme.php', 'frio_display_item'); Logger::log('uninstalled theme frio'); } From e0777b6bc9492a01d1851c5cc2668369b46127b2 Mon Sep 17 00:00:00 2001 From: Jeroen De meerleer Date: Fri, 28 Dec 2018 22:39:07 +0100 Subject: [PATCH 102/728] forcing language by parameter --- src/Core/L10n.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Core/L10n.php b/src/Core/L10n.php index 73042c7c26..3b62a77952 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -109,7 +109,10 @@ class L10n extends BaseObject } } } - + //if $_GET['lang'] is set force $_GET['lang'] + if (isset($_GET['lang'])) { + $lang_list = [ $_GET['lang'] ]; + } // check if we have translations for the preferred languages and pick the 1st that has foreach ($lang_list as $lang) { if ($lang === 'en' || (file_exists("view/lang/$lang") && is_dir("view/lang/$lang"))) { From b440b4c338c7ae29d0f0594533c81aeabfb116a6 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sat, 29 Dec 2018 11:39:19 +0100 Subject: [PATCH 103/728] Updated towards code standards --- src/Core/L10n.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/L10n.php b/src/Core/L10n.php index 3b62a77952..74dea2d3f0 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -111,7 +111,7 @@ class L10n extends BaseObject } //if $_GET['lang'] is set force $_GET['lang'] if (isset($_GET['lang'])) { - $lang_list = [ $_GET['lang'] ]; + $lang_list = [$_GET['lang']]; } // check if we have translations for the preferred languages and pick the 1st that has foreach ($lang_list as $lang) { From 33f7fd72ca1991cb46c464e735fe5c165097f64b Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sat, 29 Dec 2018 12:15:54 +0100 Subject: [PATCH 104/728] Enable logged in users to force a certain language --- src/Core/L10n.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Core/L10n.php b/src/Core/L10n.php index 74dea2d3f0..2fcf6bf44a 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -74,6 +74,10 @@ class L10n extends BaseObject } } } + //if $_GET['lang'] is set force $_GET['lang'] + if (isset($_GET['lang'])) { + $_SESSION['language'] = $_GET['lang']; + } } public static function setLangFromSession() From ab463bbd2119d4cbe155cc2673e28f12b84a20fc Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sat, 29 Dec 2018 12:17:21 +0100 Subject: [PATCH 105/728] [doc] Added documentation on forcing locale --- doc/FAQ.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/FAQ.md b/doc/FAQ.md index 46219cce5f..5be80d3d77 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -8,6 +8,7 @@ User * **[Why do I getting warnings about certificates?](help/FAQ#ssl)** * **[How can I upload images, files, links, videos and sound files to posts?](help/FAQ#upload)** * **[Is it possible to have different avatars per profile?](help/FAQ#avatars)** +* **[How can I view Friendica in a certain language?](help/FAQ#language)** * **[What is the difference between blocked|ignored|archived|hidden contacts?](help/FAQ#contacts)** * **[What happens when an account is removed? Is it truly deleted?](help/FAQ#removed)** * **[Can I subscribe to a hashtag?](help/FAQ#hashtag)** @@ -75,6 +76,13 @@ On your Edit/Manage Profiles page, you will find a "change profile photo" link. Clicking this will take you to a page where you can upload a photograph and select which profile it will be associated with. To avoid privacy leakage, we only display the photograph associated with your default profile as the avatar in your posts. + +### How can I view Friendica in a certain language? + +You can do this by adding the `lang` parameter to the url in your url bar. The data in the parameter is a [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code. eg. https://social.example.com/profile/example translated in German becomes https://social.example.com/profile/example?lang=de. If the question mark is already in the url you need to do it using a ampersand. eg. https://social.example.com/profile/example?tab=profile becomes https://social.example.com/profile/example&lang=de. + +When a certain language is forced, the language remains until session is closed. + ### What is the difference between blocked|ignored|archived|hidden contacts? From 2bfc3d1a0c5eba668b1144bb4a9ab7351aa46b60 Mon Sep 17 00:00:00 2001 From: Jeroen De meerleer Date: Sat, 29 Dec 2018 21:35:35 +0100 Subject: [PATCH 106/728] begone --- src/Core/L10n.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Core/L10n.php b/src/Core/L10n.php index 2fcf6bf44a..dfeeeb041b 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -74,7 +74,7 @@ class L10n extends BaseObject } } } - //if $_GET['lang'] is set force $_GET['lang'] + if (isset($_GET['lang'])) { $_SESSION['language'] = $_GET['lang']; } @@ -113,10 +113,11 @@ class L10n extends BaseObject } } } - //if $_GET['lang'] is set force $_GET['lang'] + if (isset($_GET['lang'])) { $lang_list = [$_GET['lang']]; } + // check if we have translations for the preferred languages and pick the 1st that has foreach ($lang_list as $lang) { if ($lang === 'en' || (file_exists("view/lang/$lang") && is_dir("view/lang/$lang"))) { From 1d61645a16f9f8358b707b471cfc09260e6cd560 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 30 Dec 2018 12:40:44 +0100 Subject: [PATCH 107/728] Updated docs towards Tobias comments Also fixed some unclarity --- doc/FAQ.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/FAQ.md b/doc/FAQ.md index 5be80d3d77..0be98e1dca 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -79,7 +79,27 @@ To avoid privacy leakage, we only display the photograph associated with your de ### How can I view Friendica in a certain language? -You can do this by adding the `lang` parameter to the url in your url bar. The data in the parameter is a [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code. eg. https://social.example.com/profile/example translated in German becomes https://social.example.com/profile/example?lang=de. If the question mark is already in the url you need to do it using a ampersand. eg. https://social.example.com/profile/example?tab=profile becomes https://social.example.com/profile/example&lang=de. +You can do this by adding the `lang` parameter to the url in your url bar. +The data in the parameter is a [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code. +A question mark is required for the separation between url and parameters. + +Example: + + https://social.example.com/profile/example + + in German: + + https://social.example.com/profile/example?lang=de. + +If the question mark is already in the url you need to do it using a ampersand. + +Example: + + https://social.example.com/profile/example?tab=profile + + in German: + + https://social.example.com/profile/example?tab=profile&lang=de. When a certain language is forced, the language remains until session is closed. From fe8f0e00454919e3ee1150a2e75badb55a273c3a Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Sun, 30 Dec 2018 21:42:56 +0100 Subject: [PATCH 108/728] Add Monolog --- bin/auth_ejabberd.php | 5 +- bin/console.php | 6 +- bin/daemon.php | 16 ++- bin/worker.php | 5 +- composer.json | 3 +- composer.lock | 195 +++++++++++++++++++-------- include/api.php | 75 ++++++----- index.php | 8 +- mod/acl.php | 2 +- src/App.php | 29 +++- src/App/FriendicaLoggerProcessor.php | 48 +++++++ src/BaseObject.php | 7 +- src/Core/Logger.php | 69 ++++++++-- tests/src/BaseObjectTest.php | 4 +- update.php | 12 +- 15 files changed, 363 insertions(+), 121 deletions(-) create mode 100644 src/App/FriendicaLoggerProcessor.php diff --git a/bin/auth_ejabberd.php b/bin/auth_ejabberd.php index e8a7b4963f..dcc4b19591 100755 --- a/bin/auth_ejabberd.php +++ b/bin/auth_ejabberd.php @@ -33,6 +33,7 @@ */ use Friendica\App; +use Friendica\Core\Logger; use Friendica\Util\ExAuth; if (sizeof($_SERVER["argv"]) == 0) { @@ -51,7 +52,9 @@ chdir($directory); require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = Logger::create('ejabberd'); + +$a = new App(dirname(__DIR__), $logger); if ($a->getMode()->isNormal()) { $oAuth = new ExAuth(); diff --git a/bin/console.php b/bin/console.php index c39df953f2..d783e1159f 100755 --- a/bin/console.php +++ b/bin/console.php @@ -3,7 +3,11 @@ require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new Friendica\App(dirname(__DIR__)); +use Friendica\Core\Logger; + +$logger = Logger::create('console'); + +$a = new Friendica\App(dirname(__DIR__), $logger); \Friendica\BaseObject::setApp($a); (new Friendica\Core\Console($argv))->execute(); diff --git a/bin/daemon.php b/bin/daemon.php index e60e32b19e..a65502f796 100755 --- a/bin/daemon.php +++ b/bin/daemon.php @@ -32,7 +32,9 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = Logger::create('daemon'); + +$a = new App(dirname(__DIR__), $logger); if ($a->getMode()->isInstall()) { die("Friendica isn't properly installed yet.\n"); @@ -102,7 +104,7 @@ if ($mode == "stop") { unlink($pidfile); - Logger::log("Worker daemon process $pid was killed.", Logger::DEBUG); + $logger->notice("Worker daemon process was killed", ["pid" => $pid]); Config::set('system', 'worker_daemon_mode', false); die("Worker daemon process $pid was killed.\n"); @@ -112,7 +114,7 @@ if (!empty($pid) && posix_kill($pid, 0)) { die("Daemon process $pid is already running.\n"); } -Logger::log('Starting worker daemon.', Logger::DEBUG); +$logger->notice('Starting worker daemon.', ["pid" => $pid]); if (!$foreground) { echo "Starting worker daemon.\n"; @@ -160,7 +162,7 @@ $last_cron = 0; // Now running as a daemon. while (true) { if (!$do_cron && ($last_cron + $wait_interval) < time()) { - Logger::log('Forcing cron worker call.', Logger::DEBUG); + $logger->info('Forcing cron worker call.', ["pid" => $pid]); $do_cron = true; } @@ -174,7 +176,7 @@ while (true) { $last_cron = time(); } - Logger::log("Sleeping", Logger::DEBUG); + $logger->info("Sleeping", ["pid" => $pid]); $start = time(); do { $seconds = (time() - $start); @@ -191,10 +193,10 @@ while (true) { if ($timeout) { $do_cron = true; - Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG); + $logger->info("Woke up after $wait_interval seconds.", ["pid" => $pid, 'sleep' => $wait_interval]); } else { $do_cron = false; - Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG); + $logger->info("Worker jobs are calling to be forked.", ["pid" => $pid]); } } diff --git a/bin/worker.php b/bin/worker.php index 78b7a58a05..5b5e949757 100755 --- a/bin/worker.php +++ b/bin/worker.php @@ -6,6 +6,7 @@ */ use Friendica\App; use Friendica\Core\Config; +use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Core\Update; @@ -28,7 +29,9 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = Logger::create('worker'); + +$a = new App(dirname(__DIR__), $logger); // Check the database structure and possibly fixes it Update::check(true); diff --git a/composer.json b/composer.json index 8ac4c37724..2f254877de 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,8 @@ "npm-asset/jgrowl": "^1.4", "npm-asset/fullcalendar": "^3.0.1", "npm-asset/cropperjs": "1.2.2", - "npm-asset/imagesloaded": "4.1.4" + "npm-asset/imagesloaded": "4.1.4", + "monolog/monolog": "^1.24" }, "repositories": [ { diff --git a/composer.lock b/composer.lock index 759ef65778..96a244b7d7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51f7b3ab622038d7ef62ed03c06b48d0", + "content-hash": "8cf7268fbcae8a22a518b9e7727eab84", "packages": [ { "name": "asika/simple-console", @@ -809,6 +809,84 @@ ], "time": "2018-09-01T15:05:15+00:00" }, + { + "name": "monolog/monolog", + "version": "1.24.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2018-11-05T09:00:11+00:00" + }, { "name": "npm-asset/cropperjs", "version": "1.2.2", @@ -1019,22 +1097,6 @@ "require": { "npm-asset/ev-emitter": ">=1.0.0,<2.0.0" }, - "require-dev": { - "npm-asset/chalk": ">=1.1.1,<2.0.0", - "npm-asset/cheerio": ">=0.19.0,<0.20.0", - "npm-asset/gulp": ">=3.9.0,<4.0.0", - "npm-asset/gulp-jshint": ">=1.11.2,<2.0.0", - "npm-asset/gulp-json-lint": ">=0.1.0,<0.2.0", - "npm-asset/gulp-rename": ">=1.2.2,<2.0.0", - "npm-asset/gulp-replace": ">=0.5.4,<0.6.0", - "npm-asset/gulp-requirejs-optimize": "dev-github:metafizzy/gulp-requirejs-optimize", - "npm-asset/gulp-uglify": ">=1.4.2,<2.0.0", - "npm-asset/gulp-util": ">=3.0.7,<4.0.0", - "npm-asset/highlight.js": ">=8.9.1,<9.0.0", - "npm-asset/marked": ">=0.3.5,<0.4.0", - "npm-asset/minimist": ">=1.2.0,<2.0.0", - "npm-asset/transfob": ">=1.0.0,<2.0.0" - }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1080,14 +1142,6 @@ "reference": null, "shasum": "2736e332aaee73ccf0a14a5f0066391a0a13f4a3" }, - "require-dev": { - "npm-asset/grunt": "~0.4.2", - "npm-asset/grunt-contrib-cssmin": "~0.9.0", - "npm-asset/grunt-contrib-jshint": "~0.6.3", - "npm-asset/grunt-contrib-less": "~0.11.0", - "npm-asset/grunt-contrib-uglify": "~0.4.0", - "npm-asset/grunt-contrib-watch": "~0.6.1" - }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1121,32 +1175,6 @@ "reference": null, "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02" }, - "require-dev": { - "npm-asset/commitplease": "2.0.0", - "npm-asset/core-js": "0.9.17", - "npm-asset/grunt": "0.4.5", - "npm-asset/grunt-babel": "5.0.1", - "npm-asset/grunt-cli": "0.1.13", - "npm-asset/grunt-compare-size": "0.4.0", - "npm-asset/grunt-contrib-jshint": "0.11.2", - "npm-asset/grunt-contrib-uglify": "0.9.2", - "npm-asset/grunt-contrib-watch": "0.6.1", - "npm-asset/grunt-git-authors": "2.0.1", - "npm-asset/grunt-jscs": "2.1.0", - "npm-asset/grunt-jsonlint": "1.0.4", - "npm-asset/grunt-npmcopy": "0.1.0", - "npm-asset/gzip-js": "0.3.2", - "npm-asset/jsdom": "5.6.1", - "npm-asset/load-grunt-tasks": "1.0.0", - "npm-asset/qunit-assert-step": "1.0.3", - "npm-asset/qunitjs": "1.17.1", - "npm-asset/requirejs": "2.1.17", - "npm-asset/sinon": "1.10.3", - "npm-asset/sizzle": "2.2.1", - "npm-asset/strip-json-comments": "1.0.3", - "npm-asset/testswarm": "1.1.0", - "npm-asset/win-spawn": "2.0.0" - }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1244,6 +1272,18 @@ "npm-asset/jquery-mousewheel": ">=3.1.13", "npm-asset/php-date-formatter": ">=1.3.4,<2.0.0" }, + "require-dev": { + "npm-asset/chai": ">=4.1.2,<5.0.0", + "npm-asset/concat": "dev-github:azer/concat", + "npm-asset/concat-cli": ">=4.0.0,<5.0.0", + "npm-asset/karma": ">=2.0.0,<3.0.0", + "npm-asset/karma-chai": ">=0.1.0,<0.2.0", + "npm-asset/karma-firefox-launcher": ">=1.1.0,<2.0.0", + "npm-asset/karma-mocha": ">=1.3.0,<2.0.0", + "npm-asset/mocha": ">=5.0.4,<6.0.0", + "npm-asset/uglifycss": ">=0.0.27,<0.0.28", + "npm-asset/uglifyjs": ">=2.4.10,<3.0.0" + }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1297,12 +1337,6 @@ "reference": null, "shasum": "06f0335f16e353a695e7206bf50503cb523a6ee5" }, - "require-dev": { - "npm-asset/grunt": "~0.4.1", - "npm-asset/grunt-contrib-connect": "~0.5.0", - "npm-asset/grunt-contrib-jshint": "~0.7.1", - "npm-asset/grunt-contrib-uglify": "~0.2.7" - }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1854,6 +1888,53 @@ ], "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, { "name": "seld/cli-prompt", "version": "1.0.3", diff --git a/include/api.php b/include/api.php index f28f182532..2085c801b8 100644 --- a/include/api.php +++ b/include/api.php @@ -181,7 +181,7 @@ function api_login(App $a) var_dump($consumer, $token); die(); } catch (Exception $e) { - Logger::log($e); + $a->getLogger()->warning('API login: error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); } // workaround for HTTP-auth in CGI mode @@ -195,7 +195,7 @@ function api_login(App $a) } if (empty($_SERVER['PHP_AUTH_USER'])) { - Logger::log('API_login: ' . print_r($_SERVER, true), Logger::DEBUG); + $a->getLogger()->debug('API login: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); throw new UnauthorizedException("This API requires login"); } @@ -236,7 +236,7 @@ function api_login(App $a) } if (!DBA::isResult($record)) { - Logger::log('API_login failure: ' . print_r($_SERVER, true), Logger::DEBUG); + $a->getLogger()->debug('API login: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); //header('HTTP/1.0 401 Unauthorized'); //die('This api requires login'); @@ -309,33 +309,35 @@ function api_call(App $a) api_login($a); } - Logger::log('API call for ' . $a->user['username'] . ': ' . $a->query_string); - Logger::log('API parameters: ' . print_r($_REQUEST, true)); + $a->getLogger()->info('API call', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); + $a->getLogger()->debug('API parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); $stamp = microtime(true); $return = call_user_func($info['func'], $type); $duration = (float) (microtime(true) - $stamp); - Logger::log("API call duration: " . round($duration, 2) . "\t" . $a->query_string, Logger::DEBUG); + + $a->getLogger()->info('API call', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); if (Config::get("system", "profiler")) { $duration = microtime(true)-$a->performance["start"]; /// @TODO round() really everywhere? - 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), - round($a->performance["database_write"], 3), - round($a->performance["cache"], 3), - round($a->performance["cache_write"], 3), - round($a->performance["network"], 2), - round($a->performance["file"], 2), - round($duration - ($a->performance["database"] - + $a->performance["cache"] + $a->performance["cache_write"] - + $a->performance["network"] + $a->performance["file"]), 2), - round($duration, 2) - ), - Logger::DEBUG + $a->getLogger()->debug( + 'API call performance', + [ + 'module' => 'api', + 'action' => 'performance', + 'database_read' => round($a->performance["database"] - $a->performance["database_write"], 3), + 'database_write' => round($a->performance["database_write"], 3), + 'cache_read' => round($a->performance["cache"], 3), + 'cache_write' => round($a->performance["cache_write"], 3), + 'network_io' => round($a->performance["network"], 2), + 'file_io' => round($a->performance["file"], 2), + 'other_io' => round($duration - ($a->performance["database"] + + $a->performance["cache"] + $a->performance["cache_write"] + + $a->performance["network"] + $a->performance["file"]), 2), + 'total' => round($duration, 2) + ] ); if (Config::get("rendertime", "callstack")) { @@ -376,7 +378,7 @@ function api_call(App $a) $o .= $func . ": " . $time . "\n"; } } - Logger::log($o, Logger::DEBUG); + $a->getLogger()->debug($o, ['module' => 'api', 'action' => 'performance']); } } @@ -413,7 +415,7 @@ function api_call(App $a) } } - Logger::log('API call not implemented: ' . $a->query_string); + $a->getLogger()->warning('API call not implemented'); throw new NotImplementedException(); } catch (HTTPException $e) { header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}"); @@ -522,7 +524,7 @@ function api_get_user(App $a, $contact_id = null) $extra_query = ""; $url = ""; - Logger::log("api_get_user: Fetching user data for user ".$contact_id, Logger::DEBUG); + $a->getLogger()->info('api_get_user: Fetching user data', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); // Searching for contact URL if (!is_null($contact_id) && (intval($contact_id) == 0)) { @@ -606,7 +608,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::log("api_get_user: user ".$user, Logger::DEBUG); + $a->getLogger()->info('api_get_user: getting user', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); if (!$user) { if (api_user() === false) { @@ -618,7 +620,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::log('api_user: ' . $extra_query . ', user: ' . $user); + $a->getLogger()->info('api_get_user: found user', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); // user info $uinfo = q( @@ -1937,7 +1939,7 @@ function api_conversation_show($type) $id = intval(defaults($a->argv, 4, 0)); } - Logger::log('API: api_conversation_show: '.$id); + $a->getLogger()->info('API: api_conversation_show', ['module' => 'api', 'action' => 'conversation', 'id' => $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]); @@ -2331,7 +2333,7 @@ function api_favorites($type) // in friendica starred item are private // return favorites only for self - Logger::log('api_favorites: self:' . $user_info['self']); + $a->getLogger()->info('API: api_favorites', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); if ($user_info['self'] == 0) { $ret = []; @@ -3686,6 +3688,7 @@ api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', function api_friendships_destroy($type) { $uid = api_user(); + $a = get_app(); if ($uid === false) { throw new ForbiddenException(); @@ -3694,7 +3697,7 @@ function api_friendships_destroy($type) $contact_id = defaults($_REQUEST, 'user_id'); if (empty($contact_id)) { - Logger::log("No user_id specified", Logger::DEBUG); + $a->getLogger()->notice('No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); throw new BadRequestException("no user_id specified"); } @@ -3702,7 +3705,7 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]); if(!DBA::isResult($contact)) { - Logger::log("No contact found for ID" . $contact_id, Logger::DEBUG); + $a->getLogger()->notice('No contact found for ID', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); throw new NotFoundException("no contact found to given ID"); } @@ -3714,12 +3717,12 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', [], $condition); if (!DBA::isResult($contact)) { - Logger::log("Not following Contact", Logger::DEBUG); + $a->getLogger()->notice('Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); throw new NotFoundException("Not following Contact"); } if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { - Logger::log("Not supported", Logger::DEBUG); + $a->getLogger()->notice('Not supported', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); throw new ExpectationFailedException("Not supported"); } @@ -3730,7 +3733,7 @@ function api_friendships_destroy($type) Contact::terminateFriendship($owner, $contact, $dissolve); } else { - Logger::log("No owner found", Logger::DEBUG); + $a->getLogger()->notice('No owner found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); throw new NotFoundException("Error Processing Request"); } @@ -4837,7 +4840,8 @@ function api_friendica_remoteauth() 'sec' => $sec, 'expire' => time() + 45]; DBA::insert('profile_check', $fields); - Logger::log($contact['name'] . ' ' . $sec, Logger::DEBUG); + $a = get_app(); + $a->getLogger()->info('API: friendica_remoteauth', ['module' => 'api', 'action' => 'remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); $dest = ($url ? '&destination_url=' . $url : ''); System::externalRedirect( @@ -5086,7 +5090,8 @@ function api_in_reply_to($item) // https://github.com/friendica/friendica/issues/1010 // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { - Logger::log('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], Logger::DEBUG); + $a = get_app(); + $a->getLogger()->warning('ID is similar to reply-to', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); $in_reply_to['status_id'] = null; $in_reply_to['user_id'] = null; $in_reply_to['status_id_str'] = null; diff --git a/index.php b/index.php index b5b66da794..d4480549d7 100644 --- a/index.php +++ b/index.php @@ -4,15 +4,19 @@ * Friendica */ +use Friendica\App; +use Friendica\Core\Logger; + if (!file_exists(__DIR__ . '/vendor/autoload.php')) { die('Vendor path not found. Please execute "bin/composer.phar --no-dev install" on the command line in the web root.'); } require __DIR__ . '/vendor/autoload.php'; +$logger = Logger::create('app'); + // We assume that the index.php is called by a frontend process // The value is set to "true" by default in App -$a = new Friendica\App(__DIR__, false); +$a = new App(__DIR__, $logger, false); $a->runFrontend(); - diff --git a/mod/acl.php b/mod/acl.php index fc67556739..e7445a995b 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -34,7 +34,7 @@ function acl_content(App $a) $search = $_REQUEST['query']; } - Logger::log("Searching for ".$search." - type ".$type." conversation ".$conv_id, Logger::DEBUG); + $a->getLogger()->info("Searching for " . $search . " - type " . $type . " conversation " . $conv_id); if ($search != '') { $sql_extra = "AND `name` LIKE '%%" . DBA::escape($search) . "%%'"; diff --git a/src/App.php b/src/App.php index df350542ad..793590bae4 100644 --- a/src/App.php +++ b/src/App.php @@ -8,8 +8,10 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; +use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; +use Monolog; /** * @@ -106,6 +108,11 @@ class App */ public $mobileDetect; + /** + * @var Monolog\Logger The current logger of this App + */ + private $logger; + /** * Register a stylesheet file path to be included in the tag of every page. * Inclusion is done in App->initHead(). @@ -147,12 +154,15 @@ class App * @brief App constructor. * * @param string $basePath Path to the app base folder + * @param Monolog\Logger Logger of this application * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) * * @throws Exception if the Basepath is not usable */ - public function __construct($basePath, $isBackend = true) + public function __construct($basePath, $logger, $isBackend = true) { + $this->logger = $logger; + if (!static::isDirectoryUsable($basePath, false)) { throw new Exception('Basepath ' . $basePath . ' isn\'t usable.'); } @@ -301,6 +311,21 @@ class App return $this->mode; } + /** + * Returns the Logger of the Application + * + * @return Monolog\Logger The Logger + * @throws InternalServerErrorException when the logger isn't created + */ + public function getLogger() + { + if (empty($this->logger)) { + throw new InternalServerErrorException('Logger of the Application is not defined'); + } + + return $this->logger; + } + /** * Reloads the whole app instance */ @@ -328,6 +353,8 @@ class App Core\L10n::init(); $this->process_id = Core\System::processID('log'); + + Logger::loadDefaultHandler($this->logger, $this); } /** diff --git a/src/App/FriendicaLoggerProcessor.php b/src/App/FriendicaLoggerProcessor.php new file mode 100644 index 0000000000..bb359c9945 --- /dev/null +++ b/src/App/FriendicaLoggerProcessor.php @@ -0,0 +1,48 @@ +process_id" + * + * @package Friendica\App + */ +class FriendicaLoggerProcessor implements ProcessorInterface +{ + /** + * @var string the ID of the current Friendica process + */ + private $processId = null; + + /** + * Set the process id based on the Application instance + * + * @param string $processId the process id + */ + public function setProcessId($processId) + { + if (!isset($this->processId) || $this->processId == '') + { + $this->processId = $processId; + } + } + + public function __construct() + { + $this->processId = session_id(); + } + + public function __invoke(array $records) + { + $records['extra'] = array_merge( + $records['extra'], + [ + 'app_id' => $this->processId, + ] + ); + + return $records; + } +} diff --git a/src/BaseObject.php b/src/BaseObject.php index 33ed677546..d8d36e37b9 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -4,6 +4,10 @@ */ namespace Friendica; +require_once 'boot.php'; + +use Friendica\Core\Logger; + /** * Basic object * @@ -23,7 +27,8 @@ class BaseObject public static function getApp() { if (empty(self::$app)) { - self::$app = new App(dirname(__DIR__)); + $logger = Logger::create('app'); + self::$app = new App(dirname(__DIR__), $logger); } return self::$app; diff --git a/src/Core/Logger.php b/src/Core/Logger.php index f9cb8cde01..3d5d9fb50a 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -4,23 +4,72 @@ */ namespace Friendica\Core; +use Friendica\App; use Friendica\BaseObject; -use Friendica\Core\Config; +use Monolog; use Friendica\Util\DateTimeFormat; -use ReflectionClass; /** * @brief Logger functions */ class Logger extends BaseObject { + /** + * Creates a basic Monolog instance for logging. + * + * @param string $application the current application name (index, daemon, ...) + * + * @return Monolog\Logger The Logger instance + */ + public static function create($application) + { + $logger = new Monolog\Logger($application); + + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor()); + $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + $logger->pushProcessor(new Monolog\Processor\WebProcessor()); + $logger->pushProcessor(new App\FriendicaLoggerProcessor()); + + return $logger; + } + + /** + * Sets the default Logging handler for this instance. + * Can be combined with other handlers too if necessary. + * + * @param Monolog\Logger $logger The Logger instance of this Application + * @param App $app The Friendica Application + */ + public static function loadDefaultHandler($logger, $app) + { + foreach ($logger->getProcessors() as $processor) { + if ($processor instanceof App\FriendicaLoggerProcessor) { + $processor->setProcessId($app->process_id); + } + } + + $debugging = Config::get('system', 'debugging'); + $logfile = Config::get('system', 'logfile'); + $loglevel = intval(Config::get('system', 'loglevel')); + + if (!$debugging || !$logfile) { + return; + } + + $fileHandler = new Monolog\Handler\StreamHandler($logfile . ".1", $loglevel); + $logger->pushHandler($fileHandler); + } + // Log levels: - const WARNING = 0; - const INFO = 1; - const TRACE = 2; - const DEBUG = 3; - const DATA = 4; - const ALL = 5; + //EMERGENCY + //ALERT + //CRITICAL + const WARNING = 0; //ERROR + const INFO = 1; //WARNING + const TRACE = 2; //NOTICE(default) + const DEBUG = 3; //INFO + const DATA = 4; //INFO + const ALL = 5; //DEBUG public static $levels = [ self::WARNING => 'Warning', @@ -36,6 +85,8 @@ class Logger extends BaseObject * * @param string $msg * @param int $level + * + * @deprecated since 2019.03 - use App->getLogger() instead */ public static function log($msg, $level = self::INFO) { @@ -90,6 +141,8 @@ class Logger extends BaseObject * personally without background noise * * @param string $msg + * + * * @deprecated since 2019.03 - never used */ public static function devLog($msg) { diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index f8542f7b38..9bee2fb8e5 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,6 +7,7 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; +use Monolog\Logger; use PHPUnit\Framework\TestCase; /** @@ -38,7 +39,8 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $app = new App(__DIR__ . '/../../'); + $logger = Logger::create('test', 'baseobject'); + $app = new App(__DIR__ . '/../../', $logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); } diff --git a/update.php b/update.php index 2663da21f0..dfda259797 100644 --- a/update.php +++ b/update.php @@ -1,9 +1,9 @@ $key], ['id' => $data['id']]); - logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . - ' (was: ' . $data[$translateKey] . ')'); + BaseObject::getApp() + ->getLogger() + ->notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key, + 'was' => $data[$translateKey]]); Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); Contact::updateSelfFromUserID($data['id']); GContact::updateForUser($data['id']); @@ -342,7 +344,9 @@ function update_1298() } } - Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + BaseObject::getApp() + ->getLogger() + ->notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]); } return Update::SUCCESS; } From 438f31ff05f689bb9277e506175d46fda23ad5cb Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Sun, 30 Dec 2018 22:21:05 +0100 Subject: [PATCH 109/728] Fixed BaseObjectTest --- tests/src/BaseObjectTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index 9bee2fb8e5..7e14c71b72 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,7 +7,7 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; -use Monolog\Logger; +use Friendica\Core\Logger; use PHPUnit\Framework\TestCase; /** @@ -39,7 +39,7 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $logger = Logger::create('test', 'baseobject'); + $logger = Logger::create('test'); $app = new App(__DIR__ . '/../../', $logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); From 1702cb73e714a5aea295b31cd2cc2c07c0b973be Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Mon, 31 Dec 2018 11:31:39 +0100 Subject: [PATCH 110/728] Updated towards tobias comments --- doc/FAQ.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/FAQ.md b/doc/FAQ.md index 0be98e1dca..562ff681b7 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -86,9 +86,9 @@ A question mark is required for the separation between url and parameters. Example: https://social.example.com/profile/example - - in German: - + +in German: + https://social.example.com/profile/example?lang=de. If the question mark is already in the url you need to do it using a ampersand. @@ -96,9 +96,9 @@ If the question mark is already in the url you need to do it using a ampersand. Example: https://social.example.com/profile/example?tab=profile - - in German: - + +in German: + https://social.example.com/profile/example?tab=profile&lang=de. When a certain language is forced, the language remains until session is closed. From 8f9c0fe14956efbcaf0db9dbfb83222e18e0ab2f Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 17:42:08 +0100 Subject: [PATCH 111/728] Adding Develop and normal Logging instances --- bin/auth_ejabberd.php | 4 +- bin/console.php | 4 +- bin/daemon.php | 4 +- bin/worker.php | 4 +- index.php | 4 +- src/App.php | 15 +- src/App/FriendicaLoggerProcessor.php | 48 --- src/BaseObject.php | 4 +- src/Core/Addon.php | 11 +- src/Core/Logger.php | 425 ++++++++++++++------ src/Util/Logger/FriendicaDevelopHandler.php | 50 +++ src/Util/LoggerFactory.php | 81 ++++ tests/src/BaseObjectTest.php | 4 +- update.php | 10 +- 14 files changed, 454 insertions(+), 214 deletions(-) delete mode 100644 src/App/FriendicaLoggerProcessor.php create mode 100644 src/Util/Logger/FriendicaDevelopHandler.php create mode 100644 src/Util/LoggerFactory.php diff --git a/bin/auth_ejabberd.php b/bin/auth_ejabberd.php index dcc4b19591..a6f30d2019 100755 --- a/bin/auth_ejabberd.php +++ b/bin/auth_ejabberd.php @@ -33,8 +33,8 @@ */ use Friendica\App; -use Friendica\Core\Logger; use Friendica\Util\ExAuth; +use Friendica\Util\LoggerFactory; if (sizeof($_SERVER["argv"]) == 0) { die(); @@ -52,7 +52,7 @@ chdir($directory); require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = Logger::create('ejabberd'); +$logger = LoggerFactory::create('auth_ejabberd'); $a = new App(dirname(__DIR__), $logger); diff --git a/bin/console.php b/bin/console.php index d783e1159f..9264e3eee4 100755 --- a/bin/console.php +++ b/bin/console.php @@ -3,9 +3,9 @@ require dirname(__DIR__) . '/vendor/autoload.php'; -use Friendica\Core\Logger; +use Friendica\Util\LoggerFactory; -$logger = Logger::create('console'); +$logger = LoggerFactory::create('console'); $a = new Friendica\App(dirname(__DIR__), $logger); \Friendica\BaseObject::setApp($a); diff --git a/bin/daemon.php b/bin/daemon.php index a65502f796..c7b321c11c 100755 --- a/bin/daemon.php +++ b/bin/daemon.php @@ -9,9 +9,9 @@ use Friendica\App; use Friendica\Core\Config; -use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Util\LoggerFactory; // Get options $shortopts = 'f'; @@ -32,7 +32,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = Logger::create('daemon'); +$logger = LoggerFactory::create('daemon'); $a = new App(dirname(__DIR__), $logger); diff --git a/bin/worker.php b/bin/worker.php index 5b5e949757..a64b6a8330 100755 --- a/bin/worker.php +++ b/bin/worker.php @@ -6,9 +6,9 @@ */ use Friendica\App; use Friendica\Core\Config; -use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Core\Update; +use Friendica\Util\LoggerFactory; // Get options $shortopts = 'sn'; @@ -29,7 +29,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = Logger::create('worker'); +$logger = LoggerFactory::create('worker'); $a = new App(dirname(__DIR__), $logger); diff --git a/index.php b/index.php index d4480549d7..c0a891bfdd 100644 --- a/index.php +++ b/index.php @@ -5,7 +5,7 @@ */ use Friendica\App; -use Friendica\Core\Logger; +use Friendica\Util\LoggerFactory; if (!file_exists(__DIR__ . '/vendor/autoload.php')) { die('Vendor path not found. Please execute "bin/composer.phar --no-dev install" on the command line in the web root.'); @@ -13,7 +13,7 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) { require __DIR__ . '/vendor/autoload.php'; -$logger = Logger::create('app'); +$logger = LoggerFactory::create('app'); // We assume that the index.php is called by a frontend process // The value is set to "true" by default in App diff --git a/src/App.php b/src/App.php index 793590bae4..1fb79decea 100644 --- a/src/App.php +++ b/src/App.php @@ -8,10 +8,9 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; -use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; -use Monolog; +use Psr\Log\LoggerInterface; /** * @@ -109,7 +108,7 @@ class App public $mobileDetect; /** - * @var Monolog\Logger The current logger of this App + * @var LoggerInterface The current logger of this App */ private $logger; @@ -153,9 +152,9 @@ class App /** * @brief App constructor. * - * @param string $basePath Path to the app base folder - * @param Monolog\Logger Logger of this application - * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) + * @param string $basePath Path to the app base folder + * @param LoggerInterface $logger Logger of this application + * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) * * @throws Exception if the Basepath is not usable */ @@ -314,7 +313,7 @@ class App /** * Returns the Logger of the Application * - * @return Monolog\Logger The Logger + * @return LoggerInterface The Logger * @throws InternalServerErrorException when the logger isn't created */ public function getLogger() @@ -354,7 +353,7 @@ class App $this->process_id = Core\System::processID('log'); - Logger::loadDefaultHandler($this->logger, $this); + Core\Logger::setLogger($this->logger); } /** diff --git a/src/App/FriendicaLoggerProcessor.php b/src/App/FriendicaLoggerProcessor.php deleted file mode 100644 index bb359c9945..0000000000 --- a/src/App/FriendicaLoggerProcessor.php +++ /dev/null @@ -1,48 +0,0 @@ -process_id" - * - * @package Friendica\App - */ -class FriendicaLoggerProcessor implements ProcessorInterface -{ - /** - * @var string the ID of the current Friendica process - */ - private $processId = null; - - /** - * Set the process id based on the Application instance - * - * @param string $processId the process id - */ - public function setProcessId($processId) - { - if (!isset($this->processId) || $this->processId == '') - { - $this->processId = $processId; - } - } - - public function __construct() - { - $this->processId = session_id(); - } - - public function __invoke(array $records) - { - $records['extra'] = array_merge( - $records['extra'], - [ - 'app_id' => $this->processId, - ] - ); - - return $records; - } -} diff --git a/src/BaseObject.php b/src/BaseObject.php index d8d36e37b9..39f98a38fd 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -6,7 +6,7 @@ namespace Friendica; require_once 'boot.php'; -use Friendica\Core\Logger; +use Friendica\Util\LoggerFactory; /** * Basic object @@ -27,7 +27,7 @@ class BaseObject public static function getApp() { if (empty(self::$app)) { - $logger = Logger::create('app'); + $logger = $logger = LoggerFactory::create('app'); self::$app = new App(dirname(__DIR__), $logger); } diff --git a/src/Core/Addon.php b/src/Core/Addon.php index a06982820e..ee89f4d772 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -4,9 +4,7 @@ */ namespace Friendica\Core; -use Friendica\App; use Friendica\BaseObject; -use Friendica\Core\Logger; use Friendica\Database\DBA; /** @@ -76,7 +74,7 @@ class Addon extends BaseObject */ public static function uninstall($addon) { - Logger::log("Addons: uninstalling " . $addon); + Logger::notice("Addon {addon}: {action}", ['action' => 'uninstall', 'addon' => $addon]); DBA::delete('addon', ['name' => $addon]); @include_once('addon/' . $addon . '/' . $addon . '.php'); @@ -101,7 +99,7 @@ class Addon extends BaseObject if (!file_exists('addon/' . $addon . '/' . $addon . '.php')) { return false; } - Logger::log("Addons: installing " . $addon); + Logger::notice("Addon {addon}: {action}", ['action' => 'install', 'addon' => $addon]); $t = @filemtime('addon/' . $addon . '/' . $addon . '.php'); @include_once('addon/' . $addon . '/' . $addon . '.php'); if (function_exists($addon . '_install')) { @@ -126,7 +124,7 @@ class Addon extends BaseObject } return true; } else { - Logger::log("Addons: FAILED installing " . $addon); + Logger::error("Addon {addon}: {action} failed", ['action' => 'uninstall', 'addon' => $addon]); return false; } } @@ -156,7 +154,8 @@ class Addon extends BaseObject $t = @filemtime($fname); foreach ($installed as $i) { if (($i['name'] == $addon) && ($i['timestamp'] != $t)) { - Logger::log('Reloading addon: ' . $i['name']); + + Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $i['name']]); @include_once($fname); if (function_exists($addon . '_uninstall')) { diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 3d5d9fb50a..6102baa5a5 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -4,10 +4,11 @@ */ namespace Friendica\Core; -use Friendica\App; use Friendica\BaseObject; -use Monolog; -use Friendica\Util\DateTimeFormat; +use Friendica\Network\HTTPException\InternalServerErrorException; +use Friendica\Util\LoggerFactory; +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; /** * @brief Logger functions @@ -15,70 +16,298 @@ use Friendica\Util\DateTimeFormat; class Logger extends BaseObject { /** - * Creates a basic Monolog instance for logging. - * - * @param string $application the current application name (index, daemon, ...) - * - * @return Monolog\Logger The Logger instance + * @deprecated 2019.03 use Logger::error() instead + * @see Logger::error() */ - public static function create($application) - { - $logger = new Monolog\Logger($application); - - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor()); - $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); - $logger->pushProcessor(new Monolog\Processor\WebProcessor()); - $logger->pushProcessor(new App\FriendicaLoggerProcessor()); - - return $logger; - } + const WARNING = 0; + /** + * @deprecated 2019.03 use Logger::warning() instead + * @see Logger::warning() + */ + const INFO = 1; + /** + * @deprecated 2019.03 use Logger::notice() instead + * @see Logger::notice() + */ + const TRACE = 2; + /** + * @deprecated 2019.03 use Logger::info() instead + * @see Logger::info() + */ + const DEBUG = 3; + /** + * @deprecated 2019.03 use Logger::debug() instead + * @see Logger::debug() + */ + const DATA = 4; + /** + * @deprecated 2019.03 use Logger::debug() instead + * @see Logger::debug() + */ + const ALL = 5; /** - * Sets the default Logging handler for this instance. - * Can be combined with other handlers too if necessary. + * @var array the legacy loglevels + * @deprecated 2019.03 use PSR-3 loglevels + * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel * - * @param Monolog\Logger $logger The Logger instance of this Application - * @param App $app The Friendica Application */ - public static function loadDefaultHandler($logger, $app) - { - foreach ($logger->getProcessors() as $processor) { - if ($processor instanceof App\FriendicaLoggerProcessor) { - $processor->setProcessId($app->process_id); - } - } + public static $levels = [ + self::WARNING => 'Warning', + self::INFO => 'Info', + self::TRACE => 'Trace', + self::DEBUG => 'Debug', + self::DATA => 'Data', + self::ALL => 'All', + ]; + /** + * @var LoggerInterface A PSR-3 compliant logger instance + */ + private static $logger; + + /** + * @var LoggerInterface A PSR-3 compliant logger instance for developing only + */ + private static $devLogger; + + /** + * Sets the default logging handler for Friendica. + * @todo Can be combined with other handlers too if necessary, could be configurable. + * + * @param LoggerInterface $logger The Logger instance of this Application + * + * @throws InternalServerErrorException if the logger factory is incompatible to this logger + */ + public static function setLogger($logger) + { $debugging = Config::get('system', 'debugging'); - $logfile = Config::get('system', 'logfile'); + $logfile = Config::get('system', 'logfile'); $loglevel = intval(Config::get('system', 'loglevel')); if (!$debugging || !$logfile) { return; } - $fileHandler = new Monolog\Handler\StreamHandler($logfile . ".1", $loglevel); - $logger->pushHandler($fileHandler); + LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); + + $logfile = Config::get('system', 'dlogfile'); + + if (!$logfile) { + return; + } + + $developIp = Config::get('system', 'dlogip'); + + self::$devLogger = LoggerFactory::createDev('develop', $developIp); + LoggerFactory::addStreamHandler(self::$devLogger, $logfile, LogLevel::DEBUG); } - // Log levels: - //EMERGENCY - //ALERT - //CRITICAL - const WARNING = 0; //ERROR - const INFO = 1; //WARNING - const TRACE = 2; //NOTICE(default) - const DEBUG = 3; //INFO - const DATA = 4; //INFO - const ALL = 5; //DEBUG + /** + * System is unusable. + * @see LoggerInterface::emergency() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function emergency($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } - public static $levels = [ - self::WARNING => 'Warning', - self::INFO => 'Info', - self::TRACE => 'Trace', - self::DEBUG => 'Debug', - self::DATA => 'Data', - self::ALL => 'All', - ]; + $stamp1 = microtime(true); + self::$logger->emergency($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Action must be taken immediately. + * @see LoggerInterface::alert() + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function alert($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->alert($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Critical conditions. + * @see LoggerInterface::critical() + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function critical($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->critical($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * @see LoggerInterface::error() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function error($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->error($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Exceptional occurrences that are not errors. + * @see LoggerInterface::warning() + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function warning($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->warning($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Normal but significant events. + * @see LoggerInterface::notice() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function notice($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->notice($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Interesting events. + * @see LoggerInterface::info() + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function info($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->info($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Detailed debug information. + * @see LoggerInterface::debug() + * + * @param string $message + * @param array $context + * + * @return void + */ + public static function debug($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->debug($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Mapping a legacy level to the PSR-3 compliant levels + * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel + * + * @param int $level the level to be mapped + * + * @return string the PSR-3 compliant level + */ + private static function mapPSR3Level($level) + { + switch ($level) { + case self::WARNING: + return LogLevel::ERROR; + case self::INFO: + return LogLevel::WARNING; + case self::TRACE: + return LogLevel::NOTICE; + case self::DEBUG: + return LogLevel::INFO; + case self::DATA: + return LogLevel::DEBUG; + case self::ALL: + return LogLevel::DEBUG; + default: + return LogLevel::CRITICAL; + } + } /** * @brief Logs the given message at the given log level @@ -86,52 +315,19 @@ class Logger extends BaseObject * @param string $msg * @param int $level * - * @deprecated since 2019.03 - use App->getLogger() instead + * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead */ public static function log($msg, $level = self::INFO) { - $a = self::getApp(); + if (!isset(self::$logger)) { + return; + } - $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 - ); + $loglevel = self::mapPSR3Level($level); $stamp1 = microtime(true); - @file_put_contents($logfile, $logline, FILE_APPEND); - $a->saveTimestamp($stamp1, "file"); + self::$logger->log($loglevel, $msg); + self::getApp()->saveTimestamp($stamp1, "file"); } /** @@ -141,49 +337,16 @@ class Logger extends BaseObject * personally without background noise * * @param string $msg - * - * * @deprecated since 2019.03 - never used + * @param string $level */ - public static function devLog($msg) + public static function devLog($msg, $level = LogLevel::DEBUG) { - $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; - } - - if (!is_string($msg)) { - $msg = var_export($msg, true); - } - - $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 - ); + if (!isset(self::$logger)) { + return; + } $stamp1 = microtime(true); - @file_put_contents($logfile, $logline, FILE_APPEND); - $a->saveTimestamp($stamp1, "file"); + self::$devLogger->log($level, $msg); + self::getApp()->saveTimestamp($stamp1, "file"); } } diff --git a/src/Util/Logger/FriendicaDevelopHandler.php b/src/Util/Logger/FriendicaDevelopHandler.php new file mode 100644 index 0000000000..908d7052cc --- /dev/null +++ b/src/Util/Logger/FriendicaDevelopHandler.php @@ -0,0 +1,50 @@ +developerIp = $developerIp; + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return false; + } + + /// Just in case the remote IP is the same as the developer IP log the output + if (!is_null($this->developerIp) && $_SERVER['REMOTE_ADDR'] != $this->developerIp) + { + return false; + } + + return false === $this->bubble; + } +} diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php new file mode 100644 index 0000000000..ac6f6c92df --- /dev/null +++ b/src/Util/LoggerFactory.php @@ -0,0 +1,81 @@ +pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + + return $logger; + } + + /** + * Creates a new PSR-3 compliant develop logger + * + * If you want to debug only interactions from your IP or the IP of a remote server for federation debug, + * you'll use this logger instance for the duration of your work. + * + * It should never get filled during normal usage of Friendica + * + * @param string $channel The channel of the logger instance + * @param string $developerIp The IP of the developer who wants to use the logger + * + * @return LoggerInterface The PSR-3 compliant logger instance + */ + public static function createDev($channel, $developerIp) + { + $logger = new Monolog\Logger($channel); + $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + + $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); + + return $logger; + } + + /** + * Adding a handler to a given logger instance + * + * @param LoggerInterface $logger The logger instance + * @param mixed $stream The stream which handles the logger output + * @param string $level The level, for which this handler at least should handle logging + * + * @return void + * + * @throws InternalServerErrorException if the logger is incompatible to the logger factory + * @throws \Exception in case of general failures + */ + public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE) + { + if ($logger instanceof Monolog\Logger) { + $fileHandler = new Monolog\Handler\StreamHandler($stream . ".1", Monolog\Logger::toMonologLevel($level)); + + $formatter = new Monolog\Formatter\LineFormatter("%channel% [%level_name%]: %message% %context% %extra%"); + $fileHandler->setFormatter($formatter); + + $logger->pushHandler($fileHandler); + } else { + throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); + } + } +} diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index 7e14c71b72..8eef2ac3db 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,7 +7,7 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; -use Friendica\Core\Logger; +use Friendica\Util\Logger; use PHPUnit\Framework\TestCase; /** @@ -39,7 +39,7 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $logger = Logger::create('test'); + $logger = $logger = Logger\LoggerFactory::create('test'); $app = new App(__DIR__ . '/../../', $logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); diff --git a/update.php b/update.php index dfda259797..2ed1a81997 100644 --- a/update.php +++ b/update.php @@ -1,9 +1,9 @@ $key], ['id' => $data['id']]); - BaseObject::getApp() - ->getLogger() - ->notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key, + Logger::notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key, 'was' => $data[$translateKey]]); Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); Contact::updateSelfFromUserID($data['id']); @@ -344,9 +342,7 @@ function update_1298() } } - BaseObject::getApp() - ->getLogger() - ->notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]); + Logger::notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]); } return Update::SUCCESS; } From ff162dfef23684c34d1166c9bda76d7d361ac1f5 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 19:35:08 +0100 Subject: [PATCH 112/728] Replacing log usage --- include/api.php | 46 +++++++++++++++++++++++----------------------- mod/acl.php | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/include/api.php b/include/api.php index 2085c801b8..2586def0a7 100644 --- a/include/api.php +++ b/include/api.php @@ -181,7 +181,7 @@ function api_login(App $a) var_dump($consumer, $token); die(); } catch (Exception $e) { - $a->getLogger()->warning('API login: error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); + Logger::warning('API {action}: error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); } // workaround for HTTP-auth in CGI mode @@ -195,7 +195,7 @@ function api_login(App $a) } if (empty($_SERVER['PHP_AUTH_USER'])) { - $a->getLogger()->debug('API login: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + Logger::debug('API {action}: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); throw new UnauthorizedException("This API requires login"); } @@ -236,7 +236,7 @@ function api_login(App $a) } if (!DBA::isResult($record)) { - $a->getLogger()->debug('API login: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + Logger::debug('API {action}: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); //header('HTTP/1.0 401 Unauthorized'); //die('This api requires login'); @@ -309,24 +309,24 @@ function api_call(App $a) api_login($a); } - $a->getLogger()->info('API call', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); - $a->getLogger()->debug('API parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); + Logger::info('API {action}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); + Logger::debug('API {action} parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); $stamp = microtime(true); $return = call_user_func($info['func'], $type); $duration = (float) (microtime(true) - $stamp); - $a->getLogger()->info('API call', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); + Logger::info('API {action} for {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); if (Config::get("system", "profiler")) { $duration = microtime(true)-$a->performance["start"]; /// @TODO round() really everywhere? - $a->getLogger()->debug( - 'API call performance', + Logger::debug( + 'API {action} performance', [ 'module' => 'api', - 'action' => 'performance', + 'action' => 'call', 'database_read' => round($a->performance["database"] - $a->performance["database_write"], 3), 'database_write' => round($a->performance["database_write"], 3), 'cache_read' => round($a->performance["cache"], 3), @@ -378,7 +378,7 @@ function api_call(App $a) $o .= $func . ": " . $time . "\n"; } } - $a->getLogger()->debug($o, ['module' => 'api', 'action' => 'performance']); + Logger::debug($o, ['module' => 'api', 'action' => 'call']); } } @@ -415,7 +415,7 @@ function api_call(App $a) } } - $a->getLogger()->warning('API call not implemented'); + Logger::warning('API {action} not implemented', ['module' => 'api', 'action' => 'call']); throw new NotImplementedException(); } catch (HTTPException $e) { header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}"); @@ -524,7 +524,7 @@ function api_get_user(App $a, $contact_id = null) $extra_query = ""; $url = ""; - $a->getLogger()->info('api_get_user: Fetching user data', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); + Logger::info('API {action}: Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); // Searching for contact URL if (!is_null($contact_id) && (intval($contact_id) == 0)) { @@ -608,7 +608,7 @@ function api_get_user(App $a, $contact_id = null) } } - $a->getLogger()->info('api_get_user: getting user', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); + Logger::info('API {action}: getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); if (!$user) { if (api_user() === false) { @@ -620,7 +620,7 @@ function api_get_user(App $a, $contact_id = null) } } - $a->getLogger()->info('api_get_user: found user', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); + Logger::info('API {action}: found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); // user info $uinfo = q( @@ -1939,7 +1939,7 @@ function api_conversation_show($type) $id = intval(defaults($a->argv, 4, 0)); } - $a->getLogger()->info('API: api_conversation_show', ['module' => 'api', 'action' => 'conversation', 'id' => $id]); + Logger::info('API: {action} - {subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $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]); @@ -2333,7 +2333,7 @@ function api_favorites($type) // in friendica starred item are private // return favorites only for self - $a->getLogger()->info('API: api_favorites', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); + Logger::info('API: {action}', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); if ($user_info['self'] == 0) { $ret = []; @@ -3697,7 +3697,7 @@ function api_friendships_destroy($type) $contact_id = defaults($_REQUEST, 'user_id'); if (empty($contact_id)) { - $a->getLogger()->notice('No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::notice('API {action} - No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); throw new BadRequestException("no user_id specified"); } @@ -3705,7 +3705,7 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]); if(!DBA::isResult($contact)) { - $a->getLogger()->notice('No contact found for ID', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); + Logger::notice('API {action} - No contact found for ID {contact}', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); throw new NotFoundException("no contact found to given ID"); } @@ -3717,12 +3717,12 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', [], $condition); if (!DBA::isResult($contact)) { - $a->getLogger()->notice('Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::notice('API {action} - Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); throw new NotFoundException("Not following Contact"); } if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { - $a->getLogger()->notice('Not supported', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); + Logger::notice('API {action} - Not supported for {network}', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); throw new ExpectationFailedException("Not supported"); } @@ -3733,7 +3733,7 @@ function api_friendships_destroy($type) Contact::terminateFriendship($owner, $contact, $dissolve); } else { - $a->getLogger()->notice('No owner found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); + Logger::notice('API {action} - No owner {uid} found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); throw new NotFoundException("Error Processing Request"); } @@ -4841,7 +4841,7 @@ function api_friendica_remoteauth() DBA::insert('profile_check', $fields); $a = get_app(); - $a->getLogger()->info('API: friendica_remoteauth', ['module' => 'api', 'action' => 'remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); + Logger::info('API: {action}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); $dest = ($url ? '&destination_url=' . $url : ''); System::externalRedirect( @@ -5091,7 +5091,7 @@ function api_in_reply_to($item) // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { $a = get_app(); - $a->getLogger()->warning('ID is similar to reply-to', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); + Logger::warning('API {action}: ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); $in_reply_to['status_id'] = null; $in_reply_to['user_id'] = null; $in_reply_to['status_id_str'] = null; diff --git a/mod/acl.php b/mod/acl.php index e7445a995b..03cb1ad63e 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -34,7 +34,7 @@ function acl_content(App $a) $search = $_REQUEST['query']; } - $a->getLogger()->info("Searching for " . $search . " - type " . $type . " conversation " . $conv_id); + Logger::info('ACL {action} - {subaction}', ['module' => 'acl', 'action' => 'content', 'subaction' => 'search', 'search' => $search, 'type' => $type, 'conversation' => $conv_id]); if ($search != '') { $sql_extra = "AND `name` LIKE '%%" . DBA::escape($search) . "%%'"; From 7f7ed16dc2c9a2cc54517e47a9f9b22f41665038 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 19:37:10 +0100 Subject: [PATCH 113/728] Log format --- src/Util/LoggerFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index ac6f6c92df..d99093efe4 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -70,7 +70,7 @@ class LoggerFactory if ($logger instanceof Monolog\Logger) { $fileHandler = new Monolog\Handler\StreamHandler($stream . ".1", Monolog\Logger::toMonologLevel($level)); - $formatter = new Monolog\Formatter\LineFormatter("%channel% [%level_name%]: %message% %context% %extra%"); + $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); $fileHandler->setFormatter($formatter); $logger->pushHandler($fileHandler); From 81cb6bec302a6dea3078e5df6d9643611d37a131 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 19:45:09 +0100 Subject: [PATCH 114/728] define api log prefix --- include/api.php | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/include/api.php b/include/api.php index 2586def0a7..1b0b35a68e 100644 --- a/include/api.php +++ b/include/api.php @@ -55,6 +55,8 @@ define('API_METHOD_GET', 'GET'); define('API_METHOD_POST', 'POST,PUT'); define('API_METHOD_DELETE', 'POST,DELETE'); +define('API_LOG_PREFIX', 'API {action} - '); + $API = []; $called_api = []; @@ -97,9 +99,9 @@ function api_source() return "Twidere"; } - Logger::log("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'Unrecognized user-agent', ['module' => 'api', 'action' => 'source', 'http_user_agent' => $_SERVER['HTTP_USER_AGENT']]); } else { - Logger::log("Empty user-agent", Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'Empty user-agent', ['module' => 'api', 'action' => 'source']); } return "api"; @@ -181,7 +183,7 @@ function api_login(App $a) var_dump($consumer, $token); die(); } catch (Exception $e) { - Logger::warning('API {action}: error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); + Logger::warning(API_LOG_PREFIX . 'error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); } // workaround for HTTP-auth in CGI mode @@ -195,7 +197,7 @@ function api_login(App $a) } if (empty($_SERVER['PHP_AUTH_USER'])) { - Logger::debug('API {action}: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); throw new UnauthorizedException("This API requires login"); } @@ -236,7 +238,7 @@ function api_login(App $a) } if (!DBA::isResult($record)) { - Logger::debug('API {action}: failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); //header('HTTP/1.0 401 Unauthorized'); //die('This api requires login'); @@ -309,14 +311,14 @@ function api_call(App $a) api_login($a); } - Logger::info('API {action}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); - Logger::debug('API {action} parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); + Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); + Logger::debug(API_LOG_PREFIX . 'parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); $stamp = microtime(true); $return = call_user_func($info['func'], $type); $duration = (float) (microtime(true) - $stamp); - Logger::info('API {action} for {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); + Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); if (Config::get("system", "profiler")) { $duration = microtime(true)-$a->performance["start"]; @@ -415,7 +417,7 @@ function api_call(App $a) } } - Logger::warning('API {action} not implemented', ['module' => 'api', 'action' => 'call']); + Logger::warning(API_LOG_PREFIX . 'not implemented', ['module' => 'api', 'action' => 'call']); throw new NotImplementedException(); } catch (HTTPException $e) { header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}"); @@ -524,7 +526,7 @@ function api_get_user(App $a, $contact_id = null) $extra_query = ""; $url = ""; - Logger::info('API {action}: Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); + Logger::info(API_LOG_PREFIX . 'Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); // Searching for contact URL if (!is_null($contact_id) && (intval($contact_id) == 0)) { @@ -608,7 +610,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::info('API {action}: getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); + Logger::info(API_LOG_PREFIX . 'getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); if (!$user) { if (api_user() === false) { @@ -620,7 +622,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::info('API {action}: found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); + Logger::info(API_LOG_PREFIX . 'found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); // user info $uinfo = q( @@ -1939,7 +1941,7 @@ function api_conversation_show($type) $id = intval(defaults($a->argv, 4, 0)); } - Logger::info('API: {action} - {subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $id]); + Logger::info(API_LOG_PREFIX . '{subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $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]); @@ -2333,7 +2335,7 @@ function api_favorites($type) // in friendica starred item are private // return favorites only for self - Logger::info('API: {action}', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); + Logger::info(API_LOG_PREFIX . 'for {self}', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); if ($user_info['self'] == 0) { $ret = []; @@ -3697,7 +3699,7 @@ function api_friendships_destroy($type) $contact_id = defaults($_REQUEST, 'user_id'); if (empty($contact_id)) { - Logger::notice('API {action} - No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::notice(API_LOG_PREFIX . 'No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); throw new BadRequestException("no user_id specified"); } @@ -3705,7 +3707,7 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]); if(!DBA::isResult($contact)) { - Logger::notice('API {action} - No contact found for ID {contact}', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); + Logger::notice(API_LOG_PREFIX . 'No contact found for ID {contact}', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); throw new NotFoundException("no contact found to given ID"); } @@ -3717,12 +3719,12 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', [], $condition); if (!DBA::isResult($contact)) { - Logger::notice('API {action} - Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::notice(API_LOG_PREFIX . 'Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); throw new NotFoundException("Not following Contact"); } if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { - Logger::notice('API {action} - Not supported for {network}', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); + Logger::notice(API_LOG_PREFIX . 'Not supported for {network}', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); throw new ExpectationFailedException("Not supported"); } @@ -3733,7 +3735,7 @@ function api_friendships_destroy($type) Contact::terminateFriendship($owner, $contact, $dissolve); } else { - Logger::notice('API {action} - No owner {uid} found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); + Logger::notice(API_LOG_PREFIX . 'No owner {uid} found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); throw new NotFoundException("Error Processing Request"); } @@ -4841,7 +4843,7 @@ function api_friendica_remoteauth() DBA::insert('profile_check', $fields); $a = get_app(); - Logger::info('API: {action}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); + Logger::info(API_LOG_PREFIX . 'for contact {contact}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); $dest = ($url ? '&destination_url=' . $url : ''); System::externalRedirect( @@ -5091,7 +5093,7 @@ function api_in_reply_to($item) // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { $a = get_app(); - Logger::warning('API {action}: ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); + Logger::warning(API_LOG_PREFIX . 'ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); $in_reply_to['status_id'] = null; $in_reply_to['user_id'] = null; $in_reply_to['status_id_str'] = null; From 83f187a047419c521717c1715825955a6c344244 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 21:09:42 +0100 Subject: [PATCH 115/728] bugfix test --- tests/src/BaseObjectTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index 8eef2ac3db..9743ca887f 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,7 +7,7 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; -use Friendica\Util\Logger; +use Friendica\Util\LoggerFactory; use PHPUnit\Framework\TestCase; /** @@ -39,7 +39,7 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $logger = $logger = Logger\LoggerFactory::create('test'); + $logger = $logger = LoggerFactory::create('test'); $app = new App(__DIR__ . '/../../', $logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); From 6150c2fa9cbb15efbdd1432a295ece64086959ac Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 21:57:16 +0100 Subject: [PATCH 116/728] Bugfixing --- src/App.php | 1 + src/Core/Logger.php | 6 +++++- src/Util/LoggerFactory.php | 30 +++++++++++++++++++++++++++++- tests/include/ApiTest.php | 8 ++++++++ tests/src/BaseObjectTest.php | 1 + 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/App.php b/src/App.php index 1fb79decea..cfe254581a 100644 --- a/src/App.php +++ b/src/App.php @@ -8,6 +8,7 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; +use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; use Psr\Log\LoggerInterface; diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 6102baa5a5..fe39d3feb2 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -89,7 +89,10 @@ class Logger extends BaseObject return; } - LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); + $level = self::mapPSR3Level($loglevel); + LoggerFactory::addStreamHandler($logger, $logfile, $level); + + self::$logger = $logger; $logfile = Config::get('system', 'dlogfile'); @@ -185,6 +188,7 @@ class Logger extends BaseObject public static function error($message, $context = []) { if (!isset(self::$logger)) { + echo "not set!?\n"; return; } diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index d99093efe4..e94cd2e971 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -68,7 +68,7 @@ class LoggerFactory public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE) { if ($logger instanceof Monolog\Logger) { - $fileHandler = new Monolog\Handler\StreamHandler($stream . ".1", Monolog\Logger::toMonologLevel($level)); + $fileHandler = new Monolog\Handler\StreamHandler($stream, Monolog\Logger::toMonologLevel($level)); $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); $fileHandler->setFormatter($formatter); @@ -78,4 +78,32 @@ class LoggerFactory throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); } } + + /** + * This method enables the test mode of a given logger + * + * @param LoggerInterface $logger The logger + * + * @return Monolog\Handler\TestHandler the Handling for tests + * + * @throws InternalServerErrorException if the logger is incompatible to the logger factory + */ + public static function enableTest($logger) + { + if ($logger instanceof Monolog\Logger) { + // disable every handler so far + $logger->pushHandler(new Monolog\Handler\NullHandler()); + + // enable the test handler + $fileHandler = new Monolog\Handler\TestHandler(); + $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); + $fileHandler->setFormatter($formatter); + + $logger->pushHandler($fileHandler); + + return $fileHandler; + } else { + throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); + } + } } diff --git a/tests/include/ApiTest.php b/tests/include/ApiTest.php index ede84a0eb9..cf7571073a 100644 --- a/tests/include/ApiTest.php +++ b/tests/include/ApiTest.php @@ -11,6 +11,8 @@ use Friendica\Core\PConfig; use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Network\HTTPException; +use Friendica\Util\LoggerFactory; +use Monolog\Handler\TestHandler; require_once __DIR__ . '/../../include/api.php'; @@ -22,6 +24,11 @@ require_once __DIR__ . '/../../include/api.php'; */ class ApiTest extends DatabaseTest { + /** + * @var TestHandler Can handle log-outputs + */ + protected $logOutput; + /** * Create variables used by tests. */ @@ -30,6 +37,7 @@ class ApiTest extends DatabaseTest parent::setUp(); $this->app = BaseObject::getApp(); + $this->logOutput = LoggerFactory::enableTest($this->app->getLogger()); // User data that the test database is populated with $this->selfUser = [ diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index 9743ca887f..7b9ff3aa15 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -41,6 +41,7 @@ class BaseObjectTest extends TestCase { $logger = $logger = LoggerFactory::create('test'); $app = new App(__DIR__ . '/../../', $logger); + LoggerFactory::enableTest($logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); } From 45bde8fef19fd6e379844303c637382d7a29667c Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 22:13:27 +0100 Subject: [PATCH 117/728] Adding more information in case of warning (or dev) --- src/Util/LoggerFactory.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index e94cd2e971..e7b076bd6d 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -26,6 +26,10 @@ class LoggerFactory { $logger = new Monolog\Logger($channel); $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + + // Add more information in case of a warning and more + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING)); return $logger; } @@ -47,6 +51,9 @@ class LoggerFactory { $logger = new Monolog\Logger($channel); $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor()); $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); From df230126c937985fb74d4d3ea93a963fae4cd0b6 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 1 Jan 2019 22:36:23 +0100 Subject: [PATCH 118/728] skipStackFramesCount to 1 to skip static method --- src/Util/LoggerFactory.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index e7b076bd6d..71239edbb3 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -29,7 +29,7 @@ class LoggerFactory $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); // Add more information in case of a warning and more - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING)); + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING, [], 1)); return $logger; } @@ -53,7 +53,7 @@ class LoggerFactory $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor()); + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(Loglevel::DEBUG, [], 1)); $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); From fc2b804cccadcd2e9f90953f02b5977b2eb46439 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 15:13:05 +0100 Subject: [PATCH 119/728] Move mod/attach to src, add Attach model, update attach table to use storage backends --- config/dbstructure.config.php | 4 +- mod/attach.php | 54 ------------ src/Model/Attach.php | 152 ++++++++++++++++++++++++++++++++++ src/Module/Attach.php | 67 +++++++++++++++ 4 files changed, 222 insertions(+), 55 deletions(-) delete mode 100644 mod/attach.php create mode 100644 src/Model/Attach.php create mode 100644 src/Module/Attach.php diff --git a/config/dbstructure.config.php b/config/dbstructure.config.php index 0be6ba4028..a4728c15d1 100644 --- a/config/dbstructure.config.php +++ b/config/dbstructure.config.php @@ -34,7 +34,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1298); + define('DB_UPDATE_VERSION', 1299); } return [ @@ -99,6 +99,8 @@ return [ "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"], "deny_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied contact.id"], "deny_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied groups"], + "backend-class" => ["type" => "tinytext", "comment" => "Storage backend class"], + "backend-ref" => ["type" => "text", "comment" => "Storage backend data reference"], ], "indexes" => [ "PRIMARY" => ["id"], diff --git a/mod/attach.php b/mod/attach.php deleted file mode 100644 index f3192d802d..0000000000 --- a/mod/attach.php +++ /dev/null @@ -1,54 +0,0 @@ -argc != 2) { - notice(L10n::t('Item not available.') . EOL); - return; - } - - $item_id = intval($a->argv[1]); - - // Check for existence, which will also provide us the owner uid - - $r = DBA::selectFirst('attach', [], ['id' => $item_id]); - if (!DBA::isResult($r)) { - notice(L10n::t('Item was not found.'). EOL); - return; - } - - $sql_extra = Security::getPermissionsSQLByUserId($r['uid']); - - // Now we'll see if we can access the attachment - - $r = q("SELECT * FROM `attach` WHERE `id` = '%d' $sql_extra LIMIT 1", - DBA::escape($item_id) - ); - - if (!DBA::isResult($r)) { - notice(L10n::t('Permission denied.') . EOL); - return; - } - - // Use quotes around the filename to prevent a "multiple Content-Disposition" - // error in Chrome for filenames with commas in them - header('Content-type: ' . $r[0]['filetype']); - header('Content-length: ' . $r[0]['filesize']); - if (isset($_GET['attachment']) && $_GET['attachment'] === '0') { - header('Content-disposition: filename="' . $r[0]['filename'] . '"'); - } else { - header('Content-disposition: attachment; filename="' . $r[0]['filename'] . '"'); - } - - echo $r[0]['data']; - exit(); - // NOTREACHED -} diff --git a/src/Model/Attach.php b/src/Model/Attach.php new file mode 100644 index 0000000000..13b0adb6f2 --- /dev/null +++ b/src/Model/Attach.php @@ -0,0 +1,152 @@ + $id]); + } + + /** + * @brief Retrive a single record given the ID + * + * @param int $id Row id of the record + * + * @return bool|array + * + * @see \Friendica\Database\DBA::select + */ + public static function getByIdWithPermission($id) + { + $r = self::selectFirst(['uid'], ['id' => $id]); + if ($r === false) { + return false; + } + + $sql_acl = Security::getPermissionsSQLByUserId($r['uid']); + + $conditions = [ + '`id` = ?' . $sql_acl, + $id + ]; + + $item = self::selectFirst([], $conditions); + + return $item; + } + + /** + * @brief Get file data for given row id. null if row id does not exist + * + * @param array $item Attachment data. Needs at least 'id', 'backend-class', 'backend-ref' + * + * @return string file data + */ + public static function getData($item) + { + if ($item['backend-class'] == '') { + // legacy data storage in 'data' column + $i = self::selectFirst(['data'], ['id' => $item['id']]); + if ($i === false) { + return null; + } + return $i['data']; + } else { + $backendClass = $item['backend-class']; + $backendRef = $item['backend-ref']; + return $backendClass::get($backendRef); + } + } +} \ No newline at end of file diff --git a/src/Module/Attach.php b/src/Module/Attach.php new file mode 100644 index 0000000000..eed1275c58 --- /dev/null +++ b/src/Module/Attach.php @@ -0,0 +1,67 @@ +argc != 2) { + System::httpExit(400); // Bad Request. + } + + + $item_id = intval($a->argv[1]); + + // Check for existence + $item = MAttach::exists(['id' => $item_id]); + if ($item === false) { + System::httpExit(404, ['description' => L10n::t('Item was not found.')]); + } + + // Now we'll fetch the item, if we have enough permisson + $item = MAttach::getByIdWithPermission($item_id); + if ($item === false) { + System::httpExit(403, ['description' => L10n::t('Permission denied.')]); + } + + $data = MAttach::getData($item); + if (is_null($data)) { + Logger::log('NULL data for attachment with id ' . $item['id']); + System::httpExit(404, ['description' => L10n::t('Item was not found.')]); + } + + // Use quotes around the filename to prevent a "multiple Content-Disposition" + // error in Chrome for filenames with commas in them + header('Content-type: ' . $item['filetype']); + header('Content-length: ' . $item['filesize']); + if (isset($_GET['attachment']) && $_GET['attachment'] === '0') { + header('Content-disposition: filename="' . $item['filename'] . '"'); + } else { + header('Content-disposition: attachment; filename="' . $item['filename'] . '"'); + } + + echo $data; + exit(); + // NOTREACHED + } +} \ No newline at end of file From b7b30862631a1c5cae424289489409d02dadc7a9 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 16:17:29 +0100 Subject: [PATCH 120/728] Attach: store, update, delete. Model and views --- mod/wall_attach.php | 34 ++--------- src/Model/Attach.php | 136 ++++++++++++++++++++++++++++++++++++++++++- src/Model/Item.php | 4 +- 3 files changed, 143 insertions(+), 31 deletions(-) diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 9b790a440e..523bd2be22 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -8,6 +8,7 @@ use Friendica\Core\Config; use Friendica\Core\L10n; use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\Model\Attach; use Friendica\Model\Contact; use Friendica\Util\DateTimeFormat; use Friendica\Util\Mimetype; @@ -126,20 +127,11 @@ function wall_attach_post(App $a) { exit(); } - $filedata = @file_get_contents($src); - $mimetype = Mimetype::getContentType($filename); - $hash = System::createGUID(64); - $created = DateTimeFormat::utcNow(); - - $fields = ['uid' => $page_owner_uid, 'hash' => $hash, 'filename' => $filename, 'filetype' => $mimetype, - 'filesize' => $filesize, 'data' => $filedata, 'created' => $created, 'edited' => $created, - 'allow_cid' => '<' . $page_owner_cid . '>', 'allow_gid' => '','deny_cid' => '', 'deny_gid' => '']; - - $r = DBA::insert('attach', $fields); + $newid = Attach::storeFile($src, $page_owner_uid, $filename, '<' . $page_owner_cid . '>'); @unlink($src); - if (! $r) { + if ($newid === false) { $msg = L10n::t('File upload failed.'); if ($r_json) { echo json_encode(['error' => $msg]); @@ -149,30 +141,14 @@ function wall_attach_post(App $a) { exit(); } - $r = q("SELECT `id` FROM `attach` WHERE `uid` = %d AND `created` = '%s' AND `hash` = '%s' LIMIT 1", - intval($page_owner_uid), - DBA::escape($created), - DBA::escape($hash) - ); - - if (! DBA::isResult($r)) { - $msg = L10n::t('File upload failed.'); - if ($r_json) { - echo json_encode(['error' => $msg]); - } else { - echo $msg . EOL; - } - exit(); - } - if ($r_json) { - echo json_encode(['ok' => true]); + echo json_encode(['ok' => true, 'id' => $newid]); exit(); } $lf = "\n"; - echo $lf . $lf . '[attachment]' . $r[0]['id'] . '[/attachment]' . $lf; + echo $lf . $lf . '[attachment]' . $newid . '[/attachment]' . $lf; exit(); // NOTREACHED diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 13b0adb6f2..2911136188 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -149,4 +149,138 @@ class Attach extends BaseObject return $backendClass::get($backendRef); } } -} \ No newline at end of file + + /** + * @brief Store new file metadata in db and binary in default backend + * + * @param string $data Binary data + * @param integer $uid User ID + * @param string $filename Filename + * @param string $filetype Mimetype. optional + * @param integer $filesize File size in bytes. optional + * @param string $allow_cid Permissions, allowed contacts. optional, default = '' + * @param string $allow_gid Permissions, allowed groups. optional, default = '' + * @param string $deny_cid Permissions, denied contacts.optional, default = '' + * @param string $deny_gid Permissions, denied greoup.optional, default = '' + * + * @return boolean/integer Row id on success, False on errors + */ + public function store($data, $uid, $filename, $filetype = '' , $filesize = -1, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') + { + if ($filetype === '') { + $filetype = Mimetype::getContentType($filename); + } + + if ($filesize < 0) { + $filesize = strlen($data); + } + + $backend_class = StorageManager::getBackend(); + $backend_ref = ''; + if ($backend_class !== '') { + $backend_ref = $backend_class::put($data); + $data = ''; + } + + $hash = System::createGUID(64); + $created = DateTimeFormat::utcNow(); + + $fields = [ + 'uid' => $uid, + 'hash' => $hash, + 'filename' => $filename, + 'filetype' => $filetype, + 'filesize' => $filesize, + 'data' => $data, + 'created' => $created, + 'edited' => $created, + 'allow_cid' => $allow_cid, + 'allow_gid' => $allow_gid, + 'deny_cid' => $deny_cid, + 'deny_gid' => $deny_gid, + 'backend-class' => $backend_class, + 'backend-ref' => $backend_ref + ]; + + $r = DBA::insert('attach', $fields); + if ($r === true) { + return DBA::lastInsertId(); + } + } + + /** + * @brief Store new file metadata in db and binary in default backend from existing file + * + * @return boolean True on success + */ + public function storeFile($src, $uid, $filename = '', $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') + { + if ($filename === '') { + $filename = basename($src); + } + + $data = @file_get_contents($src); + + return self::store($data, $uid, $filename, '', '', $allow_cid, $allow_gid, $deny_cid, $deny_gid); + } + + + /** + * @brief Update an attached file + * + * @param array $fields Contains the fields that are updated + * @param array $conditions Condition array with the key values + * @param string $data File data to update. Optional, default null. + * @param array|boolean $old_fields Array with the old field values that are about to be replaced (true = update on duplicate) + * + * @return boolean Was the update successfull? + * + * @see \Friendica\Database\DBA::update + */ + public static function update($fields, $conditions, $img = null, array $old_fields = []) + { + if (!is_null($data)) { + // get items to update + $items = self::select(['backend-class','backend-ref'], $conditions); + + foreach($items as $item) { + $backend_class = (string)$item['backend-class']; + if ($backend_class !== '') { + $fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']); + } else { + $fields['data'] = $data; + } + } + } + + $fields['edited'] = DateTimeFormat::utcNow(); + + return DBA::update('attach', $fields, $conditions, $old_fields); + } + + + /** + * @brief Delete info from table and data from storage + * + * @param array $conditions Field condition(s) + * @param array $options Options array, Optional + * + * @return boolean + * + * @see \Friendica\Database\DBA::delete + */ + public static function delete(array $conditions, array $options = []) + { + // get items to delete data info + $items = self::select(['backend-class','backend-ref'], $conditions); + + foreach($items as $item) { + $backend_class = (string)$item['backend-class']; + if ($backend_class !== '') { + $backend_class::delete($item['backend-ref']); + } + } + + return DBA::delete('attach', $conditions, $options); + } +} diff --git a/src/Model/Item.php b/src/Model/Item.php index 0451e95b37..a6e378034b 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -26,6 +26,8 @@ use Friendica\Model\FileTag; use Friendica\Model\PermissionSet; use Friendica\Model\Term; use Friendica\Model\ItemURI; +use Friendica\Model\Photo; +use Friendica\Model\Attach; use Friendica\Object\Image; use Friendica\Protocol\Diaspora; use Friendica\Protocol\OStatus; @@ -1039,7 +1041,7 @@ class Item extends BaseObject foreach (explode(", ", $item['attach']) as $attach) { preg_match("|attach/(\d+)|", $attach, $matches); if (is_array($matches) && count($matches) > 1) { - DBA::delete('attach', ['id' => $matches[1], 'uid' => $item['uid']]); + Attach::delete(['id' => $matches[1], 'uid' => $item['uid']]); } } From 15b0a7a4d8d32c76fc64947f7178125707419ea5 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 16:18:40 +0100 Subject: [PATCH 121/728] Photo model. Small fix to `update()` pass `$old_fields` param to `DBA::update()` --- src/Model/Photo.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 88f6d4269b..a1e2e378be 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -306,6 +306,7 @@ class Photo extends BaseObject return $r; } + /** * @brief Delete info from table and data from storage * @@ -362,7 +363,7 @@ class Photo extends BaseObject $fields['edited'] = DateTimeFormat::utcNow(); - return DBA::update("photo", $fields, $conditions); + return DBA::update("photo", $fields, $conditions, $old_fields); } /** From 906b7841d46db7a7e57cdb5e76f0d0d6a40b8b14 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 16:34:38 +0100 Subject: [PATCH 122/728] Fix Attach model store() and storeFile() --- mod/wall_attach.php | 3 --- src/Model/Attach.php | 15 +++++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 523bd2be22..40f82eef91 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -6,12 +6,9 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\L10n; -use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Attach; use Friendica\Model\Contact; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Mimetype; use Friendica\Util\Strings; function wall_attach_post(App $a) { diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 2911136188..48b034e499 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -7,11 +7,13 @@ namespace Friendica\Model; use Friendica\BaseObject; +use Friendica\Core\System; use Friendica\Core\StorageManager; use Friendica\Database\DBA; use Friendica\Database\DBStructure; use Friendica\Util\Security; - +use Friendica\Util\DateTimeFormat; +use Friendica\Util\Mimetype; /** * Class to handle attach dabatase table @@ -156,8 +158,8 @@ class Attach extends BaseObject * @param string $data Binary data * @param integer $uid User ID * @param string $filename Filename - * @param string $filetype Mimetype. optional - * @param integer $filesize File size in bytes. optional + * @param string $filetype Mimetype. optional, default = '' + * @param integer $filesize File size in bytes. optional, default = null * @param string $allow_cid Permissions, allowed contacts. optional, default = '' * @param string $allow_gid Permissions, allowed groups. optional, default = '' * @param string $deny_cid Permissions, denied contacts.optional, default = '' @@ -165,13 +167,13 @@ class Attach extends BaseObject * * @return boolean/integer Row id on success, False on errors */ - public function store($data, $uid, $filename, $filetype = '' , $filesize = -1, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') + public function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { if ($filetype === '') { $filetype = Mimetype::getContentType($filename); } - if ($filesize < 0) { + if (is_null($filesize)) { $filesize = strlen($data); } @@ -206,6 +208,7 @@ class Attach extends BaseObject if ($r === true) { return DBA::lastInsertId(); } + return $r; } /** @@ -221,7 +224,7 @@ class Attach extends BaseObject $data = @file_get_contents($src); - return self::store($data, $uid, $filename, '', '', $allow_cid, $allow_gid, $deny_cid, $deny_gid); + return self::store($data, $uid, $filename, '', null, $allow_cid, $allow_gid, $deny_cid, $deny_gid); } From b640024b517387be33442342635e483da92e782f Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 16:37:55 +0100 Subject: [PATCH 123/728] Item model, fix deletion of all attachments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Item model delete all attachments on item deletion, but it should check if same attachment isn't used somewhere else. --- src/Model/Item.php | 4 +++- vagrant.local.yaml | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 vagrant.local.yaml diff --git a/src/Model/Item.php b/src/Model/Item.php index a6e378034b..b71db999d0 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1028,6 +1028,7 @@ class Item extends BaseObject * This only applies to photos uploaded from the photos page. Photos inserted into a post do not * generate a resource-id and therefore aren't intimately linked to the item. */ + /// @TODO: this should first check if photo is used elsewhere if (strlen($item['resource-id'])) { Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]); } @@ -1038,7 +1039,8 @@ class Item extends BaseObject } // If item has attachments, drop them - foreach (explode(", ", $item['attach']) as $attach) { + /// @TODO: this should first check if attachment is used elsewhere + foreach (explode(",", $item['attach']) as $attach) { preg_match("|attach/(\d+)|", $attach, $matches); if (is_array($matches) && count($matches) > 1) { Attach::delete(['id' => $matches[1], 'uid' => $item['uid']]); diff --git a/vagrant.local.yaml b/vagrant.local.yaml new file mode 100644 index 0000000000..7347cc7def --- /dev/null +++ b/vagrant.local.yaml @@ -0,0 +1,2 @@ +server: + memory: "1024" # MB From 19b55f5f8d3d31764a1e2e57cd591b18ebecfa14 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 2 Jan 2019 17:15:43 +0100 Subject: [PATCH 124/728] Use Attach model while deleting in video tab --- mod/videos.php | 63 ++++++++------------------------------------------ 1 file changed, 10 insertions(+), 53 deletions(-) diff --git a/mod/videos.php b/mod/videos.php index d8aac18210..a117e0f1a8 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -11,6 +11,7 @@ use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\Model\Attach; use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Model\Item; @@ -59,41 +60,6 @@ function videos_init(App $a) '$pdesc' => defaults($profile, 'pdesc', ''), ]); - /// @TODO Old-lost code? - /*$sql_extra = Security::getPermissionsSQLByUserId($a->data['user']['uid']); - - $albums = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d $sql_extra order by created desc", - intval($a->data['user']['uid']) - ); - - if(count($albums)) { - $a->data['albums'] = $albums; - - $albums_visible = ((intval($a->data['user']['hidewall']) && (!local_user()) && (!remote_user())) ? false : true); - - if($albums_visible) { - $o .= ''; - }*/ - // If not there, create 'aside' empty if (!isset($a->page['aside'])) { $a->page['aside'] = ''; @@ -148,25 +114,16 @@ function videos_post(App $a) $video_id = $_POST['id']; - $r = q("SELECT `id` FROM `attach` WHERE `uid` = %d AND `id` = '%s' LIMIT 1", - intval(local_user()), - DBA::escape($video_id) - ); + $r = Attach::exists(['id' => $video_id, 'uid' => local_user()]); + if ($r === true) { + // delete the attachment + Attach::delete(['id' => $video_id, 'uid' => local_user()]); - if (DBA::isResult($r)) { - q("DELETE FROM `attach` WHERE `uid` = %d AND `id` = '%s'", - intval(local_user()), - DBA::escape($video_id) - ); - - $i = q("SELECT `id` FROM `item` WHERE `attach` like '%%attach/%s%%' AND `uid` = %d LIMIT 1", - DBA::escape($video_id), - intval(local_user()) - ); - - if (DBA::isResult($i)) { - Item::deleteForUser(['id' => $i[0]['id']], local_user()); - } + // delete items where the attach is used + Item::deleteForUser(['`attach` LIKE ? AND `uid` = ?', + '%attach/' . $video_id . '%', + local_user() + ], local_user()); } $a->internalRedirect('videos/' . $a->data['user']['nickname']); From 6e48df21631f1c616a6c88369677ecf1038f4d1f Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 3 Jan 2019 09:00:49 +0100 Subject: [PATCH 125/728] Refactor Loglevels --- include/api.php | 5 ++--- src/App.php | 2 +- src/Core/Logger.php | 52 +++++++-------------------------------------- 3 files changed, 11 insertions(+), 48 deletions(-) diff --git a/include/api.php b/include/api.php index 1b0b35a68e..d762507cf8 100644 --- a/include/api.php +++ b/include/api.php @@ -325,7 +325,7 @@ function api_call(App $a) /// @TODO round() really everywhere? Logger::debug( - 'API {action} performance', + API_LOG_PREFIX . 'performance', [ 'module' => 'api', 'action' => 'call', @@ -380,7 +380,7 @@ function api_call(App $a) $o .= $func . ": " . $time . "\n"; } } - Logger::debug($o, ['module' => 'api', 'action' => 'call']); + Logger::debug(API_LOG_PREFIX . $o, ['module' => 'api', 'action' => 'call']); } } @@ -4842,7 +4842,6 @@ function api_friendica_remoteauth() 'sec' => $sec, 'expire' => time() + 45]; DBA::insert('profile_check', $fields); - $a = get_app(); Logger::info(API_LOG_PREFIX . 'for contact {contact}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); $dest = ($url ? '&destination_url=' . $url : ''); diff --git a/src/App.php b/src/App.php index cfe254581a..f5dba13dc0 100644 --- a/src/App.php +++ b/src/App.php @@ -159,7 +159,7 @@ class App * * @throws Exception if the Basepath is not usable */ - public function __construct($basePath, $logger, $isBackend = true) + public function __construct($basePath, LoggerInterface $logger, $isBackend = true) { $this->logger = $logger; diff --git a/src/Core/Logger.php b/src/Core/Logger.php index fe39d3feb2..c6b81e0cc9 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -16,35 +16,29 @@ use Psr\Log\LogLevel; class Logger extends BaseObject { /** - * @deprecated 2019.03 use Logger::error() instead * @see Logger::error() */ - const WARNING = 0; + const WARNING = LogLevel::ERROR; /** - * @deprecated 2019.03 use Logger::warning() instead * @see Logger::warning() */ - const INFO = 1; + const INFO = LogLevel::WARNING; /** - * @deprecated 2019.03 use Logger::notice() instead * @see Logger::notice() */ - const TRACE = 2; + const TRACE = LogLevel::NOTICE; /** - * @deprecated 2019.03 use Logger::info() instead * @see Logger::info() */ - const DEBUG = 3; + const DEBUG = LogLevel::INFO; /** - * @deprecated 2019.03 use Logger::debug() instead * @see Logger::debug() */ - const DATA = 4; + const DATA = LogLevel::DEBUG; /** - * @deprecated 2019.03 use Logger::debug() instead * @see Logger::debug() */ - const ALL = 5; + const ALL = LogLevel::DEBUG; /** * @var array the legacy loglevels @@ -285,34 +279,6 @@ class Logger extends BaseObject self::getApp()->saveTimestamp($stamp1, 'file'); } - /** - * Mapping a legacy level to the PSR-3 compliant levels - * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel - * - * @param int $level the level to be mapped - * - * @return string the PSR-3 compliant level - */ - private static function mapPSR3Level($level) - { - switch ($level) { - case self::WARNING: - return LogLevel::ERROR; - case self::INFO: - return LogLevel::WARNING; - case self::TRACE: - return LogLevel::NOTICE; - case self::DEBUG: - return LogLevel::INFO; - case self::DATA: - return LogLevel::DEBUG; - case self::ALL: - return LogLevel::DEBUG; - default: - return LogLevel::CRITICAL; - } - } - /** * @brief Logs the given message at the given log level * @@ -321,16 +287,14 @@ class Logger extends BaseObject * * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead */ - public static function log($msg, $level = self::INFO) + public static function log($msg, $level = LogLevel::NOTICE) { if (!isset(self::$logger)) { return; } - $loglevel = self::mapPSR3Level($level); - $stamp1 = microtime(true); - self::$logger->log($loglevel, $msg); + self::$logger->log($level, $msg); self::getApp()->saveTimestamp($stamp1, "file"); } From 5ee72b681b931ebd692b81df1880487b2ac251cf Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 3 Jan 2019 09:02:37 +0100 Subject: [PATCH 126/728] removed unused get_app() --- include/api.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/api.php b/include/api.php index d762507cf8..57bbd63993 100644 --- a/include/api.php +++ b/include/api.php @@ -3690,7 +3690,6 @@ api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', function api_friendships_destroy($type) { $uid = api_user(); - $a = get_app(); if ($uid === false) { throw new ForbiddenException(); @@ -5091,7 +5090,6 @@ function api_in_reply_to($item) // https://github.com/friendica/friendica/issues/1010 // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { - $a = get_app(); Logger::warning(API_LOG_PREFIX . 'ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); $in_reply_to['status_id'] = null; $in_reply_to['user_id'] = null; From e561fb3a0b341abe3cb68028cca13306cfa010fe Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 18:34:18 +0100 Subject: [PATCH 127/728] Fix undefined var in module Proxy --- src/Module/Proxy.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index d6c9a841c9..4387cc7ec2 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -116,6 +116,8 @@ class Proxy extends BaseModule // stop. } + $basepath = $a->getBasePath(); + // Store original image if ($direct_cache) { // direct cache , store under ./proxy/ From 14622c4bfd380dd46473665dc0fbf53f85d145f0 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 18:39:55 +0100 Subject: [PATCH 128/728] Use more Attach model --- mod/item.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mod/item.php b/mod/item.php index 3d6d886eeb..1c8525528b 100644 --- a/mod/item.php +++ b/mod/item.php @@ -32,6 +32,7 @@ use Friendica\Model\Conversation; use Friendica\Model\FileTag; use Friendica\Model\Item; use Friendica\Model\Photo; +use Friendica\Model\Attach; use Friendica\Protocol\Diaspora; use Friendica\Protocol\Email; use Friendica\Util\DateTimeFormat; @@ -489,14 +490,14 @@ function item_post(App $a) { $condition = ['allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', 'id' => $attach]; - if (!DBA::exists('attach', $condition)) { + if (!Attach::exists($condition)) { continue; } $fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny]; $condition = ['id' => $attach]; - DBA::update('attach', $fields, $condition); + Attach::update($fields, $condition); } } } @@ -539,8 +540,8 @@ function item_post(App $a) { if (preg_match_all('/(\[attachment\]([0-9]+)\[\/attachment\])/',$body,$match)) { foreach ($match[2] as $mtch) { $fields = ['id', 'filename', 'filesize', 'filetype']; - $attachment = DBA::selectFirst('attach', $fields, ['id' => $mtch]); - if (DBA::isResult($attachment)) { + $attachment = Attach::selectFirst($fields, ['id' => $mtch]); + if ($attachment !== false) { if (strlen($attachments)) { $attachments .= ','; } From c3c0332536f63fce1bdd5ad040f7556ffa0513a5 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 18:44:19 +0100 Subject: [PATCH 129/728] return default mimetype for unknown extensions --- src/Util/Mimetype.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Util/Mimetype.php b/src/Util/Mimetype.php index 658c4bd06e..b2d0e2641e 100644 --- a/src/Util/Mimetype.php +++ b/src/Util/Mimetype.php @@ -1077,8 +1077,7 @@ class Mimetype if (array_key_exists($ext, $mime_types)) { return $mime_types[$ext]; } - } else { - return 'application/octet-stream'; } + return 'application/octet-stream'; } } From 651834f7d1f8ec39cb9bcd6cab111d2c313f8e6b Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 3 Jan 2019 21:11:18 +0100 Subject: [PATCH 130/728] Change channel "app" to "index" --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index c0a891bfdd..c2dd31bcf2 100644 --- a/index.php +++ b/index.php @@ -13,7 +13,7 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) { require __DIR__ . '/vendor/autoload.php'; -$logger = LoggerFactory::create('app'); +$logger = LoggerFactory::create('index'); // We assume that the index.php is called by a frontend process // The value is set to "true" by default in App From 24d7ffa3fee7e3686589f29f005fb2c419c9985a Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 22:35:46 +0100 Subject: [PATCH 131/728] Update "storage" console command add support to move data in 'attach' table --- src/Core/Console/Storage.php | 20 ++++++++++++++++++-- src/Core/StorageManager.php | 4 ++-- src/Model/Attach.php | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Core/Console/Storage.php b/src/Core/Console/Storage.php index 9334824e35..601019fa8b 100644 --- a/src/Core/Console/Storage.php +++ b/src/Core/Console/Storage.php @@ -19,9 +19,18 @@ class Storage extends \Asika\SimpleConsole\Console console storage - manage storage backend and stored data Synopsis bin/console storage [-h|--help|-?] [-v] + Show this help + bin/console storage list + List avaiable storage backends + bin/console storage set - bin/console storage move + Set current storage backend + name storage backend to use. see "list". + + bin/console storage move [table] + Move stored data to current storage backend. + table one of "photo" or "attach". default to both HELP; return $help; } @@ -105,9 +114,16 @@ HELP; protected function do_move() { - if (count($this->args) !== 1) { + $table = null; + if (count($this->args) < 1 || count($this->args) > 2) { throw new CommandArgsException('Invalid arguments'); } + if (count($this->args) == 2) { + $table = strtolower($this->args[1]); + if (!in_array($table, ['photo', 'attach'])) { + throw new CommandArgsException('Invalid table'); + } + } $current = StorageManager::getBackend(); $r = StorageManager::move($current); diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 8dd7654e60..43a72650cc 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -110,7 +110,7 @@ class StorageManager * This method cannot move to legacy in-table `data` field. * * @param string $dest Destination storage class name - * @param array $tables Tables to look in for resources. Optional, defaults to ['photo'] + * @param array $tables Tables to look in for resources. Optional, defaults to ['photo', 'attach'] * * @retur int Number of moved resources */ @@ -121,7 +121,7 @@ class StorageManager } if (is_null($tables)) { - $tables = ['photo']; + $tables = ['photo', 'attach']; } $moved = 0; diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 48b034e499..92c76d3d0a 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -224,7 +224,7 @@ class Attach extends BaseObject $data = @file_get_contents($src); - return self::store($data, $uid, $filename, '', null, $allow_cid, $allow_gid, $deny_cid, $deny_gid); + return self::store($data, $uid, $filename, '', null, $allow_cid, $allow_gid, $deny_cid, $deny_gid); } From 736bcae3e879b867a74755a4a1d24cc72b113ff7 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 22:51:36 +0100 Subject: [PATCH 132/728] update database.sql --- database.sql | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/database.sql b/database.sql index a692b447f7..7d0db4fa69 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2019.03-dev (The Tazmans Flax-lily) --- DB_UPDATE_VERSION 1297 +-- DB_UPDATE_VERSION 1299 -- ------------------------------------------ @@ -64,6 +64,8 @@ CREATE TABLE IF NOT EXISTS `attach` ( `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id', `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups', + `backend-class` tinytext COMMENT 'Storage backend class', + `backend-ref` text COMMENT 'Storage backend data reference', PRIMARY KEY(`id`) ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='file attachments'; @@ -641,8 +643,8 @@ CREATE TABLE IF NOT EXISTS `item-delivery-data` ( `iid` int unsigned NOT NULL COMMENT 'Item id', `postopts` text COMMENT 'External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery', `inform` mediumtext COMMENT 'Additional receivers of the linked item', - `queue_count` mediumint(9) NOT NULL DEFAULT '0' COMMENT 'Initial number of delivery recipients, used as item.delivery_queue_count', - `queue_done` mediumint(9) NOT NULL DEFAULT '0' COMMENT 'Number of successful deliveries, used as item.delivery_queue_done', + `queue_count` mediumint NOT NULL DEFAULT 0 COMMENT 'Initial number of delivery recipients, used as item.delivery_queue_count', + `queue_done` mediumint NOT NULL DEFAULT 0 COMMENT 'Number of successful deliveries, used as item.delivery_queue_done', PRIMARY KEY(`iid`) ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for items'; From 13e4dd0163343683c3fce6513f1dccfc48d1a9c7 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 3 Jan 2019 22:55:29 +0100 Subject: [PATCH 133/728] remove file added by mistake --- vagrant.local.yaml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 vagrant.local.yaml diff --git a/vagrant.local.yaml b/vagrant.local.yaml deleted file mode 100644 index 7347cc7def..0000000000 --- a/vagrant.local.yaml +++ /dev/null @@ -1,2 +0,0 @@ -server: - memory: "1024" # MB From 2f49c4a0586610c3a89b6342a90b916b95719d10 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 3 Jan 2019 23:25:06 -0500 Subject: [PATCH 134/728] Revert "Add monolog" --- bin/auth_ejabberd.php | 5 +- bin/console.php | 6 +- bin/daemon.php | 18 +- bin/worker.php | 5 +- composer.json | 3 +- composer.lock | 128 +------ include/api.php | 78 ++-- index.php | 6 +- mod/acl.php | 2 +- src/App.php | 33 +- src/BaseObject.php | 5 +- src/Core/Addon.php | 11 +- src/Core/Logger.php | 378 +++++--------------- src/Util/Logger/FriendicaDevelopHandler.php | 50 --- src/Util/LoggerFactory.php | 116 ------ tests/include/ApiTest.php | 8 - tests/src/BaseObjectTest.php | 5 +- update.php | 6 +- 18 files changed, 165 insertions(+), 698 deletions(-) delete mode 100644 src/Util/Logger/FriendicaDevelopHandler.php delete mode 100644 src/Util/LoggerFactory.php diff --git a/bin/auth_ejabberd.php b/bin/auth_ejabberd.php index a6f30d2019..e8a7b4963f 100755 --- a/bin/auth_ejabberd.php +++ b/bin/auth_ejabberd.php @@ -34,7 +34,6 @@ use Friendica\App; use Friendica\Util\ExAuth; -use Friendica\Util\LoggerFactory; if (sizeof($_SERVER["argv"]) == 0) { die(); @@ -52,9 +51,7 @@ chdir($directory); require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = LoggerFactory::create('auth_ejabberd'); - -$a = new App(dirname(__DIR__), $logger); +$a = new App(dirname(__DIR__)); if ($a->getMode()->isNormal()) { $oAuth = new ExAuth(); diff --git a/bin/console.php b/bin/console.php index 9264e3eee4..c39df953f2 100755 --- a/bin/console.php +++ b/bin/console.php @@ -3,11 +3,7 @@ require dirname(__DIR__) . '/vendor/autoload.php'; -use Friendica\Util\LoggerFactory; - -$logger = LoggerFactory::create('console'); - -$a = new Friendica\App(dirname(__DIR__), $logger); +$a = new Friendica\App(dirname(__DIR__)); \Friendica\BaseObject::setApp($a); (new Friendica\Core\Console($argv))->execute(); diff --git a/bin/daemon.php b/bin/daemon.php index c7b321c11c..e60e32b19e 100755 --- a/bin/daemon.php +++ b/bin/daemon.php @@ -9,9 +9,9 @@ use Friendica\App; use Friendica\Core\Config; +use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Database\DBA; -use Friendica\Util\LoggerFactory; // Get options $shortopts = 'f'; @@ -32,9 +32,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = LoggerFactory::create('daemon'); - -$a = new App(dirname(__DIR__), $logger); +$a = new App(dirname(__DIR__)); if ($a->getMode()->isInstall()) { die("Friendica isn't properly installed yet.\n"); @@ -104,7 +102,7 @@ if ($mode == "stop") { unlink($pidfile); - $logger->notice("Worker daemon process was killed", ["pid" => $pid]); + 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"); @@ -114,7 +112,7 @@ if (!empty($pid) && posix_kill($pid, 0)) { die("Daemon process $pid is already running.\n"); } -$logger->notice('Starting worker daemon.', ["pid" => $pid]); +Logger::log('Starting worker daemon.', Logger::DEBUG); if (!$foreground) { echo "Starting worker daemon.\n"; @@ -162,7 +160,7 @@ $last_cron = 0; // Now running as a daemon. while (true) { if (!$do_cron && ($last_cron + $wait_interval) < time()) { - $logger->info('Forcing cron worker call.', ["pid" => $pid]); + Logger::log('Forcing cron worker call.', Logger::DEBUG); $do_cron = true; } @@ -176,7 +174,7 @@ while (true) { $last_cron = time(); } - $logger->info("Sleeping", ["pid" => $pid]); + Logger::log("Sleeping", Logger::DEBUG); $start = time(); do { $seconds = (time() - $start); @@ -193,10 +191,10 @@ while (true) { if ($timeout) { $do_cron = true; - $logger->info("Woke up after $wait_interval seconds.", ["pid" => $pid, 'sleep' => $wait_interval]); + Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG); } else { $do_cron = false; - $logger->info("Worker jobs are calling to be forked.", ["pid" => $pid]); + Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG); } } diff --git a/bin/worker.php b/bin/worker.php index a64b6a8330..78b7a58a05 100755 --- a/bin/worker.php +++ b/bin/worker.php @@ -8,7 +8,6 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Core\Update; -use Friendica\Util\LoggerFactory; // Get options $shortopts = 'sn'; @@ -29,9 +28,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$logger = LoggerFactory::create('worker'); - -$a = new App(dirname(__DIR__), $logger); +$a = new App(dirname(__DIR__)); // Check the database structure and possibly fixes it Update::check(true); diff --git a/composer.json b/composer.json index 2f254877de..8ac4c37724 100644 --- a/composer.json +++ b/composer.json @@ -42,8 +42,7 @@ "npm-asset/jgrowl": "^1.4", "npm-asset/fullcalendar": "^3.0.1", "npm-asset/cropperjs": "1.2.2", - "npm-asset/imagesloaded": "4.1.4", - "monolog/monolog": "^1.24" + "npm-asset/imagesloaded": "4.1.4" }, "repositories": [ { diff --git a/composer.lock b/composer.lock index 96a244b7d7..1e87dab8a4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8cf7268fbcae8a22a518b9e7727eab84", + "content-hash": "51f7b3ab622038d7ef62ed03c06b48d0", "packages": [ { "name": "asika/simple-console", @@ -809,84 +809,6 @@ ], "time": "2018-09-01T15:05:15+00:00" }, - { - "name": "monolog/monolog", - "version": "1.24.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2018-11-05T09:00:11+00:00" - }, { "name": "npm-asset/cropperjs", "version": "1.2.2", @@ -1888,53 +1810,6 @@ ], "time": "2016-08-06T14:39:51+00:00" }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" - }, { "name": "seld/cli-prompt", "version": "1.0.3", @@ -2606,6 +2481,7 @@ "testing", "xunit" ], + "abandoned": true, "time": "2016-12-02T14:39:14+00:00" }, { diff --git a/include/api.php b/include/api.php index 57bbd63993..f28f182532 100644 --- a/include/api.php +++ b/include/api.php @@ -55,8 +55,6 @@ define('API_METHOD_GET', 'GET'); define('API_METHOD_POST', 'POST,PUT'); define('API_METHOD_DELETE', 'POST,DELETE'); -define('API_LOG_PREFIX', 'API {action} - '); - $API = []; $called_api = []; @@ -99,9 +97,9 @@ function api_source() return "Twidere"; } - Logger::info(API_LOG_PREFIX . 'Unrecognized user-agent', ['module' => 'api', 'action' => 'source', 'http_user_agent' => $_SERVER['HTTP_USER_AGENT']]); + Logger::log("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], Logger::DEBUG); } else { - Logger::info(API_LOG_PREFIX . 'Empty user-agent', ['module' => 'api', 'action' => 'source']); + Logger::log("Empty user-agent", Logger::DEBUG); } return "api"; @@ -183,7 +181,7 @@ function api_login(App $a) var_dump($consumer, $token); die(); } catch (Exception $e) { - Logger::warning(API_LOG_PREFIX . 'error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); + Logger::log($e); } // workaround for HTTP-auth in CGI mode @@ -197,7 +195,7 @@ function api_login(App $a) } if (empty($_SERVER['PHP_AUTH_USER'])) { - Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + Logger::log('API_login: ' . print_r($_SERVER, true), Logger::DEBUG); header('WWW-Authenticate: Basic realm="Friendica"'); throw new UnauthorizedException("This API requires login"); } @@ -238,7 +236,7 @@ function api_login(App $a) } if (!DBA::isResult($record)) { - Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); + 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'); @@ -311,35 +309,33 @@ function api_call(App $a) api_login($a); } - Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); - Logger::debug(API_LOG_PREFIX . 'parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); + 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::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); + 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::debug( - API_LOG_PREFIX . 'performance', - [ - 'module' => 'api', - 'action' => 'call', - 'database_read' => round($a->performance["database"] - $a->performance["database_write"], 3), - 'database_write' => round($a->performance["database_write"], 3), - 'cache_read' => round($a->performance["cache"], 3), - 'cache_write' => round($a->performance["cache_write"], 3), - 'network_io' => round($a->performance["network"], 2), - 'file_io' => round($a->performance["file"], 2), - 'other_io' => round($duration - ($a->performance["database"] - + $a->performance["cache"] + $a->performance["cache_write"] - + $a->performance["network"] + $a->performance["file"]), 2), - 'total' => round($duration, 2) - ] + 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), + round($a->performance["database_write"], 3), + round($a->performance["cache"], 3), + round($a->performance["cache_write"], 3), + round($a->performance["network"], 2), + round($a->performance["file"], 2), + round($duration - ($a->performance["database"] + + $a->performance["cache"] + $a->performance["cache_write"] + + $a->performance["network"] + $a->performance["file"]), 2), + round($duration, 2) + ), + Logger::DEBUG ); if (Config::get("rendertime", "callstack")) { @@ -380,7 +376,7 @@ function api_call(App $a) $o .= $func . ": " . $time . "\n"; } } - Logger::debug(API_LOG_PREFIX . $o, ['module' => 'api', 'action' => 'call']); + Logger::log($o, Logger::DEBUG); } } @@ -417,7 +413,7 @@ function api_call(App $a) } } - Logger::warning(API_LOG_PREFIX . 'not implemented', ['module' => 'api', 'action' => 'call']); + Logger::log('API call not implemented: ' . $a->query_string); throw new NotImplementedException(); } catch (HTTPException $e) { header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}"); @@ -526,7 +522,7 @@ function api_get_user(App $a, $contact_id = null) $extra_query = ""; $url = ""; - Logger::info(API_LOG_PREFIX . 'Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); + 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)) { @@ -610,7 +606,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::info(API_LOG_PREFIX . 'getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); + Logger::log("api_get_user: user ".$user, Logger::DEBUG); if (!$user) { if (api_user() === false) { @@ -622,7 +618,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::info(API_LOG_PREFIX . 'found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); + Logger::log('api_user: ' . $extra_query . ', user: ' . $user); // user info $uinfo = q( @@ -1941,7 +1937,7 @@ function api_conversation_show($type) $id = intval(defaults($a->argv, 4, 0)); } - Logger::info(API_LOG_PREFIX . '{subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $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]); @@ -2335,7 +2331,7 @@ function api_favorites($type) // in friendica starred item are private // return favorites only for self - Logger::info(API_LOG_PREFIX . 'for {self}', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); + Logger::log('api_favorites: self:' . $user_info['self']); if ($user_info['self'] == 0) { $ret = []; @@ -3698,7 +3694,7 @@ function api_friendships_destroy($type) $contact_id = defaults($_REQUEST, 'user_id'); if (empty($contact_id)) { - Logger::notice(API_LOG_PREFIX . 'No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::log("No user_id specified", Logger::DEBUG); throw new BadRequestException("no user_id specified"); } @@ -3706,7 +3702,7 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]); if(!DBA::isResult($contact)) { - Logger::notice(API_LOG_PREFIX . 'No contact found for ID {contact}', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); + Logger::log("No contact found for ID" . $contact_id, Logger::DEBUG); throw new NotFoundException("no contact found to given ID"); } @@ -3718,12 +3714,12 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', [], $condition); if (!DBA::isResult($contact)) { - Logger::notice(API_LOG_PREFIX . 'Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); + Logger::log("Not following Contact", Logger::DEBUG); throw new NotFoundException("Not following Contact"); } if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { - Logger::notice(API_LOG_PREFIX . 'Not supported for {network}', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); + Logger::log("Not supported", Logger::DEBUG); throw new ExpectationFailedException("Not supported"); } @@ -3734,7 +3730,7 @@ function api_friendships_destroy($type) Contact::terminateFriendship($owner, $contact, $dissolve); } else { - Logger::notice(API_LOG_PREFIX . 'No owner {uid} found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); + Logger::log("No owner found", Logger::DEBUG); throw new NotFoundException("Error Processing Request"); } @@ -4841,7 +4837,7 @@ function api_friendica_remoteauth() 'sec' => $sec, 'expire' => time() + 45]; DBA::insert('profile_check', $fields); - Logger::info(API_LOG_PREFIX . 'for contact {contact}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); + Logger::log($contact['name'] . ' ' . $sec, Logger::DEBUG); $dest = ($url ? '&destination_url=' . $url : ''); System::externalRedirect( @@ -5090,7 +5086,7 @@ function api_in_reply_to($item) // https://github.com/friendica/friendica/issues/1010 // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { - Logger::warning(API_LOG_PREFIX . 'ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); + 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; diff --git a/index.php b/index.php index c2dd31bcf2..f2aea64685 100644 --- a/index.php +++ b/index.php @@ -5,7 +5,6 @@ */ use Friendica\App; -use Friendica\Util\LoggerFactory; if (!file_exists(__DIR__ . '/vendor/autoload.php')) { die('Vendor path not found. Please execute "bin/composer.phar --no-dev install" on the command line in the web root.'); @@ -13,10 +12,9 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) { require __DIR__ . '/vendor/autoload.php'; -$logger = LoggerFactory::create('index'); - // We assume that the index.php is called by a frontend process // The value is set to "true" by default in App -$a = new App(__DIR__, $logger, false); +$a = new App(__DIR__, false); $a->runFrontend(); + diff --git a/mod/acl.php b/mod/acl.php index 03cb1ad63e..fc67556739 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -34,7 +34,7 @@ function acl_content(App $a) $search = $_REQUEST['query']; } - Logger::info('ACL {action} - {subaction}', ['module' => 'acl', 'action' => 'content', 'subaction' => 'search', 'search' => $search, 'type' => $type, 'conversation' => $conv_id]); + Logger::log("Searching for ".$search." - type ".$type." conversation ".$conv_id, Logger::DEBUG); if ($search != '') { $sql_extra = "AND `name` LIKE '%%" . DBA::escape($search) . "%%'"; diff --git a/src/App.php b/src/App.php index f5dba13dc0..df350542ad 100644 --- a/src/App.php +++ b/src/App.php @@ -8,10 +8,8 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; -use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; -use Psr\Log\LoggerInterface; /** * @@ -108,11 +106,6 @@ class App */ public $mobileDetect; - /** - * @var LoggerInterface The current logger of this App - */ - private $logger; - /** * Register a stylesheet file path to be included in the tag of every page. * Inclusion is done in App->initHead(). @@ -153,16 +146,13 @@ class App /** * @brief App constructor. * - * @param string $basePath Path to the app base folder - * @param LoggerInterface $logger Logger of this application - * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) + * @param string $basePath Path to the app base folder + * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) * * @throws Exception if the Basepath is not usable */ - public function __construct($basePath, LoggerInterface $logger, $isBackend = true) + public function __construct($basePath, $isBackend = true) { - $this->logger = $logger; - if (!static::isDirectoryUsable($basePath, false)) { throw new Exception('Basepath ' . $basePath . ' isn\'t usable.'); } @@ -311,21 +301,6 @@ class App return $this->mode; } - /** - * Returns the Logger of the Application - * - * @return LoggerInterface The Logger - * @throws InternalServerErrorException when the logger isn't created - */ - public function getLogger() - { - if (empty($this->logger)) { - throw new InternalServerErrorException('Logger of the Application is not defined'); - } - - return $this->logger; - } - /** * Reloads the whole app instance */ @@ -353,8 +328,6 @@ class App Core\L10n::init(); $this->process_id = Core\System::processID('log'); - - Core\Logger::setLogger($this->logger); } /** diff --git a/src/BaseObject.php b/src/BaseObject.php index 39f98a38fd..d006c249de 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -6,8 +6,6 @@ namespace Friendica; require_once 'boot.php'; -use Friendica\Util\LoggerFactory; - /** * Basic object * @@ -27,8 +25,7 @@ class BaseObject public static function getApp() { if (empty(self::$app)) { - $logger = $logger = LoggerFactory::create('app'); - self::$app = new App(dirname(__DIR__), $logger); + self::$app = new App(dirname(__DIR__)); } return self::$app; diff --git a/src/Core/Addon.php b/src/Core/Addon.php index ee89f4d772..a06982820e 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -4,7 +4,9 @@ */ namespace Friendica\Core; +use Friendica\App; use Friendica\BaseObject; +use Friendica\Core\Logger; use Friendica\Database\DBA; /** @@ -74,7 +76,7 @@ class Addon extends BaseObject */ public static function uninstall($addon) { - Logger::notice("Addon {addon}: {action}", ['action' => 'uninstall', 'addon' => $addon]); + Logger::log("Addons: uninstalling " . $addon); DBA::delete('addon', ['name' => $addon]); @include_once('addon/' . $addon . '/' . $addon . '.php'); @@ -99,7 +101,7 @@ class Addon extends BaseObject if (!file_exists('addon/' . $addon . '/' . $addon . '.php')) { return false; } - Logger::notice("Addon {addon}: {action}", ['action' => 'install', 'addon' => $addon]); + Logger::log("Addons: installing " . $addon); $t = @filemtime('addon/' . $addon . '/' . $addon . '.php'); @include_once('addon/' . $addon . '/' . $addon . '.php'); if (function_exists($addon . '_install')) { @@ -124,7 +126,7 @@ class Addon extends BaseObject } return true; } else { - Logger::error("Addon {addon}: {action} failed", ['action' => 'uninstall', 'addon' => $addon]); + Logger::log("Addons: FAILED installing " . $addon); return false; } } @@ -154,8 +156,7 @@ class Addon extends BaseObject $t = @filemtime($fname); foreach ($installed as $i) { if (($i['name'] == $addon) && ($i['timestamp'] != $t)) { - - Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $i['name']]); + Logger::log('Reloading addon: ' . $i['name']); @include_once($fname); if (function_exists($addon . '_uninstall')) { diff --git a/src/Core/Logger.php b/src/Core/Logger.php index c6b81e0cc9..f9cb8cde01 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -5,297 +5,82 @@ namespace Friendica\Core; use Friendica\BaseObject; -use Friendica\Network\HTTPException\InternalServerErrorException; -use Friendica\Util\LoggerFactory; -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; +use Friendica\Core\Config; +use Friendica\Util\DateTimeFormat; +use ReflectionClass; /** * @brief Logger functions */ class Logger extends BaseObject { - /** - * @see Logger::error() - */ - const WARNING = LogLevel::ERROR; - /** - * @see Logger::warning() - */ - const INFO = LogLevel::WARNING; - /** - * @see Logger::notice() - */ - const TRACE = LogLevel::NOTICE; - /** - * @see Logger::info() - */ - const DEBUG = LogLevel::INFO; - /** - * @see Logger::debug() - */ - const DATA = LogLevel::DEBUG; - /** - * @see Logger::debug() - */ - const ALL = LogLevel::DEBUG; + // Log levels: + const WARNING = 0; + const INFO = 1; + const TRACE = 2; + const DEBUG = 3; + const DATA = 4; + const ALL = 5; - /** - * @var array the legacy loglevels - * @deprecated 2019.03 use PSR-3 loglevels - * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel - * - */ - public static $levels = [ - self::WARNING => 'Warning', - self::INFO => 'Info', - self::TRACE => 'Trace', - self::DEBUG => 'Debug', - self::DATA => 'Data', - self::ALL => 'All', - ]; - - /** - * @var LoggerInterface A PSR-3 compliant logger instance - */ - private static $logger; - - /** - * @var LoggerInterface A PSR-3 compliant logger instance for developing only - */ - private static $devLogger; - - /** - * Sets the default logging handler for Friendica. - * @todo Can be combined with other handlers too if necessary, could be configurable. - * - * @param LoggerInterface $logger The Logger instance of this Application - * - * @throws InternalServerErrorException if the logger factory is incompatible to this logger - */ - public static function setLogger($logger) - { - $debugging = Config::get('system', 'debugging'); - $logfile = Config::get('system', 'logfile'); - $loglevel = intval(Config::get('system', 'loglevel')); - - if (!$debugging || !$logfile) { - return; - } - - $level = self::mapPSR3Level($loglevel); - LoggerFactory::addStreamHandler($logger, $logfile, $level); - - self::$logger = $logger; - - $logfile = Config::get('system', 'dlogfile'); - - if (!$logfile) { - return; - } - - $developIp = Config::get('system', 'dlogip'); - - self::$devLogger = LoggerFactory::createDev('develop', $developIp); - LoggerFactory::addStreamHandler(self::$devLogger, $logfile, LogLevel::DEBUG); - } - - /** - * System is unusable. - * @see LoggerInterface::emergency() - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function emergency($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->emergency($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Action must be taken immediately. - * @see LoggerInterface::alert() - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function alert($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->alert($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Critical conditions. - * @see LoggerInterface::critical() - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function critical($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->critical($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * @see LoggerInterface::error() - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function error($message, $context = []) - { - if (!isset(self::$logger)) { - echo "not set!?\n"; - return; - } - - $stamp1 = microtime(true); - self::$logger->error($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Exceptional occurrences that are not errors. - * @see LoggerInterface::warning() - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function warning($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->warning($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Normal but significant events. - * @see LoggerInterface::notice() - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function notice($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->notice($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Interesting events. - * @see LoggerInterface::info() - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - * - */ - public static function info($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->info($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } - - /** - * Detailed debug information. - * @see LoggerInterface::debug() - * - * @param string $message - * @param array $context - * - * @return void - */ - public static function debug($message, $context = []) - { - if (!isset(self::$logger)) { - return; - } - - $stamp1 = microtime(true); - self::$logger->debug($message, $context); - self::getApp()->saveTimestamp($stamp1, 'file'); - } + 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 - * - * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead */ - public static function log($msg, $level = LogLevel::NOTICE) + public static function log($msg, $level = self::INFO) { - if (!isset(self::$logger)) { - return; - } + $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); - self::$logger->log($level, $msg); - self::getApp()->saveTimestamp($stamp1, "file"); + @file_put_contents($logfile, $logline, FILE_APPEND); + $a->saveTimestamp($stamp1, "file"); } /** @@ -305,16 +90,47 @@ class Logger extends BaseObject * personally without background noise * * @param string $msg - * @param string $level */ - public static function devLog($msg, $level = LogLevel::DEBUG) + public static function devLog($msg) { - if (!isset(self::$logger)) { - return; - } + $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; + } + + if (!is_string($msg)) { + $msg = var_export($msg, true); + } + + $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); - self::$devLogger->log($level, $msg); - self::getApp()->saveTimestamp($stamp1, "file"); + @file_put_contents($logfile, $logline, FILE_APPEND); + $a->saveTimestamp($stamp1, "file"); } } diff --git a/src/Util/Logger/FriendicaDevelopHandler.php b/src/Util/Logger/FriendicaDevelopHandler.php deleted file mode 100644 index 908d7052cc..0000000000 --- a/src/Util/Logger/FriendicaDevelopHandler.php +++ /dev/null @@ -1,50 +0,0 @@ -developerIp = $developerIp; - } - - /** - * {@inheritdoc} - */ - public function handle(array $record) - { - if (!$this->isHandling($record)) { - return false; - } - - /// Just in case the remote IP is the same as the developer IP log the output - if (!is_null($this->developerIp) && $_SERVER['REMOTE_ADDR'] != $this->developerIp) - { - return false; - } - - return false === $this->bubble; - } -} diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php deleted file mode 100644 index 71239edbb3..0000000000 --- a/src/Util/LoggerFactory.php +++ /dev/null @@ -1,116 +0,0 @@ -pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); - $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); - - // Add more information in case of a warning and more - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING, [], 1)); - - return $logger; - } - - /** - * Creates a new PSR-3 compliant develop logger - * - * If you want to debug only interactions from your IP or the IP of a remote server for federation debug, - * you'll use this logger instance for the duration of your work. - * - * It should never get filled during normal usage of Friendica - * - * @param string $channel The channel of the logger instance - * @param string $developerIp The IP of the developer who wants to use the logger - * - * @return LoggerInterface The PSR-3 compliant logger instance - */ - public static function createDev($channel, $developerIp) - { - $logger = new Monolog\Logger($channel); - $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); - $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); - - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(Loglevel::DEBUG, [], 1)); - - $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); - - return $logger; - } - - /** - * Adding a handler to a given logger instance - * - * @param LoggerInterface $logger The logger instance - * @param mixed $stream The stream which handles the logger output - * @param string $level The level, for which this handler at least should handle logging - * - * @return void - * - * @throws InternalServerErrorException if the logger is incompatible to the logger factory - * @throws \Exception in case of general failures - */ - public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE) - { - if ($logger instanceof Monolog\Logger) { - $fileHandler = new Monolog\Handler\StreamHandler($stream, Monolog\Logger::toMonologLevel($level)); - - $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); - $fileHandler->setFormatter($formatter); - - $logger->pushHandler($fileHandler); - } else { - throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); - } - } - - /** - * This method enables the test mode of a given logger - * - * @param LoggerInterface $logger The logger - * - * @return Monolog\Handler\TestHandler the Handling for tests - * - * @throws InternalServerErrorException if the logger is incompatible to the logger factory - */ - public static function enableTest($logger) - { - if ($logger instanceof Monolog\Logger) { - // disable every handler so far - $logger->pushHandler(new Monolog\Handler\NullHandler()); - - // enable the test handler - $fileHandler = new Monolog\Handler\TestHandler(); - $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); - $fileHandler->setFormatter($formatter); - - $logger->pushHandler($fileHandler); - - return $fileHandler; - } else { - throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); - } - } -} diff --git a/tests/include/ApiTest.php b/tests/include/ApiTest.php index cf7571073a..ede84a0eb9 100644 --- a/tests/include/ApiTest.php +++ b/tests/include/ApiTest.php @@ -11,8 +11,6 @@ use Friendica\Core\PConfig; use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Network\HTTPException; -use Friendica\Util\LoggerFactory; -use Monolog\Handler\TestHandler; require_once __DIR__ . '/../../include/api.php'; @@ -24,11 +22,6 @@ require_once __DIR__ . '/../../include/api.php'; */ class ApiTest extends DatabaseTest { - /** - * @var TestHandler Can handle log-outputs - */ - protected $logOutput; - /** * Create variables used by tests. */ @@ -37,7 +30,6 @@ class ApiTest extends DatabaseTest parent::setUp(); $this->app = BaseObject::getApp(); - $this->logOutput = LoggerFactory::enableTest($this->app->getLogger()); // User data that the test database is populated with $this->selfUser = [ diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index 7b9ff3aa15..f8542f7b38 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,7 +7,6 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; -use Friendica\Util\LoggerFactory; use PHPUnit\Framework\TestCase; /** @@ -39,9 +38,7 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $logger = $logger = LoggerFactory::create('test'); - $app = new App(__DIR__ . '/../../', $logger); - LoggerFactory::enableTest($logger); + $app = new App(__DIR__ . '/../../'); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); } diff --git a/update.php b/update.php index 2ed1a81997..2663da21f0 100644 --- a/update.php +++ b/update.php @@ -332,8 +332,8 @@ function update_1298() $fail++; } else { DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); - Logger::notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key, - 'was' => $data[$translateKey]]); + logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . + ' (was: ' . $data[$translateKey] . ')'); Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); Contact::updateSelfFromUserID($data['id']); GContact::updateForUser($data['id']); @@ -342,7 +342,7 @@ function update_1298() } } - Logger::notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]); + Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); } return Update::SUCCESS; } From 518f28a7bf0b2e21feb82f7ba2477406e818313e Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 4 Jan 2019 07:45:08 +0100 Subject: [PATCH 135/728] Small fixes - Avoid an intermediate variable - Use `rawContent()` in `Attach` module - Small typo --- mod/videos.php | 3 +-- src/Core/Console/Storage.php | 2 +- src/Module/Attach.php | 8 +++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/mod/videos.php b/mod/videos.php index a117e0f1a8..408e2acaa6 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -114,8 +114,7 @@ function videos_post(App $a) $video_id = $_POST['id']; - $r = Attach::exists(['id' => $video_id, 'uid' => local_user()]); - if ($r === true) { + if (Attach::exists(['id' => $video_id, 'uid' => local_user()])) { // delete the attachment Attach::delete(['id' => $video_id, 'uid' => local_user()]); diff --git a/src/Core/Console/Storage.php b/src/Core/Console/Storage.php index 601019fa8b..f9674c4d19 100644 --- a/src/Core/Console/Storage.php +++ b/src/Core/Console/Storage.php @@ -22,7 +22,7 @@ Synopsis Show this help bin/console storage list - List avaiable storage backends + List available storage backends bin/console storage set Set current storage backend diff --git a/src/Module/Attach.php b/src/Module/Attach.php index eed1275c58..dd4e368058 100644 --- a/src/Module/Attach.php +++ b/src/Module/Attach.php @@ -18,11 +18,9 @@ use Friendica\Model\Attach as MAttach; class Attach extends BaseModule { /** - * @brief Module initializer - * - * Fetch an attached file given the id + * @brief Return to user an attached file given the id */ - public static function init() + public static function rawContent() { $a = self::getApp(); if ($a->argc != 2) { @@ -64,4 +62,4 @@ class Attach extends BaseModule exit(); // NOTREACHED } -} \ No newline at end of file +} From 2e602afd3e1be80dc0e14db98ce0445c58d5231c Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Sun, 30 Dec 2018 21:42:56 +0100 Subject: [PATCH 136/728] Add Monolog --- bin/auth_ejabberd.php | 5 +- bin/console.php | 6 +- bin/daemon.php | 18 +- bin/worker.php | 5 +- composer.json | 3 +- composer.lock | 127 +++++- include/api.php | 78 ++-- index.php | 6 +- mod/acl.php | 2 +- src/App.php | 33 +- src/BaseObject.php | 5 +- src/Core/Addon.php | 11 +- src/Core/Logger.php | 416 +++++++++++++++----- src/Util/Logger/FriendicaDevelopHandler.php | 50 +++ src/Util/LoggerFactory.php | 116 ++++++ tests/include/ApiTest.php | 8 + tests/src/BaseObjectTest.php | 5 +- update.php | 6 +- 18 files changed, 736 insertions(+), 164 deletions(-) create mode 100644 src/Util/Logger/FriendicaDevelopHandler.php create mode 100644 src/Util/LoggerFactory.php diff --git a/bin/auth_ejabberd.php b/bin/auth_ejabberd.php index e8a7b4963f..a6f30d2019 100755 --- a/bin/auth_ejabberd.php +++ b/bin/auth_ejabberd.php @@ -34,6 +34,7 @@ use Friendica\App; use Friendica\Util\ExAuth; +use Friendica\Util\LoggerFactory; if (sizeof($_SERVER["argv"]) == 0) { die(); @@ -51,7 +52,9 @@ chdir($directory); require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = LoggerFactory::create('auth_ejabberd'); + +$a = new App(dirname(__DIR__), $logger); if ($a->getMode()->isNormal()) { $oAuth = new ExAuth(); diff --git a/bin/console.php b/bin/console.php index c39df953f2..9264e3eee4 100755 --- a/bin/console.php +++ b/bin/console.php @@ -3,7 +3,11 @@ require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new Friendica\App(dirname(__DIR__)); +use Friendica\Util\LoggerFactory; + +$logger = LoggerFactory::create('console'); + +$a = new Friendica\App(dirname(__DIR__), $logger); \Friendica\BaseObject::setApp($a); (new Friendica\Core\Console($argv))->execute(); diff --git a/bin/daemon.php b/bin/daemon.php index e60e32b19e..c7b321c11c 100755 --- a/bin/daemon.php +++ b/bin/daemon.php @@ -9,9 +9,9 @@ use Friendica\App; use Friendica\Core\Config; -use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Util\LoggerFactory; // Get options $shortopts = 'f'; @@ -32,7 +32,9 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = LoggerFactory::create('daemon'); + +$a = new App(dirname(__DIR__), $logger); if ($a->getMode()->isInstall()) { die("Friendica isn't properly installed yet.\n"); @@ -102,7 +104,7 @@ if ($mode == "stop") { unlink($pidfile); - Logger::log("Worker daemon process $pid was killed.", Logger::DEBUG); + $logger->notice("Worker daemon process was killed", ["pid" => $pid]); Config::set('system', 'worker_daemon_mode', false); die("Worker daemon process $pid was killed.\n"); @@ -112,7 +114,7 @@ if (!empty($pid) && posix_kill($pid, 0)) { die("Daemon process $pid is already running.\n"); } -Logger::log('Starting worker daemon.', Logger::DEBUG); +$logger->notice('Starting worker daemon.', ["pid" => $pid]); if (!$foreground) { echo "Starting worker daemon.\n"; @@ -160,7 +162,7 @@ $last_cron = 0; // Now running as a daemon. while (true) { if (!$do_cron && ($last_cron + $wait_interval) < time()) { - Logger::log('Forcing cron worker call.', Logger::DEBUG); + $logger->info('Forcing cron worker call.', ["pid" => $pid]); $do_cron = true; } @@ -174,7 +176,7 @@ while (true) { $last_cron = time(); } - Logger::log("Sleeping", Logger::DEBUG); + $logger->info("Sleeping", ["pid" => $pid]); $start = time(); do { $seconds = (time() - $start); @@ -191,10 +193,10 @@ while (true) { if ($timeout) { $do_cron = true; - Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG); + $logger->info("Woke up after $wait_interval seconds.", ["pid" => $pid, 'sleep' => $wait_interval]); } else { $do_cron = false; - Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG); + $logger->info("Worker jobs are calling to be forked.", ["pid" => $pid]); } } diff --git a/bin/worker.php b/bin/worker.php index 78b7a58a05..a64b6a8330 100755 --- a/bin/worker.php +++ b/bin/worker.php @@ -8,6 +8,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Core\Update; +use Friendica\Util\LoggerFactory; // Get options $shortopts = 'sn'; @@ -28,7 +29,9 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) { require dirname(__DIR__) . '/vendor/autoload.php'; -$a = new App(dirname(__DIR__)); +$logger = LoggerFactory::create('worker'); + +$a = new App(dirname(__DIR__), $logger); // Check the database structure and possibly fixes it Update::check(true); diff --git a/composer.json b/composer.json index 8ac4c37724..2f254877de 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,8 @@ "npm-asset/jgrowl": "^1.4", "npm-asset/fullcalendar": "^3.0.1", "npm-asset/cropperjs": "1.2.2", - "npm-asset/imagesloaded": "4.1.4" + "npm-asset/imagesloaded": "4.1.4", + "monolog/monolog": "^1.24" }, "repositories": [ { diff --git a/composer.lock b/composer.lock index 1e87dab8a4..9d5728fc2d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51f7b3ab622038d7ef62ed03c06b48d0", + "content-hash": "8cf7268fbcae8a22a518b9e7727eab84", "packages": [ { "name": "asika/simple-console", @@ -809,6 +809,84 @@ ], "time": "2018-09-01T15:05:15+00:00" }, + { + "name": "monolog/monolog", + "version": "1.24.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2018-11-05T09:00:11+00:00" + }, { "name": "npm-asset/cropperjs", "version": "1.2.2", @@ -1810,6 +1888,53 @@ ], "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, { "name": "seld/cli-prompt", "version": "1.0.3", diff --git a/include/api.php b/include/api.php index f28f182532..57bbd63993 100644 --- a/include/api.php +++ b/include/api.php @@ -55,6 +55,8 @@ define('API_METHOD_GET', 'GET'); define('API_METHOD_POST', 'POST,PUT'); define('API_METHOD_DELETE', 'POST,DELETE'); +define('API_LOG_PREFIX', 'API {action} - '); + $API = []; $called_api = []; @@ -97,9 +99,9 @@ function api_source() return "Twidere"; } - Logger::log("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'Unrecognized user-agent', ['module' => 'api', 'action' => 'source', 'http_user_agent' => $_SERVER['HTTP_USER_AGENT']]); } else { - Logger::log("Empty user-agent", Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'Empty user-agent', ['module' => 'api', 'action' => 'source']); } return "api"; @@ -181,7 +183,7 @@ function api_login(App $a) var_dump($consumer, $token); die(); } catch (Exception $e) { - Logger::log($e); + Logger::warning(API_LOG_PREFIX . 'error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); } // workaround for HTTP-auth in CGI mode @@ -195,7 +197,7 @@ function api_login(App $a) } if (empty($_SERVER['PHP_AUTH_USER'])) { - Logger::log('API_login: ' . print_r($_SERVER, true), Logger::DEBUG); + Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); throw new UnauthorizedException("This API requires login"); } @@ -236,7 +238,7 @@ function api_login(App $a) } if (!DBA::isResult($record)) { - Logger::log('API_login failure: ' . print_r($_SERVER, true), Logger::DEBUG); + Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); header('WWW-Authenticate: Basic realm="Friendica"'); //header('HTTP/1.0 401 Unauthorized'); //die('This api requires login'); @@ -309,33 +311,35 @@ function api_call(App $a) api_login($a); } - Logger::log('API call for ' . $a->user['username'] . ': ' . $a->query_string); - Logger::log('API parameters: ' . print_r($_REQUEST, true)); + Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]); + Logger::debug(API_LOG_PREFIX . 'parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]); $stamp = microtime(true); $return = call_user_func($info['func'], $type); $duration = (float) (microtime(true) - $stamp); - Logger::log("API call duration: " . round($duration, 2) . "\t" . $a->query_string, Logger::DEBUG); + + Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username'], 'duration' => round($duration, 2)]); if (Config::get("system", "profiler")) { $duration = microtime(true)-$a->performance["start"]; /// @TODO round() really everywhere? - 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), - round($a->performance["database_write"], 3), - round($a->performance["cache"], 3), - round($a->performance["cache_write"], 3), - round($a->performance["network"], 2), - round($a->performance["file"], 2), - round($duration - ($a->performance["database"] - + $a->performance["cache"] + $a->performance["cache_write"] - + $a->performance["network"] + $a->performance["file"]), 2), - round($duration, 2) - ), - Logger::DEBUG + Logger::debug( + API_LOG_PREFIX . 'performance', + [ + 'module' => 'api', + 'action' => 'call', + 'database_read' => round($a->performance["database"] - $a->performance["database_write"], 3), + 'database_write' => round($a->performance["database_write"], 3), + 'cache_read' => round($a->performance["cache"], 3), + 'cache_write' => round($a->performance["cache_write"], 3), + 'network_io' => round($a->performance["network"], 2), + 'file_io' => round($a->performance["file"], 2), + 'other_io' => round($duration - ($a->performance["database"] + + $a->performance["cache"] + $a->performance["cache_write"] + + $a->performance["network"] + $a->performance["file"]), 2), + 'total' => round($duration, 2) + ] ); if (Config::get("rendertime", "callstack")) { @@ -376,7 +380,7 @@ function api_call(App $a) $o .= $func . ": " . $time . "\n"; } } - Logger::log($o, Logger::DEBUG); + Logger::debug(API_LOG_PREFIX . $o, ['module' => 'api', 'action' => 'call']); } } @@ -413,7 +417,7 @@ function api_call(App $a) } } - Logger::log('API call not implemented: ' . $a->query_string); + Logger::warning(API_LOG_PREFIX . 'not implemented', ['module' => 'api', 'action' => 'call']); throw new NotImplementedException(); } catch (HTTPException $e) { header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}"); @@ -522,7 +526,7 @@ function api_get_user(App $a, $contact_id = null) $extra_query = ""; $url = ""; - Logger::log("api_get_user: Fetching user data for user ".$contact_id, Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]); // Searching for contact URL if (!is_null($contact_id) && (intval($contact_id) == 0)) { @@ -606,7 +610,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::log("api_get_user: user ".$user, Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]); if (!$user) { if (api_user() === false) { @@ -618,7 +622,7 @@ function api_get_user(App $a, $contact_id = null) } } - Logger::log('api_user: ' . $extra_query . ', user: ' . $user); + Logger::info(API_LOG_PREFIX . 'found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]); // user info $uinfo = q( @@ -1937,7 +1941,7 @@ function api_conversation_show($type) $id = intval(defaults($a->argv, 4, 0)); } - Logger::log('API: api_conversation_show: '.$id); + Logger::info(API_LOG_PREFIX . '{subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $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]); @@ -2331,7 +2335,7 @@ function api_favorites($type) // in friendica starred item are private // return favorites only for self - Logger::log('api_favorites: self:' . $user_info['self']); + Logger::info(API_LOG_PREFIX . 'for {self}', ['module' => 'api', 'action' => 'favorites', 'self' => $user_info['self']]); if ($user_info['self'] == 0) { $ret = []; @@ -3694,7 +3698,7 @@ function api_friendships_destroy($type) $contact_id = defaults($_REQUEST, 'user_id'); if (empty($contact_id)) { - Logger::log("No user_id specified", Logger::DEBUG); + Logger::notice(API_LOG_PREFIX . 'No user_id specified', ['module' => 'api', 'action' => 'friendships_destroy']); throw new BadRequestException("no user_id specified"); } @@ -3702,7 +3706,7 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]); if(!DBA::isResult($contact)) { - Logger::log("No contact found for ID" . $contact_id, Logger::DEBUG); + Logger::notice(API_LOG_PREFIX . 'No contact found for ID {contact}', ['module' => 'api', 'action' => 'friendships_destroy', 'contact' => $contact_id]); throw new NotFoundException("no contact found to given ID"); } @@ -3714,12 +3718,12 @@ function api_friendships_destroy($type) $contact = DBA::selectFirst('contact', [], $condition); if (!DBA::isResult($contact)) { - Logger::log("Not following Contact", Logger::DEBUG); + Logger::notice(API_LOG_PREFIX . 'Not following contact', ['module' => 'api', 'action' => 'friendships_destroy']); throw new NotFoundException("Not following Contact"); } if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { - Logger::log("Not supported", Logger::DEBUG); + Logger::notice(API_LOG_PREFIX . 'Not supported for {network}', ['module' => 'api', 'action' => 'friendships_destroy', 'network' => $contact['network']]); throw new ExpectationFailedException("Not supported"); } @@ -3730,7 +3734,7 @@ function api_friendships_destroy($type) Contact::terminateFriendship($owner, $contact, $dissolve); } else { - Logger::log("No owner found", Logger::DEBUG); + Logger::notice(API_LOG_PREFIX . 'No owner {uid} found', ['module' => 'api', 'action' => 'friendships_destroy', 'uid' => $uid]); throw new NotFoundException("Error Processing Request"); } @@ -4837,7 +4841,7 @@ function api_friendica_remoteauth() 'sec' => $sec, 'expire' => time() + 45]; DBA::insert('profile_check', $fields); - Logger::log($contact['name'] . ' ' . $sec, Logger::DEBUG); + Logger::info(API_LOG_PREFIX . 'for contact {contact}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); $dest = ($url ? '&destination_url=' . $url : ''); System::externalRedirect( @@ -5086,7 +5090,7 @@ function api_in_reply_to($item) // https://github.com/friendica/friendica/issues/1010 // This is a bugfix for that. if (intval($in_reply_to['status_id']) == intval($item['id'])) { - Logger::log('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], Logger::DEBUG); + Logger::warning(API_LOG_PREFIX . 'ID {id} is similar to reply-to {reply-to}', ['module' => 'api', 'action' => 'in_reply_to', 'id' => $item['id'], 'reply-to' => $in_reply_to['status_id']]); $in_reply_to['status_id'] = null; $in_reply_to['user_id'] = null; $in_reply_to['status_id_str'] = null; diff --git a/index.php b/index.php index f2aea64685..c2dd31bcf2 100644 --- a/index.php +++ b/index.php @@ -5,6 +5,7 @@ */ use Friendica\App; +use Friendica\Util\LoggerFactory; if (!file_exists(__DIR__ . '/vendor/autoload.php')) { die('Vendor path not found. Please execute "bin/composer.phar --no-dev install" on the command line in the web root.'); @@ -12,9 +13,10 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) { require __DIR__ . '/vendor/autoload.php'; +$logger = LoggerFactory::create('index'); + // We assume that the index.php is called by a frontend process // The value is set to "true" by default in App -$a = new App(__DIR__, false); +$a = new App(__DIR__, $logger, false); $a->runFrontend(); - diff --git a/mod/acl.php b/mod/acl.php index fc67556739..03cb1ad63e 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -34,7 +34,7 @@ function acl_content(App $a) $search = $_REQUEST['query']; } - Logger::log("Searching for ".$search." - type ".$type." conversation ".$conv_id, Logger::DEBUG); + Logger::info('ACL {action} - {subaction}', ['module' => 'acl', 'action' => 'content', 'subaction' => 'search', 'search' => $search, 'type' => $type, 'conversation' => $conv_id]); if ($search != '') { $sql_extra = "AND `name` LIKE '%%" . DBA::escape($search) . "%%'"; diff --git a/src/App.php b/src/App.php index df350542ad..f5dba13dc0 100644 --- a/src/App.php +++ b/src/App.php @@ -8,8 +8,10 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; +use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; +use Psr\Log\LoggerInterface; /** * @@ -106,6 +108,11 @@ class App */ public $mobileDetect; + /** + * @var LoggerInterface The current logger of this App + */ + private $logger; + /** * Register a stylesheet file path to be included in the tag of every page. * Inclusion is done in App->initHead(). @@ -146,13 +153,16 @@ class App /** * @brief App constructor. * - * @param string $basePath Path to the app base folder - * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) + * @param string $basePath Path to the app base folder + * @param LoggerInterface $logger Logger of this application + * @param bool $isBackend Whether it is used for backend or frontend (Default true=backend) * * @throws Exception if the Basepath is not usable */ - public function __construct($basePath, $isBackend = true) + public function __construct($basePath, LoggerInterface $logger, $isBackend = true) { + $this->logger = $logger; + if (!static::isDirectoryUsable($basePath, false)) { throw new Exception('Basepath ' . $basePath . ' isn\'t usable.'); } @@ -301,6 +311,21 @@ class App return $this->mode; } + /** + * Returns the Logger of the Application + * + * @return LoggerInterface The Logger + * @throws InternalServerErrorException when the logger isn't created + */ + public function getLogger() + { + if (empty($this->logger)) { + throw new InternalServerErrorException('Logger of the Application is not defined'); + } + + return $this->logger; + } + /** * Reloads the whole app instance */ @@ -328,6 +353,8 @@ class App Core\L10n::init(); $this->process_id = Core\System::processID('log'); + + Core\Logger::setLogger($this->logger); } /** diff --git a/src/BaseObject.php b/src/BaseObject.php index d006c249de..39f98a38fd 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -6,6 +6,8 @@ namespace Friendica; require_once 'boot.php'; +use Friendica\Util\LoggerFactory; + /** * Basic object * @@ -25,7 +27,8 @@ class BaseObject public static function getApp() { if (empty(self::$app)) { - self::$app = new App(dirname(__DIR__)); + $logger = $logger = LoggerFactory::create('app'); + self::$app = new App(dirname(__DIR__), $logger); } return self::$app; diff --git a/src/Core/Addon.php b/src/Core/Addon.php index a06982820e..ee89f4d772 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -4,9 +4,7 @@ */ namespace Friendica\Core; -use Friendica\App; use Friendica\BaseObject; -use Friendica\Core\Logger; use Friendica\Database\DBA; /** @@ -76,7 +74,7 @@ class Addon extends BaseObject */ public static function uninstall($addon) { - Logger::log("Addons: uninstalling " . $addon); + Logger::notice("Addon {addon}: {action}", ['action' => 'uninstall', 'addon' => $addon]); DBA::delete('addon', ['name' => $addon]); @include_once('addon/' . $addon . '/' . $addon . '.php'); @@ -101,7 +99,7 @@ class Addon extends BaseObject if (!file_exists('addon/' . $addon . '/' . $addon . '.php')) { return false; } - Logger::log("Addons: installing " . $addon); + Logger::notice("Addon {addon}: {action}", ['action' => 'install', 'addon' => $addon]); $t = @filemtime('addon/' . $addon . '/' . $addon . '.php'); @include_once('addon/' . $addon . '/' . $addon . '.php'); if (function_exists($addon . '_install')) { @@ -126,7 +124,7 @@ class Addon extends BaseObject } return true; } else { - Logger::log("Addons: FAILED installing " . $addon); + Logger::error("Addon {addon}: {action} failed", ['action' => 'uninstall', 'addon' => $addon]); return false; } } @@ -156,7 +154,8 @@ class Addon extends BaseObject $t = @filemtime($fname); foreach ($installed as $i) { if (($i['name'] == $addon) && ($i['timestamp'] != $t)) { - Logger::log('Reloading addon: ' . $i['name']); + + Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $i['name']]); @include_once($fname); if (function_exists($addon . '_uninstall')) { diff --git a/src/Core/Logger.php b/src/Core/Logger.php index f9cb8cde01..1aaea665e2 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -5,82 +5,335 @@ namespace Friendica\Core; use Friendica\BaseObject; -use Friendica\Core\Config; -use Friendica\Util\DateTimeFormat; -use ReflectionClass; +use Friendica\Network\HTTPException\InternalServerErrorException; +use Friendica\Util\LoggerFactory; +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; /** * @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; + /** + * @see Logger::error() + */ + const WARNING = LogLevel::ERROR; + /** + * @see Logger::warning() + */ + const INFO = LogLevel::WARNING; + /** + * @see Logger::notice() + */ + const TRACE = LogLevel::NOTICE; + /** + * @see Logger::info() + */ + const DEBUG = LogLevel::INFO; + /** + * @see Logger::debug() + */ + const DATA = LogLevel::DEBUG; + /** + * @see Logger::debug() + */ + const ALL = LogLevel::DEBUG; - public static $levels = [ - self::WARNING => 'Warning', - self::INFO => 'Info', - self::TRACE => 'Trace', - self::DEBUG => 'Debug', - self::DATA => 'Data', - self::ALL => 'All', - ]; + /** + * @var array the legacy loglevels + * @deprecated 2019.03 use PSR-3 loglevels + * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel + * + */ + public static $levels = [ + self::WARNING => 'Warning', + self::INFO => 'Info', + self::TRACE => 'Trace', + self::DEBUG => 'Debug', + self::DATA => 'Data', + self::ALL => 'All', + ]; + + /** + * @var LoggerInterface A PSR-3 compliant logger instance + */ + private static $logger; + + /** + * @var LoggerInterface A PSR-3 compliant logger instance for developing only + */ + private static $devLogger; + + /** + * Sets the default logging handler for Friendica. + * @todo Can be combined with other handlers too if necessary, could be configurable. + * + * @param LoggerInterface $logger The Logger instance of this Application + * + * @throws InternalServerErrorException if the logger factory is incompatible to this logger + */ + public static function setLogger($logger) + { + $debugging = Config::get('system', 'debugging'); + $logfile = Config::get('system', 'logfile'); + $loglevel = Config::get('system', 'loglevel'); + + if (!$debugging || !$logfile) { + return; + } + + if (is_int($loglevel)) { + $loglevel = self::mapLegacyConfigDebugLevel($loglevel); + } + + LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); + + self::$logger = $logger; + + $logfile = Config::get('system', 'dlogfile'); + + if (!$logfile) { + return; + } + + $developIp = Config::get('system', 'dlogip'); + + self::$devLogger = LoggerFactory::createDev('develop', $developIp); + LoggerFactory::addStreamHandler(self::$devLogger, $logfile, LogLevel::DEBUG); + } + + /** + * Mapping a legacy level to the PSR-3 compliant levels + * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel + * + * @param int $level the level to be mapped + * + * @return string the PSR-3 compliant level + */ + private static function mapLegacyConfigDebugLevel($level) + { + switch ($level) { + // legacy WARNING + case 0: + return LogLevel::ERROR; + // legacy INFO + case 1: + return LogLevel::WARNING; + // legacy TRACE + case 2: + return LogLevel::NOTICE; + // legacy DEBUG + case 3: + return LogLevel::INFO; + // legacy DATA + case 4: + return LogLevel::DEBUG; + // legacy ALL + case 5: + return LogLevel::DEBUG; + // default if nothing set + default: + return LogLevel::NOTICE; + } + } + + /** + * System is unusable. + * @see LoggerInterface::emergency() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function emergency($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->emergency($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Action must be taken immediately. + * @see LoggerInterface::alert() + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function alert($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->alert($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Critical conditions. + * @see LoggerInterface::critical() + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function critical($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->critical($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * @see LoggerInterface::error() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function error($message, $context = []) + { + if (!isset(self::$logger)) { + echo "not set!?\n"; + return; + } + + $stamp1 = microtime(true); + self::$logger->error($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Exceptional occurrences that are not errors. + * @see LoggerInterface::warning() + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function warning($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->warning($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Normal but significant events. + * @see LoggerInterface::notice() + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function notice($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->notice($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Interesting events. + * @see LoggerInterface::info() + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + * + */ + public static function info($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->info($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } + + /** + * Detailed debug information. + * @see LoggerInterface::debug() + * + * @param string $message + * @param array $context + * + * @return void + */ + public static function debug($message, $context = []) + { + if (!isset(self::$logger)) { + return; + } + + $stamp1 = microtime(true); + self::$logger->debug($message, $context); + self::getApp()->saveTimestamp($stamp1, 'file'); + } /** * @brief Logs the given message at the given log level * * @param string $msg * @param int $level + * + * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead */ - public static function log($msg, $level = self::INFO) + public static function log($msg, $level = LogLevel::NOTICE) { - $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 - ); + if (!isset(self::$logger)) { + return; + } $stamp1 = microtime(true); - @file_put_contents($logfile, $logline, FILE_APPEND); - $a->saveTimestamp($stamp1, "file"); + self::$logger->log($level, $msg); + self::getApp()->saveTimestamp($stamp1, "file"); } /** @@ -90,47 +343,16 @@ class Logger extends BaseObject * personally without background noise * * @param string $msg + * @param string $level */ - public static function devLog($msg) + public static function devLog($msg, $level = LogLevel::DEBUG) { - $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; - } - - if (!is_string($msg)) { - $msg = var_export($msg, true); - } - - $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 - ); + if (!isset(self::$logger)) { + return; + } $stamp1 = microtime(true); - @file_put_contents($logfile, $logline, FILE_APPEND); - $a->saveTimestamp($stamp1, "file"); + self::$devLogger->log($level, $msg); + self::getApp()->saveTimestamp($stamp1, "file"); } } diff --git a/src/Util/Logger/FriendicaDevelopHandler.php b/src/Util/Logger/FriendicaDevelopHandler.php new file mode 100644 index 0000000000..908d7052cc --- /dev/null +++ b/src/Util/Logger/FriendicaDevelopHandler.php @@ -0,0 +1,50 @@ +developerIp = $developerIp; + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return false; + } + + /// Just in case the remote IP is the same as the developer IP log the output + if (!is_null($this->developerIp) && $_SERVER['REMOTE_ADDR'] != $this->developerIp) + { + return false; + } + + return false === $this->bubble; + } +} diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php new file mode 100644 index 0000000000..71239edbb3 --- /dev/null +++ b/src/Util/LoggerFactory.php @@ -0,0 +1,116 @@ +pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + + // Add more information in case of a warning and more + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING, [], 1)); + + return $logger; + } + + /** + * Creates a new PSR-3 compliant develop logger + * + * If you want to debug only interactions from your IP or the IP of a remote server for federation debug, + * you'll use this logger instance for the duration of your work. + * + * It should never get filled during normal usage of Friendica + * + * @param string $channel The channel of the logger instance + * @param string $developerIp The IP of the developer who wants to use the logger + * + * @return LoggerInterface The PSR-3 compliant logger instance + */ + public static function createDev($channel, $developerIp) + { + $logger = new Monolog\Logger($channel); + $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); + $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + + $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(Loglevel::DEBUG, [], 1)); + + $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); + + return $logger; + } + + /** + * Adding a handler to a given logger instance + * + * @param LoggerInterface $logger The logger instance + * @param mixed $stream The stream which handles the logger output + * @param string $level The level, for which this handler at least should handle logging + * + * @return void + * + * @throws InternalServerErrorException if the logger is incompatible to the logger factory + * @throws \Exception in case of general failures + */ + public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE) + { + if ($logger instanceof Monolog\Logger) { + $fileHandler = new Monolog\Handler\StreamHandler($stream, Monolog\Logger::toMonologLevel($level)); + + $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); + $fileHandler->setFormatter($formatter); + + $logger->pushHandler($fileHandler); + } else { + throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); + } + } + + /** + * This method enables the test mode of a given logger + * + * @param LoggerInterface $logger The logger + * + * @return Monolog\Handler\TestHandler the Handling for tests + * + * @throws InternalServerErrorException if the logger is incompatible to the logger factory + */ + public static function enableTest($logger) + { + if ($logger instanceof Monolog\Logger) { + // disable every handler so far + $logger->pushHandler(new Monolog\Handler\NullHandler()); + + // enable the test handler + $fileHandler = new Monolog\Handler\TestHandler(); + $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); + $fileHandler->setFormatter($formatter); + + $logger->pushHandler($fileHandler); + + return $fileHandler; + } else { + throw new InternalServerErrorException('Logger instance incompatible for MonologFactory'); + } + } +} diff --git a/tests/include/ApiTest.php b/tests/include/ApiTest.php index ede84a0eb9..cf7571073a 100644 --- a/tests/include/ApiTest.php +++ b/tests/include/ApiTest.php @@ -11,6 +11,8 @@ use Friendica\Core\PConfig; use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Network\HTTPException; +use Friendica\Util\LoggerFactory; +use Monolog\Handler\TestHandler; require_once __DIR__ . '/../../include/api.php'; @@ -22,6 +24,11 @@ require_once __DIR__ . '/../../include/api.php'; */ class ApiTest extends DatabaseTest { + /** + * @var TestHandler Can handle log-outputs + */ + protected $logOutput; + /** * Create variables used by tests. */ @@ -30,6 +37,7 @@ class ApiTest extends DatabaseTest parent::setUp(); $this->app = BaseObject::getApp(); + $this->logOutput = LoggerFactory::enableTest($this->app->getLogger()); // User data that the test database is populated with $this->selfUser = [ diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index f8542f7b38..7b9ff3aa15 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -7,6 +7,7 @@ namespace Friendica\Test; use Friendica\App; use Friendica\BaseObject; +use Friendica\Util\LoggerFactory; use PHPUnit\Framework\TestCase; /** @@ -38,7 +39,9 @@ class BaseObjectTest extends TestCase */ public function testSetApp() { - $app = new App(__DIR__ . '/../../'); + $logger = $logger = LoggerFactory::create('test'); + $app = new App(__DIR__ . '/../../', $logger); + LoggerFactory::enableTest($logger); $this->assertNull($this->baseObject->setApp($app)); $this->assertEquals($app, $this->baseObject->getApp()); } diff --git a/update.php b/update.php index 2663da21f0..2ed1a81997 100644 --- a/update.php +++ b/update.php @@ -332,8 +332,8 @@ function update_1298() $fail++; } else { DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]); - logger::log('Updated contact ' . $data['id'] . " to $translateKey " . $key . - ' (was: ' . $data[$translateKey] . ')'); + Logger::notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key, + 'was' => $data[$translateKey]]); Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']); Contact::updateSelfFromUserID($data['id']); GContact::updateForUser($data['id']); @@ -342,7 +342,7 @@ function update_1298() } } - Logger::log($translateKey . " fix completed. Success: $success. Fail: $fail"); + Logger::notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]); } return Update::SUCCESS; } From 279543deb95875cb9fa34dd81d081c1604da20e4 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Fri, 4 Jan 2019 09:42:41 +0100 Subject: [PATCH 137/728] Adding legacy code mapping for given configurations. --- config/settings.config.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/config/settings.config.php b/config/settings.config.php index 494a0e15be..2893b3f201 100644 --- a/config/settings.config.php +++ b/config/settings.config.php @@ -43,6 +43,10 @@ return [ // Themes users can change to in their settings. 'allowed_themes' => 'quattro,vier,duepuntozero,smoothly', + // debugging (boolean) + // Enable/Disable Debugging (logging) + 'debugging' => false, + // default_timezone (String) // Choose a default timezone. See https://secure.php.net/manual/en/timezones.php // It only applies to timestamps for anonymous viewers. @@ -66,6 +70,16 @@ return [ // Two-letters ISO 639-1 code. 'language' => 'en', + // logfile (String) + // The logfile for storing logs. + // Can be a full path or a relative path to the Friendica home directory + 'logfile' => 'friendica.log', + + // loglevel (String) + // The loglevel for all logs. + // Has to be one of these values: emergency, alert, critical, error, warning, notice, info, debug + 'loglevel' => 'notice', + // max_image_length (Integer) // An alternate way of limiting picture upload sizes. // Specify the maximum pixel length that pictures are allowed to be (for non-square pictures, it will apply to the longest side). From cbda92f25369e0e5b59c1e4bcd421ffab64ac2b0 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 5 Jan 2019 20:25:05 -0500 Subject: [PATCH 138/728] Add "on their post" label to notifications - Align tag notifications on comment notifications --- include/enotify.php | 117 ++++++++++++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/include/enotify.php b/include/enotify.php index e2b5105feb..f0b3dd7c0e 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -126,17 +126,17 @@ function notification($params) $subject = L10n::t('[Friendica:Notify] New mail received at %s', $sitename); $preamble = L10n::t('%1$s sent you a new private message at %2$s.', $params['source_name'], $sitename); - $epreamble = L10n::t('%1$s sent you %2$s.', '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', '[url=$itemlink]'.L10n::t('a private message').'[/url]'); + $epreamble = L10n::t('%1$s sent you %2$s.', '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', '[url=' . $itemlink . ']'.L10n::t('a private message').'[/url]'); $sitelink = L10n::t('Please visit %s to view and/or reply to your private messages.'); $tsitelink = sprintf($sitelink, $siteurl.'/message/'.$params['item']['id']); $hsitelink = sprintf($sitelink, ''.$sitename.''); } - if ($params['type'] == NOTIFY_COMMENT) { - $thread = Item::selectFirstThreadForUser($params['uid'] ,['ignored'], ['iid' => $parent_id]); - if (DBA::isResult($thread) && $thread["ignored"]) { - Logger::log("Thread ".$parent_id." will be ignored", Logger::DEBUG); + if ($params['type'] == NOTIFY_COMMENT || $params['type'] == NOTIFY_TAGSELF) { + $thread = Item::selectFirstThreadForUser($params['uid'], ['ignored'], ['iid' => $parent_id]); + if (DBA::isResult($thread) && $thread['ignored']) { + Logger::log('Thread ' . $parent_id . ' will be ignored', Logger::DEBUG); L10n::popLang(); return; } @@ -151,9 +151,7 @@ function notification($params) } // if it's a post figure out who's post it is. - $item = null; - if ($params['otype'] === 'item' && $parent_id) { $item = Item::selectFirstForUser($params['uid'], Item::ITEM_FIELDLIST, ['id' => $parent_id]); } @@ -162,44 +160,92 @@ function notification($params) $itemlink = $item['plink']; // "a post" - $dest_str = L10n::t('%1$s commented on [url=%2$s]a %3$s[/url]', - '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', - $itemlink, - $item_post_type - ); - - // "George Bull's post" - if ($item) { - $dest_str = L10n::t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]', - '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', + if ($params['type'] == NOTIFY_TAGSELF) { + $dest_str = L10n::t('%1$s tagged you on [url=%2$s]a %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $itemlink, - $item['author-name'], $item_post_type ); + } else { + $dest_str = L10n::t('%1$s commented on [url=%2$s]a %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item_post_type + ); + } + + // "George Bull's post" + if (DBA::isResult($item)) { + if ($params['type'] == NOTIFY_TAGSELF) { + $dest_str = L10n::t('%1$s tagged you on [url=%2$s]%3$s\'s %4$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item['author-name'], + $item_post_type + ); + } else { + $dest_str = L10n::t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item['author-name'], + $item_post_type + ); + } } // "your post" if (DBA::isResult($item) && $item['owner-id'] == $item['author-id'] && $item['wall']) { - $dest_str = L10n::t('%1$s commented on [url=%2$s]your %3$s[/url]', - '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', - $itemlink, - $item_post_type - ); + if ($params['type'] == NOTIFY_TAGSELF) { + $dest_str = L10n::t('%1$s tagged you on [url=%2$s]your %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item_post_type + ); + } else { + $dest_str = L10n::t('%1$s commented on [url=%2$s]your %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item_post_type + ); + } } - // Some mail softwares relies on subject field for threading. + // "their post" + if (DBA::isResult($item) && $item['author-link'] == $params['source_link']) { + if ($params['type'] == NOTIFY_TAGSELF) { + $dest_str = L10n::t('%1$s tagged you on [url=%2$s]their %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item_post_type + ); + } else { + $dest_str = L10n::t('%1$s commented on [url=%2$s]their %3$s[/url]', + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $itemlink, + $item_post_type + ); + } + } + + // Some mail software relies on subject field for threading. // So, we cannot have different subjects for notifications of the same thread. // Before this we have the name of the replier on the subject rendering - // differents subjects for messages on the same thread. + // different subjects for messages on the same thread. + if ($params['type'] == NOTIFY_TAGSELF) { + $subject = L10n::t('[Friendica:Notify] %s tagged you', $params['source_name']); - $subject = L10n::t('[Friendica:Notify] Comment to conversation #%1$d by %2$s', $parent_id, $params['source_name']); + $preamble = L10n::t('%1$s tagged you at %2$s', $params['source_name'], $sitename); + } else { + $subject = L10n::t('[Friendica:Notify] Comment to conversation #%1$d by %2$s', $parent_id, $params['source_name']); + + $preamble = L10n::t('%s commented on an item/conversation you have been following.', $params['source_name']); + } - $preamble = L10n::t('%s commented on an item/conversation you have been following.', $params['source_name']); $epreamble = $dest_str; $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf($sitelink, $siteurl); - $hsitelink = sprintf($sitelink, ''.$sitename.''); + $hsitelink = sprintf($sitelink, '' . $sitename . ''); $itemlink = $params['link']; } @@ -218,21 +264,6 @@ function notification($params) $itemlink = $params['link']; } - if ($params['type'] == NOTIFY_TAGSELF) { - $subject = L10n::t('[Friendica:Notify] %s tagged you', $params['source_name']); - - $preamble = L10n::t('%1$s tagged you at %2$s', $params['source_name'], $sitename); - $epreamble = L10n::t('%1$s [url=%2$s]tagged you[/url].', - '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', - $params['link'] - ); - - $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.'); - $tsitelink = sprintf($sitelink, $siteurl); - $hsitelink = sprintf($sitelink, ''.$sitename.''); - $itemlink = $params['link']; - } - if ($params['type'] == NOTIFY_SHARE) { $subject = L10n::t('[Friendica:Notify] %s shared a new post', $params['source_name']); From 5c30f1b177cb5371864e4066c9e555958c61b00b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 5 Jan 2019 20:38:31 -0500 Subject: [PATCH 139/728] Update translation strings --- view/lang/C/messages.po | 2493 ++++++++++++++++++++------------------- 1 file changed, 1284 insertions(+), 1209 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index ae41f68a1f..661d565f12 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: 2019.01\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-06 17:21-0500\n" +"POT-Creation-Date: 2019-01-21 10:24-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,36 +18,36 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: include/api.php:1137 +#: 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] "" -#: include/api.php:1151 +#: include/api.php:1154 #, 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] "" -#: include/api.php:1165 +#: include/api.php:1168 #, php-format msgid "Monthly posting limit of %d post reached. The post was rejected." msgstr "" -#: include/api.php:4327 mod/photos.php:94 mod/photos.php:202 mod/photos.php:735 -#: mod/photos.php:1166 mod/photos.php:1183 mod/photos.php:1676 -#: mod/profile_photo.php:88 mod/profile_photo.php:97 mod/profile_photo.php:106 -#: mod/profile_photo.php:215 mod/profile_photo.php:304 -#: mod/profile_photo.php:314 src/Model/User.php:681 src/Model/User.php:689 +#: include/api.php:4352 mod/photos.php:93 mod/photos.php:201 mod/photos.php:694 +#: mod/photos.php:1125 mod/photos.php:1142 mod/photos.php:1635 +#: mod/profile_photo.php:86 mod/profile_photo.php:95 mod/profile_photo.php:104 +#: mod/profile_photo.php:218 mod/profile_photo.php:308 +#: mod/profile_photo.php:318 src/Model/User.php:681 src/Model/User.php:689 #: src/Model/User.php:697 msgid "Profile Photos" msgstr "" #: include/conversation.php:156 include/conversation.php:292 -#: src/Model/Item.php:3259 +#: src/Model/Item.php:3221 msgid "event" msgstr "" @@ -58,7 +58,7 @@ msgid "status" msgstr "" #: include/conversation.php:164 include/conversation.php:300 -#: mod/subthread.php:88 mod/tagger.php:70 src/Model/Item.php:3261 +#: mod/subthread.php:88 mod/tagger.php:70 src/Model/Item.php:3223 msgid "photo" msgstr "" @@ -111,52 +111,52 @@ msgstr "" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: include/conversation.php:551 mod/photos.php:1507 mod/profiles.php:356 +#: include/conversation.php:551 mod/photos.php:1466 mod/profiles.php:356 msgid "Likes" msgstr "" -#: include/conversation.php:551 mod/photos.php:1507 mod/profiles.php:360 +#: include/conversation.php:551 mod/photos.php:1466 mod/profiles.php:360 msgid "Dislikes" msgstr "" #: include/conversation.php:552 include/conversation.php:1484 -#: mod/photos.php:1508 +#: mod/photos.php:1467 msgid "Attending" msgid_plural "Attending" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:552 mod/photos.php:1508 +#: include/conversation.php:552 mod/photos.php:1467 msgid "Not attending" msgstr "" -#: include/conversation.php:552 mod/photos.php:1508 +#: include/conversation.php:552 mod/photos.php:1467 msgid "Might attend" msgstr "" -#: include/conversation.php:632 mod/photos.php:1564 src/Object/Post.php:201 +#: include/conversation.php:632 mod/photos.php:1523 src/Object/Post.php:204 msgid "Select" msgstr "" -#: include/conversation.php:633 mod/admin.php:1962 mod/photos.php:1565 -#: mod/settings.php:729 src/Module/Contact.php:828 src/Module/Contact.php:1103 +#: include/conversation.php:633 mod/admin.php:2036 mod/photos.php:1524 +#: mod/settings.php:729 src/Module/Contact.php:830 src/Module/Contact.php:1105 msgid "Delete" msgstr "" -#: include/conversation.php:667 src/Object/Post.php:374 src/Object/Post.php:375 +#: include/conversation.php:667 src/Object/Post.php:377 src/Object/Post.php:378 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: include/conversation.php:679 src/Object/Post.php:362 +#: include/conversation.php:679 src/Object/Post.php:365 msgid "Categories:" msgstr "" -#: include/conversation.php:680 src/Object/Post.php:363 +#: include/conversation.php:680 src/Object/Post.php:366 msgid "Filed under:" msgstr "" -#: include/conversation.php:687 src/Object/Post.php:388 +#: include/conversation.php:687 src/Object/Post.php:391 #, php-format msgid "%s from %s" msgstr "" @@ -166,8 +166,8 @@ msgid "View in context" msgstr "" #: include/conversation.php:704 include/conversation.php:1152 -#: mod/editpost.php:108 mod/message.php:262 mod/message.php:444 -#: mod/photos.php:1480 mod/wallmessage.php:141 src/Object/Post.php:413 +#: mod/editpost.php:107 mod/message.php:262 mod/message.php:444 +#: mod/photos.php:1439 mod/wallmessage.php:141 src/Object/Post.php:417 msgid "Please wait" msgstr "" @@ -179,46 +179,46 @@ msgstr "" msgid "Delete Selected Items" msgstr "" -#: include/conversation.php:872 view/theme/frio/theme.php:369 +#: include/conversation.php:872 view/theme/frio/theme.php:356 msgid "Follow Thread" msgstr "" -#: include/conversation.php:873 src/Model/Contact.php:989 +#: include/conversation.php:873 src/Model/Contact.php:996 msgid "View Status" msgstr "" #: include/conversation.php:874 include/conversation.php:890 #: mod/allfriends.php:74 mod/directory.php:167 mod/dirfind.php:228 -#: mod/match.php:84 mod/suggest.php:86 src/Model/Contact.php:929 -#: src/Model/Contact.php:982 src/Model/Contact.php:990 +#: mod/match.php:84 mod/suggest.php:86 src/Model/Contact.php:936 +#: src/Model/Contact.php:989 src/Model/Contact.php:997 msgid "View Profile" msgstr "" -#: include/conversation.php:875 src/Model/Contact.php:991 +#: include/conversation.php:875 src/Model/Contact.php:998 msgid "View Photos" msgstr "" -#: include/conversation.php:876 src/Model/Contact.php:983 -#: src/Model/Contact.php:992 +#: include/conversation.php:876 src/Model/Contact.php:990 +#: src/Model/Contact.php:999 msgid "Network Posts" msgstr "" -#: include/conversation.php:877 src/Model/Contact.php:984 -#: src/Model/Contact.php:993 +#: include/conversation.php:877 src/Model/Contact.php:991 +#: src/Model/Contact.php:1000 msgid "View Contact" msgstr "" -#: include/conversation.php:878 src/Model/Contact.php:995 +#: include/conversation.php:878 src/Model/Contact.php:1002 msgid "Send PM" msgstr "" -#: include/conversation.php:882 src/Model/Contact.php:996 +#: include/conversation.php:882 src/Model/Contact.php:1003 msgid "Poke" msgstr "" #: include/conversation.php:887 mod/allfriends.php:75 mod/dirfind.php:229 #: mod/follow.php:148 mod/match.php:85 mod/suggest.php:87 -#: src/Content/Widget.php:62 src/Model/Contact.php:985 +#: src/Content/Widget.php:63 src/Model/Contact.php:992 #: src/Module/Contact.php:576 view/theme/vier/theme.php:201 msgid "Connect/Follow" msgstr "" @@ -311,7 +311,7 @@ msgstr "" msgid "Visible to everybody" msgstr "" -#: include/conversation.php:1092 src/Object/Post.php:817 +#: include/conversation.php:1092 src/Object/Post.php:828 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" @@ -339,102 +339,102 @@ msgstr "" msgid "Share" msgstr "" -#: include/conversation.php:1132 mod/editpost.php:94 mod/message.php:260 +#: include/conversation.php:1132 mod/editpost.php:93 mod/message.php:260 #: mod/message.php:441 mod/wallmessage.php:139 msgid "Upload photo" msgstr "" -#: include/conversation.php:1133 mod/editpost.php:95 +#: include/conversation.php:1133 mod/editpost.php:94 msgid "upload photo" msgstr "" -#: include/conversation.php:1134 mod/editpost.php:96 +#: include/conversation.php:1134 mod/editpost.php:95 msgid "Attach file" msgstr "" -#: include/conversation.php:1135 mod/editpost.php:97 +#: include/conversation.php:1135 mod/editpost.php:96 msgid "attach file" msgstr "" -#: include/conversation.php:1136 src/Object/Post.php:809 +#: include/conversation.php:1136 src/Object/Post.php:820 msgid "Bold" msgstr "" -#: include/conversation.php:1137 src/Object/Post.php:810 +#: include/conversation.php:1137 src/Object/Post.php:821 msgid "Italic" msgstr "" -#: include/conversation.php:1138 src/Object/Post.php:811 +#: include/conversation.php:1138 src/Object/Post.php:822 msgid "Underline" msgstr "" -#: include/conversation.php:1139 src/Object/Post.php:812 +#: include/conversation.php:1139 src/Object/Post.php:823 msgid "Quote" msgstr "" -#: include/conversation.php:1140 src/Object/Post.php:813 +#: include/conversation.php:1140 src/Object/Post.php:824 msgid "Code" msgstr "" -#: include/conversation.php:1141 src/Object/Post.php:814 +#: include/conversation.php:1141 src/Object/Post.php:825 msgid "Image" msgstr "" -#: include/conversation.php:1142 src/Object/Post.php:815 +#: include/conversation.php:1142 src/Object/Post.php:826 msgid "Link" msgstr "" -#: include/conversation.php:1143 src/Object/Post.php:816 +#: include/conversation.php:1143 src/Object/Post.php:827 msgid "Link or Media" msgstr "" -#: include/conversation.php:1144 mod/editpost.php:104 +#: include/conversation.php:1144 mod/editpost.php:103 msgid "Set your location" msgstr "" -#: include/conversation.php:1145 mod/editpost.php:105 +#: include/conversation.php:1145 mod/editpost.php:104 msgid "set location" msgstr "" -#: include/conversation.php:1146 mod/editpost.php:106 +#: include/conversation.php:1146 mod/editpost.php:105 msgid "Clear browser location" msgstr "" -#: include/conversation.php:1147 mod/editpost.php:107 +#: include/conversation.php:1147 mod/editpost.php:106 msgid "clear location" msgstr "" -#: include/conversation.php:1149 mod/editpost.php:122 +#: include/conversation.php:1149 mod/editpost.php:121 msgid "Set title" msgstr "" -#: include/conversation.php:1151 mod/editpost.php:124 +#: include/conversation.php:1151 mod/editpost.php:123 msgid "Categories (comma-separated list)" msgstr "" -#: include/conversation.php:1153 mod/editpost.php:109 +#: include/conversation.php:1153 mod/editpost.php:108 msgid "Permission settings" msgstr "" -#: include/conversation.php:1154 mod/editpost.php:139 +#: include/conversation.php:1154 mod/editpost.php:138 msgid "permissions" msgstr "" -#: include/conversation.php:1163 mod/editpost.php:119 +#: include/conversation.php:1163 mod/editpost.php:118 msgid "Public post" msgstr "" -#: include/conversation.php:1167 mod/editpost.php:130 mod/events.php:566 -#: mod/photos.php:1498 mod/photos.php:1537 mod/photos.php:1597 -#: src/Object/Post.php:818 +#: include/conversation.php:1167 mod/editpost.php:129 mod/events.php:566 +#: mod/photos.php:1457 mod/photos.php:1496 mod/photos.php:1556 +#: src/Object/Post.php:829 msgid "Preview" msgstr "" -#: include/conversation.php:1171 include/items.php:399 mod/dfrn_request.php:654 -#: mod/editpost.php:133 mod/fbrowser.php:105 mod/fbrowser.php:136 -#: mod/follow.php:162 mod/message.php:153 mod/photos.php:258 mod/photos.php:330 +#: include/conversation.php:1171 include/items.php:398 mod/dfrn_request.php:650 +#: mod/editpost.php:132 mod/fbrowser.php:105 mod/fbrowser.php:136 +#: mod/follow.php:162 mod/message.php:153 mod/photos.php:257 mod/photos.php:325 #: mod/settings.php:669 mod/settings.php:695 mod/suggest.php:44 -#: mod/tagrm.php:20 mod/tagrm.php:113 mod/unfollow.php:132 mod/videos.php:140 +#: mod/tagrm.php:20 mod/tagrm.php:113 mod/unfollow.php:132 mod/videos.php:106 #: src/Module/Contact.php:448 msgid "Cancel" msgstr "" @@ -451,11 +451,11 @@ msgstr "" msgid "Private post" msgstr "" -#: include/conversation.php:1183 mod/editpost.php:137 src/Model/Profile.php:364 +#: include/conversation.php:1183 mod/editpost.php:136 src/Model/Profile.php:364 msgid "Message" msgstr "" -#: include/conversation.php:1184 mod/editpost.php:138 +#: include/conversation.php:1184 mod/editpost.php:137 msgid "Browser" msgstr "" @@ -481,7 +481,7 @@ msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:1490 src/Content/ContactSelector.php:148 +#: include/conversation.php:1490 src/Content/ContactSelector.php:163 msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" @@ -529,207 +529,227 @@ msgstr "" msgid "Please visit %s to view and/or reply to your private messages." msgstr "" -#: include/enotify.php:165 +#: include/enotify.php:164 +#, php-format +msgid "%1$s tagged you on [url=%2$s]a %3$s[/url]" +msgstr "" + +#: include/enotify.php:170 #, php-format msgid "%1$s commented on [url=%2$s]a %3$s[/url]" msgstr "" -#: include/enotify.php:173 +#: include/enotify.php:180 +#, php-format +msgid "%1$s tagged you on [url=%2$s]%3$s's %4$s[/url]" +msgstr "" + +#: include/enotify.php:187 #, php-format msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" msgstr "" -#: include/enotify.php:183 +#: include/enotify.php:199 +#, php-format +msgid "%1$s tagged you on [url=%2$s]your %3$s[/url]" +msgstr "" + +#: include/enotify.php:205 #, php-format msgid "%1$s commented on [url=%2$s]your %3$s[/url]" msgstr "" -#: include/enotify.php:195 +#: include/enotify.php:216 #, php-format -msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" -msgstr "" - -#: include/enotify.php:197 -#, php-format -msgid "%s commented on an item/conversation you have been following." -msgstr "" - -#: include/enotify.php:200 include/enotify.php:215 include/enotify.php:230 -#: include/enotify.php:245 include/enotify.php:264 include/enotify.php:280 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." -msgstr "" - -#: include/enotify.php:207 -#, php-format -msgid "[Friendica:Notify] %s posted to your profile wall" -msgstr "" - -#: include/enotify.php:209 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" -msgstr "" - -#: include/enotify.php:210 -#, php-format -msgid "%1$s posted to [url=%2$s]your wall[/url]" +msgid "%1$s tagged you on [url=%2$s]their %3$s[/url]" msgstr "" #: include/enotify.php:222 #, php-format +msgid "%1$s commented on [url=%2$s]their %3$s[/url]" +msgstr "" + +#: include/enotify.php:235 +#, php-format msgid "[Friendica:Notify] %s tagged you" msgstr "" -#: include/enotify.php:224 -#, php-format -msgid "%1$s tagged you at %2$s" -msgstr "" - -#: include/enotify.php:225 -#, php-format -msgid "%1$s [url=%2$s]tagged you[/url]." -msgstr "" - #: include/enotify.php:237 #, php-format -msgid "[Friendica:Notify] %s shared a new post" +msgid "%1$s tagged you at %2$s" msgstr "" #: include/enotify.php:239 #, php-format -msgid "%1$s shared a new post at %2$s" +msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: include/enotify.php:240 +#: include/enotify.php:241 #, php-format -msgid "%1$s [url=%2$s]shared a post[/url]." +msgid "%s commented on an item/conversation you have been following." msgstr "" -#: include/enotify.php:252 +#: include/enotify.php:246 include/enotify.php:261 include/enotify.php:276 +#: include/enotify.php:295 include/enotify.php:311 #, php-format -msgid "[Friendica:Notify] %1$s poked you" +msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: include/enotify.php:254 +#: include/enotify.php:253 #, php-format -msgid "%1$s poked you at %2$s" +msgid "[Friendica:Notify] %s posted to your profile wall" msgstr "" #: include/enotify.php:255 #, php-format +msgid "%1$s posted to your profile wall at %2$s" +msgstr "" + +#: include/enotify.php:256 +#, php-format +msgid "%1$s posted to [url=%2$s]your wall[/url]" +msgstr "" + +#: include/enotify.php:268 +#, php-format +msgid "[Friendica:Notify] %s shared a new post" +msgstr "" + +#: include/enotify.php:270 +#, php-format +msgid "%1$s shared a new post at %2$s" +msgstr "" + +#: include/enotify.php:271 +#, php-format +msgid "%1$s [url=%2$s]shared a post[/url]." +msgstr "" + +#: include/enotify.php:283 +#, php-format +msgid "[Friendica:Notify] %1$s poked you" +msgstr "" + +#: include/enotify.php:285 +#, php-format +msgid "%1$s poked you at %2$s" +msgstr "" + +#: include/enotify.php:286 +#, php-format msgid "%1$s [url=%2$s]poked you[/url]." msgstr "" -#: include/enotify.php:272 +#: include/enotify.php:303 #, php-format msgid "[Friendica:Notify] %s tagged your post" msgstr "" -#: include/enotify.php:274 +#: include/enotify.php:305 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "" -#: include/enotify.php:275 +#: include/enotify.php:306 #, php-format msgid "%1$s tagged [url=%2$s]your post[/url]" msgstr "" -#: include/enotify.php:287 +#: include/enotify.php:318 msgid "[Friendica:Notify] Introduction received" msgstr "" -#: include/enotify.php:289 +#: include/enotify.php:320 #, php-format msgid "You've received an introduction from '%1$s' at %2$s" msgstr "" -#: include/enotify.php:290 +#: include/enotify.php:321 #, php-format msgid "You've received [url=%1$s]an introduction[/url] from %2$s." msgstr "" -#: include/enotify.php:295 include/enotify.php:341 +#: include/enotify.php:326 include/enotify.php:372 #, php-format msgid "You may visit their profile at %s" msgstr "" -#: include/enotify.php:297 +#: include/enotify.php:328 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "" -#: include/enotify.php:304 +#: include/enotify.php:335 msgid "[Friendica:Notify] A new person is sharing with you" msgstr "" -#: include/enotify.php:306 include/enotify.php:307 +#: include/enotify.php:337 include/enotify.php:338 #, php-format msgid "%1$s is sharing with you at %2$s" msgstr "" -#: include/enotify.php:314 +#: include/enotify.php:345 msgid "[Friendica:Notify] You have a new follower" msgstr "" -#: include/enotify.php:316 include/enotify.php:317 +#: include/enotify.php:347 include/enotify.php:348 #, php-format msgid "You have a new follower at %2$s : %1$s" msgstr "" -#: include/enotify.php:330 +#: include/enotify.php:361 msgid "[Friendica:Notify] Friend suggestion received" msgstr "" -#: include/enotify.php:332 +#: include/enotify.php:363 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: include/enotify.php:333 +#: include/enotify.php:364 #, php-format msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." msgstr "" -#: include/enotify.php:339 +#: include/enotify.php:370 msgid "Name:" msgstr "" -#: include/enotify.php:340 +#: include/enotify.php:371 msgid "Photo:" msgstr "" -#: include/enotify.php:343 +#: include/enotify.php:374 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: include/enotify.php:351 include/enotify.php:366 +#: include/enotify.php:382 include/enotify.php:397 msgid "[Friendica:Notify] Connection accepted" msgstr "" -#: include/enotify.php:353 include/enotify.php:368 +#: include/enotify.php:384 include/enotify.php:399 #, php-format msgid "'%1$s' has accepted your connection request at %2$s" msgstr "" -#: include/enotify.php:354 include/enotify.php:369 +#: include/enotify.php:385 include/enotify.php:400 #, php-format msgid "%2$s has accepted your [url=%1$s]connection request[/url]." msgstr "" -#: include/enotify.php:359 +#: include/enotify.php:390 msgid "" "You are now mutual friends and may exchange status updates, photos, and " "email without restriction." msgstr "" -#: include/enotify.php:361 +#: include/enotify.php:392 #, php-format msgid "Please visit %s if you wish to make any changes to this relationship." msgstr "" -#: include/enotify.php:374 +#: include/enotify.php:405 #, php-format msgid "" "'%1$s' has chosen to accept you a fan, which restricts some forms of " @@ -738,37 +758,37 @@ msgid "" "automatically." msgstr "" -#: include/enotify.php:376 +#: include/enotify.php:407 #, php-format msgid "" "'%1$s' may choose to extend this into a two-way or more permissive " "relationship in the future." msgstr "" -#: include/enotify.php:378 +#: include/enotify.php:409 #, php-format msgid "Please visit %s if you wish to make any changes to this relationship." msgstr "" -#: include/enotify.php:388 mod/removeme.php:47 +#: include/enotify.php:419 mod/removeme.php:47 msgid "[Friendica System Notify]" msgstr "" -#: include/enotify.php:388 +#: include/enotify.php:419 msgid "registration request" msgstr "" -#: include/enotify.php:390 +#: include/enotify.php:421 #, php-format msgid "You've received a registration request from '%1$s' at %2$s" msgstr "" -#: include/enotify.php:391 +#: include/enotify.php:422 #, php-format msgid "You've received a [url=%1$s]registration request[/url] from %2$s." msgstr "" -#: include/enotify.php:396 +#: include/enotify.php:427 #, php-format msgid "" "Full Name:\t%s\n" @@ -776,21 +796,21 @@ msgid "" "Login Name:\t%s (%s)" msgstr "" -#: include/enotify.php:402 +#: include/enotify.php:433 #, php-format msgid "Please visit %s to approve or reject the request." msgstr "" -#: include/items.php:356 mod/admin.php:285 mod/admin.php:2020 -#: mod/admin.php:2266 mod/notice.php:21 mod/viewsrc.php:22 +#: include/items.php:355 mod/admin.php:296 mod/admin.php:2094 +#: mod/admin.php:2340 mod/notice.php:21 mod/viewsrc.php:22 msgid "Item not found." msgstr "" -#: include/items.php:394 +#: include/items.php:393 msgid "Do you really want to delete this item?" msgstr "" -#: include/items.php:396 mod/api.php:112 mod/dfrn_request.php:644 +#: include/items.php:395 mod/api.php:112 mod/dfrn_request.php:640 #: mod/follow.php:151 mod/message.php:150 mod/profiles.php:542 #: mod/profiles.php:545 mod/profiles.php:567 mod/register.php:232 #: mod/settings.php:1088 mod/settings.php:1094 mod/settings.php:1101 @@ -801,494 +821,493 @@ msgstr "" msgid "Yes" msgstr "" -#: include/items.php:446 mod/allfriends.php:22 mod/api.php:37 mod/api.php:42 -#: mod/attach.php:37 mod/cal.php:304 mod/common.php:27 mod/crepair.php:101 -#: mod/delegate.php:31 mod/delegate.php:49 mod/delegate.php:60 -#: mod/dfrn_confirm.php:66 mod/dirfind.php:29 mod/editpost.php:23 -#: mod/events.php:207 mod/follow.php:58 mod/follow.php:122 mod/fsuggest.php:81 -#: mod/group.php:30 mod/invite.php:25 mod/invite.php:111 mod/item.php:165 -#: mod/manage.php:130 mod/message.php:56 mod/message.php:101 mod/network.php:36 -#: mod/nogroup.php:23 mod/notes.php:33 mod/notifications.php:70 -#: mod/ostatus_subscribe.php:18 mod/photos.php:187 mod/photos.php:1060 -#: mod/poke.php:142 mod/profiles.php:183 mod/profiles.php:515 -#: mod/profile_photo.php:33 mod/profile_photo.php:180 mod/profile_photo.php:202 -#: mod/register.php:53 mod/regmod.php:89 mod/repair_ostatus.php:16 -#: mod/settings.php:48 mod/settings.php:154 mod/settings.php:658 -#: mod/suggest.php:62 mod/uimport.php:17 mod/unfollow.php:22 -#: mod/unfollow.php:77 mod/unfollow.php:109 mod/viewcontacts.php:56 -#: mod/wallmessage.php:19 mod/wallmessage.php:43 mod/wallmessage.php:82 -#: mod/wallmessage.php:106 mod/wall_attach.php:81 mod/wall_attach.php:84 -#: mod/wall_upload.php:106 mod/wall_upload.php:109 src/App.php:1786 -#: src/Module/Contact.php:361 +#: include/items.php:445 mod/allfriends.php:22 mod/api.php:37 mod/api.php:42 +#: mod/cal.php:304 mod/common.php:27 mod/crepair.php:101 mod/delegate.php:31 +#: mod/delegate.php:49 mod/delegate.php:60 mod/dfrn_confirm.php:66 +#: mod/dirfind.php:29 mod/editpost.php:22 mod/events.php:207 mod/follow.php:58 +#: mod/follow.php:122 mod/fsuggest.php:81 mod/group.php:30 mod/invite.php:25 +#: mod/invite.php:111 mod/item.php:167 mod/manage.php:129 mod/message.php:56 +#: mod/message.php:101 mod/network.php:35 mod/nogroup.php:23 mod/notes.php:33 +#: mod/notifications.php:70 mod/ostatus_subscribe.php:18 mod/photos.php:186 +#: mod/photos.php:1019 mod/poke.php:141 mod/profiles.php:183 +#: mod/profiles.php:515 mod/profile_photo.php:33 mod/profile_photo.php:178 +#: mod/profile_photo.php:205 mod/register.php:53 mod/regmod.php:89 +#: mod/repair_ostatus.php:16 mod/settings.php:48 mod/settings.php:154 +#: mod/settings.php:658 mod/suggest.php:62 mod/uimport.php:17 +#: mod/unfollow.php:22 mod/unfollow.php:77 mod/unfollow.php:109 +#: mod/viewcontacts.php:56 mod/wallmessage.php:19 mod/wallmessage.php:43 +#: mod/wallmessage.php:82 mod/wallmessage.php:106 mod/wall_attach.php:79 +#: mod/wall_attach.php:82 mod/wall_upload.php:106 mod/wall_upload.php:109 +#: src/App.php:1823 src/Module/Attach.php:42 src/Module/Contact.php:361 msgid "Permission denied." msgstr "" -#: include/items.php:517 src/Content/Feature.php:95 +#: include/items.php:516 src/Content/Feature.php:95 msgid "Archives" msgstr "" -#: include/items.php:523 src/App.php:788 src/Content/ForumManager.php:131 -#: src/Content/Widget.php:305 src/Object/Post.php:442 +#: include/items.php:522 src/App.php:823 src/Content/ForumManager.php:131 +#: src/Content/Widget.php:321 src/Object/Post.php:454 #: view/theme/vier/theme.php:255 msgid "show more" msgstr "" -#: mod/admin.php:106 +#: mod/admin.php:117 msgid "Theme settings updated." msgstr "" -#: mod/admin.php:179 src/Content/Nav.php:225 +#: mod/admin.php:190 src/Content/Nav.php:224 msgid "Information" msgstr "" -#: mod/admin.php:180 +#: mod/admin.php:191 msgid "Overview" msgstr "" -#: mod/admin.php:181 mod/admin.php:753 +#: mod/admin.php:192 mod/admin.php:763 msgid "Federation Statistics" msgstr "" -#: mod/admin.php:182 +#: mod/admin.php:193 msgid "Configuration" msgstr "" -#: mod/admin.php:183 mod/admin.php:1478 +#: mod/admin.php:194 mod/admin.php:1549 msgid "Site" msgstr "" -#: mod/admin.php:184 mod/admin.php:1409 mod/admin.php:1952 mod/admin.php:1969 +#: mod/admin.php:195 mod/admin.php:1453 mod/admin.php:2026 mod/admin.php:2043 msgid "Users" msgstr "" -#: mod/admin.php:185 mod/admin.php:2068 mod/admin.php:2128 mod/settings.php:99 +#: mod/admin.php:196 mod/admin.php:2142 mod/admin.php:2202 mod/settings.php:99 msgid "Addons" msgstr "" -#: mod/admin.php:186 mod/admin.php:2332 mod/admin.php:2376 +#: mod/admin.php:197 mod/admin.php:2398 mod/admin.php:2442 msgid "Themes" msgstr "" -#: mod/admin.php:187 mod/settings.php:77 +#: mod/admin.php:198 mod/settings.php:77 msgid "Additional features" msgstr "" -#: mod/admin.php:188 mod/admin.php:312 mod/register.php:280 -#: src/Content/Nav.php:228 src/Module/Tos.php:71 +#: mod/admin.php:199 mod/admin.php:322 mod/register.php:280 +#: src/Content/Nav.php:227 src/Module/Tos.php:71 msgid "Terms of Service" msgstr "" -#: mod/admin.php:189 +#: mod/admin.php:200 msgid "Database" msgstr "" -#: mod/admin.php:190 +#: mod/admin.php:201 msgid "DB updates" msgstr "" -#: mod/admin.php:191 mod/admin.php:796 +#: mod/admin.php:202 mod/admin.php:806 msgid "Inspect Queue" msgstr "" -#: mod/admin.php:192 +#: mod/admin.php:203 msgid "Inspect Deferred Workers" msgstr "" -#: mod/admin.php:193 +#: mod/admin.php:204 msgid "Inspect worker Queue" msgstr "" -#: mod/admin.php:194 +#: mod/admin.php:205 msgid "Tools" msgstr "" -#: mod/admin.php:195 +#: mod/admin.php:206 msgid "Contact Blocklist" msgstr "" -#: mod/admin.php:196 mod/admin.php:376 +#: mod/admin.php:207 mod/admin.php:386 msgid "Server Blocklist" msgstr "" -#: mod/admin.php:197 mod/admin.php:534 +#: mod/admin.php:208 mod/admin.php:544 msgid "Delete Item" msgstr "" -#: mod/admin.php:198 mod/admin.php:199 mod/admin.php:2451 +#: mod/admin.php:209 mod/admin.php:210 mod/admin.php:2517 msgid "Logs" msgstr "" -#: mod/admin.php:200 mod/admin.php:2518 +#: mod/admin.php:211 mod/admin.php:2584 msgid "View Logs" msgstr "" -#: mod/admin.php:202 +#: mod/admin.php:213 msgid "Diagnostics" msgstr "" -#: mod/admin.php:203 +#: mod/admin.php:214 msgid "PHP Info" msgstr "" -#: mod/admin.php:204 +#: mod/admin.php:215 msgid "probe address" msgstr "" -#: mod/admin.php:205 +#: mod/admin.php:216 msgid "check webfinger" msgstr "" -#: mod/admin.php:225 src/Content/Nav.php:268 +#: mod/admin.php:236 src/Content/Nav.php:267 msgid "Admin" msgstr "" -#: mod/admin.php:226 +#: mod/admin.php:237 msgid "Addon Features" msgstr "" -#: mod/admin.php:227 +#: mod/admin.php:238 msgid "User registrations waiting for confirmation" msgstr "" -#: mod/admin.php:311 mod/admin.php:375 mod/admin.php:491 mod/admin.php:533 -#: mod/admin.php:752 mod/admin.php:795 mod/admin.php:846 mod/admin.php:964 -#: mod/admin.php:1477 mod/admin.php:1951 mod/admin.php:2067 mod/admin.php:2127 -#: mod/admin.php:2331 mod/admin.php:2375 mod/admin.php:2450 mod/admin.php:2517 +#: mod/admin.php:321 mod/admin.php:385 mod/admin.php:501 mod/admin.php:543 +#: mod/admin.php:762 mod/admin.php:805 mod/admin.php:856 mod/admin.php:974 +#: mod/admin.php:1548 mod/admin.php:2025 mod/admin.php:2141 mod/admin.php:2201 +#: mod/admin.php:2397 mod/admin.php:2441 mod/admin.php:2516 mod/admin.php:2583 msgid "Administration" msgstr "" -#: mod/admin.php:313 +#: mod/admin.php:323 msgid "Display Terms of Service" msgstr "" -#: mod/admin.php:313 +#: mod/admin.php:323 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 "" -#: mod/admin.php:314 +#: mod/admin.php:324 msgid "Display Privacy Statement" msgstr "" -#: mod/admin.php:314 +#: mod/admin.php:324 #, php-format msgid "" "Show some informations regarding the needed information to operate the node " "according e.g. to EU-GDPR." msgstr "" -#: mod/admin.php:315 +#: mod/admin.php:325 msgid "Privacy Statement Preview" msgstr "" -#: mod/admin.php:317 +#: mod/admin.php:327 msgid "The Terms of Service" msgstr "" -#: mod/admin.php:317 +#: mod/admin.php:327 msgid "" "Enter the Terms of Service for your node here. You can use BBCode. Headers " "of sections should be [h2] and below." msgstr "" -#: mod/admin.php:319 mod/admin.php:1479 mod/admin.php:2129 mod/admin.php:2377 -#: mod/admin.php:2452 mod/admin.php:2599 mod/delegate.php:176 +#: mod/admin.php:329 mod/admin.php:1550 mod/admin.php:2203 mod/admin.php:2443 +#: mod/admin.php:2518 mod/admin.php:2665 mod/delegate.php:176 #: mod/settings.php:668 mod/settings.php:775 mod/settings.php:863 #: mod/settings.php:952 mod/settings.php:1177 msgid "Save Settings" msgstr "" -#: mod/admin.php:367 mod/admin.php:385 mod/dfrn_request.php:346 -#: mod/friendica.php:122 src/Model/Contact.php:1645 +#: mod/admin.php:377 mod/admin.php:395 mod/dfrn_request.php:346 +#: mod/friendica.php:123 src/Model/Contact.php:1653 msgid "Blocked domain" msgstr "" -#: mod/admin.php:367 +#: mod/admin.php:377 msgid "The blocked domain" msgstr "" -#: mod/admin.php:368 mod/admin.php:386 mod/friendica.php:122 +#: mod/admin.php:378 mod/admin.php:396 mod/friendica.php:123 msgid "Reason for the block" msgstr "" -#: mod/admin.php:368 mod/admin.php:381 +#: mod/admin.php:378 mod/admin.php:391 msgid "The reason why you blocked this domain." msgstr "" -#: mod/admin.php:369 +#: mod/admin.php:379 msgid "Delete domain" msgstr "" -#: mod/admin.php:369 +#: mod/admin.php:379 msgid "Check to delete this entry from the blocklist" msgstr "" -#: mod/admin.php:377 +#: mod/admin.php:387 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 "" -#: mod/admin.php:378 +#: mod/admin.php:388 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 "" -#: mod/admin.php:379 +#: mod/admin.php:389 msgid "Add new entry to block list" msgstr "" -#: mod/admin.php:380 +#: mod/admin.php:390 msgid "Server Domain" msgstr "" -#: mod/admin.php:380 +#: mod/admin.php:390 msgid "" "The domain of the new server to add to the block list. Do not include the " "protocol." msgstr "" -#: mod/admin.php:381 +#: mod/admin.php:391 msgid "Block reason" msgstr "" -#: mod/admin.php:382 +#: mod/admin.php:392 msgid "Add Entry" msgstr "" -#: mod/admin.php:383 +#: mod/admin.php:393 msgid "Save changes to the blocklist" msgstr "" -#: mod/admin.php:384 +#: mod/admin.php:394 msgid "Current Entries in the Blocklist" msgstr "" -#: mod/admin.php:387 +#: mod/admin.php:397 msgid "Delete entry from blocklist" msgstr "" -#: mod/admin.php:390 +#: mod/admin.php:400 msgid "Delete entry from blocklist?" msgstr "" -#: mod/admin.php:416 +#: mod/admin.php:426 msgid "Server added to blocklist." msgstr "" -#: mod/admin.php:432 +#: mod/admin.php:442 msgid "Site blocklist updated." msgstr "" -#: mod/admin.php:455 src/Core/Console/GlobalCommunityBlock.php:68 +#: mod/admin.php:465 src/Core/Console/GlobalCommunityBlock.php:68 msgid "The contact has been blocked from the node" msgstr "" -#: mod/admin.php:457 src/Core/Console/GlobalCommunityBlock.php:65 +#: mod/admin.php:467 src/Core/Console/GlobalCommunityBlock.php:65 #, php-format msgid "Could not find any contact entry for this URL (%s)" msgstr "" -#: mod/admin.php:464 +#: mod/admin.php:474 #, php-format msgid "%s contact unblocked" msgid_plural "%s contacts unblocked" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:492 +#: mod/admin.php:502 msgid "Remote Contact Blocklist" msgstr "" -#: mod/admin.php:493 +#: mod/admin.php:503 msgid "" "This page allows you to prevent any message from a remote contact to reach " "your node." msgstr "" -#: mod/admin.php:494 +#: mod/admin.php:504 msgid "Block Remote Contact" msgstr "" -#: mod/admin.php:495 mod/admin.php:1954 +#: mod/admin.php:505 mod/admin.php:2028 msgid "select all" msgstr "" -#: mod/admin.php:496 +#: mod/admin.php:506 msgid "select none" msgstr "" -#: mod/admin.php:497 mod/admin.php:1963 src/Module/Contact.php:623 -#: src/Module/Contact.php:825 src/Module/Contact.php:1078 +#: mod/admin.php:507 mod/admin.php:2037 src/Module/Contact.php:623 +#: src/Module/Contact.php:827 src/Module/Contact.php:1080 msgid "Block" msgstr "" -#: mod/admin.php:498 mod/admin.php:1965 src/Module/Contact.php:623 -#: src/Module/Contact.php:825 src/Module/Contact.php:1078 +#: mod/admin.php:508 mod/admin.php:2039 src/Module/Contact.php:623 +#: src/Module/Contact.php:827 src/Module/Contact.php:1080 msgid "Unblock" msgstr "" -#: mod/admin.php:499 +#: mod/admin.php:509 msgid "No remote contact is blocked from this node." msgstr "" -#: mod/admin.php:501 +#: mod/admin.php:511 msgid "Blocked Remote Contacts" msgstr "" -#: mod/admin.php:502 +#: mod/admin.php:512 msgid "Block New Remote Contact" msgstr "" -#: mod/admin.php:503 +#: mod/admin.php:513 msgid "Photo" msgstr "" -#: mod/admin.php:503 mod/admin.php:1946 mod/admin.php:1957 mod/admin.php:1971 -#: mod/admin.php:1987 mod/crepair.php:161 mod/settings.php:670 +#: mod/admin.php:513 mod/admin.php:2020 mod/admin.php:2031 mod/admin.php:2045 +#: mod/admin.php:2061 mod/crepair.php:161 mod/settings.php:670 #: mod/settings.php:696 msgid "Name" msgstr "" -#: mod/admin.php:503 mod/profiles.php:395 +#: mod/admin.php:513 mod/profiles.php:395 msgid "Address" msgstr "" -#: mod/admin.php:503 mod/admin.php:513 mod/follow.php:167 +#: mod/admin.php:513 mod/admin.php:523 mod/follow.php:167 #: mod/notifications.php:177 mod/notifications.php:261 mod/unfollow.php:137 #: src/Module/Contact.php:642 msgid "Profile URL" msgstr "" -#: mod/admin.php:511 +#: mod/admin.php:521 #, php-format msgid "%s total blocked contact" msgid_plural "%s total blocked contacts" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:513 +#: mod/admin.php:523 msgid "URL of the remote contact to block." msgstr "" -#: mod/admin.php:535 +#: mod/admin.php:545 msgid "Delete this Item" msgstr "" -#: mod/admin.php:536 +#: mod/admin.php:546 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." msgstr "" -#: mod/admin.php:537 +#: mod/admin.php:547 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." msgstr "" -#: mod/admin.php:538 +#: mod/admin.php:548 msgid "GUID" msgstr "" -#: mod/admin.php:538 +#: mod/admin.php:548 msgid "The GUID of the item you want to delete." msgstr "" -#: mod/admin.php:572 +#: mod/admin.php:582 msgid "Item marked for deletion." msgstr "" -#: mod/admin.php:643 +#: mod/admin.php:653 msgid "unknown" msgstr "" -#: mod/admin.php:746 +#: mod/admin.php:756 msgid "" "This page offers you some numbers to the known part of the federated social " "network your Friendica node is part of. These numbers are not complete but " "only reflect the part of the network your node is aware of." msgstr "" -#: mod/admin.php:747 +#: mod/admin.php:757 msgid "" "The Auto Discovered Contact Directory feature is not enabled, it " "will improve the data displayed here." msgstr "" -#: mod/admin.php:759 +#: mod/admin.php:769 #, php-format msgid "" "Currently this node is aware of %d nodes with %d registered users from the " "following platforms:" msgstr "" -#: mod/admin.php:798 mod/admin.php:849 +#: mod/admin.php:808 mod/admin.php:859 msgid "ID" msgstr "" -#: mod/admin.php:799 +#: mod/admin.php:809 msgid "Recipient Name" msgstr "" -#: mod/admin.php:800 +#: mod/admin.php:810 msgid "Recipient Profile" msgstr "" -#: mod/admin.php:801 src/Content/Nav.php:233 -#: src/Core/NotificationsManager.php:178 view/theme/frio/theme.php:280 +#: mod/admin.php:811 src/Content/Nav.php:232 +#: src/Core/NotificationsManager.php:178 view/theme/frio/theme.php:267 msgid "Network" msgstr "" -#: mod/admin.php:802 mod/admin.php:851 +#: mod/admin.php:812 mod/admin.php:861 msgid "Created" msgstr "" -#: mod/admin.php:803 +#: mod/admin.php:813 msgid "Last Tried" msgstr "" -#: mod/admin.php:804 +#: mod/admin.php:814 msgid "" "This page lists the content of the queue for outgoing postings. These are " "postings the initial delivery failed for. They will be resend later and " "eventually deleted if the delivery fails permanently." msgstr "" -#: mod/admin.php:825 +#: mod/admin.php:835 msgid "Inspect Deferred Worker Queue" msgstr "" -#: mod/admin.php:826 +#: mod/admin.php:836 msgid "" "This page lists the deferred worker jobs. This are jobs that couldn't be " "executed at the first time." msgstr "" -#: mod/admin.php:829 +#: mod/admin.php:839 msgid "Inspect Worker Queue" msgstr "" -#: mod/admin.php:830 +#: mod/admin.php:840 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/admin.php:850 +#: mod/admin.php:860 msgid "Job Parameters" msgstr "" -#: mod/admin.php:852 +#: mod/admin.php:862 msgid "Priority" msgstr "" -#: mod/admin.php:877 +#: mod/admin.php:887 #, php-format msgid "" "Your DB still runs with MyISAM tables. You should change the engine type to " @@ -1299,32 +1318,32 @@ msgid "" "automatic conversion.
" msgstr "" -#: mod/admin.php:884 +#: mod/admin.php:894 #, 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/admin.php:894 +#: mod/admin.php:904 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:900 +#: mod/admin.php:910 msgid "The worker was never executed. Please check your database structure!" msgstr "" -#: mod/admin.php:903 +#: mod/admin.php:913 #, php-format msgid "" "The last worker execution was on %s UTC. This is older than one hour. Please " "check your crontab settings." msgstr "" -#: mod/admin.php:909 +#: mod/admin.php:919 #, php-format msgid "" "Friendica's configuration now is stored in config/local.config.php, please " @@ -1333,7 +1352,7 @@ msgid "" "with the transition." msgstr "" -#: mod/admin.php:916 +#: mod/admin.php:926 #, php-format msgid "" "%s is not reachable on your system. This is a severe " @@ -1341,505 +1360,517 @@ msgid "" "href=\"%s\">the installation page for help." msgstr "" -#: mod/admin.php:922 +#: mod/admin.php:932 msgid "Normal Account" msgstr "" -#: mod/admin.php:923 +#: mod/admin.php:933 msgid "Automatic Follower Account" msgstr "" -#: mod/admin.php:924 +#: mod/admin.php:934 msgid "Public Forum Account" msgstr "" -#: mod/admin.php:925 +#: mod/admin.php:935 msgid "Automatic Friend Account" msgstr "" -#: mod/admin.php:926 +#: mod/admin.php:936 msgid "Blog Account" msgstr "" -#: mod/admin.php:927 +#: mod/admin.php:937 msgid "Private Forum Account" msgstr "" -#: mod/admin.php:950 +#: mod/admin.php:960 msgid "Message queues" msgstr "" -#: mod/admin.php:956 +#: mod/admin.php:966 msgid "Server Settings" msgstr "" -#: mod/admin.php:965 +#: mod/admin.php:975 msgid "Summary" msgstr "" -#: mod/admin.php:967 +#: mod/admin.php:977 msgid "Registered users" msgstr "" -#: mod/admin.php:969 +#: mod/admin.php:979 msgid "Pending registrations" msgstr "" -#: mod/admin.php:970 +#: mod/admin.php:980 msgid "Version" msgstr "" -#: mod/admin.php:975 +#: mod/admin.php:985 msgid "Active addons" msgstr "" -#: mod/admin.php:1007 +#: mod/admin.php:1017 msgid "Can not parse base url. Must have at least ://" msgstr "" -#: mod/admin.php:1343 +#: mod/admin.php:1387 msgid "Site settings updated." msgstr "" -#: mod/admin.php:1371 mod/settings.php:896 +#: mod/admin.php:1415 mod/settings.php:896 msgid "No special theme for mobile devices" msgstr "" -#: mod/admin.php:1400 +#: mod/admin.php:1444 msgid "No community page for local users" msgstr "" -#: mod/admin.php:1401 +#: mod/admin.php:1445 msgid "No community page" msgstr "" -#: mod/admin.php:1402 +#: mod/admin.php:1446 msgid "Public postings from users of this site" msgstr "" -#: mod/admin.php:1403 +#: mod/admin.php:1447 msgid "Public postings from the federated network" msgstr "" -#: mod/admin.php:1404 +#: mod/admin.php:1448 msgid "Public postings from local users and the federated network" msgstr "" -#: mod/admin.php:1408 mod/admin.php:1576 mod/admin.php:1586 +#: mod/admin.php:1452 mod/admin.php:1650 mod/admin.php:1660 #: src/Module/Contact.php:548 msgid "Disabled" msgstr "" -#: mod/admin.php:1410 +#: mod/admin.php:1454 msgid "Users, Global Contacts" msgstr "" -#: mod/admin.php:1411 +#: mod/admin.php:1455 msgid "Users, Global Contacts/fallback" msgstr "" -#: mod/admin.php:1415 +#: mod/admin.php:1459 msgid "One month" msgstr "" -#: mod/admin.php:1416 +#: mod/admin.php:1460 msgid "Three months" msgstr "" -#: mod/admin.php:1417 +#: mod/admin.php:1461 msgid "Half a year" msgstr "" -#: mod/admin.php:1418 +#: mod/admin.php:1462 msgid "One year" msgstr "" -#: mod/admin.php:1423 +#: mod/admin.php:1467 msgid "Multi user instance" msgstr "" -#: mod/admin.php:1447 +#: mod/admin.php:1491 msgid "Closed" msgstr "" -#: mod/admin.php:1448 +#: mod/admin.php:1492 msgid "Requires approval" msgstr "" -#: mod/admin.php:1449 +#: mod/admin.php:1493 msgid "Open" msgstr "" -#: mod/admin.php:1453 +#: mod/admin.php:1497 msgid "No SSL policy, links will track page SSL state" msgstr "" -#: mod/admin.php:1454 +#: mod/admin.php:1498 msgid "Force all links to use SSL" msgstr "" -#: mod/admin.php:1455 +#: mod/admin.php:1499 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "" -#: mod/admin.php:1459 +#: mod/admin.php:1503 msgid "Don't check" msgstr "" -#: mod/admin.php:1460 +#: mod/admin.php:1504 msgid "check the stable version" msgstr "" -#: mod/admin.php:1461 +#: mod/admin.php:1505 msgid "check the development version" msgstr "" -#: mod/admin.php:1480 +#: mod/admin.php:1524 mod/settings.php:856 mod/settings.php:861 +msgid "None" +msgstr "" + +#: mod/admin.php:1551 msgid "Republish users to directory" msgstr "" -#: mod/admin.php:1481 mod/register.php:257 +#: mod/admin.php:1552 mod/register.php:257 msgid "Registration" msgstr "" -#: mod/admin.php:1482 +#: mod/admin.php:1553 msgid "File upload" msgstr "" -#: mod/admin.php:1483 +#: mod/admin.php:1554 msgid "Policies" msgstr "" -#: mod/admin.php:1484 mod/events.php:570 src/Model/Profile.php:879 -#: src/Module/Contact.php:903 +#: mod/admin.php:1555 mod/events.php:570 src/Model/Profile.php:883 +#: src/Module/Contact.php:905 msgid "Advanced" msgstr "" -#: mod/admin.php:1485 +#: mod/admin.php:1556 msgid "Auto Discovered Contact Directory" msgstr "" -#: mod/admin.php:1486 +#: mod/admin.php:1557 msgid "Performance" msgstr "" -#: mod/admin.php:1487 +#: mod/admin.php:1558 msgid "Worker" msgstr "" -#: mod/admin.php:1488 +#: mod/admin.php:1559 msgid "Message Relay" msgstr "" -#: mod/admin.php:1489 +#: mod/admin.php:1560 msgid "Relocate Instance" msgstr "" -#: mod/admin.php:1490 +#: mod/admin.php:1561 msgid "Warning! Advanced function. Could make this server unreachable." msgstr "" -#: mod/admin.php:1494 +#: mod/admin.php:1565 msgid "Site name" msgstr "" -#: mod/admin.php:1495 +#: mod/admin.php:1566 msgid "Host name" msgstr "" -#: mod/admin.php:1496 +#: mod/admin.php:1567 msgid "Sender Email" msgstr "" -#: mod/admin.php:1496 +#: mod/admin.php:1567 msgid "" "The email address your server shall use to send notification emails from." msgstr "" -#: mod/admin.php:1497 +#: mod/admin.php:1568 msgid "Banner/Logo" msgstr "" -#: mod/admin.php:1498 +#: mod/admin.php:1569 msgid "Shortcut icon" msgstr "" -#: mod/admin.php:1498 +#: mod/admin.php:1569 msgid "Link to an icon that will be used for browsers." msgstr "" -#: mod/admin.php:1499 +#: mod/admin.php:1570 msgid "Touch icon" msgstr "" -#: mod/admin.php:1499 +#: mod/admin.php:1570 msgid "Link to an icon that will be used for tablets and mobiles." msgstr "" -#: mod/admin.php:1500 +#: mod/admin.php:1571 msgid "Additional Info" msgstr "" -#: mod/admin.php:1500 +#: mod/admin.php:1571 #, php-format msgid "" "For public servers: you can add additional information here that will be " "listed at %s/servers." msgstr "" -#: mod/admin.php:1501 +#: mod/admin.php:1572 msgid "System language" msgstr "" -#: mod/admin.php:1502 +#: mod/admin.php:1573 msgid "System theme" msgstr "" -#: mod/admin.php:1502 +#: mod/admin.php:1573 msgid "" "Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "" -#: mod/admin.php:1503 +#: mod/admin.php:1574 msgid "Mobile system theme" msgstr "" -#: mod/admin.php:1503 +#: mod/admin.php:1574 msgid "Theme for mobile devices" msgstr "" -#: mod/admin.php:1504 +#: mod/admin.php:1575 msgid "SSL link policy" msgstr "" -#: mod/admin.php:1504 +#: mod/admin.php:1575 msgid "Determines whether generated links should be forced to use SSL" msgstr "" -#: mod/admin.php:1505 +#: mod/admin.php:1576 msgid "Force SSL" msgstr "" -#: mod/admin.php:1505 +#: mod/admin.php:1576 msgid "" "Force all Non-SSL requests to SSL - Attention: on some systems it could lead " "to endless loops." msgstr "" -#: mod/admin.php:1506 +#: mod/admin.php:1577 msgid "Hide help entry from navigation menu" msgstr "" -#: mod/admin.php:1506 +#: mod/admin.php:1577 msgid "" "Hides the menu entry for the Help pages from the navigation menu. You can " "still access it calling /help directly." msgstr "" -#: mod/admin.php:1507 +#: mod/admin.php:1578 msgid "Single user instance" msgstr "" -#: mod/admin.php:1507 +#: mod/admin.php:1578 msgid "Make this instance multi-user or single-user for the named user" msgstr "" -#: mod/admin.php:1508 +#: mod/admin.php:1580 +msgid "File storage backend" +msgstr "" + +#: mod/admin.php:1580 +msgid "Backend used to store uploaded files data" +msgstr "" + +#: mod/admin.php:1582 msgid "Maximum image size" msgstr "" -#: mod/admin.php:1508 +#: mod/admin.php:1582 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: mod/admin.php:1509 +#: mod/admin.php:1583 msgid "Maximum image length" msgstr "" -#: mod/admin.php:1509 +#: mod/admin.php:1583 msgid "" "Maximum length in pixels of the longest side of uploaded images. Default is " "-1, which means no limits." msgstr "" -#: mod/admin.php:1510 +#: mod/admin.php:1584 msgid "JPEG image quality" msgstr "" -#: mod/admin.php:1510 +#: mod/admin.php:1584 msgid "" "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " "100, which is full quality." msgstr "" -#: mod/admin.php:1512 +#: mod/admin.php:1586 msgid "Register policy" msgstr "" -#: mod/admin.php:1513 +#: mod/admin.php:1587 msgid "Maximum Daily Registrations" msgstr "" -#: mod/admin.php:1513 +#: mod/admin.php:1587 msgid "" "If registration is permitted above, this sets the maximum number of new user " "registrations to accept per day. If register is set to closed, this setting " "has no effect." msgstr "" -#: mod/admin.php:1514 +#: mod/admin.php:1588 msgid "Register text" msgstr "" -#: mod/admin.php:1514 +#: mod/admin.php:1588 msgid "" "Will be displayed prominently on the registration page. You can use BBCode " "here." msgstr "" -#: mod/admin.php:1515 +#: mod/admin.php:1589 msgid "Forbidden Nicknames" msgstr "" -#: mod/admin.php:1515 +#: mod/admin.php:1589 msgid "" "Comma separated list of nicknames that are forbidden from registration. " "Preset is a list of role names according RFC 2142." msgstr "" -#: mod/admin.php:1516 +#: mod/admin.php:1590 msgid "Accounts abandoned after x days" msgstr "" -#: mod/admin.php:1516 +#: mod/admin.php:1590 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: mod/admin.php:1517 +#: mod/admin.php:1591 msgid "Allowed friend domains" msgstr "" -#: mod/admin.php:1517 +#: mod/admin.php:1591 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: mod/admin.php:1518 +#: mod/admin.php:1592 msgid "Allowed email domains" msgstr "" -#: mod/admin.php:1518 +#: mod/admin.php:1592 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: mod/admin.php:1519 +#: mod/admin.php:1593 msgid "No OEmbed rich content" msgstr "" -#: mod/admin.php:1519 +#: mod/admin.php:1593 msgid "" "Don't show the rich content (e.g. embedded PDF), except from the domains " "listed below." msgstr "" -#: mod/admin.php:1520 +#: mod/admin.php:1594 msgid "Allowed OEmbed domains" msgstr "" -#: mod/admin.php:1520 +#: mod/admin.php:1594 msgid "" "Comma separated list of domains which oembed content is allowed to be " "displayed. Wildcards are accepted." msgstr "" -#: mod/admin.php:1521 +#: mod/admin.php:1595 msgid "Block public" msgstr "" -#: mod/admin.php:1521 +#: mod/admin.php:1595 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "" -#: mod/admin.php:1522 +#: mod/admin.php:1596 msgid "Force publish" msgstr "" -#: mod/admin.php:1522 +#: mod/admin.php:1596 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: mod/admin.php:1522 +#: mod/admin.php:1596 msgid "Enabling this may violate privacy laws like the GDPR" msgstr "" -#: mod/admin.php:1523 +#: mod/admin.php:1597 msgid "Global directory URL" msgstr "" -#: mod/admin.php:1523 +#: mod/admin.php:1597 msgid "" "URL to the global directory. If this is not set, the global directory is " "completely unavailable to the application." msgstr "" -#: mod/admin.php:1524 +#: mod/admin.php:1598 msgid "Private posts by default for new users" msgstr "" -#: mod/admin.php:1524 +#: mod/admin.php:1598 msgid "" "Set default post permissions for all new members to the default privacy " "group rather than public." msgstr "" -#: mod/admin.php:1525 +#: mod/admin.php:1599 msgid "Don't include post content in email notifications" msgstr "" -#: mod/admin.php:1525 +#: mod/admin.php:1599 msgid "" "Don't include the content of a post/comment/private message/etc. in the " "email notifications that are sent out from this site, as a privacy measure." msgstr "" -#: mod/admin.php:1526 +#: mod/admin.php:1600 msgid "Disallow public access to addons listed in the apps menu." msgstr "" -#: mod/admin.php:1526 +#: mod/admin.php:1600 msgid "" "Checking this box will restrict addons listed in the apps menu to members " "only." msgstr "" -#: mod/admin.php:1527 +#: mod/admin.php:1601 msgid "Don't embed private images in posts" msgstr "" -#: mod/admin.php:1527 +#: mod/admin.php:1601 msgid "" "Don't replace locally-hosted private photos in posts with an embedded copy " "of the image. This means that contacts who receive posts containing private " "photos will have to authenticate and load each image, which may take a while." msgstr "" -#: mod/admin.php:1528 +#: mod/admin.php:1602 msgid "Explicit Content" msgstr "" -#: mod/admin.php:1528 +#: mod/admin.php:1602 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 " @@ -1848,210 +1879,210 @@ msgid "" "will be shown at the user registration page." msgstr "" -#: mod/admin.php:1529 +#: mod/admin.php:1603 msgid "Allow Users to set remote_self" msgstr "" -#: mod/admin.php:1529 +#: mod/admin.php:1603 msgid "" "With checking this, every user is allowed to mark every contact as a " "remote_self in the repair contact dialog. Setting this flag on a contact " "causes mirroring every posting of that contact in the users stream." msgstr "" -#: mod/admin.php:1530 +#: mod/admin.php:1604 msgid "Block multiple registrations" msgstr "" -#: mod/admin.php:1530 +#: mod/admin.php:1604 msgid "Disallow users to register additional accounts for use as pages." msgstr "" -#: mod/admin.php:1531 +#: mod/admin.php:1605 msgid "Disable OpenID" msgstr "" -#: mod/admin.php:1531 +#: mod/admin.php:1605 msgid "Disable OpenID support for registration and logins." msgstr "" -#: mod/admin.php:1532 +#: mod/admin.php:1606 msgid "No Fullname check" msgstr "" -#: mod/admin.php:1532 +#: mod/admin.php:1606 msgid "" "Allow users to register without a space between the first name and the last " "name in their full name." msgstr "" -#: mod/admin.php:1533 +#: mod/admin.php:1607 msgid "Community pages for visitors" msgstr "" -#: mod/admin.php:1533 +#: mod/admin.php:1607 msgid "" "Which community pages should be available for visitors. Local users always " "see both pages." msgstr "" -#: mod/admin.php:1534 +#: mod/admin.php:1608 msgid "Posts per user on community page" msgstr "" -#: mod/admin.php:1534 +#: mod/admin.php:1608 msgid "" "The maximum number of posts per user on the community page. (Not valid for " "'Global Community')" msgstr "" -#: mod/admin.php:1535 +#: mod/admin.php:1609 msgid "Disable OStatus support" msgstr "" -#: mod/admin.php:1535 +#: mod/admin.php:1609 msgid "" "Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." msgstr "" -#: mod/admin.php:1536 +#: mod/admin.php:1610 msgid "Only import OStatus/ActivityPub threads from our contacts" msgstr "" -#: mod/admin.php:1536 +#: mod/admin.php:1610 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/admin.php:1537 +#: mod/admin.php:1611 msgid "OStatus support can only be enabled if threading is enabled." msgstr "" -#: mod/admin.php:1539 +#: mod/admin.php:1613 msgid "" "Diaspora support can't be enabled because Friendica was installed into a sub " "directory." msgstr "" -#: mod/admin.php:1540 +#: mod/admin.php:1614 msgid "Enable Diaspora support" msgstr "" -#: mod/admin.php:1540 +#: mod/admin.php:1614 msgid "Provide built-in Diaspora network compatibility." msgstr "" -#: mod/admin.php:1541 +#: mod/admin.php:1615 msgid "Only allow Friendica contacts" msgstr "" -#: mod/admin.php:1541 +#: mod/admin.php:1615 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "" -#: mod/admin.php:1542 +#: mod/admin.php:1616 msgid "Verify SSL" msgstr "" -#: mod/admin.php:1542 +#: mod/admin.php:1616 msgid "" "If you wish, you can turn on strict certificate checking. This will mean you " "cannot connect (at all) to self-signed SSL sites." msgstr "" -#: mod/admin.php:1543 +#: mod/admin.php:1617 msgid "Proxy user" msgstr "" -#: mod/admin.php:1544 +#: mod/admin.php:1618 msgid "Proxy URL" msgstr "" -#: mod/admin.php:1545 +#: mod/admin.php:1619 msgid "Network timeout" msgstr "" -#: mod/admin.php:1545 +#: mod/admin.php:1619 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: mod/admin.php:1546 +#: mod/admin.php:1620 msgid "Maximum Load Average" msgstr "" -#: mod/admin.php:1546 +#: mod/admin.php:1620 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: mod/admin.php:1547 +#: mod/admin.php:1621 msgid "Maximum Load Average (Frontend)" msgstr "" -#: mod/admin.php:1547 +#: mod/admin.php:1621 msgid "Maximum system load before the frontend quits service - default 50." msgstr "" -#: mod/admin.php:1548 +#: mod/admin.php:1622 msgid "Minimal Memory" msgstr "" -#: mod/admin.php:1548 +#: mod/admin.php:1622 msgid "" "Minimal free memory in MB for the worker. Needs access to /proc/meminfo - " "default 0 (deactivated)." msgstr "" -#: mod/admin.php:1549 +#: mod/admin.php:1623 msgid "Maximum table size for optimization" msgstr "" -#: mod/admin.php:1549 +#: mod/admin.php:1623 msgid "" "Maximum table size (in MB) for the automatic optimization. Enter -1 to " "disable it." msgstr "" -#: mod/admin.php:1550 +#: mod/admin.php:1624 msgid "Minimum level of fragmentation" msgstr "" -#: mod/admin.php:1550 +#: mod/admin.php:1624 msgid "" "Minimum fragmenation level to start the automatic optimization - default " "value is 30%." msgstr "" -#: mod/admin.php:1552 +#: mod/admin.php:1626 msgid "Periodical check of global contacts" msgstr "" -#: mod/admin.php:1552 +#: mod/admin.php:1626 msgid "" "If enabled, the global contacts are checked periodically for missing or " "outdated data and the vitality of the contacts and servers." msgstr "" -#: mod/admin.php:1553 +#: mod/admin.php:1627 msgid "Days between requery" msgstr "" -#: mod/admin.php:1553 +#: mod/admin.php:1627 msgid "Number of days after which a server is requeried for his contacts." msgstr "" -#: mod/admin.php:1554 +#: mod/admin.php:1628 msgid "Discover contacts from other servers" msgstr "" -#: mod/admin.php:1554 +#: mod/admin.php:1628 msgid "" "Periodically query other servers for contacts. You can choose between " "'users': the users on the remote system, 'Global Contacts': active contacts " @@ -2061,32 +2092,32 @@ msgid "" "Global Contacts'." msgstr "" -#: mod/admin.php:1555 +#: mod/admin.php:1629 msgid "Timeframe for fetching global contacts" msgstr "" -#: mod/admin.php:1555 +#: mod/admin.php:1629 msgid "" "When the discovery is activated, this value defines the timeframe for the " "activity of the global contacts that are fetched from other servers." msgstr "" -#: mod/admin.php:1556 +#: mod/admin.php:1630 msgid "Search the local directory" msgstr "" -#: mod/admin.php:1556 +#: mod/admin.php:1630 msgid "" "Search the local directory instead of the global directory. When searching " "locally, every search will be executed on the global directory in the " "background. This improves the search results when the search is repeated." msgstr "" -#: mod/admin.php:1558 +#: mod/admin.php:1632 msgid "Publish server information" msgstr "" -#: mod/admin.php:1558 +#: mod/admin.php:1632 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 " @@ -2094,50 +2125,50 @@ msgid "" "href='http://the-federation.info/'>the-federation.info for details." msgstr "" -#: mod/admin.php:1560 +#: mod/admin.php:1634 msgid "Check upstream version" msgstr "" -#: mod/admin.php:1560 +#: mod/admin.php:1634 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/admin.php:1561 +#: mod/admin.php:1635 msgid "Suppress Tags" msgstr "" -#: mod/admin.php:1561 +#: mod/admin.php:1635 msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "" -#: mod/admin.php:1562 +#: mod/admin.php:1636 msgid "Clean database" msgstr "" -#: mod/admin.php:1562 +#: mod/admin.php:1636 msgid "" "Remove old remote items, orphaned database records and old content from some " "other helper tables." msgstr "" -#: mod/admin.php:1563 +#: mod/admin.php:1637 msgid "Lifespan of remote items" msgstr "" -#: mod/admin.php:1563 +#: mod/admin.php:1637 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/admin.php:1564 +#: mod/admin.php:1638 msgid "Lifespan of unclaimed items" msgstr "" -#: mod/admin.php:1564 +#: mod/admin.php:1638 msgid "" "When the database cleanup is enabled, this defines the days after which " "unclaimed remote items (mostly content from the relay) will be deleted. " @@ -2145,141 +2176,141 @@ msgid "" "items if set to 0." msgstr "" -#: mod/admin.php:1565 +#: mod/admin.php:1639 msgid "Lifespan of raw conversation data" msgstr "" -#: mod/admin.php:1565 +#: mod/admin.php:1639 msgid "" "The conversation data is used for ActivityPub and OStatus, as well as for " "debug purposes. It should be safe to remove it after 14 days, default is 90 " "days." msgstr "" -#: mod/admin.php:1566 +#: mod/admin.php:1640 msgid "Path to item cache" msgstr "" -#: mod/admin.php:1566 +#: mod/admin.php:1640 msgid "The item caches buffers generated bbcode and external images." msgstr "" -#: mod/admin.php:1567 +#: mod/admin.php:1641 msgid "Cache duration in seconds" msgstr "" -#: mod/admin.php:1567 +#: mod/admin.php:1641 msgid "" "How long should the cache files be hold? Default value is 86400 seconds (One " "day). To disable the item cache, set the value to -1." msgstr "" -#: mod/admin.php:1568 +#: mod/admin.php:1642 msgid "Maximum numbers of comments per post" msgstr "" -#: mod/admin.php:1568 +#: mod/admin.php:1642 msgid "How much comments should be shown for each post? Default value is 100." msgstr "" -#: mod/admin.php:1569 +#: mod/admin.php:1643 msgid "Temp path" msgstr "" -#: mod/admin.php:1569 +#: mod/admin.php:1643 msgid "" "If you have a restricted system where the webserver can't access the system " "temp path, enter another path here." msgstr "" -#: mod/admin.php:1570 +#: mod/admin.php:1644 msgid "Base path to installation" msgstr "" -#: mod/admin.php:1570 +#: mod/admin.php:1644 msgid "" "If the system cannot detect the correct path to your installation, enter the " "correct path here. This setting should only be set if you are using a " "restricted system and symbolic links to your webroot." msgstr "" -#: mod/admin.php:1571 +#: mod/admin.php:1645 msgid "Disable picture proxy" msgstr "" -#: mod/admin.php:1571 +#: mod/admin.php:1645 msgid "" "The picture proxy increases performance and privacy. It shouldn't be used on " "systems with very low bandwidth." msgstr "" -#: mod/admin.php:1572 +#: mod/admin.php:1646 msgid "Only search in tags" msgstr "" -#: mod/admin.php:1572 +#: mod/admin.php:1646 msgid "On large systems the text search can slow down the system extremely." msgstr "" -#: mod/admin.php:1574 +#: mod/admin.php:1648 msgid "New base url" msgstr "" -#: mod/admin.php:1574 +#: mod/admin.php:1648 msgid "" "Change base url for this server. Sends relocate message to all Friendica and " "Diaspora* contacts of all users." msgstr "" -#: mod/admin.php:1576 +#: mod/admin.php:1650 msgid "RINO Encryption" msgstr "" -#: mod/admin.php:1576 +#: mod/admin.php:1650 msgid "Encryption layer between nodes." msgstr "" -#: mod/admin.php:1576 +#: mod/admin.php:1650 msgid "Enabled" msgstr "" -#: mod/admin.php:1578 +#: mod/admin.php:1652 msgid "Maximum number of parallel workers" msgstr "" -#: mod/admin.php:1578 +#: mod/admin.php:1652 #, php-format msgid "" "On shared hosters set this to %d. On larger systems, values of %d are great. " "Default value is %d." msgstr "" -#: mod/admin.php:1579 +#: mod/admin.php:1653 msgid "Don't use 'proc_open' with the worker" msgstr "" -#: mod/admin.php:1579 +#: mod/admin.php:1653 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." msgstr "" -#: mod/admin.php:1580 +#: mod/admin.php:1654 msgid "Enable fastlane" msgstr "" -#: mod/admin.php:1580 +#: mod/admin.php:1654 msgid "" "When enabed, the fastlane mechanism starts an additional worker if processes " "with higher priority are blocked by processes of lower priority." msgstr "" -#: mod/admin.php:1581 +#: mod/admin.php:1655 msgid "Enable frontend worker" msgstr "" -#: mod/admin.php:1581 +#: mod/admin.php:1655 #, php-format msgid "" "When enabled the Worker process is triggered when backend access is " @@ -2289,135 +2320,135 @@ msgid "" "on your server." msgstr "" -#: mod/admin.php:1583 +#: mod/admin.php:1657 msgid "Subscribe to relay" msgstr "" -#: mod/admin.php:1583 +#: mod/admin.php:1657 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." msgstr "" -#: mod/admin.php:1584 +#: mod/admin.php:1658 msgid "Relay server" msgstr "" -#: mod/admin.php:1584 +#: mod/admin.php:1658 msgid "" "Address of the relay server where public posts should be send to. For " "example https://relay.diasp.org" msgstr "" -#: mod/admin.php:1585 +#: mod/admin.php:1659 msgid "Direct relay transfer" msgstr "" -#: mod/admin.php:1585 +#: mod/admin.php:1659 msgid "" "Enables the direct transfer to other servers without using the relay servers" msgstr "" -#: mod/admin.php:1586 +#: mod/admin.php:1660 msgid "Relay scope" msgstr "" -#: mod/admin.php:1586 +#: mod/admin.php:1660 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." msgstr "" -#: mod/admin.php:1586 +#: mod/admin.php:1660 msgid "all" msgstr "" -#: mod/admin.php:1586 +#: mod/admin.php:1660 msgid "tags" msgstr "" -#: mod/admin.php:1587 +#: mod/admin.php:1661 msgid "Server tags" msgstr "" -#: mod/admin.php:1587 +#: mod/admin.php:1661 msgid "Comma separated list of tags for the 'tags' subscription." msgstr "" -#: mod/admin.php:1588 +#: mod/admin.php:1662 msgid "Allow user tags" msgstr "" -#: mod/admin.php:1588 +#: mod/admin.php:1662 msgid "" "If enabled, the tags from the saved searches will used for the 'tags' " "subscription in addition to the 'relay_server_tags'." msgstr "" -#: mod/admin.php:1591 +#: mod/admin.php:1665 msgid "Start Relocation" msgstr "" -#: mod/admin.php:1617 +#: mod/admin.php:1691 msgid "Update has been marked successful" msgstr "" -#: mod/admin.php:1624 +#: mod/admin.php:1698 #, php-format msgid "Database structure update %s was successfully applied." msgstr "" -#: mod/admin.php:1628 +#: mod/admin.php:1702 #, php-format msgid "Executing of database structure update %s failed with error: %s" msgstr "" -#: mod/admin.php:1644 +#: mod/admin.php:1718 #, php-format msgid "Executing %s failed with error: %s" msgstr "" -#: mod/admin.php:1646 +#: mod/admin.php:1720 #, php-format msgid "Update %s was successfully applied." msgstr "" -#: mod/admin.php:1649 +#: mod/admin.php:1723 #, php-format msgid "Update %s did not return a status. Unknown if it succeeded." msgstr "" -#: mod/admin.php:1652 +#: mod/admin.php:1726 #, php-format msgid "There was no additional update function %s that needed to be called." msgstr "" -#: mod/admin.php:1675 +#: mod/admin.php:1749 msgid "No failed updates." msgstr "" -#: mod/admin.php:1676 +#: mod/admin.php:1750 msgid "Check database structure" msgstr "" -#: mod/admin.php:1681 +#: mod/admin.php:1755 msgid "Failed Updates" msgstr "" -#: mod/admin.php:1682 +#: mod/admin.php:1756 msgid "" "This does not include updates prior to 1139, which did not return a status." msgstr "" -#: mod/admin.php:1683 +#: mod/admin.php:1757 msgid "Mark success (if update was manually applied)" msgstr "" -#: mod/admin.php:1684 +#: mod/admin.php:1758 msgid "Attempt to execute this update step automatically" msgstr "" -#: mod/admin.php:1723 +#: mod/admin.php:1797 #, php-format msgid "" "\n" @@ -2425,7 +2456,7 @@ msgid "" "\t\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: mod/admin.php:1726 +#: mod/admin.php:1800 #, php-format msgid "" "\n" @@ -2464,221 +2495,221 @@ msgid "" "\t\t\tThank you and welcome to %4$s." msgstr "" -#: mod/admin.php:1763 src/Model/User.php:802 +#: mod/admin.php:1837 src/Model/User.php:802 #, php-format msgid "Registration details for %s" msgstr "" -#: mod/admin.php:1773 +#: mod/admin.php:1847 #, php-format msgid "%s user blocked/unblocked" msgid_plural "%s users blocked/unblocked" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:1780 mod/admin.php:1833 +#: mod/admin.php:1854 mod/admin.php:1907 msgid "You can't remove yourself" msgstr "" -#: mod/admin.php:1783 +#: mod/admin.php:1857 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:1831 +#: mod/admin.php:1905 #, php-format msgid "User '%s' deleted" msgstr "" -#: mod/admin.php:1842 +#: mod/admin.php:1916 #, php-format msgid "User '%s' unblocked" msgstr "" -#: mod/admin.php:1842 +#: mod/admin.php:1916 #, php-format msgid "User '%s' blocked" msgstr "" -#: mod/admin.php:1890 mod/settings.php:1052 +#: mod/admin.php:1964 mod/settings.php:1052 msgid "Normal Account Page" msgstr "" -#: mod/admin.php:1891 mod/settings.php:1056 +#: mod/admin.php:1965 mod/settings.php:1056 msgid "Soapbox Page" msgstr "" -#: mod/admin.php:1892 mod/settings.php:1060 +#: mod/admin.php:1966 mod/settings.php:1060 msgid "Public Forum" msgstr "" -#: mod/admin.php:1893 mod/settings.php:1064 +#: mod/admin.php:1967 mod/settings.php:1064 msgid "Automatic Friend Page" msgstr "" -#: mod/admin.php:1894 +#: mod/admin.php:1968 msgid "Private Forum" msgstr "" -#: mod/admin.php:1897 mod/settings.php:1036 +#: mod/admin.php:1971 mod/settings.php:1036 msgid "Personal Page" msgstr "" -#: mod/admin.php:1898 mod/settings.php:1040 +#: mod/admin.php:1972 mod/settings.php:1040 msgid "Organisation Page" msgstr "" -#: mod/admin.php:1899 mod/settings.php:1044 +#: mod/admin.php:1973 mod/settings.php:1044 msgid "News Page" msgstr "" -#: mod/admin.php:1900 mod/settings.php:1048 +#: mod/admin.php:1974 mod/settings.php:1048 msgid "Community Forum" msgstr "" -#: mod/admin.php:1946 mod/admin.php:1957 mod/admin.php:1971 mod/admin.php:1989 -#: src/Content/ContactSelector.php:84 +#: mod/admin.php:2020 mod/admin.php:2031 mod/admin.php:2045 mod/admin.php:2063 +#: src/Content/ContactSelector.php:83 msgid "Email" msgstr "" -#: mod/admin.php:1946 mod/admin.php:1971 +#: mod/admin.php:2020 mod/admin.php:2045 msgid "Register date" msgstr "" -#: mod/admin.php:1946 mod/admin.php:1971 +#: mod/admin.php:2020 mod/admin.php:2045 msgid "Last login" msgstr "" -#: mod/admin.php:1946 mod/admin.php:1971 +#: mod/admin.php:2020 mod/admin.php:2045 msgid "Last item" msgstr "" -#: mod/admin.php:1946 +#: mod/admin.php:2020 msgid "Type" msgstr "" -#: mod/admin.php:1953 +#: mod/admin.php:2027 msgid "Add User" msgstr "" -#: mod/admin.php:1955 +#: mod/admin.php:2029 msgid "User registrations waiting for confirm" msgstr "" -#: mod/admin.php:1956 +#: mod/admin.php:2030 msgid "User waiting for permanent deletion" msgstr "" -#: mod/admin.php:1957 +#: mod/admin.php:2031 msgid "Request date" msgstr "" -#: mod/admin.php:1958 +#: mod/admin.php:2032 msgid "No registrations." msgstr "" -#: mod/admin.php:1959 +#: mod/admin.php:2033 msgid "Note from the user" msgstr "" -#: mod/admin.php:1960 mod/notifications.php:181 mod/notifications.php:267 +#: mod/admin.php:2034 mod/notifications.php:181 mod/notifications.php:267 msgid "Approve" msgstr "" -#: mod/admin.php:1961 +#: mod/admin.php:2035 msgid "Deny" msgstr "" -#: mod/admin.php:1964 +#: mod/admin.php:2038 msgid "User blocked" msgstr "" -#: mod/admin.php:1966 +#: mod/admin.php:2040 msgid "Site admin" msgstr "" -#: mod/admin.php:1967 +#: mod/admin.php:2041 msgid "Account expired" msgstr "" -#: mod/admin.php:1970 +#: mod/admin.php:2044 msgid "New User" msgstr "" -#: mod/admin.php:1971 +#: mod/admin.php:2045 msgid "Permanent deletion" msgstr "" -#: mod/admin.php:1976 +#: mod/admin.php:2050 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/admin.php:1977 +#: mod/admin.php:2051 msgid "" "The user {0} will be deleted!\\n\\nEverything this user has posted on this " "site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/admin.php:1987 +#: mod/admin.php:2061 msgid "Name of the new user." msgstr "" -#: mod/admin.php:1988 +#: mod/admin.php:2062 msgid "Nickname" msgstr "" -#: mod/admin.php:1988 +#: mod/admin.php:2062 msgid "Nickname of the new user." msgstr "" -#: mod/admin.php:1989 +#: mod/admin.php:2063 msgid "Email address of the new user." msgstr "" -#: mod/admin.php:2030 +#: mod/admin.php:2104 #, php-format msgid "Addon %s disabled." msgstr "" -#: mod/admin.php:2033 +#: mod/admin.php:2107 #, php-format msgid "Addon %s enabled." msgstr "" -#: mod/admin.php:2044 mod/admin.php:2293 +#: mod/admin.php:2118 mod/admin.php:2367 msgid "Disable" msgstr "" -#: mod/admin.php:2047 mod/admin.php:2296 +#: mod/admin.php:2121 mod/admin.php:2370 msgid "Enable" msgstr "" -#: mod/admin.php:2069 mod/admin.php:2333 +#: mod/admin.php:2143 mod/admin.php:2399 msgid "Toggle" msgstr "" -#: mod/admin.php:2070 mod/admin.php:2334 mod/newmember.php:20 -#: mod/settings.php:136 src/Content/Nav.php:257 view/theme/frio/theme.php:283 +#: mod/admin.php:2144 mod/admin.php:2400 mod/newmember.php:20 +#: mod/settings.php:136 src/Content/Nav.php:256 view/theme/frio/theme.php:270 msgid "Settings" msgstr "" -#: mod/admin.php:2077 mod/admin.php:2342 +#: mod/admin.php:2151 mod/admin.php:2408 msgid "Author: " msgstr "" -#: mod/admin.php:2078 mod/admin.php:2343 +#: mod/admin.php:2152 mod/admin.php:2409 msgid "Maintainer: " msgstr "" -#: mod/admin.php:2130 +#: mod/admin.php:2204 msgid "Reload active addons" msgstr "" -#: mod/admin.php:2135 +#: mod/admin.php:2209 #, php-format msgid "" "There are currently no addons available on your node. You can find the " @@ -2686,70 +2717,70 @@ msgid "" "the open addon registry at %2$s" msgstr "" -#: mod/admin.php:2255 +#: mod/admin.php:2329 msgid "No themes found." msgstr "" -#: mod/admin.php:2324 +#: mod/admin.php:2390 msgid "Screenshot" msgstr "" -#: mod/admin.php:2378 +#: mod/admin.php:2444 msgid "Reload active themes" msgstr "" -#: mod/admin.php:2383 +#: mod/admin.php:2449 #, php-format msgid "No themes found on the system. They should be placed in %1$s" msgstr "" -#: mod/admin.php:2384 +#: mod/admin.php:2450 msgid "[Experimental]" msgstr "" -#: mod/admin.php:2385 +#: mod/admin.php:2451 msgid "[Unsupported]" msgstr "" -#: mod/admin.php:2409 +#: mod/admin.php:2475 msgid "Log settings updated." msgstr "" -#: mod/admin.php:2442 +#: mod/admin.php:2508 msgid "PHP log currently enabled." msgstr "" -#: mod/admin.php:2444 +#: mod/admin.php:2510 msgid "PHP log currently disabled." msgstr "" -#: mod/admin.php:2453 +#: mod/admin.php:2519 msgid "Clear" msgstr "" -#: mod/admin.php:2457 +#: mod/admin.php:2523 msgid "Enable Debugging" msgstr "" -#: mod/admin.php:2458 +#: mod/admin.php:2524 msgid "Log file" msgstr "" -#: mod/admin.php:2458 +#: mod/admin.php:2524 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "" -#: mod/admin.php:2459 +#: mod/admin.php:2525 msgid "Log level" msgstr "" -#: mod/admin.php:2461 +#: mod/admin.php:2527 msgid "PHP logging" msgstr "" -#: mod/admin.php:2462 +#: mod/admin.php:2528 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 " @@ -2758,34 +2789,34 @@ msgid "" "'display_errors' is to enable these options, set to '0' to disable them." msgstr "" -#: mod/admin.php:2493 +#: mod/admin.php:2559 #, php-format msgid "" "Error trying to open %1$s log file.\\r\\n
Check to see " "if file %1$s exist and is readable." msgstr "" -#: mod/admin.php:2497 +#: mod/admin.php:2563 #, php-format msgid "" "Couldn't open %1$s log file.\\r\\n
Check to see if file " "%1$s is readable." msgstr "" -#: mod/admin.php:2588 mod/admin.php:2589 mod/settings.php:766 +#: mod/admin.php:2654 mod/admin.php:2655 mod/settings.php:766 msgid "Off" msgstr "" -#: mod/admin.php:2588 mod/admin.php:2589 mod/settings.php:766 +#: mod/admin.php:2654 mod/admin.php:2655 mod/settings.php:766 msgid "On" msgstr "" -#: mod/admin.php:2589 +#: mod/admin.php:2655 #, php-format msgid "Lock feature %s" msgstr "" -#: mod/admin.php:2597 +#: mod/admin.php:2663 msgid "Manage Additional Features" msgstr "" @@ -2794,7 +2825,7 @@ msgid "No friends to display." msgstr "" #: mod/allfriends.php:91 mod/dirfind.php:219 mod/match.php:99 -#: mod/suggest.php:105 src/Content/Widget.php:38 src/Model/Profile.php:307 +#: mod/suggest.php:105 src/Content/Widget.php:39 src/Model/Profile.php:307 msgid "Connect" msgstr "" @@ -2816,7 +2847,7 @@ msgid "" "and/or create new posts for you?" msgstr "" -#: mod/api.php:113 mod/dfrn_request.php:644 mod/follow.php:151 +#: mod/api.php:113 mod/dfrn_request.php:640 mod/follow.php:151 #: mod/profiles.php:542 mod/profiles.php:546 mod/profiles.php:567 #: mod/register.php:233 mod/settings.php:1088 mod/settings.php:1094 #: mod/settings.php:1101 mod/settings.php:1105 mod/settings.php:1109 @@ -2826,7 +2857,7 @@ msgstr "" msgid "No" msgstr "" -#: mod/apps.php:15 src/App.php:1657 +#: mod/apps.php:15 src/App.php:1692 msgid "You must be logged in to use addons. " msgstr "" @@ -2838,14 +2869,6 @@ msgstr "" msgid "No installed applications." msgstr "" -#: mod/attach.php:14 -msgid "Item not available." -msgstr "" - -#: mod/attach.php:24 -msgid "Item was not found." -msgstr "" - #: mod/babel.php:25 msgid "Source input" msgstr "" @@ -2942,7 +2965,7 @@ msgstr "" msgid "HTML" msgstr "" -#: mod/bookmarklet.php:22 src/Content/Nav.php:164 src/Module/Login.php:319 +#: mod/bookmarklet.php:22 src/Content/Nav.php:163 src/Module/Login.php:319 msgid "Login" msgstr "" @@ -2960,17 +2983,17 @@ msgid "Access denied." msgstr "" #: mod/cal.php:47 mod/dfrn_poll.php:490 mod/help.php:67 mod/viewcontacts.php:34 -#: src/App.php:1708 +#: src/App.php:1743 msgid "Page not found." msgstr "" -#: mod/cal.php:142 mod/display.php:313 mod/profile.php:156 +#: mod/cal.php:142 mod/display.php:313 mod/profile.php:155 msgid "Access to this profile has been restricted." msgstr "" -#: mod/cal.php:274 mod/events.php:399 src/Content/Nav.php:154 -#: src/Content/Nav.php:220 src/Model/Profile.php:938 src/Model/Profile.php:949 -#: view/theme/frio/theme.php:277 view/theme/frio/theme.php:281 +#: mod/cal.php:274 mod/events.php:399 src/Content/Nav.php:153 +#: src/Content/Nav.php:219 src/Model/Profile.php:942 src/Model/Profile.php:953 +#: view/theme/frio/theme.php:264 view/theme/frio/theme.php:268 msgid "Events" msgstr "" @@ -3029,13 +3052,13 @@ msgstr "" msgid "No contacts in common." msgstr "" -#: mod/common.php:141 src/Module/Contact.php:893 +#: mod/common.php:141 src/Module/Contact.php:895 msgid "Common Friends" msgstr "" -#: mod/community.php:31 mod/dfrn_request.php:598 mod/directory.php:43 -#: mod/display.php:213 mod/photos.php:943 mod/probe.php:13 mod/search.php:97 -#: mod/search.php:103 mod/videos.php:192 mod/viewcontacts.php:46 +#: mod/community.php:31 mod/dfrn_request.php:597 mod/directory.php:43 +#: mod/display.php:213 mod/photos.php:902 mod/probe.php:13 mod/search.php:97 +#: mod/search.php:103 mod/videos.php:148 mod/viewcontacts.php:46 #: mod/webfinger.php:16 msgid "Public access denied." msgstr "" @@ -3131,12 +3154,12 @@ msgid "Refetch contact data" msgstr "" #: mod/crepair.php:151 mod/events.php:568 mod/fsuggest.php:115 -#: mod/invite.php:154 mod/localtime.php:56 mod/manage.php:183 -#: mod/message.php:263 mod/message.php:443 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:192 +#: mod/invite.php:154 mod/localtime.php:56 mod/manage.php:182 +#: mod/message.php:263 mod/message.php:443 mod/photos.php:1048 +#: mod/photos.php:1136 mod/photos.php:1411 mod/photos.php:1456 +#: mod/photos.php:1495 mod/photos.php:1555 mod/poke.php:188 #: mod/profiles.php:578 src/Module/Contact.php:596 src/Module/Install.php:189 -#: src/Module/Install.php:224 src/Object/Post.php:808 +#: src/Module/Install.php:224 src/Object/Post.php:819 #: view/theme/duepuntozero/config.php:72 view/theme/frio/config.php:119 #: view/theme/quattro/config.php:74 view/theme/vier/config.php:120 msgid "Submit" @@ -3215,7 +3238,7 @@ msgid "" "settings. Please double check whom you give this access." msgstr "" -#: mod/delegate.php:177 src/Content/Nav.php:255 +#: mod/delegate.php:177 src/Content/Nav.php:254 msgid "Delegate Page Management" msgstr "" @@ -3285,47 +3308,47 @@ msgstr "" msgid "Remote site reported: " msgstr "" -#: mod/dfrn_confirm.php:381 +#: mod/dfrn_confirm.php:386 msgid "Unable to set contact photo." msgstr "" -#: mod/dfrn_confirm.php:443 +#: mod/dfrn_confirm.php:448 #, php-format msgid "No user record found for '%s' " msgstr "" -#: mod/dfrn_confirm.php:453 +#: mod/dfrn_confirm.php:458 msgid "Our site encryption key is apparently messed up." msgstr "" -#: mod/dfrn_confirm.php:464 +#: mod/dfrn_confirm.php:469 msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "" -#: mod/dfrn_confirm.php:480 +#: mod/dfrn_confirm.php:485 msgid "Contact record was not found for you on our site." msgstr "" -#: mod/dfrn_confirm.php:494 +#: mod/dfrn_confirm.php:499 #, php-format msgid "Site public key not available in contact record for URL %s." msgstr "" -#: mod/dfrn_confirm.php:510 +#: mod/dfrn_confirm.php:515 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." msgstr "" -#: mod/dfrn_confirm.php:521 +#: mod/dfrn_confirm.php:526 msgid "Unable to set your contact credentials on our system." msgstr "" -#: mod/dfrn_confirm.php:577 +#: mod/dfrn_confirm.php:582 msgid "Unable to update your contact profile details on our system" msgstr "" -#: mod/dfrn_confirm.php:607 mod/dfrn_request.php:560 src/Model/Contact.php:1960 +#: mod/dfrn_confirm.php:612 mod/dfrn_request.php:560 src/Model/Contact.php:1976 msgid "[Name Withheld]" msgstr "" @@ -3399,7 +3422,7 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:340 src/Model/Contact.php:1640 +#: mod/dfrn_request.php:340 src/Model/Contact.php:1648 msgid "Disallowed profile URL." msgstr "" @@ -3445,66 +3468,66 @@ msgstr "" msgid "Please confirm your introduction/connection request to %s." msgstr "" -#: mod/dfrn_request.php:633 +#: mod/dfrn_request.php:632 msgid "" "Please enter your 'Identity Address' from one of the following supported " "communications networks:" msgstr "" -#: mod/dfrn_request.php:636 +#: mod/dfrn_request.php:634 #, php-format msgid "" "If you are not yet a member of the free social web, follow " "this link to find a public Friendica site and join us today." msgstr "" -#: mod/dfrn_request.php:641 +#: mod/dfrn_request.php:637 msgid "Friend/Connection Request" msgstr "" -#: mod/dfrn_request.php:642 +#: mod/dfrn_request.php:638 msgid "" "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "testuser@gnusocial.de" msgstr "" -#: mod/dfrn_request.php:643 mod/follow.php:150 +#: mod/dfrn_request.php:639 mod/follow.php:150 msgid "Please answer the following:" msgstr "" -#: mod/dfrn_request.php:644 mod/follow.php:151 +#: mod/dfrn_request.php:640 mod/follow.php:151 #, php-format msgid "Does %s know you?" msgstr "" -#: mod/dfrn_request.php:645 mod/follow.php:152 +#: mod/dfrn_request.php:641 mod/follow.php:152 msgid "Add a personal note:" msgstr "" -#: mod/dfrn_request.php:647 +#: mod/dfrn_request.php:643 msgid "Friendica" msgstr "" -#: mod/dfrn_request.php:648 +#: mod/dfrn_request.php:644 msgid "GNU Social (Pleroma, Mastodon)" msgstr "" -#: mod/dfrn_request.php:649 +#: mod/dfrn_request.php:645 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: mod/dfrn_request.php:650 +#: mod/dfrn_request.php:646 #, php-format msgid "" " - please do not use this form. Instead, enter %s into your Diaspora search " "bar." msgstr "" -#: mod/dfrn_request.php:651 mod/follow.php:158 mod/unfollow.php:128 +#: mod/dfrn_request.php:647 mod/follow.php:158 mod/unfollow.php:128 msgid "Your Identity Address:" msgstr "" -#: mod/dfrn_request.php:653 mod/follow.php:66 mod/unfollow.php:131 +#: mod/dfrn_request.php:649 mod/follow.php:66 mod/unfollow.php:131 msgid "Submit Request" msgstr "" @@ -3515,24 +3538,24 @@ msgid "Location:" msgstr "" #: mod/directory.php:159 mod/notifications.php:257 src/Model/Profile.php:440 -#: src/Model/Profile.php:759 +#: src/Model/Profile.php:763 msgid "Gender:" msgstr "" -#: mod/directory.php:160 src/Model/Profile.php:441 src/Model/Profile.php:783 +#: mod/directory.php:160 src/Model/Profile.php:441 src/Model/Profile.php:787 msgid "Status:" msgstr "" -#: mod/directory.php:161 src/Model/Profile.php:442 src/Model/Profile.php:800 +#: mod/directory.php:161 src/Model/Profile.php:442 src/Model/Profile.php:804 msgid "Homepage:" msgstr "" #: mod/directory.php:162 mod/notifications.php:253 src/Model/Profile.php:443 -#: src/Model/Profile.php:820 src/Module/Contact.php:650 +#: src/Model/Profile.php:824 src/Module/Contact.php:650 msgid "About:" msgstr "" -#: mod/directory.php:210 src/Content/Widget.php:69 +#: mod/directory.php:210 src/Content/Widget.php:70 #: view/theme/vier/theme.php:208 msgid "Global Directory" msgstr "" @@ -3549,7 +3572,7 @@ msgstr "" msgid "Site Directory" msgstr "" -#: mod/directory.php:217 src/Content/Widget.php:64 src/Module/Contact.php:818 +#: mod/directory.php:217 src/Content/Widget.php:65 src/Module/Contact.php:820 #: view/theme/vier/theme.php:203 msgid "Find" msgstr "" @@ -3572,49 +3595,49 @@ msgstr "" msgid "No matches" msgstr "" -#: mod/editpost.php:30 mod/editpost.php:40 +#: mod/editpost.php:29 mod/editpost.php:39 msgid "Item not found" msgstr "" -#: mod/editpost.php:47 +#: mod/editpost.php:46 msgid "Edit post" msgstr "" -#: mod/editpost.php:93 mod/filer.php:36 mod/notes.php:52 -#: src/Content/Text/HTML.php:963 +#: mod/editpost.php:92 mod/filer.php:36 mod/notes.php:52 +#: src/Content/Text/HTML.php:962 msgid "Save" msgstr "" -#: mod/editpost.php:98 mod/message.php:261 mod/message.php:442 +#: mod/editpost.php:97 mod/message.php:261 mod/message.php:442 #: mod/wallmessage.php:140 msgid "Insert web link" msgstr "" -#: mod/editpost.php:99 +#: mod/editpost.php:98 msgid "web link" msgstr "" -#: mod/editpost.php:100 +#: mod/editpost.php:99 msgid "Insert video link" msgstr "" -#: mod/editpost.php:101 +#: mod/editpost.php:100 msgid "video link" msgstr "" -#: mod/editpost.php:102 +#: mod/editpost.php:101 msgid "Insert audio link" msgstr "" -#: mod/editpost.php:103 +#: mod/editpost.php:102 msgid "audio link" msgstr "" -#: mod/editpost.php:118 src/Core/ACL.php:305 +#: mod/editpost.php:117 src/Core/ACL.php:303 msgid "CC: email addresses" msgstr "" -#: mod/editpost.php:125 src/Core/ACL.php:306 +#: mod/editpost.php:124 src/Core/ACL.php:304 msgid "Example: bob@example.com, mary@example.com" msgstr "" @@ -3670,12 +3693,12 @@ msgstr "" msgid "Share this event" msgstr "" -#: mod/events.php:569 src/Model/Profile.php:878 +#: mod/events.php:569 src/Model/Profile.php:882 msgid "Basic" msgstr "" -#: mod/events.php:571 mod/photos.php:1107 mod/photos.php:1448 -#: src/Core/ACL.php:308 +#: mod/events.php:571 mod/photos.php:1066 mod/photos.php:1407 +#: src/Core/ACL.php:306 msgid "Permissions" msgstr "" @@ -3687,19 +3710,19 @@ msgstr "" msgid "Event removed" msgstr "" -#: mod/fbrowser.php:36 src/Content/Nav.php:152 src/Model/Profile.php:918 -#: view/theme/frio/theme.php:275 +#: mod/fbrowser.php:36 src/Content/Nav.php:151 src/Model/Profile.php:922 +#: view/theme/frio/theme.php:262 msgid "Photos" msgstr "" -#: mod/fbrowser.php:45 mod/fbrowser.php:70 mod/photos.php:202 -#: mod/photos.php:1071 mod/photos.php:1166 mod/photos.php:1183 -#: mod/photos.php:1650 mod/photos.php:1665 src/Model/Photo.php:242 -#: src/Model/Photo.php:251 +#: mod/fbrowser.php:45 mod/fbrowser.php:70 mod/photos.php:201 +#: mod/photos.php:1030 mod/photos.php:1125 mod/photos.php:1142 +#: mod/photos.php:1609 mod/photos.php:1624 src/Model/Photo.php:528 +#: src/Model/Photo.php:537 msgid "Contact Photos" msgstr "" -#: mod/fbrowser.php:107 mod/fbrowser.php:138 mod/profile_photo.php:251 +#: mod/fbrowser.php:107 mod/fbrowser.php:138 mod/profile_photo.php:255 msgid "Upload" msgstr "" @@ -3739,56 +3762,56 @@ msgstr "" msgid "The network type couldn't be detected. Contact can't be added." msgstr "" -#: mod/follow.php:171 mod/notifications.php:255 src/Model/Profile.php:808 +#: mod/follow.php:171 mod/notifications.php:255 src/Model/Profile.php:812 #: src/Module/Contact.php:652 msgid "Tags:" msgstr "" -#: mod/follow.php:183 mod/unfollow.php:147 src/Model/Profile.php:905 -#: src/Module/Contact.php:865 +#: mod/follow.php:183 mod/unfollow.php:147 src/Model/Profile.php:909 +#: src/Module/Contact.php:867 msgid "Status Messages and Posts" msgstr "" -#: mod/friendica.php:79 +#: mod/friendica.php:80 #, 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." msgstr "" -#: mod/friendica.php:85 +#: mod/friendica.php:86 msgid "" "Please visit Friendi.ca to learn more " "about the Friendica project." msgstr "" -#: mod/friendica.php:89 +#: mod/friendica.php:90 msgid "Bug reports and issues: please visit" msgstr "" -#: mod/friendica.php:89 +#: mod/friendica.php:90 msgid "the bugtracker at github" msgstr "" -#: mod/friendica.php:92 +#: mod/friendica.php:93 msgid "" "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca" msgstr "" -#: mod/friendica.php:97 +#: mod/friendica.php:98 msgid "Installed addons/apps:" msgstr "" -#: mod/friendica.php:111 +#: mod/friendica.php:112 msgid "No installed addons/apps" msgstr "" -#: mod/friendica.php:116 +#: mod/friendica.php:117 #, php-format msgid "Read about the Terms of Service of this node." msgstr "" -#: mod/friendica.php:121 +#: mod/friendica.php:122 msgid "On this server the following remote servers are blocked." msgstr "" @@ -3813,7 +3836,7 @@ msgstr "" msgid "Could not create group." msgstr "" -#: mod/group.php:60 mod/group.php:187 +#: mod/group.php:60 mod/group.php:186 msgid "Group not found." msgstr "" @@ -3821,7 +3844,7 @@ msgstr "" msgid "Group name changed." msgstr "" -#: mod/group.php:87 mod/profperm.php:30 src/App.php:1785 +#: mod/group.php:87 mod/profperm.php:30 src/App.php:1822 msgid "Permission denied" msgstr "" @@ -3837,52 +3860,52 @@ msgstr "" msgid "Create a group of contacts/friends." msgstr "" -#: mod/group.php:112 mod/group.php:136 mod/group.php:229 -#: src/Model/Group.php:415 +#: mod/group.php:112 mod/group.php:135 mod/group.php:226 +#: src/Model/Group.php:413 msgid "Group Name: " msgstr "" -#: mod/group.php:127 src/Model/Group.php:412 +#: mod/group.php:127 src/Model/Group.php:410 msgid "Contacts not in any group" msgstr "" -#: mod/group.php:159 +#: mod/group.php:158 msgid "Group removed." msgstr "" -#: mod/group.php:161 +#: mod/group.php:160 msgid "Unable to remove group." msgstr "" -#: mod/group.php:222 +#: mod/group.php:219 msgid "Delete Group" msgstr "" -#: mod/group.php:233 +#: mod/group.php:230 msgid "Edit Group Name" msgstr "" -#: mod/group.php:244 +#: mod/group.php:241 msgid "Members" msgstr "" -#: mod/group.php:246 src/Module/Contact.php:707 +#: mod/group.php:243 src/Module/Contact.php:707 msgid "All Contacts" msgstr "" -#: mod/group.php:247 mod/network.php:651 +#: mod/group.php:244 mod/network.php:650 msgid "Group is empty" msgstr "" -#: mod/group.php:260 +#: mod/group.php:257 msgid "Remove contact from group" msgstr "" -#: mod/group.php:278 mod/profperm.php:119 +#: mod/group.php:275 mod/profperm.php:119 msgid "Click on a contact to add or remove." msgstr "" -#: mod/group.php:292 +#: mod/group.php:289 msgid "Add contact to group" msgstr "" @@ -3894,11 +3917,11 @@ msgstr "" msgid "Help:" msgstr "" -#: mod/help.php:58 src/Content/Nav.php:184 view/theme/vier/theme.php:294 +#: mod/help.php:58 src/Content/Nav.php:183 view/theme/vier/theme.php:294 msgid "Help" msgstr "" -#: mod/help.php:64 src/App.php:1705 +#: mod/help.php:64 src/App.php:1740 msgid "Not Found" msgstr "" @@ -4016,32 +4039,32 @@ msgid "" "important, please visit http://friendi.ca" msgstr "" -#: mod/item.php:116 +#: mod/item.php:118 msgid "Unable to locate original post." msgstr "" -#: mod/item.php:284 +#: mod/item.php:286 msgid "Empty post discarded." msgstr "" -#: mod/item.php:805 +#: mod/item.php:809 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: mod/item.php:807 +#: mod/item.php:811 #, php-format msgid "You may visit them online at %s" msgstr "" -#: mod/item.php:808 +#: mod/item.php:812 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "" -#: mod/item.php:812 +#: mod/item.php:816 #, php-format msgid "%s posted an update." msgstr "" @@ -4225,17 +4248,17 @@ msgstr "" msgid "System down for maintenance" msgstr "" -#: mod/manage.php:179 +#: mod/manage.php:178 msgid "Manage Identities and/or Pages" msgstr "" -#: mod/manage.php:180 +#: mod/manage.php:179 msgid "" "Toggle between different identities or community/group pages which share " "your account details or which you have been granted \"manage\" permissions" msgstr "" -#: mod/manage.php:181 +#: mod/manage.php:180 msgid "Select an identity to manage: " msgstr "" @@ -4243,11 +4266,11 @@ msgstr "" msgid "No keywords to match. Please add keywords to your default profile." msgstr "" -#: mod/match.php:112 src/Content/Pager.php:210 +#: mod/match.php:112 src/Content/Pager.php:196 msgid "first" msgstr "" -#: mod/match.php:117 src/Content/Pager.php:270 +#: mod/match.php:117 src/Content/Pager.php:256 msgid "next" msgstr "" @@ -4255,7 +4278,7 @@ msgstr "" msgid "Profile Match" msgstr "" -#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:249 +#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:248 msgid "New Message" msgstr "" @@ -4284,7 +4307,7 @@ msgstr "" msgid "Discard" msgstr "" -#: mod/message.php:123 src/Content/Nav.php:246 view/theme/frio/theme.php:282 +#: mod/message.php:123 src/Content/Nav.php:245 view/theme/frio/theme.php:269 msgid "Messages" msgstr "" @@ -4372,19 +4395,19 @@ msgid_plural "%d messages" msgstr[0] "" msgstr[1] "" -#: mod/network.php:184 mod/search.php:39 +#: mod/network.php:183 mod/search.php:39 msgid "Remove term" msgstr "" -#: mod/network.php:191 mod/search.php:48 +#: mod/network.php:190 mod/search.php:48 msgid "Saved Searches" msgstr "" -#: mod/network.php:192 src/Model/Group.php:406 +#: mod/network.php:191 src/Model/Group.php:404 msgid "add" msgstr "" -#: mod/network.php:559 +#: mod/network.php:558 #, php-format msgid "" "Warning: This group contains %s member from a network that doesn't allow non " @@ -4395,73 +4418,73 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: mod/network.php:562 +#: mod/network.php:561 msgid "Messages in this group won't be send to these receivers." msgstr "" -#: mod/network.php:630 +#: mod/network.php:629 msgid "No such group" msgstr "" -#: mod/network.php:655 +#: mod/network.php:654 #, php-format msgid "Group: %s" msgstr "" -#: mod/network.php:681 +#: mod/network.php:680 msgid "Private messages to this person are at risk of public disclosure." msgstr "" -#: mod/network.php:684 +#: mod/network.php:683 msgid "Invalid contact." msgstr "" -#: mod/network.php:962 +#: mod/network.php:961 msgid "Commented Order" msgstr "" -#: mod/network.php:965 +#: mod/network.php:964 msgid "Sort by Comment Date" msgstr "" -#: mod/network.php:970 +#: mod/network.php:969 msgid "Posted Order" msgstr "" -#: mod/network.php:973 +#: mod/network.php:972 msgid "Sort by Post Date" msgstr "" -#: mod/network.php:980 mod/profiles.php:595 +#: mod/network.php:979 mod/profiles.php:595 #: src/Core/NotificationsManager.php:185 msgid "Personal" msgstr "" -#: mod/network.php:983 +#: mod/network.php:982 msgid "Posts that mention or involve you" msgstr "" -#: mod/network.php:990 +#: mod/network.php:989 msgid "New" msgstr "" -#: mod/network.php:993 +#: mod/network.php:992 msgid "Activity Stream - by date" msgstr "" -#: mod/network.php:1001 +#: mod/network.php:1000 msgid "Shared Links" msgstr "" -#: mod/network.php:1004 +#: mod/network.php:1003 msgid "Interesting Links" msgstr "" -#: mod/network.php:1011 +#: mod/network.php:1010 msgid "Starred" msgstr "" -#: mod/network.php:1014 +#: mod/network.php:1013 msgid "Favourite Posts" msgstr "" @@ -4515,14 +4538,14 @@ msgid "" "potential friends know exactly how to find you." msgstr "" -#: mod/newmember.php:25 mod/profperm.php:117 src/Content/Nav.php:151 -#: src/Model/Profile.php:744 src/Model/Profile.php:877 -#: src/Model/Profile.php:910 src/Module/Contact.php:657 -#: src/Module/Contact.php:870 view/theme/frio/theme.php:274 +#: mod/newmember.php:25 mod/profperm.php:117 src/Content/Nav.php:150 +#: src/Model/Profile.php:748 src/Model/Profile.php:881 +#: src/Model/Profile.php:914 src/Module/Contact.php:657 +#: src/Module/Contact.php:872 view/theme/frio/theme.php:261 msgid "Profile" msgstr "" -#: mod/newmember.php:27 mod/profiles.php:599 mod/profile_photo.php:250 +#: mod/newmember.php:27 mod/profiles.php:599 mod/profile_photo.php:254 msgid "Upload Profile Photo" msgstr "" @@ -4605,7 +4628,7 @@ msgid "" "hours." msgstr "" -#: mod/newmember.php:44 src/Model/Group.php:407 src/Module/Contact.php:755 +#: mod/newmember.php:44 src/Model/Group.php:405 src/Module/Contact.php:755 msgid "Groups" msgstr "" @@ -4645,7 +4668,7 @@ msgid "" "features and resources." msgstr "" -#: mod/notes.php:40 src/Model/Profile.php:960 +#: mod/notes.php:40 src/Model/Profile.php:964 msgid "Personal Notes" msgstr "" @@ -4654,12 +4677,12 @@ msgid "Invalid request identifier." msgstr "" #: mod/notifications.php:60 mod/notifications.php:184 mod/notifications.php:269 -#: src/Module/Contact.php:624 src/Module/Contact.php:826 -#: src/Module/Contact.php:1086 +#: src/Module/Contact.php:624 src/Module/Contact.php:828 +#: src/Module/Contact.php:1088 msgid "Ignore" msgstr "" -#: mod/notifications.php:93 src/Content/Nav.php:241 +#: mod/notifications.php:93 src/Content/Nav.php:240 msgid "Notifications" msgstr "" @@ -4757,7 +4780,7 @@ msgstr "" msgid "Subscriber" msgstr "" -#: mod/notifications.php:264 src/Model/Profile.php:538 +#: mod/notifications.php:264 src/Model/Profile.php:542 #: src/Module/Contact.php:89 msgid "Network:" msgstr "" @@ -4820,7 +4843,7 @@ msgstr "" msgid "failed" msgstr "" -#: mod/ostatus_subscribe.php:89 src/Object/Post.php:277 +#: mod/ostatus_subscribe.php:89 src/Object/Post.php:280 msgid "ignored" msgstr "" @@ -4828,250 +4851,250 @@ msgstr "" msgid "Keep this window open until done." msgstr "" -#: mod/photos.php:116 src/Model/Profile.php:921 +#: mod/photos.php:115 src/Model/Profile.php:925 msgid "Photo Albums" msgstr "" -#: mod/photos.php:117 mod/photos.php:1706 +#: mod/photos.php:116 mod/photos.php:1664 msgid "Recent Photos" msgstr "" -#: mod/photos.php:120 mod/photos.php:1227 mod/photos.php:1708 +#: mod/photos.php:119 mod/photos.php:1186 mod/photos.php:1666 msgid "Upload New Photos" msgstr "" -#: mod/photos.php:138 mod/settings.php:56 +#: mod/photos.php:137 mod/settings.php:56 msgid "everybody" msgstr "" -#: mod/photos.php:194 +#: mod/photos.php:193 msgid "Contact information unavailable" msgstr "" -#: mod/photos.php:213 +#: mod/photos.php:212 msgid "Album not found." msgstr "" -#: mod/photos.php:242 mod/photos.php:255 mod/photos.php:1178 +#: mod/photos.php:241 mod/photos.php:254 mod/photos.php:1137 msgid "Delete Album" msgstr "" -#: mod/photos.php:253 +#: mod/photos.php:252 msgid "Do you really want to delete this photo album and all its photos?" msgstr "" -#: mod/photos.php:315 mod/photos.php:327 mod/photos.php:1453 +#: mod/photos.php:310 mod/photos.php:322 mod/photos.php:1412 msgid "Delete Photo" msgstr "" -#: mod/photos.php:325 +#: mod/photos.php:320 msgid "Do you really want to delete this photo?" msgstr "" -#: mod/photos.php:682 +#: mod/photos.php:644 msgid "a photo" msgstr "" -#: mod/photos.php:682 +#: mod/photos.php:644 #, php-format msgid "%1$s was tagged in %2$s by %3$s" msgstr "" -#: mod/photos.php:778 mod/photos.php:781 mod/photos.php:810 -#: mod/profile_photo.php:155 mod/wall_upload.php:197 +#: mod/photos.php:737 mod/photos.php:740 mod/photos.php:769 +#: mod/profile_photo.php:153 mod/wall_upload.php:197 #, php-format msgid "Image exceeds size limit of %s" msgstr "" -#: mod/photos.php:784 +#: mod/photos.php:743 msgid "Image upload didn't complete, please try again" msgstr "" -#: mod/photos.php:787 +#: mod/photos.php:746 msgid "Image file is missing" msgstr "" -#: mod/photos.php:792 +#: mod/photos.php:751 msgid "" "Server can't accept new file upload at this time, please contact your " "administrator" msgstr "" -#: mod/photos.php:818 +#: mod/photos.php:777 msgid "Image file is empty." msgstr "" -#: mod/photos.php:833 mod/profile_photo.php:164 mod/wall_upload.php:211 +#: mod/photos.php:792 mod/profile_photo.php:162 mod/wall_upload.php:211 msgid "Unable to process image." msgstr "" -#: mod/photos.php:862 mod/profile_photo.php:309 mod/wall_upload.php:250 +#: mod/photos.php:821 mod/profile_photo.php:313 mod/wall_upload.php:250 msgid "Image upload failed." msgstr "" -#: mod/photos.php:948 +#: mod/photos.php:907 msgid "No photos selected" msgstr "" -#: mod/photos.php:1045 mod/videos.php:298 +#: mod/photos.php:1004 mod/videos.php:254 msgid "Access to this item is restricted." msgstr "" -#: mod/photos.php:1099 +#: mod/photos.php:1058 msgid "Upload Photos" msgstr "" -#: mod/photos.php:1103 mod/photos.php:1173 +#: mod/photos.php:1062 mod/photos.php:1132 msgid "New album name: " msgstr "" -#: mod/photos.php:1104 +#: mod/photos.php:1063 msgid "or select existing album:" msgstr "" -#: mod/photos.php:1105 +#: mod/photos.php:1064 msgid "Do not show a status post for this upload" msgstr "" -#: mod/photos.php:1121 mod/photos.php:1456 mod/settings.php:1212 +#: mod/photos.php:1080 mod/photos.php:1415 mod/settings.php:1212 msgid "Show to Groups" msgstr "" -#: mod/photos.php:1122 mod/photos.php:1457 mod/settings.php:1213 +#: mod/photos.php:1081 mod/photos.php:1416 mod/settings.php:1213 msgid "Show to Contacts" msgstr "" -#: mod/photos.php:1184 +#: mod/photos.php:1143 msgid "Edit Album" msgstr "" -#: mod/photos.php:1189 +#: mod/photos.php:1148 msgid "Show Newest First" msgstr "" -#: mod/photos.php:1191 +#: mod/photos.php:1150 msgid "Show Oldest First" msgstr "" -#: mod/photos.php:1212 mod/photos.php:1691 +#: mod/photos.php:1171 mod/photos.php:1649 msgid "View Photo" msgstr "" -#: mod/photos.php:1253 +#: mod/photos.php:1212 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: mod/photos.php:1255 +#: mod/photos.php:1214 msgid "Photo not available" msgstr "" -#: mod/photos.php:1330 +#: mod/photos.php:1289 msgid "View photo" msgstr "" -#: mod/photos.php:1330 +#: mod/photos.php:1289 msgid "Edit photo" msgstr "" -#: mod/photos.php:1331 +#: mod/photos.php:1290 msgid "Use as profile photo" msgstr "" -#: mod/photos.php:1337 src/Object/Post.php:150 +#: mod/photos.php:1296 src/Object/Post.php:153 msgid "Private Message" msgstr "" -#: mod/photos.php:1357 +#: mod/photos.php:1316 msgid "View Full Size" msgstr "" -#: mod/photos.php:1421 +#: mod/photos.php:1380 msgid "Tags: " msgstr "" -#: mod/photos.php:1424 +#: mod/photos.php:1383 msgid "[Select tags to remove]" msgstr "" -#: mod/photos.php:1439 +#: mod/photos.php:1398 msgid "New album name" msgstr "" -#: mod/photos.php:1440 +#: mod/photos.php:1399 msgid "Caption" msgstr "" -#: mod/photos.php:1441 +#: mod/photos.php:1400 msgid "Add a Tag" msgstr "" -#: mod/photos.php:1441 +#: mod/photos.php:1400 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: mod/photos.php:1442 +#: mod/photos.php:1401 msgid "Do not rotate" msgstr "" -#: mod/photos.php:1443 +#: mod/photos.php:1402 msgid "Rotate CW (right)" msgstr "" -#: mod/photos.php:1444 +#: mod/photos.php:1403 msgid "Rotate CCW (left)" msgstr "" -#: mod/photos.php:1478 src/Object/Post.php:305 +#: mod/photos.php:1437 src/Object/Post.php:308 msgid "I like this (toggle)" msgstr "" -#: mod/photos.php:1479 src/Object/Post.php:306 +#: mod/photos.php:1438 src/Object/Post.php:309 msgid "I don't like this (toggle)" msgstr "" -#: mod/photos.php:1494 mod/photos.php:1533 mod/photos.php:1593 -#: src/Module/Contact.php:1019 src/Object/Post.php:805 +#: mod/photos.php:1453 mod/photos.php:1492 mod/photos.php:1552 +#: src/Module/Contact.php:1021 src/Object/Post.php:816 msgid "This is you" msgstr "" -#: mod/photos.php:1496 mod/photos.php:1535 mod/photos.php:1595 -#: src/Object/Post.php:410 src/Object/Post.php:807 +#: mod/photos.php:1455 mod/photos.php:1494 mod/photos.php:1554 +#: src/Object/Post.php:414 src/Object/Post.php:818 msgid "Comment" msgstr "" -#: mod/photos.php:1625 +#: mod/photos.php:1584 msgid "Map" msgstr "" -#: mod/photos.php:1697 mod/videos.php:375 +#: mod/photos.php:1655 mod/videos.php:331 msgid "View Album" msgstr "" -#: mod/ping.php:272 +#: mod/ping.php:271 msgid "{0} wants to be your friend" msgstr "" -#: mod/ping.php:288 +#: mod/ping.php:287 msgid "{0} requested registration" msgstr "" -#: mod/poke.php:185 +#: mod/poke.php:181 msgid "Poke/Prod" msgstr "" -#: mod/poke.php:186 +#: mod/poke.php:182 msgid "poke, prod or do other things to somebody" msgstr "" -#: mod/poke.php:187 +#: mod/poke.php:183 msgid "Recipient" msgstr "" -#: mod/poke.php:188 +#: mod/poke.php:184 msgid "Choose what you wish to do to recipient" msgstr "" -#: mod/poke.php:191 +#: mod/poke.php:187 msgid "Make this post private" msgstr "" @@ -5079,17 +5102,17 @@ msgstr "" msgid "Only logged in users are permitted to perform a probing." msgstr "" -#: mod/profile.php:87 mod/profile.php:90 src/Protocol/OStatus.php:1287 +#: mod/profile.php:86 mod/profile.php:89 src/Protocol/OStatus.php:1287 #, php-format msgid "%s's timeline" msgstr "" -#: mod/profile.php:88 src/Protocol/OStatus.php:1291 +#: mod/profile.php:87 src/Protocol/OStatus.php:1291 #, php-format msgid "%s's posts" msgstr "" -#: mod/profile.php:89 src/Protocol/OStatus.php:1294 +#: mod/profile.php:88 src/Protocol/OStatus.php:1294 #, php-format msgid "%s's comments" msgstr "" @@ -5246,7 +5269,7 @@ msgstr "" msgid " Marital Status:" msgstr "" -#: mod/profiles.php:602 src/Model/Profile.php:796 +#: mod/profiles.php:602 src/Model/Profile.php:800 msgid "Sexual Preference:" msgstr "" @@ -5326,11 +5349,11 @@ msgstr "" msgid "Homepage URL:" msgstr "" -#: mod/profiles.php:629 src/Model/Profile.php:804 +#: mod/profiles.php:629 src/Model/Profile.php:808 msgid "Hometown:" msgstr "" -#: mod/profiles.php:630 src/Model/Profile.php:812 +#: mod/profiles.php:630 src/Model/Profile.php:816 msgid "Political Views:" msgstr "" @@ -5354,11 +5377,11 @@ msgstr "" msgid "(Used for searching profiles, never shown to others)" msgstr "" -#: mod/profiles.php:634 src/Model/Profile.php:828 +#: mod/profiles.php:634 src/Model/Profile.php:832 msgid "Likes:" msgstr "" -#: mod/profiles.php:635 src/Model/Profile.php:832 +#: mod/profiles.php:635 src/Model/Profile.php:836 msgid "Dislikes:" msgstr "" @@ -5422,55 +5445,55 @@ msgstr "" msgid "Image uploaded but image cropping failed." msgstr "" -#: mod/profile_photo.php:91 mod/profile_photo.php:100 mod/profile_photo.php:109 -#: mod/profile_photo.php:317 +#: mod/profile_photo.php:89 mod/profile_photo.php:98 mod/profile_photo.php:107 +#: mod/profile_photo.php:321 #, php-format msgid "Image size reduction [%s] failed." msgstr "" -#: mod/profile_photo.php:128 +#: mod/profile_photo.php:126 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." msgstr "" -#: mod/profile_photo.php:136 +#: mod/profile_photo.php:134 msgid "Unable to process image" msgstr "" -#: mod/profile_photo.php:248 +#: mod/profile_photo.php:252 msgid "Upload File:" msgstr "" -#: mod/profile_photo.php:249 +#: mod/profile_photo.php:253 msgid "Select a profile:" msgstr "" -#: mod/profile_photo.php:254 +#: mod/profile_photo.php:258 msgid "or" msgstr "" -#: mod/profile_photo.php:255 +#: mod/profile_photo.php:259 msgid "skip this step" msgstr "" -#: mod/profile_photo.php:255 +#: mod/profile_photo.php:259 msgid "select a photo from your photo albums" msgstr "" -#: mod/profile_photo.php:268 +#: mod/profile_photo.php:272 msgid "Crop Image" msgstr "" -#: mod/profile_photo.php:269 +#: mod/profile_photo.php:273 msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: mod/profile_photo.php:271 +#: mod/profile_photo.php:275 msgid "Done Editing" msgstr "" -#: mod/profile_photo.php:307 +#: mod/profile_photo.php:311 msgid "Image uploaded successfully." msgstr "" @@ -5589,7 +5612,7 @@ msgstr "" msgid "Choose a nickname: " msgstr "" -#: mod/register.php:272 src/Content/Nav.php:178 src/Module/Login.php:290 +#: mod/register.php:272 src/Content/Nav.php:177 src/Module/Login.php:290 msgid "Register" msgstr "" @@ -5667,7 +5690,7 @@ msgstr "" msgid "Only one search per minute is permitted for not logged in users." msgstr "" -#: mod/search.php:150 src/Content/Nav.php:192 src/Content/Text/HTML.php:969 +#: mod/search.php:150 src/Content/Nav.php:191 src/Content/Text/HTML.php:968 msgid "Search" msgstr "" @@ -5676,7 +5699,7 @@ msgstr "" msgid "Items tagged with: %s" msgstr "" -#: mod/search.php:238 src/Module/Contact.php:817 +#: mod/search.php:238 src/Module/Contact.php:819 #, php-format msgid "Results for: %s" msgstr "" @@ -5685,7 +5708,7 @@ msgstr "" msgid "Account" msgstr "" -#: mod/settings.php:69 src/Content/Nav.php:260 src/Model/Profile.php:392 +#: mod/settings.php:69 src/Content/Nav.php:259 src/Model/Profile.php:392 msgid "Profiles" msgstr "" @@ -5697,7 +5720,7 @@ msgstr "" msgid "Social Networks" msgstr "" -#: mod/settings.php:106 src/Content/Nav.php:255 +#: mod/settings.php:106 src/Content/Nav.php:254 msgid "Delegations" msgstr "" @@ -5717,7 +5740,7 @@ msgstr "" msgid "Missing some important data!" msgstr "" -#: mod/settings.php:181 mod/settings.php:694 src/Module/Contact.php:824 +#: mod/settings.php:181 mod/settings.php:694 src/Module/Contact.php:826 msgid "Update" msgstr "" @@ -5813,7 +5836,7 @@ msgstr "" msgid "Connected Apps" msgstr "" -#: mod/settings.php:728 src/Object/Post.php:160 src/Object/Post.php:162 +#: mod/settings.php:728 src/Object/Post.php:163 src/Object/Post.php:165 msgid "Edit" msgstr "" @@ -5841,7 +5864,7 @@ msgstr "" msgid "Additional Features" msgstr "" -#: mod/settings.php:796 src/Content/ContactSelector.php:85 +#: mod/settings.php:796 src/Content/ContactSelector.php:84 msgid "Diaspora" msgstr "" @@ -5949,10 +5972,6 @@ msgstr "" msgid "Security:" msgstr "" -#: mod/settings.php:856 mod/settings.php:861 -msgid "None" -msgstr "" - #: mod/settings.php:857 msgid "Email login name:" msgstr "" @@ -5973,7 +5992,7 @@ msgstr "" msgid "Action after import:" msgstr "" -#: mod/settings.php:861 src/Content/Nav.php:243 +#: mod/settings.php:861 src/Content/Nav.php:242 msgid "Mark as seen" msgstr "" @@ -5995,11 +6014,11 @@ msgstr "" msgid "%s - (Experimental)" msgstr "" -#: mod/settings.php:934 src/Core/L10n.php:356 src/Model/Event.php:392 +#: mod/settings.php:934 src/Core/L10n.php:361 src/Model/Event.php:392 msgid "Sunday" msgstr "" -#: mod/settings.php:934 src/Core/L10n.php:356 src/Model/Event.php:393 +#: mod/settings.php:934 src/Core/L10n.php:361 src/Model/Event.php:393 msgid "Monday" msgstr "" @@ -6347,7 +6366,7 @@ msgstr "" msgid "Basic Settings" msgstr "" -#: mod/settings.php:1192 src/Model/Profile.php:752 +#: mod/settings.php:1192 src/Model/Profile.php:756 msgid "Full Name:" msgstr "" @@ -6520,7 +6539,7 @@ msgstr "" msgid "Ignore/Hide" msgstr "" -#: mod/suggest.php:118 src/Content/Widget.php:65 view/theme/vier/theme.php:204 +#: mod/suggest.php:118 src/Content/Widget.php:66 view/theme/vier/theme.php:204 msgid "Friend Suggestions" msgstr "" @@ -6614,27 +6633,27 @@ msgstr "" msgid "[Embedded content - reload page to view]" msgstr "" -#: mod/videos.php:132 +#: mod/videos.php:98 msgid "Do you really want to delete this video?" msgstr "" -#: mod/videos.php:137 +#: mod/videos.php:103 msgid "Delete Video" msgstr "" -#: mod/videos.php:197 +#: mod/videos.php:153 msgid "No videos selected" msgstr "" -#: mod/videos.php:368 src/Model/Item.php:3426 +#: mod/videos.php:324 src/Model/Item.php:3388 msgid "View Video" msgstr "" -#: mod/videos.php:383 +#: mod/videos.php:339 msgid "Recent Videos" msgstr "" -#: mod/videos.php:385 +#: mod/videos.php:341 msgid "Upload New Videos" msgstr "" @@ -6643,15 +6662,15 @@ msgid "No contacts." msgstr "" #: mod/viewcontacts.php:94 src/Module/Contact.php:605 -#: src/Module/Contact.php:1025 +#: src/Module/Contact.php:1027 #, php-format msgid "Visit %s's profile [%s]" msgstr "" -#: mod/viewcontacts.php:114 src/Content/Nav.php:197 src/Content/Nav.php:263 -#: src/Content/Text/HTML.php:980 src/Model/Profile.php:981 -#: src/Model/Profile.php:984 src/Module/Contact.php:812 -#: src/Module/Contact.php:882 view/theme/frio/theme.php:284 +#: mod/viewcontacts.php:114 src/Content/Nav.php:196 src/Content/Nav.php:262 +#: src/Content/Text/HTML.php:979 src/Model/Profile.php:985 +#: src/Model/Profile.php:988 src/Module/Contact.php:814 +#: src/Module/Contact.php:884 view/theme/frio/theme.php:271 msgid "Contacts" msgstr "" @@ -6675,26 +6694,26 @@ msgid "" "your site allow private mail from unknown senders." msgstr "" -#: mod/wall_attach.php:28 mod/wall_attach.php:35 mod/wall_attach.php:90 +#: mod/wall_attach.php:26 mod/wall_attach.php:33 mod/wall_attach.php:88 #: mod/wall_upload.php:41 mod/wall_upload.php:57 mod/wall_upload.php:115 #: mod/wall_upload.php:166 mod/wall_upload.php:169 msgid "Invalid request." msgstr "" -#: mod/wall_attach.php:108 +#: mod/wall_attach.php:106 msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" msgstr "" -#: mod/wall_attach.php:108 +#: mod/wall_attach.php:106 msgid "Or - did you try to upload an empty file?" msgstr "" -#: mod/wall_attach.php:119 +#: mod/wall_attach.php:117 #, php-format msgid "File exceeds size limit of %s" msgstr "" -#: mod/wall_attach.php:143 mod/wall_attach.php:159 +#: mod/wall_attach.php:132 msgid "File upload failed." msgstr "" @@ -6703,19 +6722,19 @@ msgstr "" msgid "Wall Photos" msgstr "" -#: src/App.php:787 +#: src/App.php:822 msgid "Delete this item?" msgstr "" -#: src/App.php:789 +#: src/App.php:824 msgid "show fewer" msgstr "" -#: src/App.php:831 +#: src/App.php:866 msgid "toggle mobile" msgstr "" -#: src/App.php:1384 +#: src/App.php:1419 msgid "No system theme config value set." msgstr "" @@ -6725,311 +6744,311 @@ msgid "" "form has been opened for too long (>3 hours) before submitting it." msgstr "" -#: src/Content/ContactSelector.php:57 +#: src/Content/ContactSelector.php:56 msgid "Frequently" msgstr "" -#: src/Content/ContactSelector.php:58 +#: src/Content/ContactSelector.php:57 msgid "Hourly" msgstr "" -#: src/Content/ContactSelector.php:59 +#: src/Content/ContactSelector.php:58 msgid "Twice daily" msgstr "" -#: src/Content/ContactSelector.php:60 +#: src/Content/ContactSelector.php:59 msgid "Daily" msgstr "" -#: src/Content/ContactSelector.php:61 +#: src/Content/ContactSelector.php:60 msgid "Weekly" msgstr "" -#: src/Content/ContactSelector.php:62 +#: src/Content/ContactSelector.php:61 msgid "Monthly" msgstr "" -#: src/Content/ContactSelector.php:81 +#: src/Content/ContactSelector.php:80 msgid "DFRN" msgstr "" -#: src/Content/ContactSelector.php:82 +#: src/Content/ContactSelector.php:81 msgid "OStatus" msgstr "" -#: src/Content/ContactSelector.php:83 +#: src/Content/ContactSelector.php:82 msgid "RSS/Atom" msgstr "" -#: src/Content/ContactSelector.php:86 +#: src/Content/ContactSelector.php:85 msgid "Zot!" msgstr "" -#: src/Content/ContactSelector.php:87 +#: src/Content/ContactSelector.php:86 msgid "LinkedIn" msgstr "" -#: src/Content/ContactSelector.php:88 +#: src/Content/ContactSelector.php:87 msgid "XMPP/IM" msgstr "" -#: src/Content/ContactSelector.php:89 +#: src/Content/ContactSelector.php:88 msgid "MySpace" msgstr "" -#: src/Content/ContactSelector.php:90 +#: src/Content/ContactSelector.php:89 msgid "Google+" msgstr "" -#: src/Content/ContactSelector.php:91 +#: src/Content/ContactSelector.php:90 msgid "pump.io" msgstr "" -#: src/Content/ContactSelector.php:92 +#: src/Content/ContactSelector.php:91 msgid "Twitter" msgstr "" -#: src/Content/ContactSelector.php:93 +#: src/Content/ContactSelector.php:92 msgid "Diaspora Connector" msgstr "" -#: src/Content/ContactSelector.php:94 +#: src/Content/ContactSelector.php:93 msgid "GNU Social Connector" msgstr "" -#: src/Content/ContactSelector.php:95 +#: src/Content/ContactSelector.php:94 msgid "ActivityPub" msgstr "" -#: src/Content/ContactSelector.php:96 +#: src/Content/ContactSelector.php:95 msgid "pnut" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:150 msgid "Male" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:151 msgid "Female" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:152 msgid "Currently Male" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:153 msgid "Currently Female" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:154 msgid "Mostly Male" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:155 msgid "Mostly Female" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:156 msgid "Transgender" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:157 msgid "Intersex" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:158 msgid "Transsexual" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:159 msgid "Hermaphrodite" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:160 msgid "Neuter" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:161 msgid "Non-specific" msgstr "" -#: src/Content/ContactSelector.php:148 +#: src/Content/ContactSelector.php:162 msgid "Other" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:189 msgid "Males" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:190 msgid "Females" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:191 msgid "Gay" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:192 msgid "Lesbian" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:193 msgid "No Preference" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:194 msgid "Bisexual" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:195 msgid "Autosexual" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:196 msgid "Abstinent" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:197 msgid "Virgin" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:198 msgid "Deviant" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:199 msgid "Fetish" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:200 msgid "Oodles" msgstr "" -#: src/Content/ContactSelector.php:170 +#: src/Content/ContactSelector.php:201 msgid "Nonsexual" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:226 msgid "Single" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:227 msgid "Lonely" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:228 msgid "Available" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:229 msgid "Unavailable" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:230 msgid "Has crush" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:231 msgid "Infatuated" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:232 msgid "Dating" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:233 msgid "Unfaithful" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:234 msgid "Sex Addict" msgstr "" -#: src/Content/ContactSelector.php:192 src/Model/User.php:647 +#: src/Content/ContactSelector.php:235 src/Model/User.php:647 msgid "Friends" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:236 msgid "Friends/Benefits" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:237 msgid "Casual" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:238 msgid "Engaged" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:239 msgid "Married" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:240 msgid "Imaginarily married" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:241 msgid "Partners" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:242 msgid "Cohabiting" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:243 msgid "Common law" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:244 msgid "Happy" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:245 msgid "Not looking" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:246 msgid "Swinger" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:247 msgid "Betrayed" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:248 msgid "Separated" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:249 msgid "Unstable" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:250 msgid "Divorced" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:251 msgid "Imaginarily divorced" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:252 msgid "Widowed" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:253 msgid "Uncertain" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:254 msgid "It's complicated" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:255 msgid "Don't care" msgstr "" -#: src/Content/ContactSelector.php:192 +#: src/Content/ContactSelector.php:256 msgid "Ask me" msgstr "" @@ -7152,8 +7171,8 @@ msgstr "" msgid "Display membership date in profile" msgstr "" -#: src/Content/ForumManager.php:126 src/Content/Nav.php:201 -#: src/Content/Text/HTML.php:983 view/theme/vier/theme.php:250 +#: src/Content/ForumManager.php:126 src/Content/Nav.php:200 +#: src/Content/Text/HTML.php:982 view/theme/vier/theme.php:250 msgid "Forums" msgstr "" @@ -7161,206 +7180,206 @@ msgstr "" msgid "External link to forum" msgstr "" -#: src/Content/Nav.php:69 +#: src/Content/Nav.php:68 msgid "Nothing new here" msgstr "" -#: src/Content/Nav.php:73 +#: src/Content/Nav.php:72 msgid "Clear notifications" msgstr "" -#: src/Content/Nav.php:74 src/Content/Text/HTML.php:972 +#: src/Content/Nav.php:73 src/Content/Text/HTML.php:971 msgid "@name, !forum, #tags, content" msgstr "" -#: src/Content/Nav.php:147 src/Module/Login.php:318 -#: view/theme/frio/theme.php:270 +#: src/Content/Nav.php:146 src/Module/Login.php:318 +#: view/theme/frio/theme.php:257 msgid "Logout" msgstr "" -#: src/Content/Nav.php:147 view/theme/frio/theme.php:270 +#: src/Content/Nav.php:146 view/theme/frio/theme.php:257 msgid "End this session" msgstr "" -#: src/Content/Nav.php:150 src/Model/Profile.php:902 src/Module/Contact.php:655 -#: src/Module/Contact.php:854 view/theme/frio/theme.php:273 +#: src/Content/Nav.php:149 src/Model/Profile.php:906 src/Module/Contact.php:655 +#: src/Module/Contact.php:856 view/theme/frio/theme.php:260 msgid "Status" msgstr "" -#: src/Content/Nav.php:150 src/Content/Nav.php:236 -#: view/theme/frio/theme.php:273 +#: src/Content/Nav.php:149 src/Content/Nav.php:235 +#: view/theme/frio/theme.php:260 msgid "Your posts and conversations" msgstr "" -#: src/Content/Nav.php:151 view/theme/frio/theme.php:274 +#: src/Content/Nav.php:150 view/theme/frio/theme.php:261 msgid "Your profile page" msgstr "" -#: src/Content/Nav.php:152 view/theme/frio/theme.php:275 +#: src/Content/Nav.php:151 view/theme/frio/theme.php:262 msgid "Your photos" msgstr "" -#: src/Content/Nav.php:153 src/Model/Profile.php:926 src/Model/Profile.php:929 -#: view/theme/frio/theme.php:276 +#: src/Content/Nav.php:152 src/Model/Profile.php:930 src/Model/Profile.php:933 +#: view/theme/frio/theme.php:263 msgid "Videos" msgstr "" -#: src/Content/Nav.php:153 view/theme/frio/theme.php:276 +#: src/Content/Nav.php:152 view/theme/frio/theme.php:263 msgid "Your videos" msgstr "" -#: src/Content/Nav.php:154 view/theme/frio/theme.php:277 +#: src/Content/Nav.php:153 view/theme/frio/theme.php:264 msgid "Your events" msgstr "" -#: src/Content/Nav.php:155 +#: src/Content/Nav.php:154 msgid "Personal notes" msgstr "" -#: src/Content/Nav.php:155 +#: src/Content/Nav.php:154 msgid "Your personal notes" msgstr "" -#: src/Content/Nav.php:164 +#: src/Content/Nav.php:163 msgid "Sign in" msgstr "" -#: src/Content/Nav.php:174 src/Content/Nav.php:236 +#: src/Content/Nav.php:173 src/Content/Nav.php:235 #: src/Core/NotificationsManager.php:192 msgid "Home" msgstr "" -#: src/Content/Nav.php:174 +#: src/Content/Nav.php:173 msgid "Home Page" msgstr "" -#: src/Content/Nav.php:178 +#: src/Content/Nav.php:177 msgid "Create an account" msgstr "" -#: src/Content/Nav.php:184 +#: src/Content/Nav.php:183 msgid "Help and documentation" msgstr "" -#: src/Content/Nav.php:188 +#: src/Content/Nav.php:187 msgid "Apps" msgstr "" -#: src/Content/Nav.php:188 +#: src/Content/Nav.php:187 msgid "Addon applications, utilities, games" msgstr "" -#: src/Content/Nav.php:192 +#: src/Content/Nav.php:191 msgid "Search site content" msgstr "" -#: src/Content/Nav.php:195 src/Content/Text/HTML.php:978 +#: src/Content/Nav.php:194 src/Content/Text/HTML.php:977 msgid "Full Text" msgstr "" -#: src/Content/Nav.php:196 src/Content/Text/HTML.php:979 +#: src/Content/Nav.php:195 src/Content/Text/HTML.php:978 #: src/Content/Widget/TagCloud.php:53 msgid "Tags" msgstr "" -#: src/Content/Nav.php:216 +#: src/Content/Nav.php:215 msgid "Community" msgstr "" -#: src/Content/Nav.php:216 +#: src/Content/Nav.php:215 msgid "Conversations on this and other servers" msgstr "" -#: src/Content/Nav.php:220 src/Model/Profile.php:941 src/Model/Profile.php:952 -#: view/theme/frio/theme.php:281 +#: src/Content/Nav.php:219 src/Model/Profile.php:945 src/Model/Profile.php:956 +#: view/theme/frio/theme.php:268 msgid "Events and Calendar" msgstr "" -#: src/Content/Nav.php:223 +#: src/Content/Nav.php:222 msgid "Directory" msgstr "" -#: src/Content/Nav.php:223 +#: src/Content/Nav.php:222 msgid "People directory" msgstr "" -#: src/Content/Nav.php:225 +#: src/Content/Nav.php:224 msgid "Information about this friendica instance" msgstr "" -#: src/Content/Nav.php:228 +#: src/Content/Nav.php:227 msgid "Terms of Service of this Friendica instance" msgstr "" -#: src/Content/Nav.php:233 view/theme/frio/theme.php:280 +#: src/Content/Nav.php:232 view/theme/frio/theme.php:267 msgid "Conversations from your friends" msgstr "" -#: src/Content/Nav.php:234 +#: src/Content/Nav.php:233 msgid "Network Reset" msgstr "" -#: src/Content/Nav.php:234 +#: src/Content/Nav.php:233 msgid "Load Network page with no filters" msgstr "" -#: src/Content/Nav.php:240 src/Core/NotificationsManager.php:199 +#: src/Content/Nav.php:239 src/Core/NotificationsManager.php:199 msgid "Introductions" msgstr "" -#: src/Content/Nav.php:240 +#: src/Content/Nav.php:239 msgid "Friend Requests" msgstr "" -#: src/Content/Nav.php:242 +#: src/Content/Nav.php:241 msgid "See all notifications" msgstr "" -#: src/Content/Nav.php:243 +#: src/Content/Nav.php:242 msgid "Mark all system notifications seen" msgstr "" -#: src/Content/Nav.php:246 view/theme/frio/theme.php:282 +#: src/Content/Nav.php:245 view/theme/frio/theme.php:269 msgid "Private mail" msgstr "" -#: src/Content/Nav.php:247 +#: src/Content/Nav.php:246 msgid "Inbox" msgstr "" -#: src/Content/Nav.php:248 +#: src/Content/Nav.php:247 msgid "Outbox" msgstr "" -#: src/Content/Nav.php:252 +#: src/Content/Nav.php:251 msgid "Manage" msgstr "" -#: src/Content/Nav.php:252 +#: src/Content/Nav.php:251 msgid "Manage other pages" msgstr "" -#: src/Content/Nav.php:257 view/theme/frio/theme.php:283 +#: src/Content/Nav.php:256 view/theme/frio/theme.php:270 msgid "Account settings" msgstr "" -#: src/Content/Nav.php:260 +#: src/Content/Nav.php:259 msgid "Manage/Edit Profiles" msgstr "" -#: src/Content/Nav.php:263 view/theme/frio/theme.php:284 +#: src/Content/Nav.php:262 view/theme/frio/theme.php:271 msgid "Manage/edit friends and contacts" msgstr "" -#: src/Content/Nav.php:268 +#: src/Content/Nav.php:267 msgid "Site setup and configuration" msgstr "" -#: src/Content/Nav.php:271 +#: src/Content/Nav.php:270 msgid "Navigation" msgstr "" -#: src/Content/Nav.php:271 +#: src/Content/Nav.php:270 msgid "Site map" msgstr "" @@ -7372,19 +7391,19 @@ msgstr "" msgid "Embedded content" msgstr "" -#: src/Content/Pager.php:166 +#: src/Content/Pager.php:152 msgid "newer" msgstr "" -#: src/Content/Pager.php:171 +#: src/Content/Pager.php:157 msgid "older" msgstr "" -#: src/Content/Pager.php:215 +#: src/Content/Pager.php:201 msgid "prev" msgstr "" -#: src/Content/Pager.php:275 +#: src/Content/Pager.php:261 msgid "last" msgstr "" @@ -7418,35 +7437,35 @@ msgstr "" msgid "Invalid link protocol" msgstr "" -#: src/Content/Text/HTML.php:799 +#: src/Content/Text/HTML.php:798 msgid "Loading more entries..." msgstr "" -#: src/Content/Text/HTML.php:800 +#: src/Content/Text/HTML.php:799 msgid "The end" msgstr "" -#: src/Content/Text/HTML.php:840 +#: src/Content/Text/HTML.php:839 msgid "No contacts" msgstr "" -#: src/Content/Text/HTML.php:867 +#: src/Content/Text/HTML.php:866 #, php-format msgid "%d Contact" msgid_plural "%d Contacts" msgstr[0] "" msgstr[1] "" -#: src/Content/Text/HTML.php:880 +#: src/Content/Text/HTML.php:879 msgid "View Contacts" msgstr "" -#: src/Content/Text/HTML.php:963 +#: src/Content/Text/HTML.php:962 msgid "Follow" msgstr "" -#: src/Content/Text/HTML.php:1018 src/Model/Item.php:3476 -#: src/Model/Item.php:3487 +#: src/Content/Text/HTML.php:1017 src/Model/Item.php:3438 +#: src/Model/Item.php:3449 msgid "Click to open/close" msgstr "" @@ -7462,118 +7481,118 @@ msgstr "" msgid "Export calendar as csv" msgstr "" -#: src/Content/Widget.php:34 +#: src/Content/Widget.php:35 msgid "Add New Contact" msgstr "" -#: src/Content/Widget.php:35 +#: src/Content/Widget.php:36 msgid "Enter address or web location" msgstr "" -#: src/Content/Widget.php:36 +#: src/Content/Widget.php:37 msgid "Example: bob@example.com, http://example.com/barbara" msgstr "" -#: src/Content/Widget.php:54 +#: src/Content/Widget.php:55 #, php-format msgid "%d invitation available" msgid_plural "%d invitations available" msgstr[0] "" msgstr[1] "" -#: src/Content/Widget.php:60 view/theme/vier/theme.php:199 +#: src/Content/Widget.php:61 view/theme/vier/theme.php:199 msgid "Find People" msgstr "" -#: src/Content/Widget.php:61 view/theme/vier/theme.php:200 +#: src/Content/Widget.php:62 view/theme/vier/theme.php:200 msgid "Enter name or interest" msgstr "" -#: src/Content/Widget.php:63 view/theme/vier/theme.php:202 +#: src/Content/Widget.php:64 view/theme/vier/theme.php:202 msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: src/Content/Widget.php:66 view/theme/vier/theme.php:205 +#: src/Content/Widget.php:67 view/theme/vier/theme.php:205 msgid "Similar Interests" msgstr "" -#: src/Content/Widget.php:67 view/theme/vier/theme.php:206 +#: src/Content/Widget.php:68 view/theme/vier/theme.php:206 msgid "Random Profile" msgstr "" -#: src/Content/Widget.php:68 view/theme/vier/theme.php:207 +#: src/Content/Widget.php:69 view/theme/vier/theme.php:207 msgid "Invite Friends" msgstr "" -#: src/Content/Widget.php:71 view/theme/vier/theme.php:210 +#: src/Content/Widget.php:72 view/theme/vier/theme.php:210 msgid "Local Directory" msgstr "" -#: src/Content/Widget.php:155 +#: src/Content/Widget.php:156 msgid "Protocols" msgstr "" -#: src/Content/Widget.php:158 +#: src/Content/Widget.php:159 msgid "All Protocols" msgstr "" -#: src/Content/Widget.php:193 +#: src/Content/Widget.php:194 msgid "Saved Folders" msgstr "" -#: src/Content/Widget.php:196 src/Content/Widget.php:236 +#: src/Content/Widget.php:197 src/Content/Widget.php:237 msgid "Everything" msgstr "" -#: src/Content/Widget.php:233 +#: src/Content/Widget.php:234 msgid "Categories" msgstr "" -#: src/Content/Widget.php:300 +#: src/Content/Widget.php:316 #, php-format msgid "%d contact in common" msgid_plural "%d contacts in common" msgstr[0] "" msgstr[1] "" -#: src/Core/ACL.php:285 +#: src/Core/ACL.php:283 msgid "Post to Email" msgstr "" -#: src/Core/ACL.php:291 +#: src/Core/ACL.php:289 msgid "Hide your profile details from unknown viewers?" msgstr "" -#: src/Core/ACL.php:290 +#: src/Core/ACL.php:288 #, php-format msgid "Connectors disabled, since \"%s\" is enabled." msgstr "" -#: src/Core/ACL.php:297 +#: src/Core/ACL.php:295 msgid "Visible to everybody" msgstr "" -#: src/Core/ACL.php:298 view/theme/vier/config.php:116 +#: src/Core/ACL.php:296 view/theme/vier/config.php:116 msgid "show" msgstr "" -#: src/Core/ACL.php:299 view/theme/vier/config.php:116 +#: src/Core/ACL.php:297 view/theme/vier/config.php:116 msgid "don't show" msgstr "" -#: src/Core/ACL.php:309 +#: src/Core/ACL.php:307 msgid "Close" msgstr "" -#: src/Core/Authentication.php:89 +#: src/Core/Authentication.php:84 msgid "Welcome " msgstr "" -#: src/Core/Authentication.php:90 +#: src/Core/Authentication.php:85 msgid "Please upload a profile photo." msgstr "" -#: src/Core/Authentication.php:92 +#: src/Core/Authentication.php:87 msgid "Welcome back " msgstr "" @@ -7875,188 +7894,188 @@ msgstr "" msgid "Database already in use." msgstr "" -#: src/Core/L10n.php:356 src/Model/Event.php:394 +#: src/Core/L10n.php:361 src/Model/Event.php:394 msgid "Tuesday" msgstr "" -#: src/Core/L10n.php:356 src/Model/Event.php:395 +#: src/Core/L10n.php:361 src/Model/Event.php:395 msgid "Wednesday" msgstr "" -#: src/Core/L10n.php:356 src/Model/Event.php:396 +#: src/Core/L10n.php:361 src/Model/Event.php:396 msgid "Thursday" msgstr "" -#: src/Core/L10n.php:356 src/Model/Event.php:397 +#: src/Core/L10n.php:361 src/Model/Event.php:397 msgid "Friday" msgstr "" -#: src/Core/L10n.php:356 src/Model/Event.php:398 +#: src/Core/L10n.php:361 src/Model/Event.php:398 msgid "Saturday" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:413 +#: src/Core/L10n.php:365 src/Model/Event.php:413 msgid "January" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:414 +#: src/Core/L10n.php:365 src/Model/Event.php:414 msgid "February" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:415 +#: src/Core/L10n.php:365 src/Model/Event.php:415 msgid "March" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:416 +#: src/Core/L10n.php:365 src/Model/Event.php:416 msgid "April" msgstr "" -#: src/Core/L10n.php:360 src/Core/L10n.php:379 src/Model/Event.php:404 +#: src/Core/L10n.php:365 src/Core/L10n.php:384 src/Model/Event.php:404 #: src/Model/Event.php:417 msgid "May" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:418 +#: src/Core/L10n.php:365 src/Model/Event.php:418 msgid "June" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:419 +#: src/Core/L10n.php:365 src/Model/Event.php:419 msgid "July" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:420 +#: src/Core/L10n.php:365 src/Model/Event.php:420 msgid "August" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:421 +#: src/Core/L10n.php:365 src/Model/Event.php:421 msgid "September" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:422 +#: src/Core/L10n.php:365 src/Model/Event.php:422 msgid "October" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:423 +#: src/Core/L10n.php:365 src/Model/Event.php:423 msgid "November" msgstr "" -#: src/Core/L10n.php:360 src/Model/Event.php:424 +#: src/Core/L10n.php:365 src/Model/Event.php:424 msgid "December" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:385 +#: src/Core/L10n.php:380 src/Model/Event.php:385 msgid "Mon" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:386 +#: src/Core/L10n.php:380 src/Model/Event.php:386 msgid "Tue" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:387 +#: src/Core/L10n.php:380 src/Model/Event.php:387 msgid "Wed" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:388 +#: src/Core/L10n.php:380 src/Model/Event.php:388 msgid "Thu" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:389 +#: src/Core/L10n.php:380 src/Model/Event.php:389 msgid "Fri" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:390 +#: src/Core/L10n.php:380 src/Model/Event.php:390 msgid "Sat" msgstr "" -#: src/Core/L10n.php:375 src/Model/Event.php:384 +#: src/Core/L10n.php:380 src/Model/Event.php:384 msgid "Sun" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:400 +#: src/Core/L10n.php:384 src/Model/Event.php:400 msgid "Jan" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:401 +#: src/Core/L10n.php:384 src/Model/Event.php:401 msgid "Feb" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:402 +#: src/Core/L10n.php:384 src/Model/Event.php:402 msgid "Mar" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:403 +#: src/Core/L10n.php:384 src/Model/Event.php:403 msgid "Apr" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:406 +#: src/Core/L10n.php:384 src/Model/Event.php:406 msgid "Jul" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:407 +#: src/Core/L10n.php:384 src/Model/Event.php:407 msgid "Aug" msgstr "" -#: src/Core/L10n.php:379 +#: src/Core/L10n.php:384 msgid "Sep" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:409 +#: src/Core/L10n.php:384 src/Model/Event.php:409 msgid "Oct" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:410 +#: src/Core/L10n.php:384 src/Model/Event.php:410 msgid "Nov" msgstr "" -#: src/Core/L10n.php:379 src/Model/Event.php:411 +#: src/Core/L10n.php:384 src/Model/Event.php:411 msgid "Dec" msgstr "" -#: src/Core/L10n.php:397 +#: src/Core/L10n.php:402 msgid "poke" msgstr "" -#: src/Core/L10n.php:397 +#: src/Core/L10n.php:402 msgid "poked" msgstr "" -#: src/Core/L10n.php:398 +#: src/Core/L10n.php:403 msgid "ping" msgstr "" -#: src/Core/L10n.php:398 +#: src/Core/L10n.php:403 msgid "pinged" msgstr "" -#: src/Core/L10n.php:399 +#: src/Core/L10n.php:404 msgid "prod" msgstr "" -#: src/Core/L10n.php:399 +#: src/Core/L10n.php:404 msgid "prodded" msgstr "" -#: src/Core/L10n.php:400 +#: src/Core/L10n.php:405 msgid "slap" msgstr "" -#: src/Core/L10n.php:400 +#: src/Core/L10n.php:405 msgid "slapped" msgstr "" -#: src/Core/L10n.php:401 +#: src/Core/L10n.php:406 msgid "finger" msgstr "" -#: src/Core/L10n.php:401 +#: src/Core/L10n.php:406 msgid "fingered" msgstr "" -#: src/Core/L10n.php:402 +#: src/Core/L10n.php:407 msgid "rebuff" msgstr "" -#: src/Core/L10n.php:402 +#: src/Core/L10n.php:407 msgid "rebuffed" msgstr "" @@ -8267,76 +8286,76 @@ msgstr "" msgid "Legacy module file not found: %s" msgstr "" -#: src/Model/Contact.php:994 +#: src/Model/Contact.php:1001 msgid "Drop Contact" msgstr "" -#: src/Model/Contact.php:1460 +#: src/Model/Contact.php:1468 msgid "Organisation" msgstr "" -#: src/Model/Contact.php:1464 +#: src/Model/Contact.php:1472 msgid "News" msgstr "" -#: src/Model/Contact.php:1468 +#: src/Model/Contact.php:1476 msgid "Forum" msgstr "" -#: src/Model/Contact.php:1650 +#: src/Model/Contact.php:1658 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:1659 +#: src/Model/Contact.php:1667 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:1698 +#: src/Model/Contact.php:1706 msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: src/Model/Contact.php:1699 src/Model/Contact.php:1712 +#: src/Model/Contact.php:1707 src/Model/Contact.php:1720 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:1710 +#: src/Model/Contact.php:1718 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:1715 +#: src/Model/Contact.php:1723 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:1718 +#: src/Model/Contact.php:1726 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:1721 +#: src/Model/Contact.php:1729 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:1722 +#: src/Model/Contact.php:1730 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:1728 +#: src/Model/Contact.php:1736 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:1733 +#: src/Model/Contact.php:1741 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:1784 +#: src/Model/Contact.php:1794 msgid "Unable to retrieve contact information." msgstr "" @@ -8382,7 +8401,7 @@ msgstr "" msgid "Delete event" msgstr "" -#: src/Model/Event.php:620 src/Model/Item.php:3525 src/Model/Item.php:3532 +#: src/Model/Event.php:620 src/Model/Item.php:3487 src/Model/Item.php:3494 msgid "link to source" msgstr "" @@ -8427,58 +8446,58 @@ msgstr "" msgid "Default privacy group for new contacts" msgstr "" -#: src/Model/Group.php:362 +#: src/Model/Group.php:360 msgid "Everybody" msgstr "" -#: src/Model/Group.php:382 +#: src/Model/Group.php:380 msgid "edit" msgstr "" -#: src/Model/Group.php:411 +#: src/Model/Group.php:409 msgid "Edit group" msgstr "" -#: src/Model/Group.php:414 +#: src/Model/Group.php:412 msgid "Create a new group" msgstr "" -#: src/Model/Group.php:416 +#: src/Model/Group.php:414 msgid "Edit groups" msgstr "" -#: src/Model/Item.php:3263 +#: src/Model/Item.php:3225 msgid "activity" msgstr "" -#: src/Model/Item.php:3265 src/Object/Post.php:441 src/Object/Post.php:453 +#: src/Model/Item.php:3227 src/Object/Post.php:453 src/Object/Post.php:465 msgid "comment" msgid_plural "comments" msgstr[0] "" msgstr[1] "" -#: src/Model/Item.php:3268 +#: src/Model/Item.php:3230 msgid "post" msgstr "" -#: src/Model/Item.php:3364 +#: src/Model/Item.php:3326 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3443 +#: src/Model/Item.php:3405 msgid "bytes" msgstr "" -#: src/Model/Item.php:3519 +#: src/Model/Item.php:3481 msgid "View on separate page" msgstr "" -#: src/Model/Item.php:3520 +#: src/Model/Item.php:3482 msgid "view on separate page" msgstr "" -#: src/Model/Mail.php:38 src/Model/Mail.php:170 +#: src/Model/Mail.php:39 src/Model/Mail.php:171 msgid "[no subject]" msgstr "" @@ -8491,7 +8510,7 @@ msgid "Requested profile is not available." msgstr "" #: src/Model/Profile.php:178 src/Model/Profile.php:419 -#: src/Model/Profile.php:873 +#: src/Model/Profile.php:877 msgid "Edit profile" msgstr "" @@ -8507,124 +8526,160 @@ msgstr "" msgid "XMPP:" msgstr "" -#: src/Model/Profile.php:568 src/Model/Profile.php:666 +#: src/Model/Profile.php:572 src/Model/Profile.php:670 msgid "g A l F d" msgstr "" -#: src/Model/Profile.php:569 +#: src/Model/Profile.php:573 msgid "F d" msgstr "" -#: src/Model/Profile.php:631 src/Model/Profile.php:717 +#: src/Model/Profile.php:635 src/Model/Profile.php:721 msgid "[today]" msgstr "" -#: src/Model/Profile.php:642 +#: src/Model/Profile.php:646 msgid "Birthday Reminders" msgstr "" -#: src/Model/Profile.php:643 +#: src/Model/Profile.php:647 msgid "Birthdays this week:" msgstr "" -#: src/Model/Profile.php:704 +#: src/Model/Profile.php:708 msgid "[No description]" msgstr "" -#: src/Model/Profile.php:731 +#: src/Model/Profile.php:735 msgid "Event Reminders" msgstr "" -#: src/Model/Profile.php:732 +#: src/Model/Profile.php:736 msgid "Upcoming events the next 7 days:" msgstr "" -#: src/Model/Profile.php:755 +#: src/Model/Profile.php:759 msgid "Member since:" msgstr "" -#: src/Model/Profile.php:763 +#: src/Model/Profile.php:767 msgid "j F, Y" msgstr "" -#: src/Model/Profile.php:764 +#: src/Model/Profile.php:768 msgid "j F" msgstr "" -#: src/Model/Profile.php:772 src/Util/Temporal.php:146 +#: src/Model/Profile.php:776 src/Util/Temporal.php:146 msgid "Birthday:" msgstr "" -#: src/Model/Profile.php:779 +#: src/Model/Profile.php:783 msgid "Age:" msgstr "" -#: src/Model/Profile.php:792 +#: src/Model/Profile.php:796 #, php-format msgid "for %1$d %2$s" msgstr "" -#: src/Model/Profile.php:816 +#: src/Model/Profile.php:820 msgid "Religion:" msgstr "" -#: src/Model/Profile.php:824 +#: src/Model/Profile.php:828 msgid "Hobbies/Interests:" msgstr "" -#: src/Model/Profile.php:836 +#: src/Model/Profile.php:840 msgid "Contact information and Social Networks:" msgstr "" -#: src/Model/Profile.php:840 +#: src/Model/Profile.php:844 msgid "Musical interests:" msgstr "" -#: src/Model/Profile.php:844 +#: src/Model/Profile.php:848 msgid "Books, literature:" msgstr "" -#: src/Model/Profile.php:848 +#: src/Model/Profile.php:852 msgid "Television:" msgstr "" -#: src/Model/Profile.php:852 +#: src/Model/Profile.php:856 msgid "Film/dance/culture/entertainment:" msgstr "" -#: src/Model/Profile.php:856 +#: src/Model/Profile.php:860 msgid "Love/Romance:" msgstr "" -#: src/Model/Profile.php:860 +#: src/Model/Profile.php:864 msgid "Work/employment:" msgstr "" -#: src/Model/Profile.php:864 +#: src/Model/Profile.php:868 msgid "School/education:" msgstr "" -#: src/Model/Profile.php:869 +#: src/Model/Profile.php:873 msgid "Forums:" msgstr "" -#: src/Model/Profile.php:913 src/Module/Contact.php:873 +#: src/Model/Profile.php:917 src/Module/Contact.php:875 msgid "Profile Details" msgstr "" -#: src/Model/Profile.php:963 +#: src/Model/Profile.php:967 msgid "Only You Can See This" msgstr "" -#: src/Model/Profile.php:971 src/Model/Profile.php:974 +#: src/Model/Profile.php:975 src/Model/Profile.php:978 msgid "Tips for New Members" msgstr "" -#: src/Model/Profile.php:1147 +#: src/Model/Profile.php:1151 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" +#: src/Model/Storage/Database.php:37 +#, php-format +msgid "Database storage failed to update %s" +msgstr "" + +#: src/Model/Storage/Database.php:44 +msgid "Database storage failed to insert data" +msgstr "" + +#: src/Model/Storage/Filesystem.php:61 +#, php-format +msgid "" +"Filesystem storage failed to create \"%s\". Check you write permissions." +msgstr "" + +#: src/Model/Storage/Filesystem.php:101 +#, php-format +msgid "" +"Filesystem storage failed to save data to \"%s\". Check your write " +"permissions" +msgstr "" + +#: src/Model/Storage/Filesystem.php:122 +msgid "Storage base path" +msgstr "" + +#: src/Model/Storage/Filesystem.php:124 +msgid "" +"Folder were uploaded files are saved. For maximum security, This should be a " +"path outside web server folder tree" +msgstr "" + +#: src/Model/Storage/Filesystem.php:134 +msgid "Enter a valid existing folder" +msgstr "" + #: src/Model/User.php:216 msgid "Login failed" msgstr "" @@ -8825,6 +8880,10 @@ msgid "" "\t\t\tThank you and welcome to %2$s." msgstr "" +#: src/Module/Attach.php:36 src/Module/Attach.php:48 +msgid "Item was not found." +msgstr "" + #: src/Module/Contact.php:167 #, php-format msgid "%d contact edited." @@ -8872,7 +8931,7 @@ msgstr "" msgid "Drop contact" msgstr "" -#: src/Module/Contact.php:443 src/Module/Contact.php:821 +#: src/Module/Contact.php:443 src/Module/Contact.php:823 msgid "Do you really want to delete this contact?" msgstr "" @@ -8911,7 +8970,7 @@ msgstr "" msgid "(Update was not successful)" msgstr "" -#: src/Module/Contact.php:529 src/Module/Contact.php:1059 +#: src/Module/Contact.php:529 src/Module/Contact.php:1061 msgid "Suggest friends" msgstr "" @@ -9002,12 +9061,12 @@ msgstr "" msgid "Update public posts" msgstr "" -#: src/Module/Contact.php:618 src/Module/Contact.php:1069 +#: src/Module/Contact.php:618 src/Module/Contact.php:1071 msgid "Update now" msgstr "" -#: src/Module/Contact.php:624 src/Module/Contact.php:826 -#: src/Module/Contact.php:1086 +#: src/Module/Contact.php:624 src/Module/Contact.php:828 +#: src/Module/Contact.php:1088 msgid "Unignore" msgstr "" @@ -9110,71 +9169,71 @@ msgstr "" msgid "Organize your contact groups" msgstr "" -#: src/Module/Contact.php:816 +#: src/Module/Contact.php:818 msgid "Search your contacts" msgstr "" -#: src/Module/Contact.php:827 src/Module/Contact.php:1095 +#: src/Module/Contact.php:829 src/Module/Contact.php:1097 msgid "Archive" msgstr "" -#: src/Module/Contact.php:827 src/Module/Contact.php:1095 +#: src/Module/Contact.php:829 src/Module/Contact.php:1097 msgid "Unarchive" msgstr "" -#: src/Module/Contact.php:830 +#: src/Module/Contact.php:832 msgid "Batch Actions" msgstr "" -#: src/Module/Contact.php:857 +#: src/Module/Contact.php:859 msgid "Conversations started by this contact" msgstr "" -#: src/Module/Contact.php:862 +#: src/Module/Contact.php:864 msgid "Posts and Comments" msgstr "" -#: src/Module/Contact.php:885 +#: src/Module/Contact.php:887 msgid "View all contacts" msgstr "" -#: src/Module/Contact.php:896 +#: src/Module/Contact.php:898 msgid "View all common friends" msgstr "" -#: src/Module/Contact.php:906 +#: src/Module/Contact.php:908 msgid "Advanced Contact Settings" msgstr "" -#: src/Module/Contact.php:992 +#: src/Module/Contact.php:994 msgid "Mutual Friendship" msgstr "" -#: src/Module/Contact.php:997 +#: src/Module/Contact.php:999 msgid "is a fan of yours" msgstr "" -#: src/Module/Contact.php:1002 +#: src/Module/Contact.php:1004 msgid "you are a fan of" msgstr "" -#: src/Module/Contact.php:1026 +#: src/Module/Contact.php:1028 msgid "Edit contact" msgstr "" -#: src/Module/Contact.php:1080 +#: src/Module/Contact.php:1082 msgid "Toggle Blocked status" msgstr "" -#: src/Module/Contact.php:1088 +#: src/Module/Contact.php:1090 msgid "Toggle Ignored status" msgstr "" -#: src/Module/Contact.php:1097 +#: src/Module/Contact.php:1099 msgid "Toggle Archive status" msgstr "" -#: src/Module/Contact.php:1105 +#: src/Module/Contact.php:1107 msgid "Delete contact" msgstr "" @@ -9329,7 +9388,7 @@ msgstr "" msgid "Logged out." msgstr "" -#: src/Module/Proxy.php:136 +#: src/Module/Proxy.php:78 msgid "Bad Request." msgstr "" @@ -9367,114 +9426,130 @@ msgstr "" msgid "Privacy Statement" msgstr "" -#: src/Object/Post.php:129 +#: src/Object/Post.php:133 msgid "This entry was edited" msgstr "" -#: src/Object/Post.php:192 +#: src/Object/Post.php:195 msgid "Delete locally" msgstr "" -#: src/Object/Post.php:195 +#: src/Object/Post.php:198 msgid "Delete globally" msgstr "" -#: src/Object/Post.php:195 +#: src/Object/Post.php:198 msgid "Remove locally" msgstr "" -#: src/Object/Post.php:209 +#: src/Object/Post.php:212 msgid "save to folder" msgstr "" -#: src/Object/Post.php:244 +#: src/Object/Post.php:247 msgid "I will attend" msgstr "" -#: src/Object/Post.php:244 +#: src/Object/Post.php:247 msgid "I will not attend" msgstr "" -#: src/Object/Post.php:244 +#: src/Object/Post.php:247 msgid "I might attend" msgstr "" -#: src/Object/Post.php:272 +#: src/Object/Post.php:275 msgid "ignore thread" msgstr "" -#: src/Object/Post.php:273 +#: src/Object/Post.php:276 msgid "unignore thread" msgstr "" -#: src/Object/Post.php:274 +#: src/Object/Post.php:277 msgid "toggle ignore status" msgstr "" -#: src/Object/Post.php:285 +#: src/Object/Post.php:288 msgid "add star" msgstr "" -#: src/Object/Post.php:286 +#: src/Object/Post.php:289 msgid "remove star" msgstr "" -#: src/Object/Post.php:287 +#: src/Object/Post.php:290 msgid "toggle star status" msgstr "" -#: src/Object/Post.php:290 +#: src/Object/Post.php:293 msgid "starred" msgstr "" -#: src/Object/Post.php:294 +#: src/Object/Post.php:297 msgid "add tag" msgstr "" -#: src/Object/Post.php:305 +#: src/Object/Post.php:308 msgid "like" msgstr "" -#: src/Object/Post.php:306 +#: src/Object/Post.php:309 msgid "dislike" msgstr "" -#: src/Object/Post.php:309 +#: src/Object/Post.php:312 msgid "Share this" msgstr "" -#: src/Object/Post.php:309 +#: src/Object/Post.php:312 msgid "share" msgstr "" -#: src/Object/Post.php:376 +#: src/Object/Post.php:379 msgid "to" msgstr "" -#: src/Object/Post.php:377 +#: src/Object/Post.php:380 msgid "via" msgstr "" -#: src/Object/Post.php:378 +#: src/Object/Post.php:381 msgid "Wall-to-Wall" msgstr "" -#: src/Object/Post.php:379 +#: src/Object/Post.php:382 msgid "via Wall-To-Wall:" msgstr "" -#: src/Object/Post.php:439 +#: src/Object/Post.php:429 +msgid "Notifier task is pending" +msgstr "" + +#: src/Object/Post.php:430 +msgid "Delivery to remote servers is pending" +msgstr "" + +#: src/Object/Post.php:431 +msgid "Delivery to remote servers is underway" +msgstr "" + +#: src/Object/Post.php:432 +msgid "Delivery to remote servers is mostly done" +msgstr "" + +#: src/Object/Post.php:451 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "" msgstr[1] "" -#: src/Protocol/Diaspora.php:2449 +#: src/Protocol/Diaspora.php:2442 msgid "Sharing notification from Diaspora network" msgstr "" -#: src/Protocol/Diaspora.php:3543 +#: src/Protocol/Diaspora.php:3536 msgid "Attachments:" msgstr "" @@ -9562,16 +9637,16 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: src/Worker/Delivery.php:431 +#: src/Worker/Delivery.php:447 msgid "(no subject)" msgstr "" -#: update.php:193 +#: update.php:217 #, php-format msgid "%s: Updating author-id and owner-id in item and thread table. " msgstr "" -#: update.php:239 +#: update.php:272 #, php-format msgid "%s: Updating post-type." msgstr "" @@ -9696,11 +9771,11 @@ msgstr "" msgid "Repeat image to fill the screen." msgstr "" -#: view/theme/frio/theme.php:252 +#: view/theme/frio/theme.php:239 msgid "Guest" msgstr "" -#: view/theme/frio/theme.php:257 +#: view/theme/frio/theme.php:244 msgid "Visitor" msgstr "" @@ -9748,7 +9823,7 @@ msgstr "" msgid "Help or @NewHere ?" msgstr "" -#: view/theme/vier/config.php:127 view/theme/vier/theme.php:385 +#: view/theme/vier/config.php:127 view/theme/vier/theme.php:373 msgid "Connect Services" msgstr "" From 6077aa58479df933d1f60d57f73765a268d97cc1 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 15:01:26 -0500 Subject: [PATCH 140/728] [Composer] Add required extensions --- composer.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/composer.json b/composer.json index 2f254877de..39d9358926 100644 --- a/composer.json +++ b/composer.json @@ -14,10 +14,17 @@ }, "require": { "php": ">=5.6.1", + "ext-ctype": "*", "ext-curl": "*", "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", "ext-openssl": "*", + "ext-simplexml": "*", "ext-xml": "*", "asika/simple-console": "^1.0", "divineomega/password_exposed": "^2.4", From 3282ce53894b624893ee2989747a59866ab4b137 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 16:06:53 -0500 Subject: [PATCH 141/728] Fix PHPDoc comments project-wide --- src/App.php | 18 +- src/App/Mode.php | 2 +- src/BaseObject.php | 1 + src/Content/ContactSelector.php | 6 + src/Content/Feature.php | 3 + src/Content/ForumManager.php | 15 +- src/Content/Nav.php | 17 +- src/Content/OEmbed.php | 10 +- src/Content/Pager.php | 4 +- src/Content/Smilies.php | 13 +- src/Content/Text/BBCode.php | 50 +++-- src/Content/Text/HTML.php | 47 +++-- src/Content/Text/Markdown.php | 3 + src/Content/Text/Plaintext.php | 6 +- src/Content/Widget.php | 14 +- src/Content/Widget/CalendarExport.php | 1 + src/Content/Widget/TagCloud.php | 28 +-- src/Core/ACL.php | 23 ++- src/Core/Addon.php | 18 +- src/Core/Authentication.php | 15 +- src/Core/Cache.php | 6 +- src/Core/Cache/AbstractCacheDriver.php | 5 +- src/Core/Config.php | 6 +- src/Core/Config/IConfigAdapter.php | 6 +- src/Core/Console/AutomaticInstallation.php | 1 + src/Core/Console/PhpToPo.php | 3 + src/Core/Hook.php | 19 +- src/Core/Installer.php | 45 +++-- src/Core/L10n.php | 14 +- src/Core/Logger.php | 46 ++--- src/Core/NotificationsManager.php | 90 +++++---- src/Core/PConfig.php | 8 +- src/Core/Protocol.php | 8 +- src/Core/Renderer.php | 18 +- src/Core/Session/CacheSessionHandler.php | 1 + src/Core/Session/DatabaseSessionHandler.php | 1 + src/Core/StorageManager.php | 16 +- src/Core/System.php | 15 +- src/Core/Theme.php | 4 +- src/Core/Update.php | 14 +- src/Core/UserImport.php | 11 +- src/Core/Worker.php | 29 ++- src/Database/DBA.php | 48 +++-- src/Database/DBStructure.php | 5 +- src/Database/PostUpdate.php | 5 + src/LegacyModule.php | 2 + src/Model/APContact.php | 3 + src/Model/Attach.php | 74 +++++--- src/Model/Contact.php | 79 ++++++-- src/Model/Conversation.php | 1 + src/Model/Event.php | 22 ++- src/Model/FileTag.php | 61 ++++--- src/Model/GContact.php | 29 ++- src/Model/Group.php | 51 ++++-- src/Model/Item.php | 157 ++++++++++------ src/Model/ItemContent.php | 5 +- src/Model/ItemDeliveryData.php | 4 + src/Model/ItemURI.php | 2 + src/Model/Mail.php | 5 + src/Model/OpenWebAuthToken.php | 11 +- src/Model/PermissionSet.php | 4 +- src/Model/Photo.php | 76 +++++--- src/Model/Process.php | 2 + src/Model/Profile.php | 34 ++-- src/Model/PushSubscriber.php | 13 +- src/Model/Queue.php | 4 + src/Model/Register.php | 11 +- src/Model/Storage/Filesystem.php | 3 +- src/Model/Term.php | 8 +- src/Model/User.php | 37 ++-- src/Module/Contact.php | 10 +- src/Module/Install.php | 1 + src/Module/Login.php | 13 +- src/Module/Proxy.php | 28 +-- src/Module/Tos.php | 4 +- src/Network/CurlResult.php | 1 + src/Network/FKOAuth1.php | 1 + src/Network/FKOAuthDataStore.php | 5 + src/Network/Probe.php | 19 ++ src/Object/Image.php | 16 +- src/Object/Post.php | 8 + src/Object/Thread.php | 12 +- src/Protocol/ActivityPub.php | 8 +- src/Protocol/ActivityPub/Processor.php | 36 +++- src/Protocol/ActivityPub/Receiver.php | 50 +++-- src/Protocol/ActivityPub/Transmitter.php | 112 ++++++++---- src/Protocol/DFRN.php | 94 +++++++--- src/Protocol/Diaspora.php | 125 +++++++++++-- src/Protocol/Email.php | 5 + src/Protocol/Feed.php | 11 +- src/Protocol/OStatus.php | 193 ++++++++++++-------- src/Protocol/PortableContact.php | 9 +- src/Protocol/Salmon.php | 3 + src/Util/Crypto.php | 61 ++++--- src/Util/DateTimeFormat.php | 9 +- src/Util/Emailer.php | 17 +- src/Util/ExAuth.php | 12 +- src/Util/HTTPSignature.php | 19 +- src/Util/JsonLD.php | 13 +- src/Util/Network.php | 16 +- src/Util/ParseUrl.php | 25 +-- src/Util/Proxy.php | 4 + src/Util/Strings.php | 43 +++-- src/Util/Temporal.php | 27 ++- src/Util/XML.php | 17 +- src/Worker/APDelivery.php | 2 + src/Worker/Cron.php | 5 +- src/Worker/CronJobs.php | 3 + src/Worker/DBClean.php | 21 ++- src/Worker/Delivery.php | 6 + src/Worker/DiscoverPoCo.php | 3 + src/Worker/Notifier.php | 12 +- src/Worker/OnePoll.php | 3 +- 113 files changed, 1703 insertions(+), 795 deletions(-) diff --git a/src/App.php b/src/App.php index f5dba13dc0..e30cc92120 100644 --- a/src/App.php +++ b/src/App.php @@ -121,6 +121,7 @@ class App * @see initHead() * * @param string $path + * @throws InternalServerErrorException */ public function registerStylesheet($path) { @@ -137,6 +138,7 @@ class App * @see initFooter() * * @param string $path + * @throws InternalServerErrorException */ public function registerFooterScript($path) { @@ -617,6 +619,7 @@ class App * finally for PWD * * @return string + * @throws InternalServerErrorException */ public function getBasePath() { @@ -676,6 +679,7 @@ class App * * @param bool $ssl Whether to append http or https under SSL_POLICY_SELFSIGN * @return string Friendica server base URL + * @throws InternalServerErrorException */ public function getBaseURL($ssl = false) { @@ -709,6 +713,7 @@ class App * Clears the baseurl cache to prevent inconsistencies * * @param string $url + * @throws InternalServerErrorException */ public function setBaseURL($url) { @@ -882,6 +887,7 @@ class App * @param string $origURL * * @return string The cleaned url + * @throws InternalServerErrorException */ public function removeBaseURL($origURL) { @@ -935,6 +941,7 @@ class App * Returns the current UserAgent as a String * * @return string the UserAgent as a String + * @throws InternalServerErrorException */ public function getUserAgent() { @@ -1058,6 +1065,7 @@ class App * @brief Checks if the minimal memory is reached * * @return bool Is the memory limit reached? + * @throws InternalServerErrorException */ public function isMinMemoryReached() { @@ -1102,6 +1110,7 @@ class App * @brief Checks if the maximum load is reached * * @return bool Is the load reached? + * @throws InternalServerErrorException */ public function isMaxLoadReached() { @@ -1134,6 +1143,7 @@ class App * * @param string $command The command to execute * @param array $args Arguments to pass to the command ( [ 'key' => value, 'key2' => value2, ... ] + * @throws InternalServerErrorException */ public function proc_run($command, $args) { @@ -1190,7 +1200,10 @@ class App /** * @brief Checks if a given directory is usable for the system * + * @param $directory + * @param bool $check_writable * @return boolean the directory is usable + * @throws Exception */ public static function isDirectoryUsable($directory, $check_writable = true) { @@ -1368,6 +1381,7 @@ class App * Generates the site's default sender email address * * @return string + * @throws InternalServerErrorException */ public function getSenderEmailAddress() { @@ -1388,6 +1402,7 @@ class App * Returns the current theme name. * * @return string the name of the current theme + * @throws InternalServerErrorException */ public function getCurrentTheme() { @@ -1469,6 +1484,7 @@ class App * Provide a sane default if nothing is chosen or the specified theme does not exist. * * @return string + * @throws InternalServerErrorException */ public function getCurrentThemeStylesheetPath() { @@ -1930,7 +1946,7 @@ class App * Should only be used if it isn't clear if the URL is either internal or external * * @param string $toUrl The target URL - * + * @throws InternalServerErrorException */ public function redirect($toUrl) { diff --git a/src/App/Mode.php b/src/App/Mode.php index fdfb2ce6e0..8d82ffc0b4 100644 --- a/src/App/Mode.php +++ b/src/App/Mode.php @@ -42,7 +42,7 @@ class Mode * - App::MODE_NORMAL : Normal run with all features enabled * * @param string $basepath the Basepath of the Application - * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function determine($basepath = null) { diff --git a/src/BaseObject.php b/src/BaseObject.php index 39f98a38fd..84ff193823 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -23,6 +23,7 @@ class BaseObject * Same as get_app from boot.php * * @return App + * @throws \Exception */ public static function getApp() { diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index 4ba579b514..4705903884 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -19,6 +19,8 @@ class ContactSelector /** * @param string $current current * @param string $foreign_net network + * @return string + * @throws \Exception */ public static function profileAssign($current, $foreign_net) { @@ -73,6 +75,7 @@ class ContactSelector * @param string $network network * @param string $profile optional, default empty * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function networkToName($network, $profile = "") { @@ -141,6 +144,7 @@ class ContactSelector * @param string $current optional, default empty * @param string $suffix optionsl, default empty * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function gender($current = "", $suffix = "") { @@ -180,6 +184,7 @@ class ContactSelector * @param string $current optional, default empty * @param string $suffix optionsl, default empty * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sexualPreference($current = "", $suffix = "") { @@ -217,6 +222,7 @@ class ContactSelector /** * @param string $current optional, default empty * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function maritalStatus($current = "") { diff --git a/src/Content/Feature.php b/src/Content/Feature.php index 7493965509..db0a70e2fb 100644 --- a/src/Content/Feature.php +++ b/src/Content/Feature.php @@ -18,6 +18,7 @@ class Feature * @param integer $uid user id * @param string $feature feature * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isEnabled($uid, $feature) { @@ -45,6 +46,7 @@ class Feature * * @param string $feature feature * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function getDefault($feature) { @@ -69,6 +71,7 @@ class Feature * @param bool $filtered True removes any locked features * * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function get($filtered = true) { diff --git a/src/Content/ForumManager.php b/src/Content/ForumManager.php index ac745c50ff..88c22c5676 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/ForumManager.php @@ -29,11 +29,12 @@ class ForumManager * @param boolean $showprivate Show private groups * * @return array - * 'url' => forum url - * 'name' => forum name - * 'id' => number of the key from the array - * 'micro' => contact photo in format micro - * 'thumb' => contact photo in format thumb + * 'url' => forum url + * 'name' => forum name + * 'id' => number of the key from the array + * 'micro' => contact photo in format micro + * 'thumb' => contact photo in format thumb + * @throws \Exception */ public static function getList($uid, $lastitem, $showhidden = true, $showprivate = false) { @@ -88,6 +89,8 @@ class ForumManager * @param int $uid The ID of the User * @param int $cid The contact id which is used to mark a forum as "selected" * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function widget($uid, $cid = 0) { @@ -143,6 +146,8 @@ class ForumManager * * @param int $uid The ID of the User * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function profileAdvanced($uid) { diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 2f516652de..51cee03bf8 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -42,6 +42,8 @@ class Nav /** * Set a menu item in navbar as selected + * + * @param string $item */ public static function setSelected($item) { @@ -50,6 +52,10 @@ class Nav /** * Build page header and site navigation bars + * + * @param App $a + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function build(App $a) { @@ -114,12 +120,13 @@ class Nav * Prepares a list of navigation links * * @brief Prepares a list of navigation links - * @param App $a + * @param App $a * @return array Navigation links - * string 'sitelocation' => The webbie (username@site.com) - * array 'nav' => Array of links used in the nav menu - * string 'banner' => Formatted html link with banner image - * array 'userinfo' => Array of user information (name, icon) + * string 'sitelocation' => The webbie (username@site.com) + * array 'nav' => Array of links used in the nav menu + * string 'banner' => Formatted html link with banner image + * array 'userinfo' => Array of user information (name, icon) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function getInfo(App $a) { diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 866a6ef31d..144ac4ca53 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -51,6 +51,7 @@ class OEmbed * @param bool $no_rich_type If set to true rich type content won't be fetched. * * @return \Friendica\Object\OEmbed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchURL($embedurl, $no_rich_type = false) { @@ -260,6 +261,9 @@ class OEmbed /** * Find .... * and replace it with [embed]url[/embed] + * + * @param $text + * @return string */ public static function HTML2BBCode($text) { @@ -298,6 +302,7 @@ class OEmbed * @brief Determines if rich content OEmbed is allowed for the provided URL * @param string $url * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isAllowedURL($url) { @@ -353,14 +358,15 @@ class OEmbed * Since the iframe is automatically resized on load, there are no need for ugly * and impractical scrollbars. * - * @todo This function is currently unused until someone™ adds support for a separate OEmbed domain + * @todo This function is currently unused until someone™ adds support for a separate OEmbed domain * * @param string $src Original remote URL to embed * @param string $width * @param string $height * @return string formatted HTML * - * @see oembed_format_object() + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see oembed_format_object() */ private static function iframe($src, $width, $height) { diff --git a/src/Content/Pager.php b/src/Content/Pager.php index 4045ac8443..c9acb63f23 100644 --- a/src/Content/Pager.php +++ b/src/Content/Pager.php @@ -65,7 +65,7 @@ class Pager /** * Returns the current page number * - * @return type + * @return int */ public function getPage() { @@ -140,6 +140,7 @@ class Pager * * @param integer $itemCount The number of displayed items on the page * @return string HTML string of the pager + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function renderMinimal($itemCount) { @@ -182,6 +183,7 @@ class Pager * * @param integer $itemCount The total number of items including those note displayed on the page * @return string HTML string of the pager + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function renderFull($itemCount) { diff --git a/src/Content/Smilies.php b/src/Content/Smilies.php index 2bc7fffd61..9023959978 100644 --- a/src/Content/Smilies.php +++ b/src/Content/Smilies.php @@ -55,10 +55,11 @@ class Smilies * Get an array of all smilies, both internal and from addons. * * @return array - * 'texts' => smilie shortcut - * 'icons' => icon in html + * 'texts' => smilie shortcut + * 'icons' => icon in html * - * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array) */ public static function getList() { @@ -182,6 +183,7 @@ class Smilies * @param boolean $no_images Only replace emoticons without images * * @return string HTML Output of the Smilie + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function replace($s, $no_images = false) { @@ -201,6 +203,7 @@ class Smilies * @param array $smilies An string replacement array with the following structure: ['texts' => [], 'icons' => []] * @param bool $no_images Only replace shortcodes without image replacement (e.g. Unicode characters) * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function replaceFromArray($text, array $smilies, $no_images = false) { @@ -248,6 +251,7 @@ class Smilies * @param string $m string * * @return string base64 decoded string + * @throws \Exception */ private static function decode($m) { @@ -262,7 +266,8 @@ class Smilies * * @return string HTML Output * - * @todo: Rework because it doesn't work correctly + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo : Rework because it doesn't work correctly */ private static function pregHeart($x) { diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index a3ca999897..b77923013b 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -37,13 +37,14 @@ class BBCode extends BaseObject * * @param string $body Message body * @return array - * 'type' -> Message type ("link", "video", "photo") - * 'text' -> Text before the shared message - * 'after' -> Text after the shared message - * 'image' -> Preview image of the message - * 'url' -> Url to the attached message - * 'title' -> Title of the attachment - * 'description' -> Description of the attachment + * 'type' -> Message type ("link", "video", "photo") + * 'text' -> Text before the shared message + * 'after' -> Text after the shared message + * 'image' -> Preview image of the message + * 'url' -> Url to the attached message + * 'title' -> Title of the attachment + * 'description' -> Description of the attachment + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function getOldAttachmentData($body) { @@ -108,13 +109,14 @@ class BBCode extends BaseObject * * @param string $body Message body * @return array - * 'type' -> Message type ("link", "video", "photo") - * 'text' -> Text before the shared message - * 'after' -> Text after the shared message - * 'image' -> Preview image of the message - * 'url' -> Url to the attached message - * 'title' -> Title of the attachment - * 'description' -> Description of the attachment + * 'type' -> Message type ("link", "video", "photo") + * 'text' -> Text before the shared message + * 'after' -> Text after the shared message + * 'image' -> Preview image of the message + * 'url' -> Url to the attached message + * 'title' -> Title of the attachment + * 'description' -> Description of the attachment + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getAttachmentData($body) { @@ -345,6 +347,7 @@ class BBCode extends BaseObject /** * @brief Converts a BBCode text into plaintext * + * @param $text * @param bool $keep_urls Whether to keep URLs in the resulting plaintext * * @return string @@ -446,6 +449,7 @@ class BBCode extends BaseObject * @brief Truncates imported message body string length to max_import_size * @param string $body * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function limitBodySize($body) { @@ -532,10 +536,11 @@ class BBCode extends BaseObject * Note: Can produce a [bookmark] tag in the returned string * * @brief Processes [attachment] tags - * @param string $return + * @param string $return * @param bool|int $simplehtml - * @param bool $tryoembed + * @param bool $tryoembed * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function convertAttachment($return, $simplehtml = false, $tryoembed = true) { @@ -777,10 +782,10 @@ class BBCode extends BaseObject /** * Performs a preg_replace within the boundaries of all named BBCode tags in a text * - * @param type $pattern Preg pattern string - * @param type $replace Preg replace string - * @param type $name BBCode tag name - * @param type $text Text to search + * @param string $pattern Preg pattern string + * @param string $replace Preg replace string + * @param string $name BBCode tag name + * @param string $text Text to search * @return string */ public static function pregReplaceInTag($pattern, $replace, $name, $text) @@ -930,6 +935,7 @@ class BBCode extends BaseObject * @param boolean $is_quote_share Whether there is content before the [share] block * @param integer $simplehtml Mysterious integer value depending on the target network/formatting style * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function convertShareCallback(array $attributes, array $author_contact, $content, $is_quote_share, $simplehtml) { @@ -1142,6 +1148,7 @@ class BBCode extends BaseObject * @param int $simple_html * @param bool $for_plaintext * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function convert($text, $try_oembed = true, $simple_html = false, $for_plaintext = false) { @@ -1813,6 +1820,8 @@ class BBCode extends BaseObject * [2] = Name * [3] = Address * @return string Replaced mention + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function bbCodeMention2DiasporaCallback($match) { @@ -1839,6 +1848,7 @@ class BBCode extends BaseObject * @param string $text * @param bool $for_diaspora Diaspora requires more changes than Libertree * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function toMarkdown($text, $for_diaspora = true) { diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php index 80aac9c114..8c32498a3f 100644 --- a/src/Content/Text/HTML.php +++ b/src/Content/Text/HTML.php @@ -117,12 +117,13 @@ class HTML /** * Made by: ike@piratenpartei.de * Originally made for the syncom project: http://wiki.piratenpartei.de/Syncom - * https://github.com/annando/Syncom + * https://github.com/annando/Syncom * * @brief Converter for HTML to BBCode * @param string $message * @param string $basepath * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function toBBCode($message, $basepath = '') { @@ -713,6 +714,7 @@ class HTML * @brief Convert video HTML to BBCode tags * * @param string $s + * @return string */ public static function toBBCodeVideo($s) { @@ -789,7 +791,9 @@ class HTML /** * Loader for infinite scrolling + * * @return string html for loader + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function scrollLoader() { @@ -804,8 +808,10 @@ class HTML * Get html for contact block. * * @template contact_block.tpl - * @hook contact_block_end (contacts=>array, output=>string) + * @hook contact_block_end (contacts=>array, output=>string) * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function contactBlock() { @@ -890,22 +896,23 @@ class HTML /** * @brief Format contacts as picture links or as text links * - * @param array $contact Array with contacts which contains an array with - * int 'id' => The ID of the contact - * int 'uid' => The user ID of the user who owns this data - * string 'name' => The name of the contact - * string 'url' => The url to the profile page of the contact - * string 'addr' => The webbie of the contact (e.g.) username@friendica.com - * string 'network' => The network to which the contact belongs to - * string 'thumb' => The contact picture - * string 'click' => js code which is performed when clicking on the contact - * @param boolean $redirect If true try to use the redir url if it's possible - * @param string $class CSS class for the - * @param boolean $textmode If true display the contacts as text links - * if false display the contacts as picture links - - * @return string Formatted html - */ + * @param array $contact Array with contacts which contains an array with + * int 'id' => The ID of the contact + * int 'uid' => The user ID of the user who owns this data + * string 'name' => The name of the contact + * string 'url' => The url to the profile page of the contact + * string 'addr' => The webbie of the contact (e.g.) username@friendica.com + * string 'network' => The network to which the contact belongs to + * string 'thumb' => The contact picture + * string 'click' => js code which is performed when clicking on the contact + * @param boolean $redirect If true try to use the redir url if it's possible + * @param string $class CSS class for the + * @param boolean $textmode If true display the contacts as text links + * if false display the contacts as picture links + * @return string Formatted html + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ public static function micropro($contact, $redirect = false, $class = '', $textmode = false) { // Use the contact URL if no address is available @@ -947,10 +954,10 @@ class HTML * @param string $s Search query. * @param string $id HTML id * @param string $url Search url. - * @param bool $save Show save search button. * @param bool $aside Display the search widgit aside. * * @return string Formatted HTML. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function search($s, $id = 'search-box', $url = 'search', $aside = true) { @@ -990,6 +997,7 @@ class HTML * Replace naked text hyperlink with HTML formatted hyperlink * * @param string $s + * @return string */ public static function toLink($s) { @@ -1006,6 +1014,7 @@ class HTML * @param string $html * @param array $reasons * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function applyContentFilter($html, array $reasons) { diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index 994d968334..bf95e1a934 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -26,6 +26,7 @@ class Markdown extends BaseObject * @param string $text * @param bool $hardwrap * @return string + * @throws \Exception */ public static function convert($text, $hardwrap = true) { $stamp1 = microtime(true); @@ -48,6 +49,8 @@ class Markdown extends BaseObject * [2] = name (optional) * [3] = address * @return string Replaced mention + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function diasporaMention2BBCodeCallback($match) { diff --git a/src/Content/Text/Plaintext.php b/src/Content/Text/Plaintext.php index 3b692fd965..2ec76ba13b 100644 --- a/src/Content/Text/Plaintext.php +++ b/src/Content/Text/Plaintext.php @@ -9,9 +9,9 @@ class Plaintext /** * Shortens message * - * @param type $msg - * @param type $limit - * @return type + * @param string $msg + * @param int $limit + * @return string * * @todo For Twitter URLs aren't shortened, but they have to be calculated as if. */ diff --git a/src/Content/Widget.php b/src/Content/Widget.php index adf6545b43..3c3af4f6ac 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -28,6 +28,8 @@ class Widget * Return the follow widget * * @param string $value optional, default empty + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function follow($value = "") { @@ -125,6 +127,8 @@ class Widget * * @param string $baseurl baseurl * @param string $selected optional, default empty + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function networks($baseurl, $selected = '') { @@ -167,6 +171,8 @@ class Widget * * @param string $baseurl baseurl * @param string $selected optional, default empty + * @return string|void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fileAs($baseurl, $selected = '') { @@ -205,6 +211,8 @@ class Widget * * @param string $baseurl baseurl * @param string $selected optional, default empty + * @return string|void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function categories($baseurl, $selected = '') { @@ -244,6 +252,8 @@ class Widget * Return common friends visitor widget * * @param string $profile_uid uid + * @return string|void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function commonFriendsVisitor($profile_uid) { @@ -327,8 +337,10 @@ class Widget * Insert a tag cloud widget for the present profile. * * @brief Insert a tag cloud widget for the present profile. - * @param int $limit Max number of displayed tags. + * @param int $limit Max number of displayed tags. * @return string HTML formatted output. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function tagCloud($limit = 50) { diff --git a/src/Content/Widget/CalendarExport.php b/src/Content/Widget/CalendarExport.php index 8d9309a5bd..120af99d00 100644 --- a/src/Content/Widget/CalendarExport.php +++ b/src/Content/Widget/CalendarExport.php @@ -21,6 +21,7 @@ class CalendarExport * @brief Get the events widget. * * @return string Formated HTML of the calendar widget. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getHTML() { $a = \get_app(); diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index f214ba7999..e1ce921c04 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -24,13 +24,14 @@ class TagCloud * Construct a tag/term cloud block for an user. * * @brief Construct a tag/term cloud block for an user. - * @param int $uid The user ID. - * @param int $count Max number of displayed tags/terms. - * @param int $owner_id The contact ID of the owner of the tagged items. - * @param string $flags Special item flags. - * @param int $type The tag/term type. + * @param int $uid The user ID. + * @param int $count Max number of displayed tags/terms. + * @param int $owner_id The contact ID of the owner of the tagged items. + * @param string $flags Special item flags. + * @param int $type The tag/term type. * * @return string HTML formatted output. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getHTML($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG) { @@ -63,13 +64,14 @@ class TagCloud * * @brief Get alphabetical sorted array of used tags/terms of an user including * a weighting by frequency of use. - * @param int $uid The user ID. - * @param int $count Max number of displayed tags/terms. - * @param int $owner_id The contact id of the owner of the tagged items. - * @param string $flags Special item flags. - * @param int $type The tag/term type. + * @param int $uid The user ID. + * @param int $count Max number of displayed tags/terms. + * @param int $owner_id The contact id of the owner of the tagged items. + * @param string $flags Special item flags. + * @param int $type The tag/term type. * - * @return arr Alphabetical sorted array of used tags of an user. + * @return array Alphabetical sorted array of used tags of an user. + * @throws \Exception */ private static function tagadelic($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG) { @@ -146,8 +148,8 @@ class TagCloud * Compare function to sort tags/terms alphabetically. * * @brief Compare function to sort tags/terms alphabetically. - * @param type $a - * @param type $b + * @param string $a + * @param string $b * * @return int */ diff --git a/src/Core/ACL.php b/src/Core/ACL.php index 5cb2459570..b693a28bf9 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -23,15 +23,16 @@ class ACL extends BaseObject /** * Returns a select input tag with all the contact of the local user * - * @param string $selname Name attribute of the select input tag - * @param string $selclass Class attribute of the select input tag - * @param array $options Available options: - * - size: length of the select box - * - mutual_friends: Only used for the hook - * - single: Only used for the hook - * - exclude: Only used for the hook - * @param array $preselected Contact ID that should be already selected + * @param string $selname Name attribute of the select input tag + * @param string $selclass Class attribute of the select input tag + * @param array $options Available options: + * - size: length of the select box + * - mutual_friends: Only used for the hook + * - single: Only used for the hook + * - exclude: Only used for the hook + * @param array $preselected Contact ID that should be already selected * @return string + * @throws \Exception */ public static function getSuggestContactSelectHTML($selname, $selclass, array $options = [], array $preselected = []) { @@ -141,6 +142,7 @@ class ACL extends BaseObject * @param int $size Length of the select box * @param int $tabindex Select input tag tabindex attribute * @return string + * @throws \Exception */ public static function getMessageContactSelectHTML($selname, $selclass, array $preselected = [], $size = 4, $tabindex = null) { @@ -215,6 +217,7 @@ class ACL extends BaseObject * * @param array $user * @return array Hash of contact id lists + * @throws \Exception */ public static function getDefaultUserPermissions(array $user = null) { @@ -251,9 +254,10 @@ class ACL extends BaseObject * Return the full jot ACL selector HTML * * @param array $user User array - * @param array $default_permissions Static defaults permission array: ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => ''] * @param bool $show_jotnets + * @param array $default_permissions Static defaults permission array: ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => ''] * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getFullSelectorHTML(array $user, $show_jotnets = false, array $default_permissions = []) { @@ -320,6 +324,7 @@ class ACL extends BaseObject * @param string $search Name or part of a name or nick * @param string $mode Search mode (e.g. "community") * @return array with the search results + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function contactAutocomplete($search, $mode) { diff --git a/src/Core/Addon.php b/src/Core/Addon.php index ee89f4d772..1118280a53 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -70,7 +70,8 @@ class Addon extends BaseObject * @brief uninstalls an addon. * * @param string $addon name of the addon - * @return boolean + * @return void + * @throws \Exception */ public static function uninstall($addon) { @@ -91,6 +92,7 @@ class Addon extends BaseObject * * @param string $addon name of the addon * @return bool + * @throws \Exception */ public static function install($addon) { @@ -190,6 +192,7 @@ class Addon extends BaseObject * *\endcode * @param string $addon the name of the addon * @return array with the addon information + * @throws \Exception */ public static function getInfo($addon) { @@ -269,6 +272,7 @@ class Addon extends BaseObject * Saves the current enabled addon list in the system.addon config key * * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function saveEnabledList() { @@ -279,6 +283,7 @@ class Addon extends BaseObject * Returns the list of non-hidden enabled addon names * * @return array + * @throws \Exception */ public static function getVisibleList() { @@ -296,13 +301,14 @@ class Addon extends BaseObject /** * Shim of Hook::register left for backward compatibility purpose. * - * @see Hook::register + * @see Hook::register * @deprecated since version 2018.12 * @param string $hook the name of the hook * @param string $file the name of the file that hooks into * @param string $function the name of the function that the hook will call * @param int $priority A priority (defaults to 0) * @return mixed|bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function registerHook($hook, $file, $function, $priority = 0) { @@ -312,12 +318,13 @@ class Addon extends BaseObject /** * Shim of Hook::unregister left for backward compatibility purpose. * - * @see Hook::unregister + * @see Hook::unregister * @deprecated since version 2018.12 * @param string $hook the name of the hook * @param string $file the name of the file that hooks into * @param string $function the name of the function that the hook called * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function unregisterHook($hook, $file, $function) { @@ -327,10 +334,11 @@ class Addon extends BaseObject /** * Shim of Hook::callAll left for backward-compatibility purpose. * - * @see Hook::callAll + * @see Hook::callAll * @deprecated since version 2018.12 - * @param string $name of the hook to call + * @param string $name of the hook to call * @param string|array &$data to transmit to the callback handler + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function callHooks($name, &$data = null) { diff --git a/src/Core/Authentication.php b/src/Core/Authentication.php index 235b99f8f7..106ba2a602 100644 --- a/src/Core/Authentication.php +++ b/src/Core/Authentication.php @@ -21,6 +21,7 @@ class Authentication extends BaseObject * @param array $user Record from "user" table * * @return string Hashed data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getCookieHashForUser($user) { @@ -32,8 +33,9 @@ class Authentication extends BaseObject /** * @brief Set the "Friendica" cookie * - * @param int $time + * @param int $time * @param array $user Record from "user" table + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function setCookie($time, $user = []) { @@ -55,12 +57,13 @@ class Authentication extends BaseObject /** * @brief Sets the provided user's authenticated session * - * @todo Should be moved to Friendica\Core\Session once it's created + * @todo Should be moved to Friendica\Core\Session once it's created * - * @param type $user_record - * @param type $login_initial - * @param type $interactive - * @param type $login_refresh + * @param array $user_record + * @param bool $login_initial + * @param bool $interactive + * @param bool $login_refresh + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function setAuthenticatedSessionForUser($user_record, $login_initial = false, $interactive = false, $login_refresh = false) { diff --git a/src/Core/Cache.php b/src/Core/Cache.php index e7277fd702..39c29566d3 100644 --- a/src/Core/Cache.php +++ b/src/Core/Cache.php @@ -55,6 +55,7 @@ class Cache extends \Friendica\BaseObject * @param string $prefix Prefix of the keys (optional) * * @return array Empty if the driver doesn't support this feature + * @throws \Exception */ public static function getAllKeys($prefix = null) { @@ -73,6 +74,7 @@ class Cache extends \Friendica\BaseObject * @param string $key The key to the cached data * * @return mixed Cached $value or "null" if not found + * @throws \Exception */ public static function get($key) { @@ -95,6 +97,7 @@ class Cache extends \Friendica\BaseObject * @param integer $duration The cache lifespan * * @return bool + * @throws \Exception */ public static function set($key, $value, $duration = self::MONTH) { @@ -113,6 +116,7 @@ class Cache extends \Friendica\BaseObject * @param string $key The key to the cached data * * @return bool + * @throws \Exception */ public static function delete($key) { @@ -130,7 +134,7 @@ class Cache extends \Friendica\BaseObject * * @param boolean $outdated just remove outdated values * - * @return void + * @return bool */ public static function clear($outdated = true) { diff --git a/src/Core/Cache/AbstractCacheDriver.php b/src/Core/Cache/AbstractCacheDriver.php index c2628551ef..13993385ad 100644 --- a/src/Core/Cache/AbstractCacheDriver.php +++ b/src/Core/Cache/AbstractCacheDriver.php @@ -14,8 +14,9 @@ use Friendica\BaseObject; abstract class AbstractCacheDriver extends BaseObject { /** - * @param string $key The original key - * @return string The cache key used for the cache + * @param string $key The original key + * @return string The cache key used for the cache + * @throws \Exception */ protected function getCacheKey($key) { diff --git a/src/Core/Config.php b/src/Core/Config.php index f191c10a0e..fad50c0cb4 100644 --- a/src/Core/Config.php +++ b/src/Core/Config.php @@ -22,7 +22,7 @@ use Friendica\Core\Config; class Config extends BaseObject { /** - * @var Friendica\Core\Config\IConfigAdapter + * @var \Friendica\Core\Config\IConfigAdapter */ private static $adapter = null; @@ -49,6 +49,7 @@ class Config extends BaseObject * @param string $family The category of the configuration value * * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function load($family = "config") { @@ -82,6 +83,7 @@ class Config extends BaseObject * @param boolean $refresh optional, If true the config is loaded from the db and not from the cache (default: false) * * @return mixed Stored value or null if it does not exist + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function get($family, $key, $default_value = null, $refresh = false) { @@ -110,6 +112,7 @@ class Config extends BaseObject * @param mixed $value The value to store * * @return bool Operation success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function set($family, $key, $value) { @@ -135,6 +138,7 @@ class Config extends BaseObject * @param string $key The configuration key to delete * * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function delete($family, $key) { diff --git a/src/Core/Config/IConfigAdapter.php b/src/Core/Config/IConfigAdapter.php index f9af253c0b..9d8eefd777 100644 --- a/src/Core/Config/IConfigAdapter.php +++ b/src/Core/Config/IConfigAdapter.php @@ -49,9 +49,9 @@ interface IConfigAdapter * * Note: Please do not store booleans - convert to 0/1 integer values! * - * @param string $family The category of the configuration value - * @param string $key The configuration key to set - * @param mixed $value The value to store + * @param string $cat The category of the configuration value + * @param string $k The configuration key to set + * @param mixed $value The value to store * * @return bool Operation success */ diff --git a/src/Core/Console/AutomaticInstallation.php b/src/Core/Console/AutomaticInstallation.php index c2f9df383b..7db2cc3e70 100644 --- a/src/Core/Console/AutomaticInstallation.php +++ b/src/Core/Console/AutomaticInstallation.php @@ -185,6 +185,7 @@ HELP; * @param Installer $installer the Installer instance * * @return bool true if checks were successfully, otherwise false + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function runBasicChecks(Installer $installer) { diff --git a/src/Core/Console/PhpToPo.php b/src/Core/Console/PhpToPo.php index a5b04e949a..93d8274877 100644 --- a/src/Core/Console/PhpToPo.php +++ b/src/Core/Console/PhpToPo.php @@ -206,6 +206,9 @@ HELP; * - replace " with \" * - replace tab char with \t * - manage multiline strings + * + * @param string $str + * @return string */ private function massageString($str) { diff --git a/src/Core/Hook.php b/src/Core/Hook.php index 2d6c945067..7f0c015b3d 100644 --- a/src/Core/Hook.php +++ b/src/Core/Hook.php @@ -48,9 +48,9 @@ class Hook extends BaseObject * * This function is meant to be called by modules on each page load as it works after loadHooks has been called. * - * @param type $hook - * @param type $file - * @param type $function + * @param string $hook + * @param string $file + * @param string $function */ public static function add($hook, $file, $function) { @@ -70,6 +70,7 @@ class Hook extends BaseObject * @param string $function the name of the function that the hook will call * @param int $priority A priority (defaults to 0) * @return mixed|bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function register($hook, $file, $function, $priority = 0) { @@ -92,6 +93,7 @@ class Hook extends BaseObject * @param string $file the name of the file that hooks into * @param string $function the name of the function that the hook called * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function unregister($hook, $file, $function) { @@ -131,6 +133,7 @@ class Hook extends BaseObject * @param integer $priority of the hook * @param string $name of the hook to call * @param mixed $data to transmit to the callback handler + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fork($priority, $name, $data = null) { @@ -163,8 +166,9 @@ class Hook extends BaseObject * Use this function when you want to be able to allow a hook to manipulate * the provided data. * - * @param string $name of the hook to call + * @param string $name of the hook to call * @param string|array &$data to transmit to the callback handler + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function callAll($name, &$data = null) { @@ -178,10 +182,11 @@ class Hook extends BaseObject /** * @brief Calls a single hook. * - * @param App $a - * @param string $name of the hook to call - * @param array $hook Hook data + * @param App $a + * @param string $name of the hook to call + * @param array $hook Hook data * @param string|array &$data to transmit to the callback handler + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function callSingle(App $a, $name, $hook, &$data = null) { diff --git a/src/Core/Installer.php b/src/Core/Installer.php index 15bcb76f49..6ea3d553cf 100644 --- a/src/Core/Installer.php +++ b/src/Core/Installer.php @@ -47,6 +47,7 @@ class Installer * Returns the PHP path * * @return string the PHP Path + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function getPHPPath() { @@ -79,10 +80,11 @@ class Installer /** * Checks the current installation environment. There are optional and mandatory checks. * - * @param string $baseurl The baseurl of Friendica - * @param string $phpath Optional path to the PHP binary + * @param string $baseurl The baseurl of Friendica + * @param string $phpath Optional path to the PHP binary * * @return bool if the check succeed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function checkEnvironment($baseurl, $phpath = null) { @@ -126,18 +128,19 @@ class Installer * - Creates `config/local.config.php` * - Installs Database Structure * - * @param string $phppath Path to the PHP-Binary (optional, if not set e.g. 'php' or '/usr/bin/php') - * @param string $urlpath Path based on the URL of Friendica (e.g. '/friendica') - * @param string $dbhost Hostname/IP of the Friendica Database - * @param string $dbuser Username of the Database connection credentials - * @param string $dbpass Password of the Database connection credentials - * @param string $dbdata Name of the Database - * @param string $timezone Timezone of the Friendica Installaton (e.g. 'Europe/Berlin') - * @param string $language 2-letter ISO 639-1 code (eg. 'en') - * @param string $adminmail Mail-Adress of the administrator - * @param string $basepath The basepath of Friendica + * @param string $phppath Path to the PHP-Binary (optional, if not set e.g. 'php' or '/usr/bin/php') + * @param string $urlpath Path based on the URL of Friendica (e.g. '/friendica') + * @param string $dbhost Hostname/IP of the Friendica Database + * @param string $dbuser Username of the Database connection credentials + * @param string $dbpass Password of the Database connection credentials + * @param string $dbdata Name of the Database + * @param string $timezone Timezone of the Friendica Installaton (e.g. 'Europe/Berlin') + * @param string $language 2-letter ISO 639-1 code (eg. 'en') + * @param string $adminmail Mail-Adress of the administrator + * @param string $basepath The basepath of Friendica * * @return bool true if the config was created, otherwise false + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function createConfig($phppath, $urlpath, $dbhost, $dbuser, $dbpass, $dbdata, $timezone, $language, $adminmail, $basepath) { @@ -167,6 +170,7 @@ class Installer * Installs the DB-Scheme for Friendica * * @return bool true if the installation was successful, otherwise false + * @throws Exception */ public function installDatabase() { @@ -212,11 +216,12 @@ class Installer * - Checks if a PHP binary is available * - Checks if it is the CLI version * - Checks if "register_argc_argv" is enabled - * - * @param string $phppath Optional. The Path to the PHP-Binary + * + * @param string $phppath Optional. The Path to the PHP-Binary * @param bool $required Optional. If set to true, the PHP-Binary has to exist (Default false) * * @return bool false if something required failed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function checkPHP($phppath = null, $required = false) { @@ -507,8 +512,9 @@ class Installer * * Checks, if "url_rewrite" is enabled in the ".htaccess" file * - * @param string $baseurl The baseurl of the app + * @param string $baseurl The baseurl of the app * @return bool false if something required failed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function checkHtAccess($baseurl) { @@ -576,12 +582,13 @@ class Installer /** * Checking the Database connection and if it is available for the current installation * - * @param string $dbhost Hostname/IP of the Friendica Database - * @param string $dbuser Username of the Database connection credentials - * @param string $dbpass Password of the Database connection credentials - * @param string $dbdata Name of the Database + * @param string $dbhost Hostname/IP of the Friendica Database + * @param string $dbuser Username of the Database connection credentials + * @param string $dbpass Password of the Database connection credentials + * @param string $dbdata Name of the Database * * @return bool true if the check was successful, otherwise false + * @throws Exception */ public function checkDB($dbhost, $dbuser, $dbpass, $dbdata) { diff --git a/src/Core/L10n.php b/src/Core/L10n.php index dfeeeb041b..f7ed9918ce 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -90,6 +90,7 @@ class L10n extends BaseObject /** * @brief Returns the preferred language from the HTTP_ACCEPT_LANGUAGE header * @return string The two-letter language code + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function detectLanguage() { @@ -141,9 +142,10 @@ class L10n extends BaseObject * * If called repeatedly, it won't save the translation strings again, just load the new ones. * - * @see popLang() + * @see popLang() * @brief Stores the current language strings and load a different language. * @param string $lang Language code + * @throws \Exception */ public static function pushLang($lang) { @@ -187,6 +189,7 @@ class L10n extends BaseObject * Uses an App object shim since all the strings files refer to $a->strings * * @param string $lang language code to load + * @throws \Exception */ private static function loadTranslationTable($lang) { @@ -269,8 +272,9 @@ class L10n extends BaseObject * * @param string $singular * @param string $plural - * @param int $count + * @param int $count * @return string + * @throws \Exception */ public static function tt($singular, $plural, $count) { @@ -314,6 +318,9 @@ class L10n extends BaseObject /** * Provide a fallback which will not collide with a function defined in any language file + * + * @param int $n + * @return bool */ private static function stringPluralSelectDefault($n) { @@ -391,7 +398,8 @@ class L10n extends BaseObject * Load poke verbs * * @return array index is present tense verb - * value is array containing past tense verb, translation of present, translation of past + * value is array containing past tense verb, translation of present, translation of past + * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @hook poke_verbs pokes array */ public static function getPokeVerbs() diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 1aaea665e2..16fb138628 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -140,13 +140,14 @@ class Logger extends BaseObject /** * System is unusable. + * * @see LoggerInterface::emergency() * * @param string $message * @param array $context * * @return void - * + * @throws \Exception */ public static function emergency($message, $context = []) { @@ -170,7 +171,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function alert($message, $context = []) { @@ -193,7 +194,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function critical($message, $context = []) { @@ -215,7 +216,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function error($message, $context = []) { @@ -240,7 +241,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function warning($message, $context = []) { @@ -261,7 +262,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function notice($message, $context = []) { @@ -284,7 +285,7 @@ class Logger extends BaseObject * @param array $context * * @return void - * + * @throws \Exception */ public static function info($message, $context = []) { @@ -305,6 +306,7 @@ class Logger extends BaseObject * @param array $context * * @return void + * @throws \Exception */ public static function debug($message, $context = []) { @@ -317,14 +319,15 @@ class Logger extends BaseObject self::getApp()->saveTimestamp($stamp1, 'file'); } - /** - * @brief Logs the given message at the given log level - * - * @param string $msg - * @param int $level + /** + * @brief Logs the given message at the given log level * + * @param string $msg + * @param string $level + * + * @throws \Exception * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead - */ + */ public static function log($msg, $level = LogLevel::NOTICE) { if (!isset(self::$logger)) { @@ -336,15 +339,16 @@ class Logger extends BaseObject self::getApp()->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 + /** + * @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 * @param string $level - */ + * @throws \Exception + */ public static function devLog($msg, $level = LogLevel::DEBUG) { if (!isset(self::$logger)) { diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 5a2efe297b..2687719472 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -36,6 +36,7 @@ class NotificationsManager extends BaseObject * - date_rel : relative date string * - msg_html: message as html string * - msg_plain: message as plain text string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function _set_extra($notes) { @@ -61,6 +62,7 @@ class NotificationsManager extends BaseObject * @param string $limit optional Query limits * * @return array of results or false on errors + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function getAll($filter = [], $order = "-date", $limit = "") { @@ -109,6 +111,7 @@ class NotificationsManager extends BaseObject * * @param int $id identity * @return array note values or null if not found + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function getByID($id) { @@ -161,6 +164,7 @@ class NotificationsManager extends BaseObject * @brief List of pages for the Notifications TabBar * * @return array with with notifications TabBar data + * @throws \Exception */ public function getTabs() { @@ -213,14 +217,15 @@ class NotificationsManager extends BaseObject * @param array $notifs The array from the db query * @param string $ident The notifications identifier (e.g. network) * @return array - * string 'label' => The type of the notification - * string 'link' => URL to the source - * string 'image' => The avatar image - * string 'url' => The profile url of the contact - * string 'text' => The notification text - * string 'when' => The date of the notification - * string 'ago' => T relative date of the notification - * bool 'seen' => Is the notification marked as "seen" + * string 'label' => The type of the notification + * string 'link' => URL to the source + * string 'image' => The avatar image + * string 'url' => The profile url of the contact + * string 'text' => The notification text + * string 'when' => The date of the notification + * string 'ago' => T relative date of the notification + * bool 'seen' => Is the notification marked as "seen" + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function formatNotifs(array $notifs, $ident = "") { @@ -398,14 +403,15 @@ class NotificationsManager extends BaseObject /** * @brief Get network notifications * - * @param int|string $seen If 0 only include notifications into the query - * which aren't marked as "seen" - * @param int $start Start the query at this point - * @param int $limit Maximum number of query results + * @param int|string $seen If 0 only include notifications into the query + * which aren't marked as "seen" + * @param int $start Start the query at this point + * @param int $limit Maximum number of query results * * @return array with - * string 'ident' => Notification identifier - * array 'notifications' => Network notifications + * string 'ident' => Notification identifier + * array 'notifications' => Network notifications + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function networkNotifs($seen = 0, $start = 0, $limit = 80) { @@ -439,14 +445,15 @@ class NotificationsManager extends BaseObject /** * @brief Get system notifications * - * @param int|string $seen If 0 only include notifications into the query - * which aren't marked as "seen" - * @param int $start Start the query at this point - * @param int $limit Maximum number of query results + * @param int|string $seen If 0 only include notifications into the query + * which aren't marked as "seen" + * @param int $start Start the query at this point + * @param int $limit Maximum number of query results * * @return array with - * string 'ident' => Notification identifier - * array 'notifications' => System notifications + * string 'ident' => Notification identifier + * array 'notifications' => System notifications + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function systemNotifs($seen = 0, $start = 0, $limit = 80) { @@ -481,14 +488,15 @@ class NotificationsManager extends BaseObject /** * @brief Get personal notifications * - * @param int|string $seen If 0 only include notifications into the query - * which aren't marked as "seen" - * @param int $start Start the query at this point - * @param int $limit Maximum number of query results + * @param int|string $seen If 0 only include notifications into the query + * which aren't marked as "seen" + * @param int $start Start the query at this point + * @param int $limit Maximum number of query results * * @return array with - * string 'ident' => Notification identifier - * array 'notifications' => Personal notifications + * string 'ident' => Notification identifier + * array 'notifications' => Personal notifications + * @throws \Exception */ public function personalNotifs($seen = 0, $start = 0, $limit = 80) { @@ -526,14 +534,15 @@ class NotificationsManager extends BaseObject /** * @brief Get home notifications * - * @param int|string $seen If 0 only include notifications into the query - * which aren't marked as "seen" - * @param int $start Start the query at this point - * @param int $limit Maximum number of query results + * @param int|string $seen If 0 only include notifications into the query + * which aren't marked as "seen" + * @param int $start Start the query at this point + * @param int $limit Maximum number of query results * * @return array with - * string 'ident' => Notification identifier - * array 'notifications' => Home notifications + * string 'ident' => Notification identifier + * array 'notifications' => Home notifications + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function homeNotifs($seen = 0, $start = 0, $limit = 80) { @@ -566,14 +575,16 @@ class NotificationsManager extends BaseObject /** * @brief Get introductions * - * @param bool $all If false only include introductions into the query - * which aren't marked as ignored - * @param int $start Start the query at this point - * @param int $limit Maximum number of query results + * @param bool $all If false only include introductions into the query + * which aren't marked as ignored + * @param int $start Start the query at this point + * @param int $limit Maximum number of query results * * @return array with - * string 'ident' => Notification identifier - * array 'notifications' => Introductions + * string 'ident' => Notification identifier + * array 'notifications' => Introductions + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public function introNotifs($all = false, $start = 0, $limit = 80) { @@ -620,6 +631,8 @@ class NotificationsManager extends BaseObject * * @param array $intros The array from the db query * @return array with the introductions + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private function formatIntros($intros) { @@ -703,6 +716,7 @@ class NotificationsManager extends BaseObject * @param array $arr The input array with the intro data * * @return array The array with the intro data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function getMissingIntroData($arr) { diff --git a/src/Core/PConfig.php b/src/Core/PConfig.php index 752d919199..a4e9fa389b 100644 --- a/src/Core/PConfig.php +++ b/src/Core/PConfig.php @@ -21,7 +21,7 @@ use Friendica\BaseObject; class PConfig extends BaseObject { /** - * @var Friendica\Core\Config\IPConfigAdapter + * @var \Friendica\Core\Config\IPConfigAdapter */ private static $adapter = null; @@ -51,6 +51,7 @@ class PConfig extends BaseObject * @param string $family The category of the configuration value * * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function load($uid, $family) { @@ -80,6 +81,7 @@ class PConfig extends BaseObject * @param boolean $refresh optional, If true the config is loaded from the db and not from the cache (default: false) * * @return mixed Stored value or null if it does not exist + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function get($uid, $family, $key, $default_value = null, $refresh = false) { @@ -101,7 +103,7 @@ class PConfig extends BaseObject * Stores a config value ($value) in the category ($family) under the key ($key) * for the user_id $uid. * - * @note Please do not store booleans - convert to 0/1 integer values! + * @note Please do not store booleans - convert to 0/1 integer values! * * @param string $uid The user_id * @param string $family The category of the configuration value @@ -109,6 +111,7 @@ class PConfig extends BaseObject * @param string $value The value to store * * @return bool Operation success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function set($uid, $family, $key, $value) { @@ -135,6 +138,7 @@ class PConfig extends BaseObject * @param string $key The configuration key to delete * * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function delete($uid, $family, $key) { diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index 00552bf787..0038b505a5 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -50,7 +50,7 @@ class Protocol * * @param string $profile_url * @return string - * @throws Exception + * @throws \Exception */ public static function getAddrFromProfileUrl($profile_url) { @@ -69,8 +69,9 @@ class Protocol * Guesses the network from a profile URL * * @param string $profile_url - * @param array $matches preg_match return array: [0] => Full match [1] => hostname [2] => username - * @return type + * @param array $matches preg_match return array: [0] => Full match [1] => hostname [2] => username + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function matchByProfileUrl($profile_url, &$matches = []) { @@ -131,6 +132,7 @@ class Protocol * @param string $profile_url * @param string $display_name * @return string + * @throws \Exception */ public static function formatMention($profile_url, $display_name) { diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 29b1606349..c5cffea67d 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -56,6 +56,7 @@ class Renderer extends BaseObject * @param array $vars key value pairs (search => replace) * * @return string substituted string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function replaceMacros($s, $vars) { @@ -78,14 +79,15 @@ class Renderer extends BaseObject return $output; } - /** - * @brief Load a given template $s - * - * @param string $s Template to load. - * @param string $root Optional. - * - * @return string template. - */ + /** + * @brief Load a given template $s + * + * @param string $s Template to load. + * @param string $root Optional. + * + * @return string template. + * @throws Exception + */ public static function getMarkupTemplate($s, $root = '') { $stamp1 = microtime(true); diff --git a/src/Core/Session/CacheSessionHandler.php b/src/Core/Session/CacheSessionHandler.php index 08490818ce..c0a5896f42 100644 --- a/src/Core/Session/CacheSessionHandler.php +++ b/src/Core/Session/CacheSessionHandler.php @@ -45,6 +45,7 @@ class CacheSessionHandler extends BaseObject implements SessionHandlerInterface * @param string $session_id Session ID with format: [a-z0-9]{26} * @param string $session_data Serialized session data * @return boolean Returns false if parameters are missing, true otherwise + * @throws \Exception */ public function write($session_id, $session_data) { diff --git a/src/Core/Session/DatabaseSessionHandler.php b/src/Core/Session/DatabaseSessionHandler.php index 1c3da6eb3a..9bb1180ec1 100644 --- a/src/Core/Session/DatabaseSessionHandler.php +++ b/src/Core/Session/DatabaseSessionHandler.php @@ -46,6 +46,7 @@ class DatabaseSessionHandler extends BaseObject implements SessionHandlerInterfa * @param string $session_id Session ID with format: [a-z0-9]{26} * @param string $session_data Serialized session data * @return boolean Returns false if parameters are missing, true otherwise + * @throws \Exception */ public function write($session_id, $session_data) { diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 43a72650cc..f46740ec63 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -33,6 +33,7 @@ class StorageManager /** * @brief Return current storage backend class * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getBackend() { @@ -54,7 +55,8 @@ class StorageManager /** * @brief Set current storage backend class * - * @param string $class Backend class name + * @param string $class Backend class name + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function setBackend($class) { @@ -74,12 +76,12 @@ class StorageManager } - /** * @brief Register a storage backend class * - * @param string $name User readable backend name - * @param string $class Backend class name + * @param string $name User readable backend name + * @param string $class Backend class name + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function register($name, $class) { @@ -93,7 +95,8 @@ class StorageManager /** * @brief Unregister a storage backend class * - * @param string $name User readable backend name + * @param string $name User readable backend name + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function unregister($name) { @@ -112,7 +115,8 @@ class StorageManager * @param string $dest Destination storage class name * @param array $tables Tables to look in for resources. Optional, defaults to ['photo', 'attach'] * - * @retur int Number of moved resources + * @throws \Exception + * @return int Number of moved resources */ public static function move($dest, $tables = null) { diff --git a/src/Core/System.php b/src/Core/System.php index 14631b5e9d..44419ad179 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -27,6 +27,7 @@ class System extends BaseObject * * @param bool $ssl Whether to append http or https under SSL_POLICY_SELFSIGN * @return string Friendica server base URL + * @throws InternalServerErrorException */ public static function baseUrl($ssl = false) { @@ -39,6 +40,7 @@ class System extends BaseObject * @param string $orig_url The url to be cleaned * * @return string The cleaned url + * @throws \Exception */ public static function removedBaseUrl($orig_url) { @@ -92,6 +94,10 @@ class System extends BaseObject * Generic XML return * Outputs a basic dfrn XML status structure to STDOUT, with a variable * of $st and an optional text of $message and terminates the current process. + * + * @param $st + * @param string $message + * @throws \Exception */ public static function xmlExit($st, $message = '') { @@ -121,6 +127,7 @@ class System extends BaseObject * @param array $description optional message * 'title' => header title * 'description' => optional message + * @throws InternalServerErrorException */ public static function httpExit($val, $description = []) { @@ -191,8 +198,9 @@ class System extends BaseObject /** * Generates a random string in the UUID format * - * @param bool|string $prefix A given prefix (default is empty) + * @param bool|string $prefix A given prefix (default is empty) * @return string a generated UUID + * @throws \Exception */ public static function createUUID($prefix = '') { @@ -203,9 +211,10 @@ class System extends BaseObject /** * Generates a GUID with the given parameters * - * @param int $size The size of the GUID (default is 16) - * @param bool|string $prefix A given prefix (default is empty) + * @param int $size The size of the GUID (default is 16) + * @param bool|string $prefix A given prefix (default is empty) * @return string a generated GUID + * @throws \Exception */ public static function createGUID($size = 16, $prefix = '') { diff --git a/src/Core/Theme.php b/src/Core/Theme.php index de8cd496a4..4ceff23232 100644 --- a/src/Core/Theme.php +++ b/src/Core/Theme.php @@ -90,8 +90,9 @@ class Theme * * The screenshot is expected as view/theme/$theme/screenshot.[png|jpg]. * - * @param sring $theme The name of the theme + * @param string $theme The name of the theme * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getScreenshot($theme) { @@ -148,6 +149,7 @@ class Theme * @param string $file Filename * @param string $root Full root path * @return string Path to the file or empty string if the file isn't found + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getPathForFile($file, $root = '') { diff --git a/src/Core/Update.php b/src/Core/Update.php index 7b2624cb9c..368f5f55cc 100644 --- a/src/Core/Update.php +++ b/src/Core/Update.php @@ -15,6 +15,7 @@ class Update * @brief Function to check if the Database structure needs an update. * * @param boolean $via_worker boolean Is the check run via the worker? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function check($via_worker) { @@ -45,11 +46,12 @@ class Update /** * Automatic database updates * - * @param bool $force Force the Update-Check even if the lock is set - * @param bool $verbose Run the Update-Check verbose + * @param bool $force Force the Update-Check even if the lock is set + * @param bool $verbose Run the Update-Check verbose * @param bool $sendMail Sends a Mail to the administrator in case of success/failure * * @return string Empty string if the update is successful, error messages otherwise + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function run($force = false, $verbose = false, $sendMail = true) { @@ -132,10 +134,11 @@ class Update /** * Executes a specific update function * - * @param int $x the DB version number of the function + * @param int $x the DB version number of the function * @param string $prefix the prefix of the function (update, pre_update) * * @return bool true, if the update function worked + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function runUpdateFunction($x, $prefix) { @@ -195,8 +198,9 @@ class Update /** * send the email and do what is needed to do on update fails * - * @param int $update_id number of failed update - * @param string $error_message error message + * @param int $update_id number of failed update + * @param string $error_message error message + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function updateFailed($update_id, $error_message) { //send the administrators an e-mail diff --git a/src/Core/UserImport.php b/src/Core/UserImport.php index 59ab7af4aa..6cefae556f 100644 --- a/src/Core/UserImport.php +++ b/src/Core/UserImport.php @@ -33,7 +33,8 @@ class UserImport * Remove columns from array $arr that aren't in table $table * * @param string $table Table name - * @param array &$arr Column=>Value array from json (by ref) + * @param array &$arr Column=>Value array from json (by ref) + * @throws \Exception */ private static function checkCols($table, &$arr) { @@ -57,7 +58,9 @@ class UserImport * Import data into table $table * * @param string $table Table name - * @param array $arr Column=>Value array from json + * @param array $arr Column=>Value array from json + * @return array|bool + * @throws \Exception */ private static function dbImportAssoc($table, $arr) { @@ -81,8 +84,10 @@ class UserImport /** * @brief Import account file exported from mod/uexport * - * @param App $a Friendica App Class + * @param App $a Friendica App Class * @param array $file array from $_FILES + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function importAccount(App $a, $file) { diff --git a/src/Core/Worker.php b/src/Core/Worker.php index aae3e85d08..00b22c7885 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -31,6 +31,7 @@ class Worker * * @param boolean $run_cron Should the cron processes be executed? * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function processQueue($run_cron = true) { @@ -148,6 +149,7 @@ class Worker * @brief Returns the number of deferred entries in the worker queue * * @return integer Number of deferred entries in the worker queue + * @throws \Exception */ private static function deferredEntries() { @@ -159,6 +161,7 @@ class Worker * @brief Returns the number of non executed entries in the worker queue * * @return integer Number of non executed entries in the worker queue + * @throws \Exception */ private static function totalEntries() { @@ -170,6 +173,7 @@ class Worker * @brief Returns the highest priority in the worker queue that isn't executed * * @return integer Number of active worker processes + * @throws \Exception */ private static function highestPriority() { @@ -188,6 +192,7 @@ class Worker * @param integer $priority The priority that should be checked * * @return integer Is there a process running with that priority? + * @throws \Exception */ private static function processWithPriorityActive($priority) { @@ -202,6 +207,7 @@ class Worker * @param array $queue Workerqueue entry * * @return boolean "true" if further processing should be stopped + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function execute($queue) { @@ -315,6 +321,7 @@ class Worker * @param array $argv Array of values to be passed to the function * @param boolean $method_call boolean * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function execFunction($queue, $funcname, $argv, $method_call) { @@ -481,6 +488,7 @@ class Worker * @brief Checks if the number of database connections has reached a critical limit. * * @return bool Are more than 3/4 of the maximum connections used? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function maxConnectionsReached() { @@ -558,6 +566,7 @@ class Worker /** * @brief fix the queue entry if the worker process died * @return void + * @throws \Exception */ private static function killStaleWorkers() { @@ -622,6 +631,7 @@ class Worker * @brief Checks if the number of active workers exceeds the given limits * * @return bool Are there too much workers running? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function tooMuchWorkers() { @@ -726,6 +736,7 @@ class Worker * @brief Returns the number of active worker processes * * @return integer Number of active worker processes + * @throws \Exception */ private static function activeWorkers() { @@ -740,6 +751,7 @@ class Worker * * @param string $highest_priority Returns the currently highest priority * @return bool We let pass a slower process than $highest_priority + * @throws \Exception */ private static function passingSlow(&$highest_priority) { @@ -792,6 +804,7 @@ class Worker * * @param boolean $passing_slow Returns if we had passed low priority processes * @return boolean Have we found something? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function findWorkerProcesses(&$passing_slow) { @@ -886,6 +899,7 @@ class Worker * * @param boolean $passing_slow Returns if we had passed low priority processes * @return string SQL statement + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function workerProcess(&$passing_slow) { @@ -921,6 +935,7 @@ class Worker /** * @brief Removes a workerqueue entry from the current process * @return void + * @throws \Exception */ public static function unclaimProcess() { @@ -932,6 +947,7 @@ class Worker /** * @brief Call the front end worker * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function callWorker() { @@ -946,6 +962,7 @@ class Worker /** * @brief Call the front end worker if there aren't any active * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function executeIfIdle() { @@ -996,6 +1013,7 @@ class Worker /** * @brief Removes long running worker processes * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function clearProcesses() { @@ -1010,6 +1028,7 @@ class Worker /** * @brief Runs the cron processes * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function runCron() { @@ -1027,7 +1046,9 @@ class Worker /** * @brief Spawns a new worker + * @param bool $do_cron * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function spawnWorker($do_cron = false) { @@ -1052,12 +1073,13 @@ class Worker * or: Worker::add(PRIORITY_HIGH, "Notifier", "drop", $drop_id); * or: Worker::add(array('priority' => PRIORITY_HIGH, 'dont_fork' => true), "CreateShadowEntry", $post_id); * + * @return boolean "false" if proc_run couldn't be executed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @note $cmd and string args are surrounded with "" * * @hooks 'proc_run' - * array $arr + * array $arr * - * @return boolean "false" if proc_run couldn't be executed */ public static function add($cmd) { @@ -1186,6 +1208,7 @@ class Worker * * @brief Remove the active process from the "process" table * @return bool + * @throws \Exception */ public static function endProcess() { @@ -1197,6 +1220,7 @@ class Worker * * @brief Set the flag if some job is waiting * @param boolean $jobs Is there a waiting job? + * @throws \Exception */ public static function IPCSetJobState($jobs) { @@ -1208,6 +1232,7 @@ class Worker * * @brief Checks if some worker job waits to be executed * @return bool + * @throws \Exception */ public static function IPCJobsExists() { diff --git a/src/Database/DBA.php b/src/Database/DBA.php index 6064e587a6..7838a99ef5 100644 --- a/src/Database/DBA.php +++ b/src/Database/DBA.php @@ -195,6 +195,7 @@ class DBA * @brief Returns the selected database name * * @return string + * @throws \Exception */ public static function databaseName() { $ret = self::p("SELECT DATABASE() AS `db`"); @@ -206,6 +207,7 @@ class DBA * @brief Analyze a database query and log this if some conditions are met. * * @param string $query The database query that will be analyzed + * @throws \Exception */ private static function logIndex($query) { $a = \get_app(); @@ -386,6 +388,7 @@ class DBA * * @param string $sql SQL statement * @return bool|object statement object or result object + * @throws \Exception */ public static function p($sql) { $a = \get_app(); @@ -604,6 +607,7 @@ class DBA * * @param string $sql SQL statement * @return boolean Was the query successfull? False is returned only if an error occurred + * @throws \Exception */ public static function e($sql) { $a = \get_app(); @@ -657,10 +661,11 @@ class DBA /** * @brief Check if data exists * - * @param string $table Table name - * @param array $condition array of fields for condition + * @param string $table Table name + * @param array $condition array of fields for condition * * @return boolean Are there rows for that condition? + * @throws \Exception */ public static function exists($table, $condition) { if (empty($table)) { @@ -700,6 +705,7 @@ class DBA * @brief Fetches the first row * @param string $sql SQL statement * @return array first row of query + * @throws \Exception */ public static function fetchFirst($sql) { $params = self::getParam(func_get_args()); @@ -825,11 +831,12 @@ class DBA /** * @brief Insert a row into a table * - * @param string $table Table name - * @param array $param parameter array - * @param bool $on_duplicate_update Do an update on a duplicate entry + * @param string $table Table name + * @param array $param parameter array + * @param bool $on_duplicate_update Do an update on a duplicate entry * * @return boolean was the insert successful? + * @throws \Exception */ public static function insert($table, $param, $on_duplicate_update = false) { @@ -876,6 +883,7 @@ class DBA * @param string $table Table name * * @return boolean was the lock successful? + * @throws \Exception */ public static function lock($table) { // See here: https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html @@ -908,6 +916,7 @@ class DBA * @brief Unlocks all locked tables * * @return boolean was the unlock successful? + * @throws \Exception */ public static function unlock() { // See here: https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html @@ -1037,14 +1046,15 @@ class DBA /** * @brief Delete a row from a table * - * @param string $table Table name - * @param array $conditions Field condition(s) - * @param array $options - * - cascade: If true we delete records in other tables that depend on the one we're deleting through + * @param string $table Table name + * @param array $conditions Field condition(s) + * @param array $options + * - cascade: If true we delete records in other tables that depend on the one we're deleting through * relations (default: true) - * @param array $callstack Internal use: prevent endless loops + * @param array $callstack Internal use: prevent endless loops * * @return boolean was the delete successful? + * @throws \Exception */ public static function delete($table, array $conditions, array $options = [], array &$callstack = []) { @@ -1203,12 +1213,13 @@ class DBA * Only set $old_fields to a boolean value when you are sure that you will update a single row. * When you set $old_fields to "true" then $fields must contain all relevant fields! * - * @param string $table Table name - * @param array $fields contains the fields that are updated - * @param array $condition condition array with the key values + * @param string $table Table name + * @param array $fields contains the fields that are updated + * @param array $condition condition array with the key values * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate) * * @return boolean was the update successfull? + * @throws \Exception */ public static function update($table, $fields, $condition, $old_fields = []) { @@ -1270,7 +1281,8 @@ class DBA * @param array $condition * @param array $params * @return bool|array - * @see self::select + * @throws \Exception + * @see self::select */ public static function selectFirst($table, array $fields = [], array $condition = [], $params = []) { @@ -1307,6 +1319,7 @@ class DBA * $params = array("order" => array("id", "received" => true), "limit" => 10); * * $data = DBA::select($table, $fields, $condition, $params); + * @throws \Exception */ public static function select($table, array $fields = [], array $condition = [], array $params = []) { @@ -1336,8 +1349,8 @@ class DBA /** * @brief Counts the rows from a table satisfying the provided condition * - * @param string $table Table name - * @param array $condition array of fields for condition + * @param string $table Table name + * @param array $condition array of fields for condition * * @return int * @@ -1349,6 +1362,7 @@ class DBA * $condition = ["`uid` = ? AND `network` IN (?, ?)", 1, 'dfrn', 'dspr']; * * $count = DBA::count($table, $condition); + * @throws \Exception */ public static function count($table, array $condition = []) { @@ -1476,6 +1490,7 @@ class DBA * @brief Fills an array with data from a query * * @param object $stmt statement object + * @param bool $do_close * @return array Data array */ public static function toArray($stmt, $do_close = true) { @@ -1557,6 +1572,7 @@ class DBA * @return array * 'list' => List of processes, separated in their different states * 'amount' => Number of concurrent database processes + * @throws \Exception */ public static function processlist() { diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 3043ae1322..39252beadf 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -251,6 +251,7 @@ class DBStructure * @param array $tables An array of the database tables * @param array $definition An array of the definition tables * @return string Empty string if the update is successful, error messages otherwise + * @throws Exception */ public static function update($verbose, $action, $install = false, array $tables = null, array $definition = null) { @@ -715,7 +716,7 @@ class DBStructure * @param int $type The type of renaming (Default is Column) * * @return boolean Was the renaming successful? - * + * @throws Exception */ public static function rename($table, $columns, $type = self::RENAME_COLUMN) { @@ -775,6 +776,7 @@ class DBStructure * @param array $columns Columns to check ( Syntax: [ $col1, $col2, .. ] ) * * @return boolean Does the table exist? + * @throws Exception */ public static function existsColumn($table, $columns = []) { @@ -815,6 +817,7 @@ class DBStructure * @param string $table Table name * * @return boolean Does the table exist? + * @throws Exception */ public static function existsTable($table) { diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index 9329e31cac..a5bdcdeadd 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -43,6 +43,7 @@ class PostUpdate * @brief Updates the "global" field in the item table * * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function update1194() { @@ -113,6 +114,7 @@ class PostUpdate * This field avoids cost intensive calls in the admin panel and in "nodeinfo" * * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function update1206() { @@ -145,6 +147,8 @@ class PostUpdate * @brief update the item related tables * * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function update1279() { @@ -295,6 +299,7 @@ class PostUpdate * @brief update item-uri data. Prerequisite for the next item structure update. * * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function update1281() { diff --git a/src/LegacyModule.php b/src/LegacyModule.php index 5ef2a0ee61..209dc8f3e1 100644 --- a/src/LegacyModule.php +++ b/src/LegacyModule.php @@ -22,6 +22,7 @@ class LegacyModule extends BaseModule * The only method that needs to be called, with the module/addon file name. * * @param string $file_path + * @throws \Exception */ public static function setModuleFile($file_path) { @@ -59,6 +60,7 @@ class LegacyModule extends BaseModule * * @param string $function_suffix * @return string + * @throws \Exception */ private static function runModuleFunction($function_suffix) { diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 71f3cfae47..c606e3107e 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -23,6 +23,7 @@ class APContact extends BaseObject * * @param string $addr profile address (user@domain.tld) * @return string url + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function addrToUrl($addr) { @@ -63,6 +64,8 @@ class APContact extends BaseObject * @param string $url profile url * @param boolean $update true = always update, false = never update, null = update when not found or outdated * @return array profile array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getByURL($url, $update = null) { diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 92c76d3d0a..c74209d6a1 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -25,6 +25,7 @@ class Attach extends BaseObject * @brief Return a list of fields that are associated with the attach table * * @return array field list + * @throws \Exception */ private static function getFields() { @@ -37,13 +38,14 @@ class Attach extends BaseObject /** * @brief Select rows from the attach table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return boolean|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function select(array $fields = [], array $conditions = [], array $params = []) { @@ -58,13 +60,14 @@ class Attach extends BaseObject /** * @brief Retrieve a single record from the attach table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function selectFirst(array $fields = [], array $conditions = [], array $params = []) { @@ -78,9 +81,10 @@ class Attach extends BaseObject /** * @brief Check if attachment with given conditions exists * - * @param array $conditions Array of extra conditions + * @param array $conditions Array of extra conditions * * @return boolean + * @throws \Exception */ public static function exists(array $conditions) { @@ -89,12 +93,13 @@ class Attach extends BaseObject /** * @brief Retrive a single record given the ID - * - * @param int $id Row id of the record - * + * + * @param int $id Row id of the record + * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getById($id) { @@ -102,13 +107,14 @@ class Attach extends BaseObject } /** - * @brief Retrive a single record given the ID - * - * @param int $id Row id of the record - * + * @brief Retrive a single record given the ID + * + * @param int $id Row id of the record + * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getByIdWithPermission($id) { @@ -131,10 +137,11 @@ class Attach extends BaseObject /** * @brief Get file data for given row id. null if row id does not exist - * - * @param array $item Attachment data. Needs at least 'id', 'backend-class', 'backend-ref' - * + * + * @param array $item Attachment data. Needs at least 'id', 'backend-class', 'backend-ref' + * * @return string file data + * @throws \Exception */ public static function getData($item) { @@ -155,7 +162,7 @@ class Attach extends BaseObject /** * @brief Store new file metadata in db and binary in default backend * - * @param string $data Binary data + * @param string $data Binary data * @param integer $uid User ID * @param string $filename Filename * @param string $filetype Mimetype. optional, default = '' @@ -166,6 +173,7 @@ class Attach extends BaseObject * @param string $deny_gid Permissions, denied greoup.optional, default = '' * * @return boolean/integer Row id on success, False on errors + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { @@ -214,7 +222,15 @@ class Attach extends BaseObject /** * @brief Store new file metadata in db and binary in default backend from existing file * + * @param $src + * @param $uid + * @param string $filename + * @param string $allow_cid + * @param string $allow_gid + * @param string $deny_cid + * @param string $deny_gid * @return boolean True on success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function storeFile($src, $uid, $filename = '', $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { @@ -233,12 +249,13 @@ class Attach extends BaseObject * * @param array $fields Contains the fields that are updated * @param array $conditions Condition array with the key values - * @param string $data File data to update. Optional, default null. + * @param Image $img Image data to update. Optional, default null. * @param array|boolean $old_fields Array with the old field values that are about to be replaced (true = update on duplicate) * - * @return boolean Was the update successfull? + * @return boolean Was the update successful? * - * @see \Friendica\Database\DBA::update + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see \Friendica\Database\DBA::update */ public static function update($fields, $conditions, $img = null, array $old_fields = []) { @@ -265,12 +282,13 @@ class Attach extends BaseObject /** * @brief Delete info from table and data from storage * - * @param array $conditions Field condition(s) - * @param array $options Options array, Optional + * @param array $conditions Field condition(s) + * @param array $options Options array, Optional * * @return boolean * - * @see \Friendica\Database\DBA::delete + * @throws \Exception + * @see \Friendica\Database\DBA::delete */ public static function delete(array $conditions, array $options = []) { diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 3c9071b9fe..ea4a006ef9 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -32,7 +32,7 @@ use Friendica\Util\Strings; class Contact extends BaseObject { /** - * @name page/profile types + * Page/profile types * * PAGE_NORMAL is a typical personal profile account * PAGE_SOAPBOX automatically approves all friend requests as Contact::SHARING, (readonly) @@ -81,7 +81,7 @@ class Contact extends BaseObject */ /** - * @name Contact_is + * Contact_is * * Relationship types * @{ @@ -100,6 +100,8 @@ class Contact extends BaseObject * @param int $uid User ID * * @return boolean is the contact id a follower? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function isFollower($cid, $uid) { @@ -118,11 +120,13 @@ class Contact extends BaseObject /** * @brief Get the basepath for a given contact link - * @todo Add functionality to store this value in the contact table + * @todo Add functionality to store this value in the contact table * * @param string $url The contact link * * @return string basepath + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getBasepath($url) { @@ -142,6 +146,8 @@ class Contact extends BaseObject * @param int $uid User ID * * @return array with public and user's contact id + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getPublicAndUserContacID($cid, $uid) { @@ -179,6 +185,7 @@ class Contact extends BaseObject * @param int $cid Either public contact id or user's contact id * @param int $uid User ID * @param boolean $blocked Is the contact blocked or unblocked? + * @throws \Exception */ public static function setBlockedForUser($cid, $uid, $blocked) { @@ -201,6 +208,7 @@ class Contact extends BaseObject * @param int $uid User ID * * @return boolean is the contact id blocked for the given user? + * @throws \Exception */ public static function isBlockedByUser($cid, $uid) { @@ -240,6 +248,7 @@ class Contact extends BaseObject * @param int $cid Either public contact id or user's contact id * @param int $uid User ID * @param boolean $ignored Is the contact ignored or unignored? + * @throws \Exception */ public static function setIgnoredForUser($cid, $uid, $ignored) { @@ -262,6 +271,7 @@ class Contact extends BaseObject * @param int $uid User ID * * @return boolean is the contact id ignored for the given user? + * @throws \Exception */ public static function isIgnoredByUser($cid, $uid) { @@ -301,6 +311,7 @@ class Contact extends BaseObject * @param int $cid Either public contact id or user's contact id * @param int $uid User ID * @param boolean $collapsed are the contact's posts collapsed or uncollapsed? + * @throws \Exception */ public static function setCollapsedForUser($cid, $uid, $collapsed) { @@ -319,6 +330,8 @@ class Contact extends BaseObject * @param int $uid User ID * * @return boolean is the contact id blocked for the given user? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function isCollapsedByUser($cid, $uid) { @@ -344,6 +357,7 @@ class Contact extends BaseObject * * @param int $gid * @return array + * @throws \Exception */ public static function getByGroupId($gid) { @@ -378,6 +392,7 @@ class Contact extends BaseObject * * @param int $gid * @return int + * @throws \Exception */ public static function getOStatusCountByGroupId($gid) { @@ -406,6 +421,7 @@ class Contact extends BaseObject * * @param int $uid * @return bool Operation success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function createSelfFromUserId($uid) { @@ -450,8 +466,9 @@ class Contact extends BaseObject /** * Updates the self-contact for the provided user id * - * @param int $uid + * @param int $uid * @param boolean $update_avatar Force the avatar update + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function updateSelfFromUserID($uid, $update_avatar = false) { @@ -552,6 +569,7 @@ class Contact extends BaseObject * * @param int $id contact id * @return null + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function remove($id) { @@ -575,6 +593,8 @@ class Contact extends BaseObject * @param array $contact Contact unfriended * @param boolean $dissolve Remove the contact on the remote side * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function terminateFriendship(array $user, array $contact, $dissolve = false) { @@ -620,6 +640,7 @@ class Contact extends BaseObject * * @param array $contact contact to mark for archival * @return null + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function markForArchival(array $contact) { @@ -668,10 +689,11 @@ class Contact extends BaseObject /** * @brief Cancels the archival countdown * - * @see Contact::markForArchival() + * @see Contact::markForArchival() * * @param array $contact contact to be unmarked for archival * @return null + * @throws \Exception */ public static function unmarkForArchival(array $contact) { @@ -715,6 +737,7 @@ class Contact extends BaseObject * @param array $default If not data was found take this data as default value * * @return array Contact data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getDetailsByURL($url, $uid = -1, array $default = []) { @@ -857,6 +880,8 @@ class Contact extends BaseObject * @param int $uid User id * * @return array Contact data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getDetailsByAddr($addr, $uid = -1) { @@ -912,6 +937,8 @@ class Contact extends BaseObject * @param array $contact contact * @param int $uid optional, default 0 * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function photoMenu(array $contact, $uid = 0) { @@ -1025,10 +1052,7 @@ class Contact extends BaseObject * Returns either the total number of ungrouped contacts for the given user * id or a paginated list of ungrouped contacts. * - * @param int $uid uid - * @param int $start optional, default 0 - * @param int $count optional, default 0 - * + * @param int $uid uid * @return array */ public static function getUngroupedList($uid) @@ -1073,6 +1097,8 @@ class Contact extends BaseObject * @param boolean $in_loop Internally used variable to prevent an endless loop * * @return integer Contact ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getIdForURL($url, $uid = 0, $no_update = false, $default = [], $in_loop = false) { @@ -1330,6 +1356,7 @@ class Contact extends BaseObject * @param int $cid contact id * * @return boolean Is the contact blocked? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isBlocked($cid) { @@ -1355,6 +1382,7 @@ class Contact extends BaseObject * @param int $cid contact id * * @return boolean Is the contact hidden? + * @throws \Exception */ public static function isHidden($cid) { @@ -1374,7 +1402,10 @@ class Contact extends BaseObject * * @param string $contact_url Contact URL * + * @param bool $thread_mode + * @param int $update * @return string posts in HTML + * @throws \Exception */ public static function getPostsFromUrl($contact_url, $thread_mode = false, $update = 0) { @@ -1489,6 +1520,7 @@ class Contact extends BaseObject * * @param int $uid * @return bool + * @throws \Exception */ public static function block($uid) { @@ -1502,6 +1534,7 @@ class Contact extends BaseObject * * @param int $uid * @return bool + * @throws \Exception */ public static function unblock($uid) { @@ -1519,6 +1552,8 @@ class Contact extends BaseObject * @param bool $force force picture update * * @return array Returns array of the different avatar sizes + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function updateAvatar($avatar, $uid, $cid, $force = false) { @@ -1558,6 +1593,8 @@ class Contact extends BaseObject * @param integer $id contact id * @param string $network Optional network we are probing for * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function updateFromProbe($id, $network = '') { @@ -1633,7 +1670,9 @@ class Contact extends BaseObject * @param string $url * @param bool $interactive * @param string $network - * @return boolean|string + * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createFromProbe($uid, $url, $interactive = false, $network = '') { @@ -1848,10 +1887,11 @@ class Contact extends BaseObject /** * @brief Updated contact's SSL policy * - * @param array $contact Contact array + * @param array $contact Contact array * @param string $new_policy New policy, valid: self,full * * @return array Contact array with updated values + * @throws \Exception */ public static function updateSslPolicy(array $contact, $new_policy) { @@ -2055,6 +2095,7 @@ class Contact extends BaseObject * Remove the unavailable contact ids from the provided list * * @param array $contact_ids Contact id list + * @throws \Exception */ public static function pruneUnavailable(array &$contact_ids) { @@ -2079,12 +2120,14 @@ class Contact extends BaseObject /** * @brief Returns a magic link to authenticate remote visitors * - * @todo check if the return is either a fully qualified URL or a relative path to Friendica basedir + * @todo check if the return is either a fully qualified URL or a relative path to Friendica basedir * * @param string $contact_url The address of the target contact profile - * @param string $url An url that we will be redirected to after the authentication + * @param string $url An url that we will be redirected to after the authentication * * @return string with "redir" link + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function magicLink($contact_url, $url = '') { @@ -2104,9 +2147,11 @@ class Contact extends BaseObject * @brief Returns a magic link to authenticate remote visitors * * @param integer $cid The contact id of the target contact profile - * @param integer $url An url that we will be redirected to after the authentication + * @param string $url An url that we will be redirected to after the authentication * * @return string with "redir" link + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function magicLinkbyId($cid, $url = '') { @@ -2118,10 +2163,12 @@ class Contact extends BaseObject /** * @brief Returns a magic link to authenticate remote visitors * - * @param array $contact The contact array with "uid", "network" and "url" - * @param string $url An url that we will be redirected to after the authentication + * @param array $contact The contact array with "uid", "network" and "url" + * @param string $url An url that we will be redirected to after the authentication * * @return string with "redir" link + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function magicLinkbyContact($contact, $url = '') { diff --git a/src/Model/Conversation.php b/src/Model/Conversation.php index b8e55e5b96..90c70a9be5 100644 --- a/src/Model/Conversation.php +++ b/src/Model/Conversation.php @@ -35,6 +35,7 @@ class Conversation * * @param array $arr Item array with conversation data * @return array Item array with removed conversation data + * @throws \Exception */ public static function insert(array $arr) { diff --git a/src/Model/Event.php b/src/Model/Event.php index 5f0238aad2..e7509c48e1 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -148,6 +148,7 @@ class Event extends BaseObject * @brief Extract bbcode formatted event data from a string. * * @params: string $s The string which should be parsed for event data. + * @param $text * @return array The array with the event information. */ public static function fromBBCode($text) @@ -215,6 +216,7 @@ class Event extends BaseObject * * @param int $event_id Event ID. * @return void + * @throws \Exception */ public static function delete($event_id) { @@ -233,6 +235,7 @@ class Event extends BaseObject * * @param array $arr Array with event data. * @return int The new event id. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function store($arr) { @@ -371,6 +374,7 @@ class Event extends BaseObject * @brief Create an array with translation strings used for events. * * @return array Array with translations strings. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getStrings() { @@ -546,6 +550,8 @@ class Event extends BaseObject * * @param array $event_result Event query array. * @return array Event array for the template. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function prepareListForTemplate(array $event_result) { @@ -629,7 +635,6 @@ class Event extends BaseObject * * @param array $events Query result for events. * @param string $format The output format (ical/csv). - * @param string $timezone The timezone of the user (not implemented yet). * * @return string Content according to selected export format. * @@ -741,6 +746,7 @@ class Event extends BaseObject * @param int $uid The user ID. * * @return array Query results. + * @throws \Exception */ private static function getListByUserId($uid = 0) { @@ -771,14 +777,15 @@ class Event extends BaseObject /** * - * @param int $uid The user ID. + * @param int $uid The user ID. * @param string $format Output format (ical/csv). * @return array With the results: - * bool 'success' => True if the processing was successful,
- * string 'format' => The output format,
- * string 'extension' => The file extension of the output format,
- * string 'content' => The formatted output content.
+ * bool 'success' => True if the processing was successful,
+ * string 'format' => The output format,
+ * string 'extension' => The file extension of the output format,
+ * string 'content' => The formatted output content.
* + * @throws \Exception * @todo Respect authenticated users with events_by_uid(). */ public static function exportListByUserId($uid, $format = 'ical') @@ -831,6 +838,8 @@ class Event extends BaseObject * * @param array $item Array with item and event data. * @return string HTML output. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getItemHTML(array $item) { $same_date = false; @@ -989,6 +998,7 @@ class Event extends BaseObject * @param array $contact Contact array, expects: id, uid, url, name * @param string $birthday Birthday of the contact * @return bool + * @throws \Exception */ public static function createBirthday($contact, $birthday) { diff --git a/src/Model/FileTag.php b/src/Model/FileTag.php index 4ba4e3ca7c..aba819c287 100644 --- a/src/Model/FileTag.php +++ b/src/Model/FileTag.php @@ -134,16 +134,17 @@ class FileTag 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. - */ + /** + * @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. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ public static function updatePconfig($uid, $file_old, $file_new, $type = 'file') { if (!intval($uid)) { @@ -220,15 +221,16 @@ class FileTag 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. - */ + /** + * @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. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ public static function saveFile($uid, $item_id, $file) { if (!intval($uid)) @@ -258,16 +260,17 @@ class FileTag 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. - */ + /** + * @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. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ public static function unsaveFile($uid, $item_id, $file, $cat = false) { if (!intval($uid)) diff --git a/src/Model/GContact.php b/src/Model/GContact.php index 337a938a74..651019e801 100644 --- a/src/Model/GContact.php +++ b/src/Model/GContact.php @@ -31,6 +31,7 @@ class GContact * @param string $mode Search mode (e.g. "community") * * @return array with search results + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function searchByName($search, $mode = '') { @@ -91,6 +92,7 @@ class GContact * @param integer $cid Contact ID * @param integer $zcid Global Contact ID * @return void + * @throws Exception */ public static function link($gcid, $uid = 0, $cid = 0, $zcid = 0) { @@ -105,16 +107,16 @@ class GContact /** * @brief Sanitize the given gcontact data * - * @param array $gcontact array with gcontact data - * @throw Exception - * * Generation: * 0: No definition * 1: Profiles on this server * 2: Contacts of profiles on this server * 3: Contacts of contacts of profiles on this server * 4: ... + * + * @param array $gcontact array with gcontact data * @return array $gcontact + * @throws Exception */ public static function sanitize($gcontact) { @@ -412,6 +414,7 @@ class GContact * @param integer $start optional, default 0 * @param integer $limit optional, default 80 * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function suggestionQuery($uid, $start = 0, $limit = 80) { @@ -515,6 +518,7 @@ class GContact /** * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function updateSuggestions() { @@ -568,6 +572,7 @@ class GContact * @param string $url Contact url * * @return string Contact url with the wanted parts + * @throws Exception */ public static function cleanContactUrl($url) { @@ -599,6 +604,8 @@ class GContact * * @param array $contact contact array (called by reference) * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function fixAlternateContactAddress(&$contact) { @@ -620,6 +627,8 @@ class GContact * @param array $contact contact array * * @return bool|int Returns false if not found, integer if contact was found + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getId($contact) { @@ -715,6 +724,8 @@ class GContact * @param array $contact contact array * * @return bool|int Returns false if not found, integer if contact was found + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function update($contact) { @@ -879,6 +890,8 @@ class GContact * * @param string $url profile link * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function updateFromProbe($url) { @@ -898,7 +911,9 @@ class GContact * @brief Update the gcontact entry for a given user id * * @param int $uid User ID - * @return void + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function updateForUser($uid) { @@ -949,7 +964,9 @@ class GContact * If the "Statistics" addon is enabled (See http://gstools.org/ for details) we query user data with this. * * @param string $server Server address - * @return void + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function fetchGsUsers($server) { @@ -1009,6 +1026,8 @@ class GContact /** * @brief Asking GNU Social server on a regular base for their user data * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function discoverGsUsers() { diff --git a/src/Model/Group.php b/src/Model/Group.php index 8981e2c647..1660126e78 100644 --- a/src/Model/Group.php +++ b/src/Model/Group.php @@ -22,9 +22,10 @@ class Group extends BaseObject * * Note: If we found a deleted group with the same name, we restore it * - * @param int $uid + * @param int $uid * @param string $name * @return boolean + * @throws \Exception */ public static function create($uid, $name) { @@ -56,10 +57,11 @@ class Group extends BaseObject /** * Update group information. * - * @param int $id Group ID + * @param int $id Group ID * @param string $name Group name * * @return bool Was the update successful? + * @throws \Exception */ public static function update($id, $name) { @@ -71,6 +73,7 @@ class Group extends BaseObject * * @param int $cid * @return array + * @throws \Exception */ public static function getIdsByContactId($cid) { @@ -92,9 +95,10 @@ class Group extends BaseObject * Count unread items of each groups of the local user * * @return array - * 'id' => group id - * 'name' => group name - * 'count' => counted unseen group items + * 'id' => group id + * 'name' => group name + * 'count' => counted unseen group items + * @throws \Exception */ public static function countUnseen() { @@ -121,9 +125,10 @@ class Group extends BaseObject * * Returns false if no group has been found. * - * @param int $uid + * @param int $uid * @param string $name * @return int|boolean + * @throws \Exception */ public static function getIdByName($uid, $name) { @@ -144,6 +149,7 @@ class Group extends BaseObject * * @param int $gid * @return boolean + * @throws \Exception */ public static function remove($gid) { if (! $gid) { @@ -188,13 +194,14 @@ class Group extends BaseObject } /** - * @brief Mark a group as deleted based on its name + * @brief Mark a group as deleted based on its name * * @deprecated Use Group::remove instead * - * @param int $uid + * @param int $uid * @param string $name * @return bool + * @throws \Exception */ public static function removeByName($uid, $name) { $return = false; @@ -213,6 +220,7 @@ class Group extends BaseObject * @param int $gid * @param int $cid * @return boolean + * @throws \Exception */ public static function addMember($gid, $cid) { @@ -237,6 +245,7 @@ class Group extends BaseObject * @param int $gid * @param int $cid * @return boolean + * @throws \Exception */ public static function removeMember($gid, $cid) { @@ -250,14 +259,15 @@ class Group extends BaseObject } /** - * @brief Removes a contact from a group based on its name + * @brief Removes a contact from a group based on its name * * @deprecated Use Group::removeMember instead * - * @param int $uid + * @param int $uid * @param string $name - * @param int $cid + * @param int $cid * @return boolean + * @throws \Exception */ public static function removeMemberByName($uid, $name, $cid) { @@ -271,9 +281,10 @@ class Group extends BaseObject /** * @brief Returns the combined list of contact ids from a group id list * - * @param array $group_ids + * @param array $group_ids * @param boolean $check_dead * @return array + * @throws \Exception */ public static function expand($group_ids, $check_dead = false) { @@ -298,10 +309,11 @@ class Group extends BaseObject /** * @brief Returns a templated group selection list * - * @param int $uid - * @param int $gid An optional pre-selected group + * @param int $uid + * @param int $gid An optional pre-selected group * @param string $label An optional label of the list * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function displayGroupSelection($uid, $gid = 0, $label = '') { @@ -342,12 +354,13 @@ class Group extends BaseObject * @param string $every * @param string $each * @param string $editmode - * 'standard' => include link 'Edit groups' - * 'extended' => include link 'Create new group' - * 'full' => include link 'Create new group' and provide for each group a link to edit this group - * @param int $group_id - * @param int $cid + * 'standard' => include link 'Edit groups' + * 'extended' => include link 'Create new group' + * 'full' => include link 'Create new group' and provide for each group a link to edit this group + * @param string $group_id + * @param int $cid * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sidebarWidget($every = 'contact', $each = 'group', $editmode = 'standard', $group_id = '', $cid = 0) { diff --git a/src/Model/Item.php b/src/Model/Item.php index b71db999d0..6c071bfc7f 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -263,6 +263,7 @@ class Item extends BaseObject * @brief Fills an array with data from an item query * * @param object $stmt statement object + * @param bool $do_close * @return array Data array */ public static function inArray($stmt, $do_close = true) { @@ -286,6 +287,7 @@ class Item extends BaseObject * @param array $condition array of fields for condition * * @return boolean Are there rows for that condition? + * @throws \Exception */ public static function exists($condition) { $stmt = self::select(['id'], $condition, ['limit' => 1]); @@ -306,11 +308,12 @@ class Item extends BaseObject * * @brief Retrieve a single record from a table * @param integer $uid User ID - * @param array $fields - * @param array $condition - * @param array $params + * @param array $selected + * @param array $condition + * @param array $params * @return bool|array - * @see DBA::select + * @throws \Exception + * @see DBA::select */ public static function selectFirstForUser($uid, array $selected = [], array $condition = [], $params = []) { @@ -326,12 +329,13 @@ class Item extends BaseObject /** * @brief Select rows from the item table for a given user * - * @param integer $uid User ID - * @param array $selected Array of selected fields, empty for all - * @param array $condition Array of fields for condition - * @param array $params Array of several parameters + * @param integer $uid User ID + * @param array $selected Array of selected fields, empty for all + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters * * @return boolean|object + * @throws \Exception */ public static function selectForUser($uid, array $selected = [], array $condition = [], $params = []) { @@ -348,11 +352,12 @@ class Item extends BaseObject * Retrieve a single record from the item table and returns it in an associative array * * @brief Retrieve a single record from a table - * @param array $fields - * @param array $condition - * @param array $params + * @param array $fields + * @param array $condition + * @param array $params * @return bool|array - * @see DBA::select + * @throws \Exception + * @see DBA::select */ public static function selectFirst(array $fields = [], array $condition = [], $params = []) { @@ -372,11 +377,12 @@ class Item extends BaseObject /** * @brief Select rows from the item table * - * @param array $selected Array of selected fields, empty for all - * @param array $condition Array of fields for condition - * @param array $params Array of several parameters + * @param array $selected Array of selected fields, empty for all + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters * * @return boolean|object + * @throws \Exception */ public static function select(array $selected = [], array $condition = [], $params = []) { @@ -412,12 +418,13 @@ class Item extends BaseObject /** * @brief Select rows from the starting post in the item table * - * @param integer $uid User ID - * @param array $fields Array of selected fields, empty for all - * @param array $condition Array of fields for condition - * @param array $params Array of several parameters + * @param integer $uid User ID + * @param array $selected + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters * * @return boolean|object + * @throws \Exception */ public static function selectThreadForUser($uid, array $selected = [], array $condition = [], $params = []) { @@ -435,11 +442,12 @@ class Item extends BaseObject * * @brief Retrieve a single record from a table * @param integer $uid User ID - * @param array $selected - * @param array $condition - * @param array $params + * @param array $selected + * @param array $condition + * @param array $params * @return bool|array - * @see DBA::select + * @throws \Exception + * @see DBA::select */ public static function selectFirstThreadForUser($uid, array $selected = [], array $condition = [], $params = []) { @@ -456,11 +464,12 @@ class Item extends BaseObject * Retrieve a single record from the starting post in the item table and returns it in an associative array * * @brief Retrieve a single record from a table - * @param array $fields - * @param array $condition - * @param array $params + * @param array $fields + * @param array $condition + * @param array $params * @return bool|array - * @see DBA::select + * @throws \Exception + * @see DBA::select */ public static function selectFirstThread(array $fields = [], array $condition = [], $params = []) { @@ -479,11 +488,12 @@ class Item extends BaseObject /** * @brief Select rows from the starting post in the item table * - * @param array $selected Array of selected fields, empty for all - * @param array $condition Array of fields for condition - * @param array $params Array of several parameters + * @param array $selected Array of selected fields, empty for all + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters * * @return boolean|object + * @throws \Exception */ public static function selectThread(array $selected = [], array $condition = [], $params = []) { @@ -529,6 +539,7 @@ class Item extends BaseObject /** * @brief Returns a list of fields that are associated with the item table * + * @param $usermode * @return array field list */ private static function fieldlist($usermode) @@ -611,10 +622,11 @@ class Item extends BaseObject /** * @brief Returns all needed "JOIN" commands for the "select" functions * - * @param integer $uid User ID - * @param string $sql_commands The parts of the built SQL commands in the "select" functions - * @param boolean $thread_mode Called for the items (false) or for the threads (true) + * @param integer $uid User ID + * @param string $sql_commands The parts of the built SQL commands in the "select" functions + * @param boolean $thread_mode Called for the items (false) or for the threads (true) * + * @param $user_mode * @return string The SQL joins for the "select" functions */ private static function constructJoins($uid, $sql_commands, $thread_mode, $user_mode) @@ -777,7 +789,7 @@ class Item extends BaseObject /** * @brief Update existing item entries * - * @param array $fields The fields that are to be changed + * @param array $fields The fields that are to be changed * @param array $condition The condition for finding the item entries * * In the future we may have to change permissions as well. @@ -786,6 +798,7 @@ class Item extends BaseObject * A return value of "0" doesn't mean an error - but that 0 rows had been changed. * * @return integer|boolean number of affected rows - or "false" if there was an error + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function update(array $fields, array $condition) { @@ -932,8 +945,9 @@ class Item extends BaseObject /** * @brief Delete an item and notify others about it - if it was ours * - * @param array $condition The condition for finding the item entries - * @param integer $priority Priority for the notification + * @param array $condition The condition for finding the item entries + * @param integer $priority Priority for the notification + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function delete($condition, $priority = PRIORITY_HIGH) { @@ -947,8 +961,9 @@ class Item extends BaseObject /** * @brief Delete an item for an user and notify others about it - if it was ours * - * @param array $condition The condition for finding the item entries - * @param integer $uid User who wants to delete this item + * @param array $condition The condition for finding the item entries + * @param integer $uid User who wants to delete this item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function deleteForUser($condition, $uid) { @@ -973,10 +988,11 @@ class Item extends BaseObject /** * @brief Delete an item and notify others about it - if it was ours * - * @param integer $item_id Item ID that should be delete + * @param integer $item_id Item ID that should be delete * @param integer $priority Priority for the notification * * @return boolean success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function deleteById($item_id, $priority = PRIORITY_HIGH) { @@ -1850,6 +1866,7 @@ class Item extends BaseObject * * @param array $item The item fields that are to be inserted * @return bool + * @throws \Exception */ private static function insertActivity(&$item) { @@ -1896,6 +1913,7 @@ class Item extends BaseObject * @brief Insert a new item content entry * * @param array $item The item fields that are to be inserted + * @throws \Exception */ private static function insertContent(&$item) { @@ -1934,8 +1952,10 @@ class Item extends BaseObject /** * @brief Update existing item content entries * - * @param array $item The item fields that are to be changed + * @param array $item The item fields that are to be changed * @param array $condition The condition for finding the item content entries + * @return bool + * @throws \Exception */ private static function updateActivity($item, $condition) { @@ -1960,8 +1980,9 @@ class Item extends BaseObject /** * @brief Update existing item content entries * - * @param array $item The item fields that are to be changed + * @param array $item The item fields that are to be changed * @param array $condition The condition for finding the item content entries + * @throws \Exception */ private static function updateContent($item, $condition) { @@ -1989,6 +2010,7 @@ class Item extends BaseObject * * @param integer $itemid Item ID that should be added * @param string $signed_text Original text (for Diaspora signatures), JSON encoded. + * @throws \Exception */ public static function distribute($itemid, $signed_text = '') { @@ -2085,6 +2107,7 @@ class Item extends BaseObject * @param integer $itemid Item ID that should be added * @param array $item The item entry that will be stored * @param integer $uid The user that will receive the item entry + * @throws \Exception */ private static function storeForUser($itemid, $item, $uid) { @@ -2132,6 +2155,7 @@ class Item extends BaseObject * It is planned that in the future we will store public item entries only once. * * @param integer $itemid Item ID that should be added + * @throws \Exception */ public static function addShadow($itemid) { @@ -2193,6 +2217,7 @@ class Item extends BaseObject * This function does the same like the function above - but for comments * * @param integer $itemid Item ID that should be added + * @throws \Exception */ public static function addShadowPost($itemid) { @@ -2249,9 +2274,12 @@ class Item extends BaseObject } } - /** + /** * Adds a language specification in a "language" element of given $arr. * Expects "body" element to exist in $arr. + * + * @param $item + * @throws \Text_LanguageDetect_Exception */ private static function addLanguageToItemArray(&$item) { @@ -2297,10 +2325,11 @@ class Item extends BaseObject /** * generate an unique URI * - * @param integer $uid User id - * @param string $guid An existing GUID (Otherwise it will be generated) + * @param integer $uid User id + * @param string $guid An existing GUID (Otherwise it will be generated) * * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function newURI($uid, $guid = "") { @@ -2319,6 +2348,7 @@ class Item extends BaseObject * Don't set this value if it isn't from the owner (could be an author that we don't know) * * @param array $arr Contains the just posted item record + * @throws \Exception */ private static function updateContact($arr) { @@ -2439,9 +2469,11 @@ class Item extends BaseObject /** * This function is only used for the old Friendica app on Android that doesn't like paths with guid + * * @param string $guid item guid * @param int $uid user id * @return array with id and nick of the item with the given guid + * @throws \Exception */ public static function getIdAndNickByGuid($guid, $uid = 0) { @@ -2483,9 +2515,12 @@ class Item extends BaseObject /** * look for mention tags and setup a second delivery chain for forum/community posts if appropriate + * * @param int $uid * @param int $item_id - * @return bool true if item was deleted, else false + * @return void true if item was deleted, else false + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function tagDeliver($uid, $item_id) { @@ -2671,6 +2706,8 @@ class Item extends BaseObject * @param array $item * @param int $cid * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function fixPrivatePhotos($s, $uid, $item = null, $cid = 0) { @@ -2928,12 +2965,15 @@ class Item extends BaseObject * * @param string $item_id * @param string $verb - * Activity verb. One of - * like, unlike, dislike, undislike, attendyes, unattendyes, - * attendno, unattendno, attendmaybe, unattendmaybe - * @hook 'post_local_end' - * array $arr - * 'post_id' => ID of posted item + * Activity verb. One of + * like, unlike, dislike, undislike, attendyes, unattendyes, + * attendno, unattendno, attendmaybe, unattendmaybe + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @hook 'post_local_end' + * array $arr + * 'post_id' => ID of posted item */ public static function performLike($item_id, $verb) { @@ -3212,7 +3252,7 @@ class Item extends BaseObject /** * get translated item type * - * @param array $itme + * @param $item * @return string */ public static function postType($item) @@ -3238,6 +3278,7 @@ class Item extends BaseObject * @param array $item * @param bool $update * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Remove reference, simply return "rendered-html" and "rendered-hash" */ public static function putInCache(&$item, $update = false) @@ -3296,10 +3337,12 @@ class Item extends BaseObject * @param boolean $attach * @param boolean $is_preview * @return string item body html - * @hook prepare_body_init item array before any work - * @hook prepare_body_content_filter ('item'=>item array, 'filter_reasons'=>string array) before first bbcode to html - * @hook prepare_body ('item'=>item array, 'html'=>body string, 'is_preview'=>boolean, 'filter_reasons'=>string array) after first bbcode to html - * @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @hook prepare_body_init item array before any work + * @hook prepare_body_content_filter ('item'=>item array, 'filter_reasons'=>string array) before first bbcode to html + * @hook prepare_body ('item'=>item array, 'html'=>body string, 'is_preview'=>boolean, 'filter_reasons'=>string array) after first bbcode to html + * @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author) */ public static function prepareBody(array &$item, $attach = false, $is_preview = false) { @@ -3467,8 +3510,10 @@ class Item extends BaseObject /** * get private link for item + * * @param array $item * @return boolean|array False if item has not plink, otherwise array('href'=>plink url, 'title'=>translated title) + * @throws \Exception */ public static function getPlink($item) { diff --git a/src/Model/ItemContent.php b/src/Model/ItemContent.php index 25ae6b8424..6d03ae3253 100644 --- a/src/Model/ItemContent.php +++ b/src/Model/ItemContent.php @@ -22,9 +22,10 @@ class ItemContent extends BaseObject * @param int $htmlmode This controls the behavior of the BBCode conversion * @param string $target_network Name of the network where the post should go to. * - * @see \Friendica\Content\Text\BBCode::getAttachedData - * * @return array Same array structure than \Friendica\Content\Text\BBCode::getAttachedData + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see \Friendica\Content\Text\BBCode::getAttachedData + * */ public static function getPlaintextPost($item, $limit = 0, $includedlinks = false, $htmlmode = 2, $target_network = '') { diff --git a/src/Model/ItemDeliveryData.php b/src/Model/ItemDeliveryData.php index fa69af8419..8d273e22b9 100644 --- a/src/Model/ItemDeliveryData.php +++ b/src/Model/ItemDeliveryData.php @@ -53,6 +53,7 @@ class ItemDeliveryData * * @param integer $item_id * @return bool + * @throws \Exception */ public static function incrementQueueDone($item_id) { @@ -65,6 +66,7 @@ class ItemDeliveryData * @param integer $item_id * @param array $fields * @return bool + * @throws \Exception */ public static function insert($item_id, array $fields) { @@ -85,6 +87,7 @@ class ItemDeliveryData * @param integer $item_id * @param array $fields * @return bool + * @throws \Exception */ public static function update($item_id, array $fields) { @@ -105,6 +108,7 @@ class ItemDeliveryData * * @param integer $item_id * @return bool + * @throws \Exception */ public static function delete($item_id) { diff --git a/src/Model/ItemURI.php b/src/Model/ItemURI.php index 56e9e1caae..8e39ebd1cb 100644 --- a/src/Model/ItemURI.php +++ b/src/Model/ItemURI.php @@ -17,6 +17,7 @@ class ItemURI extends BaseObject * @param array $fields Item-uri fields * * @return integer item-uri id + * @throws \Exception */ public static function insert($fields) { @@ -43,6 +44,7 @@ class ItemURI extends BaseObject * @param string $uri * * @return integer item-uri id + * @throws \Exception */ public static function getIdByURI($uri) { diff --git a/src/Model/Mail.php b/src/Model/Mail.php index b47d4ac8e3..b5841d1785 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -26,6 +26,8 @@ class Mail * @param string $body message body, default empty * @param string $subject message subject, default empty * @param string $replyto reply to + * @return int + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function send($recipient = 0, $body = '', $subject = '', $replyto = '') { @@ -160,6 +162,9 @@ class Mail * @param string $body message body, default empty * @param string $subject message subject, default empty * @param string $replyto reply to, default empty + * @return int + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendWall($recipient = '', $body = '', $subject = '', $replyto = '') { diff --git a/src/Model/OpenWebAuthToken.php b/src/Model/OpenWebAuthToken.php index 7c14cd3046..7b30d2eb05 100644 --- a/src/Model/OpenWebAuthToken.php +++ b/src/Model/OpenWebAuthToken.php @@ -16,12 +16,13 @@ class OpenWebAuthToken /** * Create an entry in the 'openwebauth-token' table. * - * @param string $type Verify type. - * @param int $uid The user ID. + * @param string $type Verify type. + * @param int $uid The user ID. * @param string $token * @param string $meta * * @return boolean + * @throws \Exception */ public static function create($type, $uid, $token, $meta) { @@ -38,11 +39,12 @@ class OpenWebAuthToken /** * Get the "meta" field of an entry in the openwebauth-token table. * - * @param string $type Verify type. - * @param int $uid The user ID. + * @param string $type Verify type. + * @param int $uid The user ID. * @param string $token * * @return string|boolean The meta enry or false if not found. + * @throws \Exception */ public static function getMeta($type, $uid, $token) { @@ -62,6 +64,7 @@ class OpenWebAuthToken * * @param string $type Verify type. * @param string $interval SQL compatible time interval + * @throws \Exception */ public static function purge($type, $interval) { diff --git a/src/Model/PermissionSet.php b/src/Model/PermissionSet.php index ab6c46afb2..3148d4da03 100644 --- a/src/Model/PermissionSet.php +++ b/src/Model/PermissionSet.php @@ -16,7 +16,8 @@ class PermissionSet extends BaseObject * Fetch the id of a given permission set. Generate a new one when needed * * @param array $postarray The array from an item, picture or event post - * @return id + * @return int id + * @throws \Exception */ public static function fetchIDForPost(&$postarray) { @@ -69,6 +70,7 @@ class PermissionSet extends BaseObject * @param array $groups Possibly previously fetched group ids for that contact * * @return array of permission set ids. + * @throws \Exception */ static public function get($uid, $contact_id, $groups = null) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index a1e2e378be..f22e6b86c7 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -29,13 +29,14 @@ class Photo extends BaseObject /** * @brief Select rows from the photo table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return boolean|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function select(array $fields = [], array $conditions = [], array $params = []) { @@ -50,13 +51,14 @@ class Photo extends BaseObject /** * @brief Retrieve a single record from the photo table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function selectFirst(array $fields = [], array $conditions = [], array $params = []) { @@ -70,14 +72,15 @@ class Photo extends BaseObject /** * @brief Get photos for user id * - * @param integer $uid User id - * @param string $resourceid Rescource ID of the photo - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param integer $uid User id + * @param string $resourceid Rescource ID of the photo + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getPhotosForUser($uid, $resourceid, array $conditions = [], array $params = []) { @@ -90,15 +93,16 @@ class Photo extends BaseObject /** * @brief Get a photo for user id * - * @param integer $uid User id - * @param string $resourceid Rescource ID of the photo - * @param integer $scale Scale of the photo. Defaults to 0 - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param integer $uid User id + * @param string $resourceid Rescource ID of the photo + * @param integer $scale Scale of the photo. Defaults to 0 + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getPhotoForUser($uid, $resourceid, $scale = 0, array $conditions = [], array $params = []) { @@ -116,10 +120,11 @@ class Photo extends BaseObject * on success, "no sign" image info, if user has no permission, * false if photo does not exists * - * @param string $resourceid Rescource ID of the photo - * @param integer $scale Scale of the photo. Defaults to 0 + * @param string $resourceid Rescource ID of the photo + * @param integer $scale Scale of the photo. Defaults to 0 * * @return boolean|array + * @throws \Exception */ public static function getPhoto($resourceid, $scale = 0) { @@ -145,9 +150,10 @@ class Photo extends BaseObject /** * @brief Check if photo with given conditions exists * - * @param array $conditions Array of extra conditions + * @param array $conditions Array of extra conditions * * @return boolean + * @throws \Exception */ public static function exists(array $conditions) { @@ -158,9 +164,11 @@ class Photo extends BaseObject /** * @brief Get Image object for given row id. null if row id does not exist * - * @param array $photo Photo data. Needs at least 'id', 'type', 'backend-class', 'backend-ref' + * @param array $photo Photo data. Needs at least 'id', 'type', 'backend-class', 'backend-ref' * * @return \Friendica\Object\Image + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getImageForPhoto(array $photo) { @@ -188,6 +196,7 @@ class Photo extends BaseObject * @brief Return a list of fields that are associated with the photo table * * @return array field list + * @throws \Exception */ private static function getFields() { @@ -200,10 +209,11 @@ class Photo extends BaseObject /** * @brief Construct a photo array for a system resource image * - * @param string $filename Image file name relative to code root - * @param string $mimetype Image mime type. Defaults to "image/jpeg" + * @param string $filename Image file name relative to code root + * @param string $mimetype Image mime type. Defaults to "image/jpeg" * * @return array + * @throws \Exception */ public static function createPhotoForSystemResource($filename, $mimetype = "image/jpeg") { @@ -236,6 +246,7 @@ class Photo extends BaseObject * @param string $desc Photo caption. optional, default = "" * * @return boolean True on success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function store(Image $Image, $uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = "", $allow_gid = "", $deny_cid = "", $deny_gid = "", $desc = "") { @@ -310,12 +321,13 @@ class Photo extends BaseObject /** * @brief Delete info from table and data from storage * - * @param array $conditions Field condition(s) - * @param array $options Options array, Optional + * @param array $conditions Field condition(s) + * @param array $options Options array, Optional * * @return boolean * - * @see \Friendica\Database\DBA::delete + * @throws \Exception + * @see \Friendica\Database\DBA::delete */ public static function delete(array $conditions, array $options = []) { @@ -342,7 +354,8 @@ class Photo extends BaseObject * * @return boolean Was the update successfull? * - * @see \Friendica\Database\DBA::update + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see \Friendica\Database\DBA::update */ public static function update($fields, $conditions, Image $img = null, array $old_fields = []) { @@ -372,6 +385,8 @@ class Photo extends BaseObject * @param integer $cid contact id * @param boolean $quit_on_error optional, default false * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function importProfilePhoto($image_url, $uid, $cid, $quit_on_error = false) { @@ -508,6 +523,7 @@ class Photo extends BaseObject * @param bool $update Update the cache * * @return array Returns array of the photo albums + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getAlbums($uid, $update = false) { @@ -545,6 +561,7 @@ class Photo extends BaseObject /** * @param int $uid User id of the photos * @return void + * @throws \Exception */ public static function clearAlbumCache($uid) { @@ -556,6 +573,7 @@ class Photo extends BaseObject * Generate a unique photo ID. * * @return string + * @throws \Exception */ public static function newResource() { diff --git a/src/Model/Process.php b/src/Model/Process.php index 4d50ecd4eb..f70b12ba7c 100644 --- a/src/Model/Process.php +++ b/src/Model/Process.php @@ -19,6 +19,7 @@ class Process extends BaseObject * @param string $command * @param string $pid * @return bool + * @throws \Exception */ public static function insert($command, $pid = null) { @@ -44,6 +45,7 @@ class Process extends BaseObject * * @param string $pid * @return bool + * @throws \Exception */ public static function deleteByPid($pid = null) { diff --git a/src/Model/Profile.php b/src/Model/Profile.php index f78f422359..1dedab0ede 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -36,6 +36,7 @@ class Profile * @param integer User ID * * @return array Profile data + * @throws \Exception */ public static function getByUID($uid) { @@ -102,6 +103,8 @@ class Profile * @param int $profile int * @param array $profiledata array * @param boolean $show_connect Show connect link + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function load(App $a, $nickname, $profile = 0, array $profiledata = [], $show_connect = true) { @@ -206,10 +209,11 @@ class Profile * Includes all available profile data * * @brief Get all profile data of a local user - * @param string $nickname nick - * @param int $uid uid - * @param int $profile_id ID of the profile + * @param string $nickname nick + * @param int $uid uid + * @param int $profile_id ID of the profile * @return array + * @throws \Exception */ public static function getByNickname($nickname, $uid = 0, $profile_id = 0) { @@ -265,13 +269,15 @@ class Profile * because of all the conditional logic. * * @brief Formats a profile for display in the sidebar. - * @param array $profile - * @param int $block + * @param array $profile + * @param int $block * @param boolean $show_connect Show connect link * * @return string HTML sidebar module * - * @note Returns empty string if passed $profile is wrong type or not populated + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @note Returns empty string if passed $profile is wrong type or not populated * * @hooks 'profile_sidebar_enter' * array $profile - profile data @@ -1022,6 +1028,8 @@ class Profile * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/channel.php * * @param App $a Application instance. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function zrlInit(App $a) { @@ -1091,6 +1099,8 @@ class Profile * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/zid.php * * @param string $token + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function openWebAuthInit($token) { @@ -1184,6 +1194,7 @@ class Profile * @brief Get the user ID of the page owner * @return int user ID * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @note Returns local_user instead of user ID if "always_my_theme" is set to true */ public static function getThemeUid(App $a) @@ -1208,11 +1219,12 @@ class Profile } /** - * Stip query parameter from a string. - * - * @param string $s The input string. - * @return string The query parameter. - */ + * Strip query parameter from a string. + * + * @param string $s The input string. + * @param $param + * @return string The query parameter. + */ public static function stripQueryParam($s, $param) { return preg_replace('/[\?&]' . $param . '=(.*?)(&|$)/ism', '$2', $s); diff --git a/src/Model/PushSubscriber.php b/src/Model/PushSubscriber.php index fb34bb55f4..92d1dd21d1 100644 --- a/src/Model/PushSubscriber.php +++ b/src/Model/PushSubscriber.php @@ -14,8 +14,9 @@ class PushSubscriber /** * @brief Send subscription notifications for the given user * - * @param integer $uid User ID - * @param string $priority Priority for push workers + * @param integer $uid User ID + * @param int $default_priority + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function publishFeed($uid, $default_priority = PRIORITY_HIGH) { @@ -28,7 +29,8 @@ class PushSubscriber /** * @brief start workers to transmit the feed data * - * @param string $priority Priority for push workers + * @param int $default_priority + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function requeue($default_priority = PRIORITY_HIGH) { @@ -60,6 +62,7 @@ class PushSubscriber * @param string $hub_callback Callback address * @param string $hub_topic Feed topic * @param string $hub_secret Subscription secret + * @throws \Exception */ public static function renew($uid, $nick, $subscribe, $hub_callback, $hub_topic, $hub_secret) { @@ -98,6 +101,7 @@ class PushSubscriber * @brief Delay the push subscriber * * @param integer $id Subscriber ID + * @throws \Exception */ public static function delay($id) { @@ -135,7 +139,8 @@ class PushSubscriber * @brief Reset the push subscriber * * @param integer $id Subscriber ID - * @param date $last_update Date of last transmitted item + * @param string $last_update Date of last transmitted item + * @throws \Exception */ public static function reset($id, $last_update) { diff --git a/src/Model/Queue.php b/src/Model/Queue.php index b2c002574c..ecbc0ed3b6 100644 --- a/src/Model/Queue.php +++ b/src/Model/Queue.php @@ -13,6 +13,7 @@ class Queue { /** * @param string $id id + * @throws \Exception */ public static function updateTime($id) { @@ -37,6 +38,7 @@ class Queue /** * @param string $id id + * @throws \Exception */ public static function removeItem($id) { @@ -78,6 +80,8 @@ class Queue * @param string $network network * @param string $msg message * @param boolean $batch batch, default false + * @param string $guid + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function add($cid, $network, $msg, $batch = false, $guid = '') { diff --git a/src/Model/Register.php b/src/Model/Register.php index 66f19133b8..c2dd96def5 100644 --- a/src/Model/Register.php +++ b/src/Model/Register.php @@ -20,6 +20,7 @@ class Register * Return the list of pending registrations * * @return array + * @throws \Exception */ public static function getPending() { @@ -37,6 +38,7 @@ class Register * Returns the pending registration count * * @return int + * @throws \Exception */ public static function getPendingCount() { @@ -54,6 +56,7 @@ class Register * * @param string $hash * @return array + * @throws \Exception */ public static function getByHash($hash) { @@ -63,8 +66,9 @@ class Register /** * Returns true if a register record exists with the provided hash * - * @param string $hash + * @param string $hash * @return boolean + * @throws \Exception */ public static function existsByHash($hash) { @@ -75,6 +79,7 @@ class Register * Creates a register record for an invitation and returns the auto-generated code for it * * @return string + * @throws \Exception */ public static function createForInvitation() { @@ -98,6 +103,7 @@ class Register * @param string $language The registration language * @param string $note An additional message from the user * @return boolean + * @throws \Exception */ public static function createForApproval($uid, $language, $note = '') { @@ -122,8 +128,9 @@ class Register /** * Deletes a register record by the provided hash and returns the success of the database deletion * - * @param string $hash + * @param string $hash * @return boolean + * @throws \Exception */ public static function deleteByHash($hash) { diff --git a/src/Model/Storage/Filesystem.php b/src/Model/Storage/Filesystem.php index 2f375491b2..b5bc883b4b 100644 --- a/src/Model/Storage/Filesystem.php +++ b/src/Model/Storage/Filesystem.php @@ -49,7 +49,8 @@ class Filesystem implements IStorage /** * @brief Create dirctory tree to store file, with .htaccess and index.html files - * @param string $file Path and filename + * @param string $file Path and filename + * @throws StorageException */ private static function createFoldersForFile($file) { diff --git a/src/Model/Term.php b/src/Model/Term.php index 7f494fc4af..28c28fb1a9 100644 --- a/src/Model/Term.php +++ b/src/Model/Term.php @@ -192,7 +192,9 @@ class Term /** * @param integer $itemid item id + * @param $files * @return void + * @throws \Exception */ public static function insertFromFileFieldByItemId($itemid, $files) { @@ -241,6 +243,8 @@ class Term * * @param array $item * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function populateTagsFromItem(&$item) { @@ -291,8 +295,10 @@ class Term /** * Delete all tags from an item + * * @param int itemid - choose from which item the tags will be removed - * @param array type - items type. default is [TERM_HASHTAG, TERM_MENTION] + * @param array $type + * @throws \Exception */ public static function deleteByItemId($itemid, $type = [TERM_HASHTAG, TERM_MENTION]) { diff --git a/src/Model/User.php b/src/Model/User.php index 602ba9b33f..23ba7e64d8 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -34,6 +34,7 @@ class User * * @param integer $uid * @return boolean + * @throws Exception */ public static function exists($uid) { @@ -43,6 +44,7 @@ class User /** * @param integer $uid * @return array|boolean User record if it exists, false otherwise + * @throws Exception */ public static function getById($uid) { @@ -55,6 +57,7 @@ class User * @param string $url * * @return integer user id + * @throws Exception */ public static function getIdForURL($url) { @@ -71,6 +74,7 @@ class User * * @param int $uid * @return boolean|array + * @throws Exception */ public static function getOwnerDataById($uid) { $r = DBA::fetchFirst("SELECT @@ -115,6 +119,7 @@ class User * * @param int $nick * @return boolean|array + * @throws Exception */ public static function getOwnerDataByNick($nick) { @@ -134,6 +139,7 @@ class User * @param string $network network name * * @return int group id + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getDefaultGroup($uid, $network = '') { @@ -364,6 +370,7 @@ class User * @param int $uid * @param string $pasword_hashed * @return bool + * @throws Exception */ private static function updatePasswordHashed($uid, $pasword_hashed) { @@ -385,6 +392,7 @@ class User * * @param string $nickname The nickname that should be checked * @return boolean True is the nickname is blocked on the node + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isNicknameBlocked($nickname) { @@ -422,6 +430,7 @@ class User * @return array * @throws \ErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException * @throws Exception */ public static function create(array $data) @@ -807,7 +816,8 @@ class User /** * @param object $uid user to remove - * @return void + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function remove($uid) { @@ -848,18 +858,19 @@ class User * @return array All identities for this user * * Example for a return: - * [ - * [ - * 'uid' => 1, - * 'username' => 'maxmuster', - * 'nickname' => 'Max Mustermann' - * ], - * [ - * 'uid' => 2, - * 'username' => 'johndoe', - * 'nickname' => 'John Doe' - * ] - * ] + * [ + * [ + * 'uid' => 1, + * 'username' => 'maxmuster', + * 'nickname' => 'Max Mustermann' + * ], + * [ + * 'uid' => 2, + * 'username' => 'johndoe', + * 'nickname' => 'John Doe' + * ] + * ] + * @throws Exception */ public static function identities($uid) { diff --git a/src/Module/Contact.php b/src/Module/Contact.php index fa231b1de1..04cc923057 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -841,12 +841,12 @@ class Contact extends BaseModule * * Available Pages are 'Status', 'Profile', 'Contacts' and 'Common Friends' * - * @param App $a - * @param array $contact The contact array - * @param int $active_tab 1 if tab should be marked as active + * @param App $a + * @param array $contact The contact array + * @param int $active_tab 1 if tab should be marked as active * - * @return string | HTML string of the contact page tabs buttons. - + * @return string HTML string of the contact page tabs buttons. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getTabsHTML($a, $contact, $active_tab) { diff --git a/src/Module/Install.php b/src/Module/Install.php index 2e0f16c4e9..ab49e426c5 100644 --- a/src/Module/Install.php +++ b/src/Module/Install.php @@ -254,6 +254,7 @@ class Install extends BaseModule * @param App $a The global App * * @return string The text for the next steps + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function whatNext($a) { diff --git a/src/Module/Login.php b/src/Module/Login.php index 7a0e8e40e2..06af508e9b 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -79,6 +79,7 @@ class Login extends BaseModule * * @param string $openid_url OpenID URL string * @param bool $remember Whether to set the session remember flag + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function openIdAuthentication($openid_url, $remember) { @@ -112,6 +113,7 @@ class Login extends BaseModule * @param string $username User name * @param string $password Clear password * @param bool $remember Whether to set the session remember flag + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function passwordAuthentication($username, $password, $remember) { @@ -269,14 +271,15 @@ class Login extends BaseModule /** * @brief Wrapper for adding a login box. * - * @param string $return_path The path relative to the base the user should be sent - * back to after login completes - * @param bool $register If $register == true provide a registration link. - * This will most always depend on the value of config.register_policy. - * @param array $hiddens optional + * @param string $return_path The path relative to the base the user should be sent + * back to after login completes + * @param bool $register If $register == true provide a registration link. + * This will most always depend on the value of config.register_policy. + * @param array $hiddens optional * * @return string Returns the complete html for inserting into the page * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @hooks 'login_hook' string $o */ public static function form($return_path = null, $register = false, $hiddens = []) diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 4387cc7ec2..3df90c5356 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -32,7 +32,6 @@ class Proxy extends BaseModule * * Sets application instance and checks if /proxy/ path is writable. * - * @param \Friendica\App $app Application instance */ public static function init() { @@ -157,6 +156,7 @@ class Proxy extends BaseModule * 'size' => requested image size (int) * 'sizetype' => requested image size (string): ':micro', ':thumb', ':small', ':medium', ':large' * ] + * @throws \Exception */ private static function getRequestInfo() { @@ -224,12 +224,13 @@ class Proxy extends BaseModule 'sizetype' => $sizetype, ]; } - - + + /** * @brief setup ./proxy folder for direct cache * * @return bool False if direct cache can't be used. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function setupDirectCache() { @@ -248,16 +249,18 @@ class Proxy extends BaseModule return $direct_cache; } - - + + /** * @brief Try to reply with image in cachefile * - * @param array $request Array from getRequestInfo + * @param array $request Array from getRequestInfo * * @return string Cache file name, empty string if cache is not enabled. - * + * * If cachefile exists, script ends here and this function will never returns + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function responseFromCache(&$request) { @@ -269,13 +272,15 @@ class Proxy extends BaseModule } return $cachefile; } - + /** * @brief Try to reply with image in database * - * @param array $request Array from getRequestInfo + * @param array $request Array from getRequestInfo * * If the image exists in database, then script ends here and this function will never returns + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function responseFromDB(&$request) { @@ -297,11 +302,12 @@ class Proxy extends BaseModule echo file_get_contents('images/blank.png'); exit(); } - + /** * @brief Output the image with cache headers * - * @param Image $image + * @param Image $img + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function responseImageHttpCache(Image $img) { diff --git a/src/Module/Tos.php b/src/Module/Tos.php index 170371ad46..6dca554b25 100644 --- a/src/Module/Tos.php +++ b/src/Module/Tos.php @@ -53,6 +53,7 @@ class Tos extends BaseModule self::getApp()->internalRedirect('profile/' . Config::get('system','singleuser')); } } + /** * @brief generate the content of the /tos page * @@ -63,7 +64,8 @@ class Tos extends BaseModule * This privacy statement has fixed text, so it can be translated easily. * * @return string - **/ + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ public static function content() { $tpl = Renderer::getMarkupTemplate('tos.tpl'); if (Config::get('system', 'tosdisplay')) { diff --git a/src/Network/CurlResult.php b/src/Network/CurlResult.php index 1aafbfa9b8..1a475c7cec 100644 --- a/src/Network/CurlResult.php +++ b/src/Network/CurlResult.php @@ -77,6 +77,7 @@ class CurlResult * @param string $url optional URL * * @return CurlResult a CURL with error response + * @throws InternalServerErrorException */ public static function createErrorCurl($url = '') { diff --git a/src/Network/FKOAuth1.php b/src/Network/FKOAuth1.php index 1e84ff052b..33fdf0ac22 100644 --- a/src/Network/FKOAuth1.php +++ b/src/Network/FKOAuth1.php @@ -32,6 +32,7 @@ class FKOAuth1 extends OAuthServer /** * @param string $uid user id * @return void + * @throws HTTPException\InternalServerErrorException */ public function loginUser($uid) { diff --git a/src/Network/FKOAuthDataStore.php b/src/Network/FKOAuthDataStore.php index 276ba2fcbe..d1f43172b6 100644 --- a/src/Network/FKOAuthDataStore.php +++ b/src/Network/FKOAuthDataStore.php @@ -35,6 +35,7 @@ class FKOAuthDataStore extends OAuthDataStore /** * @param string $consumer_key key * @return mixed + * @throws \Exception */ public function lookup_consumer($consumer_key) { @@ -55,6 +56,7 @@ class FKOAuthDataStore extends OAuthDataStore * @param string $token_type type * @param string $token token * @return mixed + * @throws \Exception */ public function lookup_token($consumer, $token_type, $token) { @@ -80,6 +82,7 @@ class FKOAuthDataStore extends OAuthDataStore * @param string $nonce nonce * @param string $timestamp timestamp * @return mixed + * @throws \Exception */ public function lookup_nonce($consumer, $token, $nonce, $timestamp) { @@ -95,6 +98,7 @@ class FKOAuthDataStore extends OAuthDataStore * @param string $consumer consumer * @param string $callback optional, default null * @return mixed + * @throws \Exception */ public function new_request_token($consumer, $callback = null) { @@ -130,6 +134,7 @@ class FKOAuthDataStore extends OAuthDataStore * @param string $consumer consumer * @param string $verifier optional, defult null * @return object + * @throws HTTPException\InternalServerErrorException */ public function new_access_token($token, $consumer, $verifier = null) { diff --git a/src/Network/Probe.php b/src/Network/Probe.php index d322c3ed27..49822c725a 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -97,6 +97,7 @@ class Probe * @param string $host The host part of an url * * @return array with template and type of the webfinger template for JSON or XML + * @throws HTTPException\InternalServerErrorException */ private static function hostMeta($host) { @@ -188,6 +189,7 @@ class Probe * @param string $hcard_url Link to the hcard - is returned by reference * * @return string profile link + * @throws HTTPException\InternalServerErrorException */ public static function webfingerDfrn($webbie, &$hcard_url) { @@ -221,6 +223,7 @@ class Probe * @param string $uri Address that should be probed * * @return array uri data + * @throws HTTPException\InternalServerErrorException */ public static function lrdd($uri) { @@ -315,6 +318,8 @@ class Probe * @param boolean $cache Use cached values? * * @return array uri data + * @throws HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function uri($uri, $network = '', $uid = -1, $cache = true) { @@ -527,6 +532,7 @@ class Probe * @param string $type type * * @return array fixed webfinger data + * @throws HTTPException\InternalServerErrorException */ private static function fixOStatus($webfinger, $lrdd, $type) { @@ -572,6 +578,7 @@ class Probe * @param integer $uid User ID for the probe (only used for mails) * * @return array uri data + * @throws HTTPException\InternalServerErrorException */ private static function detect($uri, $network, $uid) { @@ -740,6 +747,7 @@ class Probe * @param string $type type * * @return array webfinger data + * @throws HTTPException\InternalServerErrorException */ private static function webfinger($url, $type) { @@ -810,6 +818,7 @@ class Probe * @param array $data The already fetched data * * @return array noscrape data + * @throws HTTPException\InternalServerErrorException */ private static function pollNoscrape($noscrape_url, $data) { @@ -926,6 +935,8 @@ class Probe * @param string $profile_link Link to the profile page * * @return array profile data + * @throws HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function profile($profile_link) { @@ -976,6 +987,7 @@ class Probe * @param array $webfinger Webfinger data * * @return array DFRN data + * @throws HTTPException\InternalServerErrorException */ private static function dfrn($webfinger) { @@ -1057,6 +1069,7 @@ class Probe * @param boolean $dfrn Poll DFRN specific data * * @return array hcard data + * @throws HTTPException\InternalServerErrorException */ private static function pollHcard($hcard_url, $data, $dfrn = false) { @@ -1181,6 +1194,7 @@ class Probe * @param array $webfinger Webfinger data * * @return array Diaspora data + * @throws HTTPException\InternalServerErrorException */ private static function diaspora($webfinger) { @@ -1268,6 +1282,7 @@ class Probe * @param bool $short Short detection mode * * @return array|bool OStatus data or "false" on error or "true" on short mode + * @throws HTTPException\InternalServerErrorException */ private static function ostatus($webfinger, $short = false) { @@ -1450,6 +1465,7 @@ class Probe * * @param array $webfinger Webfinger data * + * @param $addr * @return array pump.io data */ private static function pumpio($webfinger, $addr) @@ -1552,6 +1568,7 @@ class Probe * @param boolean $probe Do a probe if the page contains a feed link * * @return array feed data + * @throws HTTPException\InternalServerErrorException */ private static function feed($url, $probe = true) { @@ -1614,6 +1631,7 @@ class Probe * @param integer $uid User ID * * @return array mail data + * @throws \Exception */ private static function mail($uri, $uid) { @@ -1701,6 +1719,7 @@ class Probe * @param string $base Another path that is hopefully complete * * @return string fixed avatar path + * @throws \Exception */ public static function fixAvatar($avatar, $base) { diff --git a/src/Object/Image.php b/src/Object/Image.php index 298a449b3d..c6381bea85 100644 --- a/src/Object/Image.php +++ b/src/Object/Image.php @@ -65,7 +65,8 @@ class Image * @brief Constructor * @param object $data data * @param boolean $type optional, default null - * @return object + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public function __construct($data, $type = null) { @@ -128,6 +129,8 @@ class Image /** * @param object $data data * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private function loadData($data) { @@ -643,6 +646,7 @@ class Image /** * @param string $path file path * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function saveToFilePath($path) { @@ -667,6 +671,7 @@ class Image * $data = (string) $Image; * * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function __toString() { return $this->asString(); @@ -674,6 +679,7 @@ class Image /** * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function asString() { @@ -721,9 +727,10 @@ class Image * * @param string $filename Image filename * @param boolean $fromcurl Check Content-Type header from curl request - * @param string $header passed headers to take into account + * @param string $header passed headers to take into account * * @return object + * @throws \ImagickException */ public static function guessType($filename, $fromcurl = false, $header = '') { @@ -772,6 +779,7 @@ class Image /** * @param string $url url * @return object + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getInfoFromURL($url) { @@ -876,11 +884,13 @@ class Image /** * @brief This function is used by the fromgplus addon - * @param object $a App + * @param App $a App * @param integer $uid user id * @param string $imagedata optional, default empty * @param string $url optional, default empty * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function storePhoto(App $a, $uid, $imagedata = "", $url = "") { diff --git a/src/Object/Post.php b/src/Object/Post.php index a1d6c1eab0..5e1056aa93 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -61,6 +61,7 @@ class Post extends BaseObject * Constructor * * @param array $data data array + * @throws \Exception */ public function __construct(array $data) { @@ -116,6 +117,8 @@ class Post extends BaseObject * * @return mixed The data requested on success * false on failure + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public function getTemplateData(array $conv_responses, $thread_level = 1) { @@ -501,6 +504,7 @@ class Post extends BaseObject * @param Post $item The child item to add * * @return mixed + * @throws \Exception */ public function addChild(Post $item) { @@ -590,6 +594,7 @@ class Post extends BaseObject * @param Post $item The child to be removed * * @return boolean Success or failure + * @throws \Exception */ public function removeChild(Post $item) { @@ -679,6 +684,7 @@ class Post extends BaseObject * * @param string $name template name * @return bool + * @throws \Exception */ private function setTemplate($name) { @@ -770,6 +776,7 @@ class Post extends BaseObject * * @return mixed The comment box string (empty if no comment box) * false on failure + * @throws \Exception */ private function getCommentBox($indent) { @@ -849,6 +856,7 @@ class Post extends BaseObject * Check if we are a wall to wall item and set the relevant properties * * @return void + * @throws \Exception */ protected function checkWallToWall() { diff --git a/src/Object/Thread.php b/src/Object/Thread.php index 0068fa2fb9..426e9f802c 100644 --- a/src/Object/Thread.php +++ b/src/Object/Thread.php @@ -26,9 +26,10 @@ class Thread extends BaseObject /** * Constructor * - * @param string $mode The mode - * @param boolean $preview Are we in the preview mode? + * @param string $mode The mode + * @param boolean $preview Are we in the preview mode? * @param boolean $writable Override the writable check + * @throws \Exception */ public function __construct($mode, $preview, $writable = false) { @@ -39,10 +40,11 @@ class Thread extends BaseObject /** * Set the mode we'll be displayed on * - * @param string $mode The mode to set + * @param string $mode The mode to set * @param boolean $writable Override the writable check * * @return void + * @throws \Exception */ private function setMode($mode, $writable) { @@ -125,10 +127,11 @@ class Thread extends BaseObject /** * Add a thread to the conversation * - * @param object $item The item to insert + * @param Post $item The item to insert * * @return mixed The inserted item on success * false on failure + * @throws \Exception */ public function addParent(Post $item) { @@ -172,6 +175,7 @@ class Thread extends BaseObject * * @return mixed The data requested on success * false on failure + * @throws \Exception */ public function getTemplateData($conv_responses) { diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index c7c2623558..4c909efbc0 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -49,7 +49,7 @@ class ActivityPub /** * Checks if the web request is done for the AP protocol * - * @return is it AP? + * @return bool is it AP? */ public static function isRequest() { @@ -63,6 +63,7 @@ class ActivityPub * @param string $url content url * @param integer $uid User ID for the signature * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchContent($url, $uid = 0) { @@ -89,6 +90,8 @@ class ActivityPub * * @param string $url profile url * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function probeProfile($url) { @@ -128,8 +131,9 @@ class ActivityPub /** * Fetches activities from the outbox of a given profile and processes it * - * @param string $url + * @param string $url * @param integer $uid User ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchOutbox($url, $uid) { diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index d3c616a7e0..0e00797a46 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -30,7 +30,7 @@ class Processor * * @param string $body * - * @return converted body + * @return string converted body */ private static function convertMentions($body) { @@ -93,7 +93,7 @@ class Processor * @param array $attachments * @param array $item * - * @return item array + * @return array array */ private static function constructAttachList($attachments, $item) { @@ -124,7 +124,8 @@ class Processor /** * Updates a message * - * @param array $activity Activity array + * @param array $activity Activity array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function updateItem($activity) { @@ -143,7 +144,9 @@ class Processor /** * Prepares data for a message * - * @param array $activity Activity array + * @param array $activity Activity array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createItem($activity) { @@ -173,6 +176,8 @@ class Processor * Delete items * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function deleteItem($activity) { @@ -187,6 +192,8 @@ class Processor * * @param array $activity Activity array * @param string $verb Activity verb + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createActivity($activity, $verb) { @@ -206,6 +213,7 @@ class Processor * * @param array $activity Activity array * @param array $item + * @throws \Exception */ public static function createEvent($activity, $item) { @@ -237,8 +245,10 @@ class Processor /** * Creates an item post * - * @param array $activity Activity data - * @param array $item item array + * @param array $activity Activity data + * @param array $item item array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function postItem($activity, $item) { @@ -327,6 +337,7 @@ class Processor * * @param $url * @param $child + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function fetchMissingActivity($url, $child) { @@ -370,6 +381,8 @@ class Processor * perform a "follow" request * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function followUser($activity) { @@ -412,6 +425,7 @@ class Processor * Update the given profile * * @param array $activity + * @throws \Exception */ public static function updatePerson($activity) { @@ -427,6 +441,7 @@ class Processor * Delete the given profile * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function deletePerson($activity) { @@ -453,6 +468,8 @@ class Processor * Accept a follow request * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function acceptFollowUser($activity) { @@ -487,6 +504,8 @@ class Processor * Reject a follow request * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function rejectFollowUser($activity) { @@ -517,6 +536,8 @@ class Processor * Undo activity like "like" or "dislike" * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function undoActivity($activity) { @@ -540,6 +561,8 @@ class Processor * Activity to remove a follower * * @param array $activity + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function undoFollowUser($activity) { @@ -571,6 +594,7 @@ class Processor * Switches a contact to AP if needed * * @param integer $cid Contact ID + * @throws \Exception */ private static function switchContact($cid) { diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 61e9f8e9c6..9949577a71 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -42,7 +42,7 @@ class Receiver /** * Checks if the web request is done for the AP protocol * - * @return is it AP? + * @return bool is it AP? */ public static function isRequest() { @@ -53,9 +53,10 @@ class Receiver /** * Checks incoming message from the inbox * - * @param $body - * @param $header + * @param $body + * @param $header * @param integer $uid User ID + * @throws \Exception */ public static function processInbox($body, $header, $uid) { @@ -114,9 +115,11 @@ class Receiver * * @param array $activity * @param string $object_id Object ID of the the provided object - * @param integer $uid User ID + * @param integer $uid User ID * * @return string with object type + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchObjectType($activity, $object_id, $uid = 0) { @@ -152,11 +155,13 @@ class Receiver /** * Prepare the object array * - * @param array $activity + * @param array $activity * @param integer $uid User ID - * @param $trust_source + * @param $trust_source * * @return array with object data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function prepareObjectData($activity, $uid, &$trust_source) { @@ -264,6 +269,7 @@ class Receiver * * @param array $activity Array with activity data * @param string $body The raw message + * @throws \Exception */ private static function storeConversation($activity, $body) { @@ -290,6 +296,7 @@ class Receiver * @param string $body * @param integer $uid User ID * @param boolean $trust_source Do we trust the source? + * @throws \Exception */ public static function processActivity($activity, $body = '', $uid = null, $trust_source = false) { @@ -428,11 +435,12 @@ class Receiver /** * Fetch the receiver list from an activity array * - * @param array $activity + * @param array $activity * @param string $actor - * @param array $tags + * @param array $tags * * @return array with receivers (user id) + * @throws \Exception */ private static function getReceivers($activity, $actor, $tags = []) { @@ -523,9 +531,10 @@ class Receiver * Fetch the receiver list of a given actor * * @param string $actor - * @param array $tags + * @param array $tags * * @return array with receivers (user id) + * @throws \Exception */ public static function getReceiverForActor($actor, $tags) { @@ -546,11 +555,12 @@ class Receiver /** * Tests if the contact is a valid receiver for this actor * - * @param array $contact + * @param array $contact * @param string $actor - * @param array $tags + * @param array $tags * - * @return array with receivers (user id) + * @return bool with receivers (user id) + * @throws \Exception */ private static function isValidReceiverForActor($contact, $actor, $tags) { @@ -589,7 +599,9 @@ class Receiver * * @param integer $cid Contact ID * @param integer $uid User ID - * @param string $url Profile URL + * @param string $url Profile URL + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function switchContact($cid, $uid, $url) { @@ -622,6 +634,8 @@ class Receiver * * @param $receivers * @param $actor + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function switchContacts($receivers, $actor) { @@ -645,10 +659,10 @@ class Receiver /** * * - * @param $object_data + * @param $object_data * @param array $activity * - * @return + * @return mixed */ private static function addActivityFields($object_data, $activity) { @@ -674,6 +688,8 @@ class Receiver * @param integer $uid User ID for the signature that we use to fetch data * * @return array with trusted and valid object data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchObject($object_id, $object = [], $trust_source = false, $uid = 0) { @@ -759,8 +775,7 @@ class Receiver /** * Convert emojis from JSON-LD format into a simplified format * - * @param array $tags Tags in JSON-LD format - * + * @param $emojis * @return array with emojis in a simplified format */ private static function processEmojis($emojis) @@ -819,6 +834,7 @@ class Receiver * @param array $object * * @return array + * @throws \Exception */ private static function processObject($object) { diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 89986f4923..5136bc72c1 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -42,10 +42,11 @@ class Transmitter /** * collects the lost of followers of the given owner * - * @param array $owner Owner array - * @param integer $page Page number + * @param array $owner Owner array + * @param integer $page Page number * * @return array of owners + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getFollowers($owner, $page = null) { @@ -89,10 +90,11 @@ class Transmitter /** * Create list of following contacts * - * @param array $owner Owner array - * @param integer $page Page numbe + * @param array $owner Owner array + * @param integer $page Page numbe * * @return array of following contacts + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getFollowing($owner, $page = null) { @@ -136,10 +138,12 @@ class Transmitter /** * Public posts for the given owner * - * @param array $owner Owner array - * @param integer $page Page numbe + * @param array $owner Owner array + * @param integer $page Page numbe * * @return array of posts + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getOutbox($owner, $page = null) { @@ -186,6 +190,7 @@ class Transmitter * * @param integer $uid User ID * @return array with profile data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getProfile($uid) { @@ -246,6 +251,8 @@ class Transmitter * @param array $item * * @return array with permissions + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchPermissionBlockFromConversation($item) { @@ -295,11 +302,13 @@ class Transmitter /** * Creates an array of permissions from an item thread * - * @param array $item + * @param array $item * @param boolean $blindcopy * @param boolean $last_id * * @return array with permission data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function createPermissionBlockForItem($item, $blindcopy, $last_id = 0) { @@ -441,10 +450,12 @@ class Transmitter /** * Fetches a list of inboxes of followers of a given user * - * @param integer $uid User ID + * @param integer $uid User ID * @param boolean $personal fetch personal inboxes * * @return array of follower inboxes + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function fetchTargetInboxesforUser($uid, $personal = false) { @@ -486,12 +497,14 @@ class Transmitter /** * Fetches an array of inboxes for the given item and user * - * @param array $item - * @param integer $uid User ID + * @param array $item + * @param integer $uid User ID * @param boolean $personal fetch personal inboxes * @param integer $last_id Last item id for adding receivers * * @return array with inboxes + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function fetchTargetInboxes($item, $uid, $personal = false, $last_id = 0) { @@ -545,6 +558,8 @@ class Transmitter * @param array $item * * @return string with activity type + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function getTypeOfItem($item) { @@ -585,9 +600,10 @@ class Transmitter * Creates the activity or fetches it from the cache * * @param integer $item_id - * @param boolean $force Force new cache entry + * @param boolean $force Force new cache entry * * @return array with the activity + * @throws \Exception */ public static function createCachedActivityFromItem($item_id, $force = false) { @@ -613,6 +629,7 @@ class Transmitter * @param boolean $object_mode Is the activity item is used inside another object? * * @return array of activity + * @throws \Exception */ public static function createActivityFromItem($item_id, $object_mode = false) { @@ -692,6 +709,8 @@ class Transmitter * @param integer $item_id * * @return array with the object data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createObjectFromItemID($item_id) { @@ -747,6 +766,7 @@ class Transmitter * @param array $item * * @return array of tags + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function createTagList($item) { @@ -774,10 +794,11 @@ class Transmitter /** * Adds attachment data to the JSON document * - * @param array $item Data of the item that is to be posted - * @param text $type Object type + * @param array $item Data of the item that is to be posted + * @param string $type Object type * * @return array with attachment data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function createAttachmentList($item, $type) { @@ -826,11 +847,12 @@ class Transmitter return $attachments; } - /** + /** * @brief Callback function to replace a Friendica style mention in a mention that is used on AP * * @param array $match Matching values for the callback * @return string Replaced mention + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function mentionCallback($match) { @@ -870,6 +892,7 @@ class Transmitter * @param array $item * * @return string with context url + * @throws \Exception */ private static function fetchContextURLForItem($item) { @@ -890,6 +913,7 @@ class Transmitter * @param integer $item_id * * @return boolean + * @throws \Exception */ private static function isSensitive($item_id) { @@ -903,6 +927,7 @@ class Transmitter * @param array $item * * @return array with the event data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function createEvent($item) { @@ -929,6 +954,8 @@ class Transmitter * @param array $item * * @return array with the object data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createNote($item) { @@ -1019,6 +1046,8 @@ class Transmitter * @param array $item * * @return string with announced object url + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function createAnnounce($item) { @@ -1062,11 +1091,12 @@ class Transmitter /** * Transmits a contact suggestion to a given inbox * - * @param integer $uid User ID - * @param string $inbox Target inbox + * @param integer $uid User ID + * @param string $inbox Target inbox * @param integer $suggestion_id Suggestion ID * * @return boolean was the transmission successful? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sendContactSuggestion($uid, $inbox, $suggestion_id) { @@ -1093,10 +1123,11 @@ class Transmitter /** * Transmits a profile relocation to a given inbox * - * @param integer $uid User ID - * @param string $inbox Target inbox + * @param integer $uid User ID + * @param string $inbox Target inbox * * @return boolean was the transmission successful? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sendProfileRelocation($uid, $inbox) { @@ -1121,10 +1152,11 @@ class Transmitter /** * Transmits a profile deletion to a given inbox * - * @param integer $uid User ID - * @param string $inbox Target inbox + * @param integer $uid User ID + * @param string $inbox Target inbox * * @return boolean was the transmission successful? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sendProfileDeletion($uid, $inbox) { @@ -1149,10 +1181,12 @@ class Transmitter /** * Transmits a profile change to a given inbox * - * @param integer $uid User ID - * @param string $inbox Target inbox + * @param integer $uid User ID + * @param string $inbox Target inbox * * @return boolean was the transmission successful? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendProfileUpdate($uid, $inbox) { @@ -1178,10 +1212,12 @@ class Transmitter /** * Transmits a given activity to a target * - * @param array $activity - * @param string $target Target profile - * @param integer $uid User ID - * @param string $id activity id + * @param array $activity + * @param string $target Target profile + * @param integer $uid User ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @throws \Exception */ public static function sendActivity($activity, $target, $uid, $id = '') { @@ -1210,9 +1246,11 @@ class Transmitter /** * Transmit a message that the contact request had been accepted * - * @param string $target Target profile - * @param $id - * @param integer $uid User ID + * @param string $target Target profile + * @param $id + * @param integer $uid User ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendContactAccept($target, $id, $uid) { @@ -1238,9 +1276,11 @@ class Transmitter /** * Reject a contact request or terminates the contact relation * - * @param string $target Target profile - * @param $id - * @param integer $uid User ID + * @param string $target Target profile + * @param $id + * @param integer $uid User ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendContactReject($target, $id, $uid) { @@ -1266,9 +1306,11 @@ class Transmitter /** * Transmits a message that we don't want to follow this contact anymore * - * @param string $target Target profile - * @param integer $cid Contact ID of target - * @param integer $uid User ID + * @param string $target Target profile + * @param integer $uid User ID + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @throws \Exception */ public static function sendContactUndo($target, $cid, $uid) { diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index c08a24f423..4786f8d620 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -56,6 +56,7 @@ class DFRN * @param integer $uid User id * * @return array importer + * @throws \Exception */ public static function getImporter($cid, $uid = 0) { @@ -96,7 +97,9 @@ class DFRN * @param array $owner Owner record * * @return string DFRN entries - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Find proper type-hints */ public static function entries($items, $owner) { @@ -134,6 +137,8 @@ class DFRN * @param boolean $onlyheader Output only the header without content? (Default is "no") * * @return string DFRN feed entries + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function feed($dfrn_id, $owner_nick, $last_update, $direction = 0, $onlyheader = false) { @@ -341,6 +346,8 @@ class DFRN * @param boolean $conversation Show the conversation. If false show the single post. * * @return string DFRN feed entry + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function itemFeed($item_id, $conversation = false) { @@ -406,7 +413,8 @@ class DFRN * @param array $owner Owner record * * @return string DFRN mail - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ public static function mail($item, $owner) { @@ -442,7 +450,8 @@ class DFRN * @param array $owner Owner record * * @return string DFRN suggestions - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ public static function fsuggest($item, $owner) { @@ -471,7 +480,8 @@ class DFRN * @param int $uid User ID * * @return string DFRN relocations - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ public static function relocate($owner, $uid) { @@ -532,7 +542,8 @@ class DFRN * @param bool $public Is it a header for public posts? * * @return object XML root object - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ private static function addHeader($doc, $owner, $authorelement, $alternatelink = "", $public = false) { @@ -608,7 +619,8 @@ class DFRN * @param boolean $public boolean * * @return object XML author object - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ private static function addAuthor($doc, $owner, $authorelement, $public) { @@ -752,7 +764,8 @@ class DFRN * @param array $item Item elements * * @return object XML author object - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ private static function addEntryAuthor($doc, $element, $contact_url, $item) { @@ -793,7 +806,8 @@ class DFRN * @param string $activity activity value * * @return object XML activity object - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find proper type-hints */ private static function createActivity($doc, $element, $activity) { @@ -858,8 +872,8 @@ class DFRN * @param object $root XML root * @param array $item Item element * - * @return object XML attachment object - * @todo Find proper type-hints + * @return void XML attachment object + * @todo Find proper type-hints */ private static function getAttachment($doc, $root, $item) { @@ -899,7 +913,9 @@ class DFRN * @param bool $single If set, the entry is created as an XML document with a single "entry" element * * @return object XML entry object - * @todo Find proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Find proper type-hints */ private static function entry($doc, $type, array $item, array $owner, $comment = false, $cid = 0, $single = false) { @@ -1155,8 +1171,11 @@ class DFRN * @param string $atom Content that will be transmitted * @param bool $dissolve (to be documented) * + * @param bool $legacy_transport * @return int Deliver status. Negative values mean an error. - * @todo Add array type-hint for $owner, $contact + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Add array type-hint for $owner, $contact */ public static function deliver($owner, $contact, $atom, $dissolve = false, $legacy_transport = false) { @@ -1412,11 +1431,14 @@ class DFRN /** * @brief Transmits atom content to the contacts via the Diaspora transport layer * - * @param array $owner Owner record - * @param array $contact Contact record of the receiver - * @param string $atom Content that will be transmitted + * @param array $owner Owner record + * @param array $contact Contact record of the receiver + * @param string $atom Content that will be transmitted * + * @param bool $public_batch * @return int Deliver status. Negative values mean an error. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function transmit($owner, $contact, $atom, $public_batch = false) { @@ -1514,7 +1536,9 @@ class DFRN * @param string $xml optional, default empty * * @return array Relevant data of the author - * @todo Find good type-hints for all parameter + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Find good type-hints for all parameter */ private static function fetchauthor($xpath, $context, $importer, $element, $onlyfetch, $xml = "") { @@ -1835,7 +1859,8 @@ class DFRN * @param object $mail mail elements * @param array $importer Record of the importer user mixed with contact of the content * @return void - * @todo Find good type-hints for all parameter + * @throws \Exception + * @todo Find good type-hints for all parameter */ private static function processMail($xpath, $mail, $importer) { @@ -1890,7 +1915,8 @@ class DFRN * @param object $suggestion suggestion elements * @param array $importer Record of the importer user mixed with contact of the content * @return boolean - * @todo Find good type-hints for all parameter + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Find good type-hints for all parameter */ private static function processSuggestion($xpath, $suggestion, $importer) { @@ -2008,7 +2034,9 @@ class DFRN * @param object $relocation relocation elements * @param array $importer Record of the importer user mixed with contact of the content * @return boolean - * @todo Find good type-hints for all parameter + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Find good type-hints for all parameter */ private static function processRelocation($xpath, $relocation, $importer) { @@ -2092,7 +2120,8 @@ class DFRN * @param array $importer Record of the importer user mixed with contact of the content * @param int $entrytype Is it a toplevel entry, a comment or a relayed comment? * @return mixed - * @todo set proper type-hints (array?) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo set proper type-hints (array?) */ private static function updateContent($current, $item, $importer, $entrytype) { @@ -2123,7 +2152,8 @@ class DFRN * @param array $item the new item record * * @return int Is it a toplevel entry, a comment or a relayed comment? - * @todo set proper type-hints (array?) + * @throws \Exception + * @todo set proper type-hints (array?) */ private static function getEntryType($importer, $item) { @@ -2190,7 +2220,8 @@ class DFRN * @param array $importer Record of the importer user mixed with contact of the content * @param int $posted_id The record number of item record that was just posted * @return void - * @todo set proper type-hints (array?) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo set proper type-hints (array?) */ private static function doPoke($item, $importer, $posted_id) { @@ -2253,7 +2284,8 @@ class DFRN * @param bool $is_like Is the verb a "like"? * * @return bool Should the processing of the entries be continued? - * @todo set proper type-hints (array?) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo set proper type-hints (array?) */ private static function processVerbs($entrytype, $importer, &$item, &$is_like) { @@ -2400,7 +2432,9 @@ class DFRN * @param array $importer Record of the importer user mixed with contact of the content * @param object $xml xml * @return void - * @todo Add type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo Add type-hints */ private static function processEntry($header, $xpath, $entry, $importer, $xml) { @@ -2741,7 +2775,8 @@ class DFRN * @param object $deletion deletion elements * @param array $importer Record of the importer user mixed with contact of the content * @return void - * @todo set proper type-hints + * @throws \Exception + * @todo set proper type-hints */ private static function processDeletion($xpath, $deletion, $importer) { @@ -2801,7 +2836,9 @@ class DFRN * @param array $importer Record of the importer user mixed with contact of the content * @param bool $sort_by_date Is used when feeds are polled * @return integer Import status - * @todo set proper type-hints + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + * @todo set proper type-hints */ public static function import($xml, $importer, $sort_by_date = false) { @@ -2938,6 +2975,7 @@ class DFRN /** * @param App $a App * @param string $contact_nick contact nickname + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function autoRedir(App $a, $contact_nick) { @@ -3091,6 +3129,10 @@ class DFRN * item is assumed to be up-to-date. If the timestamps are equal it * assumes the update has been seen before and should be ignored. * + * @param $existing + * @param $update + * @return bool + * @throws \Exception */ private static function isEditedTimestampNewer($existing, $update) { diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index ed58350341..0087ced4b1 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -53,6 +53,7 @@ class Diaspora * @param array $contacts The previously fetched contacts * * @return array of relay servers + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function relayList($item_id, array $contacts = []) { @@ -138,6 +139,7 @@ class Diaspora * * @param string $server_url The url of the server * @return array with the contact + * @throws \Exception */ private static function getRelayContact($server_url) { @@ -169,8 +171,9 @@ class Diaspora /** * @brief Update or insert a relay contact * - * @param string $server_url The url of the server - * @param array $network_fields Optional network specific fields + * @param string $server_url The url of the server + * @param array $network_fields Optional network specific fields + * @throws \Exception */ public static function setRelayContact($server_url, array $network_fields = []) { @@ -204,6 +207,7 @@ class Diaspora * @param array $contacts The previously fetched contacts * * @return array of relay servers + * @throws \Exception */ public static function participantsForThread($thread, array $contacts) { @@ -250,6 +254,7 @@ class Diaspora * @param integer $level This value is only set inside this function to avoid endless loops * * @return string the repaired signature + * @throws \Exception */ private static function repairSignature($signature, $handle = "", $level = 1) { @@ -276,6 +281,8 @@ class Diaspora * @param string $envelope The magic envelope * * @return string verified data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function verifyMagicEnvelope($envelope) { @@ -372,6 +379,8 @@ class Diaspora * 'message' -> decoded Diaspora XML message * 'author' -> author diaspora handle * 'key' -> author public key (converted to pkcs#8) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function decodeRaw(array $importer, $raw, $no_exit = false) { @@ -475,6 +484,8 @@ class Diaspora * 'message' -> decoded Diaspora XML message * 'author' -> author diaspora handle * 'key' -> author public key (converted to pkcs#8) + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function decode(array $importer, $xml) { @@ -612,6 +623,8 @@ class Diaspora * @param array $msg The post that will be dispatched * * @return int The message id of the generated message, "true" or "false" if there was an error + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function dispatchPublic($msg) { @@ -640,6 +653,8 @@ class Diaspora * @param object $fields SimpleXML object that contains the message * * @return int The message id of the generated message, "true" or "false" if there was an error + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function dispatch(array $importer, $msg, $fields = null) { @@ -746,6 +761,8 @@ class Diaspora * @param array $msg Array with the XML, the sender handle and the sender signature * * @return bool|array If the posting is valid then an array with an SimpleXML object is returned + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function validPosting($msg) { @@ -894,6 +911,8 @@ class Diaspora * @param string $handle The handle * * @return string The public key + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function key($handle) { @@ -915,6 +934,8 @@ class Diaspora * @param string $handle The handle * * @return array the queried data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function personByHandle($handle) { @@ -960,6 +981,7 @@ class Diaspora * @brief Updates the fcontact table * * @param array $arr The fcontact data + * @throws \Exception */ private static function updateFContact($arr) { @@ -983,6 +1005,7 @@ class Diaspora * @param int $pcontact_id The id in the contact table (Used for the public contact) * * @return string the handle + * @throws \Exception */ private static function handleFromContact($contact_id, $pcontact_id = 0) { @@ -1029,6 +1052,7 @@ class Diaspora * @param mixed $fcontact_guid Hexadecimal string guid * * @return string the contact url or null + * @throws \Exception */ public static function urlFromContactGuid($fcontact_guid) { @@ -1050,12 +1074,14 @@ class Diaspora /** * @brief Get a contact id for a given handle * - * @todo Move to Friendica\Model\Contact + * @todo Move to Friendica\Model\Contact * * @param int $uid The user id * @param string $handle The handle in the format user@domain.tld * * @return int Contact id + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function contactByHandle($uid, $handle) { @@ -1139,6 +1165,7 @@ class Diaspora * @param bool $is_comment Is the check for a comment? * * @return array The contact data + * @throws \Exception */ private static function allowedContactByHandle(array $importer, $handle, $is_comment = false) { @@ -1169,6 +1196,7 @@ class Diaspora * @param string $guid The guid of the message * * @return int|bool message id if the message already was stored into the system - or false. + * @throws \Exception */ private static function messageExists($uid, $guid) { @@ -1249,6 +1277,8 @@ class Diaspora * @param array $match array containing a link that has to be checked for a message link * @param array $item The item array * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchGuidSub($match, $item) { @@ -1265,6 +1295,8 @@ class Diaspora * @param int $uid The user id of the user * * @return int the message id of the stored message or false + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function storeByGuid($guid, $server, $uid = 0) { @@ -1301,6 +1333,7 @@ class Diaspora * 'message' => The message XML * 'author' => The author handle * 'key' => The public key of the author + * @throws \Exception */ private static function message($guid, $server, $level = 0) { @@ -1377,6 +1410,7 @@ class Diaspora * @param array $contact The contact of the item owner * * @return array the item record + * @throws \Exception */ private static function parentItem($uid, $guid, $author, array $contact) { @@ -1421,6 +1455,7 @@ class Diaspora * @return array * 'cid' => contact id * 'network' => network type + * @throws \Exception */ private static function authorContactByUrl($def_contact, $person, $uid) { @@ -1457,6 +1492,8 @@ class Diaspora * @param string $parent_guid optional parent guid * * @return string the post link + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function plink($addr, $guid, $parent_guid = '') { @@ -1493,6 +1530,8 @@ class Diaspora * @param object $data The message object * * @return bool Success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveAccountMigration(array $importer, $data) { @@ -1550,9 +1589,10 @@ class Diaspora /** * @brief Processes an account deletion * - * @param object $data The message object + * @param object $data The message object * * @return bool Success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function receiveAccountDeletion($data) { @@ -1578,6 +1618,8 @@ class Diaspora * @param boolean $onlyfound Only return uri when found in the database * * @return string The constructed uri or the one from our database + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function getUriFromGuid($author, $guid, $onlyfound = false) { @@ -1604,6 +1646,7 @@ class Diaspora * @param string $uid Author handle * * @return string The post guid + * @throws \Exception */ private static function getGuidFromUri($uri, $uid) { @@ -1621,6 +1664,7 @@ class Diaspora * @param string $guid The guid of the item * * @return array|boolean the origin owner of that post - or false + * @throws \Exception */ private static function importerForGuid($guid) { @@ -1644,6 +1688,8 @@ class Diaspora * @param string $xml The original XML of the message * * @return int The message id of the generated comment or "false" if there was an error + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveComment(array $importer, $sender, $data, $xml) { @@ -1761,6 +1807,7 @@ class Diaspora * @param array $conversation The conversation record to which this message belongs * * @return bool "true" if it was successful + * @throws \Exception */ private static function receiveConversationMessage(array $importer, array $contact, $data, $msg, $mesg, $conversation) { @@ -1850,6 +1897,7 @@ class Diaspora * @param object $data The message object * * @return bool Success + * @throws \Exception */ private static function receiveConversation(array $importer, $msg, $data) { @@ -1908,6 +1956,8 @@ class Diaspora * @param object $data The message object * * @return int The message id of the generated like or "false" if there was an error + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveLike(array $importer, $sender, $data) { @@ -2017,6 +2067,7 @@ class Diaspora * @param object $data The message object * * @return bool Success? + * @throws \Exception */ private static function receiveMessage(array $importer, $data) { @@ -2109,6 +2160,8 @@ class Diaspora * @param object $data The message object * * @return bool always true + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveParticipation(array $importer, $data) { @@ -2202,6 +2255,8 @@ class Diaspora * @param object $data The message object * * @return bool Success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveProfile(array $importer, $data) { @@ -2295,6 +2350,7 @@ class Diaspora * @param array $importer Array of the importer user * @param array $contact The contact that send the request * @return void + * @throws \Exception */ private static function receiveRequestMakeFriend(array $importer, array $contact) { @@ -2316,6 +2372,7 @@ class Diaspora * @param object $data The message object * * @return bool Success + * @throws \Exception */ private static function receiveContactRequest(array $importer, $data) { @@ -2496,9 +2553,9 @@ class Diaspora * * @param string $guid message guid * @param string $orig_author handle of the original post - * @param string $author handle of the sharer - * * @return array The fetched item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function originalItem($guid, $orig_author) { @@ -2579,6 +2636,8 @@ class Diaspora * @param string $xml The original XML of the message * * @return int the message id + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveReshare(array $importer, $data, $xml) { @@ -2671,6 +2730,7 @@ class Diaspora * @param object $data The message object * * @return bool success + * @throws \Exception */ private static function itemRetraction(array $importer, array $contact, $data) { @@ -2735,6 +2795,7 @@ class Diaspora * @param object $data The message object * * @return bool Success + * @throws \Exception */ private static function receiveRetraction(array $importer, $sender, $data) { @@ -2775,11 +2836,13 @@ class Diaspora /** * @brief Receives status messages * - * @param array $importer Array of the importer user - * @param object $data The message object - * @param string $xml The original XML of the message + * @param array $importer Array of the importer user + * @param SimpleXMLElement $data The message object + * @param string $xml The original XML of the message * * @return int The message id of the newly created item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function receiveStatusMessage(array $importer, SimpleXMLElement $data, $xml) { @@ -2900,6 +2963,7 @@ class Diaspora * @param array $contact contact array * * @return string the handle in the format user@domain.tld + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function myHandle(array $contact) { @@ -2929,6 +2993,7 @@ class Diaspora * @param string $pubkey The public key of the receiver * * @return string The encrypted data + * @throws \Exception */ public static function encodePrivateData($msg, array $user, array $contact, $prvkey, $pubkey) { @@ -2967,6 +3032,7 @@ class Diaspora * @param array $user The record of the sender * * @return string The envelope + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function buildMagicEnvelope($msg, array $user) { @@ -3010,6 +3076,7 @@ class Diaspora * @param bool $public Is the message public? * * @return string The message that will be transmitted to other servers + * @throws \Exception */ public static function buildMessage($msg, array $user, array $contact, $prvkey, $pubkey, $public = false) { @@ -3053,7 +3120,10 @@ class Diaspora * @param bool $queue_run Is the transmission called from the queue? * @param string $guid message guid * + * @param bool $no_queue * @return int Result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function transmit(array $owner, array $contact, $envelope, $public_batch, $queue_run = false, $guid = "", $no_queue = false) { @@ -3145,6 +3215,8 @@ class Diaspora * @param bool $spool Should the transmission be spooled or transmitted? * * @return int Result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function buildAndTransmit(array $owner, array $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { @@ -3176,9 +3248,10 @@ class Diaspora * @brief sends a participation (Used to get all further updates) * * @param array $contact Target of the communication - * @param array $item Item array + * @param array $item Item array * * @return int The result of the transmission + * @throws \Exception */ private static function sendParticipation(array $contact, array $item) { @@ -3225,9 +3298,11 @@ class Diaspora * * @param array $owner the array of the item owner * @param array $contact Target of the communication - * @param int $uid User ID + * @param int $uid User ID * * @return int The result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendAccountMigration(array $owner, array $contact, $uid) { @@ -3253,6 +3328,7 @@ class Diaspora * @param array $contact Target of the communication * * @return int The result of the transmission + * @throws \Exception */ public static function sendShare(array $owner, array $contact) { @@ -3296,6 +3372,7 @@ class Diaspora * @param array $contact Target of the communication * * @return int The result of the transmission + * @throws \Exception */ public static function sendUnshare(array $owner, array $contact) { @@ -3316,6 +3393,8 @@ class Diaspora * @param bool $complete Should it be a complete check or a simple check? * * @return array|bool Reshare details or "false" if no reshare + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function isReshare($body, $complete = true) { @@ -3403,6 +3482,7 @@ class Diaspora * @param integer $event_id The id of the event * * @return array with event data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function buildEvent($event_id) { @@ -3485,6 +3565,8 @@ class Diaspora * @return array * 'type' -> Message type ("status_message" or "reshare") * 'message' -> Array of XML elements of the status + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function buildStatus(array $item, array $owner) { @@ -3599,6 +3681,8 @@ class Diaspora * @param bool $public_batch Is it a public post? * * @return int The result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendStatus(array $item, array $owner, array $contact, $public_batch = false) { @@ -3614,6 +3698,7 @@ class Diaspora * @param array $owner the array of the item owner * * @return array The data for a "like" + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function constructLike(array $item, array $owner) { @@ -3645,6 +3730,7 @@ class Diaspora * @param array $owner the array of the item owner * * @return array The data for an "EventParticipation" + * @throws \Exception */ private static function constructAttend(array $item, array $owner) { @@ -3682,6 +3768,7 @@ class Diaspora * @param array $owner the array of the item owner * * @return array The data for a comment + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function constructComment(array $item, array $owner) { @@ -3726,6 +3813,8 @@ class Diaspora * @param bool $public_batch Is it a public post? * * @return int The result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendFollowup(array $item, array $owner, array $contact, $public_batch = false) { @@ -3752,10 +3841,8 @@ class Diaspora /** * @brief Creates a message from a signature record entry * - * @param array $item The item that will be exported - * @param array $signature The entry of the "sign" record - * - * @return string The message + * @param array $item The item that will be exported + * @return array The message */ private static function messageFromSignature(array $item) { @@ -3806,6 +3893,7 @@ class Diaspora * @param bool $public_batch Is it a public post? * * @return int The result of the transmission + * @throws \Exception */ public static function sendRelay(array $item, array $owner, array $contact, $public_batch = false) { @@ -3862,6 +3950,7 @@ class Diaspora * @param bool $relay Is the retraction transmitted from a relay? * * @return int The result of the transmission + * @throws \Exception */ public static function sendRetraction(array $item, array $owner, array $contact, $public_batch = false, $relay = false) { @@ -3894,6 +3983,8 @@ class Diaspora * @param array $contact Target of the communication * * @return int The result of the transmission + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function sendMail(array $item, array $owner, array $contact) { @@ -4004,6 +4095,7 @@ class Diaspora * @param int $uid The user id * * @return array The profile data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function createProfileData($uid) { @@ -4088,6 +4180,7 @@ class Diaspora * @param int $uid The user id * @param bool $recips optional, default false * @return void + * @throws \Exception */ public static function sendProfile($uid, $recips = false) { @@ -4129,6 +4222,7 @@ class Diaspora * @param array $item Item array * * @return array Signed content + * @throws \Exception */ public static function createLikeSignature($uid, array $item) { @@ -4159,6 +4253,7 @@ class Diaspora * @param array $item Item array * * @return array Signed content + * @throws \Exception */ public static function createCommentSignature($uid, array $item) { diff --git a/src/Protocol/Email.php b/src/Protocol/Email.php index 87f4091e5e..55bef6d253 100644 --- a/src/Protocol/Email.php +++ b/src/Protocol/Email.php @@ -19,6 +19,7 @@ class Email * @param string $username The username * @param string $password The password * @return object + * @throws \Exception */ public static function connect($mailbox, $username, $password) { @@ -45,6 +46,7 @@ class Email * @param object $mbox mailbox * @param string $email_addr email * @return array + * @throws \Exception */ public static function poll($mbox, $email_addr) { @@ -106,6 +108,7 @@ class Email * @param integer $uid user id * @param string $reply reply * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getMessage($mbox, $uid, $reply) { @@ -321,6 +324,8 @@ class Email * * @return void * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException * @todo This could be changed to use the Emailer class */ public static function send($addr, $subject, $headers, $item) diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 91341328a1..86e831c705 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -25,13 +25,14 @@ class Feed { /** * @brief Read a RSS/RDF/Atom feed and create an item entry for it * - * @param string $xml The feed data - * @param array $importer The user record of the importer - * @param array $contact The contact record of the feed - * @param string $hub Unused dummy value for compatibility reasons - * @param bool $simulate If enabled, no data is imported + * @param string $xml The feed data + * @param array $importer The user record of the importer + * @param array $contact The contact record of the feed + * @param string $hub Unused dummy value for compatibility reasons + * @param bool $simulate If enabled, no data is imported * * @return array In simulation mode it returns the header and the first item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function import($xml, $importer, &$contact, &$hub, $simulate = false) { diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 458fee1620..84a97c20a3 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -43,13 +43,15 @@ class OStatus /** * @brief Fetches author data * - * @param object $xpath The xpath object - * @param object $context The xml context of the author details - * @param array $importer user record of the importing user - * @param array $contact Called by reference, will contain the fetched contact - * @param bool $onlyfetch Only fetch the header without updating the contact entries + * @param DOMXPath $xpath The xpath object + * @param object $context The xml context of the author details + * @param array $importer user record of the importing user + * @param array $contact Called by reference, will contain the fetched contact + * @param bool $onlyfetch Only fetch the header without updating the contact entries * * @return array Array of author related entries for the item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, array &$contact = null, $onlyfetch) { @@ -242,6 +244,8 @@ class OStatus * @param array $importer user record of the importing user * * @return array Array of author related entries for the item + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function salmonAuthor($xml, array $importer) { @@ -296,6 +300,8 @@ class OStatus * @param array $contact contact * @param string $hub Called by reference, returns the fetched hub data * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function import($xml, array $importer, array &$contact = null, &$hub) { @@ -313,6 +319,8 @@ class OStatus * @param boolean $initialize Is it the leading post so that data has to be initialized? * * @return boolean Could the XML be processed? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function process($xml, array $importer, array &$contact = null, &$hub, $stored = false, $initialize = true) { @@ -556,8 +564,10 @@ class OStatus /** * Removes notice item from database + * * @param array $item item * @return void + * @throws \Exception */ private static function deleteNotice(array $item) { @@ -575,11 +585,13 @@ class OStatus /** * @brief Processes the XML for a post * - * @param object $xpath The xpath object - * @param object $entry The xml entry that is processed - * @param array $item The item array - * @param array $importer user record of the importing user + * @param DOMXPath $xpath The xpath object + * @param object $entry The xml entry that is processed + * @param array $item The item array + * @param array $importer user record of the importing user * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function processPost(DOMXPath $xpath, $entry, array &$item, array $importer) { @@ -725,6 +737,7 @@ class OStatus * @param string $conversation The link to the conversation * @param string $conversation_uri The conversation in "uri" format * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function fetchConversation($conversation, $conversation_uri) { @@ -787,6 +800,7 @@ class OStatus * @param string $conversation conversation * @param string $conversation_uri conversation uri * @return void + * @throws \Exception */ private static function storeConversation($xml, $conversation = '', $conversation_uri = '') { @@ -870,6 +884,7 @@ class OStatus * @param string $self The link to the self item * @param array $item The item array * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function fetchSelf($self, array &$item) { @@ -905,6 +920,8 @@ class OStatus * @param string $related_uri The related item in "uri" format * @param array $importer user record of the importing user * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function fetchRelated($related, $related_uri, $importer) { @@ -1008,12 +1025,14 @@ class OStatus /** * @brief Processes the XML for a repeated post * - * @param object $xpath The xpath object - * @param object $entry The xml entry that is processed - * @param array $item The item array - * @param array $importer user record of the importing user + * @param DOMXPath $xpath The xpath object + * @param object $entry The xml entry that is processed + * @param array $item The item array + * @param array $importer user record of the importing user * * @return array with data from links + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function processRepeatedItem(DOMXPath $xpath, $entry, array &$item, array $importer) { @@ -1223,6 +1242,7 @@ class OStatus * @param string $body The body * * @return string The cleaned body + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function formatPicturePost($body) { @@ -1257,12 +1277,13 @@ class OStatus /** * @brief Adds the header elements to the XML document * - * @param object $doc XML document - * @param array $owner Contact data of the poster - * @param string $filter The related feed filter (activity, posts or comments) - * @param bool $feed_mode Behave like a regular feed for users if true + * @param DOMDocument $doc XML document + * @param array $owner Contact data of the poster + * @param string $filter The related feed filter (activity, posts or comments) + * @param bool $feed_mode Behave like a regular feed for users if true * * @return object header root element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function addHeader(DOMDocument $doc, array $owner, $filter, $feed_mode = false) { @@ -1347,10 +1368,11 @@ class OStatus /** * @brief Add the link to the push hubs to the XML document * - * @param object $doc XML document - * @param object $root XML root element where the hub links are added - * @param object $nick nick + * @param DOMDocument $doc XML document + * @param object $root XML root element where the hub links are added + * @param object $nick nick * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function hublinks(DOMDocument $doc, $root, $nick) { @@ -1361,14 +1383,14 @@ class OStatus /** * @brief Adds attachment data to the XML document * - * @param object $doc XML document - * @param object $root XML root element where the hub links are added - * @param array $item Data of the item that is to be posted + * @param DOMDocument $doc XML document + * @param object $root XML root element where the hub links are added + * @param array $item Data of the item that is to be posted * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function getAttachment(DOMDocument $doc, $root, $item) { - $o = ""; $siteinfo = BBCode::getAttachedData($item["body"]); switch ($siteinfo["type"]) { @@ -1433,11 +1455,12 @@ class OStatus /** * @brief Adds the author element to the XML document * - * @param object $doc XML document - * @param array $owner Contact data of the poster - * @param bool $show_profile Whether to show profile + * @param DOMDocument $doc XML document + * @param array $owner Contact data of the poster + * @param bool $show_profile Whether to show profile * * @return object author element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function addAuthor(DOMDocument $doc, array $owner, $show_profile = true) { @@ -1550,13 +1573,15 @@ class OStatus /** * @brief Adds an entry element to the XML document * - * @param object $doc XML document - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param bool $toplevel optional default false - * @param bool $feed_mode Behave like a regular feed for users if true + * @param DOMDocument $doc XML document + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param bool $toplevel optional default false + * @param bool $feed_mode Behave like a regular feed for users if true * * @return object Entry element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function entry(DOMDocument $doc, array $item, array $owner, $toplevel = false, $feed_mode = false) { @@ -1583,10 +1608,11 @@ class OStatus /** * @brief Adds a source entry to the XML document * - * @param object $doc XML document - * @param array $contact Array of the contact that is added + * @param DOMDocument $doc XML document + * @param array $contact Array of the contact that is added * * @return object Source element + * @throws \Exception */ private static function sourceEntry(DOMDocument $doc, array $contact) { @@ -1608,6 +1634,8 @@ class OStatus * @param array $owner Contact data of the poster * * @return array Contact array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function contactEntry($url, array $owner) { @@ -1655,13 +1683,15 @@ class OStatus /** * @brief Adds an entry element with reshared content * - * @param object $doc XML document - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param string $repeated_guid guid - * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? + * @param DOMDocument $doc XML document + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param string $repeated_guid guid + * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * - * @return object Entry element + * @return bool Entry element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function reshareEntry(DOMDocument $doc, array $item, array $owner, $repeated_guid, $toplevel) { @@ -1719,12 +1749,14 @@ class OStatus /** * @brief Adds an entry element with a "like" * - * @param object $doc XML document - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? + * @param DOMDocument $doc XML document + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * * @return object Entry element with "like" + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function likeEntry(DOMDocument $doc, array $item, array $owner, $toplevel) { @@ -1759,9 +1791,9 @@ class OStatus /** * @brief Adds the person object element to the XML document * - * @param object $doc XML document - * @param array $owner Contact data of the poster - * @param array $contact Contact data of the target + * @param DOMDocument $doc XML document + * @param array $owner Contact data of the poster + * @param array $contact Contact data of the target * * @return object author element */ @@ -1804,12 +1836,14 @@ class OStatus /** * @brief Adds a follow/unfollow entry element * - * @param object $doc XML document - * @param array $item Data of the follow/unfollow message - * @param array $owner Contact data of the poster - * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? + * @param DOMDocument $doc XML document + * @param array $item Data of the follow/unfollow message + * @param array $owner Contact data of the poster + * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * * @return object Entry element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function followEntry(DOMDocument $doc, array $item, array $owner, $toplevel) { @@ -1866,13 +1900,15 @@ class OStatus /** * @brief Adds a regular entry element * - * @param object $doc XML document - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? - * @param bool $feed_mode Behave like a regular feed for users if true + * @param DOMDocument $doc XML document + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? + * @param bool $feed_mode Behave like a regular feed for users if true * * @return object Entry element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function noteEntry(DOMDocument $doc, array $item, array $owner, $toplevel, $feed_mode) { @@ -1894,12 +1930,15 @@ class OStatus /** * @brief Adds a header element to the XML document * - * @param object $doc XML document - * @param object $entry The entry element where the elements are added - * @param array $owner Contact data of the poster - * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? + * @param DOMDocument $doc XML document + * @param object $entry The entry element where the elements are added + * @param array $owner Contact data of the poster + * @param array $item + * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * * @return string The title for the element + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function entryHeader(DOMDocument $doc, &$entry, array $owner, array $item, $toplevel) { @@ -1940,15 +1979,16 @@ class OStatus /** * @brief Adds elements to the XML document * - * @param object $doc XML document - * @param object $entry Entry element where the content is added - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param string $title Title for the post - * @param string $verb The activity verb - * @param bool $complete Add the "status_net" element? - * @param bool $feed_mode Behave like a regular feed for users if true + * @param DOMDocument $doc XML document + * @param object $entry Entry element where the content is added + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param string $title Title for the post + * @param string $verb The activity verb + * @param bool $complete Add the "status_net" element? + * @param bool $feed_mode Behave like a regular feed for users if true * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function entryContent(DOMDocument $doc, $entry, array $item, array $owner, $title, $verb = "", $complete = true, $feed_mode = false) { @@ -1988,13 +2028,14 @@ class OStatus /** * @brief Adds the elements at the foot of an entry to the XML document * - * @param object $doc XML document - * @param object $entry The entry element where the elements are added - * @param array $item Data of the item that is to be posted - * @param array $owner Contact data of the poster - * @param bool $complete default true - * @param bool $feed_mode Behave like a regular feed for users if true + * @param DOMDocument $doc XML document + * @param object $entry The entry element where the elements are added + * @param array $item Data of the item that is to be posted + * @param array $owner Contact data of the poster + * @param bool $complete default true + * @param bool $feed_mode Behave like a regular feed for users if true * @return void + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function entryFooter(DOMDocument $doc, $entry, array $item, array $owner, $complete = true, $feed_mode = false) { @@ -2159,6 +2200,8 @@ class OStatus * @param boolean $feed_mode Behave like a regular feed for users if true * * @return string XML feed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function feed($owner_nick, &$last_update, $max_items = 300, $filter = 'activity', $nocache = false, $feed_mode = false) { @@ -2250,6 +2293,8 @@ class OStatus * @param array $owner Contact data of the poster * * @return string XML for the salmon + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function salmon(array $item, array $owner) { diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index dcdc9e2b14..fcbd26ecfa 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -44,7 +44,7 @@ class PortableContact * Once the global contact is stored add (if necessary) the contact linkage which associates * the given uid, cid to the global contact entry. There can be many uid/cid combinations * pointing to the same global contact id. - * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function loadWorker($cid, $uid = 0, $zcid = 0, $url = null) { @@ -59,7 +59,7 @@ class PortableContact * @param integer $uid User ID * @param integer $zcid Global Contact ID * @param integer $url POCO address that should be polled - * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function load($cid, $uid, $zcid, $url) { @@ -643,6 +643,7 @@ class PortableContact * * @param string $server_url address of the server * @return array Server data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function fetchNodeinfo($server_url) { @@ -696,6 +697,7 @@ class PortableContact * * @param string $nodeinfo_url address of the nodeinfo path * @return array Server data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function parseNodeinfo1($nodeinfo_url) { @@ -780,6 +782,7 @@ class PortableContact * * @param string $nodeinfo_url address of the nodeinfo path * @return array Server data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function parseNodeinfo2($nodeinfo_url) { @@ -1444,6 +1447,7 @@ class PortableContact * @brief Fetch relay data from a given server url * * @param string $server_url address of the server + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function discoverRelay($server_url) { @@ -1542,6 +1546,7 @@ class PortableContact * @brief Fetch server list from remote servers and adds them when they are new. * * @param string $poco URL to the POCO endpoint + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function fetchServerlist($poco) { diff --git a/src/Protocol/Salmon.php b/src/Protocol/Salmon.php index 47376890d5..f8fa2f0540 100644 --- a/src/Protocol/Salmon.php +++ b/src/Protocol/Salmon.php @@ -22,6 +22,7 @@ class Salmon * @param string $uri Uniform Resource Identifier * @param string $keyhash encoded key * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getKey($uri, $keyhash) { @@ -86,6 +87,7 @@ class Salmon * @param string $url url * @param string $slap slap * @return integer + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function slapper($owner, $url, $slap) { @@ -205,6 +207,7 @@ class Salmon /** * @param string $pubkey public key * @return string + * @throws \Exception */ public static function salmonKey($pubkey) { diff --git a/src/Util/Crypto.php b/src/Util/Crypto.php index 6e054df973..4f762964c9 100644 --- a/src/Util/Crypto.php +++ b/src/Util/Crypto.php @@ -42,7 +42,7 @@ class Crypto /** * @param string $Der der formatted string - * @param string $Private key type optional, default false + * @param bool $Private key type optional, default false * @return string */ private static function DerToPem($Der, $Private = false) @@ -149,6 +149,7 @@ class Crypto * @param string $m modulo reference * @param object $e exponent reference * @return void + * @throws \Exception */ private static function pubRsaToMe($key, &$m, &$e) { @@ -166,6 +167,7 @@ class Crypto /** * @param string $key key * @return string + * @throws \Exception */ public static function rsaToPem($key) { @@ -176,6 +178,7 @@ class Crypto /** * @param string $key key * @return string + * @throws \Exception */ private static function pemToRsa($key) { @@ -188,6 +191,7 @@ class Crypto * @param string $m modulo reference * @param string $e exponent reference * @return void + * @throws \Exception */ public static function pemToMe($key, &$m, &$e) { @@ -217,6 +221,7 @@ class Crypto /** * @param integer $bits number of bits * @return mixed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function newKeypair($bits) { @@ -318,14 +323,15 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * + * * @param string $data * @param string $pubkey The public key. * @param string $alg The algorithm used for encryption. - * + * * @return array + * @throws \Exception */ public static function encapsulate($data, $pubkey, $alg = 'aes256cbc') { @@ -336,14 +342,15 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * - * @param type $data - * @param type $pubkey The public key. - * @param type $alg The algorithm used for encryption. - * + * + * @param string $data + * @param string $pubkey The public key. + * @param string $alg The algorithm used for encryption. + * * @return array + * @throws \Exception */ private static function encapsulateOther($data, $pubkey, $alg) { @@ -378,13 +385,14 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * + * * @param string $data * @param string $pubkey - * + * * @return array + * @throws \Exception */ private static function encapsulateAes($data, $pubkey) { @@ -412,13 +420,14 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * + * * @param string $data - * @param string $prvkey The private key used for decryption. - * + * @param string $prvkey The private key used for decryption. + * * @return string|boolean The decrypted string or false on failure. + * @throws \Exception */ public static function unencapsulate($data, $prvkey) { @@ -434,14 +443,15 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * + * * @param string $data - * @param string $prvkey The private key used for decryption. + * @param string $prvkey The private key used for decryption. * @param string $alg - * + * * @return string|boolean The decrypted string or false on failure. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function unencapsulateOther($data, $prvkey, $alg) { @@ -461,13 +471,14 @@ class Crypto } /** - * + * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php - * + * * @param array $data - * @param string $prvkey The private key used for decryption. - * + * @param string $prvkey The private key used for decryption. + * * @return string|boolean The decrypted string or false on failure. + * @throws \Exception */ private static function unencapsulateAes($data, $prvkey) { diff --git a/src/Util/DateTimeFormat.php b/src/Util/DateTimeFormat.php index 8eead1d2e5..0b47a16f15 100644 --- a/src/Util/DateTimeFormat.php +++ b/src/Util/DateTimeFormat.php @@ -26,6 +26,7 @@ class DateTimeFormat * @param string $time A date/time string * @param string $format DateTime format string or Temporal constant * @return string + * @throws Exception */ public static function utc($time, $format = self::MYSQL) { @@ -38,6 +39,7 @@ class DateTimeFormat * @param string $time A date/time string * @param string $format DateTime format string or Temporal constant * @return string + * @throws Exception */ public static function local($time, $format = self::MYSQL) { @@ -47,8 +49,10 @@ class DateTimeFormat /** * convert() shorthand for timezoned now. * + * @param $timezone * @param string $format DateTime format string or Temporal constant * @return string + * @throws Exception */ public static function timezoneNow($timezone, $format = self::MYSQL) { @@ -60,6 +64,7 @@ class DateTimeFormat * * @param string $format DateTime format string or Temporal constant * @return string + * @throws Exception */ public static function localNow($format = self::MYSQL) { @@ -71,6 +76,7 @@ class DateTimeFormat * * @param string $format DateTime format string or Temporal constant * @return string + * @throws Exception */ public static function utcNow($format = self::MYSQL) { @@ -84,9 +90,10 @@ class DateTimeFormat * @param string $tz_to Destination timezone * @param string $tz_from Source timezone * @param string $format Output format recognised from php's DateTime class - * http://www.php.net/manual/en/datetime.format.php + * http://www.php.net/manual/en/datetime.format.php * * @return string Formatted date according to given format + * @throws Exception */ public static function convert($s = 'now', $tz_to = 'UTC', $tz_from = 'UTC', $format = self::MYSQL) { diff --git a/src/Util/Emailer.php b/src/Util/Emailer.php index e9bcbc200d..cccf8c2fab 100644 --- a/src/Util/Emailer.php +++ b/src/Util/Emailer.php @@ -19,17 +19,18 @@ class Emailer * Send a multipart/alternative message with Text and HTML versions * * @param array $params parameters - * fromName name of the sender - * fromEmail email fo the sender - * replyTo replyTo address to direct responses - * toEmail destination email address - * messageSubject subject of the message - * htmlVersion html version of the message - * textVersion text only version of the message - * additionalMailHeader additions to the smtp mail header + * fromName name of the sender + * fromEmail email of the sender + * replyTo address to direct responses + * toEmail destination email address + * messageSubject subject of the message + * htmlVersion html version of the message + * textVersion text only version of the message + * additionalMailHeader additions to the SMTP mail header * optional uid user id of the destination user * * @return object + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function send($params) { diff --git a/src/Util/ExAuth.php b/src/Util/ExAuth.php index 28157c23ef..d341682e80 100644 --- a/src/Util/ExAuth.php +++ b/src/Util/ExAuth.php @@ -47,7 +47,6 @@ class ExAuth /** * @brief Create the class * - * @param boolean $bDebug Debug mode */ public function __construct() { @@ -63,6 +62,7 @@ class ExAuth * parameters * * @return null + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function readStdin() { @@ -119,6 +119,7 @@ class ExAuth * @brief Check if the given username exists * * @param array $aCommand The command array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function isUser(array $aCommand) { @@ -165,11 +166,12 @@ class ExAuth /** * @brief Check remote user existance via HTTP(S) * - * @param string $host The hostname - * @param string $user Username - * @param boolean $ssl Should the check be done via SSL? + * @param string $host The hostname + * @param string $user Username + * @param boolean $ssl Should the check be done via SSL? * * @return boolean Was the user found? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function checkUser($host, $user, $ssl) { @@ -199,6 +201,7 @@ class ExAuth * @brief Authenticate the given user and password * * @param array $aCommand The command array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function auth(array $aCommand) { @@ -294,6 +297,7 @@ class ExAuth * @brief Set the hostname for this process * * @param string $host The hostname + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function setHost($host) { diff --git a/src/Util/HTTPSignature.php b/src/Util/HTTPSignature.php index b54f500512..bff3287065 100644 --- a/src/Util/HTTPSignature.php +++ b/src/Util/HTTPSignature.php @@ -34,6 +34,7 @@ class HTTPSignature * @param $key * * @return array with verification data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function verifyMagic($key) { @@ -188,6 +189,7 @@ class HTTPSignature * - \e string \b algorithm * - \e array \b headers * - \e string \b signature + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function parseSigheader($header) { @@ -235,6 +237,7 @@ class HTTPSignature * - \e string \b key * - \e string \b alg * - \e string \b data + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function decryptSigheader($header, $prvkey = null) { @@ -276,11 +279,12 @@ class HTTPSignature /** * @brief Transmit given data to a target for a user * - * @param array $data Data that is about to be send - * @param string $target The URL of the inbox - * @param integer $uid User id of the sender + * @param array $data Data that is about to be send + * @param string $target The URL of the inbox + * @param integer $uid User id of the sender * * @return boolean Was the transmission successful? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function transmit($data, $target, $uid) { @@ -320,10 +324,11 @@ class HTTPSignature /** * @brief Fetches JSON data for a user * - * @param string $request request url - * @param integer $uid User id of the requester + * @param string $request request url + * @param integer $uid User id of the requester * * @return array JSON array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetch($request, $uid) { @@ -372,7 +377,8 @@ class HTTPSignature * @param $content * @param $http_headers * - * @return signer string + * @return string Signer + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getSigner($content, $http_headers) { @@ -493,6 +499,7 @@ class HTTPSignature * @param $actor * * @return array with actor url and public key + * @throws \Exception */ private static function fetchKey($id, $actor) { diff --git a/src/Util/JsonLD.php b/src/Util/JsonLD.php index e9c52d3d05..8cc9f274d9 100644 --- a/src/Util/JsonLD.php +++ b/src/Util/JsonLD.php @@ -18,7 +18,8 @@ class JsonLD * * @param $url * - * @return the loaded data + * @return mixed the loaded data + * @throws \JsonLdException */ public static function documentLoader($url) { @@ -53,7 +54,8 @@ class JsonLD * * @param array $json * - * @return normalized JSON string + * @return mixed|bool normalized JSON string + * @throws Exception */ public static function normalize($json) { @@ -77,7 +79,8 @@ class JsonLD * * @param array $json * - * @return comacted JSON array + * @return array Compacted JSON array + * @throws Exception */ public static function compact($json) { @@ -131,7 +134,7 @@ class JsonLD * @param $element * @param $key * - * @return fetched element array + * @return array fetched element */ public static function fetchElementArray($array, $element, $key = '@id') { @@ -172,7 +175,7 @@ class JsonLD * @param $type * @param $type_value * - * @return fetched element + * @return string fetched element */ public static function fetchElement($array, $element, $key = '@id', $type = null, $type_value = null) { diff --git a/src/Util/Network.php b/src/Util/Network.php index 5cac96b79c..4e4d329d3d 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -31,6 +31,7 @@ class Network * @param string $cookiejar Path to cookie jar file * * @return string The fetched content + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchUrl($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = '') { @@ -55,6 +56,7 @@ class Network * @param string $cookiejar Path to cookie jar file * * @return CurlResult With all relevant information, 'body' contains the actual fetched content. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchUrlFull($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = '') { @@ -86,6 +88,7 @@ class Network * 'header' => header array * * @return CurlResult + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function curl($url, $binary = false, &$redirects = 0, $opts = []) { @@ -245,6 +248,7 @@ class Network * @param integer $timeout The timeout in seconds, default system config value or 60 seconds * * @return CurlResult The content + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function post($url, $params, $headers = null, &$redirects = 0, $timeout = 0) { @@ -347,6 +351,7 @@ class Network * * @param string $url The URL to be validated * @return string|boolean The actual working URL, false else + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isUrlValid($url) { @@ -378,6 +383,7 @@ class Network * * @param string $addr The email address * @return boolean True if it's a valid email address, false if it's not + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isEmailDomainValid($addr) { @@ -409,6 +415,7 @@ class Network * * @param string $url URL which get tested * @return boolean True if url is allowed otherwise return false + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isUrlAllowed($url) { @@ -454,6 +461,7 @@ class Network * @param string $url The url to check the domain from * * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isUrlBlocked($url) { @@ -483,7 +491,8 @@ class Network * * @param string $email email address * @return boolean False if not allowed, true if allowed - * or if allowed list is not configured + * or if allowed list is not configured + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isEmailDomainAllowed($email) { @@ -597,14 +606,15 @@ class Network * This function strips tracking query params and follows redirections, either * through HTTP code or meta refresh tags. Stops after 10 redirections. * - * @todo Remove the $fetchbody parameter that generates an extraneous HEAD request + * @todo Remove the $fetchbody parameter that generates an extraneous HEAD request * - * @see ParseUrl::getSiteinfo + * @see ParseUrl::getSiteinfo * * @param string $url A user-submitted URL * @param int $depth The current redirection recursion level (internal) * @param bool $fetchbody Wether to fetch the body or not after the HEAD requests * @return string A canonical URL + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function finalUrl($url, $depth = 1, $fetchbody = false) { diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index cdafc7387b..e2bd1e4e5b 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -22,10 +22,10 @@ class ParseUrl * @brief Search for chached embeddable data of an url otherwise fetch it * * @param string $url The url of the page which should be scraped - * @param bool $no_guessing If true the parse doens't search for - * preview pictures - * @param bool $do_oembed The false option is used by the function fetch_oembed() - * to avoid endless loops + * @param bool $no_guessing If true the parse doens't search for + * preview pictures + * @param bool $do_oembed The false option is used by the function fetch_oembed() + * to avoid endless loops * * @return array which contains needed data for embedding * string 'url' => The url of the parsed page @@ -37,7 +37,8 @@ class ParseUrl * array'images' = Array of preview pictures * string 'keywords' => The tags which belong to the content * - * @see ParseUrl::getSiteinfo() for more information about scraping + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see ParseUrl::getSiteinfo() for more information about scraping * embeddable content */ public static function getSiteinfoCached($url, $no_guessing = false, $do_oembed = true) @@ -68,6 +69,7 @@ class ParseUrl return $data; } + /** * @brief Parse a page for embeddable content information * @@ -79,11 +81,11 @@ class ParseUrl * \ * * @param string $url The url of the page which should be scraped - * @param bool $no_guessing If true the parse doens't search for - * preview pictures - * @param bool $do_oembed The false option is used by the function fetch_oembed() - * to avoid endless loops - * @param int $count Internal counter to avoid endless loops + * @param bool $no_guessing If true the parse doens't search for + * preview pictures + * @param bool $do_oembed The false option is used by the function fetch_oembed() + * to avoid endless loops + * @param int $count Internal counter to avoid endless loops * * @return array which contains needed data for embedding * string 'url' => The url of the parsed page @@ -95,7 +97,8 @@ class ParseUrl * array'images' = Array of preview pictures * string 'keywords' => The tags which belong to the content * - * @todo https://developers.google.com/+/plugins/snippet/ + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo https://developers.google.com/+/plugins/snippet/ * @verbatim * * diff --git a/src/Util/Proxy.php b/src/Util/Proxy.php index be70077f15..fc65047b93 100644 --- a/src/Util/Proxy.php +++ b/src/Util/Proxy.php @@ -60,6 +60,7 @@ class Proxy * @param string $size One of the ProxyUtils::SIZE_* constants * * @return string The proxyfied URL or relative path + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function proxifyUrl($url, $writemode = false, $size = '') { @@ -138,6 +139,7 @@ class Proxy * @param string $html Un-proxified HTML code * * @return string Proxified HTML code + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function proxifyHtml($html) { @@ -151,6 +153,7 @@ class Proxy * * @param string $url * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function isLocalImage($url) { @@ -190,6 +193,7 @@ class Proxy * * @param array $matches Matches from preg_replace_callback() * @return string Proxified HTML image tag + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function replaceUrl(array $matches) { diff --git a/src/Util/Strings.php b/src/Util/Strings.php index a11ac2fd58..0a476a76be 100644 --- a/src/Util/Strings.php +++ b/src/Util/Strings.php @@ -13,12 +13,13 @@ use Friendica\Core\Logger; */ class Strings { - /** - * @brief Generates a pseudo-random string of hexadecimal characters - * - * @param int $size - * @return string - */ + /** + * @brief Generates a pseudo-random string of hexadecimal characters + * + * @param int $size + * @return string + * @throws \Exception + */ public static function getRandomHex($size = 64) { $byte_size = ceil($size / 2); @@ -139,14 +140,15 @@ class Strings return $word; } - /** - * @brief Translate and format the network name of a contact - * - * @param string $network Network name of the contact (e.g. dfrn, rss and so on) - * @param string $url The contact url - * - * @return string Formatted network name - */ + /** + * Translate and format the network name of a contact + * + * @param string $network Network name of the contact (e.g. dfrn, rss and so on) + * @param string $url The contact url + * + * @return string Formatted network name + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ public static function formatNetworkName($network, $url = '') { if ($network != '') { @@ -240,12 +242,13 @@ class Strings return $s; } - /** - * @brief Decode Base64 Encoded URL and translate -_ to +/ - * @param string $s URL to decode - * - * @return string Decoded URL - */ + /** + * @brief Decode Base64 Encoded URL and translate -_ to +/ + * @param string $s URL to decode + * + * @return string Decoded URL + * @throws \Exception + */ public static function base64UrlDecode($s) { if (is_array($s)) { diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index b6392d72fc..b52b939565 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -99,12 +99,13 @@ class Temporal * arguments follow convention as other field_* template array: * 'name', 'label', $value, 'help' * - * @param string $name Name of the selector - * @param string $label Label for the selector + * @param string $name Name of the selector + * @param string $label Label for the selector * @param string $current Timezone - * @param string $help Help text + * @param string $help Help text * * @return string Parsed HTML + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getTimezoneField($name = 'timezone', $label = '', $current = 'America/Los_Angeles', $help = '') { @@ -123,6 +124,7 @@ class Temporal * * @param string $dob Date of Birth * @return string Formatted HTML + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getDateofBirthField($dob) { @@ -163,6 +165,7 @@ class Temporal * @param string $id ID and name of datetimepicker (defaults to "datetimepicker") * * @return string Parsed HTML output. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getDateField($min, $max, $default, $id = 'datepicker') { @@ -177,6 +180,7 @@ class Temporal * @param string $id ID and name of datetimepicker (defaults to "timepicker") * * @return string Parsed HTML output. + * @throws \Exception */ public static function getTimeField($h, $m, $id = 'timepicker') { @@ -189,6 +193,7 @@ class Temporal * @param DateTime $minDate Minimum date * @param DateTime $maxDate Maximum date * @param DateTime $defaultDate Default date + * @param $label * @param string $id Id and name of datetimepicker (defaults to "datetimepicker") * @param bool $pickdate true to show date picker (default) * @param bool $picktime true to show time picker (default) @@ -198,7 +203,8 @@ class Temporal * * @return string Parsed HTML output. * - * @todo Once browser support is better this could probably be replaced with + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @todo Once browser support is better this could probably be replaced with * native HTML5 date picker. */ public static function getDateTimeField( @@ -348,11 +354,12 @@ class Temporal * and become a year older. If you wish me happy birthday on January 1 * (San Bruno time), you'll be a day late. * - * @param string $dob Date of Birth - * @param string $owner_tz (optional) Timezone of the person of interest + * @param string $dob Date of Birth + * @param string $owner_tz (optional) Timezone of the person of interest * @param string $viewer_tz (optional) Timezone of the person viewing * * @return int Age in years + * @throws \Exception */ public static function getAgeByTimezone($dob, $owner_tz = '', $viewer_tz = '') { @@ -404,6 +411,7 @@ class Temporal * @param int $m Month (1=January, 12=December) * * @return string day 0 = Sunday through 6 = Saturday + * @throws \Exception */ private static function getFirstDayInMonth($y, $m) { @@ -420,14 +428,15 @@ class Temporal * altering td class. * Months count from 1. * - * @param int $y Year - * @param int $m Month + * @param int $y Year + * @param int $m Month * @param array $links (default null) * @param string $class * * @return string * - * @todo Provide (prev, next) links, define class variations for different size calendars + * @throws \Exception + * @todo Provide (prev, next) links, define class variations for different size calendars */ public static function getCalendarTable($y = 0, $m = 0, $links = null, $class = '') { diff --git a/src/Util/XML.php b/src/Util/XML.php index c115e4d0de..09072610c1 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -230,17 +230,18 @@ class XML * (namespaces, lowercase tags, get_attribute default changed, more...) * * Examples: $array = Xml::toArray(file_get_contents('feed.xml')); - * $array = Xml::toArray(file_get_contents('feed.xml', true, 1, 'attribute')); + * $array = Xml::toArray(file_get_contents('feed.xml', true, 1, 'attribute')); * - * @param object $contents The XML text - * @param boolean $namespaces True or false include namespace information - * in the returned array as array elements. - * @param integer $get_attributes 1 or 0. If this is 1 the function will get the attributes as well as the tag values - - * this results in a different array structure in the return value. - * @param string $priority Can be 'tag' or 'attribute'. This will change the way the resulting - * array sturcture. For 'tag', the tags are given more importance. + * @param object $contents The XML text + * @param boolean $namespaces True or false include namespace information + * in the returned array as array elements. + * @param integer $get_attributes 1 or 0. If this is 1 the function will get the attributes as well as the tag values - + * this results in a different array structure in the return value. + * @param string $priority Can be 'tag' or 'attribute'. This will change the way the resulting + * array sturcture. For 'tag', the tags are given more importance. * * @return array The parsed XML in an array form. Use print_r() to see the resulting array structure. + * @throws \Exception */ public static function toArray($contents, $namespaces = true, $get_attributes = 1, $priority = 'attribute') { diff --git a/src/Worker/APDelivery.php b/src/Worker/APDelivery.php index 2fabb4a4eb..798a9b49a1 100644 --- a/src/Worker/APDelivery.php +++ b/src/Worker/APDelivery.php @@ -21,6 +21,8 @@ class APDelivery extends BaseObject * @param integer $target_id * @param string $inbox * @param integer $uid + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function execute($cmd, $target_id, $inbox, $uid) { diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php index 837c0020fa..1db7d916d1 100644 --- a/src/Worker/Cron.php +++ b/src/Worker/Cron.php @@ -133,10 +133,11 @@ class Cron /** * @brief Poll contacts for unreceived messages * - * @todo Currently it seems as if the following parameter aren't used at all ... + * @todo Currently it seems as if the following parameter aren't used at all ... * - * @param string $parameter Parameter (force, restart, ...) for the contact polling + * @param string $parameter Parameter (force, restart, ...) for the contact polling * @param integer $generation + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function pollContacts($parameter, $generation) { $manual_id = 0; diff --git a/src/Worker/CronJobs.php b/src/Worker/CronJobs.php index ca50e0e75f..f723cf69f1 100644 --- a/src/Worker/CronJobs.php +++ b/src/Worker/CronJobs.php @@ -134,6 +134,7 @@ class CronJobs * @brief Clear cache entries * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function clearCache(App $a) { @@ -231,6 +232,8 @@ class CronJobs * @brief Repair missing values in Diaspora contacts * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function repairDiaspora(App $a) { diff --git a/src/Worker/DBClean.php b/src/Worker/DBClean.php index 67f073b10f..f123b2dd89 100644 --- a/src/Worker/DBClean.php +++ b/src/Worker/DBClean.php @@ -47,16 +47,17 @@ class DBClean { * * Values for $stage: * ------------------ - * 1: Old global item entries from item table without user copy. - * 2: Items without parents. - * 3: Orphaned data from thread table. - * 4: Orphaned data from notify table. - * 5: Orphaned data from notify-threads table. - * 6: Orphaned data from sign table. - * 7: Orphaned data from term table. - * 8: Expired threads. - * 9: Old global item entries from expired threads. - * 10: Old conversations. + * 1: Old global item entries from item table without user copy. + * 2: Items without parents. + * 3: Orphaned data from thread table. + * 4: Orphaned data from notify table. + * 5: Orphaned data from notify-threads table. + * 6: Orphaned data from sign table. + * 7: Orphaned data from term table. + * 8: Expired threads. + * 9: Old global item entries from expired threads. + * 10: Old conversations. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function removeOrphans($stage) { $count = 0; diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index d7d9ac504d..49fe47c54c 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -230,6 +230,8 @@ class Delivery extends BaseObject * @param boolean $public_message Is the content public? * @param boolean $top_level Is it a thread starter? * @param boolean $followup Is it an answer to a remote post? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup) { @@ -351,6 +353,8 @@ class Delivery extends BaseObject * @param boolean $public_message Is the content public? * @param boolean $top_level Is it a thread starter? * @param boolean $followup Is it an answer to a remote post? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup) { @@ -414,6 +418,8 @@ class Delivery extends BaseObject * @param array $contact Contact record of the receiver * @param array $owner Owner record of the sender * @param array $target_item Item record of the content + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverMail($cmd, $contact, $owner, $target_item) { diff --git a/src/Worker/DiscoverPoCo.php b/src/Worker/DiscoverPoCo.php index 55eeec98f2..c2a81e7e72 100644 --- a/src/Worker/DiscoverPoCo.php +++ b/src/Worker/DiscoverPoCo.php @@ -267,6 +267,9 @@ class DiscoverPoCo * @brief Search for GNU Social user with gstools.org * * @param string $search User name + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function gsSearchUser($search) { diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index f6b1d23cf0..d991e6a4e9 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -515,9 +515,11 @@ class Notifier /** * @param int $self_user_id - * @param int $priority The priority the Notifier queue item was created with - * @param string $created The date the Notifier queue item was created on + * @param int $priority The priority the Notifier queue item was created with + * @param string $created The date the Notifier queue item was created on * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function notifySelfRemoval($self_user_id, $priority, $created) { @@ -550,9 +552,11 @@ class Notifier * @param string $cmd * @param array $target_item * @param array $parent - * @param int $priority The priority the Notifier queue item was created with - * @param string $created The date the Notifier queue item was created on + * @param int $priority The priority the Notifier queue item was created with + * @param string $created The date the Notifier queue item was created on * @return int The number of delivery tasks created + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function activityPubDelivery($cmd, array $target_item, array $parent, $priority, $created) { diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 4cfcf1037e..112c79c8cd 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -698,7 +698,8 @@ class OnePoll * @brief Updates a personal contact entry and the public contact entry * * @param array $contact The personal contact entry - * @param array $fields The fields that are updated + * @param array $fields The fields that are updated + * @throws \Exception */ private static function updateContact(array $contact, array $fields) { From af9067a381430b520a155bd3803a338d44cfaace Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 01:07:42 -0500 Subject: [PATCH 142/728] Update PHPDoc in mod/ --- mod/admin.php | 42 ++++++++++++++++++-- mod/dfrn_request.php | 3 ++ mod/fbrowser.php | 2 + mod/hovercard.php | 3 +- mod/item.php | 17 ++++---- mod/match.php | 3 ++ mod/network.php | 38 ++++++++++++------ mod/parse_url.php | 16 ++++---- mod/ping.php | 50 ++++++++++++------------ mod/receive.php | 4 +- mod/smilies.php | 3 +- mod/tagrm.php | 2 + mod/view.php | 3 +- src/Core/PConfig.php | 2 +- src/Core/Renderer.php | 2 +- src/Model/GContact.php | 2 +- src/Object/Image.php | 4 +- src/Protocol/ActivityPub/Transmitter.php | 7 ++-- 18 files changed, 134 insertions(+), 69 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 17e58940ea..e5df09d0ea 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -62,7 +62,8 @@ function admin_init(App $a) * return the HTML for the pages of the admin panel. * * @param App $a - * + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_post(App $a) { @@ -161,6 +162,7 @@ function admin_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_content(App $a) { @@ -312,6 +314,7 @@ function admin_content(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_tos(App $a) { @@ -334,6 +337,7 @@ function admin_page_tos(App $a) * @brief Process send data from Admin TOS Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_tos_post(App $a) { @@ -366,6 +370,7 @@ function admin_page_tos_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_blocklist(App $a) { @@ -406,6 +411,7 @@ function admin_page_blocklist(App $a) * @brief Process send data from Admin Blocklist Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_blocklist_post(App $a) { @@ -450,6 +456,8 @@ function admin_page_blocklist_post(App $a) * @brief Process data send by the contact block admin page * * @param App $a + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_contactblock_post(App $a) { @@ -482,6 +490,7 @@ function admin_page_contactblock_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_contactblock(App $a) { @@ -534,6 +543,7 @@ function admin_page_contactblock(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_deleteitem(App $a) { @@ -558,6 +568,7 @@ function admin_page_deleteitem(App $a) * URLs like the full /display URL to make the process more easy for the admin. * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_deleteitem_post(App $a) { @@ -597,6 +608,7 @@ function admin_page_deleteitem_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_federation(App $a) { @@ -783,6 +795,7 @@ function admin_page_federation(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_queue(App $a) { @@ -825,7 +838,9 @@ function admin_page_queue(App $a) * The returned string holds the content of the page. * * @param App $a + * @param $deferred * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_workerqueue(App $a, $deferred) { @@ -875,6 +890,7 @@ function admin_page_workerqueue(App $a, $deferred) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_summary(App $a) { @@ -993,6 +1009,7 @@ function admin_page_summary(App $a) * @brief Process send data from Admin Site Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_site_post(App $a) { @@ -1170,10 +1187,13 @@ function admin_page_site_post(App $a) $relay_server_tags = (!empty($_POST['relay_server_tags']) ? Strings::escapeTags(trim($_POST['relay_server_tags'])) : ''); $relay_user_tags = !empty($_POST['relay_user_tags']); $active_panel = (!empty($_POST['active_panel']) ? "#" . Strings::escapeTags(trim($_POST['active_panel'])) : ''); - + + /** + * @var $storagebackend \Friendica\Model\Storage\IStorage + */ $storagebackend = Strings::escapeTags(trim(defaults($_POST, 'storagebackend', ''))); StorageManager::setBackend($storagebackend); - + // save storage backend form if (!is_null($storagebackend) && $storagebackend != "") { $storage_opts = $storagebackend::getOptions(); @@ -1397,6 +1417,7 @@ function admin_page_site_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_site(App $a) { @@ -1518,6 +1539,9 @@ function admin_page_site(App $a) /* storage backend */ $storage_backends = StorageManager::listBackends(); + /** + * @var $storage_current_backend \Friendica\Model\Storage\IStorage + */ $storage_current_backend = StorageManager::getBackend(); $storage_backends_choices = [ @@ -1677,7 +1701,8 @@ function admin_page_site(App $a) * * @param App $a * @return string - * */ + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ function admin_page_dbsync(App $a) { $o = ''; @@ -1767,6 +1792,7 @@ function admin_page_dbsync(App $a) * @brief Process data send by Users admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_users_post(App $a) { @@ -1884,6 +1910,7 @@ function admin_page_users_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_users(App $a) { @@ -2082,6 +2109,7 @@ function admin_page_users(App $a) * @param App $a * @param array $addons_admin A list of admin addon names * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_addons(App $a, array $addons_admin) { @@ -2287,6 +2315,7 @@ function rebuild_theme_table($themes) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_themes(App $a) { @@ -2457,6 +2486,7 @@ function admin_page_themes(App $a) * @brief Prosesses data send by Logs admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_logs_post(App $a) { @@ -2492,6 +2522,7 @@ function admin_page_logs_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_logs(App $a) { @@ -2548,6 +2579,7 @@ function admin_page_logs(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_viewlogs(App $a) { @@ -2591,6 +2623,7 @@ function admin_page_viewlogs(App $a) * @brief Prosesses data send by the features admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_features_post(App $a) { @@ -2638,6 +2671,7 @@ function admin_page_features_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_features(App $a) { diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 0c7f4c2a6e..7b446b5ead 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -54,6 +54,9 @@ function dfrn_request_init(App $a) * in order to link our friend request with our own server cell. * After logging in, we click 'submit' to approve the linkage. * + * @param App $a + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function dfrn_request_post(App $a) { diff --git a/mod/fbrowser.php b/mod/fbrowser.php index c6e669d022..3401359052 100644 --- a/mod/fbrowser.php +++ b/mod/fbrowser.php @@ -14,6 +14,8 @@ use Friendica\Object\Image; /** * @param App $a + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function fbrowser_content(App $a) { diff --git a/mod/hovercard.php b/mod/hovercard.php index 976d7c1832..f71977f074 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -127,9 +127,10 @@ function hovercard_content() * @brief Get the raw content of a template file * * @param string $template The name of the template - * @param string $root Directory of the template + * @param string $root Directory of the template * * @return string|bool Output the raw content if existent, otherwise false + * @throws Exception */ function get_template_content($template, $root = '') { diff --git a/mod/item.php b/mod/item.php index 1c8525528b..5210f4ae8c 100644 --- a/mod/item.php +++ b/mod/item.php @@ -910,17 +910,18 @@ function item_content(App $a) /** * This function removes the tag $tag from the text $body and replaces it with - * the appropiate link. + * the appropriate link. * - * @param App $a Application instance @TODO is unused in this function's scope (excluding included files) - * @param string $body the text to replace the tag in - * @param string $inform a comma-seperated string containing everybody to inform - * @param string $str_tags string to add the tag to + * @param string $body the text to replace the tag in + * @param string $inform a comma-seperated string containing everybody to inform + * @param string $str_tags string to add the tag to * @param integer $profile_uid - * @param string $tag the tag to replace - * @param string $network The network of the post + * @param string $tag the tag to replace + * @param string $network The network of the post * - * @return boolean true if replaced, false if not replaced + * @return array|bool ['replaced' => $replaced, 'contact' => $contact]; + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function handle_tag(App $a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") { diff --git a/mod/match.php b/mod/match.php index 451821f9f1..57e05226db 100644 --- a/mod/match.php +++ b/mod/match.php @@ -25,6 +25,9 @@ use Friendica\Util\Proxy as ProxyUtils; * @param App $a App * * @return string + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws Exception */ function match_content(App $a) { diff --git a/mod/network.php b/mod/network.php index 015be2b17c..626fb1149b 100644 --- a/mod/network.php +++ b/mod/network.php @@ -200,15 +200,16 @@ function saved_searches($search) * Return selected tab from query * * urls -> returns - * '/network' => $no_active = 'active' - * '/network?f=&order=comment' => $comment_active = 'active' - * '/network?f=&order=post' => $postord_active = 'active' - * '/network?f=&conv=1', => $conv_active = 'active' - * '/network/new', => $new_active = 'active' - * '/network?f=&star=1', => $starred_active = 'active' - * '/network?f=&bmark=1', => $bookmarked_active = 'active' + * '/network' => $no_active = 'active' + * '/network?f=&order=comment' => $comment_active = 'active' + * '/network?f=&order=post' => $postord_active = 'active' + * '/network?f=&conv=1', => $conv_active = 'active' + * '/network/new', => $new_active = 'active' + * '/network?f=&star=1', => $starred_active = 'active' + * '/network?f=&bmark=1', => $bookmarked_active = 'active' * - * @return Array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active); + * @param App $a + * @return array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active); */ function network_query_get_sel_tab(App $a) { @@ -264,9 +265,11 @@ function network_query_get_sel_group(App $a) /** * @brief Sets the pager data and returns SQL * - * @param App $a The global App + * @param App $a The global App + * @param Pager $pager * @param integer $update Used for the automatic reloading * @return string SQL with the appropriate LIMIT clause + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function networkPager(App $a, Pager $pager, $update) { @@ -300,6 +303,7 @@ function networkPager(App $a, Pager $pager, $update) * @brief Sets items as seen * * @param array $condition The array with the SQL condition + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function networkSetSeen($condition) { @@ -319,9 +323,12 @@ function networkSetSeen($condition) * * @param App $a The global App * @param array $items Items of the conversation + * @param Pager $pager * @param string $mode Display mode for the conversation * @param integer $update Used for the automatic reloading + * @param string $ordering * @return string HTML of the conversation + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function networkConversation(App $a, $items, Pager $pager, $mode, $update, $ordering = '') { @@ -386,10 +393,11 @@ function network_content(App $a, $update = 0, $parent = 0) /** * @brief Get the network content in flat view * - * @param Pager $pager * @param App $a The global App * @param integer $update Used for the automatic reloading * @return string HTML of the network content in flat view + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @global Pager $pager */ function networkFlatView(App $a, $update = 0) { @@ -477,11 +485,12 @@ function networkFlatView(App $a, $update = 0) /** * @brief Get the network content in threaded view * - * @global Pager $pager * @param App $a The global App * @param integer $update Used for the automatic reloading * @param integer $parent * @return string HTML of the network content in flat view + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @global Pager $pager */ function networkThreadedView(App $a, $update, $parent) { @@ -1039,13 +1048,16 @@ function network_tabs(App $a) * of the page to make the correct asynchronous call. This is obtained through the Pager that was instantiated in * networkThreadedView or networkFlatView. * - * @global Pager $pager - * @param App $a * @param string $htmlhead The head tag HTML string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @global Pager $pager */ function network_infinite_scroll_head(App $a, &$htmlhead) { /// @TODO this will have to be converted to a static property of the converted Module\Network class + /** + * @var $pager Pager + */ global $pager; if (PConfig::get(local_user(), 'system', 'infinite_scroll') diff --git a/mod/parse_url.php b/mod/parse_url.php index 14ec4d42ce..b982ccf084 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -144,18 +144,18 @@ function parse_url_content(App $a) * Note: We have moved the function to ParseUrl.php. This function is only for * legacy support and will be remove in the future * - * @param type $url The url of the page which should be scraped - * @param type $no_guessing If true the parse doens't search for - * preview pictures - * @param type $do_oembed The false option is used by the function fetch_oembed() - * to avoid endless loops + * @param string $url The url of the page which should be scraped + * @param bool $no_guessing If true the parse doens't search for + * preview pictures + * @param bool $do_oembed The false option is used by the function fetch_oembed() + * to avoid endless loops * * @return array which contains needed data for embedding * - * @see ParseUrl::getSiteinfoCached() + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see ParseUrl::getSiteinfoCached() * - * @todo Remove this function after all Addons has been changed to use - * ParseUrl::getSiteinfoCached + * @deprecated since version 3.6 use ParseUrl::getSiteinfoCached instead */ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) { diff --git a/mod/ping.php b/mod/ping.php index 872e9f935b..8b50b78c83 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -30,30 +30,31 @@ use Friendica\Util\XML; * * Expected JSON structure: * { - * "result": { - * "intro": 0, - * "mail": 0, - * "net": 0, - * "home": 0, - * "register": 0, - * "all-events": 0, - * "all-events-today": 0, - * "events": 0, - * "events-today": 0, - * "birthdays": 0, - * "birthdays-today": 0, - * "groups": [ ], - * "forums": [ ], - * "notify": 0, - * "notifications": [ ], - * "sysmsgs": { - * "notice": [ ], - * "info": [ ] - * } - * } - * } + * "result": { + * "intro": 0, + * "mail": 0, + * "net": 0, + * "home": 0, + * "register": 0, + * "all-events": 0, + * "all-events-today": 0, + * "events": 0, + * "events-today": 0, + * "birthdays": 0, + * "birthdays-today": 0, + * "groups": [ ], + * "forums": [ ], + * "notify": 0, + * "notifications": [ ], + * "sysmsgs": { + * "notice": [ ], + * "info": [ ] + * } + * } + * } * * @param App $a The Friendica App instance + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function ping_init(App $a) { @@ -393,6 +394,7 @@ function ping_init(App $a) * * @param int $uid User id * @return array Associative array of notifications + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function ping_get_notifications($uid) { @@ -479,8 +481,8 @@ function ping_get_notifications($uid) * @param array $notifs Complete list of notification * @param array $sysmsgs List of system notice messages * @param array $sysmsgs_info List of system info messages - * @param array $groups_unseen List of unseen group messages - * @param array $forums_unseen List of unseen forum messages + * @param array $groups_unseen List of unseen group items + * @param array $forums_unseen List of unseen forum items * * @return array XML-transform ready data array */ diff --git a/mod/receive.php b/mod/receive.php index 690abea159..b0258acbd7 100644 --- a/mod/receive.php +++ b/mod/receive.php @@ -12,8 +12,10 @@ use Friendica\Database\DBA; use Friendica\Protocol\Diaspora; /** - * @param object $a App + * @param App $a App * @return void + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function receive_post(App $a) { diff --git a/mod/smilies.php b/mod/smilies.php index ecea3400e2..bbb7de2e2e 100644 --- a/mod/smilies.php +++ b/mod/smilies.php @@ -7,8 +7,9 @@ use Friendica\Content\Smilies; use Friendica\Core\System; /** - * @param object $a App + * @param App $a App * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function smilies_content(App $a) { diff --git a/mod/tagrm.php b/mod/tagrm.php index 24a41be95c..f6f2a9a29e 100644 --- a/mod/tagrm.php +++ b/mod/tagrm.php @@ -36,8 +36,10 @@ function tagrm_post(App $a) /** * Updates tags from an item + * * @param $item_id * @param $tags array + * @throws Exception */ function update_tags($item_id, $tags){ if (empty($item_id) || empty($tags)){ diff --git a/mod/view.php b/mod/view.php index ce260db185..1b2e379a93 100644 --- a/mod/view.php +++ b/mod/view.php @@ -1,8 +1,9 @@ Date: Mon, 7 Jan 2019 10:24:06 -0500 Subject: [PATCH 143/728] Update more PHPDoc, including in include/ --- include/conversation.php | 41 +++++++++++++++++++++++++------ include/dba.php | 3 ++- include/enotify.php | 17 ++++++++----- include/items.php | 9 +++++++ include/text.php | 1 + mod/item.php | 1 + mod/network.php | 5 ++++ mod/uexport.php | 3 +++ src/Content/ForumManager.php | 7 +++--- src/Content/Text/BBCode.php | 2 +- src/Core/NotificationsManager.php | 2 ++ src/Model/Contact.php | 1 + src/Model/Event.php | 26 +++++++++++--------- src/Model/GContact.php | 7 ++++++ src/Model/Queue.php | 1 + src/Model/User.php | 2 ++ src/Protocol/PortableContact.php | 1 + 17 files changed, 99 insertions(+), 30 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index e15ac3f71a..9dd7d53c86 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -117,6 +117,10 @@ function item_redir_and_replace_images($body, $images, $cid) { /** * Render actions localized + * + * @param $item + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function localize_item(&$item) { @@ -367,6 +371,8 @@ function localize_item(&$item) /** * Count the total of comments on this item and its desendants * @TODO proper type-hint + doc-tag + * @param $item + * @return int */ function count_descendants($item) { $total = count($item['children']); @@ -436,7 +442,17 @@ function conv_get_blocklist() * The $mode parameter decides between the various renderings and also * figures out how to determine page owner and other contextual items * that are based on unique features of the calling module. - * + * @param App $a + * @param array $items + * @param Pager $pager + * @param $mode + * @param $update + * @param bool $preview + * @param string $order + * @param int $uid + * @return string + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function conversation(App $a, array $items, Pager $pager, $mode, $update, $preview = false, $order = 'commented', $uid = 0) { @@ -783,7 +799,11 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ * * @param array $parents Parent items * + * @param $block_authors + * @param $order + * @param $uid * @return array items with parents and comments + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function conversation_add_children(array $parents, $block_authors, $order, $uid) { $max_comments = Config::get('system', 'max_comments', 100); @@ -912,9 +932,11 @@ function item_photo_menu($item) { * @brief Checks item to see if it is one of the builtin activities (like/dislike, event attendance, consensus items, etc.) * Increments the count of each matching activity and adds a link to the author as needed. * - * @param array $item + * @param array $item * @param array &$conv_responses (already created with builtin activity structure) * @return void + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function builtin_activity_puller($item, &$conv_responses) { foreach ($conv_responses as $mode => $v) { @@ -985,11 +1007,13 @@ function builtin_activity_puller($item, &$conv_responses) { /** * Format the vote text for a profile item - * @param int $cnt = number of people who vote the item - * @param array $arr = array of pre-linked names of likers/dislikers + * + * @param int $cnt = number of people who vote the item + * @param array $arr = array of pre-linked names of likers/dislikers * @param string $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe' - * @param int $id = item id + * @param int $id = item id * @return string formatted text + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function format_like($cnt, array $arr, $type, $id) { $o = ''; @@ -1199,8 +1223,8 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false) * * @param array $item_list * @param array $parent - * @param bool $recursive - * @return type + * @param bool $recursive + * @return array */ function get_item_children(array &$item_list, array $parent, $recursive = true) { @@ -1330,6 +1354,7 @@ function smart_flatten_conversation(array $parent) * @param array $item_list A list of items belonging to one or more conversations * @param string $order Either on "created" or "commented" * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function conv_sort(array $item_list, $order) { @@ -1425,7 +1450,7 @@ function sort_thr_created_rev(array $a, array $b) * * @param array $a * @param array $b - * @return type + * @return int|lt */ function sort_thr_commented(array $a, array $b) { diff --git a/include/dba.php b/include/dba.php index 9e168eac79..2d26a94720 100644 --- a/include/dba.php +++ b/include/dba.php @@ -9,8 +9,9 @@ use Friendica\Database\DBA; * DBA::select, DBA::exists, DBA::insert * DBA::delete, DBA::update, DBA::p, DBA::e * - * @param $args Query parameters (1 to N parameters of different types) + * @param $sql * @return array|bool Query array + * @throws Exception * @deprecated */ function q($sql) { diff --git a/include/enotify.php b/include/enotify.php index f0b3dd7c0e..be8552ed6e 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -21,10 +21,12 @@ use Friendica\Util\Strings; * @brief Creates a notification entry and possibly sends a mail * * @param array $params Array with the elements: - * uid, item, parent, type, otype, verb, event, - * link, subject, body, to_name, to_email, source_name, - * source_link, activity, preamble, notify_flags, - * language, show_in_notification_page + * uid, item, parent, type, otype, verb, event, + * link, subject, body, to_name, to_email, source_name, + * source_link, activity, preamble, notify_flags, + * language, show_in_notification_page + * @return bool|object + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function notification($params) { @@ -687,6 +689,7 @@ function notification($params) * @brief Checks for users who should be notified * * @param int $itemid ID of the item for which the check should be done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function check_user_notification($itemid) { // fetch all users in the thread @@ -702,9 +705,11 @@ function check_user_notification($itemid) { /** * @brief Checks for item related notifications and sends them * - * @param int $itemid ID of the item for which the check should be done - * @param int $uid User ID + * @param int $itemid ID of the item for which the check should be done + * @param int $uid User ID * @param string $defaulttype (Optional) Forces a notification with this type. + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function check_item_notification($itemid, $uid, $defaulttype = "") { $notification_data = ["uid" => $uid, "profiles" => []]; diff --git a/include/items.php b/include/items.php index 3dd405e786..2f98122b7b 100644 --- a/include/items.php +++ b/include/items.php @@ -242,6 +242,15 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) * model where comments can have sub-threads. That would require some massive sorting * to get all the feed items into a mostly linear ordering, and might still require * recursion. + * + * @param $xml + * @param array $importer + * @param array $contact + * @param $hub + * @param int $datedir + * @param int $pass + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0, $pass = 0) { diff --git a/include/text.php b/include/text.php index ff9fa5511a..40265eae3b 100644 --- a/include/text.php +++ b/include/text.php @@ -160,6 +160,7 @@ function redir_private_images($a, &$item) * * @param string $text String with bbcode. * @return string Formattet HTML. + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function prepare_text($text) { if (stristr($text, '[nosmile]')) { diff --git a/mod/item.php b/mod/item.php index 5210f4ae8c..576ad09d6d 100644 --- a/mod/item.php +++ b/mod/item.php @@ -912,6 +912,7 @@ function item_content(App $a) * This function removes the tag $tag from the text $body and replaces it with * the appropriate link. * + * @param App $a * @param string $body the text to replace the tag in * @param string $inform a comma-seperated string containing everybody to inform * @param string $str_tags string to add the tag to diff --git a/mod/network.php b/mod/network.php index 626fb1149b..a71447e5e5 100644 --- a/mod/network.php +++ b/mod/network.php @@ -328,6 +328,7 @@ function networkSetSeen($condition) * @param integer $update Used for the automatic reloading * @param string $ordering * @return string HTML of the conversation + * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function networkConversation(App $a, $items, Pager $pager, $mode, $update, $ordering = '') @@ -396,6 +397,7 @@ function network_content(App $a, $update = 0, $parent = 0) * @param App $a The global App * @param integer $update Used for the automatic reloading * @return string HTML of the network content in flat view + * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @global Pager $pager */ @@ -489,6 +491,7 @@ function networkFlatView(App $a, $update = 0) * @param integer $update Used for the automatic reloading * @param integer $parent * @return string HTML of the network content in flat view + * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @global Pager $pager */ @@ -949,6 +952,7 @@ function networkThreadedView(App $a, $update, $parent) * * @param App $a The global App * @return string Html of the networktab + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function network_tabs(App $a) { @@ -1048,6 +1052,7 @@ function network_tabs(App $a) * of the page to make the correct asynchronous call. This is obtained through the Pager that was instantiated in * networkThreadedView or networkFlatView. * + * @param App $a * @param string $htmlhead The head tag HTML string * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @global Pager $pager diff --git a/mod/uexport.php b/mod/uexport.php index 523e2fef85..17715ac35f 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -135,6 +135,9 @@ function uexport_account($a) { /** * echoes account data and items as separated json, one per line + * + * @param App $a + * @throws Exception */ function uexport_all(App $a) { diff --git a/src/Content/ForumManager.php b/src/Content/ForumManager.php index 88c22c5676..11847383fe 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/ForumManager.php @@ -188,9 +188,10 @@ class ForumManager * Count unread items of connected forums and private groups * * @return array - * 'id' => contact id - * 'name' => contact/forum name - * 'count' => counted unseen forum items + * 'id' => contact id + * 'name' => contact/forum name + * 'count' => counted unseen forum items + * @throws \Exception */ public static function countUnseenItems() { diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index b77923013b..357dc89d9a 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1150,7 +1150,7 @@ class BBCode extends BaseObject * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convert($text, $try_oembed = true, $simple_html = false, $for_plaintext = false) + public static function convert($text, $try_oembed = true, $simple_html = 0, $for_plaintext = false) { $a = self::getApp(); diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 2687719472..756a5ceb4b 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -132,6 +132,7 @@ class NotificationsManager extends BaseObject * @param array $note note array * @param bool $seen optional true or false, default true * @return bool true on success, false on errors + * @throws \Exception */ public function setSeen($note, $seen = true) { @@ -150,6 +151,7 @@ class NotificationsManager extends BaseObject * * @param bool $seen optional true or false. default true * @return bool true on success, false on error + * @throws \Exception */ public function setAllSeen($seen = true) { diff --git a/src/Model/Contact.php b/src/Model/Contact.php index ea4a006ef9..4a8a8cdaba 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1054,6 +1054,7 @@ class Contact extends BaseObject * * @param int $uid uid * @return array + * @throws \Exception */ public static function getUngroupedList($uid) { diff --git a/src/Model/Event.php b/src/Model/Event.php index e7509c48e1..8b7c7e706c 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -471,6 +471,7 @@ class Event extends BaseObject * @param int $event_id The ID of the event in the event table * @param string $sql_extra * @return array Query result + * @throws \Exception */ public static function getListById($owner_uid, $event_id, $sql_extra = '') { @@ -499,17 +500,18 @@ class Event extends BaseObject /** * @brief Get all events in a specific time frame. * - * @param int $owner_uid The User ID of the owner of the events. - * @param array $event_params An associative array with - * int 'ignore' => - * string 'start' => Start time of the timeframe. - * string 'finish' => Finish time of the timeframe. - * string 'adjust_start' => - * string 'adjust_finish' => + * @param int $owner_uid The User ID of the owner of the events. + * @param array $event_params An associative array with + * int 'ignore' => + * string 'start' => Start time of the timeframe. + * string 'finish' => Finish time of the timeframe. + * string 'adjust_start' => + * string 'adjust_finish' => * - * @param string $sql_extra Additional sql conditions (e.g. permission request). + * @param string $sql_extra Additional sql conditions (e.g. permission request). * * @return array Query results. + * @throws \Exception */ public static function getListByDate($owner_uid, $event_params, $sql_extra = '') { @@ -633,12 +635,13 @@ class Event extends BaseObject /** * @brief Format event to export format (ical/csv). * - * @param array $events Query result for events. - * @param string $format The output format (ical/csv). + * @param array $events Query result for events. + * @param string $format The output format (ical/csv). * + * @param $timezone * @return string Content according to selected export format. * - * @todo Implement timezone support + * @todo Implement timezone support */ private static function formatListForExport(array $events, $format, $timezone) { @@ -954,6 +957,7 @@ class Event extends BaseObject * 'name' => The name of the location,
* 'address' => The address of the location,
* 'coordinates' => Latitude‎ and longitude‎ (e.g. '48.864716,2.349014').
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function locationToArray($s = '') { if ($s == '') { diff --git a/src/Model/GContact.php b/src/Model/GContact.php index 57259651c7..c077aa6b4a 100644 --- a/src/Model/GContact.php +++ b/src/Model/GContact.php @@ -242,6 +242,7 @@ class GContact * @param integer $uid id * @param integer $cid id * @return integer + * @throws Exception */ public static function countCommonFriends($uid, $cid) { @@ -269,6 +270,7 @@ class GContact * @param integer $uid id * @param integer $zcid zcid * @return integer + * @throws Exception */ public static function countCommonFriendsZcid($uid, $zcid) { @@ -295,6 +297,7 @@ class GContact * @param integer $limit optional, default 9999 * @param boolean $shuffle optional, default false * @return object + * @throws Exception */ public static function commonFriends($uid, $cid, $start = 0, $limit = 9999, $shuffle = false) { @@ -333,6 +336,7 @@ class GContact * @param integer $limit optional, default 9999 * @param boolean $shuffle optional, default false * @return object + * @throws Exception */ public static function commonFriendsZcid($uid, $zcid, $start = 0, $limit = 9999, $shuffle = false) { @@ -362,6 +366,7 @@ class GContact * @param integer $uid user * @param integer $cid cid * @return integer + * @throws Exception */ public static function countAllFriends($uid, $cid) { @@ -387,6 +392,7 @@ class GContact * @param integer $start optional, default 0 * @param integer $limit optional, default 80 * @return array + * @throws Exception */ public static function allFriends($uid, $cid, $start = 0, $limit = 80) { @@ -1053,6 +1059,7 @@ class GContact /** * @return string + * @throws Exception */ public static function getRandomUrl() { diff --git a/src/Model/Queue.php b/src/Model/Queue.php index ecbc0ed3b6..355433492c 100644 --- a/src/Model/Queue.php +++ b/src/Model/Queue.php @@ -52,6 +52,7 @@ class Queue * @param int $cid Contact id * * @return bool The communication with this contact has currently problems + * @throws \Exception */ public static function wasDelayed($cid) { diff --git a/src/Model/User.php b/src/Model/User.php index 23ba7e64d8..77cdcd6c26 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -729,6 +729,7 @@ class User * @param string $siteurl * @param string $password Plaintext password * @return NULL|boolean from notification() and email() inherited + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sendRegisterPendingEmail($user, $sitename, $siteurl, $password) { @@ -764,6 +765,7 @@ class User * @param string $siteurl * @param string $password Plaintext password * @return NULL|boolean from notification() and email() inherited + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function sendRegisterOpenEmail($user, $sitename, $siteurl, $password) { diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index fcbd26ecfa..da42a057ed 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -1522,6 +1522,7 @@ class PortableContact /** * @brief Returns a list of all known servers * @return array List of server urls + * @throws Exception */ public static function serverlist() { From cb3f09ae4f344ff83fca9dc435f3cbad1972737f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 16:28:14 -0500 Subject: [PATCH 144/728] Refactor namespaces - Remove unused use statements - Add required use statements - Escape global classes --- src/App.php | 1 - src/Content/ForumManager.php | 1 - src/Content/Text/Markdown.php | 1 - src/Content/Widget.php | 2 -- src/Content/Widget/TagCloud.php | 1 - src/Core/Cache/MemcachedCacheDriver.php | 1 - src/Core/Config.php | 1 - src/Core/Console/ArchiveContact.php | 1 - src/Core/Console/AutomaticInstallation.php | 2 -- src/Core/Installer.php | 1 - src/Core/Lock.php | 5 ++--- src/Core/NotificationsManager.php | 2 -- src/Core/Renderer.php | 1 - src/Core/StorageManager.php | 3 --- src/Core/System.php | 2 -- src/Core/Theme.php | 4 ++-- src/Core/UserImport.php | 3 --- src/Database/PostUpdate.php | 1 - src/LegacyModule.php | 2 +- src/Model/FileTag.php | 1 - src/Model/Group.php | 1 - src/Model/Item.php | 9 --------- src/Model/Mail.php | 1 - src/Model/Photo.php | 2 +- src/Model/Profile.php | 1 - src/Model/Storage/Database.php | 1 - src/Model/User.php | 1 - src/Module/Contact.php | 1 - src/Module/Inbox.php | 1 - src/Module/Install.php | 2 -- src/Module/Photo.php | 4 ---- src/Module/Proxy.php | 4 ---- src/Object/Image.php | 1 - src/Object/Post.php | 1 - src/Object/Thread.php | 1 - src/Protocol/ActivityPub.php | 1 + src/Protocol/ActivityPub/Processor.php | 1 - src/Protocol/ActivityPub/Transmitter.php | 1 - src/Protocol/Email.php | 1 - src/Util/HTTPSignature.php | 4 ---- src/Util/LDSignature.php | 3 --- src/Util/Proxy.php | 2 -- src/Util/Security.php | 3 --- src/Util/Temporal.php | 1 - src/Worker/APDelivery.php | 1 - src/Worker/DBUpdate.php | 1 - src/Worker/PubSubPublish.php | 1 - src/Worker/SpoolPost.php | 1 - 48 files changed, 7 insertions(+), 81 deletions(-) diff --git a/src/App.php b/src/App.php index e30cc92120..6421a4c212 100644 --- a/src/App.php +++ b/src/App.php @@ -8,7 +8,6 @@ use Detection\MobileDetect; use DOMDocument; use DOMXPath; use Exception; -use Friendica\Core\Logger; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; use Psr\Log\LoggerInterface; diff --git a/src/Content/ForumManager.php b/src/Content/ForumManager.php index 11847383fe..d39ea30294 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/ForumManager.php @@ -6,7 +6,6 @@ namespace Friendica\Content; use Friendica\Core\Protocol; -use Friendica\Content\Feature; use Friendica\Content\Text\HTML; use Friendica\Core\L10n; use Friendica\Core\Renderer; diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index bf95e1a934..e54234bffe 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -9,7 +9,6 @@ namespace Friendica\Content\Text; use Friendica\BaseObject; use Friendica\Model\Contact; use Michelf\MarkdownExtra; -use Friendica\Content\Text\HTML; /** * Friendica-specific usage of Markdown diff --git a/src/Content/Widget.php b/src/Content/Widget.php index 3c3af4f6ac..b7fa5ab4e8 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -4,8 +4,6 @@ */ namespace Friendica\Content; -use Friendica\Content\ContactSelector; -use Friendica\Content\Feature; use Friendica\Core\Addon; use Friendica\Core\Config; use Friendica\Core\L10n; diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index e1ce921c04..d775d010a8 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -11,7 +11,6 @@ use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Item; -use Friendica\Util\Security; /** * TagCloud widget diff --git a/src/Core/Cache/MemcachedCacheDriver.php b/src/Core/Cache/MemcachedCacheDriver.php index 6453c307ce..687e67416a 100644 --- a/src/Core/Cache/MemcachedCacheDriver.php +++ b/src/Core/Cache/MemcachedCacheDriver.php @@ -6,7 +6,6 @@ use Friendica\Core\Cache; use Friendica\Core\Logger; use Exception; -use Friendica\Network\HTTPException\InternalServerErrorException; use Memcached; /** diff --git a/src/Core/Config.php b/src/Core/Config.php index fad50c0cb4..755dc6ebbc 100644 --- a/src/Core/Config.php +++ b/src/Core/Config.php @@ -10,7 +10,6 @@ namespace Friendica\Core; use Friendica\App; use Friendica\BaseObject; -use Friendica\Core\Config; /** * @brief Arbitrary system configuration storage diff --git a/src/Core/Console/ArchiveContact.php b/src/Core/Console/ArchiveContact.php index ffcd5a1658..27de85901e 100644 --- a/src/Core/Console/ArchiveContact.php +++ b/src/Core/Console/ArchiveContact.php @@ -2,7 +2,6 @@ namespace Friendica\Core\Console; -use Friendica\App; use Friendica\Core\L10n; use Friendica\Database\DBA; use Friendica\Util\Strings; diff --git a/src/Core/Console/AutomaticInstallation.php b/src/Core/Console/AutomaticInstallation.php index 7db2cc3e70..c38dab9806 100644 --- a/src/Core/Console/AutomaticInstallation.php +++ b/src/Core/Console/AutomaticInstallation.php @@ -7,8 +7,6 @@ use Friendica\BaseObject; use Friendica\Core\Config; use Friendica\Core\Installer; use Friendica\Core\Theme; -use Friendica\Database\DBA; -use Friendica\Database\DBStructure; use RuntimeException; class AutomaticInstallation extends Console diff --git a/src/Core/Installer.php b/src/Core/Installer.php index 6ea3d553cf..cf5dd9ffc2 100644 --- a/src/Core/Installer.php +++ b/src/Core/Installer.php @@ -6,7 +6,6 @@ namespace Friendica\Core; use DOMDocument; use Exception; -use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\Database\DBStructure; use Friendica\Object\Image; diff --git a/src/Core/Lock.php b/src/Core/Lock.php index 91c444253a..e8c8a70416 100644 --- a/src/Core/Lock.php +++ b/src/Core/Lock.php @@ -1,13 +1,12 @@ Date: Mon, 7 Jan 2019 01:11:16 -0500 Subject: [PATCH 145/728] Update namespace use calls in mod/ --- mod/amcd.php | 2 -- mod/api.php | 1 - mod/cal.php | 1 - mod/credits.php | 2 +- mod/delegate.php | 1 - mod/fetch.php | 2 -- mod/filerm.php | 1 - mod/follow.php | 1 - mod/group.php | 2 -- mod/ignored.php | 1 - mod/invite.php | 3 --- mod/like.php | 1 - mod/nogroup.php | 5 ----- mod/notice.php | 1 - mod/openid.php | 1 - mod/profile.php | 1 + mod/profile_photo.php | 1 - mod/randprof.php | 2 -- mod/redir.php | 1 - mod/removeme.php | 1 - mod/search.php | 1 - mod/starred.php | 1 - src/Core/Renderer.php | 1 + 23 files changed, 3 insertions(+), 31 deletions(-) diff --git a/mod/amcd.php b/mod/amcd.php index 31b812ecd9..ca5aa07aae 100644 --- a/mod/amcd.php +++ b/mod/amcd.php @@ -1,7 +1,5 @@ Date: Mon, 7 Jan 2019 11:25:00 -0500 Subject: [PATCH 146/728] Update namespaces declaration in include/ - Remove unused use statements - Add required use statements --- include/api.php | 1 + include/text.php | 17 ----------------- src/Core/Renderer.php | 1 - src/Module/Contact.php | 1 + src/Worker/PubSubPublish.php | 1 + 5 files changed, 3 insertions(+), 18 deletions(-) diff --git a/include/api.php b/include/api.php index 57bbd63993..86fd106f5e 100644 --- a/include/api.php +++ b/include/api.php @@ -31,6 +31,7 @@ use Friendica\Model\User; use Friendica\Network\FKOAuth1; use Friendica\Network\HTTPException; use Friendica\Network\HTTPException\BadRequestException; +use Friendica\Network\HTTPException\ExpectationFailedException; use Friendica\Network\HTTPException\ForbiddenException; use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Network\HTTPException\MethodNotAllowedException; diff --git a/include/text.php b/include/text.php index 40265eae3b..0b8bcacba5 100644 --- a/include/text.php +++ b/include/text.php @@ -4,31 +4,14 @@ */ use Friendica\App; -use Friendica\Content\ContactSelector; -use Friendica\Content\Feature; use Friendica\Content\Smilies; use Friendica\Content\Text\BBCode; -use Friendica\Core\Addon; -use Friendica\Core\Config; -use Friendica\Core\L10n; -use Friendica\Core\PConfig; use Friendica\Core\Protocol; -use Friendica\Core\System; -use Friendica\Database\DBA; use Friendica\Model\Contact; -use Friendica\Model\Event; -use Friendica\Model\Item; -use Friendica\Render\FriendicaSmarty; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Map; -use Friendica\Util\Proxy as ProxyUtils; -use Friendica\Core\Logger; -use Friendica\Core\Renderer; use Friendica\Model\FileTag; use Friendica\Util\Strings; use Friendica\Util\XML; -use Friendica\Content\Text\HTML; /** * Turn user/group ACLs stored as angle bracketed text into arrays diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 67bc5e3bab..9d2a7e22e5 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -8,7 +8,6 @@ namespace Friendica\Core; use Exception; use Friendica\BaseObject; use Friendica\Render\FriendicaSmarty; -use Friendica\Render\ITemplateEngine; /** * @brief This class handles Renderer related functions. diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 3b195cbdb7..a9413e1de5 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -8,6 +8,7 @@ use Friendica\Content\ContactSelector; use Friendica\Content\Nav; use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; +use Friendica\Content\Text\HTML; use Friendica\Content\Widget; use Friendica\Core\ACL; use Friendica\Core\Hook; diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index e5cbfb785b..9f5fcdcc5f 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -5,6 +5,7 @@ namespace Friendica\Worker; +use Friendica\BaseObject; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Database\DBA; From c5cb976b62b336c0ce9edb3b03cfd2b5c9af3450 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 12:24:01 -0500 Subject: [PATCH 147/728] Update PHPDoc in include/ --- include/api.php | 393 +++++++++++++++++++++++++++++++++++++++++++----- mod/view.php | 2 +- 2 files changed, 356 insertions(+), 39 deletions(-) diff --git a/include/api.php b/include/api.php index 86fd106f5e..329b49f609 100644 --- a/include/api.php +++ b/include/api.php @@ -86,7 +86,8 @@ function api_user() * @brief Get source name from API client * * @return string - * Client source name, default to "api" if unset/unknown + * Client source name, default to "api" if unset/unknown + * @throws Exception */ function api_source() { @@ -113,6 +114,7 @@ function api_source() * * @param string $str Source date, as UTC * @return string Date in UTC formatted as "D M d H:i:s +0000 Y" + * @throws Exception */ function api_date($str) { @@ -158,15 +160,17 @@ function api_register_func($path, $func, $auth = false, $method = API_METHOD_ANY * * @brief Login API user * - * @param object $a App - * @hook 'authenticate' - * array $addon_auth - * 'username' => username from login form - * 'password' => password from login form - * 'authenticated' => return status, - * 'user_record' => return authenticated user record - * @hook 'logged_in' - * array $user logged user record + * @param App $a App + * @throws InternalServerErrorException + * @throws UnauthorizedException + * @hook 'authenticate' + * array $addon_auth + * 'username' => username from login form + * 'password' => password from login form + * 'authenticated' => return status, + * 'user_record' => return authenticated user record + * @hook 'logged_in' + * array $user logged user record */ function api_login(App $a) { @@ -276,8 +280,9 @@ function api_check_method($method) * * @brief Main API entry point * - * @param object $a App + * @param App $a App * @return string|array API call result + * @throws Exception */ function api_call(App $a) { @@ -468,11 +473,15 @@ function api_error($type, $e) /** * @brief Set values for RSS template * - * @param App $a + * @param App $a * @param array $arr Array to be passed to template * @param array $user_info User info * @return array - * @todo find proper type-hints + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException + * @todo find proper type-hints */ function api_rss_extra(App $a, $arr, $user_info) { @@ -500,7 +509,8 @@ function api_rss_extra(App $a, $arr, $user_info) * * @param int $id Contact id * @return bool|string - * Contact url or False if contact id is unknown + * Contact url or False if contact id is unknown + * @throws Exception */ function api_unique_id_to_nurl($id) { @@ -516,8 +526,13 @@ function api_unique_id_to_nurl($id) /** * @brief Get user info array. * - * @param object $a App + * @param App $a App * @param int|string $contact_id Contact ID or URL + * @return array + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_get_user(App $a, $contact_id = null) { @@ -810,9 +825,13 @@ function api_get_user(App $a, $contact_id = null) /** * @brief return api-formatted array for item's author and owner * - * @param object $a App - * @param array $item item from db + * @param App $a App + * @param array $item item from db * @return array(array:author, array:owner) + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_item_get_user(App $a, $item) { @@ -832,8 +851,8 @@ function api_item_get_user(App $a, $item) /** * @brief walks recursively through an array with the possibility to change value and key * - * @param array $array The array to walk through - * @param string $callback The callback function + * @param array $array The array to walk through + * @param callable $callback The callback function * * @return array the transformed array */ @@ -935,7 +954,7 @@ function api_create_xml(array $data, $root_element) * @param string $type Return type (atom, rss, xml, json) * @param array $data JSON style array * - * @return (string|array) XML data or JSON data + * @return array|string (string|array) XML data or JSON data */ function api_format_data($root_element, $type, $data) { @@ -960,9 +979,16 @@ function api_format_data($root_element, $type, $data) /** * Returns an HTTP 200 OK response code and a representation of the requesting user if authentication was successful; * returns a 401 status code and an error message if not. + * * @see https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials * * @param string $type Return type (atom, rss, xml, json) + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_account_verify_credentials($type) { @@ -1010,6 +1036,7 @@ api_register_func('api/account/verify_credentials', 'api_account_verify_credenti * Get data from $_POST or $_GET * * @param string $k + * @return null */ function requestdata($k) { @@ -1028,6 +1055,11 @@ function requestdata($k) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_statuses_mediap($type) { @@ -1075,6 +1107,12 @@ api_register_func('api/statuses/mediap', 'api_statuses_mediap', true, API_METHOD * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws TooManyRequestsException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update */ function api_statuses_update($type) @@ -1217,6 +1255,11 @@ api_register_func('api/statuses/update_with_media', 'api_statuses_update', true, * Uploads an image to Friendica. * * @return array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload */ function api_media_upload() @@ -1262,7 +1305,12 @@ api_register_func('api/media/upload', 'api_media_upload', true, API_METHOD_POST) * * @param string $type Return type (atom, rss, xml, json) * + * @param int $item_id * @return array|string + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_status_show($type, $item_id = 0) { @@ -1361,6 +1409,11 @@ function api_status_show($type, $item_id = 0) * The author's most recent status will be returned inline. * * @param string $type Return type (atom, rss, xml, json) + * @return array|string + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-show */ function api_users_show($type) @@ -1437,6 +1490,10 @@ api_register_func('api/externalprofile/show', 'api_users_show'); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-search */ function api_users_search($type) @@ -1485,7 +1542,11 @@ api_register_func('api/users/search', 'api_users_search'); * @param string $type Return format: json or xml * * @return array|string + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException * @throws NotFoundException if the results are empty. + * @throws UnauthorizedException */ function api_users_lookup($type) { @@ -1518,6 +1579,10 @@ api_register_func('api/users/lookup', 'api_users_lookup', true); * * @return array|string * @throws BadRequestException if the "q" parameter is missing. + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_search($type) { @@ -1600,10 +1665,16 @@ api_register_func('api/search', 'api_search', true); /** * Returns the most recent statuses posted by the user and the users they follow. * - * @see https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-home_timeline + * @see https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-home_timeline * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @todo Optional parameters * @todo Add reply info */ @@ -1697,6 +1768,11 @@ api_register_func('api/statuses/friends_timeline', 'api_statuses_home_timeline', * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_statuses_public_timeline($type) { @@ -1780,7 +1856,11 @@ api_register_func('api/statuses/public_timeline', 'api_statuses_public_timeline' * * @param string $type Return format: json, xml, atom, rss * @return array|string + * @throws BadRequestException * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_statuses_networkpublic_timeline($type) { @@ -1837,6 +1917,12 @@ api_register_func('api/statuses/networkpublic_timeline', 'api_statuses_networkpu * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-show-id */ function api_statuses_show($type) @@ -1910,6 +1996,12 @@ api_register_func('api/statuses/show', 'api_statuses_show', true); * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @todo nothing to say? */ function api_conversation_show($type) @@ -1987,6 +2079,12 @@ api_register_func('api/statusnet/conversation', 'api_conversation_show', true); * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-retweet-id */ function api_statuses_repeat($type) @@ -2054,6 +2152,12 @@ api_register_func('api/statuses/retweet', 'api_statuses_repeat', true, API_METHO * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-destroy-id */ function api_statuses_destroy($type) @@ -2095,6 +2199,12 @@ api_register_func('api/statuses/destroy', 'api_statuses_destroy', true, API_METH * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see http://developer.twitter.com/doc/get/statuses/mentions */ function api_statuses_mentions($type) @@ -2162,8 +2272,12 @@ api_register_func('api/statuses/replies', 'api_statuses_mentions', true); * * @param string $type Either "json" or "xml" * @return string|array + * @throws BadRequestException * @throws ForbiddenException - * @see https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException + * @see https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline */ function api_statuses_user_timeline($type) { @@ -2243,6 +2357,12 @@ api_register_func('api/statuses/user_timeline', 'api_statuses_user_timeline', tr * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid */ function api_favorites_create_destroy($type) @@ -2320,6 +2440,11 @@ api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true, * @param string $type Return type (atom, rss, xml, json) * * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_favorites($type) { @@ -2391,6 +2516,7 @@ api_register_func('api/favorites', 'api_favorites', true); * @param array $sender * * @return array + * @throws InternalServerErrorException */ function api_format_messages($item, $recipient, $sender) { @@ -2448,6 +2574,7 @@ function api_format_messages($item, $recipient, $sender) * @param array $item * * @return array + * @throws InternalServerErrorException */ function api_convert_item($item) { @@ -2523,6 +2650,7 @@ function api_convert_item($item) * @param string $body * * @return array + * @throws InternalServerErrorException */ function api_get_attachments(&$body) { @@ -2561,6 +2689,7 @@ function api_get_attachments(&$body) * @param string $bbcode * * @return array + * @throws InternalServerErrorException * @todo Links at the first character of the post */ function api_get_entitities(&$text, $bbcode) @@ -2771,12 +2900,16 @@ function api_contactlink_to_array($txt) /** * @brief return likes, dislikes and attend status for item * - * @param array $item array + * @param array $item array * @param string $type Return type (atom, rss, xml, json) * * @return array - * likes => int count, - * dislikes => int count + * likes => int count, + * dislikes => int count + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_format_items_activities($item, $type = "json") { @@ -2843,8 +2976,9 @@ function api_format_items_activities($item, $type = "json") /** * @brief return data from profiles * - * @param array $profile_row array containing data from db table 'profile' + * @param array $profile_row array containing data from db table 'profile' * @return array + * @throws InternalServerErrorException */ function api_format_items_profiles($profile_row) { @@ -2895,10 +3029,15 @@ function api_format_items_profiles($profile_row) /** * @brief format items to be returned by api * - * @param array $r array of items + * @param array $r array of items * @param array $user_info * @param bool $filter_user filter items by $user_info - * @param string $type Return type (atom, rss, xml, json) + * @param string $type Return type (atom, rss, xml, json) + * @return array + * @throws BadRequestException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_format_items($r, $user_info, $filter_user = false, $type = "json") { @@ -3013,6 +3152,7 @@ function api_format_items($r, $user_info, $filter_user = false, $type = "json") * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws Exception */ function api_account_rate_limit_status($type) { @@ -3088,6 +3228,11 @@ api_register_func('api/lists/subscriptions', 'api_lists_list', true); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships */ function api_lists_ownerships($type) @@ -3132,6 +3277,11 @@ api_register_func('api/lists/ownerships', 'api_lists_ownerships', true); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships */ function api_lists_statuses($type) @@ -3209,7 +3359,11 @@ api_register_func('api/lists/statuses', 'api_lists_statuses', true); * * @param string $qtype Either "friends" or "followers" * @return boolean|array + * @throws BadRequestException * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_statuses_f($qtype) { @@ -3293,12 +3447,14 @@ function api_statuses_f($qtype) /** * Returns the user's friends. * - * @brief Returns the list of friends of the provided user + * @brief Returns the list of friends of the provided user * * @deprecated By Twitter API in favor of friends/list * * @param string $type Either "json" or "xml" * @return boolean|string|array + * @throws BadRequestException + * @throws ForbiddenException */ function api_statuses_friends($type) { @@ -3312,12 +3468,14 @@ function api_statuses_friends($type) /** * Returns the user's followers. * - * @brief Returns the list of followers of the provided user + * @brief Returns the list of followers of the provided user * * @deprecated By Twitter API in favor of friends/list * * @param string $type Either "json" or "xml" * @return boolean|string|array + * @throws BadRequestException + * @throws ForbiddenException */ function api_statuses_followers($type) { @@ -3340,6 +3498,8 @@ api_register_func('api/statuses/followers', 'api_statuses_followers', true); * @param string $type Either "json" or "xml" * * @return boolean|string|array + * @throws BadRequestException + * @throws ForbiddenException */ function api_blocks_list($type) { @@ -3361,6 +3521,8 @@ api_register_func('api/blocks/list', 'api_blocks_list', true); * @param string $type Either "json" or "xml" * * @return boolean|string|array + * @throws BadRequestException + * @throws ForbiddenException */ function api_friendships_incoming($type) { @@ -3386,6 +3548,7 @@ api_register_func('api/friendships/incoming', 'api_friendships_incoming', true); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws InternalServerErrorException */ function api_statusnet_config($type) { @@ -3445,6 +3608,12 @@ api_register_func('api/statusnet/version', 'api_statusnet_version', false); * * @param string $type Return type (atom, rss, xml, json) * + * @return array|string|void + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @todo use api_format_data() to return data */ function api_ff_ids($type) @@ -3487,6 +3656,8 @@ function api_ff_ids($type) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-friends-ids */ function api_friends_ids($type) @@ -3500,6 +3671,8 @@ function api_friends_ids($type) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-followers-ids */ function api_followers_ids($type) @@ -3517,6 +3690,12 @@ api_register_func('api/followers/ids', 'api_followers_ids', true); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/new-message */ function api_direct_messages_new($type) @@ -3605,7 +3784,12 @@ api_register_func('api/direct_messages/new', 'api_direct_messages_new', true, AP * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array - * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/delete-message + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException + * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/delete-message */ function api_direct_messages_destroy($type) { @@ -3686,7 +3870,12 @@ api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array - * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/post-friendships-destroy.html + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException + * @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/post-friendships-destroy.html */ function api_friendships_destroy($type) { @@ -3764,6 +3953,11 @@ api_register_func('api/friendships/destroy', 'api_friendships_destroy', true, AP * @param string $verbose * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_direct_messages_box($type, $box, $verbose) { @@ -3869,6 +4063,8 @@ function api_direct_messages_box($type, $box, $verbose) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/get-sent-message */ function api_direct_messages_sentbox($type) @@ -3883,6 +4079,8 @@ function api_direct_messages_sentbox($type) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/get-messages */ function api_direct_messages_inbox($type) @@ -3896,6 +4094,8 @@ function api_direct_messages_inbox($type) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException */ function api_direct_messages_all($type) { @@ -3908,6 +4108,8 @@ function api_direct_messages_all($type) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException */ function api_direct_messages_conversation($type) { @@ -3968,6 +4170,9 @@ api_register_func('api/oauth/access_token', 'api_oauth_access_token', false); * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws InternalServerErrorException */ function api_fr_photoalbum_delete($type) { @@ -4020,6 +4225,9 @@ function api_fr_photoalbum_delete($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws InternalServerErrorException */ function api_fr_photoalbum_update($type) { @@ -4059,6 +4267,8 @@ function api_fr_photoalbum_update($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws ForbiddenException + * @throws InternalServerErrorException */ function api_fr_photos_list($type) { @@ -4105,6 +4315,11 @@ function api_fr_photos_list($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException */ function api_fr_photo_create_update($type) { @@ -4239,6 +4454,9 @@ function api_fr_photo_create_update($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws InternalServerErrorException */ function api_fr_photo_delete($type) { @@ -4287,6 +4505,10 @@ function api_fr_photo_delete($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws InternalServerErrorException + * @throws NotFoundException */ function api_fr_photo_detail($type) { @@ -4315,7 +4537,12 @@ function api_fr_photo_detail($type) * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * * @return string|array - * @see https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException + * @see https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image */ function api_account_update_profile_image($type) { @@ -4411,6 +4638,11 @@ api_register_func('api/account/update_profile_image', 'api_account_update_profil * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_account_update_profile($type) { @@ -4445,6 +4677,8 @@ api_register_func('api/account/update_profile', 'api_account_update_profile', tr /** * * @param string $acl_string + * @return bool + * @throws Exception */ function check_acl_input($acl_string) { @@ -4481,6 +4715,12 @@ function check_acl_input($acl_string) * @param integer $profile * @param boolean $visibility * @param string $photo_id + * @return array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException */ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $desc, $profile = 0, $visibility = false, $photo_id = null) { @@ -4639,6 +4879,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $ * @param string $deny_gid * @param string $filetype * @param boolean $visibility + * @throws InternalServerErrorException */ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility = false) { @@ -4691,6 +4932,12 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f * @param string $photo_id * * @return array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws NotFoundException + * @throws UnauthorizedException */ function prepare_photo_data($type, $scale, $photo_id) { @@ -4858,6 +5105,8 @@ api_register_func('api/friendica/remoteauth', 'api_friendica_remoteauth', true); * * @param array $item Sharer item * @return array|false Shared item or false if not a reshare + * @throws ImagickException + * @throws InternalServerErrorException */ function api_share_as_retweet(&$item) { @@ -4969,6 +5218,7 @@ function api_share_as_retweet(&$item) * @param string $profile * * @return string|false + * @throws InternalServerErrorException * @todo remove trailing junk from profile url * @todo pump.io check has to check the website */ @@ -5053,6 +5303,7 @@ function api_get_nick($profile) * @param array $item * * @return array + * @throws Exception */ function api_in_reply_to($item) { @@ -5108,6 +5359,7 @@ function api_in_reply_to($item) * @param string $text * * @return string + * @throws InternalServerErrorException */ function api_clean_plain_items($text) { @@ -5134,6 +5386,7 @@ function api_clean_plain_items($text) * @param string $body The original body * * @return string Cleaned body + * @throws InternalServerErrorException */ function api_clean_attachments($body) { @@ -5162,7 +5415,7 @@ function api_clean_attachments($body) * * @param array $contacts * - * @return array + * @return void */ function api_best_nickname(&$contacts) { @@ -5232,6 +5485,11 @@ function api_best_nickname(&$contacts) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_group_show($type) { @@ -5297,6 +5555,11 @@ api_register_func('api/friendica/group_show', 'api_friendica_group_show', true); * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_group_delete($type) { @@ -5358,6 +5621,11 @@ api_register_func('api/friendica/group_delete', 'api_friendica_group_delete', tr * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy */ function api_lists_destroy($type) @@ -5402,10 +5670,11 @@ api_register_func('api/lists/destroy', 'api_lists_destroy', true, API_METHOD_DEL * Add a new group to the database. * * @param string $name Group name - * @param int $uid User ID + * @param int $uid User ID * @param array $users List of users to add to the group * * @return array + * @throws BadRequestException */ function group_create($name, $uid, $users = []) { @@ -5475,6 +5744,11 @@ function group_create($name, $uid, $users = []) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_group_create($type) { @@ -5503,6 +5777,11 @@ api_register_func('api/friendica/group_create', 'api_friendica_group_create', tr * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-create */ function api_lists_create($type) @@ -5538,6 +5817,11 @@ api_register_func('api/lists/create', 'api_lists_create', true, API_METHOD_POST) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_group_update($type) { @@ -5611,6 +5895,11 @@ api_register_func('api/friendica/group_update', 'api_friendica_group_update', tr * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-update */ function api_lists_update($type) @@ -5658,6 +5947,10 @@ api_register_func('api/lists/update', 'api_lists_update', true, API_METHOD_POST) * @param string $type Return type (atom, rss, xml, json) * * @return array|string + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException */ function api_friendica_activity($type) { @@ -5702,7 +5995,10 @@ api_register_func('api/friendica/activity/unattendmaybe', 'api_friendica_activit * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array -*/ + * @throws BadRequestException + * @throws ForbiddenException + * @throws InternalServerErrorException + */ function api_friendica_notification($type) { $a = \get_app(); @@ -5737,6 +6033,11 @@ function api_friendica_notification($type) * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_notification_seen($type) { @@ -5782,6 +6083,11 @@ api_register_func('api/friendica/notification', 'api_friendica_notification', tr * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array (success result=ok, error result=error with error message) + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_direct_messages_setseen($type) { @@ -5826,11 +6132,16 @@ api_register_func('api/friendica/direct_messages_setseen', 'api_friendica_direct /** * @brief search for direct_messages containing a searchstring through api * - * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @param string $box * @return string|array (success: success=true if found and search_result contains found messages, * success=false if nothing was found, search_result='nothing found', - * error: result=error with error message) + * error: result=error with error message) + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_direct_messages_search($type, $box = "") { @@ -5894,6 +6205,11 @@ api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_ * * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' * @return string|array + * @throws BadRequestException + * @throws ForbiddenException + * @throws ImagickException + * @throws InternalServerErrorException + * @throws UnauthorizedException */ function api_friendica_profile_show($type) { @@ -5975,6 +6291,7 @@ api_register_func('api/friendica/profile/show', 'api_friendica_profile_show', tr * @param string $type Return format: json or xml * * @return string|array + * @throws Exception */ function api_saved_searches_list($type) { diff --git a/mod/view.php b/mod/view.php index 1b2e379a93..94d1263f7c 100644 --- a/mod/view.php +++ b/mod/view.php @@ -1,6 +1,6 @@ Date: Mon, 7 Jan 2019 12:26:46 -0500 Subject: [PATCH 148/728] Update namespace in mod/view --- mod/view.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mod/view.php b/mod/view.php index 94d1263f7c..640606bce1 100644 --- a/mod/view.php +++ b/mod/view.php @@ -1,10 +1,14 @@ argc == 4){ From 4a95ca280d665eda09529f91eb28b517a471e683 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 12:09:10 -0500 Subject: [PATCH 149/728] Remove unused code - Remove commented code - Remove unused/immediately overwritten variables - Remove extraneous parameters - Remove unreachable code - Remove duplicate array keys --- src/Content/OEmbed.php | 2 - src/Content/Text/BBCode.php | 2 +- src/Core/Config/JITConfigAdapter.php | 2 - src/Core/Console.php | 2 - src/Core/Console/PoToPhp.php | 4 -- src/Core/Console/Storage.php | 2 - src/Core/Installer.php | 4 +- src/Core/NotificationsManager.php | 1 - src/Core/PConfig.php | 2 +- src/Core/System.php | 1 - src/Database/DBA.php | 4 +- src/Model/Contact.php | 8 ---- src/Model/Event.php | 14 ++---- src/Model/GContact.php | 2 - src/Model/Group.php | 2 - src/Model/Item.php | 7 +-- src/Model/Photo.php | 3 +- src/Model/Profile.php | 6 --- src/Model/Storage/Filesystem.php | 2 - src/Model/User.php | 5 --- src/Module/Contact.php | 4 +- src/Module/Proxy.php | 5 +-- src/Network/Probe.php | 1 - src/Object/Image.php | 11 ----- src/Object/Post.php | 2 +- src/Object/Thread.php | 2 - src/Protocol/ActivityPub/Processor.php | 4 -- src/Protocol/ActivityPub/Receiver.php | 6 +-- src/Protocol/ActivityPub/Transmitter.php | 2 - src/Protocol/DFRN.php | 22 +--------- src/Protocol/Diaspora.php | 54 +++++++++--------------- src/Protocol/Email.php | 27 ------------ src/Protocol/Feed.php | 1 - src/Protocol/OStatus.php | 10 +---- src/Protocol/PortableContact.php | 10 ----- src/Util/Network.php | 3 -- src/Util/ParseUrl.php | 2 - src/Util/XML.php | 3 -- src/Worker/Cron.php | 4 -- src/Worker/DBClean.php | 2 - src/Worker/OnePoll.php | 7 +-- src/Worker/PubSubPublish.php | 4 -- 42 files changed, 43 insertions(+), 218 deletions(-) diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 144ac4ca53..0093ba11af 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -370,8 +370,6 @@ class OEmbed */ private static function iframe($src, $width, $height) { - $a = \get_app(); - if (!$height || strstr($height, '%')) { $height = '200'; } diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 357dc89d9a..78f252b924 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1683,7 +1683,7 @@ class BBCode extends BaseObject // Replace non graphical smilies for external posts if ($simple_html) { - $text = Smilies::replace($text, false, true); + $text = Smilies::replace($text); } // Unhide all [noparse] contained bbtags unspacefying them diff --git a/src/Core/Config/JITConfigAdapter.php b/src/Core/Config/JITConfigAdapter.php index ed5f1a3f67..ce1c13b2ca 100644 --- a/src/Core/Config/JITConfigAdapter.php +++ b/src/Core/Config/JITConfigAdapter.php @@ -84,8 +84,6 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter public function set($cat, $k, $value) { - $a = self::getApp(); - // We store our setting values in a string variable. // So we have to do the conversion here so that the compare below works. // The exception are array values. diff --git a/src/Core/Console.php b/src/Core/Console.php index 2cca4f15bb..32e12fa1f0 100644 --- a/src/Core/Console.php +++ b/src/Core/Console.php @@ -73,7 +73,6 @@ HELP; $this->out('Options: ' . var_export($this->options, true)); } - $showHelp = false; $subHelp = false; $command = null; @@ -83,7 +82,6 @@ HELP; return 0; } elseif ((count($this->options) === 0 || $this->getOption($this->customHelpOptions) === true || $this->getOption($this->customHelpOptions) === 1) && count($this->args) === 0 ) { - $showHelp = true; } elseif (count($this->args) >= 2 && $this->getArgument(0) == 'help') { $command = $this->getArgument(1); $subHelp = true; diff --git a/src/Core/Console/PoToPhp.php b/src/Core/Console/PoToPhp.php index c492f7424c..d539eae5b6 100644 --- a/src/Core/Console/PoToPhp.php +++ b/src/Core/Console/PoToPhp.php @@ -47,8 +47,6 @@ HELP; throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments'); } - $a = \get_app(); - $pofile = realpath($this->getArgument(0)); if (!file_exists($pofile)) { @@ -106,7 +104,6 @@ HELP; } if ($inv) { - $inv = false; $out .= '"' . $v . '"'; } @@ -179,7 +176,6 @@ HELP; } if ($inv) { - $inv = false; $out .= '"' . $v . '"'; } diff --git a/src/Core/Console/Storage.php b/src/Core/Console/Storage.php index f9674c4d19..e0083598c3 100644 --- a/src/Core/Console/Storage.php +++ b/src/Core/Console/Storage.php @@ -37,8 +37,6 @@ HELP; protected function doExecute() { - $a = \Friendica\BaseObject::getApp(); - if ($this->getOption('v')) { $this->out('Executable: ' . $this->executable); $this->out('Class: ' . __CLASS__); diff --git a/src/Core/Installer.php b/src/Core/Installer.php index cf5dd9ffc2..a487aec78b 100644 --- a/src/Core/Installer.php +++ b/src/Core/Installer.php @@ -224,8 +224,6 @@ class Installer */ public function checkPHP($phppath = null, $required = false) { - $passed = false; - $passed2 = false; $passed3 = false; if (!isset($phppath)) { @@ -394,7 +392,7 @@ class Installer $help = ''; $status = true; try { - $xml = new DOMDocument(); + new DOMDocument(); } catch (Exception $e) { $help = L10n::t('Error, XML PHP module required but not installed.'); $status = false; diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 566b701748..98de4fa178 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -229,7 +229,6 @@ class NotificationsManager extends BaseObject */ private function formatNotifs(array $notifs, $ident = "") { - $notif = []; $arr = []; if (DBA::isResult($notifs)) { diff --git a/src/Core/PConfig.php b/src/Core/PConfig.php index ebe693edf6..584318adbc 100644 --- a/src/Core/PConfig.php +++ b/src/Core/PConfig.php @@ -37,7 +37,7 @@ class PConfig extends BaseObject if ($a->getConfigValue('system', 'config_adapter') == 'preload') { self::$adapter = new Config\PreloadPConfigAdapter($uid); } else { - self::$adapter = new Config\JITPConfigAdapter($uid); + self::$adapter = new Config\JITPConfigAdapter(); } } diff --git a/src/Core/System.php b/src/Core/System.php index 81c537169e..ba3d03e622 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -59,7 +59,6 @@ class System extends BaseObject array_shift($trace); $callstack = []; - $counter = 0; $previous = ['class' => '', 'function' => '']; // The ignore list contains all functions that are only wrapper functions diff --git a/src/Database/DBA.php b/src/Database/DBA.php index 7838a99ef5..e14d94ce04 100644 --- a/src/Database/DBA.php +++ b/src/Database/DBA.php @@ -1105,7 +1105,7 @@ class DBA if ((count($conditions) == 1) && ($field == array_keys($conditions)[0])) { foreach ($rel_def AS $rel_table => $rel_fields) { foreach ($rel_fields AS $rel_field) { - $retval = self::delete($rel_table, [$rel_field => array_values($conditions)[0]], $options, $callstack); + self::delete($rel_table, [$rel_field => array_values($conditions)[0]], $options, $callstack); } } // We quit when this key already exists in the callstack. @@ -1579,8 +1579,6 @@ class DBA $ret = self::p("SHOW PROCESSLIST"); $data = self::toArray($ret); - $s = []; - $processes = 0; $states = []; foreach ($data as $process) { diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 4a8a8cdaba..f3448569b6 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -885,8 +885,6 @@ class Contact extends BaseObject */ public static function getDetailsByAddr($addr, $uid = -1) { - static $cache = []; - if ($addr == '') { return []; } @@ -942,14 +940,9 @@ class Contact extends BaseObject */ public static function photoMenu(array $contact, $uid = 0) { - // @todo Unused, to be removed - $a = \get_app(); - - $contact_url = ''; $pm_url = ''; $status_link = ''; $photos_link = ''; - $posts_link = ''; $contact_drop_link = ''; $poke_link = ''; @@ -1219,7 +1212,6 @@ class Contact extends BaseObject $contact_id = self::getIdForURL($data["alias"], $uid, true, $default, true); } - $url = $data["url"]; if (!$contact_id) { $fields = [ 'uid' => $uid, diff --git a/src/Model/Event.php b/src/Model/Event.php index 8b7c7e706c..576f47ba83 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -239,8 +239,6 @@ class Event extends BaseObject */ public static function store($arr) { - $a = self::getApp(); - $event = []; $event['id'] = intval(defaults($arr, 'id' , 0)); $event['uid'] = intval(defaults($arr, 'uid' , 0)); @@ -418,7 +416,6 @@ class Event extends BaseObject "February" => L10n::t("February"), "March" => L10n::t("March"), "April" => L10n::t("April"), - "May" => L10n::t("May"), "June" => L10n::t("June"), "July" => L10n::t("July"), "August" => L10n::t("August"), @@ -643,7 +640,7 @@ class Event extends BaseObject * * @todo Implement timezone support */ - private static function formatListForExport(array $events, $format, $timezone) + private static function formatListForExport(array $events, $format) { if (!count($events)) { return ''; @@ -795,19 +792,14 @@ class Event extends BaseObject { $process = false; - $user = DBA::selectFirst('user', ['timezone'], ['uid' => $uid]); - if (DBA::isResult($user)) { - $timezone = $user['timezone']; - } - // Get all events which are owned by a uid (respects permissions). $events = self::getListByUserId($uid); // We have the events that are available for the requestor. // Now format the output according to the requested format. - $res = self::formatListForExport($events, $format, $timezone); + $res = self::formatListForExport($events, $format); - // If there are results the precess was successfull. + // If there are results the precess was successful. if (!empty($res)) { $process = true; } diff --git a/src/Model/GContact.php b/src/Model/GContact.php index c077aa6b4a..43375b9afb 100644 --- a/src/Model/GContact.php +++ b/src/Model/GContact.php @@ -528,8 +528,6 @@ class GContact */ public static function updateSuggestions() { - $a = \get_app(); - $done = []; /// @TODO Check if it is really neccessary to poll the own server diff --git a/src/Model/Group.php b/src/Model/Group.php index 606e379f05..0af10995b4 100644 --- a/src/Model/Group.php +++ b/src/Model/Group.php @@ -316,8 +316,6 @@ class Group extends BaseObject */ public static function displayGroupSelection($uid, $gid = 0, $label = '') { - $o = ''; - $stmt = DBA::select('group', [], ['deleted' => 0, 'uid' => $uid], ['order' => ['name']]); $display_groups = [ diff --git a/src/Model/Item.php b/src/Model/Item.php index 7207958c2f..f18ca088f9 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1236,12 +1236,16 @@ class Item extends BaseObject // This function will finally cover most of the preparation functionality in mod/item.php public static function prepare(&$item) { + /* + * @TODO: Unused code triggering inspection errors + * $data = BBCode::getAttachmentData($item['body']); if ((preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $item['body'], $match, PREG_SET_ORDER) || isset($data["type"])) && ($posttype != Item::PT_PERSONAL_NOTE)) { $posttype = Item::PT_PAGE; $objecttype = ACTIVITY_OBJ_BOOKMARK; } + */ } public static function insert($item, $force_parent = false, $notify = false, $dontcache = false) @@ -3040,7 +3044,6 @@ class Item extends BaseObject // Contact-id is the uid-dependant author contact if (local_user() == $uid) { $item_contact_id = $owner_self_contact['id']; - $item_contact = $owner_self_contact; } else { $item_contact_id = Contact::getIdForURL($author_contact['url'], $uid, true); $item_contact = DBA::selectFirst('contact', [], ['id' => $item_contact_id]); @@ -3167,8 +3170,6 @@ class Item extends BaseObject $item["mention"] = 1; } - $sql = ""; - $fields = []; foreach ($item as $field => $data) { diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 6f2bbd0039..67ab217cd4 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -172,7 +172,6 @@ class Photo extends BaseObject */ public static function getImageForPhoto(array $photo) { - $data = ""; if ($photo["backend-class"] == "") { // legacy data storage in "data" column $i = self::selectFirst(["data"], ["id" => $photo["id"]]); @@ -268,7 +267,6 @@ class Photo extends BaseObject // if is an existing photo, reuse same backend $data = ""; $backend_ref = ""; - $backend_class = ""; if (DBA::isResult($existing_photo)) { $backend_ref = (string)$existing_photo["backend-ref"]; @@ -276,6 +274,7 @@ class Photo extends BaseObject } else { $backend_class = StorageManager::getBackend(); } + if ($backend_class === "") { $data = $Image->asString(); } else { diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 27bb12a3c8..b5e54474b8 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -745,14 +745,8 @@ class Profile public static function getAdvanced(App $a) { - $o = ''; $uid = $a->profile['uid']; - $o .= Renderer::replaceMacros( - Renderer::getMarkupTemplate('section_title.tpl'), - ['$title' => L10n::t('Profile')] - ); - if ($a->profile['name']) { $tpl = Renderer::getMarkupTemplate('profile_advanced.tpl'); diff --git a/src/Model/Storage/Filesystem.php b/src/Model/Storage/Filesystem.php index b5bc883b4b..bb68731cd0 100644 --- a/src/Model/Storage/Filesystem.php +++ b/src/Model/Storage/Filesystem.php @@ -60,7 +60,6 @@ class Filesystem implements IStorage if (!mkdir($path, 0770, true)) { Logger::log('Failed to create dirs ' . $path); throw new StorageException(L10n::t('Filesystem storage failed to create "%s". Check you write permissions.', $path)); - killme(); } } @@ -100,7 +99,6 @@ class Filesystem implements IStorage if ($r === FALSE) { Logger::log('Failed to write data to ' . $file); throw new StorageException(L10n::t('Filesystem storage failed to save data to "%s". Check your write permissions', $file)); - killme(); } return $ref; } diff --git a/src/Model/User.php b/src/Model/User.php index 3627333780..80cae7b0d2 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -438,7 +438,6 @@ class User $return = ['user' => null, 'password' => '']; $using_invites = Config::get('system', 'invitation_only'); - $num_invites = Config::get('system', 'number_invites'); $invite_id = !empty($data['invite_id']) ? Strings::escapeTags(trim($data['invite_id'])) : ''; $username = !empty($data['username']) ? Strings::escapeTags(trim($data['username'])) : ''; @@ -501,8 +500,6 @@ class User $openid_url = ''; } - $err = ''; - // collapse multiple spaces in name $username = preg_replace('/ +/', ' ', $username); @@ -826,8 +823,6 @@ class User return false; } - $a = \get_app(); - Logger::log('Removing user: ' . $uid); $user = DBA::selectFirst('user', [], ['uid' => $uid]); diff --git a/src/Module/Contact.php b/src/Module/Contact.php index a9413e1de5..8beffb483c 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -310,7 +310,7 @@ class Contact extends BaseModule return; } - $r = DBA::update('contact', $fields, ['id' => $contact_id, 'uid' => local_user()]); + DBA::update('contact', $fields, ['id' => $contact_id, 'uid' => local_user()]); // Update the entry in the contact table Model\Contact::updateAvatar($data['photo'], local_user(), $contact_id, true); @@ -470,7 +470,6 @@ class Contact extends BaseModule $_SESSION['return_path'] = $a->query_string; if (!empty($a->data['contact']) && is_array($a->data['contact'])) { - $contact_id = $a->data['contact']['id']; $contact = $a->data['contact']; $a->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_head.tpl'), [ @@ -632,7 +631,6 @@ class Contact extends BaseModule '$hidden' => ['hidden', L10n::t('Hide this contact from others'), ($contact['hidden'] == 1), L10n::t('Replies/likes to your public posts may still be visible')], '$notify' => ['notify', L10n::t('Notification for new posts'), ($contact['notify_new_posts'] == 1), L10n::t('Send a notification of every new post of this contact')], '$fetch_further_information' => $fetch_further_information, - '$ffi_keyword_blacklist' => $contact['ffi_keyword_blacklist'], '$ffi_keyword_blacklist' => ['ffi_keyword_blacklist', L10n::t('Blacklisted keywords'), $contact['ffi_keyword_blacklist'], L10n::t('Comma separated list of keywords that should not be converted to hashtags, when "Fetch information and keywords" is selected')], '$photo' => $contact['photo'], '$name' => $contact['name'], diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 6ca383f59b..221ce8d081 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -101,13 +101,13 @@ class Proxy extends BaseModule // If there is an error then return a blank image if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || (!$img_str)) { - self::responseError($request); + self::responseError(); // stop. } $image = new Image($img_str, $mime); if (!$image->isValid()) { - self::responseError($request); + self::responseError(); // stop. } @@ -157,7 +157,6 @@ class Proxy extends BaseModule private static function getRequestInfo() { $a = self::getApp(); - $url = ''; $size = 1024; $sizetype = ''; diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 49822c725a..9515db728a 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -1302,7 +1302,6 @@ class Probe $data["addr"] = str_replace('acct:', '', $webfinger["subject"]); } - $pubkey = ""; if (is_array($webfinger["links"])) { // The array is reversed to take into account the order of preference for same-rel links // See: https://tools.ietf.org/html/rfc7033#section-4.4.4 diff --git a/src/Object/Image.php b/src/Object/Image.php index 70344dc7c4..ae360f376d 100644 --- a/src/Object/Image.php +++ b/src/Object/Image.php @@ -298,8 +298,6 @@ class Image $width = $this->getWidth(); $height = $this->getHeight(); - $dest_width = $dest_height = 0; - if ((! $width)|| (! $height)) { return false; } @@ -502,8 +500,6 @@ class Image $width = $this->getWidth(); $height = $this->getHeight(); - $dest_width = $dest_height = 0; - if ((!$width)|| (!$height)) { return false; } @@ -693,8 +689,6 @@ class Image return $string; } - $quality = false; - ob_start(); // Enable interlacing @@ -736,7 +730,6 @@ class Image Logger::log('Image: guessType: '.$filename . ($fromcurl?' from curl headers':''), Logger::DEBUG); $type = null; if ($fromcurl) { - $a = \get_app(); $headers=[]; $h = explode("\n", $header); foreach ($h as $l) { @@ -835,8 +828,6 @@ class Image */ public static function getScalingDimensions($width, $height, $max) { - $dest_width = $dest_height = 0; - if ((!$width) || (!$height)) { return false; } @@ -967,8 +958,6 @@ class Image $hash = Photo::newResource(); - $smallest = 0; - // Pictures are always public by now //$defperm = '<'.$default_cid.'>'; $defperm = ""; diff --git a/src/Object/Post.php b/src/Object/Post.php index b0307fd964..2d52f4244a 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -789,7 +789,7 @@ class Post extends BaseObject } if ($conv->isWritable() && $this->isWritable()) { - $qc = $qcomment = null; + $qcomment = null; /* * Hmmm, code depending on the presence of a particular addon? diff --git a/src/Object/Thread.php b/src/Object/Thread.php index c36aa8ea6e..c5795819a4 100644 --- a/src/Object/Thread.php +++ b/src/Object/Thread.php @@ -178,9 +178,7 @@ class Thread extends BaseObject */ public function getTemplateData($conv_responses) { - $a = self::getApp(); $result = []; - $i = 0; foreach ($this->parents as $item) { if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) { diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 5c9628d9ce..ea4d5ba411 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -477,8 +477,6 @@ class Processor return; } - $owner = User::getOwnerDataById($uid); - $cid = Contact::getIdForURL($activity['actor'], $uid); if (empty($cid)) { Logger::log('No contact found for ' . $activity['actor'], Logger::DEBUG); @@ -513,8 +511,6 @@ class Processor return; } - $owner = User::getOwnerDataById($uid); - $cid = Contact::getIdForURL($activity['actor'], $uid); if (empty($cid)) { Logger::log('No contact found for ' . $activity['actor'], Logger::DEBUG); diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 9949577a71..7f67bab7f5 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -379,15 +379,15 @@ class Receiver if (in_array($object_data['object_type'], self::CONTENT_TYPES)) { ActivityPub\Processor::updateItem($object_data); } elseif (in_array($object_data['object_type'], self::ACCOUNT_TYPES)) { - ActivityPub\Processor::updatePerson($object_data, $body); + ActivityPub\Processor::updatePerson($object_data); } break; case 'as:Delete': if ($object_data['object_type'] == 'as:Tombstone') { - ActivityPub\Processor::deleteItem($object_data, $body); + ActivityPub\Processor::deleteItem($object_data); } elseif (in_array($object_data['object_type'], self::ACCOUNT_TYPES)) { - ActivityPub\Processor::deletePerson($object_data, $body); + ActivityPub\Processor::deletePerson($object_data); } break; diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index bfaa1a8955..499337acb1 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -354,8 +354,6 @@ class Transmitter } else { $receiver_list = Item::enumeratePermissions($item); - $mentioned = []; - foreach ($terms as $term) { $cid = Contact::getIdForURL($term['url'], $item['uid']); if (!empty($cid) && in_array($cid, $receiver_list)) { diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 4786f8d620..e4269f38ec 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -181,24 +181,19 @@ class DFRN $owner = $r[0]; $owner_id = $owner['uid']; - $owner_nick = $owner['nickname']; $sql_post_table = ""; if (! $public_feed) { - $sql_extra = ''; switch ($direction) { case (-1): $sql_extra = sprintf(" AND `issued-id` = '%s' ", DBA::escape($dfrn_id)); - $my_id = $dfrn_id; break; case 0: $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '1:' . $dfrn_id; break; case 1: $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '0:' . $dfrn_id; break; default: return false; @@ -244,7 +239,6 @@ class DFRN intval(TERM_CATEGORY), intval($owner_id) ); - //$sql_extra .= FileTag::fileQuery('item',$category,'category'); } if ($public_feed && ! $converse) { @@ -1179,8 +1173,6 @@ class DFRN */ public static function deliver($owner, $contact, $atom, $dissolve = false, $legacy_transport = false) { - $a = \get_app(); - // At first try the Diaspora transport layer if (!$dissolve && !$legacy_transport) { $curlResult = self::transmit($owner, $contact, $atom); @@ -1205,7 +1197,6 @@ class DFRN Logger::log("Local rino version: ". $rino, Logger::DEBUG); $ssl_val = intval(Config::get('system', 'ssl_policy')); - $ssl_policy = ''; switch ($ssl_val) { case SSL_POLICY_FULL: @@ -1442,8 +1433,6 @@ class DFRN */ public static function transmit($owner, $contact, $atom, $public_batch = false) { - $a = \get_app(); - if (!$public_batch) { if (empty($contact['addr'])) { Logger::log('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.'); @@ -1708,7 +1697,6 @@ class DFRN if (strtotime($value) < time()) { $value = str_replace($bdyear, $bdyear + 1, $value); - $bdyear = $bdyear + 1; } $poco["bd"] = $value; @@ -1920,8 +1908,6 @@ class DFRN */ private static function processSuggestion($xpath, $suggestion, $importer) { - $a = \get_app(); - Logger::log("Processing suggestions"); /// @TODO Rewrite this to one statement @@ -1995,7 +1981,7 @@ class DFRN $hash = Strings::getRandomHex(); - $r = q( + q( "INSERT INTO `intro` (`uid`, `fid`, `contact-id`, `note`, `hash`, `datetime`, `blocked`) VALUES(%d, %d, %d, '%s', '%s', '%s', %d)", intval($suggest["uid"]), @@ -2408,8 +2394,6 @@ class DFRN $item["plink"] = $href; break; case "enclosure": - $enclosure = $href; - if (!empty($item["attach"])) { $item["attach"] .= ","; } else { @@ -2596,8 +2580,6 @@ class DFRN } } - $enclosure = ""; - $links = $xpath->query("atom:link", $entry); if ($links) { self::parseLinks($links, $item); @@ -2713,8 +2695,6 @@ class DFRN if (in_array($entrytype, [DFRN::REPLY, DFRN::REPLY_RC])) { $posted_id = Item::insert($item); - $parent = 0; - if ($posted_id) { Logger::log("Reply from contact ".$item["contact-id"]." was stored with id ".$posted_id, Logger::DEBUG); diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 0087ced4b1..fadf337a6a 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -748,8 +748,6 @@ class Diaspora Logger::log("Unknown message type ".$type); return false; } - - return true; } /** @@ -2354,8 +2352,6 @@ class Diaspora */ private static function receiveRequestMakeFriend(array $importer, array $contact) { - $a = \get_app(); - if ($contact["rel"] == Contact::SHARING) { DBA::update( 'contact', @@ -2415,7 +2411,7 @@ class Diaspora $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]); if (DBA::isResult($user)) { Logger::log("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], Logger::DEBUG); - $ret = self::sendShare($user, $contact); + self::sendShare($user, $contact); } } return true; @@ -2449,7 +2445,7 @@ class Diaspora $batch = (($ret["batch"]) ? $ret["batch"] : implode("/", array_slice(explode("/", $ret["url"]), 0, 3))."/receive/public"); - $r = q( + q( "INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`) VALUES (%d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d)", intval($importer["uid"]), @@ -2489,7 +2485,7 @@ class Diaspora $hash = Strings::getRandomHex().(string)time(); // Generate a confirm_key - $ret = q( + q( "INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) VALUES (%d, %d, %d, %d, '%s', '%s', '%s')", intval($importer["uid"]), @@ -2520,7 +2516,7 @@ class Diaspora $new_relation = Contact::FOLLOWER; } - $r = q( + q( "UPDATE `contact` SET `rel` = %d, `name-date` = '%s', `uri-date` = '%s', @@ -2538,7 +2534,7 @@ class Diaspora $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]); if (DBA::isResult($user)) { 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); + self::sendShare($user, $contact_record); // Send the profile data, maybe it weren't transmitted before self::sendProfile($importer["uid"], [$contact_record]); @@ -3127,8 +3123,6 @@ class Diaspora */ public static function transmit(array $owner, array $contact, $envelope, $public_batch, $queue_run = false, $guid = "", $no_queue = false) { - $a = \get_app(); - $enabled = intval(Config::get("system", "diaspora_enabled")); if (!$enabled) { return 200; @@ -3871,15 +3865,14 @@ class Diaspora // Remove the handle $handle = array_pop($signed_parts); - // Glue the parts together - $text = implode(";", $signed_parts); - - $message = ["author" => $handle, - "guid" => $guid, - "parent_guid" => $parent_guid, - "text" => implode(";", $signed_parts), - "author_signature" => $item['signature'], - "parent_author_signature" => ""]; + $message = [ + "author" => $handle, + "guid" => $guid, + "parent_guid" => $parent_guid, + "text" => implode(";", $signed_parts), + "author_signature" => $item['signature'], + "parent_author_signature" => "" + ]; } return $message; } @@ -3996,14 +3989,6 @@ class Diaspora return; } - $conv = [ - "author" => $cnv["creator"], - "guid" => $cnv["guid"], - "subject" => $cnv["subject"], - "created_at" => DateTimeFormat::utc($cnv['created'], DateTimeFormat::ATOM), - "participants" => $cnv["recips"] - ]; - $body = BBCode::toMarkdown($item["body"]); $created = DateTimeFormat::utc($item["created"], DateTimeFormat::ATOM); @@ -4020,12 +4005,13 @@ class Diaspora $type = "message"; } else { $message = [ - "author" => $cnv["creator"], - "guid" => $cnv["guid"], - "subject" => $cnv["subject"], - "created_at" => DateTimeFormat::utc($cnv['created'], DateTimeFormat::ATOM), - "participants" => $cnv["recips"], - "message" => $msg]; + "author" => $cnv["creator"], + "guid" => $cnv["guid"], + "subject" => $cnv["subject"], + "created_at" => DateTimeFormat::utc($cnv['created'], DateTimeFormat::ATOM), + "participants" => $cnv["recips"], + "message" => $msg + ]; $type = "conversation"; } diff --git a/src/Protocol/Email.php b/src/Protocol/Email.php index dd9230fbd3..05d59a1525 100644 --- a/src/Protocol/Email.php +++ b/src/Protocol/Email.php @@ -178,8 +178,6 @@ class Email // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple global $htmlmsg,$plainmsg,$charset,$attachments; - //echo $partno."\n"; - // DECODE DATA $data = ($partno) ? @imap_fetchbody($mbox, $uid, $partno, FT_UID|FT_PEEK) @@ -247,9 +245,6 @@ class Email $x = ""; foreach ($p->parts as $partno0 => $p2) { $x .= self::messageGetPart($mbox, $uid, $p2, $partno . '.' . ($partno0+1), $subtype); // 1.2, 1.2.1, etc. - //if ($x) { - // return $x; - //} } return $x; } @@ -559,26 +554,6 @@ class Email $nextline = ltrim(substr($nextline, 1)); } - $firstword = strpos($nextline.' ', ' '); - - $specialchars = ((substr(trim($nextline), 0, 1) == '-') || - (substr(trim($nextline), 0, 1) == '=') || - (substr(trim($nextline), 0, 1) == '*') || - (substr(trim($nextline), 0, 1) == '·') || - (substr(trim($nextline), 0, 4) == '[url') || - (substr(trim($nextline), 0, 5) == '[size') || - (substr(trim($nextline), 0, 7) == 'http://') || - (substr(trim($nextline), 0, 8) == 'https://')); - - if (!$specialchars) { - $specialchars = ((substr(rtrim($line), -1) == '-') || - (substr(rtrim($line), -1) == '=') || - (substr(rtrim($line), -1) == '*') || - (substr(rtrim($line), -1) == '·') || - (substr(rtrim($line), -6) == '[/url]') || - (substr(rtrim($line), -7) == '[/size]')); - } - if (!empty($lines[$lineno])) { if (substr($lines[$lineno], -1) != ' ') { $lines[$lineno] .= ' '; @@ -625,13 +600,11 @@ class Email } $quotelevel = 0; - $previousquote = 0; $arrbodyquoted = []; for ($i = 0; $i < count($arrbody); $i++) { $previousquote = $quotelevel; $quotelevel = $arrlevel[$i]; - $currline = $arrbody[$i]; while ($previousquote < $quotelevel) { $quote = "[quote]"; diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 86e831c705..3981a8860c 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -318,7 +318,6 @@ class Feed { $href = ""; $length = ""; $type = ""; - $title = ""; foreach ($enclosure->attributes AS $attribute) { if (in_array($attribute->name, ["url", "href"])) { diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 84a97c20a3..a62e126629 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -398,8 +398,6 @@ class OStatus $authordata = $xpath->query('//author')->item(0); $author = self::fetchAuthor($xpath, $authordata, $importer, $contact, $stored); - $entry = $xpath->query('/atom:entry'); - // Reverse the order of the entries $entrylist = []; @@ -528,7 +526,6 @@ class OStatus if ($valid) { $default_contact = 0; - $key = count(self::$itemlist); for ($key = count(self::$itemlist) - 1; $key >= 0; $key--) { if (empty(self::$itemlist[$key]['contact-id'])) { self::$itemlist[$key]['contact-id'] = $default_contact; @@ -1191,7 +1188,6 @@ class OStatus } else { return "http://".$server[0]."/notice/".$conversation[1]; } - return $href; } /** @@ -1287,8 +1283,6 @@ class OStatus */ private static function addHeader(DOMDocument $doc, array $owner, $filter, $feed_mode = false) { - $a = \get_app(); - $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed'); $doc->appendChild($root); @@ -1699,7 +1693,7 @@ class OStatus 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); + self::entryHeader($doc, $entry, $owner, $item, $toplevel); $condition = ['uid' => $owner["uid"], 'guid' => $repeated_guid, 'private' => false, 'network' => [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]]; @@ -1764,7 +1758,7 @@ class OStatus 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); + self::entryHeader($doc, $entry, $owner, $item, $toplevel); $verb = NAMESPACE_ACTIVITY_SCHEMA."favorite"; self::entryContent($doc, $entry, $item, $owner, "Favorite", $verb, false); diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index da42a057ed..4b8b6fff63 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -63,8 +63,6 @@ class PortableContact */ public static function load($cid, $uid, $zcid, $url) { - $a = \get_app(); - if ($cid) { if (!$url || !$uid) { $contact = DBA::selectFirst('contact', ['poco', 'uid'], ['id' => $cid]); @@ -230,7 +228,6 @@ class PortableContact $friendica = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$1$2", $profile); if ($friendica != $profile) { $server_url = $friendica; - $network = Protocol::DFRN; } } @@ -238,7 +235,6 @@ class PortableContact $diaspora = preg_replace("=(https?://)(.*)/u/(.*)=ism", "$1$2", $profile); if ($diaspora != $profile) { $server_url = $diaspora; - $network = Protocol::DIASPORA; } } @@ -246,7 +242,6 @@ class PortableContact $red = preg_replace("=(https?://)(.*)/channel/(.*)=ism", "$1$2", $profile); if ($red != $profile) { $server_url = $red; - $network = Protocol::DIASPORA; } } @@ -255,7 +250,6 @@ class PortableContact $mastodon = preg_replace("=(https?://)(.*)/users/(.*)=ism", "$1$2", $profile); if ($mastodon != $profile) { $server_url = $mastodon; - $network = Protocol::OSTATUS; } } @@ -264,7 +258,6 @@ class PortableContact $ostatus = preg_replace("=(https?://)(.*)/user/(.*)=ism", "$1$2", $profile); if ($ostatus != $profile) { $server_url = $ostatus; - $network = Protocol::OSTATUS; } } @@ -273,7 +266,6 @@ class PortableContact $base = preg_replace("=(https?://)(.*?)/(.*)=ism", "$1$2", $profile); if ($base != $profile) { $server_url = $base; - $network = Protocol::PHANTOM; } } @@ -609,8 +601,6 @@ class PortableContact */ private static function detectPocoData(array $data) { - $server = false; - if (!isset($data['entry'])) { return false; } diff --git a/src/Util/Network.php b/src/Util/Network.php index 4e4d329d3d..c7e7c3c5ea 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -92,8 +92,6 @@ class Network */ public static function curl($url, $binary = false, &$redirects = 0, $opts = []) { - $ret = ['return_code' => 0, 'success' => false, 'header' => '', 'info' => '', 'body' => '']; - $stamp1 = microtime(true); $a = \get_app(); @@ -322,7 +320,6 @@ class Network $s = @curl_exec($ch); - $base = $s; $curl_info = curl_getinfo($ch); $curlResponse = new CurlResult($url, $s, $curl_info, curl_errno($ch), curl_error($ch)); diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index e2bd1e4e5b..9a3de88cf2 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -113,8 +113,6 @@ class ParseUrl */ public static function getSiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) { - $a = \get_app(); - $siteinfo = []; // Check if the URL does contain a scheme diff --git a/src/Util/XML.php b/src/Util/XML.php index 09072610c1..d56b2311f3 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -287,9 +287,6 @@ class XML //Initializations $xml_array = []; - $parents = []; - $opened_tags = []; - $arr = []; $current = &$xml_array; // Reference diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php index 1db7d916d1..b9a8c0f2ec 100644 --- a/src/Worker/Cron.php +++ b/src/Worker/Cron.php @@ -143,13 +143,11 @@ class Cron $manual_id = 0; $generation = 0; $force = false; - $restart = false; if ($parameter == 'force') { $force = true; } if ($parameter == 'restart') { - $restart = true; $generation = intval($generation); if (!$generation) { exit(); @@ -167,8 +165,6 @@ class Cron Addon::reload(); - $d = DateTimeFormat::utcNow(); - // Only poll from those with suitable relationships, // and which have a polling address and ignore Diaspora since // we are unable to match those posts with a Diaspora GUID and prevent duplicates. diff --git a/src/Worker/DBClean.php b/src/Worker/DBClean.php index f123b2dd89..6d253e0cea 100644 --- a/src/Worker/DBClean.php +++ b/src/Worker/DBClean.php @@ -60,8 +60,6 @@ class DBClean { * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function removeOrphans($stage) { - $count = 0; - // We split the deletion in many small tasks $limit = Config::get('system', 'dbclean-expire-limit', 1000); diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 112c79c8cd..2d36ee8f47 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -30,11 +30,7 @@ class OnePoll Logger::log('Start for contact ' . $contact_id); - $manual_id = 0; - $generation = 0; - $hub_update = false; $force = false; - $restart = false; if ($command == "force") { $force = true; @@ -45,7 +41,6 @@ class OnePoll return; } - $d = DateTimeFormat::utcNow(); $contact = DBA::selectFirst('contact', [], ['id' => $contact_id]); if (!DBA::isResult($contact)) { @@ -580,7 +575,7 @@ class OnePoll $datarray['allow_cid'] = '<' . $contact['id'] . '>'; } - $stored_item = Item::insert($datarray); + Item::insert($datarray); switch ($mailconf['action']) { case 0: diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index 9f5fcdcc5f..1fb1969310 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -26,8 +26,6 @@ class PubSubPublish private static function publish($id) { - $a = BaseObject::getApp(); - $subscriber = DBA::selectFirst('push_subscriber', [], ['id' => $id]); if (!DBA::isResult($subscriber)) { return; @@ -58,8 +56,6 @@ class PubSubPublish $postResult = Network::post($subscriber['callback_url'], $params, $headers); $ret = $postResult->getReturnCode(); - $condition = ['id' => $subscriber['id']]; - if ($ret >= 200 && $ret <= 299) { Logger::log('Successfully pushed to ' . $subscriber['callback_url']); From dbc6eb5422b81c95d6e1eea63c8ace794ccd2039 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 01:23:49 -0500 Subject: [PATCH 150/728] Remove unused code in mod/ - Remove commented code - Remove unused/immediately overwritten variables - Remove extraneous parameters - Remove unreachable code --- mod/allfriends.php | 2 -- mod/api.php | 4 +--- mod/delegate.php | 2 +- mod/dfrn_notify.php | 1 - mod/dfrn_poll.php | 6 +----- mod/dfrn_request.php | 11 +++-------- mod/directory.php | 1 - mod/display.php | 4 ---- mod/editpost.php | 21 +-------------------- mod/events.php | 23 ++++------------------- mod/fbrowser.php | 12 +++--------- mod/fsuggest.php | 2 +- mod/home.php | 3 --- mod/hovercard.php | 1 - mod/item.php | 10 ++-------- mod/lostpass.php | 2 -- mod/message.php | 2 -- mod/network.php | 12 ++---------- mod/notes.php | 6 ------ mod/photos.php | 3 +-- mod/profile.php | 4 +--- mod/profile_photo.php | 10 ++++------ mod/profiles.php | 25 ++++--------------------- mod/pubsub.php | 1 - mod/pubsubhubbub.php | 1 - mod/register.php | 3 --- mod/repair_ostatus.php | 2 +- mod/salmon.php | 1 - mod/settings.php | 7 ++----- mod/videos.php | 16 ---------------- mod/view.php | 1 - mod/wall_attach.php | 3 --- mod/wall_upload.php | 2 -- src/Worker/PubSubPublish.php | 1 - 34 files changed, 32 insertions(+), 173 deletions(-) diff --git a/mod/allfriends.php b/mod/allfriends.php index 5234ee8c69..ce648cc25a 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -60,8 +60,6 @@ function allfriends_content(App $a) //get further details of the contact $contact_details = Model\Contact::getDetailsByURL($rr['url'], $uid, $rr); - $photo_menu = ''; - $connlnk = ''; // $rr[cid] is only available for common contacts. So if the contact is a common one, use contact_photo_menu to generate the photo_menu // If the contact is not common to the user, Connect/Follow' will be added to the photo menu diff --git a/mod/api.php b/mod/api.php index 466bd7b34d..4a1db1be55 100644 --- a/mod/api.php +++ b/mod/api.php @@ -11,10 +11,8 @@ use Friendica\Module\Login; require_once 'include/api.php'; -function oauth_get_client($request) +function oauth_get_client(OAuthRequest $request) { - - $params = $request->get_parameters(); $token = $params['oauth_token']; diff --git a/mod/delegate.php b/mod/delegate.php index b373c20402..4560784515 100644 --- a/mod/delegate.php +++ b/mod/delegate.php @@ -17,7 +17,7 @@ require_once 'mod/settings.php'; function delegate_init(App $a) { - return settings_init($a); + settings_init($a); } function delegate_post(App $a) diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index c675258107..41b7684ac6 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -253,7 +253,6 @@ function dfrn_notify_content(App $a) { */ $dfrn_id = Strings::escapeTags(trim($_GET['dfrn_id'])); - $dfrn_version = (float) $_GET['dfrn_version']; $rino_remote = (!empty($_GET['rino']) ? intval($_GET['rino']) : 0); $type = ""; $last_update = ""; diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index 928690060f..5b72c0bf94 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -28,7 +28,6 @@ function dfrn_poll_init(App $a) $challenge = defaults($_GET, 'challenge' , ''); $sec = defaults($_GET, 'sec' , ''); $dfrn_version = (float) defaults($_GET, 'dfrn_version' , 2.0); - $perm = defaults($_GET, 'perm' , 'r'); $quiet = !empty($_GET['quiet']); // Possibly it is an OStatus compatible server that requests a user feed @@ -319,15 +318,12 @@ function dfrn_poll_post(App $a) switch ($direction) { case -1: $sql_extra = sprintf(" AND `issued-id` = '%s' ", DBA::escape($dfrn_id)); - $my_id = $dfrn_id; break; case 0: $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '1:' . $dfrn_id; break; case 1: $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '0:' . $dfrn_id; break; default: $a->internalRedirect(); @@ -420,7 +416,7 @@ function dfrn_poll_content(App $a) DBA::delete('challenge', ["`expire` < ?", time()]); if ($type !== 'profile') { - $r = q("INSERT INTO `challenge` ( `challenge`, `dfrn-id`, `expire` , `type`, `last_update` ) + q("INSERT INTO `challenge` ( `challenge`, `dfrn-id`, `expire` , `type`, `last_update` ) VALUES( '%s', '%s', '%s', '%s', '%s' ) ", DBA::escape($hash), DBA::escape($dfrn_id), diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 7b446b5ead..7c76af1b6a 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -188,7 +188,7 @@ function dfrn_request_post(App $a) } if (strlen($dfrn_request) && strlen($confirm_key)) { - $s = Network::fetchUrl($dfrn_request . '?confirm_key=' . $confirm_key); + Network::fetchUrl($dfrn_request . '?confirm_key=' . $confirm_key); } // (ignore reply, nothing we can do it failed) @@ -230,7 +230,6 @@ function dfrn_request_post(App $a) } $nickname = $a->profile['nickname']; - $notify_flags = $a->profile['notify-flags']; $uid = $a->profile['uid']; $maxreq = intval($a->profile['maxreq']); $contact_record = null; @@ -271,8 +270,6 @@ function dfrn_request_post(App $a) } } - $real_name = !empty($_POST['realname']) ? Strings::escapeTags(trim($_POST['realname'])) : ''; - $url = trim($_POST['dfrn_url']); if (!strlen($url)) { notice(L10n::t("Invalid locator") . EOL); @@ -420,7 +417,7 @@ function dfrn_request_post(App $a) $hash = Strings::getRandomHex() . (string) time(); // Generate a confirm_key if (is_array($contact_record)) { - $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) + q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) VALUES ( %d, %d, 1, %d, '%s', '%s', '%s' )", intval($uid), intval($contact_record['id']), @@ -586,7 +583,7 @@ function dfrn_request_content(App $a) // If we are auto_confirming, this record will have already been nuked // in dfrn_confirm_post() - $r = q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s'", + q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s'", DBA::escape($_GET['confirm_key']) ); } @@ -657,6 +654,4 @@ function dfrn_request_content(App $a) ]); return $o; } - - return; // Somebody is fishing. } diff --git a/mod/directory.php b/mod/directory.php index 0a37c1dc04..c32cf5dbb8 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -112,7 +112,6 @@ function directory_content(App $a) } while ($rr = DBA::fetch($r)) { - $itemurl= ''; $itemurl = (($rr['addr'] != "") ? $rr['addr'] : $rr['profile_url']); diff --git a/mod/display.php b/mod/display.php index dc43e08d34..3922c83f35 100644 --- a/mod/display.php +++ b/mod/display.php @@ -35,7 +35,6 @@ function display_init(App $a) } $nick = (($a->argc > 1) ? $a->argv[1] : ''); - $profiledata = []; if ($a->argc == 3) { if (substr($a->argv[2], -5) == '.atom') { @@ -157,7 +156,6 @@ function display_fetchauthor($a, $item) } if (!$skip) { - $author = ""; preg_match("/author='(.*?)'/ism", $attributes, $matches); if (!empty($matches[1])) { $profiledata["name"] = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8'); @@ -166,7 +164,6 @@ function display_fetchauthor($a, $item) if (!empty($matches[1])) { $profiledata["name"] = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8'); } - $profile = ""; preg_match("/profile='(.*?)'/ism", $attributes, $matches); if (!empty($matches[1])) { $profiledata["url"] = $matches[1]; @@ -175,7 +172,6 @@ function display_fetchauthor($a, $item) if (!empty($matches[1])) { $profiledata["url"] = $matches[1]; } - $avatar = ""; preg_match("/avatar='(.*?)'/ism", $attributes, $matches); if (!empty($matches[1])) { $profiledata["photo"] = $matches[1]; diff --git a/mod/editpost.php b/mod/editpost.php index bf103cf23c..c1c0d16d7f 100644 --- a/mod/editpost.php +++ b/mod/editpost.php @@ -2,9 +2,9 @@ /** * @file mod/editpost.php */ + use Friendica\App; use Friendica\Content\Feature; -use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; @@ -63,25 +63,6 @@ function editpost_content(App $a) $jotplugins = ''; $jotnets = ''; - $mail_disabled = ((function_exists('imap_open') && !Config::get('system', 'imap_disabled')) ? 0 : 1); - - $mail_enabled = false; - $pubmail_enabled = false; - - if (!$mail_disabled) { - $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", - intval(local_user()) - ); - - if (DBA::isResult($r)) { - $mail_enabled = true; - - if (intval($r[0]['pubmail'])) { - $pubmail_enabled = true; - } - } - } - Hook::callAll('jot_tool', $jotplugins); $tpl = Renderer::getMarkupTemplate("jot.tpl"); diff --git a/mod/events.php b/mod/events.php index 60fa039221..008cf643ce 100644 --- a/mod/events.php +++ b/mod/events.php @@ -213,14 +213,14 @@ function events_content(App $a) } if (($a->argc > 2) && ($a->argv[1] === 'ignore') && intval($a->argv[2])) { - $r = q("UPDATE `event` SET `ignore` = 1 WHERE `id` = %d AND `uid` = %d", + q("UPDATE `event` SET `ignore` = 1 WHERE `id` = %d AND `uid` = %d", intval($a->argv[2]), intval(local_user()) ); } if (($a->argc > 2) && ($a->argv[1] === 'unignore') && intval($a->argv[2])) { - $r = q("UPDATE `event` SET `ignore` = 0 WHERE `id` = %d AND `uid` = %d", + q("UPDATE `event` SET `ignore` = 0 WHERE `id` = %d AND `uid` = %d", intval($a->argv[2]), intval(local_user()) ); @@ -300,21 +300,6 @@ function events_content(App $a) $y = 2100; } - $nextyear = $y; - $nextmonth = $m + 1; - if ($nextmonth > 12) { - $nextmonth = 1; - $nextyear ++; - } - - $prevyear = $y; - if ($m > 1) { - $prevmonth = $m - 1; - } else { - $prevmonth = 12; - $prevyear --; - } - $dim = Temporal::getDaysInMonth($y, $m); $start = sprintf('%d-%d-%d %d:%d:%d', $y, $m, 1, 0, 0, 0); $finish = sprintf('%d-%d-%d %d:%d:%d', $y, $m, $dim, 23, 59, 59); @@ -526,7 +511,7 @@ function events_content(App $a) '$s_text' => L10n::t('Event Starts:') . ' *', '$s_dsel' => Temporal::getDateTimeField( new DateTime(), - DateTime::createFromFormat('Y', $syear+5), + DateTime::createFromFormat('Y', intval($syear) + 5), DateTime::createFromFormat('Y-m-d H:i', "$syear-$smonth-$sday $shour:$sminute"), L10n::t('Event Starts:'), 'start_text', @@ -541,7 +526,7 @@ function events_content(App $a) '$f_text' => L10n::t('Event Finishes:'), '$f_dsel' => Temporal::getDateTimeField( new DateTime(), - DateTime::createFromFormat('Y', $fyear+5), + DateTime::createFromFormat('Y', intval($fyear) + 5), DateTime::createFromFormat('Y-m-d H:i', "$fyear-$fmonth-$fday $fhour:$fminute"), L10n::t('Event Finishes:'), 'finish_text', diff --git a/mod/fbrowser.php b/mod/fbrowser.php index 3401359052..d302383157 100644 --- a/mod/fbrowser.php +++ b/mod/fbrowser.php @@ -28,10 +28,6 @@ function fbrowser_content(App $a) } $template_file = "filebrowser.tpl"; - $mode = ""; - if (!empty($_GET['mode'])) { - $mode = "?mode=".$_GET['mode']; - } switch ($a->argv[1]) { case "image": @@ -55,12 +51,11 @@ function fbrowser_content(App $a) $albums = array_map("_map_folder1", $albums); } - $album = ""; - if ($a->argc==3) { + if ($a->argc == 3) { $album = hex2bin($a->argv[2]); $sql_extra = sprintf("AND `album` = '%s' ", DBA::escape($album)); $sql_extra2 = ""; - $path[]=[$a->argv[2], $album]; + $path[] = [$a->argv[2], $album]; } $r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`, @@ -118,8 +113,7 @@ function fbrowser_content(App $a) function _map_files2($rr) { - $a = \get_app(); - list($m1,$m2) = explode("/", $rr['filetype']); + list($m1, $m2) = explode("/", $rr['filetype']); $filetype = ( (file_exists("images/icons/$m1.png"))?$m1:"zip"); $filename_e = $rr['filename']; diff --git a/mod/fsuggest.php b/mod/fsuggest.php index 2195f455af..e84a42734c 100644 --- a/mod/fsuggest.php +++ b/mod/fsuggest.php @@ -45,7 +45,7 @@ function fsuggest_post(App $a) intval(local_user()) ); if (DBA::isResult($r)) { - $x = q("INSERT INTO `fsuggest` ( `uid`,`cid`,`name`,`url`,`request`,`photo`,`note`,`created`) + q("INSERT INTO `fsuggest` ( `uid`,`cid`,`name`,`url`,`request`,`photo`,`note`,`created`) VALUES ( %d, %d, '%s','%s','%s','%s','%s','%s')", intval(local_user()), intval($contact_id), diff --git a/mod/home.php b/mod/home.php index 8e53c24f3d..34f6d43683 100644 --- a/mod/home.php +++ b/mod/home.php @@ -61,7 +61,4 @@ function home_content(App $a) { '$login' => $login, '$content' => $content ]); - - return $o; - }} diff --git a/mod/hovercard.php b/mod/hovercard.php index f71977f074..047502fc34 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -47,7 +47,6 @@ function hovercard_content() // If a contact is connected the url is internally changed to 'redir/CID'. We need the pure url to search for // the contact. So we strip out the contact id from the internal url and look in the contact table for // the real url (nurl) - $cid = 0; if (strpos($profileurl, 'redir/') === 0) { $cid = intval(substr($profileurl, 6)); $remote_contact = DBA::selectFirst('contact', ['nurl'], ['id' => $cid]); diff --git a/mod/item.php b/mod/item.php index 576ad09d6d..6276ba4d1e 100644 --- a/mod/item.php +++ b/mod/item.php @@ -125,8 +125,6 @@ function item_post(App $a) { $parent = $parent_item['id']; $parent_user = $parent_item['uid']; - $parent_contact = Contact::getDetailsByURL($parent_item["author-link"]); - $objecttype = ACTIVITY_OBJ_COMMENT; } @@ -386,7 +384,7 @@ function item_post(App $a) { continue; } - $success = handle_tag($a, $body, $inform, $str_tags, local_user() ? local_user() : $profile_uid, $tag, $network); + $success = handle_tag($body, $inform, $str_tags, local_user() ? local_user() : $profile_uid, $tag, $network); if ($success['replaced']) { $tagged[] = $tag; } @@ -723,8 +721,6 @@ function item_post(App $a) { $a->internalRedirect($return_path); } exit(); - } else { - $post_id = 0; } unset($datarray['edit']); @@ -924,11 +920,10 @@ function item_content(App $a) * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ -function handle_tag(App $a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") +function handle_tag(&$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") { $replaced = false; $r = null; - $tag_type = '@'; //is it a person tag? if ((strpos($tag, '@') === 0) || (strpos($tag, '!') === 0)) { @@ -964,7 +959,6 @@ function handle_tag(App $a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $n return $replaced; } - $stat = false; //get the person's name $name = substr($tag, 1); diff --git a/mod/lostpass.php b/mod/lostpass.php index cb2dd3ca3c..548cea185c 100644 --- a/mod/lostpass.php +++ b/mod/lostpass.php @@ -81,7 +81,6 @@ function lostpass_post(App $a) function lostpass_content(App $a) { - $o = ''; if ($a->argc > 1) { $pwdreset_token = $a->argv[1]; @@ -127,7 +126,6 @@ function lostpass_form() function lostpass_generate_password($user) { $o = ''; - $a = \get_app(); $new_password = User::generateNewPassword(); $result = User::updatePassword($user['uid'], $new_password); diff --git a/mod/message.php b/mod/message.php index 3f1ec6a2e6..3ff84a1e66 100644 --- a/mod/message.php +++ b/mod/message.php @@ -185,7 +185,6 @@ function message_content(App $a) ); if (DBA::isResult($r)) { $parent = $r[0]['parent-uri']; - $convid = $r[0]['convid']; if (DBA::delete('mail', ['parent-uri' => $parent, 'uid' => local_user()])) { info(L10n::t('Conversation removed.') . EOL); @@ -230,7 +229,6 @@ function message_content(App $a) if (DBA::isResult($r)) { $prename = $r[0]['name']; - $preurl = $r[0]['url']; $preid = $r[0]['id']; $preselect = [$preid]; } else { diff --git a/mod/network.php b/mod/network.php index a71447e5e5..e05f9814a0 100644 --- a/mod/network.php +++ b/mod/network.php @@ -314,7 +314,7 @@ function networkSetSeen($condition) $unseen = Item::exists($condition); if ($unseen) { - $r = Item::update(['unseen' => false], $condition); + Item::update(['unseen' => false], $condition); } } @@ -407,12 +407,6 @@ function networkFlatView(App $a, $update = 0) // Rawmode is used for fetching new content at the end of the page $rawmode = (isset($_GET['mode']) && ($_GET['mode'] == 'raw')); - if (isset($_GET['last_id'])) { - $last_id = intval($_GET['last_id']); - } else { - $last_id = 0; - } - $o = ''; $file = defaults($_GET, 'file', ''); @@ -449,8 +443,7 @@ function networkFlatView(App $a, $update = 0) $pager = new Pager($a->query_string); - /// @TODO Figure out why this variable is unused - $pager_sql = networkPager($a, $pager, $update); + networkPager($a, $pager, $update); if (strlen($file)) { $condition = ["`term` = ? AND `otype` = ? AND `type` = ? AND `uid` = ?", @@ -621,7 +614,6 @@ function networkThreadedView(App $a, $update, $parent) $sql_extra3 = ''; $sql_table = '`thread`'; $sql_parent = '`iid`'; - $sql_order = ''; if ($update) { $sql_table = '`item`'; diff --git a/mod/notes.php b/mod/notes.php index 6ecc819240..fdb12d6cc5 100644 --- a/mod/notes.php +++ b/mod/notes.php @@ -17,13 +17,7 @@ function notes_init(App $a) return; } - $profile = 0; - - $which = $a->user['nickname']; - Nav::setSelected('home'); - - //Profile::load($a, $which, $profile); } diff --git a/mod/photos.php b/mod/photos.php index 3a92774654..31b026f899 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -518,7 +518,6 @@ function photos_post(App $a) $taginfo[] = [$newname, $profile, $salmon]; } else { $newname = $name; - $alias = ''; $tagcid = 0; if (strrpos($newname, '+')) { @@ -655,7 +654,7 @@ function photos_post(App $a) . System::baseUrl() . '/photos/' . $owner_record['nickname'] . '/image/' . $photo['resource-id'] . ''; $arr['target'] .= '' . XML::escape('' . "\n" . '') . ''; - $item_id = Item::insert($arr); + Item::insert($arr); } } } diff --git a/mod/profile.php b/mod/profile.php index 858748bb82..8a21e24dc1 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -130,7 +130,6 @@ function profile_content(App $a, $update = 0) $groups = []; $remote_cid = null; - $tab = 'posts'; $o = ''; if ($update) { @@ -310,8 +309,7 @@ function profile_content(App $a, $update = 0) if ($is_owner) { $unseen = Item::exists(['wall' => true, 'unseen' => true, 'uid' => local_user()]); if ($unseen) { - $r = Item::update(['unseen' => false], - ['wall' => true, 'unseen' => true, 'uid' => local_user()]); + Item::update(['unseen' => false], ['wall' => true, 'unseen' => true, 'uid' => local_user()]); } } diff --git a/mod/profile_photo.php b/mod/profile_photo.php index b802050b63..a0faa40cf5 100644 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -109,11 +109,11 @@ function profile_photo_post(App $a) // If setting for the default profile, unset the profile photo flag from any other photos I own if ($is_default_profile) { - $r = q("UPDATE `photo` SET `profile` = 0 WHERE `profile` = 1 AND `resource-id` != '%s' AND `uid` = %d", + q("UPDATE `photo` SET `profile` = 0 WHERE `profile` = 1 AND `resource-id` != '%s' AND `uid` = %d", DBA::escape($base_image['resource-id']), intval(local_user()) ); } else { - $r = q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d", + q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d", DBA::escape(System::baseUrl() . '/photo/' . $base_image['resource-id'] . '-4.' . $Image->getExt()), DBA::escape(System::baseUrl() . '/photo/' . $base_image['resource-id'] . '-5.' . $Image->getExt()), intval($_REQUEST['profile']), intval(local_user()) @@ -215,9 +215,9 @@ function profile_photo_content(App $a) // set an already uloaded photo as profile photo // if photo is in 'Profile Photos', change it in db if (($r[0]['album'] == L10n::t('Profile Photos')) && ($havescale)) { - $r = q("UPDATE `photo` SET `profile`=0 WHERE `profile`=1 AND `uid`=%d", intval(local_user())); + q("UPDATE `photo` SET `profile`=0 WHERE `profile`=1 AND `uid`=%d", intval(local_user())); - $r = q("UPDATE `photo` SET `profile`=1 WHERE `uid` = %d AND `resource-id` = '%s'", intval(local_user()), + q("UPDATE `photo` SET `profile`=1 WHERE `uid` = %d AND `resource-id` = '%s'", intval(local_user()), DBA::escape($resource_id) ); @@ -275,8 +275,6 @@ function profile_photo_content(App $a) ]); return $o; } - - return; // NOTREACHED } function profile_photo_crop_ui_head(App $a, Image $image) diff --git a/mod/profiles.php b/mod/profiles.php index 74a3d91f07..b56a7911d3 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -48,12 +48,12 @@ function profiles_init(App $a) { // move every contact using this profile as their default to the user default - $r = q("UPDATE `contact` SET `profile-id` = (SELECT `profile`.`id` AS `profile-id` FROM `profile` WHERE `profile`.`is-default` = 1 AND `profile`.`uid` = %d LIMIT 1) WHERE `profile-id` = %d AND `uid` = %d ", + q("UPDATE `contact` SET `profile-id` = (SELECT `profile`.`id` AS `profile-id` FROM `profile` WHERE `profile`.`is-default` = 1 AND `profile`.`uid` = %d LIMIT 1) WHERE `profile-id` = %d AND `uid` = %d ", intval(local_user()), intval($a->argv[2]), intval(local_user()) ); - $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d", + q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d", intval($a->argv[2]), intval(local_user()) ); @@ -79,7 +79,7 @@ function profiles_init(App $a) { $r1 = q("SELECT `name`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1", intval(local_user())); - $r2 = q("INSERT INTO `profile` (`uid` , `profile-name` , `name`, `photo`, `thumb`) + q("INSERT INTO `profile` (`uid` , `profile-name` , `name`, `photo`, `thumb`) VALUES ( %d, '%s', '%s', '%s', '%s' )", intval(local_user()), DBA::escape($name), @@ -118,7 +118,6 @@ function profiles_init(App $a) { if(! DBA::isResult($r1)) { notice(L10n::t('Profile unavailable to clone.') . EOL); exit(); - return; } unset($r1[0]['id']); $r1[0]['is-default'] = 0; @@ -151,7 +150,6 @@ function profiles_init(App $a) { if (! DBA::isResult($r)) { notice(L10n::t('Profile not found.') . EOL); exit(); - return; } Profile::load($a, $a->user['nickname'], $r[0]['id']); @@ -342,54 +340,42 @@ function profiles_post(App $a) { PConfig::set(local_user(), 'system', 'detailled_profile', (($_POST['detailled_profile'] == 1) ? 1: 0)); $changes = []; - $value = ''; if ($is_default) { if ($marital != $orig[0]['marital']) { $changes[] = '[color=#ff0000]♥[/color] ' . L10n::t('Marital Status'); - $value = $marital; } if ($withchanged) { $changes[] = '[color=#ff0000]♥[/color] ' . L10n::t('Romantic Partner'); - $value = strip_tags($with); } if ($likes != $orig[0]['likes']) { $changes[] = L10n::t('Likes'); - $value = $likes; } if ($dislikes != $orig[0]['dislikes']) { $changes[] = L10n::t('Dislikes'); - $value = $dislikes; } if ($work != $orig[0]['work']) { $changes[] = L10n::t('Work/Employment'); } if ($religion != $orig[0]['religion']) { $changes[] = L10n::t('Religion'); - $value = $religion; } if ($politic != $orig[0]['politic']) { $changes[] = L10n::t('Political Views'); - $value = $politic; } if ($gender != $orig[0]['gender']) { $changes[] = L10n::t('Gender'); - $value = $gender; } if ($sexual != $orig[0]['sexual']) { $changes[] = L10n::t('Sexual Preference'); - $value = $sexual; } if ($xmpp != $orig[0]['xmpp']) { $changes[] = L10n::t('XMPP'); - $value = $xmpp; } if ($homepage != $orig[0]['homepage']) { $changes[] = L10n::t('Homepage'); - $value = $homepage; } if ($interest != $orig[0]['interest']) { $changes[] = L10n::t('Interests'); - $value = $interest; } if ($address != $orig[0]['address']) { $changes[] = L10n::t('Address'); @@ -400,9 +386,6 @@ function profiles_post(App $a) { if ($locality != $orig[0]['locality'] || $region != $orig[0]['region'] || $country_name != $orig[0]['country-name']) { $changes[] = L10n::t('Location'); - $comma1 = ((($locality) && ($region || $country_name)) ? ', ' : ' '); - $comma2 = (($region && $country_name) ? ', ' : ''); - $value = $locality . $comma1 . $region . $comma2 . $country_name; } } @@ -487,7 +470,7 @@ function profiles_post(App $a) { if ($is_default) { if ($namechanged) { - $r = q("UPDATE `user` set `username` = '%s' where `uid` = %d", + q("UPDATE `user` set `username` = '%s' where `uid` = %d", DBA::escape($name), intval(local_user()) ); diff --git a/mod/pubsub.php b/mod/pubsub.php index 9b5bf1209e..c5744f399b 100644 --- a/mod/pubsub.php +++ b/mod/pubsub.php @@ -36,7 +36,6 @@ function pubsub_init(App $a) $hub_mode = Strings::escapeTags(trim(defaults($_GET, 'hub_mode', ''))); $hub_topic = Strings::escapeTags(trim(defaults($_GET, 'hub_topic', ''))); $hub_challenge = Strings::escapeTags(trim(defaults($_GET, 'hub_challenge', ''))); - $hub_lease = Strings::escapeTags(trim(defaults($_GET, 'hub_lease_seconds', ''))); $hub_verify = Strings::escapeTags(trim(defaults($_GET, 'hub_verify_token', ''))); Logger::log('Subscription from ' . $_SERVER['REMOTE_ADDR'] . ' Mode: ' . $hub_mode . ' Nick: ' . $nick); diff --git a/mod/pubsubhubbub.php b/mod/pubsubhubbub.php index 843406fe6f..342facd107 100644 --- a/mod/pubsubhubbub.php +++ b/mod/pubsubhubbub.php @@ -33,7 +33,6 @@ function pubsubhubbub_init(App $a) { if ($_SERVER['REQUEST_METHOD'] === 'POST') { $hub_mode = post_var('hub_mode'); $hub_callback = post_var('hub_callback'); - $hub_verify = post_var('hub_verify'); $hub_verify_token = post_var('hub_verify_token'); $hub_secret = post_var('hub_secret'); $hub_topic = post_var('hub_topic'); diff --git a/mod/register.php b/mod/register.php index 0125ae417e..e69315a33a 100644 --- a/mod/register.php +++ b/mod/register.php @@ -22,9 +22,6 @@ function register_post(App $a) { BaseModule::checkFormSecurityTokenRedirectOnError('/register', 'register'); - $verified = 0; - $blocked = 1; - $arr = ['post' => $_POST]; Hook::callAll('register_post', $arr); diff --git a/mod/repair_ostatus.php b/mod/repair_ostatus.php index 5a6afd9fb4..51a6aadaad 100644 --- a/mod/repair_ostatus.php +++ b/mod/repair_ostatus.php @@ -57,7 +57,7 @@ function repair_ostatus_content(App $a) { $o .= "

".L10n::t("Keep this window open until done.")."

"; - $result = Contact::createFromProbe($uid, $r[0]["url"], true); + Contact::createFromProbe($uid, $r[0]["url"], true); $a->page['htmlhead'] = ''; diff --git a/mod/salmon.php b/mod/salmon.php index eef2510762..536a4516ce 100644 --- a/mod/salmon.php +++ b/mod/salmon.php @@ -23,7 +23,6 @@ function salmon_post(App $a, $xml = '') { Logger::log('new salmon ' . $xml, Logger::DATA); $nick = (($a->argc > 1) ? Strings::escapeTags(trim($a->argv[1])) : ''); - $mentions = (($a->argc > 2 && $a->argv[2] === 'mention') ? true : false); $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1", DBA::escape($nick) diff --git a/mod/settings.php b/mod/settings.php index 14c0cc64d7..567270c6ea 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -367,7 +367,7 @@ function settings_post(App $a) } Theme::install($theme); - $r = q("UPDATE `user` SET `theme` = '%s' WHERE `uid` = %d", + q("UPDATE `user` SET `theme` = '%s' WHERE `uid` = %d", DBA::escape($theme), intval(local_user()) ); @@ -484,8 +484,6 @@ function settings_post(App $a) $page_flags = Contact::PAGE_COMMUNITY; } - $email_changed = false; - $err = ''; if ($username != $a->user['username']) { @@ -498,7 +496,6 @@ function settings_post(App $a) } if ($email != $a->user['email']) { - $email_changed = true; // check for the correct password if (!User::authenticate(intval(local_user()), $_POST['mpassword'])) { $err .= L10n::t('Wrong Password') . EOL; @@ -611,7 +608,7 @@ function settings_post(App $a) // clear session language unset($_SESSION['language']); - $r = q("UPDATE `profile` + q("UPDATE `profile` SET `publish` = %d, `name` = '%s', `net-publish` = %d, diff --git a/mod/videos.php b/mod/videos.php index 408e2acaa6..df0fb23756 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -31,8 +31,6 @@ function videos_init(App $a) Nav::setSelected('home'); - $o = ''; - if ($a->argc > 1) { $nick = $a->argv[1]; $user = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1", @@ -163,19 +161,12 @@ function videos_content(App $a) // if ($a->argc > 3) { $datatype = $a->argv[2]; - $datum = $a->argv[3]; } elseif(($a->argc > 2) && ($a->argv[2] === 'upload')) { $datatype = 'upload'; } else { $datatype = 'summary'; } - if ($a->argc > 4) { - $cmd = $a->argv[4]; - } else { - $cmd = 'view'; - } - // // Setup permissions structures // @@ -209,7 +200,6 @@ function videos_content(App $a) if (DBA::isResult($r)) { $can_post = true; - $contact = $r[0]; $remote_contact = true; $visitor = $contact_id; } @@ -239,17 +229,11 @@ function videos_content(App $a) ); if (DBA::isResult($r)) { - $contact = $r[0]; $remote_contact = true; } } } - if (!$remote_contact && local_user()) { - $contact_id = $_SESSION['cid']; - $contact = $a->contact; - } - if ($a->data['user']['hidewall'] && (local_user() != $owner_uid) && (!$remote_contact)) { notice(L10n::t('Access to this item is restricted.') . EOL); return; diff --git a/mod/view.php b/mod/view.php index 640606bce1..c59eea2982 100644 --- a/mod/view.php +++ b/mod/view.php @@ -13,7 +13,6 @@ function view_init(App $a) if ($a->argc == 4){ $theme = $a->argv[2]; - $THEMEPATH = "view/theme/$theme"; if(file_exists("view/theme/$theme/style.php")) require_once("view/theme/$theme/style.php"); } diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 40f82eef91..fb665ac2fa 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -38,11 +38,9 @@ function wall_attach_post(App $a) { } $can_post = false; - $visitor = 0; $page_owner_uid = $r[0]['uid']; $page_owner_cid = $r[0]['id']; - $page_owner_nick = $r[0]['nickname']; $community_page = (($r[0]['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); if ((local_user()) && (local_user() == $page_owner_uid)) { @@ -68,7 +66,6 @@ function wall_attach_post(App $a) { if (DBA::isResult($r)) { $can_post = true; - $visitor = $contact_id; } } } diff --git a/mod/wall_upload.php b/mod/wall_upload.php index d1fb918bfe..ea06b1d1c1 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -272,8 +272,6 @@ function wall_upload_post(App $a, $desktopmode = true) } } - $basename = basename($filename); - if (!$desktopmode) { $r = q("SELECT `id`, `datasize`, `width`, `height`, `type` FROM `photo` WHERE `resource-id` = '%s' diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index 1fb1969310..b6061f8199 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -5,7 +5,6 @@ namespace Friendica\Worker; -use Friendica\BaseObject; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Database\DBA; From da7706ce61355becf2830be52bcd2d2ed988ae65 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 12:33:25 -0500 Subject: [PATCH 151/728] Remove unused code in include/ - Remove unused variables --- include/api.php | 1 - include/conversation.php | 1 - include/items.php | 2 -- 3 files changed, 4 deletions(-) diff --git a/include/api.php b/include/api.php index 329b49f609..d1d54f144c 100644 --- a/include/api.php +++ b/include/api.php @@ -3735,7 +3735,6 @@ function api_direct_messages_new($type) } $replyto = ''; - $sub = ''; if (!empty($_REQUEST['replyto'])) { $r = q( 'SELECT `parent-uri`, `title` FROM `mail` WHERE `uid`=%d AND `id`=%d', diff --git a/include/conversation.php b/include/conversation.php index 9dd7d53c86..5125b3d1e8 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -940,7 +940,6 @@ function item_photo_menu($item) { */ function builtin_activity_puller($item, &$conv_responses) { foreach ($conv_responses as $mode => $v) { - $url = ''; $sparkle = ''; switch ($mode) { diff --git a/include/items.php b/include/items.php index 2f98122b7b..52d37d621c 100644 --- a/include/items.php +++ b/include/items.php @@ -302,8 +302,6 @@ function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'sub return; } - $a = BaseObject::getApp(); - $user = DBA::selectFirst('user', ['nickname'], ['uid' => $importer['uid']]); // No user, no nickname, we quit From aa15c0e0942058ca20445a16f999bddcb474d59b Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 20:21:58 +0100 Subject: [PATCH 152/728] Bugfixing Monolog - Default Loglevel for logs set to 'info' - Default config level is set to 'notice' - using 'notice' for auth-failures - Bugfixing wrong usage of legacy 'log()' --- src/Core/Logger.php | 22 ++++++++++++---------- src/Module/Login.php | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 16fb138628..c44ccc968f 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -84,7 +84,7 @@ class Logger extends BaseObject } if (is_int($loglevel)) { - $loglevel = self::mapLegacyConfigDebugLevel($loglevel); + $loglevel = self::mapLegacyDebugLevel($loglevel); } LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); @@ -111,7 +111,7 @@ class Logger extends BaseObject * * @return string the PSR-3 compliant level */ - private static function mapLegacyConfigDebugLevel($level) + private static function mapLegacyDebugLevel($level) { switch ($level) { // legacy WARNING @@ -319,23 +319,25 @@ class Logger extends BaseObject self::getApp()->saveTimestamp($stamp1, 'file'); } - /** - * @brief Logs the given message at the given log level - * - * @param string $msg - * @param string $level + /** + * @brief Logs the given message at the given log level + * + * @param string $msg + * @param int $level * * @throws \Exception * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead - */ - public static function log($msg, $level = LogLevel::NOTICE) + */ + public static function log($msg, $level = 3) { if (!isset(self::$logger)) { return; } + $loglevel = self::mapLegacyDebugLevel($level); + $stamp1 = microtime(true); - self::$logger->log($level, $msg); + self::$logger->log($loglevel, $msg); self::getApp()->saveTimestamp($stamp1, "file"); } diff --git a/src/Module/Login.php b/src/Module/Login.php index 06af508e9b..516a05df56 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -148,7 +148,7 @@ class Login extends BaseModule ); } } catch (Exception $e) { - Logger::log('authenticate: failed login attempt: ' . Strings::escapeTags($username) . ' from IP ' . $_SERVER['REMOTE_ADDR']); + Logger::notice('authenticate: failed login attempt', ['username' => Strings::escapeTags($username), 'ip' => $_SERVER['REMOTE_ADDR']]); info('Login failed. Please check your credentials.' . EOL); $a->internalRedirect(); } From b5afd2a21d1359c631e3facdb32537564fad7e3d Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 21:08:09 +0100 Subject: [PATCH 153/728] change regex for fail2ban --- doc/tools.md | 2 +- src/Core/Logger.php | 8 +++----- src/Module/Login.php | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/doc/tools.md b/doc/tools.md index cb6aa1c3aa..8746e9c150 100644 --- a/doc/tools.md +++ b/doc/tools.md @@ -56,7 +56,7 @@ In */etc/fail2ban/jail.local* create a section for Friendica: And create a filter definition in */etc/fail2ban/filter.d/friendica.conf*: [Definition] - failregex = ^.*Login\.php.*failed login attempt.*from IP .*$ + failregex = ^.*authenticate\: failed login attempt.*\"ip\"\:\"\".*$ ignoreregex = Additionally you have to define the number of failed logins before the ban should be activated. diff --git a/src/Core/Logger.php b/src/Core/Logger.php index c44ccc968f..0bf699575b 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -323,21 +323,19 @@ class Logger extends BaseObject * @brief Logs the given message at the given log level * * @param string $msg - * @param int $level + * @param string $level * * @throws \Exception * @deprecated since 2019.03 Use Logger::debug() Logger::info() , ... instead */ - public static function log($msg, $level = 3) + public static function log($msg, $level = LogLevel::INFO) { if (!isset(self::$logger)) { return; } - $loglevel = self::mapLegacyDebugLevel($level); - $stamp1 = microtime(true); - self::$logger->log($loglevel, $msg); + self::$logger->log($level, $msg); self::getApp()->saveTimestamp($stamp1, "file"); } diff --git a/src/Module/Login.php b/src/Module/Login.php index 516a05df56..d7daf28871 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -148,7 +148,7 @@ class Login extends BaseModule ); } } catch (Exception $e) { - Logger::notice('authenticate: failed login attempt', ['username' => Strings::escapeTags($username), 'ip' => $_SERVER['REMOTE_ADDR']]); + Logger::notice('authenticate: failed login attempt', ['action' => 'login', 'username' => Strings::escapeTags($username), 'ip' => $_SERVER['REMOTE_ADDR']]); info('Login failed. Please check your credentials.' . EOL); $a->internalRedirect(); } From 282507922ae57b5210c0082f988b50b7dafd2165 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 21:18:34 +0100 Subject: [PATCH 154/728] Reset map function name --- src/Core/Logger.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 0bf699575b..425ea82dca 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -84,7 +84,7 @@ class Logger extends BaseObject } if (is_int($loglevel)) { - $loglevel = self::mapLegacyDebugLevel($loglevel); + $loglevel = self::mapLegacyConfigDebugLevel($loglevel); } LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); @@ -111,7 +111,7 @@ class Logger extends BaseObject * * @return string the PSR-3 compliant level */ - private static function mapLegacyDebugLevel($level) + private static function mapLegacyConfigDebugLevel($level) { switch ($level) { // legacy WARNING From c38782731f2d3ada22a7f42be6a2fecc3a756168 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 21:32:06 +0100 Subject: [PATCH 155/728] changing failed auth to warning --- src/Module/Login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Login.php b/src/Module/Login.php index d7daf28871..96b0c428fa 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -148,7 +148,7 @@ class Login extends BaseModule ); } } catch (Exception $e) { - Logger::notice('authenticate: failed login attempt', ['action' => 'login', 'username' => Strings::escapeTags($username), 'ip' => $_SERVER['REMOTE_ADDR']]); + Logger::warning('authenticate: failed login attempt', ['action' => 'login', 'username' => Strings::escapeTags($username), 'ip' => $_SERVER['REMOTE_ADDR']]); info('Login failed. Please check your credentials.' . EOL); $a->internalRedirect(); } From 9e0be97703e0ec6e9c5923cd858dacf54b61d32d Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 21:54:40 +0100 Subject: [PATCH 156/728] Bugfixing legacy loglevel --- src/Core/Logger.php | 20 +++++++++----------- src/Util/LoggerFactory.php | 8 +++++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 425ea82dca..19e4d28d74 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -83,9 +83,7 @@ class Logger extends BaseObject return; } - if (is_int($loglevel)) { - $loglevel = self::mapLegacyConfigDebugLevel($loglevel); - } + $loglevel = self::mapLegacyConfigDebugLevel((string)$loglevel); LoggerFactory::addStreamHandler($logger, $logfile, $loglevel); @@ -107,7 +105,7 @@ class Logger extends BaseObject * Mapping a legacy level to the PSR-3 compliant levels * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel * - * @param int $level the level to be mapped + * @param mixed $level the level to be mapped * * @return string the PSR-3 compliant level */ @@ -115,26 +113,26 @@ class Logger extends BaseObject { switch ($level) { // legacy WARNING - case 0: + case "0": return LogLevel::ERROR; // legacy INFO - case 1: + case "1": return LogLevel::WARNING; // legacy TRACE - case 2: + case "2": return LogLevel::NOTICE; // legacy DEBUG - case 3: + case "3": return LogLevel::INFO; // legacy DATA - case 4: + case "4": return LogLevel::DEBUG; // legacy ALL - case 5: + case "5": return LogLevel::DEBUG; // default if nothing set default: - return LogLevel::NOTICE; + return $level; } } diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index 71239edbb3..1e7bdcd160 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -75,7 +75,13 @@ class LoggerFactory public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE) { if ($logger instanceof Monolog\Logger) { - $fileHandler = new Monolog\Handler\StreamHandler($stream, Monolog\Logger::toMonologLevel($level)); + $loglevel = Monolog\Logger::toMonologLevel($level); + + // fallback to notice if an invalid loglevel is set + if (!is_int($loglevel)) { + $loglevel = LogLevel::NOTICE; + } + $fileHandler = new Monolog\Handler\StreamHandler($stream, $loglevel); $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n"); $fileHandler->setFormatter($formatter); From 1b802548b21591c255e65d97ce9608edb0f276c2 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 7 Jan 2019 22:01:38 +0100 Subject: [PATCH 157/728] revert phpdoc change --- src/Core/Logger.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/Logger.php b/src/Core/Logger.php index 19e4d28d74..277a091641 100644 --- a/src/Core/Logger.php +++ b/src/Core/Logger.php @@ -105,7 +105,7 @@ class Logger extends BaseObject * Mapping a legacy level to the PSR-3 compliant levels * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#5-psrlogloglevel * - * @param mixed $level the level to be mapped + * @param string $level the level to be mapped * * @return string the PSR-3 compliant level */ From 1f98fdfda6a3e2b2f4f9065e690087a325678c5e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 5 Jan 2019 22:04:42 -0500 Subject: [PATCH 158/728] Add new Widget\ContactBlock --- src/Content/Widget/ContactBlock.php | 111 ++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/Content/Widget/ContactBlock.php diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php new file mode 100644 index 0000000000..12cd4cd87d --- /dev/null +++ b/src/Content/Widget/ContactBlock.php @@ -0,0 +1,111 @@ +array, output=>string) + * @return string + */ + public static function getHTML(array $profile) + { + $o = ''; + + $shown = PConfig::get($profile['uid'], 'system', 'display_friend_count', 24); + if ($shown == 0) { + return $o; + } + + if (!empty($profile['hide-friends'])) { + return $o; + } + + $contacts = []; + + $total = DBA::count('contact', [ + 'uid' => $profile['uid'], + 'self' => false, + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + ]); + + $contacts_title = L10n::t('No contacts'); + + if (!$total) { + $micropro = []; + } else { + $contact_ids_stmt = DBA::select('contact', ['id'], [ + 'uid' => $profile['uid'], + 'self' => false, + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'rel' => [Contact::FOLLOWER, Contact::FRIEND], + 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + ], ['limit' => $shown]); + + if (DBA::isResult($contact_ids_stmt)) { + $contact_ids = []; + while($contact = DBA::fetch($contact_ids_stmt)) { + $contact_ids[] = $contact["id"]; + } + + $contacts_stmt = DBA::select('contact', ['id', 'uid', 'addr', 'url', 'name', 'thumb', 'network'], ['id' => $contact_ids]); + + if (DBA::isResult($contacts_stmt)) { + $contacts_title = L10n::tt('%d Contact', '%d Contacts', $total); + $micropro = []; + + while ($contact = DBA::fetch($contacts_stmt)) { + $contacts[] = $contact; + $micropro[] = HTML::micropro($contact, true, 'mpfriend'); + } + } + + DBA::close($contacts_stmt); + } + + DBA::close($contact_ids_stmt); + } + + $tpl = Renderer::getMarkupTemplate('contact_block.tpl'); + $o = Renderer::replaceMacros($tpl, [ + '$contacts' => $contacts_title, + '$nickname' => $profile['nickname'], + '$viewcontacts' => L10n::t('View Contacts'), + '$micropro' => $micropro, + ]); + + $arr = ['contacts' => $contacts, 'output' => $o]; + + Hook::callAll('contact_block_end', $arr); + + return $o; + } +} From 11a4a57bfe1870d70e8c5a933242c2cc248c7d4c Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 5 Jan 2019 22:05:24 -0500 Subject: [PATCH 159/728] Update HTML::contactBlock and Profile::load with new ContactBlock widget --- src/Content/Text/HTML.php | 80 ++------------------------------------- src/Model/Profile.php | 30 +++++++-------- 2 files changed, 17 insertions(+), 93 deletions(-) diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php index 8c32498a3f..7976b02e6b 100644 --- a/src/Content/Text/HTML.php +++ b/src/Content/Text/HTML.php @@ -7,6 +7,7 @@ namespace Friendica\Content\Text; use DOMDocument; use DOMXPath; +use Friendica\Content\Widget\ContactBlock; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Config; @@ -807,90 +808,17 @@ class HTML /** * Get html for contact block. * - * @template contact_block.tpl - * @hook contact_block_end (contacts=>array, output=>string) + * @deprecated since version 2019.03 + * @see ContactBlock::getHTML() * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ public static function contactBlock() { - $o = ''; $a = \get_app(); - $shown = PConfig::get($a->profile['uid'], 'system', 'display_friend_count', 24); - if ($shown == 0) { - return; - } - - if (!is_array($a->profile) || $a->profile['hide-friends']) { - return $o; - } - - $r = q("SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d AND NOT `self` AND NOT `blocked` - AND NOT `pending` AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s')", - intval($a->profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::OSTATUS), - DBA::escape(Protocol::DIASPORA) - ); - - if (DBA::isResult($r)) { - $total = intval($r[0]['total']); - } - - if (!$total) { - $contacts = L10n::t('No contacts'); - $micropro = null; - } else { - // Splitting the query in two parts makes it much faster - $r = q("SELECT `id` FROM `contact` - WHERE `uid` = %d AND NOT `self` AND NOT `blocked` - AND NOT `pending` AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s') - ORDER BY RAND() LIMIT %d", - intval($a->profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::OSTATUS), - DBA::escape(Protocol::DIASPORA), - intval($shown) - ); - - if (DBA::isResult($r)) { - $contacts = []; - foreach ($r as $contact) { - $contacts[] = $contact["id"]; - } - - $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `thumb`, `network` FROM `contact` WHERE `id` IN (%s)", - DBA::escape(implode(",", $contacts)) - ); - - if (DBA::isResult($r)) { - $contacts = L10n::tt('%d Contact', '%d Contacts', $total); - $micropro = []; - foreach ($r as $rr) { - $micropro[] = self::micropro($rr, true, 'mpfriend'); - } - } - } - } - - $tpl = Renderer::getMarkupTemplate('contact_block.tpl'); - $o = Renderer::replaceMacros($tpl, [ - '$contacts' => $contacts, - '$nickname' => $a->profile['nickname'], - '$viewcontacts' => L10n::t('View Contacts'), - '$micropro' => $micropro, - ]); - - $arr = ['contacts' => $r, 'output' => $o]; - - Hook::callAll('contact_block_end', $arr); - - return $o; + return ContactBlock::getHTML($a->profile); } /** diff --git a/src/Model/Profile.php b/src/Model/Profile.php index b5e54474b8..aacceedb3a 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -9,6 +9,7 @@ use Friendica\Content\Feature; use Friendica\Content\ForumManager; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; +use Friendica\Content\Widget\ContactBlock; use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\Hook; @@ -475,9 +476,9 @@ class Profile $contact_block = ''; $updated = ''; - $contacts = 0; + $contact_count = 0; if (!$block) { - $contact_block = HTML::contactBlock(); + $contact_block = ContactBlock::getHTML($a->profile); if (is_array($a->profile) && !$a->profile['hide-friends']) { $r = q( @@ -488,20 +489,15 @@ class Profile $updated = date('c', strtotime($r[0]['updated'])); } - $r = q( - "SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d - AND NOT `self` AND NOT `blocked` AND NOT `pending` - AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s', '')", - intval($profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::DIASPORA), - DBA::escape(Protocol::OSTATUS) - ); - if (DBA::isResult($r)) { - $contacts = intval($r[0]['total']); - } + $contact_count = DBA::count('contact', [ + 'uid' => $profile['uid'], + 'self' => false, + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + ]); } } @@ -545,7 +541,7 @@ class Profile '$homepage' => $homepage, '$about' => $about, '$network' => L10n::t('Network:'), - '$contacts' => $contacts, + '$contacts' => $contact_count, '$updated' => $updated, '$diaspora' => $diaspora, '$contact_block' => $contact_block, From ad9c67663d8206315c649be3b27bf5418fb91ad3 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 12:37:48 -0500 Subject: [PATCH 160/728] Move Contact::Page_* constants to User::PAGE_FLAGS_* --- include/enotify.php | 2 +- mod/admin.php | 10 ++--- mod/dfrn_confirm.php | 4 +- mod/dfrn_notify.php | 2 +- mod/dfrn_request.php | 6 +-- mod/hcard.php | 2 +- mod/photos.php | 4 +- mod/profile.php | 6 +-- mod/profiles.php | 2 +- mod/settings.php | 40 ++++++++--------- mod/videos.php | 2 +- mod/wall_attach.php | 2 +- mod/wall_upload.php | 2 +- src/Content/Nav.php | 2 +- src/Model/Contact.php | 55 ++++++++++++++++-------- src/Model/Item.php | 4 +- src/Model/User.php | 20 +++++++++ src/Object/Image.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 2 +- src/Protocol/DFRN.php | 22 +++++----- src/Protocol/Diaspora.php | 14 +++--- src/Util/Security.php | 3 +- update.php | 4 +- 23 files changed, 126 insertions(+), 86 deletions(-) diff --git a/include/enotify.php b/include/enotify.php index be8552ed6e..80e6782c2d 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -78,7 +78,7 @@ function notification($params) ['uid' => $params['uid']]); // There is no need to create notifications for forum accounts - if (!DBA::isResult($user) || in_array($user["page-flags"], [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP])) { + if (!DBA::isResult($user) || in_array($user["page-flags"], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { return; } $nickname = $user["nickname"]; diff --git a/mod/admin.php b/mod/admin.php index e5df09d0ea..e20e9c341f 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1988,11 +1988,11 @@ function admin_page_users(App $a) $adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email'))); $_setup_users = function ($e) use ($adminlist) { $page_types = [ - Contact::PAGE_NORMAL => L10n::t('Normal Account Page'), - Contact::PAGE_SOAPBOX => L10n::t('Soapbox Page'), - Contact::PAGE_COMMUNITY => L10n::t('Public Forum'), - Contact::PAGE_FREELOVE => L10n::t('Automatic Friend Page'), - Contact::PAGE_PRVGROUP => L10n::t('Private Forum') + User::PAGE_FLAGS_NORMAL => L10n::t('Normal Account Page'), + User::PAGE_FLAGS_SOAPBOX => L10n::t('Soapbox Page'), + User::PAGE_FLAGS_COMMUNITY => L10n::t('Public Forum'), + User::PAGE_FLAGS_FREELOVE => L10n::t('Automatic Friend Page'), + User::PAGE_FLAGS_PRVGROUP => L10n::t('Private Forum') ]; $account_types = [ Contact::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'), diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 2059e14034..770c7070b4 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -202,11 +202,11 @@ function dfrn_confirm_post(App $a, $handsfree = null) $params['duplex'] = 1; } - if ($user['page-flags'] == Contact::PAGE_COMMUNITY) { + if ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { $params['page'] = 1; } - if ($user['page-flags'] == Contact::PAGE_PRVGROUP) { + if ($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP) { $params['page'] = 2; } diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 41b7684ac6..ac62d74534 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -351,7 +351,7 @@ function dfrn_notify_content(App $a) { $rino = $rino_remote; } - if (($importer['rel'] && ($importer['rel'] != Contact::SHARING)) || ($importer['page-flags'] == Contact::PAGE_COMMUNITY)) { + if (($importer['rel'] && ($importer['rel'] != Contact::SHARING)) || ($importer['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { $perm = 'rw'; } else { $perm = 'r'; diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 7c76af1b6a..6142257e77 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -544,7 +544,7 @@ function dfrn_request_content(App $a) $auto_confirm = false; if (DBA::isResult($r)) { - if ($r[0]['page-flags'] != Contact::PAGE_NORMAL && $r[0]['page-flags'] != Contact::PAGE_PRVGROUP) { + if ($r[0]['page-flags'] != User::PAGE_FLAGS_NORMAL && $r[0]['page-flags'] != User::PAGE_FLAGS_PRVGROUP) { $auto_confirm = true; } @@ -572,7 +572,7 @@ function dfrn_request_content(App $a) 'node' => $r[0]['nickname'], 'dfrn_id' => $r[0]['issued-id'], 'intro_id' => $intro[0]['id'], - 'duplex' => (($r[0]['page-flags'] == Contact::PAGE_FREELOVE) ? 1 : 0), + 'duplex' => (($r[0]['page-flags'] == User::PAGE_FLAGS_FREELOVE) ? 1 : 0), ]; dfrn_confirm_post($a, $handsfree); } @@ -623,7 +623,7 @@ function dfrn_request_content(App $a) * because nobody is going to read the comments and * it doesn't matter if they know you or not. */ - if ($a->profile['page-flags'] == Contact::PAGE_NORMAL) { + if ($a->profile['page-flags'] == User::PAGE_FLAGS_NORMAL) { $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl'); } else { $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); diff --git a/mod/hcard.php b/mod/hcard.php index c8b6db455c..9a0c969ae4 100644 --- a/mod/hcard.php +++ b/mod/hcard.php @@ -29,7 +29,7 @@ function hcard_init(App $a) Profile::load($a, $which, $profile); - if (!empty($a->profile['page-flags']) && ($a->profile['page-flags'] == Contact::PAGE_COMMUNITY)) { + if (!empty($a->profile['page-flags']) && ($a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { $a->page['htmlhead'] .= ''; } if (!empty($a->profile['openidserver'])) { diff --git a/mod/photos.php b/mod/photos.php index 31b026f899..2171309e8f 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -153,7 +153,7 @@ function photos_post(App $a) $visitor = 0; $page_owner_uid = $a->data['user']['uid']; - $community_page = $a->data['user']['page-flags'] == Contact::PAGE_COMMUNITY; + $community_page = $a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY; if (local_user() && (local_user() == $page_owner_uid)) { $can_post = true; @@ -938,7 +938,7 @@ function photos_content(App $a) $owner_uid = $a->data['user']['uid']; - $community_page = (($a->data['user']['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); + $community_page = (($a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); if (local_user() && (local_user() == $owner_uid)) { $can_post = true; diff --git a/mod/profile.php b/mod/profile.php index 8a21e24dc1..e6b7f453c3 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -62,7 +62,7 @@ function profile_init(App $a) $blocked = !local_user() && !remote_user() && Config::get('system', 'block_public'); $userblock = !local_user() && !remote_user() && $a->profile['hidewall']; - if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == Contact::PAGE_COMMUNITY) { + if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { $a->page['htmlhead'] .= ''; } @@ -172,7 +172,7 @@ function profile_content(App $a, $update = 0) $o .= Widget::commonFriendsVisitor($a->profile['profile_uid']); - $commpage = $a->profile['page-flags'] == Contact::PAGE_COMMUNITY; + $commpage = $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY; $commvisitor = $commpage && $remote_contact; $a->page['aside'] .= posted_date_widget(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], $a->profile['profile_uid'], true); @@ -256,7 +256,7 @@ function profile_content(App $a, $update = 0) // Does the profile page belong to a forum? // If not then we can improve the performance with an additional condition - $condition = ['uid' => $a->profile['profile_uid'], 'page-flags' => [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP]]; + $condition = ['uid' => $a->profile['profile_uid'], 'page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]]; if (!DBA::exists('user', $condition)) { $sql_extra3 = sprintf(" AND `thread`.`contact-id` = %d ", intval(intval($a->profile['contact_id']))); } else { diff --git a/mod/profiles.php b/mod/profiles.php index b56a7911d3..add9d50852 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -532,7 +532,7 @@ function profiles_content(App $a) { ]); $personal_account = !(in_array($a->user["page-flags"], - [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP])); + [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])); $detailled_profile = (PConfig::get(local_user(), 'system', 'detailled_profile') AND $personal_account); diff --git a/mod/settings.php b/mod/settings.php index 567270c6ea..8aba6809f2 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -474,14 +474,14 @@ function settings_post(App $a) } // Adjust the page flag if the account type doesn't fit to the page flag. - if (($account_type == Contact::ACCOUNT_TYPE_PERSON) && !in_array($page_flags, [Contact::PAGE_NORMAL, Contact::PAGE_SOAPBOX, Contact::PAGE_FREELOVE])) { - $page_flags = Contact::PAGE_NORMAL; - } elseif (($account_type == Contact::ACCOUNT_TYPE_ORGANISATION) && !in_array($page_flags, [Contact::PAGE_SOAPBOX])) { - $page_flags = Contact::PAGE_SOAPBOX; - } elseif (($account_type == Contact::ACCOUNT_TYPE_NEWS) && !in_array($page_flags, [Contact::PAGE_SOAPBOX])) { - $page_flags = Contact::PAGE_SOAPBOX; - } elseif (($account_type == Contact::ACCOUNT_TYPE_COMMUNITY) && !in_array($page_flags, [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP])) { - $page_flags = Contact::PAGE_COMMUNITY; + if (($account_type == Contact::ACCOUNT_TYPE_PERSON) && !in_array($page_flags, [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE])) { + $page_flags = User::PAGE_FLAGS_NORMAL; + } elseif (($account_type == Contact::ACCOUNT_TYPE_ORGANISATION) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { + $page_flags = User::PAGE_FLAGS_SOAPBOX; + } elseif (($account_type == Contact::ACCOUNT_TYPE_NEWS) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { + $page_flags = User::PAGE_FLAGS_SOAPBOX; + } elseif (($account_type == Contact::ACCOUNT_TYPE_COMMUNITY) && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { + $page_flags = User::PAGE_FLAGS_COMMUNITY; } $err = ''; @@ -555,7 +555,7 @@ function settings_post(App $a) PConfig::set(local_user(), 'system', 'email_textonly', $email_textonly); PConfig::set(local_user(), 'system', 'detailed_notif', $detailed_notif); - if ($page_flags == Contact::PAGE_PRVGROUP) { + if ($page_flags == User::PAGE_FLAGS_PRVGROUP) { $hidewall = 1; if (!$str_contact_allow && !$str_group_allow && !$str_contact_deny && !$str_group_deny) { if ($def_gid) { @@ -1014,7 +1014,7 @@ function settings_content(App $a) // Set the account type to "Community" when the page is a community page but the account type doesn't fit // This is only happening on the first visit after the update - if (in_array($a->user['page-flags'], [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP]) && + if (in_array($a->user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) && ($a->user['account-type'] != Contact::ACCOUNT_TYPE_COMMUNITY)) $a->user['account-type'] = Contact::ACCOUNT_TYPE_COMMUNITY; @@ -1046,25 +1046,25 @@ function settings_content(App $a) L10n::t('Account for community discussions.'), ($a->user['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY)], - '$page_normal' => ['page-flags', L10n::t('Normal Account Page'), Contact::PAGE_NORMAL, + '$page_normal' => ['page-flags', L10n::t('Normal Account Page'), User::PAGE_FLAGS_NORMAL, L10n::t('Account for a regular personal profile that requires manual approval of "Friends" and "Followers".'), - ($a->user['page-flags'] == Contact::PAGE_NORMAL)], + ($a->user['page-flags'] == User::PAGE_FLAGS_NORMAL)], - '$page_soapbox' => ['page-flags', L10n::t('Soapbox Page'), Contact::PAGE_SOAPBOX, + '$page_soapbox' => ['page-flags', L10n::t('Soapbox Page'), User::PAGE_FLAGS_SOAPBOX, L10n::t('Account for a public profile that automatically approves contact requests as "Followers".'), - ($a->user['page-flags'] == Contact::PAGE_SOAPBOX)], + ($a->user['page-flags'] == User::PAGE_FLAGS_SOAPBOX)], - '$page_community' => ['page-flags', L10n::t('Public Forum'), Contact::PAGE_COMMUNITY, + '$page_community' => ['page-flags', L10n::t('Public Forum'), User::PAGE_FLAGS_COMMUNITY, L10n::t('Automatically approves all contact requests.'), - ($a->user['page-flags'] == Contact::PAGE_COMMUNITY)], + ($a->user['page-flags'] == User::PAGE_FLAGS_COMMUNITY)], - '$page_freelove' => ['page-flags', L10n::t('Automatic Friend Page'), Contact::PAGE_FREELOVE, + '$page_freelove' => ['page-flags', L10n::t('Automatic Friend Page'), User::PAGE_FLAGS_FREELOVE, L10n::t('Account for a popular profile that automatically approves contact requests as "Friends".'), - ($a->user['page-flags'] == Contact::PAGE_FREELOVE)], + ($a->user['page-flags'] == User::PAGE_FLAGS_FREELOVE)], - '$page_prvgroup' => ['page-flags', L10n::t('Private Forum [Experimental]'), Contact::PAGE_PRVGROUP, + '$page_prvgroup' => ['page-flags', L10n::t('Private Forum [Experimental]'), User::PAGE_FLAGS_PRVGROUP, L10n::t('Requires manual approval of contact requests.'), - ($a->user['page-flags'] == Contact::PAGE_PRVGROUP)], + ($a->user['page-flags'] == User::PAGE_FLAGS_PRVGROUP)], ]); diff --git a/mod/videos.php b/mod/videos.php index df0fb23756..1d37b76bd6 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -178,7 +178,7 @@ function videos_content(App $a) $owner_uid = $a->data['user']['uid']; - $community_page = (($a->data['user']['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); + $community_page = (($a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); if ((local_user()) && (local_user() == $owner_uid)) { $can_post = true; diff --git a/mod/wall_attach.php b/mod/wall_attach.php index fb665ac2fa..4a4d1edc53 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -41,7 +41,7 @@ function wall_attach_post(App $a) { $page_owner_uid = $r[0]['uid']; $page_owner_cid = $r[0]['id']; - $community_page = (($r[0]['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); + $community_page = (($r[0]['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); if ((local_user()) && (local_user() == $page_owner_uid)) { $can_post = true; diff --git a/mod/wall_upload.php b/mod/wall_upload.php index ea06b1d1c1..84da855984 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -69,7 +69,7 @@ function wall_upload_post(App $a, $desktopmode = true) $page_owner_uid = $r[0]['uid']; $default_cid = $r[0]['id']; $page_owner_nick = $r[0]['nickname']; - $community_page = (($r[0]['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); + $community_page = (($r[0]['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); if ((local_user()) && (local_user() == $page_owner_uid)) { $can_post = true; diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 51cee03bf8..6bee0633f3 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -242,7 +242,7 @@ class Nav $nav['home'] = ['profile/' . $a->user['nickname'], L10n::t('Home'), '', L10n::t('Your posts and conversations')]; // Don't show notifications for public communities - if (defaults($_SESSION, 'page_flags', '') != Contact::PAGE_COMMUNITY) { + if (defaults($_SESSION, 'page_flags', '') != User::PAGE_FLAGS_COMMUNITY) { $nav['introductions'] = ['notifications/intros', L10n::t('Introductions'), '', L10n::t('Friend Requests')]; $nav['notifications'] = ['notifications', L10n::t('Notifications'), '', L10n::t('Notifications')]; $nav['notifications']['all'] = ['notifications/system', L10n::t('See all notifications'), '', '']; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index f3448569b6..745bbacadd 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -32,15 +32,8 @@ use Friendica\Util\Strings; class Contact extends BaseObject { /** - * Page/profile types - * - * PAGE_NORMAL is a typical personal profile account - * PAGE_SOAPBOX automatically approves all friend requests as Contact::SHARING, (readonly) - * PAGE_COMMUNITY automatically approves all friend requests as Contact::SHARING, but with - * write access to wall and comments (no email and not included in page owner's ACL lists) - * PAGE_FREELOVE automatically approves all friend requests as full friends (Contact::FRIEND). - * - * @{ + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_NORMAL */ const PAGE_NORMAL = 0; const PAGE_SOAPBOX = 1; @@ -48,6 +41,32 @@ class Contact extends BaseObject const PAGE_FREELOVE = 3; const PAGE_BLOG = 4; const PAGE_PRVGROUP = 5; + const PAGE_NORMAL = User::PAGE_FLAGS_NORMAL; + /** + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_SOAPBOX + */ + const PAGE_SOAPBOX = User::PAGE_FLAGS_SOAPBOX; + /** + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_COMMUNITY + */ + const PAGE_COMMUNITY = User::PAGE_FLAGS_COMMUNITY; + /** + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_FREELOVE + */ + const PAGE_FREELOVE = User::PAGE_FLAGS_FREELOVE; + /** + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_BLOG + */ + const PAGE_BLOG = User::PAGE_FLAGS_BLOG; + /** + * @deprecated since version 2019.03 + * @see User::PAGE_FLAGS_PRVGROUP + */ + const PAGE_PRVGROUP = User::PAGE_FLAGS_PRVGROUP; /** * @} */ @@ -529,8 +548,8 @@ class Contact extends BaseObject $fields['micro'] = System::baseUrl() . '/images/person-48.jpg'; } - $fields['forum'] = $user['page-flags'] == self::PAGE_COMMUNITY; - $fields['prv'] = $user['page-flags'] == self::PAGE_PRVGROUP; + $fields['forum'] = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY; + $fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP; // it seems as if ported accounts can have wrong values, so we make sure that now everything is fine. $fields['url'] = System::baseUrl() . '/profile/' . $user['nickname']; @@ -1465,10 +1484,10 @@ class Contact extends BaseObject { // There are several fields that indicate that the contact or user is a forum // "page-flags" is a field in the user table, - // "forum" and "prv" are used in the contact table. They stand for self::PAGE_COMMUNITY and self::PAGE_PRVGROUP. - // "community" is used in the gcontact table and is true if the contact is self::PAGE_COMMUNITY or self::PAGE_PRVGROUP. - if ((isset($contact['page-flags']) && (intval($contact['page-flags']) == self::PAGE_COMMUNITY)) - || (isset($contact['page-flags']) && (intval($contact['page-flags']) == self::PAGE_PRVGROUP)) + // "forum" and "prv" are used in the contact table. They stand for User::PAGE_FLAGS_COMMUNITY and User::PAGE_FLAGS_PRVGROUP. + // "community" is used in the gcontact table and is true if the contact is User::PAGE_FLAGS_COMMUNITY or User::PAGE_FLAGS_PRVGROUP. + if ((isset($contact['page-flags']) && (intval($contact['page-flags']) == User::PAGE_FLAGS_COMMUNITY)) + || (isset($contact['page-flags']) && (intval($contact['page-flags']) == User::PAGE_FLAGS_PRVGROUP)) || (isset($contact['forum']) && intval($contact['forum'])) || (isset($contact['prv']) && intval($contact['prv'])) || (isset($contact['community']) && intval($contact['community'])) @@ -1983,7 +2002,7 @@ class Contact extends BaseObject /// @TODO Encapsulate this into a function/method $fields = ['uid', 'username', 'email', 'page-flags', 'notify-flags', 'language']; $user = DBA::selectFirst('user', $fields, ['uid' => $importer['uid']]); - if (DBA::isResult($user) && !in_array($user['page-flags'], [self::PAGE_SOAPBOX, self::PAGE_FREELOVE, self::PAGE_COMMUNITY])) { + if (DBA::isResult($user) && !in_array($user['page-flags'], [User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE, User::PAGE_FLAGS_COMMUNITY])) { // create notification $hash = Strings::getRandomHex(); @@ -1996,7 +2015,7 @@ class Contact extends BaseObject Group::addMember(User::getDefaultGroup($importer['uid'], $contact_record["network"]), $contact_record['id']); if (($user['notify-flags'] & NOTIFY_INTRO) && - in_array($user['page-flags'], [self::PAGE_NORMAL])) { + in_array($user['page-flags'], [User::PAGE_FLAGS_NORMAL])) { notification([ 'type' => NOTIFY_INTRO, @@ -2014,7 +2033,7 @@ class Contact extends BaseObject ]); } - } elseif (DBA::isResult($user) && in_array($user['page-flags'], [self::PAGE_SOAPBOX, self::PAGE_FREELOVE, self::PAGE_COMMUNITY])) { + } elseif (DBA::isResult($user) && in_array($user['page-flags'], [User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE, User::PAGE_FLAGS_COMMUNITY])) { $condition = ['uid' => $importer['uid'], 'url' => $url, 'pending' => true]; DBA::update('contact', ['pending' => false], $condition); diff --git a/src/Model/Item.php b/src/Model/Item.php index f18ca088f9..cffa25397c 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2526,8 +2526,8 @@ class Item extends BaseObject return; } - $community_page = (($user['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); - $prvgroup = (($user['page-flags'] == Contact::PAGE_PRVGROUP) ? true : false); + $community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); + $prvgroup = (($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP) ? true : false); $item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $item_id]); if (!DBA::isResult($item)) { diff --git a/src/Model/User.php b/src/Model/User.php index 80cae7b0d2..dd754fb46e 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -28,6 +28,26 @@ use LightOpenID; */ class User { + /** + * @name page/profile types + * + * PAGE_NORMAL is a typical personal profile account + * PAGE_SOAPBOX automatically approves all friend requests as Contact::SHARING, (readonly) + * PAGE_COMMUNITY automatically approves all friend requests as Contact::SHARING, but with + * write access to wall and comments (no email and not included in page owner's ACL lists) + * PAGE_FREELOVE automatically approves all friend requests as full friends (Contact::FRIEND). + * + * @{ + */ + const PAGE_FLAGS_NORMAL = 0; + const PAGE_FLAGS_SOAPBOX = 1; + const PAGE_FLAGS_COMMUNITY = 2; + const PAGE_FLAGS_FREELOVE = 3; + const PAGE_FLAGS_BLOG = 4; + const PAGE_FLAGS_PRVGROUP = 5; + /** + * @} + */ /** * Returns true if a user record exists with the provided id * diff --git a/src/Object/Image.php b/src/Object/Image.php index ae360f376d..1fe0a048b9 100644 --- a/src/Object/Image.php +++ b/src/Object/Image.php @@ -899,7 +899,7 @@ class Image /// @TODO /// $default_cid = $r[0]['id']; - /// $community_page = (($r[0]['page-flags'] == Contact::PAGE_COMMUNITY) ? true : false); + /// $community_page = (($r[0]['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); if ((strlen($imagedata) == 0) && ($url == "")) { Logger::log("No image data and no url provided", Logger::DEBUG); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 499337acb1..44bb491813 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -232,7 +232,7 @@ class Transmitter 'vcard:region' => $profile['region'], 'vcard:locality' => $profile['locality']]; $data['summary'] = $contact['about']; $data['url'] = $contact['url']; - $data['manuallyApprovesFollowers'] = in_array($user['page-flags'], [Contact::PAGE_NORMAL, Contact::PAGE_PRVGROUP]); + $data['manuallyApprovesFollowers'] = in_array($user['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]); $data['publicKey'] = ['id' => $contact['url'] . '#main-key', 'owner' => $contact['url'], 'publicKeyPem' => $user['pubkey']]; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index e4269f38ec..550f5e07f1 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -587,14 +587,14 @@ class DFRN } // For backward compatibility we keep this element - if ($owner['page-flags'] == Contact::PAGE_COMMUNITY) { + if ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { XML::addElement($doc, $root, "dfrn:community", 1); } // The former element is replaced by this one XML::addElement($doc, $root, "dfrn:account_type", $owner["account-type"]); - /// @todo We need a way to transmit the different page flags like "Contact::PAGE_PRVGROUP" + /// @todo We need a way to transmit the different page flags like "User::PAGE_FLAGS_PRVGROUP" XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM)); @@ -1264,11 +1264,11 @@ class DFRN $perm = (($res->perm) ? $res->perm : null); $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0); $rino_remote_version = intval($res->rino); - $page = (($owner['page-flags'] == Contact::PAGE_COMMUNITY) ? 1 : 0); + $page = (($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? 1 : 0); Logger::log("Remote rino version: ".$rino_remote_version." for ".$contact["url"], Logger::DEBUG); - if ($owner['page-flags'] == Contact::PAGE_PRVGROUP) { + if ($owner['page-flags'] == User::PAGE_FLAGS_PRVGROUP) { $page = 2; } @@ -1285,7 +1285,7 @@ class DFRN } if (($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == Contact::PAGE_COMMUNITY && strlen($contact['pubkey'])) + || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY && strlen($contact['pubkey'])) || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) ) { openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); @@ -1314,7 +1314,7 @@ class DFRN $postvars['dissolve'] = '1'; } - if ((($contact['rel']) && ($contact['rel'] != Contact::SHARING) && (! $contact['blocked'])) || ($owner['page-flags'] == Contact::PAGE_COMMUNITY)) { + if ((($contact['rel']) && ($contact['rel'] != Contact::SHARING) && (! $contact['blocked'])) || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { $postvars['data'] = $atom; $postvars['perm'] = 'rw'; } else { @@ -1349,7 +1349,7 @@ class DFRN if ($dfrn_version >= 2.1) { if (($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == Contact::PAGE_COMMUNITY && strlen($contact['pubkey'])) + || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY && strlen($contact['pubkey'])) || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) ) { openssl_public_encrypt($key, $postvars['key'], $contact['pubkey']); @@ -1357,7 +1357,7 @@ class DFRN openssl_private_encrypt($key, $postvars['key'], $contact['prvkey']); } } else { - if (($contact['duplex'] && strlen($contact['prvkey'])) || ($owner['page-flags'] == Contact::PAGE_COMMUNITY)) { + if (($contact['duplex'] && strlen($contact['prvkey'])) || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { openssl_private_encrypt($key, $postvars['key'], $contact['prvkey']); } else { openssl_public_encrypt($key, $postvars['key'], $contact['pubkey']); @@ -2146,7 +2146,7 @@ class DFRN if ($item["parent-uri"] != $item["uri"]) { $community = false; - if ($importer["page-flags"] == Contact::PAGE_COMMUNITY || $importer["page-flags"] == Contact::PAGE_PRVGROUP) { + if ($importer["page-flags"] == User::PAGE_FLAGS_COMMUNITY || $importer["page-flags"] == User::PAGE_FLAGS_PRVGROUP) { $sql_extra = ""; $community = true; Logger::log("possible community action"); @@ -3073,8 +3073,8 @@ class DFRN return false; } - $community_page = ($user['page-flags'] == Contact::PAGE_COMMUNITY); - $prvgroup = ($user['page-flags'] == Contact::PAGE_PRVGROUP); + $community_page = ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY); + $prvgroup = ($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP); $link = Strings::normaliseLink(System::baseUrl() . '/profile/' . $user['nickname']); diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index fadf337a6a..9a29edaaf6 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -639,7 +639,7 @@ class Diaspora return false; } - $importer = ["uid" => 0, "page-flags" => Contact::PAGE_FREELOVE]; + $importer = ["uid" => 0, "page-flags" => User::PAGE_FLAGS_FREELOVE]; $success = self::dispatch($importer, $msg, $fields); return $success; @@ -1123,7 +1123,7 @@ class Diaspora */ // It is deactivated by now, due to side effects. See issue https://github.com/friendica/friendica/pull/4033 // It is not removed by now. Possibly the code is needed? - //if (!$is_comment && $contact["rel"] == Contact::FOLLOWER && in_array($importer["page-flags"], array(Contact::PAGE_FREELOVE))) { + //if (!$is_comment && $contact["rel"] == Contact::FOLLOWER && in_array($importer["page-flags"], array(User::PAGE_FLAGS_FREELOVE))) { // DBA::update( // 'contact', // array('rel' => Contact::FRIEND, 'writable' => true), @@ -1143,7 +1143,7 @@ class Diaspora // Yes, then it is fine. return true; // Is it a post to a community? - } elseif (($contact["rel"] == Contact::FOLLOWER) && in_array($importer["page-flags"], [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP])) { + } elseif (($contact["rel"] == Contact::FOLLOWER) && in_array($importer["page-flags"], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { // That's good return true; // Is the message a global user or a comment? @@ -2422,7 +2422,7 @@ class Diaspora } } - if (!$following && $sharing && in_array($importer["page-flags"], [Contact::PAGE_SOAPBOX, Contact::PAGE_NORMAL])) { + if (!$following && $sharing && in_array($importer["page-flags"], [User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_NORMAL])) { 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) { @@ -2480,7 +2480,7 @@ class Diaspora Contact::updateAvatar($ret["photo"], $importer['uid'], $contact_record["id"], true); - if (in_array($importer["page-flags"], [Contact::PAGE_NORMAL, Contact::PAGE_PRVGROUP])) { + if (in_array($importer["page-flags"], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])) { Logger::log("Sending intra message for author ".$author.".", Logger::DEBUG); $hash = Strings::getRandomHex().(string)time(); // Generate a confirm_key @@ -2508,9 +2508,9 @@ class Diaspora * but if our page-type is Profile::PAGE_COMMUNITY or Profile::PAGE_SOAPBOX * we are going to change the relationship and make them a follower. */ - if (($importer["page-flags"] == Contact::PAGE_FREELOVE) && $sharing && $following) { + if (($importer["page-flags"] == User::PAGE_FLAGS_FREELOVE) && $sharing && $following) { $new_relation = Contact::FRIEND; - } elseif (($importer["page-flags"] == Contact::PAGE_FREELOVE) && $sharing) { + } elseif (($importer["page-flags"] == User::PAGE_FLAGS_FREELOVE) && $sharing) { $new_relation = Contact::SHARING; } else { $new_relation = Contact::FOLLOWER; diff --git a/src/Util/Security.php b/src/Util/Security.php index 2ad12cebae..d1e668e0d8 100644 --- a/src/Util/Security.php +++ b/src/Util/Security.php @@ -9,6 +9,7 @@ use Friendica\BaseObject; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Group; +use Friendica\Model\User; /** * Secures that User is allow to do requests @@ -65,7 +66,7 @@ class Security extends BaseObject intval($cid), intval(Contact::SHARING), intval(Contact::FRIEND), - intval(Contact::PAGE_COMMUNITY) + intval(User::PAGE_FLAGS_COMMUNITY) ); if (DBA::isResult($r)) { diff --git a/update.php b/update.php index 2ed1a81997..4b0b2f2b6a 100644 --- a/update.php +++ b/update.php @@ -162,8 +162,8 @@ function update_1203() { $r = q("UPDATE `user` SET `account-type` = %d WHERE `page-flags` IN (%d, %d)", DBA::escape(Contact::ACCOUNT_TYPE_COMMUNITY), - DBA::escape(Contact::PAGE_COMMUNITY), - DBA::escape(Contact::PAGE_PRVGROUP) + DBA::escape(User::PAGE_FLAGS_COMMUNITY), + DBA::escape(User::PAGE_FLAGS_PRVGROUP) ); } From 3d839bb176c44a9733a14a4d65ae4323aa3a1cb0 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 17:08:35 -0500 Subject: [PATCH 161/728] Move Contact::ACCOUNT_TYPE_* constants to User::ACCOUNT_TYPE_* - Keep Contact::TYPE_* constants for comparison with contact.contact-type --- mod/admin.php | 9 ++++--- mod/community.php | 9 ++++--- mod/noscrape.php | 3 ++- src/Model/Contact.php | 37 +++++++++++++++------------ src/Model/User.php | 29 +++++++++++++++++++++ src/Network/Probe.php | 2 +- src/Protocol/ActivityPub/Receiver.php | 6 ++--- src/Protocol/DFRN.php | 2 +- src/Protocol/Diaspora.php | 6 ++--- src/Protocol/OStatus.php | 14 +++++----- src/Worker/Delivery.php | 4 +-- src/Worker/Queue.php | 2 +- 12 files changed, 79 insertions(+), 44 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index e20e9c341f..8ff3089d9c 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1995,10 +1995,11 @@ function admin_page_users(App $a) User::PAGE_FLAGS_PRVGROUP => L10n::t('Private Forum') ]; $account_types = [ - Contact::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'), - Contact::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'), - Contact::ACCOUNT_TYPE_NEWS => L10n::t('News Page'), - Contact::ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum') + User::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'), + User::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'), + User::ACCOUNT_TYPE_NEWS => L10n::t('News Page'), + User::ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum'), + User::ACCOUNT_TYPE_RELAY => L10n::t('Relay'), ]; $e['page_flags_raw'] = $e['page-flags']; diff --git a/mod/community.php b/mod/community.php index 063e1c693e..3c621f4261 100644 --- a/mod/community.php +++ b/mod/community.php @@ -14,6 +14,7 @@ use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Item; +use Friendica\Model\User; function community_init(App $a) { @@ -44,16 +45,16 @@ function community_content(App $a, $update = 0) if ($a->argc > 2) { switch ($a->argv[2]) { case 'person': - $accounttype = Contact::ACCOUNT_TYPE_PERSON; + $accounttype = User::ACCOUNT_TYPE_PERSON; break; case 'organisation': - $accounttype = Contact::ACCOUNT_TYPE_ORGANISATION; + $accounttype = User::ACCOUNT_TYPE_ORGANISATION; break; case 'news': - $accounttype = Contact::ACCOUNT_TYPE_NEWS; + $accounttype = User::ACCOUNT_TYPE_NEWS; break; case 'community': - $accounttype = Contact::ACCOUNT_TYPE_COMMUNITY; + $accounttype = User::ACCOUNT_TYPE_COMMUNITY; break; } } diff --git a/mod/noscrape.php b/mod/noscrape.php index 3528a2f118..5761df3ff9 100644 --- a/mod/noscrape.php +++ b/mod/noscrape.php @@ -9,6 +9,7 @@ use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Profile; +use Friendica\Model\User; function noscrape_init(App $a) { @@ -32,7 +33,7 @@ function noscrape_init(App $a) 'guid' => $a->profile['guid'], 'key' => $a->profile['pubkey'], 'homepage' => System::baseUrl()."/profile/{$which}", - 'comm' => ($a->profile['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY), + 'comm' => ($a->profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY), 'account-type' => $a->profile['account-type'], ]; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 745bbacadd..8937f198c7 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -74,27 +74,30 @@ class Contact extends BaseObject /** * @name account types * - * ACCOUNT_TYPE_PERSON - the account belongs to a person + * TYPE_UNKNOWN - the account has been imported from gcontact where this is the default type value + * + * TYPE_PERSON - the account belongs to a person * Associated page types: PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE * - * ACCOUNT_TYPE_ORGANISATION - the account belongs to an organisation + * TYPE_ORGANISATION - the account belongs to an organisation * Associated page type: PAGE_SOAPBOX * - * ACCOUNT_TYPE_NEWS - the account is a news reflector + * TYPE_NEWS - the account is a news reflector * Associated page type: PAGE_SOAPBOX * - * ACCOUNT_TYPE_COMMUNITY - the account is community forum + * TYPE_COMMUNITY - the account is community forum * Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP * - * ACCOUNT_TYPE_RELAY - the account is a relay + * TYPE_RELAY - the account is a relay * This will only be assigned to contacts, not to user accounts * @{ */ - const ACCOUNT_TYPE_PERSON = 0; - const ACCOUNT_TYPE_ORGANISATION = 1; - const ACCOUNT_TYPE_NEWS = 2; - const ACCOUNT_TYPE_COMMUNITY = 3; - const ACCOUNT_TYPE_RELAY = 4; + const TYPE_UNKNOWN = -1; + const TYPE_PERSON = User::ACCOUNT_TYPE_PERSON; + const TYPE_ORGANISATION = User::ACCOUNT_TYPE_ORGANISATION; + const TYPE_NEWS = User::ACCOUNT_TYPE_NEWS; + const TYPE_COMMUNITY = User::ACCOUNT_TYPE_COMMUNITY; + const TYPE_RELAY = User::ACCOUNT_TYPE_RELAY; /** * @} */ @@ -740,7 +743,7 @@ class Contact extends BaseObject DBA::update('contact', $fields, ['nurl' => Strings::normaliseLink($contact['url'])]); if (!empty($contact['batch'])) { - $condition = ['batch' => $contact['batch'], 'contact-type' => self::ACCOUNT_TYPE_RELAY]; + $condition = ['batch' => $contact['batch'], 'contact-type' => self::TYPE_RELAY]; DBA::update('contact', $fields, $condition); } } @@ -1436,7 +1439,7 @@ class Contact extends BaseObject $sql = "`item`.`uid` = ?"; } - $contact_field = ($contact["contact-type"] == self::ACCOUNT_TYPE_COMMUNITY ? 'owner-id' : 'author-id'); + $contact_field = ($contact["contact-type"] == self::TYPE_COMMUNITY ? 'owner-id' : 'author-id'); if ($thread_mode) { $condition = ["`$contact_field` = ? AND `gravity` = ? AND " . $sql, @@ -1492,9 +1495,9 @@ class Contact extends BaseObject || (isset($contact['prv']) && intval($contact['prv'])) || (isset($contact['community']) && intval($contact['community'])) ) { - $type = self::ACCOUNT_TYPE_COMMUNITY; + $type = self::TYPE_COMMUNITY; } else { - $type = self::ACCOUNT_TYPE_PERSON; + $type = self::TYPE_PERSON; } // The "contact-type" (contact table) and "account-type" (user table) are more general then the chaos from above. @@ -1507,15 +1510,15 @@ class Contact extends BaseObject } switch ($type) { - case self::ACCOUNT_TYPE_ORGANISATION: + case self::TYPE_ORGANISATION: $account_type = L10n::t("Organisation"); break; - case self::ACCOUNT_TYPE_NEWS: + case self::TYPE_NEWS: $account_type = L10n::t('News'); break; - case self::ACCOUNT_TYPE_COMMUNITY: + case self::TYPE_COMMUNITY: $account_type = L10n::t("Forum"); break; diff --git a/src/Model/User.php b/src/Model/User.php index dd754fb46e..c33092a0fc 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -48,6 +48,35 @@ class User /** * @} */ + + /** + * Account types + * + * ACCOUNT_TYPE_PERSON - the account belongs to a person + * Associated page types: PAGE_FLAGS_NORMAL, PAGE_FLAGS_SOAPBOX, PAGE_FLAGS_FREELOVE + * + * ACCOUNT_TYPE_ORGANISATION - the account belongs to an organisation + * Associated page type: PAGE_FLAGS_SOAPBOX + * + * ACCOUNT_TYPE_NEWS - the account is a news reflector + * Associated page type: PAGE_FLAGS_SOAPBOX + * + * ACCOUNT_TYPE_COMMUNITY - the account is community forum + * Associated page types: PAGE_COMMUNITY, PAGE_FLAGS_PRVGROUP + * + * ACCOUNT_TYPE_RELAY - the account is a relay + * This will only be assigned to contacts, not to user accounts + * @{ + */ + const ACCOUNT_TYPE_PERSON = 0; + const ACCOUNT_TYPE_ORGANISATION = 1; + const ACCOUNT_TYPE_NEWS = 2; + const ACCOUNT_TYPE_COMMUNITY = 3; + const ACCOUNT_TYPE_RELAY = 4; + /** + * @} + */ + /** * Returns true if a user record exists with the provided id * diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 9515db728a..1a0607bf12 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -417,7 +417,7 @@ class Probe // This doesn't cover the case when a community isn't a community anymore if (!empty($data['community']) && $data['community']) { $fields['community'] = $data['community']; - $fields['contact-type'] = Contact::ACCOUNT_TYPE_COMMUNITY; + $fields['contact-type'] = Contact::TYPE_COMMUNITY; } $fieldnames = []; diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 7f67bab7f5..0ab2619412 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -503,13 +503,13 @@ class Receiver // Check if the potential receiver is following the actor // Exception: The receiver is targetted via "to" or this is a comment - if ((($element != 'as:to') && empty($replyto)) || ($contact['contact-type'] == Contact::ACCOUNT_TYPE_COMMUNITY)) { + if ((($element != 'as:to') && empty($replyto)) || ($contact['contact-type'] == Contact::TYPE_COMMUNITY)) { $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]; $condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND], 'network' => $networks, 'archive' => false, 'pending' => false, 'uid' => $contact['uid']]; // Forum posts are only accepted from forum contacts - if ($contact['contact-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) { $condition['rel'] = [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER]; } @@ -576,7 +576,7 @@ class Receiver // When the possible receiver isn't a community, then it is no valid receiver $owner = User::getOwnerDataById($contact['uid']); - if (empty($owner) || ($owner['contact-type'] != Contact::ACCOUNT_TYPE_COMMUNITY)) { + if (empty($owner) || ($owner['contact-type'] != Contact::TYPE_COMMUNITY)) { return false; } diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 550f5e07f1..2dc5976b1d 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2878,7 +2878,7 @@ class DFRN DBA::update('contact', ['contact-type' => $accounttype], ['uid' => 0, 'nurl' => $importer['nurl']]); } // A forum contact can either have set "forum" or "prv" - but not both - if ($accounttype == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($accounttype == User::ACCOUNT_TYPE_COMMUNITY) { // It's a forum, so either set the public or private forum flag $condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $forum, !$forum, $importer['id']]; DBA::update('contact', ['forum' => $forum, 'prv' => !$forum], $condition); diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 9a29edaaf6..beaf42c6c1 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -147,7 +147,7 @@ class Diaspora // Fetch the relay contact $condition = ['uid' => 0, 'nurl' => Strings::normaliseLink($server_url), - 'contact-type' => Contact::ACCOUNT_TYPE_RELAY]; + 'contact-type' => Contact::TYPE_RELAY]; $contact = DBA::selectFirst('contact', $fields, $condition); if (DBA::isResult($contact)) { @@ -187,7 +187,7 @@ class Diaspora $fields = array_merge($fields, $network_fields); $condition = ['uid' => 0, 'nurl' => Strings::normaliseLink($server_url), - 'contact-type' => Contact::ACCOUNT_TYPE_RELAY]; + 'contact-type' => Contact::TYPE_RELAY]; if (DBA::exists('contact', $condition)) { unset($fields['created']); @@ -3165,7 +3165,7 @@ class Diaspora 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)) { + if (!$no_queue && !empty($contact['contact-type']) && ($contact['contact-type'] != Contact::TYPE_RELAY)) { Logger::log("queue message"); // queue message for redelivery Queue::add($contact["id"], Protocol::DIASPORA, $envelope, $public_batch, $guid); diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index a62e126629..2196fb7726 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1349,7 +1349,7 @@ class OStatus $attributes = ["href" => System::baseUrl() . $selfUri, "rel" => "self", "type" => "application/atom+xml"]; XML::addElement($doc, $root, "link", "", $attributes); - if ($owner['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($owner['account-type'] == Contact::TYPE_COMMUNITY) { $condition = ['uid' => $owner['uid'], 'self' => false, 'pending' => false, 'archive' => false, 'hidden' => false, 'blocked' => false]; $members = DBA::count('contact', $condition); @@ -1461,7 +1461,7 @@ class OStatus $profile = DBA::selectFirst('profile', ['homepage', 'publish'], ['uid' => $owner['uid'], 'is-default' => true]); $author = $doc->createElement("author"); XML::addElement($doc, $author, "id", $owner["url"]); - if ($owner['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) { XML::addElement($doc, $author, "activity:object-type", ACTIVITY_OBJ_GROUP); } else { XML::addElement($doc, $author, "activity:object-type", ACTIVITY_OBJ_PERSON); @@ -1945,7 +1945,7 @@ class OStatus $title = sprintf("New note by %s", $owner["nick"]); } - if ($owner['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) { $contact = self::contactEntry($item['author-link'], $owner); $author = self::addAuthor($doc, $contact, false); $entry->appendChild($author); @@ -2108,8 +2108,8 @@ class OStatus foreach ($mentioned as $mention) { $condition = ['uid' => $owner['uid'], 'nurl' => Strings::normaliseLink($mention)]; $contact = DBA::selectFirst('contact', ['forum', 'prv', 'self', 'contact-type'], $condition); - if ($contact["forum"] || $contact["prv"] || ($owner['contact-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) || - ($contact['self'] && ($owner['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY))) { + if ($contact["forum"] || $contact["prv"] || ($owner['contact-type'] == Contact::TYPE_COMMUNITY) || + ($contact['self'] && ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY))) { XML::addElement($doc, $entry, "link", "", [ "rel" => "mentioned", @@ -2126,7 +2126,7 @@ class OStatus } } - if ($owner['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) { XML::addElement($doc, $entry, "link", "", [ "rel" => "mentioned", "ostatus:object-type" => "http://activitystrea.ms/schema/1.0/group", @@ -2236,7 +2236,7 @@ class OStatus $condition[] = ACTIVITY_OBJ_COMMENT; } - if ($owner['account-type'] != Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) { $condition[0] .= " AND `contact-id` = ? AND `author-id` = ?"; $condition[] = $owner["id"]; $condition[] = $authorid; diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 49fe47c54c..18654d5ed4 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -301,7 +301,7 @@ class Delivery extends BaseObject // Se we transmit with the new method and via Diaspora as a fallback if (!empty($items) && (($items[0]['uid'] == 0) || ($contact['uid'] == 0))) { // Transmit in public if it's a relay post - $public_dfrn = ($contact['contact-type'] == Contact::ACCOUNT_TYPE_RELAY); + $public_dfrn = ($contact['contact-type'] == Contact::TYPE_RELAY); $deliver_status = DFRN::transmit($owner, $contact, $atom, $public_dfrn); @@ -359,7 +359,7 @@ class Delivery extends BaseObject private static function deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup) { // We don't treat Forum posts as "wall-to-wall" to be able to post them via Diaspora - $walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != Contact::ACCOUNT_TYPE_COMMUNITY); + $walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY); if ($public_message) { $loc = 'public batch ' . $contact['batch']; diff --git a/src/Worker/Queue.php b/src/Worker/Queue.php index 704ac00b4e..48e962f036 100644 --- a/src/Worker/Queue.php +++ b/src/Worker/Queue.php @@ -138,7 +138,7 @@ class Queue $deliver_status = Diaspora::transmit($owner, $contact, $data, $public, true, 'Queue:' . $q_item['id'], true); if ((($deliver_status >= 200) && ($deliver_status <= 299)) || - ($contact['contact-type'] == Contact::ACCOUNT_TYPE_RELAY)) { + ($contact['contact-type'] == Contact::TYPE_RELAY)) { QueueModel::removeItem($q_item['id']); } else { QueueModel::updateTime($q_item['id']); From c280fc648498c0155c0e985b76b97ea54a267001 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 17:08:58 -0500 Subject: [PATCH 162/728] Show followers for pages, followed for users in ContactBlock widget --- src/Content/Widget/ContactBlock.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php index 12cd4cd87d..33f72af40e 100644 --- a/src/Content/Widget/ContactBlock.php +++ b/src/Content/Widget/ContactBlock.php @@ -14,6 +14,7 @@ use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\Model\Contact; +use Friendica\Model\User; /** * ContactBlock widget @@ -59,6 +60,13 @@ class ContactBlock if (!$total) { $micropro = []; } else { + // Only show followed for personal accounts, followers for pages + if (defaults($profile, 'account-type', User::ACCOUNT_TYPE_PERSON) == User::ACCOUNT_TYPE_PERSON) { + $rel = [Contact::FOLLOWER, Contact::FRIEND]; + } else { + $rel = [Contact::SHARING, Contact::FRIEND]; + } + $contact_ids_stmt = DBA::select('contact', ['id'], [ 'uid' => $profile['uid'], 'self' => false, @@ -66,7 +74,7 @@ class ContactBlock 'pending' => false, 'hidden' => false, 'archive' => false, - 'rel' => [Contact::FOLLOWER, Contact::FRIEND], + 'rel' => $rel, 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], ], ['limit' => $shown]); From 45ada943b4f04fff6cd94ba55a8f87633ae11f19 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 6 Jan 2019 23:49:13 -0500 Subject: [PATCH 163/728] Update missing namespace uses in mod/ - Update missing constant moves in mod/ --- mod/dfrn_notify.php | 1 + mod/hcard.php | 1 + mod/profile.php | 1 + mod/profiles.php | 1 + mod/settings.php | 36 ++++++++++++++++++------------------ mod/videos.php | 1 + mod/wall_attach.php | 2 +- mod/wall_upload.php | 1 + update.php | 2 +- 9 files changed, 26 insertions(+), 20 deletions(-) diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index ac62d74534..e42f18e76b 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -12,6 +12,7 @@ use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Contact; +use Friendica\Model\User; use Friendica\Protocol\DFRN; use Friendica\Protocol\Diaspora; use Friendica\Util\Strings; diff --git a/mod/hcard.php b/mod/hcard.php index 9a0c969ae4..cbaebc8ff4 100644 --- a/mod/hcard.php +++ b/mod/hcard.php @@ -8,6 +8,7 @@ use Friendica\Core\L10n; use Friendica\Core\System; use Friendica\Model\Contact; use Friendica\Model\Profile; +use Friendica\Model\User; function hcard_init(App $a) { diff --git a/mod/profile.php b/mod/profile.php index e6b7f453c3..f93e45984b 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -19,6 +19,7 @@ use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Model\Item; use Friendica\Model\Profile; +use Friendica\Model\User; use Friendica\Module\Login; use Friendica\Protocol\ActivityPub; use Friendica\Protocol\DFRN; diff --git a/mod/profiles.php b/mod/profiles.php index add9d50852..bc41718c54 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -19,6 +19,7 @@ use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\GContact; use Friendica\Model\Profile; +use Friendica\Model\User; use Friendica\Module\Login; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; diff --git a/mod/settings.php b/mod/settings.php index 8aba6809f2..b1be28f8c9 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -474,13 +474,13 @@ function settings_post(App $a) } // Adjust the page flag if the account type doesn't fit to the page flag. - if (($account_type == Contact::ACCOUNT_TYPE_PERSON) && !in_array($page_flags, [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE])) { + if (($account_type == User::ACCOUNT_TYPE_PERSON) && !in_array($page_flags, [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE])) { $page_flags = User::PAGE_FLAGS_NORMAL; - } elseif (($account_type == Contact::ACCOUNT_TYPE_ORGANISATION) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { + } elseif (($account_type == User::ACCOUNT_TYPE_ORGANISATION) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { $page_flags = User::PAGE_FLAGS_SOAPBOX; - } elseif (($account_type == Contact::ACCOUNT_TYPE_NEWS) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { + } elseif (($account_type == User::ACCOUNT_TYPE_NEWS) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) { $page_flags = User::PAGE_FLAGS_SOAPBOX; - } elseif (($account_type == Contact::ACCOUNT_TYPE_COMMUNITY) && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { + } elseif (($account_type == User::ACCOUNT_TYPE_COMMUNITY) && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { $page_flags = User::PAGE_FLAGS_COMMUNITY; } @@ -1015,8 +1015,8 @@ function settings_content(App $a) // Set the account type to "Community" when the page is a community page but the account type doesn't fit // This is only happening on the first visit after the update if (in_array($a->user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) && - ($a->user['account-type'] != Contact::ACCOUNT_TYPE_COMMUNITY)) - $a->user['account-type'] = Contact::ACCOUNT_TYPE_COMMUNITY; + ($a->user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY)) + $a->user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY; $pageset_tpl = Renderer::getMarkupTemplate('settings/pagetypes.tpl'); @@ -1025,26 +1025,26 @@ function settings_content(App $a) '$user' => L10n::t("Personal Page Subtypes"), '$community' => L10n::t("Community Forum Subtypes"), '$account_type' => $a->user['account-type'], - '$type_person' => Contact::ACCOUNT_TYPE_PERSON, - '$type_organisation' => Contact::ACCOUNT_TYPE_ORGANISATION, - '$type_news' => Contact::ACCOUNT_TYPE_NEWS, - '$type_community' => Contact::ACCOUNT_TYPE_COMMUNITY, + '$type_person' => User::ACCOUNT_TYPE_PERSON, + '$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION, + '$type_news' => User::ACCOUNT_TYPE_NEWS, + '$type_community' => User::ACCOUNT_TYPE_COMMUNITY, - '$account_person' => ['account-type', L10n::t('Personal Page'), Contact::ACCOUNT_TYPE_PERSON, + '$account_person' => ['account-type', L10n::t('Personal Page'), User::ACCOUNT_TYPE_PERSON, L10n::t('Account for a personal profile.'), - ($a->user['account-type'] == Contact::ACCOUNT_TYPE_PERSON)], + ($a->user['account-type'] == User::ACCOUNT_TYPE_PERSON)], - '$account_organisation' => ['account-type', L10n::t('Organisation Page'), Contact::ACCOUNT_TYPE_ORGANISATION, + '$account_organisation' => ['account-type', L10n::t('Organisation Page'), User::ACCOUNT_TYPE_ORGANISATION, L10n::t('Account for an organisation that automatically approves contact requests as "Followers".'), - ($a->user['account-type'] == Contact::ACCOUNT_TYPE_ORGANISATION)], + ($a->user['account-type'] == User::ACCOUNT_TYPE_ORGANISATION)], - '$account_news' => ['account-type', L10n::t('News Page'), Contact::ACCOUNT_TYPE_NEWS, + '$account_news' => ['account-type', L10n::t('News Page'), User::ACCOUNT_TYPE_NEWS, L10n::t('Account for a news reflector that automatically approves contact requests as "Followers".'), - ($a->user['account-type'] == Contact::ACCOUNT_TYPE_NEWS)], + ($a->user['account-type'] == User::ACCOUNT_TYPE_NEWS)], - '$account_community' => ['account-type', L10n::t('Community Forum'), Contact::ACCOUNT_TYPE_COMMUNITY, + '$account_community' => ['account-type', L10n::t('Community Forum'), User::ACCOUNT_TYPE_COMMUNITY, L10n::t('Account for community discussions.'), - ($a->user['account-type'] == Contact::ACCOUNT_TYPE_COMMUNITY)], + ($a->user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)], '$page_normal' => ['page-flags', L10n::t('Normal Account Page'), User::PAGE_FLAGS_NORMAL, L10n::t('Account for a regular personal profile that requires manual approval of "Friends" and "Followers".'), diff --git a/mod/videos.php b/mod/videos.php index 1d37b76bd6..4120c136f1 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -16,6 +16,7 @@ use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Model\Item; use Friendica\Model\Profile; +use Friendica\Model\User; use Friendica\Protocol\DFRN; use Friendica\Util\Security; diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 4a4d1edc53..c4ee33bd18 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -8,7 +8,7 @@ use Friendica\Core\Config; use Friendica\Core\L10n; use Friendica\Database\DBA; use Friendica\Model\Attach; -use Friendica\Model\Contact; +use Friendica\Model\User; use Friendica\Util\Strings; function wall_attach_post(App $a) { diff --git a/mod/wall_upload.php b/mod/wall_upload.php index 84da855984..a245ca739c 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -16,6 +16,7 @@ use Friendica\Core\Config; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Photo; +use Friendica\Model\User; use Friendica\Object\Image; use Friendica\Util\Strings; diff --git a/update.php b/update.php index 4b0b2f2b6a..e619ec89dd 100644 --- a/update.php +++ b/update.php @@ -161,7 +161,7 @@ function update_1191() function update_1203() { $r = q("UPDATE `user` SET `account-type` = %d WHERE `page-flags` IN (%d, %d)", - DBA::escape(Contact::ACCOUNT_TYPE_COMMUNITY), + DBA::escape(User::ACCOUNT_TYPE_COMMUNITY), DBA::escape(User::PAGE_FLAGS_COMMUNITY), DBA::escape(User::PAGE_FLAGS_PRVGROUP) ); From 7f2dc4060119f49eaaefb01ce3f32907e4c7761d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 12:51:48 -0500 Subject: [PATCH 164/728] Fix potential bugs without expected behavior change - Fix uninitialized variables - Fix potentially not set variables - Fix wrong parameter default value - Fix method scope - Fix missing return value --- include/conversation.php | 19 +++++++++---------- include/enotify.php | 12 ++++++++---- mod/admin.php | 2 +- mod/dfrn_notify.php | 1 + mod/dfrn_request.php | 6 +++--- mod/directory.php | 3 +++ mod/dirfind.php | 8 +++----- mod/fbrowser.php | 2 ++ mod/feedtest.php | 2 +- mod/help.php | 1 + mod/ignored.php | 2 +- mod/invite.php | 2 ++ mod/item.php | 2 +- mod/msearch.php | 3 ++- mod/notifications.php | 2 ++ mod/notify.php | 2 ++ mod/openid.php | 8 ++++---- mod/poco.php | 6 +++--- mod/suggest.php | 1 + mod/worker.php | 4 +++- mod/xrd.php | 8 ++++---- src/App.php | 10 +++++----- src/Core/Console/DatabaseStructure.php | 2 ++ src/Core/NotificationsManager.php | 2 ++ src/Model/Attach.php | 2 +- src/Model/Contact.php | 13 ++++--------- src/Model/Conversation.php | 2 +- src/Model/Event.php | 4 +++- src/Model/Item.php | 6 +++--- src/Module/Proxy.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 2 +- src/Protocol/DFRN.php | 4 ++-- src/Protocol/OStatus.php | 6 +++--- src/Util/Network.php | 1 + src/Util/Strings.php | 2 +- 35 files changed, 87 insertions(+), 67 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 5125b3d1e8..6ee7309ad1 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -176,6 +176,7 @@ function localize_item(&$item) $plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]'; + $bodyverb = ''; if (activity_match($item['verb'], ACTIVITY_LIKE)) { $bodyverb = L10n::t('%1$s likes %2$s\'s %3$s'); } elseif (activity_match($item['verb'], ACTIVITY_DISLIKE)) { @@ -1043,25 +1044,22 @@ function format_like($cnt, array $arr, $type, $id) { } } + $phrase = ''; if ($cnt > 1) { $total = count($arr); - if ($total >= MAX_LIKERS) { - $arr = array_slice($arr, 0, MAX_LIKERS - 1); - } if ($total < MAX_LIKERS) { $last = L10n::t('and') . ' ' . $arr[count($arr)-1]; $arr2 = array_slice($arr, 0, -1); - $str = implode(', ', $arr2) . ' ' . $last; + $likers = implode(', ', $arr2) . ' ' . $last; + } else { + $arr = array_slice($arr, 0, MAX_LIKERS - 1); + $likers = implode(', ', $arr); + $likers .= L10n::t('and %d other people', $total - MAX_LIKERS); } - if ($total >= MAX_LIKERS) { - $str = implode(', ', $arr); - $str .= L10n::t('and %d other people', $total - MAX_LIKERS); - } - - $likers = $str; $spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\""; + $explikers = ''; switch ($type) { case 'like': $phrase = L10n::t('%2$d people like this', $spanatts, $cnt); @@ -1497,6 +1495,7 @@ function get_responses(array $conv_responses, array $response_verbs, $ob, array function get_response_button_text($v, $count) { + $return = ''; switch ($v) { case 'like': $return = L10n::tt('Like', 'Likes', $count); diff --git a/include/enotify.php b/include/enotify.php index 80e6782c2d..800158d9ae 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -120,6 +120,12 @@ function notification($params) } $epreamble = ''; + $preamble = ''; + $subject = ''; + $sitelink = ''; + $tsitelink = ''; + $hsitelink = ''; + $itemlink = ''; if ($params['type'] == NOTIFY_MAIL) { $itemlink = $siteurl.'/message/'.$params['item']['id']; @@ -453,10 +459,6 @@ function notification($params) $body = $params['body']; - $sitelink = ""; - $tsitelink = ""; - $hsitelink = ""; - $itemlink = ""; $show_in_notification_page = false; } @@ -487,6 +489,8 @@ function notification($params) $hsitelink = $h['hsitelink']; $itemlink = $h['itemlink']; + $notify_id = 0; + if ($show_in_notification_page) { Logger::log("adding notification entry", Logger::DEBUG); do { diff --git a/mod/admin.php b/mod/admin.php index 8ff3089d9c..e5dbf12f29 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1298,7 +1298,7 @@ function admin_page_site_post(App $a) Config::set('system', 'banner', $banner); } - if ($info == "") { + if (empty($info)) { Config::delete('config', 'info'); } else { Config::set('config', 'info', $info); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index e42f18e76b..745411a8ef 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -300,6 +300,7 @@ function dfrn_notify_content(App $a) { break; default: $status = 1; + $my_id = ''; break; } diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 6142257e77..780e0afeeb 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -34,9 +34,9 @@ function dfrn_request_init(App $a) { if ($a->argc > 1) { $which = $a->argv[1]; + Profile::load($a, $which); } - Profile::load($a, $which); return; } @@ -168,7 +168,7 @@ function dfrn_request_post(App $a) $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `site-pubkey` = '%s' LIMIT 1", intval(local_user()), DBA::escape($dfrn_url), - $parms['key'] // this was already escaped + defaults($parms, 'key', '') // Potentially missing ); if (DBA::isResult($r)) { Group::addMember(User::getDefaultGroup(local_user(), $r[0]["network"]), $r[0]['id']); @@ -187,7 +187,7 @@ function dfrn_request_post(App $a) $dfrn_request = $contact_record['request']; } - if (strlen($dfrn_request) && strlen($confirm_key)) { + if (!empty($dfrn_request) && strlen($confirm_key)) { Network::fetchUrl($dfrn_request . '?confirm_key=' . $confirm_key); } diff --git a/mod/directory.php b/mod/directory.php index c32cf5dbb8..8ca8d8158e 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -111,8 +111,11 @@ function directory_content(App $a) $photo = 'photo'; } + $entries = []; + while ($rr = DBA::fetch($r)) { + while ($rr = DBA::fetch($r)) { $itemurl = (($rr['addr'] != "") ? $rr['addr'] : $rr['profile_url']); $profile_link = $rr['profile_url']; diff --git a/mod/dirfind.php b/mod/dirfind.php index 909a723165..a5b77312f3 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -179,21 +179,19 @@ function dirfind_content(App $a, $prefix = "") { // Add found profiles from the global directory to the local directory Worker::add(PRIORITY_LOW, 'DiscoverPoCo', "dirsearch", urlencode($search)); - } else { + } elseif (strlen(Config::get('system','directory'))) { $p = (($pager->getPage() != 1) ? '&p=' . $pager->getPage() : ''); - if (strlen(Config::get('system','directory'))) { - $x = Network::fetchUrl(get_server() . '/lsearch?f=' . $p . '&search=' . urlencode($search)); - } + $x = Network::fetchUrl(get_server() . '/lsearch?f=' . $p . '&search=' . urlencode($search)); $j = json_decode($x); - $pager->setItemsPerPage($j->items_page); } if (!empty($j->results)) { $id = 0; + $entries = []; foreach ($j->results as $jj) { $alt_text = ""; diff --git a/mod/fbrowser.php b/mod/fbrowser.php index d302383157..559896acb1 100644 --- a/mod/fbrowser.php +++ b/mod/fbrowser.php @@ -29,6 +29,8 @@ function fbrowser_content(App $a) $template_file = "filebrowser.tpl"; + $o = ''; + switch ($a->argv[1]) { case "image": $path = [["", L10n::t("Photos")]]; diff --git a/mod/feedtest.php b/mod/feedtest.php index 8508b93e47..cffc1f3451 100644 --- a/mod/feedtest.php +++ b/mod/feedtest.php @@ -35,7 +35,7 @@ function feedtest_content(App $a) $import_result = Feed::import($xml, $importer, $contact, $dummy, true); $result = [ - 'input' => text_highlight($xml, 'xml'), + 'input' => $xml, 'output' => var_export($import_result, true), ]; } diff --git a/mod/help.php b/mod/help.php index 3a21695b09..3df280dbd6 100644 --- a/mod/help.php +++ b/mod/help.php @@ -33,6 +33,7 @@ function help_content(App $a) Nav::setSelected('help'); $text = ''; + $filename = ''; if ($a->argc > 1) { $path = ''; diff --git a/mod/ignored.php b/mod/ignored.php index e50d183b28..64edf6e151 100644 --- a/mod/ignored.php +++ b/mod/ignored.php @@ -14,7 +14,7 @@ function ignored_init(App $a) $message_id = intval($a->argv[1]); } - if (!$message_id) { + if (empty($message_id)) { exit(); } diff --git a/mod/invite.php b/mod/invite.php index 02415239ae..3b1667a79a 100644 --- a/mod/invite.php +++ b/mod/invite.php @@ -41,6 +41,8 @@ function invite_post(App $a) $message = !empty($_POST['message']) ? Strings::escapeTags(trim($_POST['message'])) : ''; $total = 0; + $invitation_only = false; + $invites_remaining = null; if (Config::get('system', 'invitation_only')) { $invitation_only = true; diff --git a/mod/item.php b/mod/item.php index 6276ba4d1e..7cb2849a89 100644 --- a/mod/item.php +++ b/mod/item.php @@ -1049,7 +1049,7 @@ function handle_tag(&$body, &$inform, &$str_tags, $profile_uid, $tag, $network = * Status.Net seems to require the numeric ID URL in a mention if the person isn't * subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. */ - if (strlen($alias)) { + if (!empty($alias)) { $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; if (!stripos($str_tags, '[url=' . $alias . ']')) { if (strlen($str_tags)) { diff --git a/mod/msearch.php b/mod/msearch.php index 64c6ce3cf8..fcb93a32f0 100644 --- a/mod/msearch.php +++ b/mod/msearch.php @@ -20,6 +20,8 @@ function msearch_post(App $a) exit(); } + $total = 0; + $count_stmt = DBA::p( "SELECT COUNT(*) AS `total` FROM `profile` @@ -29,7 +31,6 @@ function msearch_post(App $a) AND MATCH(`pub_keywords`) AGAINST (?)", $search ); - if (DBA::isResult($count_stmt)) { $row = DBA::fetch($count_stmt); $total = $row['total']; diff --git a/mod/notifications.php b/mod/notifications.php index 00c234d157..909b297ebf 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -92,6 +92,8 @@ function notifications_content(App $a) $notif_header = L10n::t('Notifications'); + $all = false; + // Get introductions if ((($a->argc > 1) && ($a->argv[1] == 'intros')) || (($a->argc == 1))) { Nav::setSelected('introductions'); diff --git a/mod/notify.php b/mod/notify.php index 2606e796ff..8703581784 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -58,6 +58,8 @@ function notify_content(App $a) return Login::form(); } + $notif_content = ''; + $nm = new NotificationsManager(); $notif_tpl = Renderer::getMarkupTemplate('notifications.tpl'); diff --git a/mod/openid.php b/mod/openid.php index 2ae3f6c718..d20258fa96 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -93,17 +93,17 @@ function openid_content(App $a) { } } } - if ($nick) { + if (!empty($nick)) { $args .= '&nickname=' . urlencode($nick); } - elseif ($first) { + elseif (!empty($first)) { $args .= '&nickname=' . urlencode($first); } - if ($photosq) { + if (!empty($photosq)) { $args .= '&photo=' . urlencode($photosq); } - elseif ($photo) { + elseif (!empty($photo)) { $args .= '&photo=' . urlencode($photo); } diff --git a/mod/poco.php b/mod/poco.php index 477b48b044..064e0e9a85 100644 --- a/mod/poco.php +++ b/mod/poco.php @@ -26,9 +26,9 @@ function poco_init(App $a) { } if ($a->argc > 1) { - $user = Strings::escapeTags(trim($a->argv[1])); + $nickname = Strings::escapeTags(trim($a->argv[1])); } - if (empty($user)) { + if (empty($nickname)) { $c = q("SELECT * FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1"); if (!DBA::isResult($c)) { System::httpExit(401); @@ -70,7 +70,7 @@ function poco_init(App $a) { if (! $system_mode && ! $global) { $users = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid` where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1", - DBA::escape($user) + DBA::escape($nickname) ); if (! DBA::isResult($users) || $users[0]['hidewall'] || $users[0]['hide-friends']) { System::httpExit(404); diff --git a/mod/suggest.php b/mod/suggest.php index 7f1fe3386c..bca2694d37 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -77,6 +77,7 @@ function suggest_content(App $a) } $id = 0; + $entries = []; foreach ($r as $rr) { diff --git a/mod/worker.php b/mod/worker.php index 86fed28bbe..2995775db1 100644 --- a/mod/worker.php +++ b/mod/worker.php @@ -38,7 +38,9 @@ function worker_init() Worker::callWorker(); - if ($r = Worker::workerProcess()) { + $passing_slow = false; + + if ($r = Worker::workerProcess($passing_slow)) { // On most configurations this parameter wouldn't have any effect. // But since it doesn't destroy anything, we just try to get more execution time in any way. set_time_limit(0); diff --git a/mod/xrd.php b/mod/xrd.php index 1b3b4f3cc1..b4cb60afed 100644 --- a/mod/xrd.php +++ b/mod/xrd.php @@ -63,13 +63,13 @@ function xrd_init(App $a) } if ($mode == 'xml') { - xrd_xml($a, $addr, $alias, $profile_url, $user); + xrd_xml($addr, $alias, $profile_url, $user); } else { - xrd_json($a, $addr, $alias, $profile_url, $user); + xrd_json($addr, $alias, $profile_url, $user); } } -function xrd_json($a, $uri, $alias, $profile_url, $r) +function xrd_json($uri, $alias, $profile_url, $r) { $salmon_key = Salmon::salmonKey($r['spubkey']); @@ -100,7 +100,7 @@ function xrd_json($a, $uri, $alias, $profile_url, $r) exit(); } -function xrd_xml($a, $uri, $alias, $profile_url, $r) +function xrd_xml($uri, $alias, $profile_url, $r) { $salmon_key = Salmon::salmonKey($r['spubkey']); diff --git a/src/App.php b/src/App.php index 6421a4c212..0015405c46 100644 --- a/src/App.php +++ b/src/App.php @@ -1869,14 +1869,14 @@ class App // And then append it to the target $target->documentElement->appendChild($item); } - } - if (isset($_GET["mode"]) && ($_GET["mode"] == "raw")) { - header("Content-type: text/html; charset=utf-8"); + if ($_GET["mode"] == "raw") { + header("Content-type: text/html; charset=utf-8"); - echo substr($target->saveHTML(), 6, -8); + echo substr($target->saveHTML(), 6, -8); - exit(); + exit(); + } } $page = $this->page; diff --git a/src/Core/Console/DatabaseStructure.php b/src/Core/Console/DatabaseStructure.php index 47e6af5eb1..724feea5e4 100644 --- a/src/Core/Console/DatabaseStructure.php +++ b/src/Core/Console/DatabaseStructure.php @@ -79,6 +79,8 @@ HELP; DBStructure::convertToInnoDB(); $output = ob_get_clean(); break; + default: + $output = 'Unknown command: ' . $this->getArgument(0); } $this->out($output); diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 98de4fa178..d582f21596 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -637,6 +637,8 @@ class NotificationsManager extends BaseObject { $knowyou = ''; + $arr = []; + foreach ($intros as $it) { // There are two kind of introduction. Contacts suggested by other contacts and normal connection requests. // We have to distinguish between these two because they use different data. diff --git a/src/Model/Attach.php b/src/Model/Attach.php index c74209d6a1..9be77eca91 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -232,7 +232,7 @@ class Attach extends BaseObject * @return boolean True on success * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function storeFile($src, $uid, $filename = '', $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') + public static function storeFile($src, $uid, $filename = '', $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { if ($filename === '') { $filename = basename($src); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 8937f198c7..2b7aada795 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -35,12 +35,6 @@ class Contact extends BaseObject * @deprecated since version 2019.03 * @see User::PAGE_FLAGS_NORMAL */ - const PAGE_NORMAL = 0; - const PAGE_SOAPBOX = 1; - const PAGE_COMMUNITY = 2; - const PAGE_FREELOVE = 3; - const PAGE_BLOG = 4; - const PAGE_PRVGROUP = 5; const PAGE_NORMAL = User::PAGE_FLAGS_NORMAL; /** * @deprecated since version 2019.03 @@ -1205,9 +1199,10 @@ class Contact extends BaseObject $contact = DBA::selectFirst('contact', $fields, ['addr' => $url]); } + // The link could be provided as http although we stored it as https + $ssl_url = str_replace('http://', 'https://', $url); + if (!DBA::isResult($contact)) { - // The link could be provided as http although we stored it as https - $ssl_url = str_replace('http://', 'https://', $url); $condition = ['alias' => [$url, Strings::normaliseLink($url), $ssl_url]]; $contact = DBA::selectFirst('contact', $fields, $condition); } @@ -1426,7 +1421,7 @@ class Contact extends BaseObject { $a = self::getApp(); - $cid = Self::getIdForURL($contact_url); + $cid = self::getIdForURL($contact_url); $contact = DBA::selectFirst('contact', ['contact-type', 'network'], ['id' => $cid]); if (!DBA::isResult($contact)) { diff --git a/src/Model/Conversation.php b/src/Model/Conversation.php index 90c70a9be5..06d3ba536d 100644 --- a/src/Model/Conversation.php +++ b/src/Model/Conversation.php @@ -77,7 +77,7 @@ class Conversation } // Update structure data all the time but the source only when its from a better protocol. if (empty($conversation['source']) || (!empty($old_conv['source']) && - ($old_conv['protocol'] < defaults($conversation, 'protocol', PARCEL_UNKNOWN)))) { + ($old_conv['protocol'] < defaults($conversation, 'protocol', self::PARCEL_UNKNOWN)))) { unset($conversation['protocol']); unset($conversation['source']); } diff --git a/src/Model/Event.php b/src/Model/Event.php index 576f47ba83..cd08c314af 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -48,8 +48,10 @@ class Event extends BaseObject } if ($simple) { + $o = ''; + if (!empty($event['summary'])) { - $o = "

" . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . "

"; + $o .= "

" . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . "

"; } if (!empty($event['desc'])) { diff --git a/src/Model/Item.php b/src/Model/Item.php index cffa25397c..bc3d58c4a5 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1252,6 +1252,8 @@ class Item extends BaseObject { $orig_item = $item; + $priority = PRIORITY_HIGH; + // If it is a posting where users should get notifications, then define it as wall posting if ($notify) { $item['wall'] = 1; @@ -1261,8 +1263,6 @@ class Item extends BaseObject if (is_int($notify)) { $priority = $notify; - } else { - $priority = PRIORITY_HIGH; } } else { $item['network'] = trim(defaults($item, 'network', Protocol::PHANTOM)); @@ -1850,7 +1850,7 @@ class Item extends BaseObject $cmd = 'wall-new'; } - Worker::add(['priority' => PRIORITY_HIGH, 'dont_fork' => true], 'Notifier', $cmd, $current_post); + Worker::add(['priority' => $priority, 'dont_fork' => true], 'Notifier', $cmd, $current_post); } return $current_post; diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 221ce8d081..1c980fe11e 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -293,7 +293,7 @@ class Proxy extends BaseModule * */ private static function responseError() { - header('Content-type: ' . $img->getType()); + header('Content-type: image/png'); echo file_get_contents('images/blank.png'); exit(); } diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 44bb491813..a44f5c8b59 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1238,7 +1238,7 @@ class Transmitter Logger::log('Sending activity ' . $activity . ' to ' . $target . ' for user ' . $uid, Logger::DEBUG); $signed = LDSignature::sign($data, $owner); - HTTPSignature::transmit($signed, $profile['inbox'], $uid); + return HTTPSignature::transmit($signed, $profile['inbox'], $uid); } /** diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 2dc5976b1d..cf6080c572 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1963,6 +1963,7 @@ class DFRN DBA::escape($suggest["photo"]), DBA::escape($suggest["request"]) ); + $fid = $r[0]["id"]; } $condition = ['url' => $suggest["url"], 'name' => $suggest["name"], 'request' => $suggest["request"]]; @@ -1977,8 +1978,6 @@ class DFRN exit(); } - $fid = $r[0]["id"]; - $hash = Strings::getRandomHex(); q( @@ -2219,6 +2218,7 @@ class DFRN if (($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) { // somebody was poked/prodded. Was it me? + $Blink = ''; foreach ($xo->link as $l) { $atts = $l->attributes(); switch ($atts["rel"]) { diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 2196fb7726..6860665fc2 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -53,7 +53,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, array &$contact = null, $onlyfetch) + private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, array &$contact, $onlyfetch) { $author = []; $author["author-link"] = XML::getFirstNodeValue($xpath, 'atom:author/atom:uri/text()', $context); @@ -303,7 +303,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function import($xml, array $importer, array &$contact = null, &$hub) + public static function import($xml, array $importer, array &$contact, &$hub) { self::process($xml, $importer, $contact, $hub); } @@ -322,7 +322,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function process($xml, array $importer, array &$contact = null, &$hub, $stored = false, $initialize = true) + private static function process($xml, array $importer, array &$contact, &$hub, $stored = false, $initialize = true) { if ($initialize) { self::$itemlist = []; diff --git a/src/Util/Network.php b/src/Util/Network.php index c7e7c3c5ea..de4b45da9a 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -101,6 +101,7 @@ class Network return CurlResult::createErrorCurl(substr($url, 0, 200)); } + $parts2 = []; $parts = parse_url($url); $path_parts = explode('/', defaults($parts, 'path', '')); foreach ($path_parts as $part) { diff --git a/src/Util/Strings.php b/src/Util/Strings.php index 0a476a76be..0c63749c85 100644 --- a/src/Util/Strings.php +++ b/src/Util/Strings.php @@ -295,7 +295,7 @@ class Strings * * @return string normalized OpenId Identity */ - function normaliseOpenID($s) + public static function normaliseOpenID($s) { return trim(str_replace(['http://', 'https://'], ['', ''], $s), '/'); } From 8a5ef2b6f47999cd663a5e5856006e994747fe42 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:23:14 -0500 Subject: [PATCH 165/728] Replace deprecated calls to q() in mod/fsuggest and mod/photos --- mod/fsuggest.php | 27 +++++++++------------------ mod/photos.php | 30 ++++++++++++++++-------------- 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/mod/fsuggest.php b/mod/fsuggest.php index e84a42734c..58bb116700 100644 --- a/mod/fsuggest.php +++ b/mod/fsuggest.php @@ -23,15 +23,11 @@ function fsuggest_post(App $a) $contact_id = intval($a->argv[1]); - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($contact_id), - intval(local_user()) - ); - if (! DBA::isResult($r)) { + $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user()]); + if (! DBA::isResult($contact)) { notice(L10n::t('Contact not found.') . EOL); return; } - $contact = $r[0]; $new_contact = intval($_POST['suggest']); @@ -49,10 +45,10 @@ function fsuggest_post(App $a) VALUES ( %d, %d, '%s','%s','%s','%s','%s','%s')", intval(local_user()), intval($contact_id), - DBA::escape($r[0]['name']), - DBA::escape($r[0]['url']), - DBA::escape($r[0]['request']), - DBA::escape($r[0]['photo']), + DBA::escape($contact['name']), + DBA::escape($contact['url']), + DBA::escape($contact['request']), + DBA::escape($contact['photo']), DBA::escape($hash), DBA::escape(DateTimeFormat::utcNow()) ); @@ -61,7 +57,7 @@ function fsuggest_post(App $a) intval(local_user()) ); if (DBA::isResult($r)) { - $fsuggest_id = $r[0]['id']; + $fsuggest_id = $contact['id']; q("UPDATE `fsuggest` SET `note` = '%s' WHERE `id` = %d AND `uid` = %d", DBA::escape($note), intval($fsuggest_id), @@ -88,16 +84,11 @@ function fsuggest_content(App $a) $contact_id = intval($a->argv[1]); - $r = q( - "SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($contact_id), - intval(local_user()) - ); - if (! DBA::isResult($r)) { + $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user()]); + if (! DBA::isResult($contact)) { notice(L10n::t('Contact not found.') . EOL); return; } - $contact = $r[0]; $o = '

' . L10n::t('Suggest Friends') . '

'; diff --git a/mod/photos.php b/mod/photos.php index 2171309e8f..710a3873ee 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -409,9 +409,12 @@ function photos_post(App $a) } } - $photo = Photo::getPhotoForUser($page_owner_uid, $resource_id); + $photos_stmt = DBA::select('photo', [], ['resource-id' => $resource_id, 'uid' => $page_owner_uid], ['order' => ['scale' => true]]); - if (DBA::isResult($photo)) { + $photos = DBA::toArray($photos_stmt); + + if (DBA::isResult($photos)) { + $photo = $photos[0]; $ext = $phototypes[$photo['type']]; Photo::update( ['desc' => $desc, 'album' => $albname, 'allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny], @@ -422,16 +425,15 @@ function photos_post(App $a) if ($albname !== $origaname) { Photo::clearAlbumCache($page_owner_uid); } + /* Don't make the item visible if the only change was the album name */ + + $visibility = 0; + if ($photo['desc'] !== $desc || strlen($rawtags)) { + $visibility = 1; + } } - /* Don't make the item visible if the only change was the album name */ - - $visibility = 0; - if ($photo['desc'] !== $desc || strlen($rawtags)) { - $visibility = 1; - } - - if (!$item_id) { + if (DBA::isResult($photos) && !$item_id) { // Create item container $title = ''; $uri = Item::newURI($page_owner_uid); @@ -527,7 +529,7 @@ function photos_post(App $a) if ($tagcid) { $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($tagcid), - intval($profile_uid) + intval($page_owner_uid) ); } else { $newname = str_replace('_',' ',$name); @@ -598,7 +600,7 @@ function photos_post(App $a) Item::update($fields, $condition); $best = 0; - foreach ($p as $scales) { + foreach ($photos as $scales) { if (intval($scales['scale']) == 2) { $best = 2; break; @@ -646,13 +648,13 @@ function photos_post(App $a) $arr['object'] = '' . ACTIVITY_OBJ_PERSON . '' . $tagged[0] . '' . $tagged[1] . '/' . $tagged[0] . ''; $arr['object'] .= '' . XML::escape('' . "\n"); if ($tagged[3]) { - $arr['object'] .= XML::escape('' . "\n"); + $arr['object'] .= XML::escape('' . "\n"); } $arr['object'] .= '' . "\n"; $arr['target'] = '' . ACTIVITY_OBJ_IMAGE . '' . $photo['desc'] . '' . System::baseUrl() . '/photos/' . $owner_record['nickname'] . '/image/' . $photo['resource-id'] . ''; - $arr['target'] .= '' . XML::escape('' . "\n" . '') . ''; + $arr['target'] .= '' . XML::escape('' . "\n" . '') . ''; Item::insert($arr); } From e7be87df93895de47414a5a788cd6487adb98a29 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:24:11 -0500 Subject: [PATCH 166/728] Fix missing $ in front of variable names --- src/Protocol/OStatus.php | 2 +- src/Worker/TagUpdate.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 6860665fc2..551253e6a0 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1653,7 +1653,7 @@ class OStatus } if (!DBA::isResult($r)) { - $contact = owner; + $contact = $owner; } if (!isset($contact["poll"])) { diff --git a/src/Worker/TagUpdate.php b/src/Worker/TagUpdate.php index cccaed8e2b..213c26ac0a 100644 --- a/src/Worker/TagUpdate.php +++ b/src/Worker/TagUpdate.php @@ -31,7 +31,7 @@ class TagUpdate $messages = DBA::select('item', ['guid'], ['uid' => 0]); Logger::log('fetched messages: ' . DBA::numRows($messages)); - while ($message = DBA::fetch(messages)) { + while ($message = DBA::fetch($messages)) { DBA::update('item', ['global' => true], ['guid' => $message['guid']]); } From 9f75adf0152a3e61caa374b6aa7606499e18a73b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:24:42 -0500 Subject: [PATCH 167/728] Fix item retrieval logic in mod/display --- mod/display.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mod/display.php b/mod/display.php index 3922c83f35..7b95913ac1 100644 --- a/mod/display.php +++ b/mod/display.php @@ -79,10 +79,10 @@ function display_init(App $a) // Is it an item with uid=0? if (!DBA::isResult($item)) { - $item = Item::selectFirstForUser(local_user(), $fields, ['guid' => $a->argv[1], 'private' => [0, 2], 'uid' => 0]); + $item = Item::selectFirst($fields, ['guid' => $a->argv[1], 'private' => [0, 2], 'uid' => 0]); } } elseif (($a->argc == 3) && ($nick == 'feed-item')) { - $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $a->argv[2], 'private' => [0, 2], 'uid' => 0]); + $item = Item::selectFirst($fields, ['id' => $a->argv[2], 'private' => [0, 2], 'uid' => 0]); } if (!DBA::isResult($item)) { @@ -95,7 +95,7 @@ function display_init(App $a) } if ($item["id"] != $item["parent"]) { - $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $item["parent"]]); + $item = Item::selectFirstForUser($item_user, $fields, ['id' => $item["parent"]]); } $profiledata = display_fetchauthor($a, $item); From e95ad45de51fba3ede0b2c5a804cb76f4f4069a9 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:24:53 -0500 Subject: [PATCH 168/728] Fix logic in mod/hovercard --- mod/hovercard.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mod/hovercard.php b/mod/hovercard.php index 047502fc34..603c617ca4 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -135,8 +135,10 @@ function get_template_content($template, $root = '') { // We load the whole template system to get the filename. // Maybe we can do it a little bit smarter if I get time. - $t = Renderer::getMarkupTemplate($template, $root); - $filename = $t->filename; + $templateEngine = Renderer::getTemplateEngine(); + $template = $templateEngine->getTemplateFile($template, $root); + + $filename = $template->filename; // Get the content of the template file if (file_exists($filename)) { From abe60f0f9aa8c5a01469c05ca20c02767eb9e13b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:25:14 -0500 Subject: [PATCH 169/728] Fix call to Contact::content in mod/update_contact --- mod/update_contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/update_contact.php b/mod/update_contact.php index bf15afa863..1f96dab25b 100644 --- a/mod/update_contact.php +++ b/mod/update_contact.php @@ -14,7 +14,7 @@ function update_contact_content(App $a) echo "
"; if ($_GET["force"] == 1) { - $text = Contact::content($a, true); + $text = Contact::content(true); } else { $text = ''; } From 57ab8584866e6578bc30749a3d44320221602ed4 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:26:54 -0500 Subject: [PATCH 170/728] Fix calls to DBA::select missing parameters --- mod/network.php | 2 +- src/Model/Attach.php | 2 +- src/Model/Contact.php | 4 ++-- src/Model/Item.php | 2 +- src/Model/Photo.php | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mod/network.php b/mod/network.php index e05f9814a0..f7dbc14ede 100644 --- a/mod/network.php +++ b/mod/network.php @@ -449,7 +449,7 @@ function networkFlatView(App $a, $update = 0) $condition = ["`term` = ? AND `otype` = ? AND `type` = ? AND `uid` = ?", $file, TERM_OBJ_POST, TERM_FILE, local_user()]; $params = ['order' => ['tid' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]]; - $result = DBA::select('term', ['oid'], $condition); + $result = DBA::select('term', ['oid'], $condition, $params); $posts = []; while ($term = DBA::fetch($result)) { diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 9be77eca91..bfd5199bd5 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -50,7 +50,7 @@ class Attach extends BaseObject public static function select(array $fields = [], array $conditions = [], array $params = []) { if (empty($fields)) { - $selected = self::getFields(); + $fields = self::getFields(); } $r = DBA::select('attach', $fields, $conditions, $params); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 2b7aada795..a92b7777d3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -662,7 +662,7 @@ class Contact extends BaseObject { if (!isset($contact['url']) && !empty($contact['id'])) { $fields = ['id', 'url', 'archive', 'self', 'term-date']; - $contact = DBA::selectFirst('contact', [], ['id' => $contact['id']]); + $contact = DBA::selectFirst('contact', $fields, ['id' => $contact['id']]); if (!DBA::isResult($contact)) { return; } @@ -725,7 +725,7 @@ class Contact extends BaseObject if (!isset($contact['url']) && !empty($contact['id'])) { $fields = ['id', 'url', 'batch']; - $contact = DBA::selectFirst('contact', [], ['id' => $contact['id']]); + $contact = DBA::selectFirst('contact', $fields, ['id' => $contact['id']]); if (!DBA::isResult($contact)) { return; } diff --git a/src/Model/Item.php b/src/Model/Item.php index bc3d58c4a5..27ffb2480e 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2019,7 +2019,7 @@ class Item extends BaseObject $condition = ['id' => $itemid, 'uid' => 0, 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""], 'visible' => true, 'deleted' => false, 'moderated' => false, 'private' => false]; - $item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $itemid]); + $item = self::selectFirst(self::ITEM_FIELDLIST, $condition); if (!DBA::isResult($item)) { return; } diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 67ab217cd4..1cee2f633b 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -41,7 +41,7 @@ class Photo extends BaseObject public static function select(array $fields = [], array $conditions = [], array $params = []) { if (empty($fields)) { - $selected = self::getFields(); + $fields = self::getFields(); } $r = DBA::select("photo", $fields, $conditions, $params); From 78931afa6f54fc4895a83afde45d42ce363dfe59 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:27:28 -0500 Subject: [PATCH 171/728] Fix error message in Console\GlobalCommunityBlock --- src/Core/Console/GlobalCommunityBlock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/Console/GlobalCommunityBlock.php b/src/Core/Console/GlobalCommunityBlock.php index d11aa6cf86..d99d99ceea 100644 --- a/src/Core/Console/GlobalCommunityBlock.php +++ b/src/Core/Console/GlobalCommunityBlock.php @@ -62,7 +62,7 @@ HELP; $contact_id = Contact::getIdForURL($this->getArgument(0)); if (!$contact_id) { - throw new \RuntimeException(L10n::t('Could not find any contact entry for this URL (%s)', $nurl)); + throw new \RuntimeException(L10n::t('Could not find any contact entry for this URL (%s)', $this->getArgument(0))); } if(Contact::block($contact_id)) { $this->out(L10n::t('The contact has been blocked from the node')); From 28397fc5fc1ff1f53290e3e9ac118ab57e11dba6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:28:02 -0500 Subject: [PATCH 172/728] Fix method parameter type in Model\Attach --- src/Model/Attach.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Model/Attach.php b/src/Model/Attach.php index bfd5199bd5..bd4269b9e3 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -11,6 +11,7 @@ use Friendica\Core\System; use Friendica\Core\StorageManager; use Friendica\Database\DBA; use Friendica\Database\DBStructure; +use Friendica\Object\Image; use Friendica\Util\Security; use Friendica\Util\DateTimeFormat; use Friendica\Util\Mimetype; @@ -257,9 +258,9 @@ class Attach extends BaseObject * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @see \Friendica\Database\DBA::update */ - public static function update($fields, $conditions, $img = null, array $old_fields = []) + public static function update($fields, $conditions, Image $img = null, array $old_fields = []) { - if (!is_null($data)) { + if (!is_null($img)) { // get items to update $items = self::select(['backend-class','backend-ref'], $conditions); @@ -268,7 +269,7 @@ class Attach extends BaseObject if ($backend_class !== '') { $fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']); } else { - $fields['data'] = $data; + $fields['data'] = $img->asString(); } } } From 722284ca8e369fbefdc0ba9cf68e7073abb3e069 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:28:24 -0500 Subject: [PATCH 173/728] Fix unused $kw variable in Protocol\Diaspora --- src/Protocol/Diaspora.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index beaf42c6c1..e9d3be805f 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -4133,7 +4133,7 @@ class Diaspora if ($profile['pub_keywords']) { $kw = str_replace(',', ' ', $profile['pub_keywords']); $kw = str_replace(' ', ' ', $kw); - $arr = explode(' ', $profile['pub_keywords']); + $arr = explode(' ', $kw); if (count($arr)) { for ($x = 0; $x < 5; $x ++) { if (!empty($arr[$x])) { From 25b8628762ad68ae784e1d60d1af74201f086265 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:28:40 -0500 Subject: [PATCH 174/728] Fix missing new in throw calls in Core\StorageManager --- src/Core/StorageManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 932b4bb400..415ee522b6 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -118,7 +118,7 @@ class StorageManager public static function move($dest, $tables = null) { if (is_null($dest) || empty($dest)) { - throw Exception('Can\'t move to NULL storage backend'); + throw new \Exception('Can\'t move to NULL storage backend'); } if (is_null($tables)) { From 3c50a11ff193dddba8390a9fabacdc37377de19b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 7 Jan 2019 13:28:55 -0500 Subject: [PATCH 175/728] Fix wrong operators in Model\Item and Model\Contact --- src/Model/Contact.php | 2 +- src/Model/Item.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index a92b7777d3..222a262dfa 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1753,7 +1753,7 @@ class Contact extends BaseObject } } elseif (Config::get('system', 'dfrn_only') && ($ret['network'] != Protocol::DFRN)) { $result['message'] = L10n::t('This site is not configured to allow communications with other networks.') . EOL; - $result['message'] != L10n::t('No compatible communication protocols or feeds were discovered.') . EOL; + $result['message'] .= L10n::t('No compatible communication protocols or feeds were discovered.') . EOL; return $result; } diff --git a/src/Model/Item.php b/src/Model/Item.php index 27ffb2480e..300e80650d 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2476,7 +2476,7 @@ class Item extends BaseObject $id = 0; if ($uid == 0) { - $uid == local_user(); + $uid = local_user(); } // Does the given user have this item? From 182bffcc6b8481e002a33b65653557012fd6ba67 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 9 Jan 2019 16:24:21 -0500 Subject: [PATCH 176/728] Fix wrong git-fu in mod/directory --- mod/directory.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/mod/directory.php b/mod/directory.php index 8ca8d8158e..6ef3134517 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -113,8 +113,6 @@ function directory_content(App $a) $entries = []; - while ($rr = DBA::fetch($r)) { - while ($rr = DBA::fetch($r)) { $itemurl = (($rr['addr'] != "") ? $rr['addr'] : $rr['profile_url']); From 41edcd10287bd382fb8ce91dce26a5bc4a34f35e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 12 Jan 2019 14:52:36 -0500 Subject: [PATCH 177/728] Fix bad rebase in Model/Contact --- src/Model/Contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 222a262dfa..cf90406e24 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -66,7 +66,7 @@ class Contact extends BaseObject */ /** - * @name account types + * Account types * * TYPE_UNKNOWN - the account has been imported from gcontact where this is the default type value * From aa0d46426422b6828c20eb4d2621131ab17ab332 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 12 Jan 2019 16:05:16 -0500 Subject: [PATCH 178/728] Revert unwarranted selectFirstForUser change in mod/display --- mod/display.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/display.php b/mod/display.php index 7b95913ac1..2e931e0687 100644 --- a/mod/display.php +++ b/mod/display.php @@ -79,10 +79,10 @@ function display_init(App $a) // Is it an item with uid=0? if (!DBA::isResult($item)) { - $item = Item::selectFirst($fields, ['guid' => $a->argv[1], 'private' => [0, 2], 'uid' => 0]); + $item = Item::selectFirstForUser(local_user(), $fields, ['guid' => $a->argv[1], 'private' => [0, 2], 'uid' => 0]); } } elseif (($a->argc == 3) && ($nick == 'feed-item')) { - $item = Item::selectFirst($fields, ['id' => $a->argv[2], 'private' => [0, 2], 'uid' => 0]); + $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $a->argv[2], 'private' => [0, 2], 'uid' => 0]); } if (!DBA::isResult($item)) { From d1c1c772fd936e3f766d9d1b98dc9e0cf8734d06 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 14 Jan 2019 08:45:13 -0500 Subject: [PATCH 179/728] Fix missing use statement in Content\Nav --- src/Content/Nav.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 6bee0633f3..b72f4dc043 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -11,8 +11,8 @@ use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; -use Friendica\Model\Contact; use Friendica\Model\Profile; +use Friendica\Model\User; class Nav { From 504945f9df85187ff2a5baa00f563236c476d3bf Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 14 Jan 2019 08:45:37 -0500 Subject: [PATCH 180/728] Improve page flags doc block in Model\User --- src/Model/User.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Model/User.php b/src/Model/User.php index c33092a0fc..6b110f6afb 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -29,13 +29,13 @@ use LightOpenID; class User { /** - * @name page/profile types + * Page/profile types * - * PAGE_NORMAL is a typical personal profile account - * PAGE_SOAPBOX automatically approves all friend requests as Contact::SHARING, (readonly) - * PAGE_COMMUNITY automatically approves all friend requests as Contact::SHARING, but with + * PAGE_FLAGS_NORMAL is a typical personal profile account + * PAGE_FLAGS_SOAPBOX automatically approves all friend requests as Contact::SHARING, (readonly) + * PAGE_FLAGS_COMMUNITY automatically approves all friend requests as Contact::SHARING, but with * write access to wall and comments (no email and not included in page owner's ACL lists) - * PAGE_FREELOVE automatically approves all friend requests as full friends (Contact::FRIEND). + * PAGE_FLAGS_FREELOVE automatically approves all friend requests as full friends (Contact::FRIEND). * * @{ */ From ce177f22c867d4b9dc904914d6f80a5c7b988453 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:36:01 -0500 Subject: [PATCH 181/728] Fix doc blocks and return value type --- include/api.php | 2 +- include/conversation.php | 2 +- include/enotify.php | 21 ++++++++++----------- include/text.php | 2 +- src/Object/Thread.php | 2 +- src/Util/Emailer.php | 2 +- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/api.php b/include/api.php index d1d54f144c..3c11ea4640 100644 --- a/include/api.php +++ b/include/api.php @@ -528,7 +528,7 @@ function api_unique_id_to_nurl($id) * * @param App $a App * @param int|string $contact_id Contact ID or URL - * @return array + * @return array|bool * @throws BadRequestException * @throws ImagickException * @throws InternalServerErrorException diff --git a/include/conversation.php b/include/conversation.php index 6ee7309ad1..e6c787915f 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1447,7 +1447,7 @@ function sort_thr_created_rev(array $a, array $b) * * @param array $a * @param array $b - * @return int|lt + * @return int */ function sort_thr_commented(array $a, array $b) { diff --git a/include/enotify.php b/include/enotify.php index 800158d9ae..f725511f5e 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -25,7 +25,7 @@ use Friendica\Util\Strings; * link, subject, body, to_name, to_email, source_name, * source_link, activity, preamble, notify_flags, * language, show_in_notification_page - * @return bool|object + * @return bool * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function notification($params) @@ -43,7 +43,7 @@ function notification($params) if (!DBA::isResult($user)) { Logger::log('Unknown user ' . $params['uid']); - return; + return false; } $params['notify_flags'] = defaults($params, 'notify_flags', $user['notify-flags']); @@ -79,7 +79,7 @@ function notification($params) // There is no need to create notifications for forum accounts if (!DBA::isResult($user) || in_array($user["page-flags"], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { - return; + return false; } $nickname = $user["nickname"]; } else { @@ -146,7 +146,7 @@ function notification($params) if (DBA::isResult($thread) && $thread['ignored']) { Logger::log('Thread ' . $parent_id . ' will be ignored', Logger::DEBUG); L10n::popLang(); - return; + return false; } // Check to see if there was already a tag notify or comment notify for this post. @@ -155,7 +155,7 @@ function notification($params) 'link' => $params['link'], 'uid' => $params['uid']]; if (DBA::exists('notify', $condition)) { L10n::popLang(); - return; + return false; } // if it's a post figure out who's post it is. @@ -522,7 +522,7 @@ function notification($params) if ($datarray['abort']) { L10n::popLang(); - return False; + return false; } // create notification entry in DB @@ -671,8 +671,7 @@ function notification($params) L10n::popLang(); // use the Emailer class to send the message - return Emailer::send( - [ + return Emailer::send([ 'uid' => $params['uid'], 'fromName' => $sender_name, 'fromEmail' => $sender_email, @@ -681,8 +680,8 @@ function notification($params) 'messageSubject' => $datarray['subject'], 'htmlVersion' => $email_html_body, 'textVersion' => $email_text_body, - 'additionalMailHeader' => $datarray['headers']] - ); + 'additionalMailHeader' => $datarray['headers'] + ]); } L10n::popLang(); @@ -778,7 +777,7 @@ function check_item_notification($itemid, $uid, $defaulttype = "") { $condition = ['id' => $itemid, 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]]; $item = Item::selectFirst($fields, $condition); if (!DBA::isResult($item) || in_array($item['author-id'], $contacts)) { - return; + return false; } // Generate the notification array diff --git a/include/text.php b/include/text.php index 0b8bcacba5..a96a3a1e58 100644 --- a/include/text.php +++ b/include/text.php @@ -235,7 +235,7 @@ function get_cats_and_terms($item) /** * return number of bytes in size (K, M, G) * @param string $size_str - * @return number + * @return int */ function return_bytes($size_str) { switch (substr ($size_str, -1)) { diff --git a/src/Object/Thread.php b/src/Object/Thread.php index c5795819a4..89ed5a9408 100644 --- a/src/Object/Thread.php +++ b/src/Object/Thread.php @@ -170,7 +170,7 @@ class Thread extends BaseObject * * We should find a way to avoid using those arguments (at least most of them) * - * @param object $conv_responses data + * @param array $conv_responses data * * @return mixed The data requested on success * false on failure diff --git a/src/Util/Emailer.php b/src/Util/Emailer.php index cccf8c2fab..6a19e8e458 100644 --- a/src/Util/Emailer.php +++ b/src/Util/Emailer.php @@ -29,7 +29,7 @@ class Emailer * additionalMailHeader additions to the SMTP mail header * optional uid user id of the destination user * - * @return object + * @return bool * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function send($params) From b161bd1dfa8522c742b2f8d1d34cbad2d27466bc Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:37:05 -0500 Subject: [PATCH 182/728] Improve get_responses() prototype --- include/conversation.php | 2 +- mod/photos.php | 2 +- src/Object/Post.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index e6c787915f..682bc14555 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1464,7 +1464,7 @@ function render_location_dummy(array $item) { } } -function get_responses(array $conv_responses, array $response_verbs, $ob, array $item) { +function get_responses(array $conv_responses, array $response_verbs, array $item, Post $ob = null) { $ret = []; foreach ($response_verbs as $v) { $ret[$v] = []; diff --git a/mod/photos.php b/mod/photos.php index 710a3873ee..137e0adb56 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -1564,7 +1564,7 @@ function photos_content(App $a) } $response_verbs = ['like']; $response_verbs[] = 'dislike'; - $responses = get_responses($conv_responses, $response_verbs, '', $link_item); + $responses = get_responses($conv_responses, $response_verbs, $link_item); $paginate = $pager->renderFull($total); } diff --git a/src/Object/Post.php b/src/Object/Post.php index 2d52f4244a..c9e5cddb69 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -250,7 +250,7 @@ class Post extends BaseObject } } - $responses = get_responses($conv_responses, $response_verbs, $this, $item); + $responses = get_responses($conv_responses, $response_verbs, $item, $this); foreach ($response_verbs as $value => $verbs) { $responses[$verbs]['output'] = !empty($conv_responses[$verbs][$item['uri']]) ? format_like($conv_responses[$verbs][$item['uri']], $conv_responses[$verbs][$item['uri'] . '-l'], $verbs, $item['uri']) : ''; From 6f7ec1dc0c7aa9ce313c9e00eaec5711e5839541 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:37:43 -0500 Subject: [PATCH 183/728] Remove unused consume_feed() parameters --- include/items.php | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/include/items.php b/include/items.php index 52d37d621c..88eec1dc48 100644 --- a/include/items.php +++ b/include/items.php @@ -247,30 +247,21 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) * @param array $importer * @param array $contact * @param $hub - * @param int $datedir - * @param int $pass * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ -function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0, $pass = 0) +function consume_feed($xml, array $importer, array $contact, &$hub) { if ($contact['network'] === Protocol::OSTATUS) { - if ($pass < 2) { - // Test - remove before flight - //$tempfile = tempnam(get_temppath(), "ostatus2"); - //file_put_contents($tempfile, $xml); - Logger::log("Consume OStatus messages ", Logger::DEBUG); - OStatus::import($xml, $importer, $contact, $hub); - } + Logger::log("Consume OStatus messages ", Logger::DEBUG); + OStatus::import($xml, $importer, $contact, $hub); return; } if ($contact['network'] === Protocol::FEED) { - if ($pass < 2) { - Logger::log("Consume feeds", Logger::DEBUG); - Feed::import($xml, $importer, $contact, $hub); - } + Logger::log("Consume feeds", Logger::DEBUG); + Feed::import($xml, $importer, $contact, $hub); return; } From 1467a02576cd636f121f3e1ae73db7812d511d10 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:38:01 -0500 Subject: [PATCH 184/728] Fix namespace usage in include/enotify --- include/enotify.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/enotify.php b/include/enotify.php index f725511f5e..58e1a75f00 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -11,8 +11,8 @@ use Friendica\Core\Logger; use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; -use Friendica\Model\Contact; use Friendica\Model\Item; +use Friendica\Model\User; use Friendica\Util\DateTimeFormat; use Friendica\Util\Emailer; use Friendica\Util\Strings; From 04b742a97da4803c6448db2a6a74d55f3cb9df86 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:38:12 -0500 Subject: [PATCH 185/728] Fix variable type in include/text --- include/text.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/text.php b/include/text.php index a96a3a1e58..c4249f86c4 100644 --- a/include/text.php +++ b/include/text.php @@ -122,7 +122,7 @@ function qp($s) { */ function redir_private_images($a, &$item) { - $matches = false; + $matches = []; $cnt = preg_match_all('|\[img\](http[^\[]*?/photo/[a-fA-F0-9]+?(-[0-9]\.[\w]+?)?)\[\/img\]|', $item['body'], $matches, PREG_SET_ORDER); if ($cnt) { foreach ($matches as $mtch) { @@ -187,7 +187,7 @@ function get_cats_and_terms($item) $categories = []; $folders = []; - $matches = false; + $matches = []; $first = true; $cnt = preg_match_all('/<(.*?)>/', $item['file'], $matches, PREG_SET_ORDER); if ($cnt) { @@ -208,7 +208,7 @@ function get_cats_and_terms($item) } if (local_user() == $item['uid']) { - $matches = false; + $matches = []; $first = true; $cnt = preg_match_all('/\[(.*?)\]/', $item['file'], $matches, PREG_SET_ORDER); if ($cnt) { From 9b27d049dcef53a021d3750bb86f18441310cb38 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:38:54 -0500 Subject: [PATCH 186/728] Add missing break statements in include/conversation - Remove bad variable initialization in format_like() --- include/conversation.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 682bc14555..d7e3d54808 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -210,8 +210,8 @@ function localize_item(&$item) foreach ($links->link as $l) { $atts = $l->attributes(); switch ($atts['rel']) { - case "alternate": $Blink = $atts['href']; - case "photo": $Bphoto = $atts['href']; + case "alternate": $Blink = $atts['href']; break; + case "photo": $Bphoto = $atts['href']; break; } } @@ -1044,7 +1044,6 @@ function format_like($cnt, array $arr, $type, $id) { } } - $phrase = ''; if ($cnt > 1) { $total = count($arr); if ($total < MAX_LIKERS) { From 592592525b564200c621304ef73c926b90664c34 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:40:14 -0500 Subject: [PATCH 187/728] Various fixes in include/api - Fix unused condition in api_status_show() - Fix wrong operator orders in api_get_entitites() - Fix wrong variable usage in api_account_update_profile_image() --- include/api.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/api.php b/include/api.php index 3c11ea4640..4452ebfb92 100644 --- a/include/api.php +++ b/include/api.php @@ -1320,12 +1320,6 @@ function api_status_show($type, $item_id = 0) Logger::log('api_status_show: user_info: '.print_r($user_info, true), Logger::DEBUG); - if ($type == "raw") { - $privacy_sql = "AND NOT `private`"; - } else { - $privacy_sql = ""; - } - if (!empty($item_id)) { // Get the item with the given id $condition = ['id' => $item_id]; @@ -1334,6 +1328,11 @@ function api_status_show($type, $item_id = 0) $condition = ['owner-id' => $user_info['pid'], 'uid' => api_user(), 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]]; } + + if ($type == "raw") { + $condition['private'] = false; + } + $lastwall = Item::selectFirst(Item::ITEM_FIELDLIST, $condition, ['order' => ['id' => true]]); if (DBA::isResult($lastwall)) { @@ -2834,7 +2833,7 @@ function api_get_entitities(&$text, $bbcode) $entities["media"][] = [ "id" => $start+1, - "id_str" => (string)$start+1, + "id_str" => (string) ($start + 1), "indices" => [$start, $start+strlen($url)], "media_url" => Strings::normaliseLink($media_url), "media_url_https" => $media_url, @@ -4597,8 +4596,8 @@ function api_account_update_profile_image($type) $condition = ["`profile` AND `resource-id` != ? AND `uid` = ?", $data['photo']['id'], api_user()]; Photo::update(['profile' => false], $condition); } else { - $fields = ['photo' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype, - 'thumb' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype]; + $fields = ['photo' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $fileext, + 'thumb' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $fileext]; DBA::update('profile', $fields, ['id' => $_REQUEST['profile'], 'uid' => api_user()]); } From 38b14d90a84482a4d78ab6b1cf4db233e4435198 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 11:41:50 -0500 Subject: [PATCH 188/728] Welcome 2019.03-dev! --- VERSION | 2 +- boot.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index ca54cd8e0c..2b5b640bc3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2019.01 +2019.03-dev diff --git a/boot.php b/boot.php index 7b4c72f19c..1766e801ed 100644 --- a/boot.php +++ b/boot.php @@ -35,7 +35,7 @@ use Friendica\Util\DateTimeFormat; define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_CODENAME', 'The Tazmans Flax-lily'); -define('FRIENDICA_VERSION', '2019.01'); +define('FRIENDICA_VERSION', '2019.03-dev'); define('DFRN_PROTOCOL_VERSION', '2.23'); define('NEW_UPDATE_ROUTINE_VERSION', 1170); From eabe192efcd788cb85c3a51db1a792a26e64c6a8 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Mon, 21 Jan 2019 21:13:13 +0100 Subject: [PATCH 189/728] bugfix Contact.php - there is no column 'deleted' in the 'profile' table --- src/Module/Contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 8beffb483c..59f2627e33 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -198,7 +198,7 @@ class Contact extends BaseModule $profile_id = intval(defaults($_POST, 'profile-assign', 0)); if ($profile_id) { - if (!DBA::exists('profile', ['id' => $profile_id, 'uid' => local_user(), 'deleted' => false])) { + if (!DBA::exists('profile', ['id' => $profile_id, 'uid' => local_user()])) { notice(L10n::t('Could not locate selected profile.') . EOL); return; } From aa3532cd3b5b95aaad82683c39ccab31f4d2533f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:02:51 -0500 Subject: [PATCH 190/728] Fix wrong class constant in Model\APContact --- src/Model/APContact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index c606e3107e..3d196c46de 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -201,7 +201,7 @@ class APContact extends BaseObject if (is_int($contact_type)) { $contact_fields['contact-type'] = $contact_type; - if ($contact_fields['contact-type'] != Contact::ACCOUNT_TYPE_COMMUNITY) { + if ($contact_fields['contact-type'] != User::ACCOUNT_TYPE_COMMUNITY) { // Resetting the 'forum' and 'prv' field when it isn't a forum $contact_fields['forum'] = false; $contact_fields['prv'] = false; From 604262a70e4d56e91db3a43049f2c0196cf9fdee Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 23:15:03 -0500 Subject: [PATCH 191/728] Extract title determination from OStatus::entryHeader logic --- src/Protocol/OStatus.php | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 551253e6a0..acb49efcc7 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1693,7 +1693,7 @@ class OStatus Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG); } - self::entryHeader($doc, $entry, $owner, $item, $toplevel); + $entry = self::entryHeader($doc, $owner, $item, $toplevel); $condition = ['uid' => $owner["uid"], 'guid' => $repeated_guid, 'private' => false, 'network' => [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]]; @@ -1758,7 +1758,7 @@ class OStatus Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG); } - self::entryHeader($doc, $entry, $owner, $item, $toplevel); + $entry = self::entryHeader($doc, $owner, $item, $toplevel); $verb = NAMESPACE_ACTIVITY_SCHEMA."favorite"; self::entryContent($doc, $entry, $item, $owner, "Favorite", $verb, false); @@ -1879,7 +1879,7 @@ class OStatus $item["body"] = sprintf($message, $owner["nick"], $contact["nick"]); - self::entryHeader($doc, $entry, $owner, $item, $toplevel); + $entry = self::entryHeader($doc, $owner, $item, $toplevel); self::entryContent($doc, $entry, $item, $owner, $title); @@ -1910,7 +1910,17 @@ class OStatus 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 (!$toplevel) { + if (!empty($item['title'])) { + $title = BBCode::convert($item['title'], false, 7); + } else { + $title = sprintf("New note by %s", $owner["nick"]); + } + } else { + $title = sprintf("New comment by %s", $owner["nick"]); + } + + $entry = self::entryHeader($doc, $owner, $item, $toplevel); XML::addElement($doc, $entry, "activity:object-type", ACTIVITY_OBJ_NOTE); @@ -1925,25 +1935,18 @@ class OStatus * @brief Adds a header element to the XML document * * @param DOMDocument $doc XML document - * @param object $entry The entry element where the elements are added * @param array $owner Contact data of the poster * @param array $item * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * - * @return string The title for the element + * @return \DOMElement The entry element where the elements are added * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function entryHeader(DOMDocument $doc, &$entry, array $owner, array $item, $toplevel) + private static function entryHeader(DOMDocument $doc, array $owner, array $item, $toplevel) { - /// @todo Check if this title stuff is really needed (I guess not) if (!$toplevel) { $entry = $doc->createElement("entry"); - if (!empty($item['title'])) { - $title = BBCode::convert($item['title'], false, 7); - } else { - $title = sprintf("New note by %s", $owner["nick"]); - } if ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) { $contact = self::contactEntry($item['author-link'], $owner); @@ -1964,10 +1967,9 @@ class OStatus $author = self::addAuthor($doc, $owner); $entry->appendChild($author); - - $title = sprintf("New comment by %s", $owner["nick"]); } - return $title; + + return $entry; } /** From 282bc019943b22b1004c0d37d976116c43e5763b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 01:30:03 -0500 Subject: [PATCH 192/728] Fix using wrong uid for APDelivery in Worker\Notifier --- src/Worker/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index d991e6a4e9..02e69064c5 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -587,7 +587,7 @@ class Notifier Logger::log('Deliver ' . $target_item['id'] .' to ' . $inbox .' via ActivityPub', Logger::DEBUG); Worker::add(['priority' => $priority, 'created' => $created, 'dont_fork' => true], - 'APDelivery', $cmd, $target_item['id'], $inbox, $target_item['contact-uid']); + 'APDelivery', $cmd, $target_item['id'], $inbox, $target_item['contact-uid'] ?: $target_item['uid']); } return count($inboxes); From 31fedf359dfc7fe3c6de9118d8498ad845ba0c81 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 22 Jan 2019 10:36:42 +0100 Subject: [PATCH 193/728] restore THEMEPATH variable in mod/view --- mod/view.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mod/view.php b/mod/view.php index c59eea2982..640606bce1 100644 --- a/mod/view.php +++ b/mod/view.php @@ -13,6 +13,7 @@ function view_init(App $a) if ($a->argc == 4){ $theme = $a->argv[2]; + $THEMEPATH = "view/theme/$theme"; if(file_exists("view/theme/$theme/style.php")) require_once("view/theme/$theme/style.php"); } From 169e9b0fc5601164d2f9cc2aabd07ee70aeba68d Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 22 Jan 2019 13:44:49 +0100 Subject: [PATCH 194/728] add comment about the PATH --- mod/view.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mod/view.php b/mod/view.php index 640606bce1..f4f1692cb6 100644 --- a/mod/view.php +++ b/mod/view.php @@ -13,6 +13,7 @@ function view_init(App $a) if ($a->argc == 4){ $theme = $a->argv[2]; + // set the path for later use in the theme styles $THEMEPATH = "view/theme/$theme"; if(file_exists("view/theme/$theme/style.php")) require_once("view/theme/$theme/style.php"); From 66284a17a760be6c8dd701a3088bbc7b8cfb7c30 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 22 Jan 2019 14:02:56 +0100 Subject: [PATCH 195/728] unescaping the HTML in the hint --- view/templates/admin/federation.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/templates/admin/federation.tpl b/view/templates/admin/federation.tpl index 5f89d4f7d0..9850a37414 100644 --- a/view/templates/admin/federation.tpl +++ b/view/templates/admin/federation.tpl @@ -6,7 +6,7 @@

{{$intro}}

{{if not $autoactive}} -

{{$hint}}

+

{{$hint nofilter}}

{{/if}}

{{$legendtext}}

From 5d4bafb116eee6e1791a189803c85de8a72f86de Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 08:31:39 -0500 Subject: [PATCH 196/728] Fix two additional uses of uid in Worker\Notifier --- src/Worker/Notifier.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 02e69064c5..9e5430e8fa 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -562,8 +562,10 @@ class Notifier { $inboxes = []; + $uid = $target_item['contact-uid'] ?: $target_item['uid']; + if ($target_item['origin']) { - $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $target_item['contact-uid']); + $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $uid); Logger::log('Origin item ' . $target_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::log('Remote item ' . $target_item['id'] . ' with URL ' . $target_item['uri'] . ' is no AP post. It will not be distributed.', Logger::DEBUG); @@ -571,7 +573,7 @@ class Notifier } elseif ($parent['origin']) { // Remote items are transmitted via the personal inboxes. // Doing so ensures that the dedicated receiver will get the message. - $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($parent, $target_item['contact-uid'], true, $target_item['id']); + $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($parent, $uid, true, $target_item['id']); Logger::log('Remote item ' . $target_item['id'] . ' with URL ' . $target_item['uri'] . ' will be distributed.', Logger::DEBUG); } @@ -587,7 +589,7 @@ class Notifier Logger::log('Deliver ' . $target_item['id'] .' to ' . $inbox .' via ActivityPub', Logger::DEBUG); Worker::add(['priority' => $priority, 'created' => $created, 'dont_fork' => true], - 'APDelivery', $cmd, $target_item['id'], $inbox, $target_item['contact-uid'] ?: $target_item['uid']); + 'APDelivery', $cmd, $target_item['id'], $inbox, $uid); } return count($inboxes); From 0cc1a07cfa98d5e6fdd273148aae2c0de76c3407 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 08:53:53 -0500 Subject: [PATCH 197/728] Fix default value of contact parameter of OStatus::import in mod/salmon --- mod/salmon.php | 2 +- src/Protocol/OStatus.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mod/salmon.php b/mod/salmon.php index 536a4516ce..84d2942d53 100644 --- a/mod/salmon.php +++ b/mod/salmon.php @@ -184,7 +184,7 @@ function salmon_post(App $a, $xml = '') { // Placeholder for hub discovery. $hub = ''; - $contact_rec = ((DBA::isResult($r)) ? $r[0] : null); + $contact_rec = ((DBA::isResult($r)) ? $r[0] : []); OStatus::import($data, $importer, $contact_rec, $hub); diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index acb49efcc7..b1cc4f4020 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -74,7 +74,7 @@ class OStatus $author["contact-id"] = $contact["id"]; - $contact = null; + $contact = []; /* This here would be better, but we would get problems with contacts from the statusnet addon @@ -231,7 +231,7 @@ class OStatus GContact::link($gcid, $contact["uid"], $contact["id"]); } elseif ($contact["network"] != Protocol::DFRN) { - $contact = null; + $contact = []; } return $author; From 0ccb6afdb5ff764a02eb2e15e736583b4baf6868 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 27 Dec 2018 20:50:55 -0500 Subject: [PATCH 198/728] Add Register module in src/ - Update REGISTER_* constants definition - Update register template variable name --- boot.php | 6 +- src/Module/Register.php | 311 +++++++++++++++++++++++++ view/templates/register.tpl | 2 +- view/theme/frio/templates/register.tpl | 2 +- 4 files changed, 316 insertions(+), 5 deletions(-) create mode 100644 src/Module/Register.php diff --git a/boot.php b/boot.php index 1766e801ed..a1e5f44f89 100644 --- a/boot.php +++ b/boot.php @@ -103,9 +103,9 @@ define('SSL_POLICY_SELFSIGN', 2); * Registration policies * @{ */ -define('REGISTER_CLOSED', 0); -define('REGISTER_APPROVE', 1); -define('REGISTER_OPEN', 2); +define('REGISTER_CLOSED', \Friendica\Module\Register::CLOSED); +define('REGISTER_APPROVE', \Friendica\Module\Register::APPROVE); +define('REGISTER_OPEN', \Friendica\Module\Register::OPEN); /** * @} */ diff --git a/src/Module/Register.php b/src/Module/Register.php new file mode 100644 index 0000000000..6744a0a5f3 --- /dev/null +++ b/src/Module/Register.php @@ -0,0 +1,311 @@ + + */ +abstract class Register extends BaseModule +{ + const CLOSED = 0; + const APPROVE = 1; + const OPEN = 2; + + /** + * @brief Module GET method to display any content + * + * Extend this method if the module is supposed to return any display + * through a GET request. It can be an HTML page through templating or a + * XML feed or a JSON output. + * + * @return string + */ + public static function content() + { + // logged in users can register others (people/pages/groups) + // even with closed registrations, unless specifically prohibited by site policy. + // 'block_extended_register' blocks all registrations, period. + $block = Config::get('system', 'block_extended_register'); + + if (local_user() && ($block)) { + notice('Permission denied.' . EOL); + return ''; + } + + if ((!local_user()) && (intval(Config::get('config', 'register_policy')) === self::CLOSED)) { + notice('Permission denied.' . EOL); + return ''; + } + + $max_dailies = intval(Config::get('system', 'max_daily_registrations')); + if ($max_dailies) { + $count = DBA::count('user', ['`register_date` > UTC_TIMESTAMP - INTERVAL 1 day']); + if ($count >= $max_dailies) { + 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 ''; + } + } + + if (!empty($_SESSION['theme'])) { + unset($_SESSION['theme']); + } + if (!empty($_SESSION['mobile-theme'])) { + unset($_SESSION['mobile-theme']); + } + + $username = defaults($_REQUEST, 'username' , ''); + $email = defaults($_REQUEST, 'email' , ''); + $openid_url = defaults($_REQUEST, 'openid_url', ''); + $nickname = defaults($_REQUEST, 'nickname' , ''); + $photo = defaults($_REQUEST, 'photo' , ''); + $invite_id = defaults($_REQUEST, 'invite_id' , ''); + + if (Config::get('system', 'no_openid')) { + $fillwith = ''; + $fillext = ''; + $oidlabel = ''; + } else { + $fillwith = L10n::t('You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking "Register".'); + $fillext = L10n::t('If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'); + $oidlabel = L10n::t('Your OpenID (optional): '); + } + + if (Config::get('system', 'publish_all')) { + $profile_publish = ''; + } else { + $publish_tpl = Renderer::getMarkupTemplate('profile_publish.tpl'); + $profile_publish = Renderer::replaceMacros($publish_tpl, [ + '$instance' => 'reg', + '$pubdesc' => L10n::t('Include your profile in member directory?'), + '$yes_selected' => '', + '$no_selected' => ' checked="checked"', + '$str_yes' => L10n::t('Yes'), + '$str_no' => L10n::t('No'), + ]); + } + + $ask_password = ! DBA::count('contact'); + + $tpl = Renderer::getMarkupTemplate('register.tpl'); + + $arr = ['template' => $tpl]; + + Hook::callAll('register_form', $arr); + + $tpl = $arr['template']; + + $tos = new Tos(); + + $o = Renderer::replaceMacros($tpl, [ + '$invitations' => Config::get('system', 'invitation_only'), + '$permonly' => intval(Config::get('config', 'register_policy')) === self::APPROVE, + '$permonlybox' => ['permonlybox', L10n::t('Note for the admin'), '', L10n::t('Leave a message for the admin, why you want to join this node')], + '$invite_desc' => L10n::t('Membership on this site is by invitation only.'), + '$invite_label' => L10n::t('Your invitation code: '), + '$invite_id' => $invite_id, + '$regtitle' => L10n::t('Registration'), + '$registertext' => BBCode::convert(Config::get('config', 'register_text', '')), + '$fillwith' => $fillwith, + '$fillext' => $fillext, + '$oidlabel' => $oidlabel, + '$openid' => $openid_url, + '$namelabel' => L10n::t('Your Full Name (e.g. Joe Smith, real or real-looking): '), + '$addrlabel' => L10n::t('Your Email Address: (Initial information will be send there, so this has to be an existing address.)'), + '$ask_password' => $ask_password, + '$password1' => ['password1', L10n::t('New Password:'), '', L10n::t('Leave empty for an auto generated password.')], + '$password2' => ['confirm', L10n::t('Confirm:'), '', ''], + '$nickdesc' => L10n::t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be "nickname@%s".', self::getApp()->getHostName()), + '$nicklabel' => L10n::t('Choose a nickname: '), + '$photo' => $photo, + '$publish' => $profile_publish, + '$regbutt' => L10n::t('Register'), + '$username' => $username, + '$email' => $email, + '$nickname' => $nickname, + '$sitename' => self::getApp()->getHostName(), + '$importh' => L10n::t('Import'), + '$importt' => L10n::t('Import your profile to this friendica instance'), + '$showtoslink' => Config::get('system', 'tosdisplay'), + '$tostext' => L10n::t('Terms of Service'), + '$showprivstatement' => Config::get('system', 'tosprivstatement'), + '$privstatement'=> $tos->privacy_complete, + '$baseurl' => System::baseurl(), + '$form_security_token' => BaseModule::getFormSecurityToken('register'), + '$explicit_content' => Config::get('system', 'explicit_content', false), + '$explicit_content_note' => L10n::t('Note: This node explicitly contains adult content') + ]); + + return $o; + } + + /** + * @brief Module POST method to process submitted data + * + * Extend this method if the module is supposed to process POST requests. + * Doesn't display any content + */ + public static function post() + { + BaseModule::checkFormSecurityTokenRedirectOnError('/register', 'register'); + + $a = self::getApp(); + + $arr = ['post' => $_POST]; + Hook::callAll('register_post', $arr); + + $max_dailies = intval(Config::get('system', 'max_daily_registrations')); + if ($max_dailies) { + $count = DBA::count('user', ['`register_date` > UTC_TIMESTAMP - INTERVAL 1 day']); + if ($count >= $max_dailies) { + return; + } + } + + switch (Config::get('config', 'register_policy')) { + case self::OPEN: + $blocked = 0; + $verified = 1; + break; + + case self::APPROVE: + $blocked = 1; + $verified = 0; + break; + + case self::CLOSED: + default: + if (empty($_SESSION['authenticated']) && empty($_SESSION['administrator'])) { + \notice(L10n::t('Permission denied.') . EOL); + return; + } + $blocked = 1; + $verified = 0; + break; + } + + $netpublish = !empty($_POST['profile_publish_reg']); + + $arr = $_POST; + + $arr['blocked'] = $blocked; + $arr['verified'] = $verified; + $arr['language'] = L10n::detectLanguage(); + + try { + $result = Model\User::create($arr); + } catch (\Exception $e) { + \notice($e->getMessage()); + return; + } + + $user = $result['user']; + + if ($netpublish && intval(Config::get('config', 'register_policy')) !== self::APPROVE) { + $url = $a->getBaseUrl() . '/profile/' . $user['nickname']; + Worker::add(PRIORITY_LOW, 'Directory', $url); + } + + $using_invites = Config::get('system', 'invitation_only'); + $num_invites = Config::get('system', 'number_invites'); + $invite_id = (!empty($_POST['invite_id']) ? Strings::escapeTags(trim($_POST['invite_id'])) : ''); + + if (intval(Config::get('config', 'register_policy')) === self::OPEN) { + if ($using_invites && $invite_id) { + Model\Register::deleteByHash($invite_id); + PConfig::set($user['uid'], 'system', 'invites_remaining', $num_invites); + } + + // Only send a password mail when the password wasn't manually provided + if (empty($_POST['password1']) || empty($_POST['confirm'])) { + $res = Model\User::sendRegisterOpenEmail( + $user, + Config::get('config', 'sitename'), + $a->getBaseUrl(), + $result['password'] + ); + + if ($res) { + \info(L10n::t('Registration successful. Please check your email for further instructions.') . EOL); + $a->internalRedirect(); + } else { + \notice( + L10n::t('Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login.', + $user['email'], + $result['password']) + . EOL + ); + } + } else { + \info(L10n::t('Registration successful.') . EOL); + $a->internalRedirect(); + } + } elseif (intval(Config::get('config', 'register_policy')) === self::APPROVE) { + if (!strlen(Config::get('config', 'admin_email'))) { + \notice(L10n::t('Your registration can not be processed.') . EOL); + $a->internalRedirect(); + } + + Model\Register::createForApproval($user['uid'], Config::get('system', 'language'), $_POST['permonlybox']); + + // invite system + if ($using_invites && $invite_id) { + Model\Register::deleteByHash($invite_id); + PConfig::set($user['uid'], 'system', 'invites_remaining', $num_invites); + } + + // send email to admins + $admins_stmt = DBA::select( + 'user', + ['uid', 'language', 'email'], + ['email' => explode(',', str_replace(' ', '', Config::get('config', 'admin_email')))] + ); + + // send notification to admins + while ($admin = DBA::fetch($admins_stmt)) { + \notification([ + 'type' => NOTIFY_SYSTEM, + 'event' => 'SYSTEM_REGISTER_REQUEST', + 'source_name' => $user['username'], + 'source_mail' => $user['email'], + 'source_nick' => $user['nickname'], + 'source_link' => $a->getBaseUrl() . '/admin/users/', + 'link' => $a->getBaseUrl() . '/admin/users/', + 'source_photo' => $a->getBaseUrl() . '/photo/avatar/' . $user['uid'] . '.jpg', + 'to_email' => $admin['email'], + 'uid' => $admin['uid'], + 'language' => defaults($admin, 'language', 'en'), + 'show_in_notification_page' => false + ]); + } + DBA::close($admins_stmt); + + // send notification to the user, that the registration is pending + Model\User::sendRegisterPendingEmail( + $user, + Config::get('config', 'sitename'), + $a->getBaseURL(), + $result['password'] + ); + + \info(L10n::t('Your registration is pending approval by the site owner.') . EOL); + $a->internalRedirect(); + } + + return; + } +} diff --git a/view/templates/register.tpl b/view/templates/register.tpl index 4da865d4cf..456fadaab8 100644 --- a/view/templates/register.tpl +++ b/view/templates/register.tpl @@ -41,7 +41,7 @@
-{{if $passwords}} +{{if $ask_password}} {{include file="field_password.tpl" field=$password1}} {{include file="field_password.tpl" field=$password2}} {{/if}} diff --git a/view/theme/frio/templates/register.tpl b/view/theme/frio/templates/register.tpl index feb8035fa3..4819c5ee81 100644 --- a/view/theme/frio/templates/register.tpl +++ b/view/theme/frio/templates/register.tpl @@ -42,7 +42,7 @@
- {{if $passwords}} + {{if $ask_password}} {{include file="field_password.tpl" field=$password1}} {{include file="field_password.tpl" field=$password2}} {{/if}} From cef6757c92bff264adfdc3c89c9721252cad510d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 27 Dec 2018 20:56:15 -0500 Subject: [PATCH 199/728] Replace REGISTER_* constants by Module\Register::* ones --- config/local-sample.config.php | 2 +- config/settings.config.php | 9 ++-- include/api.php | 2 +- mod/admin.php | 7 +-- mod/bookmarklet.php | 2 +- mod/friendica.php | 14 +++-- mod/home.php | 2 +- mod/invite.php | 5 +- mod/nodeinfo.php | 2 +- mod/openid.php | 2 +- mod/ping.php | 2 +- mod/regmod.php | 2 +- mod/statistics_json.php | 6 ++- mod/uimport.php | 4 +- mods/local.config.vagrant.php | 2 +- src/Content/Nav.php | 2 +- src/Module/Login.php | 2 +- src/Protocol/PortableContact.php | 51 ++++++++++++------- .../AutomaticInstallationConsoleTest.php | 2 +- view/templates/local.config.tpl | 2 +- 20 files changed, 75 insertions(+), 47 deletions(-) diff --git a/config/local-sample.config.php b/config/local-sample.config.php index 996c27a66d..9b977ff53f 100644 --- a/config/local-sample.config.php +++ b/config/local-sample.config.php @@ -34,7 +34,7 @@ return [ 'config' => [ 'admin_email' => '', 'sitename' => 'Friendica Social Network', - 'register_policy' => REGISTER_OPEN, + 'register_policy' => \Friendica\Module\Register::OPEN, 'register_text' => '', ], 'system' => [ diff --git a/config/settings.config.php b/config/settings.config.php index 2893b3f201..6e3fa6a894 100644 --- a/config/settings.config.php +++ b/config/settings.config.php @@ -16,10 +16,11 @@ return [ 'info' => '', // register_policy (Constant) - // Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED. - // Be certain to create your own personal account before setting REGISTER_CLOSED. - // REGISTER_APPROVE requires you set system.admin_email to the email address of an already registered person who can authorize and/or approve/deny the request. - 'register_policy' => REGISTER_CLOSED, + // Your choices are OPEN, APPROVE, or CLOSED. + // Be certain to create your own personal account before setting CLOSED. + // APPROVE requires you set system.admin_email to the email address of an + // already registered person who can authorize and/or approve/deny the request. + 'register_policy' => \Friendica\Module\Register::CLOSED, // register_text (String) // Will be displayed prominently on the registration page. diff --git a/include/api.php b/include/api.php index 4452ebfb92..052d32b17b 100644 --- a/include/api.php +++ b/include/api.php @@ -3557,7 +3557,7 @@ function api_statusnet_config($type) $server = $a->getHostName(); $logo = System::baseUrl() . '/images/friendica-64.png'; $email = Config::get('config', 'admin_email'); - $closed = intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED ? 'true' : 'false'; + $closed = intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED ? 'true' : 'false'; $private = Config::get('system', 'block_public') ? 'true' : 'false'; $textlimit = (string) Config::get('config', 'api_import_size', Config::get('config', 'max_import_size', 200000)); $ssl = Config::get('system', 'have_ssl') ? 'true' : 'false'; diff --git a/mod/admin.php b/mod/admin.php index e5dbf12f29..97d7a8bfd6 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -26,6 +26,7 @@ use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\Register; use Friendica\Model\User; +use Friendica\Module; use Friendica\Module\Login; use Friendica\Module\Tos; use Friendica\Util\Arrays; @@ -1509,9 +1510,9 @@ function admin_page_site(App $a) /* Register policy */ $register_choices = [ - REGISTER_CLOSED => L10n::t("Closed"), - REGISTER_APPROVE => L10n::t("Requires approval"), - REGISTER_OPEN => L10n::t("Open") + Module\Register::CLOSED => L10n::t("Closed"), + Module\Register::APPROVE => L10n::t("Requires approval"), + Module\Register::OPEN => L10n::t("Open") ]; $ssl_choices = [ diff --git a/mod/bookmarklet.php b/mod/bookmarklet.php index be3e1fd336..1c4d191c4f 100644 --- a/mod/bookmarklet.php +++ b/mod/bookmarklet.php @@ -20,7 +20,7 @@ function bookmarklet_content(App $a) { if (!local_user()) { $o = '

' . L10n::t('Login') . '

'; - $o .= Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED ? false : true); + $o .= Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED ? false : true); return $o; } diff --git a/mod/friendica.php b/mod/friendica.php index 686e2e804b..2b51ac8580 100644 --- a/mod/friendica.php +++ b/mod/friendica.php @@ -10,16 +10,22 @@ use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\Module\Register; function friendica_init(App $a) { if (!empty($a->argv[1]) && ($a->argv[1] == "json")) { - $register_policies = ['REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN']; + $register_policies = [ + Register::CLOSED => 'REGISTER_CLOSED', + Register::APPROVE => 'REGISTER_APPROVE', + Register::OPEN => 'REGISTER_OPEN' + ]; - $register_policy = $register_policies[intval(Config::get('config', 'register_policy'))]; - - if ($register_policy == 'REGISTER_OPEN' && Config::get('config', 'invitation_only')) { + $register_policy_int = intval(Config::get('config', 'register_policy')); + if ($register_policy_int === Register::OPEN && Config::get('config', 'invitation_only')) { $register_policy = 'REGISTER_INVITATION'; + } else { + $register_policy = $register_policies[$register_policy_int]; } $sql_extra = ''; diff --git a/mod/home.php b/mod/home.php index 34f6d43683..9f18101202 100644 --- a/mod/home.php +++ b/mod/home.php @@ -48,7 +48,7 @@ function home_content(App $a) { } } - $login = Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED ? 0 : 1); + $login = Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED ? 0 : 1); $content = ''; Hook::callAll("home_content",$content); diff --git a/mod/invite.php b/mod/invite.php index 3b1667a79a..e8901d0710 100644 --- a/mod/invite.php +++ b/mod/invite.php @@ -13,6 +13,7 @@ use Friendica\Core\L10n; use Friendica\Core\PConfig; use Friendica\Core\Renderer; use Friendica\Core\System; +use Friendica\Module\Register; use Friendica\Protocol\Email; use Friendica\Util\Strings; @@ -125,14 +126,14 @@ function invite_content(App $a) { $dirloc = Config::get('system', 'directory'); if (strlen($dirloc)) { - if (intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED) { + if (intval(Config::get('config', 'register_policy')) === Register::CLOSED) { $linktxt = L10n::t('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.', $dirloc . '/servers'); } else { $linktxt = L10n::t('To accept this invitation, please visit and register at %s or any other public Friendica website.', System::baseUrl()) . "\r\n" . "\r\n" . L10n::t('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.', $dirloc . '/servers'); } } else { // there is no global directory URL defined - if (intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED) { + if (intval(Config::get('config', 'register_policy')) === Register::CLOSED) { $o = L10n::t('Our apologies. This system is not currently configured to connect with other public sites or invite members.'); return $o; } else { diff --git a/mod/nodeinfo.php b/mod/nodeinfo.php index 5c25b6e551..39f430f92f 100644 --- a/mod/nodeinfo.php +++ b/mod/nodeinfo.php @@ -59,7 +59,7 @@ function nodeinfo_init(App $a) { $nodeinfo['usage'] = []; - $nodeinfo['openRegistrations'] = intval(Config::get('config', 'register_policy')) !== REGISTER_CLOSED; + $nodeinfo['openRegistrations'] = intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED; $nodeinfo['metadata'] = ['nodeName' => Config::get('config', 'sitename')]; diff --git a/mod/openid.php b/mod/openid.php index d20258fa96..7300c686b4 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -63,7 +63,7 @@ function openid_content(App $a) { // Successful OpenID login - but we can't match it to an existing account. // New registration? - if (intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED) { + if (intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED) { notice(L10n::t('Account not found and OpenID registration is not permitted on this site.') . EOL); $a->internalRedirect(); } diff --git a/mod/ping.php b/mod/ping.php index 8b50b78c83..b89cb9246c 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -188,7 +188,7 @@ function ping_init(App $a) ); $mail_count = count($mails); - if (intval(Config::get('config', 'register_policy')) === REGISTER_APPROVE && is_site_admin()) { + if (intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::APPROVE && is_site_admin()) { $regs = Friendica\Model\Register::getPending(); if (DBA::isResult($regs)) { diff --git a/mod/regmod.php b/mod/regmod.php index e03f28e85b..6cf4c8836c 100644 --- a/mod/regmod.php +++ b/mod/regmod.php @@ -82,7 +82,7 @@ function regmod_content(App $a) { if (!local_user()) { info(L10n::t('Please login.') . EOL); - return Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED ? 0 : 1); + return Login::form($a->query_string, intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED ? 0 : 1); } if (!is_site_admin() || !empty($_SESSION['submanage'])) { diff --git a/mod/statistics_json.php b/mod/statistics_json.php index 833b2e9a8e..a8d3c8a5f1 100644 --- a/mod/statistics_json.php +++ b/mod/statistics_json.php @@ -16,11 +16,15 @@ function statistics_json_init(App $a) { System::httpExit(404); } + $registration_open = + intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED + && ! Config::get('config', 'invitation_only'); + $statistics = [ "name" => Config::get('config', 'sitename'), "network" => FRIENDICA_PLATFORM, "version" => FRIENDICA_VERSION . "-" . DB_UPDATE_VERSION, - "registrations_open" => intval(Config::get('config', 'register_policy')) !== REGISTER_CLOSED, + "registrations_open" => $registration_open, "total_users" => Config::get('nodeinfo', 'total_users'), "active_users_halfyear" => Config::get('nodeinfo', 'active_users_halfyear'), "active_users_monthly" => Config::get('nodeinfo', 'active_users_monthly'), diff --git a/mod/uimport.php b/mod/uimport.php index dfeab8a2f6..22a3161559 100644 --- a/mod/uimport.php +++ b/mod/uimport.php @@ -13,7 +13,7 @@ use Friendica\Core\Renderer; function uimport_post(App $a) { - if ((Config::get('config', 'register_policy') != REGISTER_OPEN) && !is_site_admin()) { + if ((Config::get('config', 'register_policy') != \Friendica\Module\Register::OPEN) && !is_site_admin()) { notice(L10n::t('Permission denied.') . EOL); return; } @@ -26,7 +26,7 @@ function uimport_post(App $a) function uimport_content(App $a) { - if ((Config::get('config', 'register_policy') != REGISTER_OPEN) && !is_site_admin()) { + if ((Config::get('config', 'register_policy') != \Friendica\Module\Register::OPEN) && !is_site_admin()) { notice(L10n::t('User imports on closed servers can only be done by an administrator.') . EOL); return; } diff --git a/mods/local.config.vagrant.php b/mods/local.config.vagrant.php index 099500200d..a9b95d02d7 100644 --- a/mods/local.config.vagrant.php +++ b/mods/local.config.vagrant.php @@ -31,7 +31,7 @@ return [ 'config' => [ 'admin_email' => 'admin@friendica.local', 'sitename' => 'Friendica Social Network', - 'register_policy' => REGISTER_OPEN, + 'register_policy' => \Friendica\Module\Register::OPEN, 'register_text' => '', ], 'system' => [ diff --git a/src/Content/Nav.php b/src/Content/Nav.php index b72f4dc043..1eae2a3e3b 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -180,7 +180,7 @@ class Nav $nav['home'] = [$homelink, L10n::t('Home'), '', L10n::t('Home Page')]; } - if (intval(Config::get('config', 'register_policy')) === REGISTER_OPEN && !local_user() && !remote_user()) { + if (intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::OPEN && !local_user() && !remote_user()) { $nav['register'] = ['register', L10n::t('Register'), '', L10n::t('Create an account')]; } diff --git a/src/Module/Login.php b/src/Module/Login.php index 96b0c428fa..b0897f2d76 100644 --- a/src/Module/Login.php +++ b/src/Module/Login.php @@ -43,7 +43,7 @@ class Login extends BaseModule $a->internalRedirect(); } - return self::form(defaults($_SESSION, 'return_path', null), intval(Config::get('config', 'register_policy')) !== REGISTER_CLOSED); + return self::form(defaults($_SESSION, 'return_path', null), intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED); } public static function post() diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index 4b8b6fff63..0bc17d3dce 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -20,6 +20,7 @@ use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Model\GContact; use Friendica\Model\Profile; +use Friendica\Module\Register; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; @@ -705,10 +706,10 @@ class PortableContact $server = []; - $server['register_policy'] = REGISTER_CLOSED; + $server['register_policy'] = Register::CLOSED; if (is_bool($nodeinfo['openRegistrations']) && $nodeinfo['openRegistrations']) { - $server['register_policy'] = REGISTER_OPEN; + $server['register_policy'] = Register::OPEN; } if (is_array($nodeinfo['software'])) { @@ -789,10 +790,10 @@ class PortableContact $server = []; - $server['register_policy'] = REGISTER_CLOSED; + $server['register_policy'] = Register::CLOSED; if (is_bool($nodeinfo['openRegistrations']) && $nodeinfo['openRegistrations']) { - $server['register_policy'] = REGISTER_OPEN; + $server['register_policy'] = Register::OPEN; } if (is_array($nodeinfo['software'])) { @@ -1192,16 +1193,16 @@ class PortableContact if (!empty($data['register_policy'])) { switch ($data['register_policy']) { case "REGISTER_OPEN": - $register_policy = REGISTER_OPEN; + $register_policy = Register::OPEN; break; case "REGISTER_APPROVE": - $register_policy = REGISTER_APPROVE; + $register_policy = Register::APPROVE; break; case "REGISTER_CLOSED": default: - $register_policy = REGISTER_CLOSED; + $register_policy = Register::CLOSED; break; } } @@ -1267,11 +1268,11 @@ class PortableContact } if (!$closed && !$private and $inviteonly) { - $register_policy = REGISTER_APPROVE; + $register_policy = Register::APPROVE; } elseif (!$closed && !$private) { - $register_policy = REGISTER_OPEN; + $register_policy = Register::OPEN; } else { - $register_policy = REGISTER_CLOSED; + $register_policy = Register::CLOSED; } } } @@ -1305,9 +1306,9 @@ class PortableContact } if (!empty($data['registrations_open']) && $data['registrations_open']) { - $register_policy = REGISTER_OPEN; + $register_policy = Register::OPEN; } else { - $register_policy = REGISTER_CLOSED; + $register_policy = Register::CLOSED; } } } @@ -1367,13 +1368,27 @@ class PortableContact } $info = defaults($data, 'info', ''); - $register_policy = defaults($data, 'register_policy', REGISTER_CLOSED); - if (in_array($register_policy, ['REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN'])) { - $register_policy = constant($register_policy); - } else { - Logger::log("Register policy '$register_policy' from $server_url is invalid."); - $register_policy = REGISTER_CLOSED; // set a default value + + $register_policy = defaults($data, 'register_policy', 'REGISTER_CLOSED'); + switch ($register_policy) { + case 'REGISTER_OPEN': + $register_policy = Register::OPEN; + break; + + case 'REGISTER_APPROVE': + $register_policy = Register::APPROVE; + break; + + default: + Logger::log("Register policy '$register_policy' from $server_url is invalid."); + // Defaulting to closed + + case 'REGISTER_CLOSED': + case 'REGISTER_INVITATION': + $register_policy = Register::CLOSED; + break; } + $platform = defaults($data, 'platform', ''); } } diff --git a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php index 813277ebbd..361608d375 100644 --- a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php +++ b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php @@ -209,7 +209,7 @@ return [ 'config' => [ 'admin_email' => '', 'sitename' => 'Friendica Social Network', - 'register_policy' => REGISTER_OPEN, + 'register_policy' => \Friendica\Module\Register::OPEN, 'register_text' => '', ], 'system' => [ diff --git a/view/templates/local.config.tpl b/view/templates/local.config.tpl index 54ff279f3c..c4c4afba4d 100644 --- a/view/templates/local.config.tpl +++ b/view/templates/local.config.tpl @@ -24,7 +24,7 @@ return [ 'php_path' => '{{$phpath}}', 'admin_email' => '{{$adminmail}}', 'sitename' => 'Friendica Social Network', - 'register_policy' => REGISTER_OPEN, + 'register_policy' => \Friendica\Module\Register::OPEN, 'max_import_size' => 200000, ], 'system' => [ From a1b773e149cb8154fd06a412aca35c8a504ce820 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 27 Dec 2018 20:58:45 -0500 Subject: [PATCH 200/728] Cleanup register artifacts - Remove mod/register - Remove REGISTER_* constants --- boot.php | 13 --- mod/register.php | 286 ----------------------------------------------- 2 files changed, 299 deletions(-) delete mode 100644 mod/register.php diff --git a/boot.php b/boot.php index a1e5f44f89..7dc99bbe88 100644 --- a/boot.php +++ b/boot.php @@ -97,19 +97,6 @@ define('SSL_POLICY_FULL', 1); define('SSL_POLICY_SELFSIGN', 2); /* @}*/ -/** - * @name Register - * - * Registration policies - * @{ - */ -define('REGISTER_CLOSED', \Friendica\Module\Register::CLOSED); -define('REGISTER_APPROVE', \Friendica\Module\Register::APPROVE); -define('REGISTER_OPEN', \Friendica\Module\Register::OPEN); -/** - * @} -*/ - /** * @name CP * diff --git a/mod/register.php b/mod/register.php deleted file mode 100644 index e69315a33a..0000000000 --- a/mod/register.php +++ /dev/null @@ -1,286 +0,0 @@ - $_POST]; - Hook::callAll('register_post', $arr); - - $max_dailies = intval(Config::get('system', 'max_daily_registrations')); - 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) { - return; - } - } - - switch (Config::get('config', 'register_policy')) { - case REGISTER_OPEN: - $blocked = 0; - $verified = 1; - break; - - case REGISTER_APPROVE: - $blocked = 1; - $verified = 0; - break; - - default: - case REGISTER_CLOSED: - if (empty($_SESSION['authenticated']) && empty($_SESSION['administrator'])) { - notice(L10n::t('Permission denied.') . EOL); - return; - } - $blocked = 1; - $verified = 0; - break; - } - - $netpublish = !empty($_POST['profile_publish_reg']); - - $arr = $_POST; - - $arr['blocked'] = $blocked; - $arr['verified'] = $verified; - $arr['language'] = L10n::detectLanguage(); - - try { - $result = Model\User::create($arr); - } catch (Exception $e) { - notice($e->getMessage()); - return; - } - - $user = $result['user']; - - if ($netpublish && intval(Config::get('config', 'register_policy')) !== REGISTER_APPROVE) { - $url = $a->getBaseUrl() . '/profile/' . $user['nickname']; - Worker::add(PRIORITY_LOW, "Directory", $url); - } - - $using_invites = Config::get('system', 'invitation_only'); - $num_invites = Config::get('system', 'number_invites'); - $invite_id = (!empty($_POST['invite_id']) ? Strings::escapeTags(trim($_POST['invite_id'])) : ''); - - if (intval(Config::get('config', 'register_policy')) === REGISTER_OPEN) { - if ($using_invites && $invite_id) { - Model\Register::deleteByHash($invite_id); - PConfig::set($user['uid'], 'system', 'invites_remaining', $num_invites); - } - - // Only send a password mail when the password wasn't manually provided - if (empty($_POST['password1']) || empty($_POST['confirm'])) { - $res = Model\User::sendRegisterOpenEmail( - $user, - Config::get('config', 'sitename'), - $a->getBaseUrl(), - $result['password'] - ); - - if ($res) { - info(L10n::t('Registration successful. Please check your email for further instructions.') . EOL); - $a->internalRedirect(); - } else { - notice( - L10n::t('Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login.', - $user['email'], - $result['password']) - . EOL - ); - } - } else { - info(L10n::t('Registration successful.') . EOL); - $a->internalRedirect(); - } - } elseif (intval(Config::get('config', 'register_policy')) === REGISTER_APPROVE) { - if (!strlen(Config::get('config', 'admin_email'))) { - notice(L10n::t('Your registration can not be processed.') . EOL); - $a->internalRedirect(); - } - - Model\Register::createForApproval($user['uid'], Config::get('system', 'language'), $_POST['permonlybox']); - - // invite system - if ($using_invites && $invite_id) { - Model\Register::deleteByHash($invite_id); - PConfig::set($user['uid'], 'system', 'invites_remaining', $num_invites); - } - - // send email to admins - $admin_mail_list = "'" . implode("','", array_map(['Friendica\Database\DBA', 'escape'], explode(",", str_replace(" ", "", Config::get('config', 'admin_email'))))) . "'"; - $adminlist = q("SELECT uid, language, email FROM user WHERE email IN (%s)", - $admin_mail_list - ); - - // send notification to admins - foreach ($adminlist as $admin) { - notification([ - 'type' => NOTIFY_SYSTEM, - 'event' => 'SYSTEM_REGISTER_REQUEST', - 'source_name' => $user['username'], - 'source_mail' => $user['email'], - 'source_nick' => $user['nickname'], - 'source_link' => $a->getBaseUrl() . "/admin/users/", - 'link' => $a->getBaseUrl() . "/admin/users/", - 'source_photo' => $a->getBaseUrl() . "/photo/avatar/" . $user['uid'] . ".jpg", - 'to_email' => $admin['email'], - 'uid' => $admin['uid'], - 'language' => $admin['language'] ? $admin['language'] : 'en', - 'show_in_notification_page' => false - ]); - } - // send notification to the user, that the registration is pending - Model\User::sendRegisterPendingEmail( - $user, - Config::get('config', 'sitename'), - $a->getBaseURL(), - $result['password'] - ); - - info(L10n::t('Your registration is pending approval by the site owner.') . EOL); - $a->internalRedirect(); - } - - return; -} - -function register_content(App $a) -{ - // logged in users can register others (people/pages/groups) - // even with closed registrations, unless specifically prohibited by site policy. - // 'block_extended_register' blocks all registrations, period. - $block = Config::get('system', 'block_extended_register'); - - if (local_user() && ($block)) { - notice("Permission denied." . EOL); - return; - } - - if ((!local_user()) && (intval(Config::get('config', 'register_policy')) === REGISTER_CLOSED)) { - notice("Permission denied." . EOL); - return; - } - - $max_dailies = intval(Config::get('system', 'max_daily_registrations')); - 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::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; - } - } - - if (!empty($_SESSION['theme'])) { - unset($_SESSION['theme']); - } - if (!empty($_SESSION['mobile-theme'])) { - unset($_SESSION['mobile-theme']); - } - - - $username = defaults($_REQUEST, 'username' , ''); - $email = defaults($_REQUEST, 'email' , ''); - $openid_url = defaults($_REQUEST, 'openid_url', ''); - $nickname = defaults($_REQUEST, 'nickname' , ''); - $photo = defaults($_REQUEST, 'photo' , ''); - $invite_id = defaults($_REQUEST, 'invite_id' , ''); - - $noid = Config::get('system', 'no_openid'); - - if ($noid) { - $fillwith = ''; - $fillext = ''; - $oidlabel = ''; - } else { - $fillwith = L10n::t("You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."); - $fillext = L10n::t('If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'); - $oidlabel = L10n::t("Your OpenID \x28optional\x29: "); - } - - if (Config::get('system', 'publish_all')) { - $profile_publish = ''; - } else { - $publish_tpl = Renderer::getMarkupTemplate("profile_publish.tpl"); - $profile_publish = Renderer::replaceMacros($publish_tpl, [ - '$instance' => 'reg', - '$pubdesc' => L10n::t('Include your profile in member directory?'), - '$yes_selected' => '', - '$no_selected' => ' checked="checked"', - '$str_yes' => L10n::t('Yes'), - '$str_no' => L10n::t('No'), - ]); - } - - $r = q("SELECT COUNT(*) AS `contacts` FROM `contact`"); - $passwords = !$r[0]["contacts"]; - - $tpl = Renderer::getMarkupTemplate("register.tpl"); - - $arr = ['template' => $tpl]; - - Hook::callAll('register_form', $arr); - - $tpl = $arr['template']; - - $tos = new Tos(); - - $o = Renderer::replaceMacros($tpl, [ - '$invitations' => Config::get('system', 'invitation_only'), - '$permonly' => intval(Config::get('config', 'register_policy')) === REGISTER_APPROVE, - '$permonlybox' => ['permonlybox', L10n::t('Note for the admin'), '', L10n::t('Leave a message for the admin, why you want to join this node')], - '$invite_desc' => L10n::t('Membership on this site is by invitation only.'), - '$invite_label' => L10n::t('Your invitation code: '), - '$invite_id' => $invite_id, - '$regtitle' => L10n::t('Registration'), - '$registertext' => BBCode::convert(Config::get('config', 'register_text', '')), - '$fillwith' => $fillwith, - '$fillext' => $fillext, - '$oidlabel' => $oidlabel, - '$openid' => $openid_url, - '$namelabel' => L10n::t('Your Full Name ' . "\x28" . 'e.g. Joe Smith, real or real-looking' . "\x29" . ': '), - '$addrlabel' => L10n::t("Your Email Address: \x28Initial information will be send there, so this has to be an existing address.\x29"), - '$passwords' => $passwords, - '$password1' => ['password1', L10n::t('New Password:'), '', L10n::t('Leave empty for an auto generated password.')], - '$password2' => ['confirm', L10n::t('Confirm:'), '', ''], - '$nickdesc' => L10n::t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'nickname@%s\'.', $a->getHostName()), - '$nicklabel' => L10n::t('Choose a nickname: '), - '$photo' => $photo, - '$publish' => $profile_publish, - '$regbutt' => L10n::t('Register'), - '$username' => $username, - '$email' => $email, - '$nickname' => $nickname, - '$sitename' => $a->getHostName(), - '$importh' => L10n::t('Import'), - '$importt' => L10n::t('Import your profile to this friendica instance'), - '$showtoslink' => Config::get('system', 'tosdisplay'), - '$tostext' => L10n::t('Terms of Service'), - '$showprivstatement' => Config::get('system', 'tosprivstatement'), - '$privstatement' => $tos->privacy_complete, - '$baseurl' => System::baseurl(), - '$form_security_token' => BaseModule::getFormSecurityToken("register"), - '$explicit_content' => Config::get('system', 'explicit_content', false), - '$explicit_content_note' => L10n::t('Note: This node explicitly contains adult content') - ]); - return $o; -} From 724c4fb94d81f25e91c855831f3b64c1d4624659 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 13 Jan 2019 18:44:53 -0500 Subject: [PATCH 201/728] Fix output of /friendica/json for invite only and approval registration policy --- mod/friendica.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/friendica.php b/mod/friendica.php index 2b51ac8580..d10deb2e88 100644 --- a/mod/friendica.php +++ b/mod/friendica.php @@ -22,7 +22,7 @@ function friendica_init(App $a) ]; $register_policy_int = intval(Config::get('config', 'register_policy')); - if ($register_policy_int === Register::OPEN && Config::get('config', 'invitation_only')) { + if ($register_policy_int !== Register::CLOSED && Config::get('config', 'invitation_only')) { $register_policy = 'REGISTER_INVITATION'; } else { $register_policy = $register_policies[$register_policy_int]; From 7ff1b19cc012ab8c764634298989f0fca20094bc Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 17:11:29 -0500 Subject: [PATCH 202/728] Restore display of delivery status --- view/theme/frio/templates/wall_thread.tpl | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index 8d357960fe..85e12b808d 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -202,7 +202,17 @@ as the value of $top_child_total (this is done at the end of this file)
- + + + + + + + {{if $item.owner_self}} + • + {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} + {{/if}} +
{{if $item.location}} @@ -239,7 +249,14 @@ as the value of $top_child_total (this is done at the end of this file)
{{$item.name}} - {{$item.ago}} {{if $item.location}} — ({{$item.location nofilter}}){{/if}} + + {{$item.ago}} + {{if $item.location}} — ({{$item.location nofilter}}){{/if}} + {{if $item.owner_self}} + • + {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} + {{/if}} +
From 1ee1d7ef4e12849cd3ebc4fd09d95e4e3768dc94 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 23 Jan 2019 00:02:00 -0500 Subject: [PATCH 203/728] Add new PostUpdate function to initialize delivery data --- src/Database/PostUpdate.php | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index c40bfc98e7..acafea900c 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -34,6 +34,9 @@ class PostUpdate if (!self::update1281()) { return false; } + if (!self::update1297()) { + return false; + } return true; } @@ -377,4 +380,40 @@ class PostUpdate return false; } + + /** + * Set the delivery queue count to a negative value for all items preceding the feature. + * + * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ + private static function update1297() + { + // Was the script completed? + if (Config::get('system', 'post_update_version') >= 1297) { + return true; + } + + $max_item_delivery_data = DBA::selectFirst('item-delivery-data', ['iid'], ['queue_count > 0 OR queue_done > 0'], ['order' => ['iid']]); + $max_iid = $max_item_delivery_data['iid']; + + Logger::info('Start update1297 with max iid: ' . $max_iid); + + $condition = ['`queue_count` = 0 AND `iid` < ?', $max_iid]; + + DBA::update('item-delivery-data', ['queue_count' => -1], $condition); + + if (DBA::errorNo() != 0) { + Logger::error('Database error ' . DBA::errorNo() . ':' . DBA::errorMessage()); + return false; + } + + Logger::info('Processed rows: ' . DBA::affectedRows()); + + Config::set('system', 'post_update_version', 1297); + + Logger::info('Done'); + + return true; + } } From e2d32caa7857c5a8ca7fc694452cae844adad365 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 23 Jan 2019 00:05:53 -0500 Subject: [PATCH 204/728] Update delivery count display - Hide display when item is preceding the feature - Wrap the display in its own span - Remove delivery bullet from wall_thread.tpl - [frio] Make delivery icon fainter --- view/templates/sub/delivery_count.tpl | 21 +++++++++----- view/theme/frio/css/style.css | 1 + .../frio/templates/sub/delivery_count.tpl | 29 +++++++++++-------- view/theme/frio/templates/wall_thread.tpl | 3 -- .../vier/templates/sub/delivery_count.tpl | 29 +++++++++++-------- view/theme/vier/templates/wall_thread.tpl | 1 - 6 files changed, 48 insertions(+), 36 deletions(-) diff --git a/view/templates/sub/delivery_count.tpl b/view/templates/sub/delivery_count.tpl index d10eda639b..b487be8847 100644 --- a/view/templates/sub/delivery_count.tpl +++ b/view/templates/sub/delivery_count.tpl @@ -2,12 +2,17 @@ Please don't use this template as is, this is a placeholder that needs to be overriden with specific icons to avoid taking too much visual space *}} -{{if $delivery.queue_count == 0}} - {{$delivery.notifier_pending|escape}} -{{elseif $delivery.queue_done == 0}} - {{$delivery.delivery_pending|escape}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} -{{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} - {{$delivery.delivery_underway|escape}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} -{{else}} - {{$delivery.delivery_almost|escape}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} +{{if $delivery.queue_count >= -1 && $delivery.queue_count !== '' && $delivery.queue_count !== null}} + + • + {{if $delivery.queue_count == 0}} + {{$delivery.notifier_pending}} + {{elseif $delivery.queue_done == 0}} + {{$delivery.delivery_pending}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} + {{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} + {{$delivery.delivery_underway}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} + {{else}} + {{$delivery.delivery_almost}} {{$item.delivery.queue_done}}/{{$item.delivery.queue_count}} + {{/if}} + {{/if}} diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index cfb404f9fe..896892531d 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -2094,6 +2094,7 @@ ul.dropdown-menu li:hover { /* Media Classes */ .media .time, .media .shared-time, +.media .delivery, .media .location, .media .location a { font-size: 11px; diff --git a/view/theme/frio/templates/sub/delivery_count.tpl b/view/theme/frio/templates/sub/delivery_count.tpl index 05d1d171c7..ee9e411cc4 100644 --- a/view/theme/frio/templates/sub/delivery_count.tpl +++ b/view/theme/frio/templates/sub/delivery_count.tpl @@ -1,13 +1,18 @@ -{{if $delivery.queue_count == 0}} - - {{$delivery.notifier_pending|escape}} -{{elseif $delivery.queue_done == 0}} - - {{$delivery.delivery_pending|escape}} -{{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} - - {{$delivery.delivery_underway|escape}} -{{else}} - - {{$delivery.delivery_almost|escape}} +{{if $delivery.queue_count >= -1 && $delivery.queue_count !== '' && $delivery.queue_count !== null}} + + • + {{if $delivery.queue_count == 0}} + + {{$delivery.notifier_pending}} + {{elseif $delivery.queue_done == 0}} + + {{$delivery.delivery_pending}} + {{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} + + {{$delivery.delivery_underway}} + {{else}} + + {{$delivery.delivery_almost}} + {{/if}} + {{/if}} diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index 85e12b808d..12e419f8a5 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -209,7 +209,6 @@ as the value of $top_child_total (this is done at the end of this file) {{if $item.owner_self}} - • {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} {{/if}} @@ -233,7 +232,6 @@ as the value of $top_child_total (this is done at the end of this file) {{$item.ago}} {{if $item.location}} — ({{$item.location nofilter}}){{/if}} {{if $item.owner_self}} - • {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} {{/if}} @@ -253,7 +251,6 @@ as the value of $top_child_total (this is done at the end of this file) {{$item.ago}} {{if $item.location}} — ({{$item.location nofilter}}){{/if}} {{if $item.owner_self}} - • {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} {{/if}} diff --git a/view/theme/vier/templates/sub/delivery_count.tpl b/view/theme/vier/templates/sub/delivery_count.tpl index 594ce38c53..a0719f762f 100644 --- a/view/theme/vier/templates/sub/delivery_count.tpl +++ b/view/theme/vier/templates/sub/delivery_count.tpl @@ -1,13 +1,18 @@ -{{if $delivery.queue_count == 0}} - - {{$delivery.notifier_pending|escape}} -{{elseif $delivery.queue_done == 0}} - - {{$delivery.delivery_pending|escape}} -{{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} - - {{$delivery.delivery_underway|escape}} -{{else}} - - {{$delivery.delivery_almost|escape}} +{{if $delivery.queue_count >= -1 && $delivery.queue_count !== '' && $delivery.queue_count !== null}} + + • + {{if $delivery.queue_count == 0}} + + {{$delivery.notifier_pending}} + {{elseif $delivery.queue_done == 0}} + + {{$delivery.delivery_pending}} + {{elseif $delivery.queue_done / $delivery.queue_count < 0.75}} + + {{$delivery.delivery_underway}} + {{else}} + + {{$delivery.delivery_almost}} + {{/if}} + {{/if}} diff --git a/view/theme/vier/templates/wall_thread.tpl b/view/theme/vier/templates/wall_thread.tpl index 607a789e56..21ebcea38f 100644 --- a/view/theme/vier/templates/wall_thread.tpl +++ b/view/theme/vier/templates/wall_thread.tpl @@ -57,7 +57,6 @@ {{if $item.plink}}{{else}} {{/if}} {{if $item.owner_self}} - • {{include file="sub/delivery_count.tpl" delivery=$item.delivery}} {{/if}} From 23f94fadf357803b9e35767f732c8e292c443674 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 23 Jan 2019 09:50:28 +0100 Subject: [PATCH 205/728] CS translation update THX Aditoo --- view/lang/cs/messages.po | 4 ++-- view/lang/cs/strings.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/view/lang/cs/messages.po b/view/lang/cs/messages.po index f816e92ddf..c3e67c04ae 100644 --- a/view/lang/cs/messages.po +++ b/view/lang/cs/messages.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-01-06 17:21-0500\n" -"PO-Revision-Date: 2019-01-10 20:15+0000\n" +"PO-Revision-Date: 2019-01-21 17:47+0000\n" "Last-Translator: Aditoo\n" "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" @@ -1289,7 +1289,7 @@ msgstr "Na této stránce najdete obsah fronty odchozích příspěvků. Toto js #: mod/admin.php:825 msgid "Inspect Deferred Worker Queue" -msgstr "Proskoumat frontu odložených pracovníků" +msgstr "Prozkoumat frontu odložených pracovníků" #: mod/admin.php:826 msgid "" diff --git a/view/lang/cs/strings.php b/view/lang/cs/strings.php index 02edaef622..18800cb724 100644 --- a/view/lang/cs/strings.php +++ b/view/lang/cs/strings.php @@ -308,7 +308,7 @@ $a->strings["Network"] = "Síť"; $a->strings["Created"] = "Vytvořeno"; $a->strings["Last Tried"] = "Naposled vyzkoušeno"; $a->strings["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."] = "Na této stránce najdete obsah fronty odchozích příspěvků. Toto jsou příspěvky, u kterých počáteční doručení selhalo. Budou znovu poslány později, a pokud doručení selže trvale, budou nakonec smazány."; -$a->strings["Inspect Deferred Worker Queue"] = "Proskoumat frontu odložených pracovníků"; +$a->strings["Inspect Deferred Worker Queue"] = "Prozkoumat frontu odložených pracovníků"; $a->strings["This page lists the deferred worker jobs. This are jobs that couldn't be executed at the first time."] = "Na této stránce jsou vypsány odložené úlohy pracovníků. To jsou úlohy, které nemohly být napoprvé provedeny."; $a->strings["Inspect Worker Queue"] = "Prozkoumat frontu pro pracovníka"; $a->strings["This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you've set up during install."] = "Na této stránce jsou vypsány aktuálně čekající úlohy pro pracovníka . Tyto úlohy vykonává úloha cron pracovníka, kterou jste nastavil/a při instalaci."; From 1073b2190e9547e96f4e22408201516716f13197 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 23 Jan 2019 09:51:34 +0100 Subject: [PATCH 206/728] =?UTF-8?q?update=20for=20ES=20thx=20Abraham=20P?= =?UTF-8?q?=C3=A9rez=20Hern=C3=A1ndez?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/lang/es/messages.po | 13364 +++++++++++++++++++------------------ view/lang/es/strings.php | 3770 ++++++----- 2 files changed, 8973 insertions(+), 8161 deletions(-) diff --git a/view/lang/es/messages.po b/view/lang/es/messages.po index 53f6d40558..f22d3a80eb 100644 --- a/view/lang/es/messages.po +++ b/view/lang/es/messages.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the Friendica package. # # Translators: +# Abraham Pérez Hernández , 2019 # Albert, 2016-2017 # Albert, 2016 # Tobias Diekershoff , 2011 @@ -13,8 +14,8 @@ # Fabian Dost , 2012 # Fabian Dost , 2012 # greeneyedred , 2012 -# Hauke Zühl , 2012 -# Hauke Zühl , 2011-2012 +# Hauke , 2012 +# Hauke , 2011-2012 # juanman , 2017 # juanman , 2011-2012 # leberwurscht , 2012 @@ -36,9 +37,9 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-07 07:03+0100\n" -"PO-Revision-Date: 2017-11-09 15:03+0000\n" -"Last-Translator: Albert\n" +"POT-Creation-Date: 2019-01-06 17:21-0500\n" +"PO-Revision-Date: 2019-01-22 19:59+0000\n" +"Last-Translator: Abraham Pérez Hernández \n" "Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -46,1728 +47,87 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: include/features.php:65 -msgid "General Features" -msgstr "Opciones generales" - -#: include/features.php:67 -msgid "Multiple Profiles" -msgstr "Perfiles multiples" - -#: include/features.php:67 -msgid "Ability to create multiple profiles" -msgstr "Capacidad de crear perfiles multiples. Cada pagina/perfil/usuario puede tener diferentes perfiles/apariencias. Las mismas pueden ser visibles para determinados contactos seleccionados dentro de la red friendica." - -#: include/features.php:68 -msgid "Photo Location" -msgstr "Localización foto" - -#: include/features.php:68 -msgid "" -"Photo metadata is normally stripped. This extracts the location (if present)" -" prior to stripping metadata and links it to a map." -msgstr "Normalmente los meta datos de las imágenes son eliminados. Esto extraerá la localización si presente antes de eliminar los meta datos y enlaza la misma con el mapa." - -#: include/features.php:69 -msgid "Export Public Calendar" -msgstr "Exportar Calendario Público" - -#: include/features.php:69 -msgid "Ability for visitors to download the public calendar" -msgstr "Posibilidad de los visitantes de descargar el calendario público" - -#: include/features.php:74 -msgid "Post Composition Features" -msgstr "Opciones de edición de publicaciones." - -#: include/features.php:75 -msgid "Post Preview" -msgstr "Previsualizar publicaciones" - -#: include/features.php:75 -msgid "Allow previewing posts and comments before publishing them" -msgstr "Permitir la previsualización de publicaciones antes de publicar las mismas." - -#: include/features.php:76 -msgid "Auto-mention Forums" -msgstr "Auto-mencionar foros" - -#: include/features.php:76 -msgid "" -"Add/remove mention when a forum page is selected/deselected in ACL window." -msgstr "Añadir/eliminar mención cuando un foro es seleccionado/deseleccionado en la ventana ACL." - -#: include/features.php:81 -msgid "Network Sidebar Widgets" -msgstr "Accesorios de red del panel lateral" - -#: include/features.php:82 -msgid "Search by Date" -msgstr "Buscar por fecha" - -#: include/features.php:82 -msgid "Ability to select posts by date ranges" -msgstr "Habilidad de seleccionar publicaciones por fecha" - -#: include/features.php:83 include/features.php:113 -msgid "List Forums" -msgstr "Listar foros" - -#: include/features.php:83 -msgid "Enable widget to display the forums your are connected with" -msgstr "Habilitar la pestaña para mostrar los foros en que estas participando." - -#: include/features.php:84 -msgid "Group Filter" -msgstr "Filtro del grupo" - -#: include/features.php:84 -msgid "Enable widget to display Network posts only from selected group" -msgstr "Habilitar accesorios para visualizar publicaciones en la red solo de grupos seleccionados" - -#: include/features.php:85 -msgid "Network Filter" -msgstr "Filtro de red" - -#: include/features.php:85 -msgid "Enable widget to display Network posts only from selected network" -msgstr "Habilitar accesorios para visualizar publicaciones solo de las redes seleccionadas." - -#: include/features.php:86 mod/search.php:37 mod/network.php:196 -msgid "Saved Searches" -msgstr "Búsquedas guardadas" - -#: include/features.php:86 -msgid "Save search terms for re-use" -msgstr "Guardar términos de búsqueda para su reutilizacion" - -#: include/features.php:91 -msgid "Network Tabs" -msgstr "Pestañas de redes" - -#: include/features.php:92 -msgid "Network Personal Tab" -msgstr "Pestaña actividad personal" - -#: include/features.php:92 -msgid "Enable tab to display only Network posts that you've interacted on" -msgstr "Habilitar para visualizar solo publicaciones con las que se ha interactuado" - -#: include/features.php:93 -msgid "Network New Tab" -msgstr "Pestaña nuevo en la red" - -#: include/features.php:93 -msgid "Enable tab to display only new Network posts (from the last 12 hours)" -msgstr "Activar para mostrar solo publicaciones nuevas en la red (de las ultimas 12 horas)" - -#: include/features.php:94 -msgid "Network Shared Links Tab" -msgstr "Pestaña publicaciones con enlaces" - -#: include/features.php:94 -msgid "Enable tab to display only Network posts with links in them" -msgstr "Habilitar para visualizar solo publicaciones que contienen enlaces" - -#: include/features.php:99 -msgid "Post/Comment Tools" -msgstr "Herramienta de publicaciones/respuestas" - -#: include/features.php:100 -msgid "Multiple Deletion" -msgstr "Borrar múltiples publicaciones" - -#: include/features.php:100 -msgid "Select and delete multiple posts/comments at once" -msgstr "Habilidad de seleccionar y borrar varias publicaciones/comentarios a la vez" - -#: include/features.php:101 -msgid "Edit Sent Posts" -msgstr "Editar temas enviados" - -#: include/features.php:101 -msgid "Edit and correct posts and comments after sending" -msgstr "Editar y corregir publicaciones y respuestas enviados. Las ediciones solo son comunicados dentro de la red friendica. No se modificaran copias enviadas a diaspora, OStatus/GNUsocial/Quitter u otros servicios conectados." - -#: include/features.php:102 -msgid "Tagging" -msgstr "taggear" - -#: include/features.php:102 -msgid "Ability to tag existing posts" -msgstr "Habilidad de taggear publicaciones existentes" - -#: include/features.php:103 -msgid "Post Categories" -msgstr "Categorías de publicaciones" - -#: include/features.php:103 -msgid "Add categories to your posts" -msgstr "Agregue categorías a sus publicaciones. Las mismas serán visualizadas en su pagina de inicio." - -#: include/features.php:104 include/contact_widgets.php:167 -msgid "Saved Folders" -msgstr "Directorios guardados" - -#: include/features.php:104 -msgid "Ability to file posts under folders" -msgstr "Archivar publicaciones en carpetas" - -#: include/features.php:105 -msgid "Dislike Posts" -msgstr "Desaprobar publicación (dislike)" - -#: include/features.php:105 -msgid "Ability to dislike posts/comments" -msgstr "Habilidad de expresar desacuerdo en publicaciones y comentarios. Esta función solo es visualizado en la red friendica." - -#: include/features.php:106 -msgid "Star Posts" -msgstr "Fijar publicaciones" - -#: include/features.php:106 -msgid "Ability to mark special posts with a star indicator" -msgstr "Habilidad de marcar - observar fijamente publicaciones.\nEl simbolo de estrella es habilitado. Se recibirán notificaciones sobre comentarios, además una pestaña de publicaciones fijadas es habilitada. En las opciones de expiración de publicaciones se puede filtrar estas publicaciones para no ser eliminados contrario a las publicaciones demás de los contactos." - -#: include/features.php:107 -msgid "Mute Post Notifications" -msgstr "Silenciar notificaciones de una publicacion" - -#: include/features.php:107 -msgid "Ability to mute notifications for a thread" -msgstr "Habilidad de silenciar notificaciones sobre nuevos comentarios en una publicación." - -#: include/features.php:112 -msgid "Advanced Profile Settings" -msgstr "Ajustes avanzados del perfil" - -#: include/features.php:113 -msgid "Show visitors public community forums at the Advanced Profile Page" -msgstr "Mostrar a los visitantes foros públicos en las que se esta participando en el pagina avanzada de perfiles." - -#: include/datetime.php:66 include/datetime.php:68 mod/profiles.php:697 -msgid "Miscellaneous" -msgstr "Varios" - -#: include/datetime.php:196 include/identity.php:655 -msgid "Birthday:" -msgstr "Fecha de nacimiento:" - -#: include/datetime.php:198 mod/profiles.php:720 -msgid "Age: " -msgstr "Edad: " - -#: include/datetime.php:200 -msgid "YYYY-MM-DD or MM-DD" -msgstr "YYYY-MM-DD o MM-DD" - -#: include/datetime.php:370 -msgid "never" -msgstr "nunca" - -#: include/datetime.php:376 -msgid "less than a second ago" -msgstr "hace menos de un segundo" - -#: include/datetime.php:379 -msgid "year" -msgstr "año" - -#: include/datetime.php:379 -msgid "years" -msgstr "años" - -#: include/datetime.php:380 include/event.php:490 mod/cal.php:282 -#: mod/events.php:393 -msgid "month" -msgstr "mes" - -#: include/datetime.php:380 -msgid "months" -msgstr "meses" - -#: include/datetime.php:381 include/event.php:491 mod/cal.php:283 -#: mod/events.php:394 -msgid "week" -msgstr "semana" - -#: include/datetime.php:381 -msgid "weeks" -msgstr "semanas" - -#: include/datetime.php:382 include/event.php:492 mod/cal.php:284 -#: mod/events.php:395 -msgid "day" -msgstr "día" - -#: include/datetime.php:382 -msgid "days" -msgstr "días" - -#: include/datetime.php:383 -msgid "hour" -msgstr "hora" - -#: include/datetime.php:383 -msgid "hours" -msgstr "horas" - -#: include/datetime.php:384 -msgid "minute" -msgstr "minuto" - -#: include/datetime.php:384 -msgid "minutes" -msgstr "minutos" - -#: include/datetime.php:385 -msgid "second" -msgstr "segundo" - -#: include/datetime.php:385 -msgid "seconds" -msgstr "segundos" - -#: include/datetime.php:394 +#: include/api.php:1137 #, php-format -msgid "%1$d %2$s ago" -msgstr "hace %1$d %2$s" +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] "" -#: include/datetime.php:620 +#: include/api.php:1151 #, php-format -msgid "%s's birthday" -msgstr "Cumpleaños de %s" +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] "" -#: include/datetime.php:621 include/dfrn.php:1361 +#: include/api.php:1165 #, php-format -msgid "Happy Birthday %s" -msgstr "Feliz cumpleaños %s" - -#: include/profile_selectors.php:6 -msgid "Male" -msgstr "Hombre" - -#: include/profile_selectors.php:6 -msgid "Female" -msgstr "Mujer" - -#: include/profile_selectors.php:6 -msgid "Currently Male" -msgstr "Actualmente Hombre" - -#: include/profile_selectors.php:6 -msgid "Currently Female" -msgstr "Actualmente Mujer" - -#: include/profile_selectors.php:6 -msgid "Mostly Male" -msgstr "Mayormente Hombre" - -#: include/profile_selectors.php:6 -msgid "Mostly Female" -msgstr "Mayormente Mujer" - -#: include/profile_selectors.php:6 -msgid "Transgender" -msgstr "Transgenérico" - -#: include/profile_selectors.php:6 -msgid "Intersex" -msgstr "Bisexual" - -#: include/profile_selectors.php:6 -msgid "Transsexual" -msgstr "Transexual" - -#: include/profile_selectors.php:6 -msgid "Hermaphrodite" -msgstr "Hermafrodita" - -#: include/profile_selectors.php:6 -msgid "Neuter" -msgstr "Neutro" - -#: include/profile_selectors.php:6 -msgid "Non-specific" -msgstr "Sin especificar" - -#: include/profile_selectors.php:6 -msgid "Other" -msgstr "Otro" - -#: include/profile_selectors.php:6 include/conversation.php:1565 -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "Indeciso" -msgstr[1] "Indeciso" - -#: include/profile_selectors.php:23 -msgid "Males" -msgstr "Hombres" - -#: include/profile_selectors.php:23 -msgid "Females" -msgstr "Mujeres" - -#: include/profile_selectors.php:23 -msgid "Gay" -msgstr "Gay" - -#: include/profile_selectors.php:23 -msgid "Lesbian" -msgstr "Lesbiana" - -#: include/profile_selectors.php:23 -msgid "No Preference" -msgstr "Sin preferencias" - -#: include/profile_selectors.php:23 -msgid "Bisexual" -msgstr "Bisexual" - -#: include/profile_selectors.php:23 -msgid "Autosexual" -msgstr "Autosexual" - -#: include/profile_selectors.php:23 -msgid "Abstinent" -msgstr "Célibe" - -#: include/profile_selectors.php:23 -msgid "Virgin" -msgstr "Virgen" - -#: include/profile_selectors.php:23 -msgid "Deviant" -msgstr "Desviado" - -#: include/profile_selectors.php:23 -msgid "Fetish" -msgstr "Fetichista" - -#: include/profile_selectors.php:23 -msgid "Oodles" -msgstr "Orgiástico" - -#: include/profile_selectors.php:23 -msgid "Nonsexual" -msgstr "Asexual" - -#: include/profile_selectors.php:42 -msgid "Single" -msgstr "Soltero" - -#: include/profile_selectors.php:42 -msgid "Lonely" -msgstr "Solitario" - -#: include/profile_selectors.php:42 -msgid "Available" -msgstr "Disponible" - -#: include/profile_selectors.php:42 -msgid "Unavailable" -msgstr "No disponible" - -#: include/profile_selectors.php:42 -msgid "Has crush" -msgstr "Enamorado" - -#: include/profile_selectors.php:42 -msgid "Infatuated" -msgstr "Loco/a por alguien" - -#: include/profile_selectors.php:42 -msgid "Dating" -msgstr "De citas" - -#: include/profile_selectors.php:42 -msgid "Unfaithful" -msgstr "Infiel" - -#: include/profile_selectors.php:42 -msgid "Sex Addict" -msgstr "Adicto al sexo" - -#: include/profile_selectors.php:42 include/user.php:256 include/user.php:260 -msgid "Friends" -msgstr "Amigos" - -#: include/profile_selectors.php:42 -msgid "Friends/Benefits" -msgstr "Amigos con beneficios" - -#: include/profile_selectors.php:42 -msgid "Casual" -msgstr "Casual" - -#: include/profile_selectors.php:42 -msgid "Engaged" -msgstr "Comprometido/a" - -#: include/profile_selectors.php:42 -msgid "Married" -msgstr "Casado/a" - -#: include/profile_selectors.php:42 -msgid "Imaginarily married" -msgstr "Casado imaginario" - -#: include/profile_selectors.php:42 -msgid "Partners" -msgstr "Socios" - -#: include/profile_selectors.php:42 -msgid "Cohabiting" -msgstr "Cohabitando" - -#: include/profile_selectors.php:42 -msgid "Common law" -msgstr "Pareja de hecho" - -#: include/profile_selectors.php:42 -msgid "Happy" -msgstr "Feliz" - -#: include/profile_selectors.php:42 -msgid "Not looking" -msgstr "No busca relación" - -#: include/profile_selectors.php:42 -msgid "Swinger" -msgstr "Swinger" - -#: include/profile_selectors.php:42 -msgid "Betrayed" -msgstr "Traicionado/a" - -#: include/profile_selectors.php:42 -msgid "Separated" -msgstr "Separado/a" - -#: include/profile_selectors.php:42 -msgid "Unstable" -msgstr "Inestable" - -#: include/profile_selectors.php:42 -msgid "Divorced" -msgstr "Divorciado/a" - -#: include/profile_selectors.php:42 -msgid "Imaginarily divorced" -msgstr "Divorciado imaginario" - -#: include/profile_selectors.php:42 -msgid "Widowed" -msgstr "Viudo/a" - -#: include/profile_selectors.php:42 -msgid "Uncertain" -msgstr "Incierto" - -#: include/profile_selectors.php:42 -msgid "It's complicated" -msgstr "Es complicado" - -#: include/profile_selectors.php:42 -msgid "Don't care" -msgstr "No te importa" - -#: include/profile_selectors.php:42 -msgid "Ask me" -msgstr "Pregúntame" - -#: include/group.php:25 -msgid "" -"A deleted group with this name was revived. Existing item permissions " -"may apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." -msgstr "Un grupo eliminado con este nombre fue restablecido. Los permisos existentes pueden aplicarse a este grupo y a sus futuros miembros. Si esto no es lo que pretendes, por favor, crea otro grupo con un nombre diferente." - -#: include/group.php:201 -msgid "Default privacy group for new contacts" -msgstr "Grupo por defecto para nuevos contactos" - -#: include/group.php:234 -msgid "Everybody" -msgstr "Todo el mundo" - -#: include/group.php:257 -msgid "edit" -msgstr "editar" - -#: include/group.php:278 mod/newmember.php:39 -msgid "Groups" -msgstr "Grupos" - -#: include/group.php:280 -msgid "Edit groups" -msgstr "Editar grupo" - -#: include/group.php:282 -msgid "Edit group" -msgstr "Editar grupo" - -#: include/group.php:283 -msgid "Create a new group" -msgstr "Crear un nuevo grupo" - -#: include/group.php:284 mod/group.php:101 mod/group.php:198 -msgid "Group Name: " -msgstr "Nombre del grupo: " - -#: include/group.php:286 -msgid "Contacts not in any group" -msgstr "Contactos sin grupo" - -#: include/group.php:288 mod/network.php:197 -msgid "add" -msgstr "añadir" - -#: include/ForumManager.php:119 include/nav.php:134 include/text.php:1100 -#: view/theme/vier/theme.php:249 -msgid "Forums" -msgstr "Foros" - -#: include/ForumManager.php:121 view/theme/vier/theme.php:251 -msgid "External link to forum" -msgstr "Enlace externo al foro" - -#: include/ForumManager.php:124 include/contact_widgets.php:272 -#: include/items.php:2413 object/Item.php:417 view/theme/vier/theme.php:254 -#: src/App.php:523 -msgid "show more" -msgstr "ver más" - -#: include/NotificationsManager.php:157 -msgid "System" -msgstr "Sistema" - -#: include/NotificationsManager.php:164 include/nav.php:161 mod/admin.php:590 -#: view/theme/frio/theme.php:260 -msgid "Network" -msgstr "Red" - -#: include/NotificationsManager.php:171 mod/network.php:914 -#: mod/profiles.php:695 -msgid "Personal" -msgstr "Personal" - -#: include/NotificationsManager.php:178 include/nav.php:108 -#: include/nav.php:164 -msgid "Home" -msgstr "Inicio" - -#: include/NotificationsManager.php:185 include/nav.php:169 -msgid "Introductions" -msgstr "Presentaciones" - -#: include/NotificationsManager.php:243 include/NotificationsManager.php:255 -#, php-format -msgid "%s commented on %s's post" -msgstr "%s comentó la publicación de %s" - -#: include/NotificationsManager.php:254 -#, php-format -msgid "%s created a new post" -msgstr "%s creó una nueva publicación" - -#: include/NotificationsManager.php:269 -#, php-format -msgid "%s liked %s's post" -msgstr "A %s le gusta la publicación de %s" - -#: include/NotificationsManager.php:282 -#, php-format -msgid "%s disliked %s's post" -msgstr "A %s no le gusta la publicación de %s" - -#: include/NotificationsManager.php:295 -#, php-format -msgid "%s is attending %s's event" -msgstr "%s está asistiendo al evento %s's" - -#: include/NotificationsManager.php:308 -#, php-format -msgid "%s is not attending %s's event" -msgstr "%s no está asistiendo al evento %s's" - -#: include/NotificationsManager.php:321 -#, php-format -msgid "%s may attend %s's event" -msgstr "%s podría asistir al evento %s's" - -#: include/NotificationsManager.php:338 -#, php-format -msgid "%s is now friends with %s" -msgstr "%s es ahora es amigo de %s" - -#: include/NotificationsManager.php:776 -msgid "Friend Suggestion" -msgstr "Propuestas de amistad" - -#: include/NotificationsManager.php:805 -msgid "Friend/Connect Request" -msgstr "Solicitud de Amistad/Conexión" - -#: include/NotificationsManager.php:805 -msgid "New Follower" -msgstr "Nuevo seguidor" - -#: include/auth.php:53 -msgid "Logged out." -msgstr "Sesión finalizada" - -#: include/auth.php:124 include/auth.php:186 mod/openid.php:111 -msgid "Login failed." -msgstr "Accesso fallido." - -#: include/auth.php:140 include/user.php:77 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." -msgstr "Se ha encontrado un problema para acceder con el OpenID que has escrito. Verifica que lo hayas escrito correctamente." - -#: include/auth.php:140 include/user.php:77 -msgid "The error message was:" -msgstr "El mensaje del error fue:" - -#: include/bb2diaspora.php:234 include/event.php:19 include/event.php:933 -#: mod/localtime.php:14 -msgid "l F d, Y \\@ g:i A" -msgstr "l F d, Y \\@ g:i A" - -#: include/bb2diaspora.php:240 include/event.php:36 include/event.php:53 -#: include/event.php:496 include/event.php:985 -msgid "Starts:" -msgstr "Inicio:" - -#: include/bb2diaspora.php:248 include/event.php:39 include/event.php:59 -#: include/event.php:497 include/event.php:989 -msgid "Finishes:" -msgstr "Final:" - -#: include/bb2diaspora.php:257 include/event.php:43 include/event.php:68 -#: include/event.php:498 include/event.php:1003 include/identity.php:340 -#: mod/notifications.php:247 mod/directory.php:133 mod/contacts.php:658 -#: mod/events.php:517 -msgid "Location:" -msgstr "Localización:" - -#: include/contact_widgets.php:12 -msgid "Add New Contact" -msgstr "Añadir nuevo contacto" - -#: include/contact_widgets.php:13 -msgid "Enter address or web location" -msgstr "Escribe la dirección o página web" - -#: include/contact_widgets.php:14 -msgid "Example: bob@example.com, http://example.com/barbara" -msgstr "Ejemplo: miguel@ejemplo.com, http://ejemplo.com/miguel" - -#: include/contact_widgets.php:16 include/identity.php:230 -#: mod/allfriends.php:88 mod/match.php:93 mod/suggest.php:101 -#: mod/dirfind.php:211 -msgid "Connect" -msgstr "Conectar" - -#: include/contact_widgets.php:31 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "%d invitación disponible" -msgstr[1] "%d invitaviones disponibles" - -#: include/contact_widgets.php:37 -msgid "Find People" -msgstr "Buscar personas" - -#: include/contact_widgets.php:38 -msgid "Enter name or interest" -msgstr "Introduzce nombre o intereses" - -#: include/contact_widgets.php:39 include/Contact.php:411 -#: include/conversation.php:1035 mod/allfriends.php:72 mod/follow.php:143 -#: mod/match.php:78 mod/suggest.php:83 mod/contacts.php:590 -#: mod/dirfind.php:214 -msgid "Connect/Follow" -msgstr "Conectar/Seguir" - -#: include/contact_widgets.php:40 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Ejemplos: Robert Morgenstein, Pesca" - -#: include/contact_widgets.php:41 mod/directory.php:200 mod/contacts.php:828 -msgid "Find" -msgstr "Buscar" - -#: include/contact_widgets.php:42 mod/suggest.php:114 -#: view/theme/vier/theme.php:196 -msgid "Friend Suggestions" -msgstr "Sugerencias de amigos" - -#: include/contact_widgets.php:43 view/theme/vier/theme.php:195 -msgid "Similar Interests" -msgstr "Intereses similares" - -#: include/contact_widgets.php:44 -msgid "Random Profile" -msgstr "Perfil aleatorio" - -#: include/contact_widgets.php:45 view/theme/vier/theme.php:197 -msgid "Invite Friends" -msgstr "Invitar amigos" - -#: include/contact_widgets.php:46 -msgid "View Global Directory" -msgstr "Ver Directorio Global" - -#: include/contact_widgets.php:132 -msgid "Networks" -msgstr "Redes" - -#: include/contact_widgets.php:135 -msgid "All Networks" -msgstr "Todas las redes" - -#: include/contact_widgets.php:170 include/contact_widgets.php:205 -msgid "Everything" -msgstr "Todo" - -#: include/contact_widgets.php:202 -msgid "Categories" -msgstr "Categorías" - -#: include/contact_widgets.php:267 -#, php-format -msgid "%d contact in common" -msgid_plural "%d contacts in common" -msgstr[0] "%d contacto en común" -msgstr[1] "%d contactos en común" - -#: include/enotify.php:28 -msgid "Friendica Notification" -msgstr "Notificación de Friendica" - -#: include/enotify.php:31 -msgid "Thank You," -msgstr "Gracias," - -#: include/enotify.php:34 -#, php-format -msgid "%s Administrator" -msgstr "%s Administrador" - -#: include/enotify.php:36 -#, php-format -msgid "%1$s, %2$s Administrator" -msgstr "%1$s, %2$s Administrador" - -#: include/enotify.php:47 include/delivery.php:441 -msgid "noreply" -msgstr "no responder" - -#: include/enotify.php:81 -#, php-format -msgid "%s " -msgstr "%s " - -#: include/enotify.php:94 -#, php-format -msgid "[Friendica:Notify] New mail received at %s" -msgstr "[Friendica:Notificación] Nuevo correo recibido de %s" - -#: include/enotify.php:96 -#, php-format -msgid "%1$s sent you a new private message at %2$s." -msgstr "%1$s te ha enviado un mensaje privado desde %2$s." - -#: include/enotify.php:97 -#, php-format -msgid "%1$s sent you %2$s." -msgstr "%1$s te ha enviado %2$s." - -#: include/enotify.php:97 -msgid "a private message" -msgstr "un mensaje privado" - -#: include/enotify.php:99 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." -msgstr "Por favor, visita %s para ver y/o responder a tus mensajes privados." - -#: include/enotify.php:145 -#, php-format -msgid "%1$s commented on [url=%2$s]a %3$s[/url]" -msgstr "%1$s comentó en [url=%2$s]a %3$s[/url]" - -#: include/enotify.php:152 -#, php-format -msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" -msgstr "%1$s comentó en [url=%2$s] %4$s de %3$s[/url]" - -#: include/enotify.php:160 -#, php-format -msgid "%1$s commented on [url=%2$s]your %3$s[/url]" -msgstr "%1$s comentó en [url=%2$s] tu %3$s[/url]" - -#: include/enotify.php:170 -#, php-format -msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" -msgstr "[Friendica:Notificación] Comentario en la conversación de #%1$d por %2$s" - -#: include/enotify.php:172 -#, php-format -msgid "%s commented on an item/conversation you have been following." -msgstr "%s ha comentado en una conversación/elemento que sigues." - -#: include/enotify.php:175 include/enotify.php:189 include/enotify.php:203 -#: include/enotify.php:217 include/enotify.php:235 include/enotify.php:249 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." -msgstr "Por favor, visita %s para ver y/o responder a la conversación." - -#: include/enotify.php:182 -#, php-format -msgid "[Friendica:Notify] %s posted to your profile wall" -msgstr "[Friendica:Notificación] %s publicó en tu muro" - -#: include/enotify.php:184 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" -msgstr "%1$s publicó en tu perfil de %2$s" - -#: include/enotify.php:185 -#, php-format -msgid "%1$s posted to [url=%2$s]your wall[/url]" -msgstr "%1$s publicó en [url=%2$s]tu muro[/url]" - -#: include/enotify.php:196 -#, php-format -msgid "[Friendica:Notify] %s tagged you" -msgstr "[Friendica:Notificación] %s te ha nombrado" - -#: include/enotify.php:198 -#, php-format -msgid "%1$s tagged you at %2$s" -msgstr "%1$s te ha nombrado en %2$s" - -#: include/enotify.php:199 -#, php-format -msgid "%1$s [url=%2$s]tagged you[/url]." -msgstr "%1$s [url=%2$s]te nombró[/url]." - -#: include/enotify.php:210 -#, php-format -msgid "[Friendica:Notify] %s shared a new post" -msgstr "[Notificacion Friendica] %s compartio una nueva publicacion" - -#: include/enotify.php:212 -#, php-format -msgid "%1$s shared a new post at %2$s" -msgstr "%1$s compartió un nuevo tema en %2$s" - -#: include/enotify.php:213 -#, php-format -msgid "%1$s [url=%2$s]shared a post[/url]." -msgstr "%1$s [url=%2$s]compartió una publicación[/url]." - -#: include/enotify.php:224 -#, php-format -msgid "[Friendica:Notify] %1$s poked you" -msgstr "[Friendica:Notify] %1$s te dio un toque" - -#: include/enotify.php:226 -#, php-format -msgid "%1$s poked you at %2$s" -msgstr "%1$s te dio un toque en %2$s" - -#: include/enotify.php:227 -#, php-format -msgid "%1$s [url=%2$s]poked you[/url]." -msgstr "%1$s [url=%2$s]te dio un toque[/url]." - -#: include/enotify.php:242 -#, php-format -msgid "[Friendica:Notify] %s tagged your post" -msgstr "[Friendica:Notificación] %s ha etiquetado tu publicación" - -#: include/enotify.php:244 -#, php-format -msgid "%1$s tagged your post at %2$s" -msgstr "%1$s ha etiquetado tu publicación en %2$s" - -#: include/enotify.php:245 -#, php-format -msgid "%1$s tagged [url=%2$s]your post[/url]" -msgstr "%1$s ha etiquetado [url=%2$s]tu publicación[/url]" - -#: include/enotify.php:256 -msgid "[Friendica:Notify] Introduction received" -msgstr "[Friendica:Notificación] Presentación recibida" - -#: include/enotify.php:258 -#, php-format -msgid "You've received an introduction from '%1$s' at %2$s" -msgstr "Has recibido una presentación de '%1$s' en %2$s" - -#: include/enotify.php:259 -#, php-format -msgid "You've received [url=%1$s]an introduction[/url] from %2$s." -msgstr "Has recibido [url=%1$s]una presentación[/url] de %2$s." - -#: include/enotify.php:263 include/enotify.php:306 -#, php-format -msgid "You may visit their profile at %s" -msgstr "Puedes visitar su perfil en %s" - -#: include/enotify.php:265 -#, php-format -msgid "Please visit %s to approve or reject the introduction." -msgstr "Visita %s para aceptar o rechazar la presentación por favor." - -#: include/enotify.php:273 -msgid "[Friendica:Notify] A new person is sharing with you" -msgstr "[Notificación:Friendica] Un nuevo contacto comparte contigo" - -#: include/enotify.php:275 include/enotify.php:276 -#, php-format -msgid "%1$s is sharing with you at %2$s" -msgstr "%1$s comparte con tigo en %2$s" - -#: include/enotify.php:282 -msgid "[Friendica:Notify] You have a new follower" -msgstr "[Notificación:Friendica] Tienes un nuevo seguidor" - -#: include/enotify.php:284 include/enotify.php:285 -#, php-format -msgid "You have a new follower at %2$s : %1$s" -msgstr "Tienes un nuevo seguidor en %2$s : %1$s" - -#: include/enotify.php:296 -msgid "[Friendica:Notify] Friend suggestion received" -msgstr "[Friendica:Notificación] Sugerencia de amigo recibida" - -#: include/enotify.php:298 -#, php-format -msgid "You've received a friend suggestion from '%1$s' at %2$s" -msgstr "Has recibido una sugerencia de amigo de '%1$s' en %2$s" - -#: include/enotify.php:299 -#, php-format -msgid "" -"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." -msgstr "Has recibido [url=%1$s]una sugerencia de amigo[/url] en %2$s de %3$s." - -#: include/enotify.php:304 -msgid "Name:" -msgstr "Nombre: " - -#: include/enotify.php:305 -msgid "Photo:" -msgstr "Foto: " - -#: include/enotify.php:308 -#, php-format -msgid "Please visit %s to approve or reject the suggestion." -msgstr "Visita %s para aceptar o rechazar la sugerencia por favor." - -#: include/enotify.php:316 include/enotify.php:330 -msgid "[Friendica:Notify] Connection accepted" -msgstr "[Notificación:Friendica] Conexión aceptada" - -#: include/enotify.php:318 include/enotify.php:332 -#, php-format -msgid "'%1$s' has accepted your connection request at %2$s" -msgstr "'%1$s' acepto tu consulta de conexión %2$s" - -#: include/enotify.php:319 include/enotify.php:333 -#, php-format -msgid "%2$s has accepted your [url=%1$s]connection request[/url]." -msgstr "%2$s hacepto tu [url=%1$s]consulta de conexión[/url]." - -#: include/enotify.php:323 -msgid "" -"You are now mutual friends and may exchange status updates, photos, and " -"email without restriction." -msgstr "Ahora tiene amigos en común y puede intercambiar actualizaciones de estado, fotos y email sin restricción." - -#: include/enotify.php:325 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." -msgstr "Por favor visite %s si desea hacer algún cambio a su relación." - -#: include/enotify.php:337 -#, 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." -msgstr "'%1$s' eligió de aceptarte como fan/hincha lo que restringe algunas formas de comunicación - tales como mensajes privados y algunas interacciones de los perfiles. Si esto es una pagina de celebridad o comunidad, estas configuraciones se adoptaron automáticamente." - -#: include/enotify.php:339 -#, php-format -msgid "" -"'%1$s' may choose to extend this into a two-way or more permissive " -"relationship in the future." -msgstr "'%1$s' puede elegir extender esto en una relación más permisiva o ambidireccional en el futuro." - -#: include/enotify.php:341 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." -msgstr "Por favor visita %s si es preciso de hacer algún cambio a la relación con este contacto." - -#: include/enotify.php:351 -msgid "[Friendica System:Notify] registration request" -msgstr "[Notificacion:Friendica] consulta de registro" - -#: include/enotify.php:353 -#, php-format -msgid "You've received a registration request from '%1$s' at %2$s" -msgstr "Recibiste una consulta de registro de '%1$s' en %2$s" - -#: include/enotify.php:354 -#, php-format -msgid "You've received a [url=%1$s]registration request[/url] from %2$s." -msgstr "Recibiste una [url=%1$s]consulta de registro[/url] from %2$s." - -#: include/enotify.php:358 -#, php-format -msgid "Full Name:\t%1$s\\nSite Location:\t%2$s\\nLogin Name:\t%3$s (%4$s)" -msgstr "Nombre completo:\t%1$s\\nUbicación del sitio:\t%2$s\\nLogin Nombre:\t%3$s (%4$s)" - -#: include/enotify.php:361 -#, php-format -msgid "Please visit %s to approve or reject the request." -msgstr "Por favor visita %s para aprobar o negar la solicitud." - -#: include/oembed.php:254 -msgid "Embedded content" -msgstr "Contenido integrado" - -#: include/oembed.php:262 -msgid "Embedding disabled" -msgstr "Contenido incrustrado desabilitado" - -#: include/security.php:64 -msgid "Welcome " -msgstr "Bienvenido " - -#: include/security.php:65 -msgid "Please upload a profile photo." -msgstr "Por favor sube una foto para tu perfil." - -#: include/security.php:67 -msgid "Welcome back " -msgstr "Bienvenido de nuevo " - -#: 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." -msgstr "La ficha de seguridad no es correcta. Seguramente haya ocurrido por haber dejado el formulario abierto demasiado tiempo (>3 horas) antes de enviarlo." - -#: include/photos.php:57 include/photos.php:66 mod/fbrowser.php:43 -#: mod/fbrowser.php:65 mod/photos.php:191 mod/photos.php:1109 -#: mod/photos.php:1233 mod/photos.php:1254 mod/photos.php:1816 -#: mod/photos.php:1830 -msgid "Contact Photos" -msgstr "Foto del contacto" - -#: include/nav.php:38 mod/navigation.php:22 -msgid "Nothing new here" -msgstr "Nada nuevo por aquí" - -#: include/nav.php:42 mod/navigation.php:26 -msgid "Clear notifications" -msgstr "Limpiar notificaciones" - -#: include/nav.php:43 include/text.php:1090 -msgid "@name, !forum, #tags, content" -msgstr "@name, !forum, #tags, contenido" - -#: include/nav.php:81 view/theme/frio/theme.php:250 boot.php:874 -msgid "Logout" -msgstr "Salir" - -#: include/nav.php:81 view/theme/frio/theme.php:250 -msgid "End this session" -msgstr "Cerrar la sesión" - -#: include/nav.php:84 include/identity.php:785 mod/contacts.php:667 -#: mod/contacts.php:863 view/theme/frio/theme.php:253 -msgid "Status" -msgstr "Estado" - -#: include/nav.php:84 include/nav.php:164 view/theme/frio/theme.php:253 -msgid "Your posts and conversations" -msgstr "Tus publicaciones y conversaciones" - -#: include/nav.php:85 include/identity.php:631 include/identity.php:760 -#: include/identity.php:793 mod/newmember.php:20 mod/profperm.php:107 -#: mod/contacts.php:669 mod/contacts.php:871 view/theme/frio/theme.php:254 -msgid "Profile" -msgstr "Perfil" - -#: include/nav.php:85 view/theme/frio/theme.php:254 -msgid "Your profile page" -msgstr "Tu página de perfil" - -#: include/nav.php:86 include/identity.php:801 mod/fbrowser.php:34 -#: view/theme/frio/theme.php:255 -msgid "Photos" -msgstr "Fotografías" - -#: include/nav.php:86 view/theme/frio/theme.php:255 -msgid "Your photos" -msgstr "Tus fotos" - -#: include/nav.php:87 include/identity.php:809 include/identity.php:812 -#: view/theme/frio/theme.php:256 -msgid "Videos" -msgstr "Videos" - -#: include/nav.php:87 view/theme/frio/theme.php:256 -msgid "Your videos" -msgstr "Tus videos" - -#: include/nav.php:88 include/nav.php:152 include/identity.php:821 -#: include/identity.php:832 mod/cal.php:273 mod/events.php:383 -#: view/theme/frio/theme.php:257 view/theme/frio/theme.php:261 -msgid "Events" -msgstr "Eventos" - -#: include/nav.php:88 view/theme/frio/theme.php:257 -msgid "Your events" -msgstr "Tus eventos" - -#: include/nav.php:89 -msgid "Personal notes" -msgstr "Notas personales" - -#: include/nav.php:89 -msgid "Your personal notes" -msgstr "Tus notas personales" - -#: include/nav.php:98 mod/bookmarklet.php:15 boot.php:875 -msgid "Login" -msgstr "Acceder" - -#: include/nav.php:98 -msgid "Sign in" -msgstr "Date de alta" - -#: include/nav.php:108 -msgid "Home Page" -msgstr "Página de inicio" - -#: include/nav.php:112 mod/register.php:294 boot.php:851 -msgid "Register" -msgstr "Registrarse" - -#: include/nav.php:112 -msgid "Create an account" -msgstr "Crea una cuenta" - -#: include/nav.php:118 mod/help.php:51 view/theme/vier/theme.php:292 -msgid "Help" -msgstr "Ayuda" - -#: include/nav.php:118 -msgid "Help and documentation" -msgstr "Ayuda y documentación" - -#: include/nav.php:122 -msgid "Apps" -msgstr "Aplicaciones" - -#: include/nav.php:122 -msgid "Addon applications, utilities, games" -msgstr "Aplicaciones, utilidades, juegos" - -#: include/nav.php:126 include/text.php:1087 mod/search.php:145 -msgid "Search" -msgstr "Buscar" - -#: include/nav.php:126 -msgid "Search site content" -msgstr " Busca contenido en la página" - -#: include/nav.php:129 include/text.php:1095 -msgid "Full Text" -msgstr "Texto completo" - -#: include/nav.php:130 include/text.php:1096 -msgid "Tags" -msgstr "Tags" - -#: include/nav.php:131 include/nav.php:195 include/identity.php:854 -#: include/identity.php:857 include/text.php:1097 mod/viewcontacts.php:124 -#: mod/contacts.php:822 mod/contacts.php:883 view/theme/frio/theme.php:264 -msgid "Contacts" -msgstr "Contactos" - -#: include/nav.php:146 include/nav.php:148 mod/community.php:31 -msgid "Community" -msgstr "Comunidad" - -#: include/nav.php:146 -msgid "Conversations on this site" -msgstr "Conversaciones en este sitio" - -#: include/nav.php:148 -msgid "Conversations on the network" -msgstr "Conversaciones en la red" - -#: include/nav.php:152 include/identity.php:824 include/identity.php:835 -#: view/theme/frio/theme.php:261 -msgid "Events and Calendar" -msgstr "Eventos y Calendario" - -#: include/nav.php:155 -msgid "Directory" -msgstr "Directorio" - -#: include/nav.php:155 -msgid "People directory" -msgstr "Directorio de usuarios" - -#: include/nav.php:157 -msgid "Information" -msgstr "Información" - -#: include/nav.php:157 -msgid "Information about this friendica instance" -msgstr "Información sobre esta instancia de friendica" - -#: include/nav.php:161 view/theme/frio/theme.php:260 -msgid "Conversations from your friends" -msgstr "Conversaciones de tus amigos" - -#: include/nav.php:162 -msgid "Network Reset" -msgstr "Reseteo de la red" - -#: include/nav.php:162 -msgid "Load Network page with no filters" -msgstr "Cargar pagina de redes sin filtros" - -#: include/nav.php:169 -msgid "Friend Requests" -msgstr "Solicitudes de amistad" - -#: include/nav.php:172 mod/notifications.php:99 -msgid "Notifications" -msgstr "Notificaciones" - -#: include/nav.php:173 -msgid "See all notifications" -msgstr "Ver todas las notificaciones" - -#: include/nav.php:174 mod/settings.php:911 -msgid "Mark as seen" -msgstr "Marcar como leído" - -#: include/nav.php:174 -msgid "Mark all system notifications seen" -msgstr "Marcar todas las notificaciones del sistema como leídas" - -#: include/nav.php:178 mod/message.php:180 view/theme/frio/theme.php:262 -msgid "Messages" -msgstr "Mensajes" - -#: include/nav.php:178 view/theme/frio/theme.php:262 -msgid "Private mail" -msgstr "Correo privado" - -#: include/nav.php:179 -msgid "Inbox" -msgstr "Entrada" - -#: include/nav.php:180 -msgid "Outbox" -msgstr "Enviados" - -#: include/nav.php:181 mod/message.php:19 -msgid "New Message" -msgstr "Nuevo mensaje" - -#: include/nav.php:184 -msgid "Manage" -msgstr "Administrar" - -#: include/nav.php:184 -msgid "Manage other pages" -msgstr "Administrar otras páginas" - -#: include/nav.php:187 mod/settings.php:81 -msgid "Delegations" -msgstr "Delegaciones" - -#: include/nav.php:187 mod/delegate.php:130 -msgid "Delegate Page Management" -msgstr "Delegar la administración de la página" - -#: include/nav.php:189 mod/newmember.php:15 mod/admin.php:1740 -#: mod/admin.php:2016 mod/settings.php:111 view/theme/frio/theme.php:263 -msgid "Settings" -msgstr "Configuración" - -#: include/nav.php:189 view/theme/frio/theme.php:263 -msgid "Account settings" -msgstr "Configuración de tu cuenta" - -#: include/nav.php:192 include/identity.php:294 -msgid "Profiles" -msgstr "Perfiles" - -#: include/nav.php:192 -msgid "Manage/Edit Profiles" -msgstr "Manejar/editar Perfiles" - -#: include/nav.php:195 view/theme/frio/theme.php:264 -msgid "Manage/edit friends and contacts" -msgstr "Administrar/editar amigos y contactos" - -#: include/nav.php:200 mod/admin.php:204 -msgid "Admin" -msgstr "Admin" - -#: include/nav.php:200 -msgid "Site setup and configuration" -msgstr "Opciones y configuración del sitio" - -#: include/nav.php:203 -msgid "Navigation" -msgstr "Navegación" - -#: include/nav.php:203 -msgid "Site map" -msgstr "Mapa del sitio" - -#: include/Contact.php:397 include/Contact.php:410 include/Contact.php:455 -#: include/conversation.php:1022 include/conversation.php:1038 -#: mod/allfriends.php:71 mod/match.php:77 mod/suggest.php:82 -#: mod/directory.php:151 mod/dirfind.php:213 -msgid "View Profile" -msgstr "Ver perfil" - -#: include/Contact.php:454 include/conversation.php:1021 -msgid "View Status" -msgstr "Ver estado" - -#: include/Contact.php:456 include/conversation.php:1023 -msgid "View Photos" -msgstr "Ver fotos" - -#: include/Contact.php:457 include/conversation.php:1024 -msgid "Network Posts" -msgstr "Publicaciones en la red" - -#: include/Contact.php:458 include/conversation.php:1025 -msgid "View Contact" -msgstr "Ver contacto" - -#: include/Contact.php:459 -msgid "Drop Contact" -msgstr "Eliminar contacto" - -#: include/Contact.php:460 include/conversation.php:1026 -msgid "Send PM" -msgstr "Enviar mensaje privado" - -#: include/Contact.php:461 include/conversation.php:1030 -msgid "Poke" -msgstr "Toque" - -#: include/Contact.php:884 -msgid "Organisation" -msgstr "Organización" - -#: include/Contact.php:887 -msgid "News" -msgstr "Noticias" - -#: include/Contact.php:890 -msgid "Forum" -msgstr "Foro" - -#: include/Photo.php:995 include/Photo.php:1011 include/Photo.php:1019 -#: include/Photo.php:1044 include/message.php:139 mod/item.php:470 -#: mod/wall_upload.php:227 -msgid "Wall Photos" -msgstr "Foto del Muro" - -#: include/acl_selectors.php:355 -msgid "Post to Email" -msgstr "Publicar mediante correo electrónico" - -#: include/acl_selectors.php:360 -#, php-format -msgid "Connectors disabled, since \"%s\" is enabled." -msgstr "Conectores deshabilitados, ya que \"%s\" es habilitado." - -#: include/acl_selectors.php:361 mod/settings.php:1175 -msgid "Hide your profile details from unknown viewers?" -msgstr "¿Quieres que los detalles de tu perfil permanezcan ocultos a los desconocidos?" - -#: include/acl_selectors.php:367 -msgid "Visible to everybody" -msgstr "Visible para cualquiera" - -#: include/acl_selectors.php:368 view/theme/vier/config.php:110 -msgid "show" -msgstr "mostrar" - -#: include/acl_selectors.php:369 view/theme/vier/config.php:110 -msgid "don't show" -msgstr "no mostrar" - -#: include/acl_selectors.php:375 mod/editpost.php:126 -msgid "CC: email addresses" -msgstr "CC: dirección de correo electrónico" - -#: include/acl_selectors.php:376 mod/editpost.php:133 -msgid "Example: bob@example.com, mary@example.com" -msgstr "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com" - -#: include/acl_selectors.php:378 mod/events.php:532 mod/photos.php:1173 -#: mod/photos.php:1570 -msgid "Permissions" -msgstr "Permisos" - -#: include/acl_selectors.php:379 -msgid "Close" -msgstr "Cerrado" - -#: include/api.php:1104 -#, php-format -msgid "Daily posting limit of %d posts reached. The post was rejected." -msgstr "Limite diario de publicaciones %d alcanzado. La publicación fue rechazada." - -#: include/api.php:1125 -#, php-format -msgid "Weekly posting limit of %d posts reached. The post was rejected." -msgstr "Limite semanal de publicaciones %d alcanzado. La publicación fue rechazada." - -#: include/api.php:1146 -#, php-format -msgid "Monthly posting limit of %d posts reached. The post was rejected." -msgstr "Limite mensual de publicaciones %d alcanzado. La publicación fue rechazada." - -#: include/api.php:3718 include/user.php:302 include/user.php:310 -#: include/user.php:318 mod/photos.php:75 mod/photos.php:191 -#: mod/photos.php:778 mod/photos.php:1233 mod/photos.php:1254 -#: mod/photos.php:1840 mod/profile_photo.php:76 mod/profile_photo.php:84 -#: mod/profile_photo.php:92 mod/profile_photo.php:216 -#: mod/profile_photo.php:311 mod/profile_photo.php:321 +msgid "Monthly posting limit of %d post reached. The post was rejected." +msgstr "" + +#: include/api.php:4327 mod/photos.php:94 mod/photos.php:202 +#: mod/photos.php:735 mod/photos.php:1166 mod/photos.php:1183 +#: mod/photos.php:1676 mod/profile_photo.php:88 mod/profile_photo.php:97 +#: mod/profile_photo.php:106 mod/profile_photo.php:215 +#: mod/profile_photo.php:304 mod/profile_photo.php:314 src/Model/User.php:681 +#: src/Model/User.php:689 src/Model/User.php:697 msgid "Profile Photos" msgstr "Foto del perfil" -#: include/bbcode.php:429 include/bbcode.php:1192 include/bbcode.php:1193 -msgid "Image/photo" -msgstr "Imagen/Foto" - -#: include/bbcode.php:545 -#, php-format -msgid "%2$s %3$s" -msgstr "%2$s %3$s" - -#: include/bbcode.php:1149 include/bbcode.php:1171 -msgid "$1 wrote:" -msgstr "$1 escribió:" - -#: include/bbcode.php:1201 include/bbcode.php:1202 -msgid "Encrypted content" -msgstr "Contenido cifrado" - -#: include/bbcode.php:1321 -msgid "Invalid source protocol" -msgstr "Protocolo de fuente inválido" - -#: include/bbcode.php:1332 -msgid "Invalid link protocol" -msgstr "Protocolo de enlace inválido" - -#: include/contact_selectors.php:32 -msgid "Unknown | Not categorised" -msgstr "Desconocido | No clasificado" - -#: include/contact_selectors.php:33 -msgid "Block immediately" -msgstr "Bloquear inmediatamente" - -#: include/contact_selectors.php:34 -msgid "Shady, spammer, self-marketer" -msgstr "Sospechoso, spammer, auto-publicidad" - -#: include/contact_selectors.php:35 -msgid "Known to me, but no opinion" -msgstr "Le conozco, sin opinión" - -#: include/contact_selectors.php:36 -msgid "OK, probably harmless" -msgstr "OK, probablemente inofensivo" - -#: include/contact_selectors.php:37 -msgid "Reputable, has my trust" -msgstr "Buena reputación, tiene mi confianza" - -#: include/contact_selectors.php:56 mod/admin.php:1095 -msgid "Frequently" -msgstr "Frequentemente" - -#: include/contact_selectors.php:57 mod/admin.php:1096 -msgid "Hourly" -msgstr "Cada hora" - -#: include/contact_selectors.php:58 mod/admin.php:1097 -msgid "Twice daily" -msgstr "Dos veces al día" - -#: include/contact_selectors.php:59 mod/admin.php:1098 -msgid "Daily" -msgstr "Diariamente" - -#: include/contact_selectors.php:60 -msgid "Weekly" -msgstr "Semanalmente" - -#: include/contact_selectors.php:61 -msgid "Monthly" -msgstr "Mensualmente" - -#: include/contact_selectors.php:76 mod/dfrn_request.php:887 -msgid "Friendica" -msgstr "Friendica" - -#: include/contact_selectors.php:77 -msgid "OStatus" -msgstr "OStatus" - -#: include/contact_selectors.php:78 -msgid "RSS/Atom" -msgstr "RSS/Atom" - -#: include/contact_selectors.php:79 include/contact_selectors.php:86 -#: mod/admin.php:1612 mod/admin.php:1625 mod/admin.php:1638 mod/admin.php:1656 -msgid "Email" -msgstr "Correo electrónico" - -#: include/contact_selectors.php:80 mod/dfrn_request.php:889 -#: mod/settings.php:858 -msgid "Diaspora" -msgstr "Diaspora*" - -#: include/contact_selectors.php:81 -msgid "Facebook" -msgstr "Facebook" - -#: include/contact_selectors.php:82 -msgid "Zot!" -msgstr "Zot!" - -#: include/contact_selectors.php:83 -msgid "LinkedIn" -msgstr "LinkedIn" - -#: include/contact_selectors.php:84 -msgid "XMPP/IM" -msgstr "XMPP/IM" - -#: include/contact_selectors.php:85 -msgid "MySpace" -msgstr "MySpace" - -#: include/contact_selectors.php:87 -msgid "Google+" -msgstr "Google+" - -#: include/contact_selectors.php:88 -msgid "pump.io" -msgstr "pump.io" - -#: include/contact_selectors.php:89 -msgid "Twitter" -msgstr "Twitter" - -#: include/contact_selectors.php:90 -msgid "Diaspora Connector" -msgstr "Conector Diaspora" - -#: include/contact_selectors.php:91 -msgid "GNU Social Connector" -msgstr "Conector a GNU Social" - -#: include/contact_selectors.php:92 -msgid "pnut" -msgstr "pnut" - -#: include/contact_selectors.php:93 -msgid "App.net" -msgstr "App.net" - -#: include/conversation.php:135 include/conversation.php:287 -#: include/like.php:185 include/text.php:1894 +#: include/conversation.php:156 include/conversation.php:292 +#: src/Model/Item.php:3259 msgid "event" msgstr "evento" -#: include/conversation.php:138 include/conversation.php:148 -#: include/conversation.php:290 include/conversation.php:299 -#: include/diaspora.php:1787 include/like.php:183 mod/subthread.php:90 -#: mod/tagger.php:65 +#: include/conversation.php:159 include/conversation.php:169 +#: include/conversation.php:295 include/conversation.php:304 +#: mod/subthread.php:88 mod/tagger.php:70 msgid "status" msgstr "estado" -#: include/conversation.php:143 include/conversation.php:295 -#: include/like.php:183 include/text.php:1896 mod/subthread.php:90 -#: mod/tagger.php:65 +#: include/conversation.php:164 include/conversation.php:300 +#: mod/subthread.php:88 mod/tagger.php:70 src/Model/Item.php:3261 msgid "photo" msgstr "foto" -#: include/conversation.php:155 include/diaspora.php:1783 include/like.php:32 +#: include/conversation.php:176 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "A %1$s le gusta %3$s de %2$s" -#: include/conversation.php:158 include/like.php:36 include/like.php:41 +#: include/conversation.php:178 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "A %1$s no le gusta %3$s de %2$s" -#: include/conversation.php:161 +#: include/conversation.php:180 #, php-format msgid "%1$s attends %2$s's %3$s" msgstr "%1$s atenderá %2$s's %3$s" -#: include/conversation.php:164 +#: include/conversation.php:182 #, php-format msgid "%1$s doesn't attend %2$s's %3$s" msgstr "%1$s no atenderá %2$s's %3$s" -#: include/conversation.php:167 +#: include/conversation.php:184 #, php-format msgid "%1$s attends maybe %2$s's %3$s" msgstr "%1$s atenderá quizás %2$s's %3$s" -#: include/conversation.php:200 mod/dfrn_confirm.php:481 +#: include/conversation.php:219 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s ahora es amigo de %2$s" -#: include/conversation.php:241 +#: include/conversation.php:260 #, php-format msgid "%1$s poked %2$s" msgstr "%1$s le dio un toque a %2$s" -#: include/conversation.php:262 mod/mood.php:66 -#, php-format -msgid "%1$s is currently %2$s" -msgstr "%1$s está actualmente %2$s" - -#: include/conversation.php:309 mod/tagger.php:98 +#: include/conversation.php:314 mod/tagger.php:108 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s ha etiquetado el %3$s de %2$s con %4$s" @@ -1781,3471 +141,923 @@ msgstr "publicación/tema" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s ha marcado %3$s de %2$s como Favorito" -#: include/conversation.php:623 mod/photos.php:1639 mod/profiles.php:340 +#: include/conversation.php:551 mod/photos.php:1507 mod/profiles.php:356 msgid "Likes" msgstr "Me gusta" -#: include/conversation.php:623 mod/photos.php:1639 mod/profiles.php:344 +#: include/conversation.php:551 mod/photos.php:1507 mod/profiles.php:360 msgid "Dislikes" msgstr "No me gusta" -#: include/conversation.php:624 include/conversation.php:1559 -#: mod/photos.php:1640 +#: include/conversation.php:552 include/conversation.php:1484 +#: mod/photos.php:1508 msgid "Attending" msgid_plural "Attending" msgstr[0] "Atendiendo" msgstr[1] "Atendiendo" -#: include/conversation.php:624 mod/photos.php:1640 +#: include/conversation.php:552 mod/photos.php:1508 msgid "Not attending" msgstr "No atendiendo" -#: include/conversation.php:624 mod/photos.php:1640 +#: include/conversation.php:552 mod/photos.php:1508 msgid "Might attend" msgstr "Puede que atienda" -#: include/conversation.php:761 mod/photos.php:1705 object/Item.php:147 +#: include/conversation.php:632 mod/photos.php:1564 src/Object/Post.php:201 msgid "Select" msgstr "Seleccionar" -#: include/conversation.php:762 mod/admin.php:1630 mod/contacts.php:838 -#: mod/contacts.php:1037 mod/photos.php:1706 mod/settings.php:754 -#: object/Item.php:148 +#: include/conversation.php:633 mod/admin.php:1962 mod/photos.php:1565 +#: mod/settings.php:729 src/Module/Contact.php:828 src/Module/Contact.php:1103 msgid "Delete" msgstr "Eliminar" -#: include/conversation.php:806 object/Item.php:350 object/Item.php:351 +#: include/conversation.php:667 src/Object/Post.php:374 +#: src/Object/Post.php:375 #, php-format msgid "View %s's profile @ %s" msgstr "Ver perfil de %s @ %s" -#: include/conversation.php:818 object/Item.php:338 +#: include/conversation.php:679 src/Object/Post.php:362 msgid "Categories:" msgstr "Categorías:" -#: include/conversation.php:819 object/Item.php:339 +#: include/conversation.php:680 src/Object/Post.php:363 msgid "Filed under:" msgstr "Archivado en:" -#: include/conversation.php:826 object/Item.php:364 +#: include/conversation.php:687 src/Object/Post.php:388 #, php-format msgid "%s from %s" msgstr "%s de %s" -#: include/conversation.php:842 +#: include/conversation.php:702 msgid "View in context" msgstr "Verlo en contexto" -#: include/conversation.php:844 include/conversation.php:1316 -#: mod/editpost.php:117 mod/message.php:337 mod/message.php:522 -#: mod/wallmessage.php:143 mod/photos.php:1604 object/Item.php:389 +#: include/conversation.php:704 include/conversation.php:1152 +#: mod/editpost.php:108 mod/message.php:262 mod/message.php:444 +#: mod/photos.php:1480 mod/wallmessage.php:141 src/Object/Post.php:413 msgid "Please wait" msgstr "Por favor, espera" -#: include/conversation.php:921 +#: include/conversation.php:768 msgid "remove" msgstr "eliminar" -#: include/conversation.php:925 +#: include/conversation.php:772 msgid "Delete Selected Items" msgstr "Eliminar el elemento seleccionado" -#: include/conversation.php:1020 view/theme/frio/theme.php:347 +#: include/conversation.php:872 view/theme/frio/theme.php:369 msgid "Follow Thread" msgstr "Seguir publicacion" -#: include/conversation.php:1157 +#: include/conversation.php:873 src/Model/Contact.php:989 +msgid "View Status" +msgstr "Ver estado" + +#: include/conversation.php:874 include/conversation.php:890 +#: mod/allfriends.php:74 mod/directory.php:167 mod/dirfind.php:228 +#: mod/match.php:84 mod/suggest.php:86 src/Model/Contact.php:929 +#: src/Model/Contact.php:982 src/Model/Contact.php:990 +msgid "View Profile" +msgstr "Ver perfil" + +#: include/conversation.php:875 src/Model/Contact.php:991 +msgid "View Photos" +msgstr "Ver fotos" + +#: include/conversation.php:876 src/Model/Contact.php:983 +#: src/Model/Contact.php:992 +msgid "Network Posts" +msgstr "Publicaciones en la red" + +#: include/conversation.php:877 src/Model/Contact.php:984 +#: src/Model/Contact.php:993 +msgid "View Contact" +msgstr "Ver contacto" + +#: include/conversation.php:878 src/Model/Contact.php:995 +msgid "Send PM" +msgstr "Enviar mensaje privado" + +#: include/conversation.php:882 src/Model/Contact.php:996 +msgid "Poke" +msgstr "Toque" + +#: include/conversation.php:887 mod/allfriends.php:75 mod/dirfind.php:229 +#: mod/follow.php:148 mod/match.php:85 mod/suggest.php:87 +#: src/Content/Widget.php:62 src/Model/Contact.php:985 +#: src/Module/Contact.php:576 view/theme/vier/theme.php:201 +msgid "Connect/Follow" +msgstr "Conectar/Seguir" + +#: include/conversation.php:1006 #, php-format msgid "%s likes this." msgstr "A %s le gusta esto." -#: include/conversation.php:1160 +#: include/conversation.php:1009 #, php-format msgid "%s doesn't like this." msgstr "A %s no le gusta esto." -#: include/conversation.php:1163 +#: include/conversation.php:1012 #, php-format msgid "%s attends." msgstr "%s atiende." -#: include/conversation.php:1166 +#: include/conversation.php:1015 #, php-format msgid "%s doesn't attend." msgstr "%s no atenderá." -#: include/conversation.php:1169 +#: include/conversation.php:1018 #, php-format msgid "%s attends maybe." msgstr "%s quizás atenderá" -#: include/conversation.php:1180 +#: include/conversation.php:1029 msgid "and" msgstr "y" -#: include/conversation.php:1186 +#: include/conversation.php:1035 #, php-format -msgid ", and %d other people" +msgid "and %d other people" msgstr " y a otras %d personas" -#: include/conversation.php:1195 +#: include/conversation.php:1044 #, php-format msgid "%2$d people like this" msgstr "%2$d personas les gusta esto" -#: include/conversation.php:1196 +#: include/conversation.php:1045 #, php-format msgid "%s like this." msgstr "A %s le gusta esto." -#: include/conversation.php:1199 +#: include/conversation.php:1048 #, php-format msgid "%2$d people don't like this" msgstr "%2$d personas no les gusta esto" -#: include/conversation.php:1200 +#: include/conversation.php:1049 #, php-format msgid "%s don't like this." msgstr "A %s no le gusta esto." -#: include/conversation.php:1203 +#: include/conversation.php:1052 #, php-format msgid "%2$d people attend" msgstr "%2$d personas atienden" -#: include/conversation.php:1204 +#: include/conversation.php:1053 #, php-format msgid "%s attend." msgstr "%s atiende." -#: include/conversation.php:1207 +#: include/conversation.php:1056 #, php-format msgid "%2$d people don't attend" -msgstr "%2$d personasno atienden" +msgstr "%2$d personasno atienden." -#: include/conversation.php:1208 +#: include/conversation.php:1057 #, php-format msgid "%s don't attend." msgstr "%s no atiende." -#: include/conversation.php:1211 +#: include/conversation.php:1060 #, php-format msgid "%2$d people attend maybe" -msgstr "%2$d people quizá asistan" +msgstr "%2$d personas quizá asistan." -#: include/conversation.php:1212 +#: include/conversation.php:1061 #, php-format -msgid "%s anttend maybe." -msgstr "%s atiende quizás." +msgid "%s attend maybe." +msgstr "%s quizás atenderá." -#: include/conversation.php:1241 include/conversation.php:1257 +#: include/conversation.php:1091 msgid "Visible to everybody" msgstr "Visible para cualquiera" -#: include/conversation.php:1242 include/conversation.php:1258 -#: mod/message.php:271 mod/message.php:278 mod/message.php:418 -#: mod/message.php:425 mod/wallmessage.php:117 mod/wallmessage.php:124 -msgid "Please enter a link URL:" -msgstr "Introduce la dirección del enlace:" +#: include/conversation.php:1092 src/Object/Post.php:817 +msgid "Please enter a image/video/audio/webpage URL:" +msgstr "Por favor agregue la URL de una imagen, video, audio o sitio web." -#: include/conversation.php:1243 include/conversation.php:1259 -msgid "Please enter a video link/URL:" -msgstr "Por favor, introduce la URL/enlace del vídeo:" - -#: include/conversation.php:1244 include/conversation.php:1260 -msgid "Please enter an audio link/URL:" -msgstr "Por favor, introduce la URL/enlace del audio:" - -#: include/conversation.php:1245 include/conversation.php:1261 +#: include/conversation.php:1093 msgid "Tag term:" msgstr "Etiquetar:" -#: include/conversation.php:1246 include/conversation.php:1262 -#: mod/filer.php:31 +#: include/conversation.php:1094 mod/filer.php:35 msgid "Save to Folder:" msgstr "Guardar en directorio:" -#: include/conversation.php:1247 include/conversation.php:1263 +#: include/conversation.php:1095 msgid "Where are you right now?" msgstr "¿Dónde estás ahora?" -#: include/conversation.php:1248 +#: include/conversation.php:1096 msgid "Delete item(s)?" msgstr "¿Borrar objeto(s)?" -#: include/conversation.php:1297 +#: include/conversation.php:1128 +msgid "New Post" +msgstr "Nueva publicación" + +#: include/conversation.php:1131 msgid "Share" msgstr "Compartir" -#: include/conversation.php:1298 mod/editpost.php:103 mod/message.php:335 -#: mod/message.php:519 mod/wallmessage.php:141 +#: include/conversation.php:1132 mod/editpost.php:94 mod/message.php:260 +#: mod/message.php:441 mod/wallmessage.php:139 msgid "Upload photo" msgstr "Subir foto" -#: include/conversation.php:1299 mod/editpost.php:104 +#: include/conversation.php:1133 mod/editpost.php:95 msgid "upload photo" msgstr "subir imagen" -#: include/conversation.php:1300 mod/editpost.php:105 +#: include/conversation.php:1134 mod/editpost.php:96 msgid "Attach file" msgstr "Adjuntar archivo" -#: include/conversation.php:1301 mod/editpost.php:106 +#: include/conversation.php:1135 mod/editpost.php:97 msgid "attach file" msgstr "adjuntar archivo" -#: include/conversation.php:1302 mod/editpost.php:107 mod/message.php:336 -#: mod/message.php:520 mod/wallmessage.php:142 -msgid "Insert web link" -msgstr "Insertar enlace" +#: include/conversation.php:1136 src/Object/Post.php:809 +msgid "Bold" +msgstr "Negrita" -#: include/conversation.php:1303 mod/editpost.php:108 -msgid "web link" -msgstr "enlace web" +#: include/conversation.php:1137 src/Object/Post.php:810 +msgid "Italic" +msgstr "Cursiva" -#: include/conversation.php:1304 mod/editpost.php:109 -msgid "Insert video link" -msgstr "Insertar enlace del vídeo" +#: include/conversation.php:1138 src/Object/Post.php:811 +msgid "Underline" +msgstr "Subrayado" -#: include/conversation.php:1305 mod/editpost.php:110 -msgid "video link" -msgstr "enlace de video" +#: include/conversation.php:1139 src/Object/Post.php:812 +msgid "Quote" +msgstr "Cita" -#: include/conversation.php:1306 mod/editpost.php:111 -msgid "Insert audio link" -msgstr "Insertar vínculo del audio" +#: include/conversation.php:1140 src/Object/Post.php:813 +msgid "Code" +msgstr "Código" -#: include/conversation.php:1307 mod/editpost.php:112 -msgid "audio link" -msgstr "enlace de audio" +#: include/conversation.php:1141 src/Object/Post.php:814 +msgid "Image" +msgstr "Imagen" -#: include/conversation.php:1308 mod/editpost.php:113 +#: include/conversation.php:1142 src/Object/Post.php:815 +msgid "Link" +msgstr "Enlace" + +#: include/conversation.php:1143 src/Object/Post.php:816 +msgid "Link or Media" +msgstr "Enlace o Multimedia" + +#: include/conversation.php:1144 mod/editpost.php:104 msgid "Set your location" msgstr "Configurar tu localización" -#: include/conversation.php:1309 mod/editpost.php:114 +#: include/conversation.php:1145 mod/editpost.php:105 msgid "set location" msgstr "establecer tu ubicación" -#: include/conversation.php:1310 mod/editpost.php:115 +#: include/conversation.php:1146 mod/editpost.php:106 msgid "Clear browser location" msgstr "Borrar la localización del navegador" -#: include/conversation.php:1311 mod/editpost.php:116 +#: include/conversation.php:1147 mod/editpost.php:107 msgid "clear location" msgstr "limpiar la localización" -#: include/conversation.php:1313 mod/editpost.php:130 +#: include/conversation.php:1149 mod/editpost.php:122 msgid "Set title" msgstr "Establecer el título" -#: include/conversation.php:1315 mod/editpost.php:132 +#: include/conversation.php:1151 mod/editpost.php:124 msgid "Categories (comma-separated list)" msgstr "Categorías (lista separada por comas)" -#: include/conversation.php:1317 mod/editpost.php:118 +#: include/conversation.php:1153 mod/editpost.php:109 msgid "Permission settings" msgstr "Configuración de permisos" -#: include/conversation.php:1318 mod/editpost.php:147 +#: include/conversation.php:1154 mod/editpost.php:139 msgid "permissions" msgstr "permisos" -#: include/conversation.php:1326 mod/editpost.php:127 +#: include/conversation.php:1163 mod/editpost.php:119 msgid "Public post" msgstr "Publicación pública" -#: include/conversation.php:1331 mod/editpost.php:138 mod/events.php:527 -#: mod/photos.php:1624 mod/photos.php:1666 mod/photos.php:1746 -#: object/Item.php:711 +#: include/conversation.php:1167 mod/editpost.php:130 mod/events.php:566 +#: mod/photos.php:1498 mod/photos.php:1537 mod/photos.php:1597 +#: src/Object/Post.php:818 msgid "Preview" msgstr "Vista previa" -#: include/conversation.php:1335 include/items.php:2154 -#: mod/dfrn_request.php:895 mod/editpost.php:141 mod/follow.php:161 -#: mod/message.php:210 mod/tagrm.php:14 mod/tagrm.php:99 mod/suggest.php:35 -#: mod/fbrowser.php:104 mod/fbrowser.php:139 mod/unfollow.php:117 -#: mod/contacts.php:469 mod/photos.php:249 mod/photos.php:341 -#: mod/settings.php:692 mod/settings.php:718 mod/videos.php:136 +#: include/conversation.php:1171 include/items.php:399 +#: mod/dfrn_request.php:654 mod/editpost.php:133 mod/fbrowser.php:105 +#: mod/fbrowser.php:136 mod/follow.php:162 mod/message.php:153 +#: mod/photos.php:258 mod/photos.php:330 mod/settings.php:669 +#: mod/settings.php:695 mod/suggest.php:44 mod/tagrm.php:20 mod/tagrm.php:113 +#: mod/unfollow.php:132 mod/videos.php:140 src/Module/Contact.php:448 msgid "Cancel" msgstr "Cancelar" -#: include/conversation.php:1341 +#: include/conversation.php:1176 msgid "Post to Groups" msgstr "Publicar hacia grupos" -#: include/conversation.php:1342 +#: include/conversation.php:1177 msgid "Post to Contacts" msgstr "Publicar hacia contactos" -#: include/conversation.php:1343 +#: include/conversation.php:1178 msgid "Private post" msgstr "Publicación privada" -#: include/conversation.php:1348 include/identity.php:268 mod/editpost.php:145 +#: include/conversation.php:1183 mod/editpost.php:137 +#: src/Model/Profile.php:364 msgid "Message" msgstr "Mensaje" -#: include/conversation.php:1349 mod/editpost.php:146 +#: include/conversation.php:1184 mod/editpost.php:138 msgid "Browser" msgstr "Navegador" -#: include/conversation.php:1531 +#: include/conversation.php:1455 msgid "View all" msgstr "Ver todos los contactos" -#: include/conversation.php:1553 +#: include/conversation.php:1478 msgid "Like" msgid_plural "Likes" msgstr[0] "Me gusta" msgstr[1] "Me gusta" -#: include/conversation.php:1556 +#: include/conversation.php:1481 msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "No me gusta" msgstr[1] "No me gusta" -#: include/conversation.php:1562 +#: include/conversation.php:1487 msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "No atendiendo" msgstr[1] "No atendiendo" -#: include/dba.php:57 +#: include/conversation.php:1490 src/Content/ContactSelector.php:148 +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "Indeciso" +msgstr[1] "Indeciso" + +#: include/enotify.php:55 +msgid "Friendica Notification" +msgstr "Notificación de Friendica" + +#: include/enotify.php:58 +msgid "Thank You," +msgstr "Gracias," + +#: include/enotify.php:61 #, php-format -msgid "Cannot locate DNS info for database server '%s'" -msgstr "No se puede encontrar información DNS para la base de datos del servidor '%s'" +msgid "%1$s, %2$s Administrator" +msgstr "%1$s, %2$s Administrador" -#: include/dbstructure.php:24 -msgid "There are no tables on MyISAM." -msgstr "No hay tablas en MyISAM" +#: include/enotify.php:63 +#, php-format +msgid "%s Administrator" +msgstr "%s Administrador" -#: include/dbstructure.php:65 +#: include/enotify.php:126 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" +msgstr "[Friendica:Notificación] Nuevo correo recibido de %s" + +#: include/enotify.php:128 +#, php-format +msgid "%1$s sent you a new private message at %2$s." +msgstr "%1$s te ha enviado un mensaje privado desde %2$s." + +#: include/enotify.php:129 +msgid "a private message" +msgstr "un mensaje privado" + +#: include/enotify.php:129 +#, php-format +msgid "%1$s sent you %2$s." +msgstr "%1$s te ha enviado %2$s." + +#: include/enotify.php:131 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." +msgstr "Por favor, visita %s para ver y/o responder a tus mensajes privados." + +#: include/enotify.php:165 +#, php-format +msgid "%1$s commented on [url=%2$s]a %3$s[/url]" +msgstr "%1$s comentó en [url=%2$s]a %3$s[/url]" + +#: include/enotify.php:173 +#, php-format +msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" +msgstr "%1$s comentó en [url=%2$s] %4$s de %3$s[/url]" + +#: include/enotify.php:183 +#, php-format +msgid "%1$s commented on [url=%2$s]your %3$s[/url]" +msgstr "%1$s comentó en [url=%2$s] tu %3$s[/url]" + +#: include/enotify.php:195 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" +msgstr "[Friendica:Notificación] Comentario en la conversación de #%1$d por %2$s" + +#: include/enotify.php:197 +#, php-format +msgid "%s commented on an item/conversation you have been following." +msgstr "%s ha comentado en una conversación/elemento que sigues." + +#: include/enotify.php:200 include/enotify.php:215 include/enotify.php:230 +#: include/enotify.php:245 include/enotify.php:264 include/enotify.php:280 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." +msgstr "Por favor, visita %s para ver y/o responder a la conversación." + +#: include/enotify.php:207 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" +msgstr "[Friendica:Notificación] %s publicó en tu muro" + +#: include/enotify.php:209 +#, php-format +msgid "%1$s posted to your profile wall at %2$s" +msgstr "%1$s publicó en tu muro de %2$s" + +#: include/enotify.php:210 +#, php-format +msgid "%1$s posted to [url=%2$s]your wall[/url]" +msgstr "%1$s publicó en [url=%2$s]tu muro[/url]" + +#: include/enotify.php:222 +#, php-format +msgid "[Friendica:Notify] %s tagged you" +msgstr "[Friendica:Notificación] %s te ha etiquetado" + +#: include/enotify.php:224 +#, php-format +msgid "%1$s tagged you at %2$s" +msgstr "%1$s te ha etiquetado en %2$s" + +#: include/enotify.php:225 +#, php-format +msgid "%1$s [url=%2$s]tagged you[/url]." +msgstr "%1$s [url=%2$s]te etiquetó[/url]." + +#: include/enotify.php:237 +#, php-format +msgid "[Friendica:Notify] %s shared a new post" +msgstr "[Notificacion Friendica] %s compartió una nueva publicación" + +#: include/enotify.php:239 +#, php-format +msgid "%1$s shared a new post at %2$s" +msgstr "%1$s compartió un nuevo tema en %2$s" + +#: include/enotify.php:240 +#, php-format +msgid "%1$s [url=%2$s]shared a post[/url]." +msgstr "%1$s [url=%2$s]compartió una publicación[/url]." + +#: include/enotify.php:252 +#, php-format +msgid "[Friendica:Notify] %1$s poked you" +msgstr "[Friendica:Notify] %1$s te dio un toque" + +#: include/enotify.php:254 +#, php-format +msgid "%1$s poked you at %2$s" +msgstr "%1$s te dio un toque en %2$s" + +#: include/enotify.php:255 +#, php-format +msgid "%1$s [url=%2$s]poked you[/url]." +msgstr "%1$s [url=%2$s]te dio un toque[/url]." + +#: include/enotify.php:272 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" +msgstr "[Friendica:Notificación] %s ha etiquetado tu publicación" + +#: include/enotify.php:274 +#, php-format +msgid "%1$s tagged your post at %2$s" +msgstr "%1$s ha etiquetado tu publicación en %2$s" + +#: include/enotify.php:275 +#, php-format +msgid "%1$s tagged [url=%2$s]your post[/url]" +msgstr "%1$s ha etiquetado [url=%2$s]tu publicación[/url]" + +#: include/enotify.php:287 +msgid "[Friendica:Notify] Introduction received" +msgstr "[Friendica:Notificación] Sugerencia de amistad recibida" + +#: include/enotify.php:289 +#, php-format +msgid "You've received an introduction from '%1$s' at %2$s" +msgstr "Has recibido una sugerencia de amistad de '%1$s' en %2$s" + +#: include/enotify.php:290 +#, php-format +msgid "You've received [url=%1$s]an introduction[/url] from %2$s." +msgstr "Has recibido [url=%1$s]una sugerencia de amistad de [/url] de %2$s." + +#: include/enotify.php:295 include/enotify.php:341 +#, php-format +msgid "You may visit their profile at %s" +msgstr "Puedes visitar su perfil en %s" + +#: include/enotify.php:297 +#, php-format +msgid "Please visit %s to approve or reject the introduction." +msgstr " Por favor visita %s para aceptar o rechazar la sugerencia de amistad" + +#: include/enotify.php:304 +msgid "[Friendica:Notify] A new person is sharing with you" +msgstr "[Notificación:Friendica] Un nuevo contacto comparte contigo" + +#: include/enotify.php:306 include/enotify.php:307 +#, php-format +msgid "%1$s is sharing with you at %2$s" +msgstr "%1$s comparte contigo en %2$s" + +#: include/enotify.php:314 +msgid "[Friendica:Notify] You have a new follower" +msgstr "[Notificación:Friendica] Tienes un nuevo seguidor" + +#: include/enotify.php:316 include/enotify.php:317 +#, php-format +msgid "You have a new follower at %2$s : %1$s" +msgstr "Tienes un nuevo seguidor en %2$s : %1$s" + +#: include/enotify.php:330 +msgid "[Friendica:Notify] Friend suggestion received" +msgstr "[Friendica:Notificación] Sugerencia de amistad recibida" + +#: include/enotify.php:332 +#, php-format +msgid "You've received a friend suggestion from '%1$s' at %2$s" +msgstr "Has recibido una sugerencia de amigo de '%1$s' en %2$s" + +#: include/enotify.php:333 #, php-format msgid "" -"\n" -"\t\t\tThe friendica developers released update %s recently,\n" -"\t\t\tbut when I tried to install it, something went terribly wrong.\n" -"\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n" -"\t\t\tfriendica developer if you can not help me on your own. My database might be invalid." -msgstr "\n\t\t\tLos desarolladores de friendica publicaron una actualización %s recientemente\n\t\t\tpero cuando intento de instalarla,algo salio terriblemente mal.\n\t\t\tEsto necesita ser arreglado pronto y no puedo hacerlo solo. Por favor contacta\n\t\t\tlos desarolladores de friendica si no me podes ayudar por ti solo. Mi base de datos puede estar invalido." +"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." +msgstr "Has recibido [url=%1$s]una sugerencia de amigo[/url] en %2$s de %3$s." -#: include/dbstructure.php:70 +#: include/enotify.php:339 +msgid "Name:" +msgstr "Nombre: " + +#: include/enotify.php:340 +msgid "Photo:" +msgstr "Foto: " + +#: include/enotify.php:343 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." +msgstr "Visita %s para aceptar o rechazar la sugerencia por favor." + +#: include/enotify.php:351 include/enotify.php:366 +msgid "[Friendica:Notify] Connection accepted" +msgstr "[Notificación:Friendica] Conexión aceptada" + +#: include/enotify.php:353 include/enotify.php:368 +#, php-format +msgid "'%1$s' has accepted your connection request at %2$s" +msgstr "'%1$s' acepto tu consulta de conexión %2$s" + +#: include/enotify.php:354 include/enotify.php:369 +#, php-format +msgid "%2$s has accepted your [url=%1$s]connection request[/url]." +msgstr "%2$s hacepto tu [url=%1$s]consulta de conexión[/url]." + +#: include/enotify.php:359 +msgid "" +"You are now mutual friends and may exchange status updates, photos, and " +"email without restriction." +msgstr "Ahora tiene amigos en común y puede intercambiar actualizaciones de estado, fotos y email sin restricción." + +#: include/enotify.php:361 +#, php-format +msgid "Please visit %s if you wish to make any changes to this relationship." +msgstr "Por favor visite %s si desea hacer algún cambio a su relación." + +#: include/enotify.php:374 #, php-format msgid "" -"The error message is\n" -"[pre]%s[/pre]" -msgstr "El mensaje de error es\n[pre]%s[/pre]" +"'%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 "'%1$s' te ha aceptado como fan, lo que restringe algunas formas de comunicación - como conversaciones privadas y algunas interacciones de perfil. Si es una celebridad o una página comunitaria, estos ajustes son aplicados automáticamente." -#: include/dbstructure.php:192 +#: include/enotify.php:376 #, php-format msgid "" -"\n" -"Error %d occurred during database update:\n" -"%s\n" -msgstr "\nError %d ocurrido durante la actualización de la base de datos:\n%s\n" +"'%1$s' may choose to extend this into a two-way or more permissive " +"relationship in the future." +msgstr "'%1$s' puede elegir extender esto en una relación más permisiva o ambidireccional en el futuro." -#: include/dbstructure.php:195 -msgid "Errors encountered performing database changes: " -msgstr "Errores encontrados al realizar cambios en la base de datos: " - -#: include/dbstructure.php:203 -msgid ": Database update" -msgstr ": Actualización de la base de datos" - -#: include/dbstructure.php:436 +#: include/enotify.php:378 #, php-format -msgid "%s: updating %s table." -msgstr "%s: actualizando %s tabla." +msgid "Please visit %s if you wish to make any changes to this relationship." +msgstr "Por favor visita %s si es preciso de hacer algún cambio a la relación con este contacto." -#: include/delivery.php:429 -msgid "(no subject)" -msgstr "(sin asunto)" +#: include/enotify.php:388 mod/removeme.php:47 +msgid "[Friendica System Notify]" +msgstr "[Friendica Sistema de Notificaciones]" -#: include/dfrn.php:1360 +#: include/enotify.php:388 +msgid "registration request" +msgstr "petición de registro" + +#: include/enotify.php:390 #, php-format -msgid "%s\\'s birthday" -msgstr "%s\\'s cumpleaños" +msgid "You've received a registration request from '%1$s' at %2$s" +msgstr "Recibiste una consulta de registro de '%1$s' en %2$s" -#: include/diaspora.php:2351 -msgid "Sharing notification from Diaspora network" -msgstr "Compartir notificaciones con la red Diaspora*" - -#: include/diaspora.php:3344 -msgid "Attachments:" -msgstr "Archivos adjuntos:" - -#: include/event.php:445 -msgid "all-day" -msgstr "todo el día" - -#: include/event.php:447 -msgid "Sun" -msgstr "Dom" - -#: include/event.php:448 include/text.php:1220 -msgid "Mon" -msgstr "Lun" - -#: include/event.php:449 include/text.php:1220 -msgid "Tue" -msgstr "Mar" - -#: include/event.php:450 include/text.php:1220 -msgid "Wed" -msgstr "Mie" - -#: include/event.php:451 include/text.php:1220 -msgid "Thu" -msgstr "Jue" - -#: include/event.php:452 include/text.php:1220 -msgid "Fri" -msgstr "Vie" - -#: include/event.php:453 include/text.php:1220 -msgid "Sat" -msgstr "Sab" - -#: include/event.php:455 include/text.php:1202 mod/settings.php:986 -msgid "Sunday" -msgstr "Domingo" - -#: include/event.php:456 include/text.php:1202 mod/settings.php:986 -msgid "Monday" -msgstr "Lunes" - -#: include/event.php:457 include/text.php:1202 -msgid "Tuesday" -msgstr "Martes" - -#: include/event.php:458 include/text.php:1202 -msgid "Wednesday" -msgstr "Miércoles" - -#: include/event.php:459 include/text.php:1202 -msgid "Thursday" -msgstr "Jueves" - -#: include/event.php:460 include/text.php:1202 -msgid "Friday" -msgstr "Viernes" - -#: include/event.php:461 include/text.php:1202 -msgid "Saturday" -msgstr "Sábado" - -#: include/event.php:463 include/text.php:1223 -msgid "Jan" -msgstr "Ene" - -#: include/event.php:464 include/text.php:1223 -msgid "Feb" -msgstr "Feb" - -#: include/event.php:465 include/text.php:1223 -msgid "Mar" -msgstr "Mar" - -#: include/event.php:466 include/text.php:1223 -msgid "Apr" -msgstr "Abr" - -#: include/event.php:467 include/event.php:480 include/text.php:1206 -#: include/text.php:1223 -msgid "May" -msgstr "Mayo" - -#: include/event.php:468 -msgid "Jun" -msgstr "Jun" - -#: include/event.php:469 include/text.php:1223 -msgid "Jul" -msgstr "Jul" - -#: include/event.php:470 include/text.php:1223 -msgid "Aug" -msgstr "Ago" - -#: include/event.php:471 -msgid "Sept" -msgstr "Sept" - -#: include/event.php:472 include/text.php:1223 -msgid "Oct" -msgstr "Oct" - -#: include/event.php:473 include/text.php:1223 -msgid "Nov" -msgstr "Nov" - -#: include/event.php:474 include/text.php:1223 -msgid "Dec" -msgstr "Dec" - -#: include/event.php:476 include/text.php:1206 -msgid "January" -msgstr "Enero" - -#: include/event.php:477 include/text.php:1206 -msgid "February" -msgstr "Febrero" - -#: include/event.php:478 include/text.php:1206 -msgid "March" -msgstr "Marzo" - -#: include/event.php:479 include/text.php:1206 -msgid "April" -msgstr "Abril" - -#: include/event.php:481 include/text.php:1206 -msgid "June" -msgstr "Junio" - -#: include/event.php:482 include/text.php:1206 -msgid "July" -msgstr "Julio" - -#: include/event.php:483 include/text.php:1206 -msgid "August" -msgstr "Agosto" - -#: include/event.php:484 include/text.php:1206 -msgid "September" -msgstr "Septiembre" - -#: include/event.php:485 include/text.php:1206 -msgid "October" -msgstr "Octubre" - -#: include/event.php:486 include/text.php:1206 -msgid "November" -msgstr "Noviembre" - -#: include/event.php:487 include/text.php:1206 -msgid "December" -msgstr "Diciembre" - -#: include/event.php:489 mod/cal.php:281 mod/events.php:392 -msgid "today" -msgstr "hoy" - -#: include/event.php:494 -msgid "No events to display" -msgstr "No hay eventos a mostrar" - -#: include/event.php:608 -msgid "l, F j" -msgstr "l, F j" - -#: include/event.php:629 -msgid "Edit event" -msgstr "Editar evento" - -#: include/event.php:630 -msgid "Duplicate event" -msgstr "Duplicar evento" - -#: include/event.php:631 -msgid "Delete event" -msgstr "Borrar evento" - -#: include/event.php:658 include/text.php:1618 include/text.php:1625 -msgid "link to source" -msgstr "Enlace al original" - -#: include/event.php:915 -msgid "Export" -msgstr "Exportar" - -#: include/event.php:916 -msgid "Export calendar as ical" -msgstr "Exportar calendario como ical" - -#: include/event.php:917 -msgid "Export calendar as csv" -msgstr "Exportar calendario como csv" - -#: include/event.php:934 -msgid "D g:i A" -msgstr "D g:i A" - -#: include/event.php:935 -msgid "g:i A" -msgstr "g:i A" - -#: include/event.php:1004 include/event.php:1006 -msgid "Show map" -msgstr "Mostrar mapa" - -#: include/event.php:1005 -msgid "Hide map" -msgstr "Ocultar mapa" - -#: include/follow.php:87 mod/dfrn_request.php:515 -msgid "Disallowed profile URL." -msgstr "Dirección de perfil no permitida." - -#: include/follow.php:92 mod/dfrn_request.php:521 mod/friendica.php:116 -#: mod/admin.php:290 mod/admin.php:308 -msgid "Blocked domain" -msgstr "Dominio bloqueado" - -#: include/follow.php:97 -msgid "Connect URL missing." -msgstr "Falta el conector URL." - -#: include/follow.php:129 -msgid "" -"This site is not configured to allow communications with other networks." -msgstr "Este sitio no está configurado para permitir la comunicación con otras redes." - -#: include/follow.php:130 include/follow.php:144 -msgid "No compatible communication protocols or feeds were discovered." -msgstr "No se ha descubierto protocolos de comunicación o fuentes compatibles." - -#: include/follow.php:142 -msgid "The profile address specified does not provide adequate information." -msgstr "La dirección del perfil especificado no proporciona información adecuada." - -#: include/follow.php:147 -msgid "An author or name was not found." -msgstr "No se ha encontrado un autor o nombre." - -#: include/follow.php:150 -msgid "No browser URL could be matched to this address." -msgstr "Ninguna dirección concuerda con la suministrada." - -#: include/follow.php:153 -msgid "" -"Unable to match @-style Identity Address with a known protocol or email " -"contact." -msgstr "Imposible identificar la dirección @ con algún protocolo conocido o dirección de contacto." - -#: include/follow.php:154 -msgid "Use mailto: in front of address to force email check." -msgstr "Escribe mailto: al principio de la dirección para forzar el envío." - -#: include/follow.php:160 -msgid "" -"The profile address specified belongs to a network which has been disabled " -"on this site." -msgstr "La dirección del perfil especificada pertenece a una red que ha sido deshabilitada en este sitio." - -#: include/follow.php:165 -msgid "" -"Limited profile. This person will be unable to receive direct/personal " -"notifications from you." -msgstr "Perfil limitado. Esta persona no podrá recibir notificaciones directas/personales tuyas." - -#: include/follow.php:236 -msgid "Unable to retrieve contact information." -msgstr "No ha sido posible recibir la información del contacto." - -#: include/identity.php:47 -msgid "Requested account is not available." -msgstr "La cuenta solicitada no está disponible." - -#: include/identity.php:56 mod/profile.php:23 -msgid "Requested profile is not available." -msgstr "El perfil solicitado no está disponible." - -#: include/identity.php:100 include/identity.php:323 include/identity.php:756 -msgid "Edit profile" -msgstr "Editar perfil" - -#: include/identity.php:263 -msgid "Atom feed" -msgstr "Atom feed" - -#: include/identity.php:294 -msgid "Manage/edit profiles" -msgstr "Administrar/editar perfiles" - -#: include/identity.php:299 include/identity.php:325 mod/profiles.php:786 -msgid "Change profile photo" -msgstr "Cambiar foto del perfil" - -#: include/identity.php:300 mod/profiles.php:787 -msgid "Create New Profile" -msgstr "Crear nuevo perfil" - -#: include/identity.php:310 mod/profiles.php:776 -msgid "Profile Image" -msgstr "Imagen del Perfil" - -#: include/identity.php:313 mod/profiles.php:778 -msgid "visible to everybody" -msgstr "Visible para todos" - -#: include/identity.php:314 mod/profiles.php:683 mod/profiles.php:779 -msgid "Edit visibility" -msgstr "Editar visibilidad" - -#: include/identity.php:342 include/identity.php:643 mod/notifications.php:253 -#: mod/directory.php:135 -msgid "Gender:" -msgstr "Género:" - -#: include/identity.php:345 include/identity.php:666 mod/directory.php:137 -msgid "Status:" -msgstr "Estado:" - -#: include/identity.php:347 include/identity.php:683 mod/directory.php:139 -msgid "Homepage:" -msgstr "Página de inicio:" - -#: include/identity.php:349 include/identity.php:703 mod/notifications.php:249 -#: mod/directory.php:141 mod/contacts.php:662 -msgid "About:" -msgstr "Acerca de:" - -#: include/identity.php:351 mod/contacts.php:660 -msgid "XMPP:" -msgstr "XMPP:" - -#: include/identity.php:437 mod/notifications.php:261 mod/contacts.php:60 -msgid "Network:" -msgstr "Red:" - -#: include/identity.php:466 include/identity.php:557 -msgid "g A l F d" -msgstr "g A l F d" - -#: include/identity.php:467 include/identity.php:558 -msgid "F d" -msgstr "F d" - -#: include/identity.php:519 include/identity.php:605 -msgid "[today]" -msgstr "[hoy]" - -#: include/identity.php:531 -msgid "Birthday Reminders" -msgstr "Recordatorios de cumpleaños" - -#: include/identity.php:532 -msgid "Birthdays this week:" -msgstr "Cumpleaños esta semana:" - -#: include/identity.php:592 -msgid "[No description]" -msgstr "[Sin descripción]" - -#: include/identity.php:619 -msgid "Event Reminders" -msgstr "Recordatorios de eventos" - -#: include/identity.php:620 -msgid "Events this week:" -msgstr "Eventos de esta semana:" - -#: include/identity.php:640 mod/settings.php:1273 -msgid "Full Name:" -msgstr "Nombre completo:" - -#: include/identity.php:647 -msgid "j F, Y" -msgstr "j F, Y" - -#: include/identity.php:648 -msgid "j F" -msgstr "j F" - -#: include/identity.php:662 -msgid "Age:" -msgstr "Edad:" - -#: include/identity.php:675 +#: include/enotify.php:391 #, php-format -msgid "for %1$d %2$s" -msgstr "por %1$d %2$s" +msgid "You've received a [url=%1$s]registration request[/url] from %2$s." +msgstr "Recibiste una [url=%1$s]consulta de registro[/url] from %2$s." -#: include/identity.php:679 mod/profiles.php:702 -msgid "Sexual Preference:" -msgstr "Preferencia sexual:" +#: include/enotify.php:396 +#, php-format +msgid "" +"Full Name:\t%s\n" +"Site Location:\t%s\n" +"Login Name:\t%s (%s)" +msgstr "Nombre Completo:\t%s\nDireccion del sitio:\t%s\nNombre de usuario:\t%s (%s)" -#: include/identity.php:687 mod/profiles.php:729 -msgid "Hometown:" -msgstr "Ciudad de origen:" +#: include/enotify.php:402 +#, php-format +msgid "Please visit %s to approve or reject the request." +msgstr "Por favor visita %s para aprobar o negar la solicitud." -#: include/identity.php:691 mod/follow.php:174 mod/notifications.php:251 -#: mod/contacts.php:664 -msgid "Tags:" -msgstr "Etiquetas:" - -#: include/identity.php:695 mod/profiles.php:730 -msgid "Political Views:" -msgstr "Ideas políticas:" - -#: include/identity.php:699 -msgid "Religion:" -msgstr "Religión:" - -#: include/identity.php:707 -msgid "Hobbies/Interests:" -msgstr "Aficiones/Intereses:" - -#: include/identity.php:711 mod/profiles.php:734 -msgid "Likes:" -msgstr "Me gusta:" - -#: include/identity.php:715 mod/profiles.php:735 -msgid "Dislikes:" -msgstr "No me gusta:" - -#: include/identity.php:719 -msgid "Contact information and Social Networks:" -msgstr "Información de contacto y Redes sociales:" - -#: include/identity.php:723 -msgid "Musical interests:" -msgstr "Intereses musicales:" - -#: include/identity.php:727 -msgid "Books, literature:" -msgstr "Libros, literatura:" - -#: include/identity.php:731 -msgid "Television:" -msgstr "Televisión:" - -#: include/identity.php:735 -msgid "Film/dance/culture/entertainment:" -msgstr "Películas/baile/cultura/entretenimiento:" - -#: include/identity.php:739 -msgid "Love/Romance:" -msgstr "Amor/Romance:" - -#: include/identity.php:743 -msgid "Work/employment:" -msgstr "Trabajo/ocupación:" - -#: include/identity.php:747 -msgid "School/education:" -msgstr "Escuela/estudios:" - -#: include/identity.php:752 -msgid "Forums:" -msgstr "Foros:" - -#: include/identity.php:761 mod/events.php:530 -msgid "Basic" -msgstr "Basic" - -#: include/identity.php:762 mod/admin.php:1181 mod/contacts.php:900 -#: mod/events.php:531 -msgid "Advanced" -msgstr "Avanzado" - -#: include/identity.php:788 mod/follow.php:182 mod/unfollow.php:133 -#: mod/contacts.php:866 -msgid "Status Messages and Posts" -msgstr "Mensajes de Estado y Publicaciones" - -#: include/identity.php:796 mod/contacts.php:874 -msgid "Profile Details" -msgstr "Detalles del Perfil" - -#: include/identity.php:804 mod/photos.php:97 -msgid "Photo Albums" -msgstr "Álbum de Fotos" - -#: include/identity.php:843 mod/notes.php:49 -msgid "Personal Notes" -msgstr "Notas personales" - -#: include/identity.php:846 -msgid "Only You Can See This" -msgstr "Únicamente tú puedes ver esto" - -#: include/items.php:1731 mod/dfrn_request.php:760 mod/dfrn_confirm.php:739 -msgid "[Name Withheld]" -msgstr "[Nombre oculto]" - -#: include/items.php:2106 mod/viewsrc.php:16 mod/notice.php:18 -#: mod/admin.php:258 mod/admin.php:1687 mod/admin.php:1938 mod/display.php:106 -#: mod/display.php:279 mod/display.php:487 +#: include/items.php:356 mod/admin.php:285 mod/admin.php:2020 +#: mod/admin.php:2266 mod/notice.php:21 mod/viewsrc.php:22 msgid "Item not found." msgstr "Elemento no encontrado." -#: include/items.php:2149 +#: include/items.php:394 msgid "Do you really want to delete this item?" msgstr "¿Realmente quieres borrar este objeto?" -#: include/items.php:2151 mod/api.php:107 mod/dfrn_request.php:881 -#: mod/follow.php:150 mod/message.php:207 mod/suggest.php:32 -#: mod/contacts.php:466 mod/profiles.php:639 mod/profiles.php:642 -#: mod/profiles.php:669 mod/register.php:250 mod/settings.php:1158 -#: mod/settings.php:1164 mod/settings.php:1171 mod/settings.php:1175 -#: mod/settings.php:1180 mod/settings.php:1185 mod/settings.php:1190 -#: mod/settings.php:1195 mod/settings.php:1221 mod/settings.php:1222 -#: mod/settings.php:1223 mod/settings.php:1224 mod/settings.php:1225 +#: include/items.php:396 mod/api.php:112 mod/dfrn_request.php:644 +#: mod/follow.php:151 mod/message.php:150 mod/profiles.php:542 +#: mod/profiles.php:545 mod/profiles.php:567 mod/register.php:232 +#: mod/settings.php:1088 mod/settings.php:1094 mod/settings.php:1101 +#: mod/settings.php:1105 mod/settings.php:1109 mod/settings.php:1113 +#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1141 +#: mod/settings.php:1142 mod/settings.php:1143 mod/settings.php:1144 +#: mod/settings.php:1145 mod/suggest.php:41 src/Module/Contact.php:445 msgid "Yes" msgstr "Sí" -#: include/items.php:2290 mod/api.php:28 mod/api.php:33 mod/attach.php:35 -#: mod/common.php:20 mod/crepair.php:105 mod/nogroup.php:29 -#: mod/viewcontacts.php:49 mod/uimport.php:26 mod/allfriends.php:15 -#: mod/cal.php:302 mod/editpost.php:13 mod/follow.php:14 mod/follow.php:55 -#: mod/follow.php:118 mod/group.php:21 mod/invite.php:18 mod/invite.php:106 -#: mod/manage.php:104 mod/message.php:49 mod/message.php:172 -#: mod/notifications.php:74 mod/repair_ostatus.php:12 mod/wallmessage.php:12 -#: mod/wallmessage.php:36 mod/wallmessage.php:76 mod/wallmessage.php:100 -#: mod/delegate.php:15 mod/suggest.php:58 mod/unfollow.php:14 -#: mod/unfollow.php:57 mod/unfollow.php:90 mod/contacts.php:374 -#: mod/dfrn_confirm.php:65 mod/dirfind.php:17 mod/display.php:484 -#: mod/events.php:190 mod/fsuggest.php:81 mod/item.php:199 mod/item.php:211 -#: mod/mood.php:118 mod/network.php:17 mod/notes.php:25 -#: mod/ostatus_subscribe.php:12 mod/photos.php:170 mod/photos.php:1095 -#: mod/poke.php:157 mod/profile_photo.php:21 mod/profile_photo.php:181 -#: mod/profile_photo.php:192 mod/profile_photo.php:205 mod/profiles.php:168 -#: mod/profiles.php:606 mod/register.php:47 mod/regmod.php:108 -#: mod/settings.php:28 mod/settings.php:130 mod/settings.php:678 -#: mod/wall_attach.php:69 mod/wall_attach.php:72 mod/wall_upload.php:102 -#: mod/wall_upload.php:105 index.php:412 +#: include/items.php:446 mod/allfriends.php:22 mod/api.php:37 mod/api.php:42 +#: mod/attach.php:37 mod/cal.php:304 mod/common.php:27 mod/crepair.php:101 +#: mod/delegate.php:31 mod/delegate.php:49 mod/delegate.php:60 +#: mod/dfrn_confirm.php:66 mod/dirfind.php:29 mod/editpost.php:23 +#: mod/events.php:207 mod/follow.php:58 mod/follow.php:122 mod/fsuggest.php:81 +#: mod/group.php:30 mod/invite.php:25 mod/invite.php:111 mod/item.php:165 +#: mod/manage.php:130 mod/message.php:56 mod/message.php:101 +#: mod/network.php:36 mod/nogroup.php:23 mod/notes.php:33 +#: mod/notifications.php:70 mod/ostatus_subscribe.php:18 mod/photos.php:187 +#: mod/photos.php:1060 mod/poke.php:142 mod/profiles.php:183 +#: mod/profiles.php:515 mod/profile_photo.php:33 mod/profile_photo.php:180 +#: mod/profile_photo.php:202 mod/register.php:53 mod/regmod.php:89 +#: mod/repair_ostatus.php:16 mod/settings.php:48 mod/settings.php:154 +#: mod/settings.php:658 mod/suggest.php:62 mod/uimport.php:17 +#: mod/unfollow.php:22 mod/unfollow.php:77 mod/unfollow.php:109 +#: mod/viewcontacts.php:56 mod/wallmessage.php:19 mod/wallmessage.php:43 +#: mod/wallmessage.php:82 mod/wallmessage.php:106 mod/wall_attach.php:81 +#: mod/wall_attach.php:84 mod/wall_upload.php:106 mod/wall_upload.php:109 +#: src/App.php:1786 src/Module/Contact.php:361 msgid "Permission denied." msgstr "Permiso denegado." -#: include/items.php:2407 +#: include/items.php:517 src/Content/Feature.php:95 msgid "Archives" msgstr "Archivos" -#: include/like.php:46 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%1$s atenderá %2$s's %3$s" +#: include/items.php:523 src/App.php:788 src/Content/ForumManager.php:131 +#: src/Content/Widget.php:305 src/Object/Post.php:442 +#: view/theme/vier/theme.php:255 +msgid "show more" +msgstr "ver más" -#: include/like.php:51 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%1$s no atenderá %2$s's %3$s" - -#: include/like.php:56 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%1$s puede que atienda %2$s's %3$s" - -#: include/message.php:16 include/message.php:162 -msgid "[no subject]" -msgstr "[sin asunto]" - -#: include/network.php:714 -msgid "view full size" -msgstr "Ver a tamaño completo" - -#: include/ostatus.php:1713 -#, php-format -msgid "%s is now following %s." -msgstr "%s sigue ahora a %s." - -#: include/ostatus.php:1714 -msgid "following" -msgstr "siguiendo" - -#: include/ostatus.php:1717 -#, php-format -msgid "%s stopped following %s." -msgstr "%s dejó de seguir a %s." - -#: include/ostatus.php:1718 -msgid "stopped following" -msgstr "dejó de seguir" - -#: include/text.php:315 -msgid "newer" -msgstr "más nuevo" - -#: include/text.php:316 -msgid "older" -msgstr "más antiguo" - -#: include/text.php:321 -msgid "first" -msgstr "primera" - -#: include/text.php:322 -msgid "prev" -msgstr "ant." - -#: include/text.php:356 -msgid "next" -msgstr "sig." - -#: include/text.php:357 -msgid "last" -msgstr "última" - -#: include/text.php:411 -msgid "Loading more entries..." -msgstr "Cargar mas entradas .." - -#: include/text.php:412 -msgid "The end" -msgstr "El fin" - -#: include/text.php:961 -msgid "No contacts" -msgstr "Sin contactos" - -#: include/text.php:985 -#, php-format -msgid "%d Contact" -msgid_plural "%d Contacts" -msgstr[0] "%d Contacto" -msgstr[1] "%d Contactos" - -#: include/text.php:998 -msgid "View Contacts" -msgstr "Ver contactos" - -#: include/text.php:1088 mod/filer.php:32 mod/editpost.php:102 -#: mod/notes.php:64 -msgid "Save" -msgstr "Guardar" - -#: include/text.php:1149 -msgid "poke" -msgstr "tocar" - -#: include/text.php:1149 -msgid "poked" -msgstr "tocó a" - -#: include/text.php:1150 -msgid "ping" -msgstr "hacer \"ping\"" - -#: include/text.php:1150 -msgid "pinged" -msgstr "hizo \"ping\" a" - -#: include/text.php:1151 -msgid "prod" -msgstr "empujar" - -#: include/text.php:1151 -msgid "prodded" -msgstr "empujó a" - -#: include/text.php:1152 -msgid "slap" -msgstr "abofetear" - -#: include/text.php:1152 -msgid "slapped" -msgstr "abofeteó a" - -#: include/text.php:1153 -msgid "finger" -msgstr "meter dedo" - -#: include/text.php:1153 -msgid "fingered" -msgstr "le metió un dedo a" - -#: include/text.php:1154 -msgid "rebuff" -msgstr "desairar" - -#: include/text.php:1154 -msgid "rebuffed" -msgstr "desairó a" - -#: include/text.php:1168 -msgid "happy" -msgstr "feliz" - -#: include/text.php:1169 -msgid "sad" -msgstr "triste" - -#: include/text.php:1170 -msgid "mellow" -msgstr "sentimental" - -#: include/text.php:1171 -msgid "tired" -msgstr "cansado" - -#: include/text.php:1172 -msgid "perky" -msgstr "alegre" - -#: include/text.php:1173 -msgid "angry" -msgstr "furioso" - -#: include/text.php:1174 -msgid "stupified" -msgstr "estupefacto" - -#: include/text.php:1175 -msgid "puzzled" -msgstr "extrañado" - -#: include/text.php:1176 -msgid "interested" -msgstr "interesado" - -#: include/text.php:1177 -msgid "bitter" -msgstr "rencoroso" - -#: include/text.php:1178 -msgid "cheerful" -msgstr "jovial" - -#: include/text.php:1179 -msgid "alive" -msgstr "vivo" - -#: include/text.php:1180 -msgid "annoyed" -msgstr "enojado" - -#: include/text.php:1181 -msgid "anxious" -msgstr "ansioso" - -#: include/text.php:1182 -msgid "cranky" -msgstr "irritable" - -#: include/text.php:1183 -msgid "disturbed" -msgstr "perturbado" - -#: include/text.php:1184 -msgid "frustrated" -msgstr "frustrado" - -#: include/text.php:1185 -msgid "motivated" -msgstr "motivado" - -#: include/text.php:1186 -msgid "relaxed" -msgstr "relajado" - -#: include/text.php:1187 -msgid "surprised" -msgstr "sorprendido" - -#: include/text.php:1220 -msgid "Sund" -msgstr "Dom" - -#: include/text.php:1223 -msgid "Sep" -msgstr "Sep" - -#: include/text.php:1421 mod/videos.php:390 -msgid "View Video" -msgstr "Ver vídeo" - -#: include/text.php:1438 -msgid "bytes" -msgstr "bytes" - -#: include/text.php:1473 include/text.php:1484 -msgid "Click to open/close" -msgstr "Pulsa para abrir/cerrar" - -#: include/text.php:1612 -msgid "View on separate page" -msgstr "Ver en pagina aparte" - -#: include/text.php:1613 -msgid "view on separate page" -msgstr "ver en pagina aparte" - -#: include/text.php:1898 -msgid "activity" -msgstr "Actividad" - -#: include/text.php:1900 object/Item.php:416 object/Item.php:428 -msgid "comment" -msgid_plural "comments" -msgstr[0] "" -msgstr[1] "Comentario" - -#: include/text.php:1903 -msgid "post" -msgstr "Publicación" - -#: include/text.php:2069 -msgid "Item filed" -msgstr "Elemento archivado" - -#: include/uimport.php:81 -msgid "Error decoding account file" -msgstr "Error decodificando el archivo de cuenta" - -#: include/uimport.php:87 -msgid "Error! No version data in file! This is not a Friendica account file?" -msgstr "Error! No hay datos de versión en el archivo! ¿Es esto de una cuenta friendica? " - -#: include/uimport.php:104 include/uimport.php:115 -msgid "Error! Cannot check nickname" -msgstr "Error! No puedo consultar el apodo" - -#: include/uimport.php:108 include/uimport.php:119 -#, php-format -msgid "User '%s' already exists on this server!" -msgstr "La cuenta '%s' ya existe en este servidor!" - -#: include/uimport.php:151 -msgid "User creation error" -msgstr "Error al crear la cuenta" - -#: include/uimport.php:174 -msgid "User profile creation error" -msgstr "Error de creación del perfil de la cuenta" - -#: include/uimport.php:224 -#, php-format -msgid "%d contact not imported" -msgid_plural "%d contacts not imported" -msgstr[0] "%d contactos no encontrado" -msgstr[1] "%d contactos no importado" - -#: include/uimport.php:290 -msgid "Done. You can now login with your username and password" -msgstr "Hecho. Ahora podes ingresar con tu nombre de cuenta y la contraseña." - -#: include/user.php:41 mod/settings.php:373 -msgid "Passwords do not match. Password unchanged." -msgstr "Las contraseñas no coinciden. La contraseña no ha sido modificada." - -#: include/user.php:50 -msgid "An invitation is required." -msgstr "Se necesita invitación." - -#: include/user.php:55 -msgid "Invitation could not be verified." -msgstr "No se puede verificar la invitación." - -#: include/user.php:63 -msgid "Invalid OpenID url" -msgstr "Dirección OpenID no válida" - -#: include/user.php:84 -msgid "Please enter the required information." -msgstr "Por favor, introduce la información necesaria." - -#: include/user.php:98 -msgid "Please use a shorter name." -msgstr "Por favor, usa un nombre más corto." - -#: include/user.php:100 -msgid "Name too short." -msgstr "El nombre es demasiado corto." - -#: include/user.php:108 -msgid "That doesn't appear to be your full (First Last) name." -msgstr "No parece que ese sea tu nombre completo." - -#: include/user.php:113 -msgid "Your email domain is not among those allowed on this site." -msgstr "Tu dominio de correo no se encuentra entre los permitidos en este sitio." - -#: include/user.php:116 -msgid "Not a valid email address." -msgstr "No es una dirección de correo electrónico válida." - -#: include/user.php:129 -msgid "Cannot use that email." -msgstr "No se puede utilizar este correo electrónico." - -#: include/user.php:135 -msgid "Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"." -msgstr "El apodo solo puede contener \"a-z\", \"0-9\" y \"_\"." - -#: include/user.php:142 include/user.php:224 -msgid "Nickname is already registered. Please choose another." -msgstr "Apodo ya registrado. Por favor, elije otro." - -#: include/user.php:152 -msgid "" -"Nickname was once registered here and may not be re-used. Please choose " -"another." -msgstr "El apodo ya ha sido registrado alguna vez y no puede volver a usarse. Por favor, utiliza otro." - -#: include/user.php:168 -msgid "SERIOUS ERROR: Generation of security keys failed." -msgstr "ERROR GRAVE: La generación de claves de seguridad ha fallado." - -#: include/user.php:210 -msgid "An error occurred during registration. Please try again." -msgstr "Se produjo un error durante el registro. Por favor, inténtalo de nuevo." - -#: include/user.php:233 view/theme/duepuntozero/config.php:47 -msgid "default" -msgstr "predeterminado" - -#: include/user.php:243 -msgid "An error occurred creating your default profile. Please try again." -msgstr "Error al crear tu perfil predeterminado. Por favor, inténtalo de nuevo." - -#: include/user.php:393 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n" -"\t" -msgstr "\n\t\tEstimado %1$s,\n\t\t\tGracias por registrarse en %2$s. Su cuenta está pendiente de aprobación por el administrador.\n\t" - -#: include/user.php:403 -#, php-format -msgid "Registration at %s" -msgstr "Registro en %s" - -#: include/user.php:413 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tThank you for registering at %2$s. Your account has been created.\n" -"\t" -msgstr "\n\t\tEstimado %1$s,\n\t\t\tGracias por registrar en %2$s. Su cuenta ha sido creada.\n\t" - -#: include/user.php:417 -#, php-format -msgid "" -"\n" -"\t\tThe login details are as follows:\n" -"\t\t\tSite Location:\t%3$s\n" -"\t\t\tLogin Name:\t%1$s\n" -"\t\t\tPassword:\t%5$s\n" -"\n" -"\t\tYou may change your password from your account \"Settings\" page after logging\n" -"\t\tin.\n" -"\n" -"\t\tPlease take a few moments to review the other account settings on that page.\n" -"\n" -"\t\tYou may also wish to add some basic information to your default profile\n" -"\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" -"\n" -"\t\tWe recommend setting your full name, adding a profile photo,\n" -"\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n" -"\t\tperhaps what country you live in; if you do not wish to be more specific\n" -"\t\tthan that.\n" -"\n" -"\t\tWe fully respect your right to privacy, and none of these items are necessary.\n" -"\t\tIf you are new and do not know anybody here, they may help\n" -"\t\tyou to make some new and interesting friends.\n" -"\n" -"\n" -"\t\tThank you and welcome to %2$s." -msgstr "\n\t\t\tLos detalles de acceso son las siguientes:\n\n\t\t\tDirección del sitio:\t%3$s\n\t\t\tNombre de la cuenta:\t\t%1$s\n\t\t\tContraseña:\t\t%5$s\n\n\t\t\tPodrá cambiar la contraseña desde la pagina de configuración de su cuenta después de acceder a la misma\n\t\t\ten.\n\n\t\t\tPor favor tome unos minutos para revisar las opciones demás de la cuenta en dicha pagina de configuración.\n\n\t\t\tTambién podrá agregar informaciones adicionales a su pagina de perfil predeterminado. \n\t\t\t(en la pagina \"Perfiles\") para que otras personas pueden encontrarlo fácilmente.\n\n\t\t\tRecomendamos que elija un nombre apropiado, agregando una imagen de perfil,\n\t\t\tagregando algunas palabras claves de la cuenta (muy útil para hacer nuevos amigos) - y \n\t\t\tquizás el país en donde vive; si no quiere ser mas especifico\n\t\t\tque eso.\n\n\t\t\tRespetamos absolutamente su derecho a la privacidad y ninguno de estos detalles es necesario.\n\t\t\tSi eres nuevo aquí y no conoces a nadie, estos detalles pueden ayudarte\n\t\t\tpara hacer nuevas e interesantes amistades.\n\n\t\t\tGracias y bienvenido a %2$s." - -#: include/user.php:449 mod/admin.php:1430 -#, php-format -msgid "Registration details for %s" -msgstr "Detalles de registro para %s" - -#: mod/api.php:78 mod/api.php:104 -msgid "Authorize application connection" -msgstr "Autorizar la conexión de la aplicación" - -#: mod/api.php:79 -msgid "Return to your app and insert this Securty Code:" -msgstr "Regresa a tu aplicación e introduce este código de seguridad:" - -#: mod/api.php:91 -msgid "Please login to continue." -msgstr "Inicia sesión para continuar." - -#: mod/api.php:106 -msgid "" -"Do you want to authorize this application to access your posts and contacts," -" and/or create new posts for you?" -msgstr "¿Quieres autorizar a esta aplicación el acceso a tus mensajes y contactos, y/o crear nuevas publicaciones para ti?" - -#: mod/api.php:108 mod/dfrn_request.php:881 mod/follow.php:150 -#: mod/profiles.php:639 mod/profiles.php:643 mod/profiles.php:669 -#: mod/register.php:251 mod/settings.php:1158 mod/settings.php:1164 -#: mod/settings.php:1171 mod/settings.php:1175 mod/settings.php:1180 -#: mod/settings.php:1185 mod/settings.php:1190 mod/settings.php:1195 -#: mod/settings.php:1221 mod/settings.php:1222 mod/settings.php:1223 -#: mod/settings.php:1224 mod/settings.php:1225 -msgid "No" -msgstr "No" - -#: mod/apps.php:9 index.php:259 -msgid "You must be logged in to use addons. " -msgstr "Tienes que estar registrado para tener acceso a los accesorios." - -#: mod/apps.php:14 -msgid "Applications" -msgstr "Aplicaciones" - -#: mod/apps.php:17 -msgid "No installed applications." -msgstr "Sin aplicaciones" - -#: mod/attach.php:10 -msgid "Item not available." -msgstr "Elemento no disponible." - -#: mod/attach.php:22 -msgid "Item was not found." -msgstr "Elemento no encontrado." - -#: mod/babel.php:18 -msgid "Source (bbcode) text:" -msgstr "Texto fuente (bbcode):" - -#: mod/babel.php:25 -msgid "Source (Diaspora) text to convert to BBcode:" -msgstr "Fuente (Diaspora) para pasar a BBcode:" - -#: mod/babel.php:33 -msgid "Source input: " -msgstr "Entrada: " - -#: mod/babel.php:37 -msgid "bb2html (raw HTML): " -msgstr "bb2html (raw HTML): " - -#: mod/babel.php:41 -msgid "bb2html: " -msgstr "bb2html: " - -#: mod/babel.php:45 -msgid "bb2html2bb: " -msgstr "bb2html2bb: " - -#: mod/babel.php:49 -msgid "bb2md: " -msgstr "bb2md: " - -#: mod/babel.php:53 -msgid "bb2md2html: " -msgstr "bb2md2html: " - -#: mod/babel.php:57 -msgid "bb2dia2bb: " -msgstr "bb2dia2bb: " - -#: mod/babel.php:61 -msgid "bb2md2html2bb: " -msgstr "bb2md2html2bb: " - -#: mod/babel.php:67 -msgid "Source input (Diaspora format): " -msgstr "Fuente (formato Diaspora): " - -#: mod/babel.php:71 -msgid "diaspora2bb: " -msgstr "diaspora2bb: " - -#: mod/common.php:93 -msgid "No contacts in common." -msgstr "Sin contactos en común." - -#: mod/common.php:143 mod/contacts.php:893 -msgid "Common Friends" -msgstr "Amigos comunes" - -#: mod/credits.php:19 -msgid "Credits" -msgstr "Creditos" - -#: mod/credits.php:20 -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 "Friendica es un proyecto comunitario, que no seria posible sin la ayuda de mucha gente. Aquí una lista de de aquellos que aportaron al código o la traducción de friendica.\nGracias a todos! " - -#: mod/crepair.php:92 -msgid "Contact settings applied." -msgstr "Contacto configurado con éxito." - -#: mod/crepair.php:94 -msgid "Contact update failed." -msgstr "Error al actualizar el Contacto." - -#: mod/crepair.php:119 mod/dfrn_confirm.php:130 mod/fsuggest.php:23 -#: mod/fsuggest.php:95 -msgid "Contact not found." -msgstr "Contacto no encontrado." - -#: mod/crepair.php:125 -msgid "" -"WARNING: This is highly advanced and if you enter incorrect" -" information your communications with this contact may stop working." -msgstr "ADVERTENCIA: Esto es muy avanzado y si se introduce información incorrecta tu conexión con este contacto puede dejar de funcionar." - -#: mod/crepair.php:126 -msgid "" -"Please use your browser 'Back' button now if you are " -"uncertain what to do on this page." -msgstr "Por favor usa el botón 'Atás' de tu navegador ahora si no tienes claro qué hacer en esta página." - -#: mod/crepair.php:139 mod/crepair.php:141 -msgid "No mirroring" -msgstr "No espejar" - -#: mod/crepair.php:139 -msgid "Mirror as forwarded posting" -msgstr "Espejar como reenvio" - -#: mod/crepair.php:139 mod/crepair.php:141 -msgid "Mirror as my own posting" -msgstr "Espejar como publicación propia" - -#: mod/crepair.php:155 -msgid "Return to contact editor" -msgstr "Volver al editor de contactos" - -#: mod/crepair.php:157 -msgid "Refetch contact data" -msgstr "Volver a solicitar datos del contacto." - -#: mod/crepair.php:159 mod/invite.php:150 mod/localtime.php:47 -#: mod/manage.php:157 mod/message.php:338 mod/message.php:521 -#: mod/install.php:243 mod/install.php:283 mod/contacts.php:605 -#: mod/events.php:529 mod/fsuggest.php:110 mod/mood.php:141 -#: mod/photos.php:1127 mod/photos.php:1248 mod/photos.php:1574 -#: mod/photos.php:1623 mod/photos.php:1665 mod/photos.php:1745 -#: mod/poke.php:206 mod/profiles.php:680 object/Item.php:702 -#: view/theme/duepuntozero/config.php:65 view/theme/frio/config.php:108 -#: view/theme/quattro/config.php:71 view/theme/vier/config.php:114 -msgid "Submit" -msgstr "Envíar" - -#: mod/crepair.php:161 -msgid "Remote Self" -msgstr "Perfil remoto" - -#: mod/crepair.php:164 -msgid "Mirror postings from this contact" -msgstr "Espejar publicaciones de este contacto" - -#: mod/crepair.php:166 -msgid "" -"Mark this contact as remote_self, this will cause friendica to repost new " -"entries from this contact." -msgstr "Marcar este contacto como perfil_remoto, esto generara que friendica reenvía nuevas publicaciones desde esta cuenta." - -#: mod/crepair.php:170 mod/admin.php:1612 mod/admin.php:1625 -#: mod/admin.php:1638 mod/admin.php:1654 mod/settings.php:693 -#: mod/settings.php:719 -msgid "Name" -msgstr "Nombre" - -#: mod/crepair.php:171 -msgid "Account Nickname" -msgstr "Apodo de la cuenta" - -#: mod/crepair.php:172 -msgid "@Tagname - overrides Name/Nickname" -msgstr "@Etiqueta - Sobrescribe el Nombre/Apodo" - -#: mod/crepair.php:173 -msgid "Account URL" -msgstr "Dirección de la cuenta" - -#: mod/crepair.php:174 -msgid "Friend Request URL" -msgstr "Dirección de la solicitud de amistad" - -#: mod/crepair.php:175 -msgid "Friend Confirm URL" -msgstr "Dirección de confirmación de tu amigo " - -#: mod/crepair.php:176 -msgid "Notification Endpoint URL" -msgstr "Dirección URL de la notificación" - -#: mod/crepair.php:177 -msgid "Poll/Feed URL" -msgstr "Dirección del Sondeo/Fuentes" - -#: mod/crepair.php:178 -msgid "New photo from this URL" -msgstr "Nueva foto de esta dirección" - -#: mod/filer.php:31 -msgid "- select -" -msgstr "- seleccionar -" - -#: mod/lockview.php:33 mod/lockview.php:41 -msgid "Remote privacy information not available." -msgstr "Privacidad de la información remota no disponible." - -#: mod/lockview.php:50 -msgid "Visible to:" -msgstr "Visible para:" - -#: mod/maintenance.php:21 -msgid "System down for maintenance" -msgstr "Servicio suspendido por mantenimiento" - -#: mod/newmember.php:7 -msgid "Welcome to Friendica" -msgstr "Bienvenido a Friendica " - -#: mod/newmember.php:8 -msgid "New Member Checklist" -msgstr "Listado de nuevos miembros" - -#: mod/newmember.php:10 -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 "Nos gustaría ofrecerte algunos consejos y enlaces para ayudar a hacer tu experiencia más amena. Pulsa en cualquier elemento para visitar la página correspondiente. Un enlace a esta página será visible desde tu página de inicio durante las dos semanas siguientes a tu inscripción y luego desaparecerá." - -#: mod/newmember.php:11 -msgid "Getting Started" -msgstr "Empezando" - -#: mod/newmember.php:13 -msgid "Friendica Walk-Through" -msgstr "Visita guiada a Friendica" - -#: mod/newmember.php:13 -msgid "" -"On your Quick Start page - find a brief introduction to your " -"profile and network tabs, make some new connections, and find some groups to" -" join." -msgstr "En tu página de Inicio Rápido - busca una introducción breve para tus pestañas de perfil y red, haz algunas conexiones nuevas, y busca algunos grupos a los que unirte." - -#: mod/newmember.php:17 -msgid "Go to Your Settings" -msgstr "Ir a tus ajustes" - -#: mod/newmember.php:17 -msgid "" -"On your Settings 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 "En la página de Configuración puedes cambiar tu contraseña inicial. También aparece tu ID (Identity Address). Es parecida a una dirección de correo y te servirá para conectar con gente de redes sociales libres." - -#: mod/newmember.php:18 -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." -msgstr "Revisa las otras configuraciones, especialmente la configuración de privacidad. Un listado de directorio sin publicar es como tener un número de teléfono sin publicar. Normalmente querrás publicar tu listado, a menos que tus amigos y amigos potenciales sepan cómo ponerse en contacto contigo." - -#: mod/newmember.php:22 mod/profile_photo.php:257 mod/profiles.php:699 -msgid "Upload Profile Photo" -msgstr "Subir foto del Perfil" - -#: mod/newmember.php:22 -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." -msgstr "Sube una foto para tu perfil si no lo has hecho aún. Los estudios han demostrado que la gente que usa fotos suyas reales tienen diez veces más éxito a la hora de entablar amistad que las que no." - -#: mod/newmember.php:23 -msgid "Edit Your Profile" -msgstr "Editar tu perfil" - -#: mod/newmember.php:23 -msgid "" -"Edit your default profile to your liking. Review the " -"settings for hiding your list of friends and hiding the profile from unknown" -" visitors." -msgstr "Edita tu perfil predeterminado como quieras. Revisa la configuración para ocultar tu lista de amigos o tu perfil a los visitantes desconocidos." - -#: mod/newmember.php:24 -msgid "Profile Keywords" -msgstr "Palabras clave del perfil" - -#: mod/newmember.php:24 -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 "Define en tu perfil público algunas palabras que describan tus intereses. Así podremos buscar otras personas con los mismos gustos y sugerirte posibles amigos." - -#: mod/newmember.php:26 -msgid "Connecting" -msgstr "Conectando" - -#: mod/newmember.php:32 -msgid "Importing Emails" -msgstr "Importando correos electrónicos" - -#: mod/newmember.php:32 -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 "Introduce la información para acceder a tu correo en la página de Configuración del conector si quieres importar e interactuar con amigos o listas de correos del buzón de entrada de tu correo electrónico." - -#: mod/newmember.php:35 -msgid "Go to Your Contacts Page" -msgstr "Ir a tu página de contactos" - -#: mod/newmember.php:35 -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 Add New Contact dialog." -msgstr "Tu página de Contactos es el portal desde donde podrás manejar tus amistades y conectarte con amigos de otras redes. Normalmente introduces su dirección o la dirección de su sitio web en el recuadro \"Añadir contacto nuevo\"." - -#: mod/newmember.php:36 -msgid "Go to Your Site's Directory" -msgstr "Ir al directorio de tu sitio" - -#: mod/newmember.php:36 -msgid "" -"The Directory page lets you find other people in this network or other " -"federated sites. Look for a Connect or Follow link on " -"their profile page. Provide your own Identity Address if requested." -msgstr "El Directorio te permite encontrar otras personas en esta red o en cualquier otro sitio federado. Busca algún enlace de Conectar o Seguir en su perfil. Proporciona tu direción personal si es necesario." - -#: mod/newmember.php:37 -msgid "Finding New People" -msgstr "Encontrando nueva gente" - -#: mod/newmember.php:37 -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 "En el panel lateral de la página de Contactos existen varias herramientas para encontrar nuevos amigos. Podemos filtrar personas por sus intereses, buscar personas por nombre o por sus intereses, y ofrecerte sugerencias basadas en sus relaciones de la red. En un sitio nuevo, las sugerencias de amigos por lo general comienzan pasadas las 24 horas." - -#: mod/newmember.php:41 -msgid "Group Your Contacts" -msgstr "Agrupa tus contactos" - -#: mod/newmember.php:41 -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 "Una vez que tengas algunos amigos, puedes organizarlos en grupos privados de conversación mediante el memnú en tu página de Contactos y luego puedes interactuar con cada grupo por separado desde tu página de Red." - -#: mod/newmember.php:44 -msgid "Why Aren't My Posts Public?" -msgstr "¿Por qué mis publicaciones no son públicas?" - -#: mod/newmember.php:44 -msgid "" -"Friendica respects your privacy. By default, your posts will only show up to" -" people you've added as friends. For more information, see the help section " -"from the link above." -msgstr "Friendica respeta tu privacidad. Por defecto, tus publicaciones solo se mostrarán a personas que hayas añadido como amistades. Para más información, mira la sección de ayuda en el enlace de más arriba." - -#: mod/newmember.php:48 -msgid "Getting Help" -msgstr "Consiguiendo ayuda" - -#: mod/newmember.php:50 -msgid "Go to the Help Section" -msgstr "Ir a la sección de ayuda" - -#: mod/newmember.php:50 -msgid "" -"Our help pages may be consulted for detail on other program" -" features and resources." -msgstr "Puedes consultar nuestra página de Ayuda para más información y recursos de ayuda." - -#: mod/nogroup.php:45 mod/viewcontacts.php:105 mod/contacts.php:616 -#: mod/contacts.php:960 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "Ver el perfil de %s [%s]" - -#: mod/nogroup.php:46 mod/contacts.php:961 -msgid "Edit contact" -msgstr "Modificar contacto" - -#: mod/nogroup.php:67 -msgid "Contacts who are not members of a group" -msgstr "Contactos sin grupo" - -#: mod/profperm.php:22 mod/group.php:78 index.php:411 -msgid "Permission denied" -msgstr "Permiso denegado" - -#: mod/profperm.php:28 mod/profperm.php:59 -msgid "Invalid profile identifier." -msgstr "Identificador de perfil no válido." - -#: mod/profperm.php:105 -msgid "Profile Visibility Editor" -msgstr "Editor de visibilidad del perfil" - -#: mod/profperm.php:109 mod/group.php:264 -msgid "Click on a contact to add or remove." -msgstr "Pulsa en un contacto para añadirlo o eliminarlo." - -#: mod/profperm.php:118 -msgid "Visible To" -msgstr "Visible para" - -#: mod/profperm.php:134 -msgid "All Contacts (with secure profile access)" -msgstr "Todos los contactos (con perfil de acceso seguro)" - -#: mod/update_community.php:21 mod/update_display.php:25 -#: mod/update_notes.php:38 mod/update_profile.php:37 mod/update_network.php:29 -msgid "[Embedded content - reload page to view]" -msgstr "[Contenido incrustado - recarga la página para verlo]" - -#: mod/viewcontacts.php:39 mod/webfinger.php:10 mod/probe.php:9 -#: mod/community.php:17 mod/dfrn_request.php:805 mod/directory.php:31 -#: mod/search.php:89 mod/search.php:95 mod/display.php:202 mod/photos.php:965 -#: mod/videos.php:202 -msgid "Public access denied." -msgstr "Acceso público denegado." - -#: mod/viewcontacts.php:78 -msgid "No contacts." -msgstr "Ningún contacto." - -#: mod/viewsrc.php:8 -msgid "Access denied." -msgstr "Acceso denegado." - -#: mod/webfinger.php:11 mod/probe.php:10 -msgid "Only logged in users are permitted to perform a probing." -msgstr "Sólo los usuarios registrados pueden realizar una exploración." - -#: mod/uimport.php:53 mod/register.php:203 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "Este sitio ha excedido el número de registros diarios permitidos. Inténtalo de nuevo mañana por favor." - -#: mod/uimport.php:68 mod/register.php:300 -msgid "Import" -msgstr "Importar" - -#: mod/uimport.php:70 -msgid "Move account" -msgstr "Mover cuenta" - -#: mod/uimport.php:71 -msgid "You can import an account from another Friendica server." -msgstr "Puedes importar una cuenta desde otro servidor de Friendica." - -#: mod/uimport.php:72 -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 "Necesitas exportar tu cuenta del antiguo servidor y subirla aquí. Volveremos a crear tu antigua cuenta con todos tus contactos aquí. También intentaremos de informar a tus amigos de que te has mudado." - -#: mod/uimport.php:73 -msgid "" -"This feature is experimental. We can't import contacts from the OStatus " -"network (GNU Social/Statusnet) or from Diaspora" -msgstr "Esta característica es experimental. No podemos importar contactos desde la red OStatus (statusnet/identi.ca) o desde Diaspora*" - -#: mod/uimport.php:74 -msgid "Account file" -msgstr "Archivo de la cuenta" - -#: mod/uimport.php:74 -msgid "" -"To export your account, go to \"Settings->Export your personal data\" and " -"select \"Export account\"" -msgstr "Para exportar el perfil vaya a \"Configuracion -> Exportar sus datos personales\" y seleccione \"Exportar cuenta\"" - -#: mod/community.php:22 -msgid "Not available." -msgstr "No disponible" - -#: mod/community.php:49 mod/search.php:215 -msgid "No results." -msgstr "Sin resultados." - -#: mod/allfriends.php:49 -msgid "No friends to display." -msgstr "No hay amigos para mostrar." - -#: mod/bookmarklet.php:44 -msgid "The post was created" -msgstr "La publicación fue creada" - -#: mod/cal.php:146 mod/profile.php:157 mod/display.php:339 -msgid "Access to this profile has been restricted." -msgstr "El acceso a este perfil ha sido restringido." - -#: mod/cal.php:274 mod/events.php:384 -msgid "View" -msgstr "Vista" - -#: mod/cal.php:275 mod/events.php:386 -msgid "Previous" -msgstr "Previo" - -#: mod/cal.php:276 mod/install.php:202 mod/events.php:387 -msgid "Next" -msgstr "Siguiente" - -#: mod/cal.php:285 mod/events.php:396 -msgid "list" -msgstr "lista" - -#: mod/cal.php:295 -msgid "User not found" -msgstr "Usuario no encontrado" - -#: mod/cal.php:311 -msgid "This calendar format is not supported" -msgstr "Este formato de calendario no se soporta" - -#: mod/cal.php:313 -msgid "No exportable data found" -msgstr "No se ha encontrado información exportable" - -#: mod/cal.php:328 -msgid "calendar" -msgstr "calendario" - -#: mod/dfrn_poll.php:114 mod/dfrn_poll.php:550 -#, php-format -msgid "%1$s welcomes %2$s" -msgstr "%1$s te da la bienvenida a %2$s" - -#: mod/dfrn_request.php:104 -msgid "This introduction has already been accepted." -msgstr "Esta presentación ya ha sido aceptada." - -#: mod/dfrn_request.php:127 mod/dfrn_request.php:529 -msgid "Profile location is not valid or does not contain profile information." -msgstr "La dirección del perfil no es válida o no contiene información del perfil." - -#: mod/dfrn_request.php:132 mod/dfrn_request.php:534 -msgid "Warning: profile location has no identifiable owner name." -msgstr "Aviso: La dirección del perfil no tiene un nombre de propietario identificable." - -#: mod/dfrn_request.php:135 mod/dfrn_request.php:537 -msgid "Warning: profile location has no profile photo." -msgstr "Aviso: la dirección del perfil no tiene foto de perfil." - -#: mod/dfrn_request.php:139 mod/dfrn_request.php:541 -#, 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] "no se encontró %d parámetro requerido en el lugar determinado" -msgstr[1] "no se encontraron %d parámetros requeridos en el lugar determinado" - -#: mod/dfrn_request.php:183 -msgid "Introduction complete." -msgstr "Presentación completa." - -#: mod/dfrn_request.php:228 -msgid "Unrecoverable protocol error." -msgstr "Error de protocolo irrecuperable." - -#: mod/dfrn_request.php:256 -msgid "Profile unavailable." -msgstr "Perfil no disponible." - -#: mod/dfrn_request.php:283 -#, php-format -msgid "%s has received too many connection requests today." -msgstr "%s ha recibido demasiadas solicitudes de conexión hoy." - -#: mod/dfrn_request.php:284 -msgid "Spam protection measures have been invoked." -msgstr "Han sido activadas las medidas de protección contra spam." - -#: mod/dfrn_request.php:285 -msgid "Friends are advised to please try again in 24 hours." -msgstr "Tus amigos serán avisados para que lo intenten de nuevo pasadas 24 horas." - -#: mod/dfrn_request.php:347 -msgid "Invalid locator" -msgstr "Localizador no válido" - -#: mod/dfrn_request.php:356 -msgid "Invalid email address." -msgstr "Dirección de correo incorrecta" - -#: mod/dfrn_request.php:381 -msgid "This account has not been configured for email. Request failed." -msgstr "Esta cuenta no ha sido configurada para el correo. Fallo de solicitud." - -#: mod/dfrn_request.php:484 -msgid "You have already introduced yourself here." -msgstr "Ya te has presentado aquí." - -#: mod/dfrn_request.php:488 -#, php-format -msgid "Apparently you are already friends with %s." -msgstr "Al parecer, ya eres amigo de %s." - -#: mod/dfrn_request.php:509 -msgid "Invalid profile URL." -msgstr "Dirección de perfil no válida." - -#: mod/dfrn_request.php:594 mod/contacts.php:223 -msgid "Failed to update contact record." -msgstr "Error al actualizar el contacto." - -#: mod/dfrn_request.php:615 -msgid "Your introduction has been sent." -msgstr "Tu presentación ha sido enviada." - -#: mod/dfrn_request.php:657 -msgid "" -"Remote subscription can't be done for your network. Please subscribe " -"directly on your system." -msgstr "La subscripción remota no se podrá hacer para tu red. Por favor contacta directamente desde tu sistema." - -#: mod/dfrn_request.php:678 -msgid "Please login to confirm introduction." -msgstr "Inicia sesión para confirmar la presentación." - -#: mod/dfrn_request.php:688 -msgid "" -"Incorrect identity currently logged in. Please login to " -"this profile." -msgstr "Sesión iniciada con la identificación incorrecta. Entra en este perfil." - -#: mod/dfrn_request.php:702 mod/dfrn_request.php:719 -msgid "Confirm" -msgstr "Confirmar" - -#: mod/dfrn_request.php:714 -msgid "Hide this contact" -msgstr "Ocultar este contacto" - -#: mod/dfrn_request.php:717 -#, php-format -msgid "Welcome home %s." -msgstr "Bienvenido a casa %s" - -#: mod/dfrn_request.php:718 -#, php-format -msgid "Please confirm your introduction/connection request to %s." -msgstr "Por favor, confirma tu solicitud de presentación/conexión con %s." - -#: mod/dfrn_request.php:849 -msgid "" -"Please enter your 'Identity Address' from one of the following supported " -"communications networks:" -msgstr "Por favor introduce tu dirección ID de una de las siguientes redes sociales soportadas:" - -#: mod/dfrn_request.php:873 -#, php-format -msgid "" -"If you are not yet a member of the free social web, follow this link to find a public Friendica site and " -"join us today." -msgstr "Si aun no eres miembro de la red social libre seguí este enlace para encontrara un sitio disponible de friendica y acompañanos hoy mismo" - -#: mod/dfrn_request.php:878 -msgid "Friend/Connection Request" -msgstr "Solicitud de Amistad/Conexión" - -#: mod/dfrn_request.php:879 -msgid "" -"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " -"testuser@identi.ca" -msgstr "Ejemplos: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" - -#: mod/dfrn_request.php:880 mod/follow.php:149 -msgid "Please answer the following:" -msgstr "Por favor responde lo siguiente:" - -#: mod/dfrn_request.php:881 mod/follow.php:150 -#, php-format -msgid "Does %s know you?" -msgstr "¿%s te conoce?" - -#: mod/dfrn_request.php:885 mod/follow.php:151 -msgid "Add a personal note:" -msgstr "Añade una nota personal:" - -#: mod/dfrn_request.php:888 -msgid "StatusNet/Federated Social Web" -msgstr "StatusNet/Web Social Federada" - -#: mod/dfrn_request.php:890 -#, php-format -msgid "" -" - please do not use this form. Instead, enter %s into your Diaspora search" -" bar." -msgstr "(En vez de usar este formulario, introduce %s en la barra de búsqueda de Diaspora." - -#: mod/dfrn_request.php:891 mod/follow.php:157 mod/unfollow.php:113 -msgid "Your Identity Address:" -msgstr "Dirección de tu perfil:" - -#: mod/dfrn_request.php:894 mod/follow.php:63 mod/unfollow.php:65 -msgid "Submit Request" -msgstr "Enviar solicitud" - -#: mod/editpost.php:20 mod/editpost.php:30 -msgid "Item not found" -msgstr "Elemento no encontrado" - -#: mod/editpost.php:35 -msgid "Edit post" -msgstr "Editar publicación" - -#: mod/fetch.php:16 mod/fetch.php:43 mod/fetch.php:52 mod/help.php:57 -#: mod/p.php:20 mod/p.php:47 mod/p.php:56 index.php:303 -msgid "Not Found" -msgstr "No se ha encontrado" - -#: mod/follow.php:42 -msgid "Contact added" -msgstr "Contacto añadido" - -#: mod/follow.php:74 -msgid "You already added this contact." -msgstr "Ya has añadido este contacto." - -#: mod/follow.php:83 -msgid "Diaspora support isn't enabled. Contact can't be added." -msgstr "El soporte de Diaspora* no esta habilitado, el contacto no puede ser agregado." - -#: mod/follow.php:90 -msgid "OStatus support is disabled. Contact can't be added." -msgstr "El soporte de OStatus no esta habilitado, el contacto no puede ser agregado." - -#: mod/follow.php:97 -msgid "The network type couldn't be detected. Contact can't be added." -msgstr "No se pudo detectar el tipo de red. Contacto no puede ser agregado." - -#: mod/follow.php:166 mod/notifications.php:258 mod/unfollow.php:122 -#: mod/contacts.php:654 -msgid "Profile URL" -msgstr "URL Perfil" - -#: mod/group.php:31 -msgid "Group created." -msgstr "Grupo creado." - -#: mod/group.php:37 -msgid "Could not create group." -msgstr "Imposible crear el grupo." - -#: mod/group.php:51 mod/group.php:156 -msgid "Group not found." -msgstr "Grupo no encontrado." - -#: mod/group.php:65 -msgid "Group name changed." -msgstr "El nombre del grupo ha cambiado." - -#: mod/group.php:95 -msgid "Save Group" -msgstr "Guardar grupo" - -#: mod/group.php:100 -msgid "Create a group of contacts/friends." -msgstr "Crea un grupo de contactos/amigos." - -#: mod/group.php:125 -msgid "Group removed." -msgstr "Grupo eliminado." - -#: mod/group.php:127 -msgid "Unable to remove group." -msgstr "No se puede eliminar el grupo." - -#: mod/group.php:191 -msgid "Delete Group" -msgstr "Borrar grupo" - -#: mod/group.php:197 -msgid "Group Editor" -msgstr "Editor de grupos" - -#: mod/group.php:202 -msgid "Edit Group Name" -msgstr "Editar nombre de grupo" - -#: mod/group.php:212 -msgid "Members" -msgstr "Miembros" - -#: mod/group.php:214 mod/contacts.php:722 -msgid "All Contacts" -msgstr "Todos los contactos" - -#: mod/group.php:215 mod/network.php:655 -msgid "Group is empty" -msgstr "El grupo está vacío" - -#: mod/group.php:228 -msgid "Remove Contact" -msgstr "Borrar contacto" - -#: mod/group.php:252 -msgid "Add Contact" -msgstr "Agregar contacto" - -#: mod/hcard.php:14 -msgid "No profile" -msgstr "Nigún perfil" - -#: mod/help.php:45 -msgid "Help:" -msgstr "Ayuda:" - -#: mod/help.php:60 index.php:306 -msgid "Page not found." -msgstr "Página no encontrada." - -#: mod/home.php:42 -#, php-format -msgid "Welcome to %s" -msgstr "Bienvenido a %s" - -#: mod/invite.php:31 -msgid "Total invitation limit exceeded." -msgstr "Límite total de invitaciones excedido." - -#: mod/invite.php:54 -#, php-format -msgid "%s : Not a valid email address." -msgstr "%s : No es una dirección de correo válida." - -#: mod/invite.php:79 -msgid "Please join us on Friendica" -msgstr "Únete a nosotros en Friendica" - -#: mod/invite.php:90 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "Límite de invitaciones sobrepasado. Contacta con el administrador del sitio." - -#: mod/invite.php:94 -#, php-format -msgid "%s : Message delivery failed." -msgstr "%s : Ha fallado la entrega del mensaje." - -#: mod/invite.php:98 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "%d mensaje enviado." -msgstr[1] "%d mensajes enviados." - -#: mod/invite.php:117 -msgid "You have no more invitations available" -msgstr "No tienes más invitaciones disponibles" - -#: mod/invite.php:125 -#, 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 "Visita %s para ver una lista de servidores públicos donde puedes darte de alta. Los miembros de otros servidores de Friendica pueden conectarse entre ellos, así como con miembros de otras redes sociales diferentes." - -#: mod/invite.php:127 -#, php-format -msgid "" -"To accept this invitation, please visit and register at %s or any other " -"public Friendica website." -msgstr "Para aceptar la invitación visita y regístrate en %s o en cualquier otro servidor público de Friendica." - -#: mod/invite.php:128 -#, 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 "Los servidores de Friendica están interconectados para crear una enorme red social centrada en la privacidad y controlada por sus miembros. También se puede conectar con muchas redes sociales tradicionales. Mira en %s para poder ver un listado de servidores alternativos de Friendica donde puedes darte de alta." - -#: mod/invite.php:132 -msgid "" -"Our apologies. This system is not currently configured to connect with other" -" public sites or invite members." -msgstr "Discúlpanos. Este sistema no está configurado actualmente para conectar con otros servidores públicos o invitar nuevos miembros." - -#: mod/invite.php:135 -#, php-format -msgid "To accept this invitation, please visit and register at %s." -msgstr "Para aceptar esta invitación, visite y regístrese en%s, por favor." - -#: mod/invite.php:136 -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 "Los sitios de Friendica se conectan entre sí para crear una gran red social con privacidad mejorada que es propiedad y está controlada por sus miembros. También pueden conectarse con muchas redes sociales tradicionales." - -#: mod/invite.php:142 -msgid "Send invitations" -msgstr "Enviar invitaciones" - -#: mod/invite.php:143 -msgid "Enter email addresses, one per line:" -msgstr "Introduce las direcciones de correo, una por línea:" - -#: mod/invite.php:144 mod/message.php:332 mod/message.php:515 -#: mod/wallmessage.php:138 -msgid "Your message:" -msgstr "Tu mensaje:" - -#: mod/invite.php:145 -msgid "" -"You are cordially invited to join me and other close friends on Friendica - " -"and help us to create a better social web." -msgstr "Estás cordialmente invitado a unirte a mi y a otros amigos en Friendica, creemos juntos una red social mejor." - -#: mod/invite.php:147 -msgid "You will need to supply this invitation code: $invite_code" -msgstr "Tienes que proporcionar el siguiente código: $invite_code" - -#: mod/invite.php:147 -msgid "" -"Once you have registered, please connect with me via my profile page at:" -msgstr "Una vez registrado, por favor contacta conmigo a través de mi página de perfil en:" - -#: mod/invite.php:149 -msgid "" -"For more information about the Friendica project and why we feel it is " -"important, please visit http://friendi.ca" -msgstr "Para más información sobre el proyecto Friendica y por qué sentimos que es importante, visite http://friendi.ca, por favor" - -#: mod/localtime.php:26 -msgid "Time Conversion" -msgstr "Conversión horária" - -#: mod/localtime.php:28 -msgid "" -"Friendica provides this service for sharing events with other networks and " -"friends in unknown timezones." -msgstr "Friendica ofrece este servicio para compartir eventos con otros servidores de la red friendica y amigos en zonas de horarios desconocidos." - -#: mod/localtime.php:32 -#, php-format -msgid "UTC time: %s" -msgstr "Tiempo UTC: %s" - -#: mod/localtime.php:35 -#, php-format -msgid "Current timezone: %s" -msgstr "Zona horaria actual: %s" - -#: mod/localtime.php:38 -#, php-format -msgid "Converted localtime: %s" -msgstr "Zona horaria local convertida: %s" - -#: mod/localtime.php:43 -msgid "Please select your timezone:" -msgstr "Por favor, selecciona tu zona horaria:" - -#: mod/lostpass.php:22 -msgid "No valid account found." -msgstr "No se ha encontrado ninguna cuenta válida" - -#: mod/lostpass.php:38 -msgid "Password reset request issued. Check your email." -msgstr "Solicitud de restablecimiento de contraseña enviada. Revisa tu correo." - -#: mod/lostpass.php:44 -#, 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.\n" -"\n" -"\t\tYour password will not be changed unless we can verify that you\n" -"\t\tissued this request." -msgstr "\n\t\tEstimado %1$s,\n\t\t\tUna consulta llego recientemente a \"%2$s\" para renovar su\n\t\tcontraseña. Para confirmar esta solicitud por favor seleccione el enlace de verificación mas \n\t\tabajo o copie a pegue el mismo en la barra de dirección de su navegador.\n\n\t\tSi NO ha solicitado este cambio por favor NO SIGA este enlace\n\t\tproporcionado y ignore o borre este mail.\n\n\t\tSu contraseña no sera cambiada hasta que podamos verificar que usted haza\n\t\tsolicitado este cambio.." - -#: mod/lostpass.php:55 -#, php-format -msgid "" -"\n" -"\t\tFollow this link 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 "\n\t\tSiga este enlace para verificar su identidad:\n\n\t\t%1$s\n\n\t\tA continuación recibirá un mensaje consecutivo conteniendo la nueva contraseña.\n\t\tPodrá cambiar la contraseña después de haber accedido a la cuenta.\n\n\t\tLos detalles del acceso son las siguientes:\n\n\t\tDirección del sitio:\t%2$s\n\t\tNombre de la cuenta:\t%3$s" - -#: mod/lostpass.php:74 -#, php-format -msgid "Password reset requested at %s" -msgstr "Contraseña restablecida enviada a %s" - -#: mod/lostpass.php:94 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "La solicitud no puede ser verificada (deberías haberla proporcionado antes). Falló el restablecimiento de la contraseña." - -#: mod/lostpass.php:113 boot.php:889 -msgid "Password Reset" -msgstr "Restablecer la contraseña" - -#: mod/lostpass.php:114 -msgid "Your password has been reset as requested." -msgstr "Tu contraseña ha sido restablecida como solicitaste." - -#: mod/lostpass.php:115 -msgid "Your new password is" -msgstr "Tu nueva contraseña es" - -#: mod/lostpass.php:116 -msgid "Save or copy your new password - and then" -msgstr "Guarda o copia tu nueva contraseña y luego" - -#: mod/lostpass.php:117 -msgid "click here to login" -msgstr "pulsa aquí para acceder" - -#: mod/lostpass.php:118 -msgid "" -"Your password may be changed from the Settings page after " -"successful login." -msgstr "Puedes cambiar tu contraseña desde la página de Configuración después de acceder con éxito." - -#: mod/lostpass.php:128 -#, php-format -msgid "" -"\n" -"\t\t\t\tDear %1$s,\n" -"\t\t\t\t\tYour password has been changed as requested. Please retain this\n" -"\t\t\t\tinformation for your records (or change your password immediately to\n" -"\t\t\t\tsomething that you will remember).\n" -"\t\t\t" -msgstr "\n\t\t\t\tEstimado %1$s,\n\t\t\t\t\tSu contraseña ha cambiado como solicitado. Por favor guarde esta\n\t\t\t\tinformación para sus documentación (o cambie su contraseña inmediatamente a\n\t\t\t\talgo que pueda recordar).\n\t\t" - -#: mod/lostpass.php:134 -#, php-format -msgid "" -"\n" -"\t\t\t\tYour login details are as follows:\n" -"\n" -"\t\t\t\tSite Location:\t%1$s\n" -"\t\t\t\tLogin Name:\t%2$s\n" -"\t\t\t\tPassword:\t%3$s\n" -"\n" -"\t\t\t\tYou may change that password from your account settings page after logging in.\n" -"\t\t\t" -msgstr "\n\t\t\t\tSus datos de acceso son las siguientes:\n\n\t\t\t\tDirección del sitio:\t%1$s\n\t\t\t\tNombre de cuenta:\t%2$s\n\t\t\t\tContraseña:\t%3$s\n\n\t\t\t\tPodrá cambiar esta contraseña después de ingresar al sitio en su pagina de configuración.\n\t\t\t" - -#: mod/lostpass.php:150 -#, php-format -msgid "Your password has been changed at %s" -msgstr "Tu contraseña se ha cambiado por %s" - -#: mod/lostpass.php:162 -msgid "Forgot your Password?" -msgstr "¿Olvidaste tu contraseña?" - -#: mod/lostpass.php:163 -msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "Introduce tu correo para restablecer tu contraseña. Luego comprueba tu correo para las instrucciones adicionales." - -#: mod/lostpass.php:164 boot.php:877 -msgid "Nickname or Email: " -msgstr "Apodo o Correo electrónico: " - -#: mod/lostpass.php:165 -msgid "Reset" -msgstr "Restablecer" - -#: mod/manage.php:153 -msgid "Manage Identities and/or Pages" -msgstr "Administrar identidades y/o páginas" - -#: mod/manage.php:154 -msgid "" -"Toggle between different identities or community/group pages which share " -"your account details or which you have been granted \"manage\" permissions" -msgstr "Cambia entre diferentes identidades o páginas de Comunidad/Grupos que comparten los detalles de tu cuenta o sobre los que tienes permisos para administrar" - -#: mod/manage.php:155 -msgid "Select an identity to manage: " -msgstr "Selecciona una identidad a gestionar:" - -#: mod/match.php:39 -msgid "No keywords to match. Please add keywords to your default profile." -msgstr "No hay palabras clave que coincidan. Por favor, agrega algunas palabras claves en tu perfil predeterminado." - -#: mod/match.php:92 -msgid "is interested in:" -msgstr "estás interesado en:" - -#: mod/match.php:106 -msgid "Profile Match" -msgstr "Coincidencias de Perfil" - -#: mod/match.php:113 mod/dirfind.php:249 -msgid "No matches" -msgstr "Sin conincidencias" - -#: mod/message.php:63 mod/wallmessage.php:53 -msgid "No recipient selected." -msgstr "Ningún destinatario seleccionado" - -#: mod/message.php:67 -msgid "Unable to locate contact information." -msgstr "No se puede encontrar información del contacto." - -#: mod/message.php:70 mod/wallmessage.php:59 -msgid "Message could not be sent." -msgstr "El mensaje no ha podido ser enviado." - -#: mod/message.php:73 mod/wallmessage.php:62 -msgid "Message collection failure." -msgstr "Fallo en la recolección de mensajes." - -#: mod/message.php:76 mod/wallmessage.php:65 -msgid "Message sent." -msgstr "Mensaje enviado." - -#: mod/message.php:205 -msgid "Do you really want to delete this message?" -msgstr "¿Estás seguro de que quieres borrar este mensaje?" - -#: mod/message.php:225 -msgid "Message deleted." -msgstr "Mensaje eliminado." - -#: mod/message.php:255 -msgid "Conversation removed." -msgstr "Conversación eliminada." - -#: mod/message.php:322 mod/wallmessage.php:129 -msgid "Send Private Message" -msgstr "Enviar mensaje privado" - -#: mod/message.php:323 mod/message.php:510 mod/wallmessage.php:131 -msgid "To:" -msgstr "Para:" - -#: mod/message.php:328 mod/message.php:512 mod/wallmessage.php:132 -msgid "Subject:" -msgstr "Asunto:" - -#: mod/message.php:364 -msgid "No messages." -msgstr "No hay mensajes." - -#: mod/message.php:403 -msgid "Message not available." -msgstr "Mensaje no disponibile." - -#: mod/message.php:478 -msgid "Delete message" -msgstr "Borrar mensaje" - -#: mod/message.php:503 mod/message.php:591 -msgid "Delete conversation" -msgstr "Eliminar conversación" - -#: mod/message.php:505 -msgid "" -"No secure communications available. You may be able to " -"respond from the sender's profile page." -msgstr "No hay comunicaciones seguras disponibles. Podrías responder desde la página de perfil del remitente. " - -#: mod/message.php:509 -msgid "Send Reply" -msgstr "Enviar respuesta" - -#: mod/message.php:561 -#, php-format -msgid "Unknown sender - %s" -msgstr "Remitente desconocido - %s" - -#: mod/message.php:563 -#, php-format -msgid "You and %s" -msgstr "Tú y %s" - -#: mod/message.php:565 -#, php-format -msgid "%s and You" -msgstr "%s y Tú" - -#: mod/message.php:594 -msgid "D, d M Y - g:i A" -msgstr "D, d M Y - g:i A" - -#: mod/message.php:597 -#, php-format -msgid "%d message" -msgid_plural "%d messages" -msgstr[0] "%d mensaje" -msgstr[1] "%d mensajes" - -#: mod/notifications.php:38 -msgid "Invalid request identifier." -msgstr "Solicitud de identificación no válida." - -#: mod/notifications.php:47 mod/notifications.php:183 -#: mod/notifications.php:230 -msgid "Discard" -msgstr "Descartar" - -#: mod/notifications.php:63 mod/notifications.php:182 -#: mod/notifications.php:266 mod/contacts.php:636 mod/contacts.php:836 -#: mod/contacts.php:1021 -msgid "Ignore" -msgstr "Ignorar" - -#: mod/notifications.php:108 -msgid "Network Notifications" -msgstr "Notificaciones de Red" - -#: mod/notifications.php:114 mod/notify.php:73 -msgid "System Notifications" -msgstr "Notificaciones del sistema" - -#: mod/notifications.php:120 -msgid "Personal Notifications" -msgstr "Notificaciones personales" - -#: mod/notifications.php:126 -msgid "Home Notifications" -msgstr "Notificaciones de Inicio" - -#: mod/notifications.php:155 -msgid "Show Ignored Requests" -msgstr "Mostrar peticiones ignoradas" - -#: mod/notifications.php:155 -msgid "Hide Ignored Requests" -msgstr "Ocultar peticiones ignoradas" - -#: mod/notifications.php:167 mod/notifications.php:237 -msgid "Notification type: " -msgstr "Tipo de notificación: " - -#: mod/notifications.php:170 -#, php-format -msgid "suggested by %s" -msgstr "sugerido por %s" - -#: mod/notifications.php:175 mod/notifications.php:254 mod/contacts.php:643 -msgid "Hide this contact from others" -msgstr "Ocultar este contacto a los demás." - -#: mod/notifications.php:176 mod/notifications.php:255 -msgid "Post a new friend activity" -msgstr "Publica tu nueva amistad" - -#: mod/notifications.php:176 mod/notifications.php:255 -msgid "if applicable" -msgstr "Si corresponde" - -#: mod/notifications.php:179 mod/notifications.php:264 mod/admin.php:1628 -msgid "Approve" -msgstr "Aprobar" - -#: mod/notifications.php:198 -msgid "Claims to be known to you: " -msgstr "Dice conocerte: " - -#: mod/notifications.php:199 -msgid "yes" -msgstr "sí" - -#: mod/notifications.php:199 -msgid "no" -msgstr "no" - -#: mod/notifications.php:200 mod/notifications.php:205 -msgid "Shall your connection be bidirectional or not?" -msgstr "¿Su conexión debe ser bidireccional o no?" - -#: mod/notifications.php:201 mod/notifications.php:206 -#, 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 "Aceptar a %s como amigo le permite a %s suscribirse a sus publicaciones, y usted también recibirá actualizaciones de ellos en sus noticias." - -#: 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." -msgstr "Aceptar a %s como suscriptor les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias." - -#: mod/notifications.php:207 -#, 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 "Aceptar a %s como participante les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias." - -#: mod/notifications.php:218 -msgid "Friend" -msgstr "Amigo" - -#: mod/notifications.php:219 -msgid "Sharer" -msgstr "Lector" - -#: mod/notifications.php:219 -msgid "Subscriber" -msgstr "Suscriptor" - -#: mod/notifications.php:275 -msgid "No introductions." -msgstr "Sin presentaciones." - -#: mod/notifications.php:316 -msgid "Show unread" -msgstr "Mostrar no leído" - -#: mod/notifications.php:316 -msgid "Show all" -msgstr "Mostrar todo" - -#: mod/notifications.php:322 -#, php-format -msgid "No more %s notifications." -msgstr "No más notificaciones de %s." - -#: mod/notify.php:69 -msgid "No more system notifications." -msgstr "No hay más notificaciones del sistema." - -#: mod/oexchange.php:25 -msgid "Post successful." -msgstr "¡Publicado!" - -#: mod/openid.php:25 -msgid "OpenID protocol error. No ID returned." -msgstr "Error de protocolo OpenID. ID no devuelta." - -#: mod/openid.php:61 -msgid "" -"Account not found and OpenID registration is not permitted on this site." -msgstr "Cuenta no encontrada y el registro OpenID no está permitido en ese sitio." - -#: mod/p.php:13 -msgid "Not Extended" -msgstr "No extendido" - -#: mod/profile.php:177 -msgid "Tips for New Members" -msgstr "Consejos para nuevos miembros" - -#: mod/removeme.php:55 mod/removeme.php:58 -msgid "Remove My Account" -msgstr "Eliminar mi cuenta" - -#: mod/removeme.php:56 -msgid "" -"This will completely remove your account. Once this has been done it is not " -"recoverable." -msgstr "Esto eliminará por completo tu cuenta. Una vez hecho no se puede deshacer." - -#: mod/removeme.php:57 -msgid "Please enter your password for verification:" -msgstr "Por favor, introduce tu contraseña para la verificación:" - -#: mod/repair_ostatus.php:17 -msgid "Resubscribing to OStatus contacts" -msgstr "Resubscribir a contactos de OStatus" - -#: mod/repair_ostatus.php:33 -msgid "Error" -msgstr "error" - -#: mod/repair_ostatus.php:47 mod/ostatus_subscribe.php:57 -msgid "Done" -msgstr "hecho!" - -#: mod/repair_ostatus.php:53 mod/ostatus_subscribe.php:81 -msgid "Keep this window open until done." -msgstr "Mantén esta ventana abierta hasta que el proceso ha terminado." - -#: mod/subthread.php:106 -#, php-format -msgid "%1$s is following %2$s's %3$s" -msgstr "%1$s está siguiendo las %3$s de %2$s" - -#: mod/tagrm.php:46 -msgid "Tag removed" -msgstr "Etiqueta eliminada" - -#: mod/tagrm.php:85 -msgid "Remove Item Tag" -msgstr "Eliminar etiqueta" - -#: mod/tagrm.php:87 -msgid "Select a tag to remove: " -msgstr "Selecciona una etiqueta para eliminar: " - -#: mod/tagrm.php:98 mod/delegate.php:139 -msgid "Remove" -msgstr "Eliminar" - -#: mod/uexport.php:39 -msgid "Export account" -msgstr "Exportar cuenta" - -#: mod/uexport.php:39 -msgid "" -"Export your account info and contacts. Use this to make a backup of your " -"account and/or to move it to another server." -msgstr "Exporta la información de tu cuenta y tus contactos. Úsalo para guardar una copia de seguridad de tu cuenta y/o moverla a otro servidor." - -#: mod/uexport.php:40 -msgid "Export all" -msgstr "Exportar todo" - -#: mod/uexport.php:40 -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 "Exporta la información de tu cuenta, contactos y lo demás en JSON. Puede ser un archivo bastante grande, por lo que llevará tiempo. Úsalo para hacer una copia de seguridad completa de tu cuenta (las fotos no se exportarán)" - -#: mod/uexport.php:47 mod/settings.php:95 -msgid "Export personal data" -msgstr "Exportación de datos personales" - -#: mod/wallmessage.php:45 mod/wallmessage.php:109 -#, php-format -msgid "Number of daily wall messages for %s exceeded. Message failed." -msgstr "Excedido el número máximo de mensajes para %s. El mensaje no se ha enviado." - -#: mod/wallmessage.php:56 -msgid "Unable to check your home location." -msgstr "Imposible comprobar tu servidor de inicio." - -#: mod/wallmessage.php:83 mod/wallmessage.php:92 -msgid "No recipient." -msgstr "Sin receptor." - -#: mod/wallmessage.php:130 -#, 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 "Si quieres que %s te responda, asegúrate de que la configuración de privacidad permite enviar correo privado a desconocidos." - -#: mod/delegate.php:101 -msgid "No potential page delegates located." -msgstr "No se han localizado delegados potenciales de la página." - -#: mod/delegate.php:132 -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 "Los delegados tienen la capacidad de gestionar todos los aspectos de esta cuenta/página, excepto los ajustes básicos de la cuenta. Por favor, no delegues tu cuenta personal a nadie en quien no confíes completamente." - -#: mod/delegate.php:133 -msgid "Existing Page Managers" -msgstr "Administradores actuales de la página" - -#: mod/delegate.php:135 -msgid "Existing Page Delegates" -msgstr "Delegados actuales de la página" - -#: mod/delegate.php:137 -msgid "Potential Delegates" -msgstr "Delegados potenciales" - -#: mod/delegate.php:140 -msgid "Add" -msgstr "Añadir" - -#: mod/delegate.php:141 -msgid "No entries." -msgstr "Sin entradas." - -#: mod/suggest.php:30 -msgid "Do you really want to delete this suggestion?" -msgstr "¿Estás seguro de que quieres borrar esta sugerencia?" - -#: mod/suggest.php:71 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." -msgstr "No hay sugerencias disponibles. Si el sitio web es nuevo inténtalo de nuevo dentro de 24 horas." - -#: mod/suggest.php:84 mod/suggest.php:104 -msgid "Ignore/Hide" -msgstr "Ignorar/Ocultar" - -#: mod/directory.php:193 view/theme/vier/theme.php:194 -msgid "Global Directory" -msgstr "Directorio global" - -#: mod/directory.php:195 -msgid "Find on this site" -msgstr "Buscar en este sitio" - -#: mod/directory.php:197 -msgid "Results for:" -msgstr "Resultados para:" - -#: mod/directory.php:199 -msgid "Site Directory" -msgstr "Directorio del sitio" - -#: mod/directory.php:206 -msgid "No entries (some entries may be hidden)." -msgstr "Sin entradas (algunas pueden que estén ocultas)." - -#: mod/fbrowser.php:136 -msgid "Files" -msgstr "Archivos" - -#: mod/friendica.php:70 -msgid "This is Friendica, version" -msgstr "Esto es Friendica, versión" - -#: mod/friendica.php:71 -msgid "running at web location" -msgstr "ejecutándose en la dirección web" - -#: mod/friendica.php:75 -msgid "" -"Please visit Friendi.ca to learn more " -"about the Friendica project." -msgstr "Visite Friendi.ca para aprender más sobre el proyecto Friendica, por favor." - -#: mod/friendica.php:79 -msgid "Bug reports and issues: please visit" -msgstr "Reporte de fallos y problemas: por favor visita" - -#: mod/friendica.php:79 -msgid "the bugtracker at github" -msgstr "aviso de fallas (bugs) en github" - -#: mod/friendica.php:82 -msgid "" -"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - " -"dot com" -msgstr "Sugerencias, elogios, donaciones, etc. por favor manda un correo a Info arroba Friendica punto com" - -#: mod/friendica.php:96 -msgid "Installed plugins/addons/apps:" -msgstr "Módulos/extensiones/aplicaciones instalados:" - -#: mod/friendica.php:110 -msgid "No installed plugins/addons/apps" -msgstr "Módulos/extensiones/aplicaciones no instalados" - -#: mod/friendica.php:115 -msgid "On this server the following remote servers are blocked." -msgstr "En este servidor los siguientes servidores remotos están bloqueados." - -#: mod/friendica.php:116 mod/admin.php:291 mod/admin.php:309 -msgid "Reason for the block" -msgstr "Razón para el bloqueo" - -#: mod/install.php:107 -msgid "Friendica Communications Server - Setup" -msgstr "Servidor de comunicación Friendica - Configuración" - -#: mod/install.php:113 -msgid "Could not connect to database." -msgstr "No es posible la conexión con la base de datos." - -#: mod/install.php:117 -msgid "Could not create table." -msgstr "No se puede crear la tabla." - -#: mod/install.php:123 -msgid "Your Friendica site database has been installed." -msgstr "La base de datos de su sitio web de Friendica ha sido instalada." - -#: mod/install.php:128 -msgid "" -"You may need to import the file \"database.sql\" manually using phpmyadmin " -"or mysql." -msgstr "Puede que tengas que importar el archivo \"Database.sql\" manualmente usando phpmyadmin o mysql." - -#: mod/install.php:129 mod/install.php:201 mod/install.php:548 -msgid "Please see the file \"INSTALL.txt\"." -msgstr "Por favor, consulta el archivo \"INSTALL.txt\"." - -#: mod/install.php:141 -msgid "Database already in use." -msgstr "Base de datos ya se encuentra en uso" - -#: mod/install.php:198 -msgid "System check" -msgstr "Verificación del sistema" - -#: mod/install.php:203 -msgid "Check again" -msgstr "Compruebalo de nuevo" - -#: mod/install.php:222 -msgid "Database connection" -msgstr "Conexión con la base de datos" - -#: mod/install.php:223 -msgid "" -"In order to install Friendica we need to know how to connect to your " -"database." -msgstr "Con el fin de poder instalar Friendica, necesitamos saber cómo conectar con tu base de datos." - -#: mod/install.php:224 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." -msgstr "Por favor, contacta con tu proveedor de servicios o con el administrador de la página si tienes alguna pregunta sobre estas configuraciones." - -#: mod/install.php:225 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." -msgstr "La base de datos que especifiques a continuación debería existir ya. Si no es el caso, debes crearla antes de continuar." - -#: mod/install.php:229 -msgid "Database Server Name" -msgstr "Nombre del servidor de la base de datos" - -#: mod/install.php:230 -msgid "Database Login Name" -msgstr "Usuario de la base de datos" - -#: mod/install.php:231 -msgid "Database Login Password" -msgstr "Contraseña de la base de datos" - -#: mod/install.php:231 -msgid "For security reasons the password must not be empty" -msgstr "Por razones de seguridad la contraseña no debe estar vacía" - -#: mod/install.php:232 -msgid "Database Name" -msgstr "Nombre de la base de datos" - -#: mod/install.php:233 mod/install.php:274 -msgid "Site administrator email address" -msgstr "Dirección de correo del administrador de la web" - -#: mod/install.php:233 mod/install.php:274 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." -msgstr "La dirección de correo de tu cuenta debe coincidir con esta para poder usar el panel de administración de la web." - -#: mod/install.php:237 mod/install.php:277 -msgid "Please select a default timezone for your website" -msgstr "Por favor, selecciona la zona horaria predeterminada para tu web" - -#: mod/install.php:264 -msgid "Site settings" -msgstr "Configuración de la página web" - -#: mod/install.php:278 -msgid "System Language:" -msgstr "Sistema de idioma:" - -#: mod/install.php:278 -msgid "" -"Set the default language for your Friendica installation interface and to " -"send emails." -msgstr "Seleccione el idioma por defecto para su interfaz de instalación de Friendica y para enviar emails." - -#: mod/install.php:318 -msgid "Could not find a command line version of PHP in the web server PATH." -msgstr "No se pudo encontrar una versión de la línea de comandos de PHP en la ruta del servidor web." - -#: mod/install.php:319 -msgid "" -"If you don't have a command line version of PHP installed on server, you " -"will not be able to run the background processing. See 'Setup the poller'" -msgstr "Si no tiene una versión de línea de comando de PHP instalada en el servidor, no podrá ejecutar el procesamiento en segundo plano. Vea «Configurar el sondeo»" - -#: mod/install.php:323 -msgid "PHP executable path" -msgstr "Dirección al ejecutable PHP" - -#: mod/install.php:323 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." -msgstr "Introduce la ruta completa al ejecutable php. Puedes dejarlo en blanco y seguir con la instalación." - -#: mod/install.php:328 -msgid "Command line PHP" -msgstr "Línea de comandos PHP" - -#: mod/install.php:337 -msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" -msgstr "El ejecutable PHP no es e lphp cli binary (podria ser versión cgi-fgci)" - -#: mod/install.php:338 -msgid "Found PHP version: " -msgstr "Versión PHP encontrada:" - -#: mod/install.php:340 -msgid "PHP cli binary" -msgstr "PHP cli binario" - -#: mod/install.php:351 -msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." -msgstr "La versión en línea de comandos de PHP en tu sistema no tiene \"register_argc_argv\" habilitado." - -#: mod/install.php:352 -msgid "This is required for message delivery to work." -msgstr "Esto es necesario para que funcione la entrega de mensajes." - -#: mod/install.php:354 -msgid "PHP register_argc_argv" -msgstr "PHP register_argc_argv" - -#: mod/install.php:377 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" -msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de generar claves de cifrado" - -#: mod/install.php:378 -msgid "" -"If running under Windows, please see " -"\"http://www.php.net/manual/en/openssl.installation.php\"." -msgstr "Si se ejecuta en Windows, por favor consulta la sección \"http://www.php.net/manual/en/openssl.installation.php\"." - -#: mod/install.php:380 -msgid "Generate encryption keys" -msgstr "Generar claves de encriptación" - -#: mod/install.php:387 -msgid "libCurl PHP module" -msgstr "Módulo PHP libCurl" - -#: mod/install.php:388 -msgid "GD graphics PHP module" -msgstr "Módulo PHP gráficos GD" - -#: mod/install.php:389 -msgid "OpenSSL PHP module" -msgstr "Módulo PHP OpenSSL" - -#: mod/install.php:390 -msgid "PDO or MySQLi PHP module" -msgstr "Módulo PDO o MySQLi PHP" - -#: mod/install.php:391 -msgid "mb_string PHP module" -msgstr "Módulo PHP mb_string" - -#: mod/install.php:392 -msgid "XML PHP module" -msgstr "Módulo XML PHP" - -#: mod/install.php:393 -msgid "iconv module" -msgstr "Módulo iconv" - -#: mod/install.php:397 mod/install.php:399 -msgid "Apache mod_rewrite module" -msgstr "Módulo mod_rewrite de Apache" - -#: mod/install.php:397 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." -msgstr "Error: El módulo de Apache mod-rewrite es necesario pero no está instalado." - -#: mod/install.php:405 -msgid "Error: libCURL PHP module required but not installed." -msgstr "Error: El módulo de PHP libcurl es necesario, pero no está instalado." - -#: mod/install.php:409 -msgid "" -"Error: GD graphics PHP module with JPEG support required but not installed." -msgstr "Error: El módulo de de PHP gráficos GD con soporte JPEG es necesario, pero no está instalado." - -#: mod/install.php:413 -msgid "Error: openssl PHP module required but not installed." -msgstr "Error: El módulo de PHP openssl es necesario, pero no está instalado." - -#: mod/install.php:417 -msgid "Error: PDO or MySQLi PHP module required but not installed." -msgstr "Error: Módulo PDO o MySQLi PHP requerido pero no instalado." - -#: mod/install.php:421 -msgid "Error: The MySQL driver for PDO is not installed." -msgstr "Error: El dispositivo MySQL para PDO no está instalado." - -#: mod/install.php:425 -msgid "Error: mb_string PHP module required but not installed." -msgstr "Error: El módulo de PHP mb_string es necesario, pero no está instalado." - -#: mod/install.php:429 -msgid "Error: iconv PHP module required but not installed." -msgstr "Error: módulo iconv PHP requerido pero no instalado." - -#: mod/install.php:439 -msgid "Error, XML PHP module required but not installed." -msgstr "Error, módulo XML PHP requerido pero no instalado." - -#: mod/install.php:451 -msgid "" -"The web installer needs to be able to create a file called \".htconfig.php\"" -" in the top folder of your web server and it is unable to do so." -msgstr "El programa de instalación web necesita ser capaz de crear un archivo llamado \".htconfig.php\" en la carpeta principal de tu servidor web y es incapaz de hacerlo." - -#: mod/install.php:452 -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 "Se trata a menudo de una configuración de permisos, pues el servidor web puede que no sea capaz de escribir archivos en la carpeta, aunque tú sí puedas." - -#: mod/install.php:453 -msgid "" -"At the end of this procedure, we will give you a text to save in a file " -"named .htconfig.php in your Friendica top folder." -msgstr "Al final obtendremos un texto que debes guardar en un archivo llamado .htconfig.php en la carpeta de Friendica." - -#: mod/install.php:454 -msgid "" -"You can alternatively skip this procedure and perform a manual installation." -" Please see the file \"INSTALL.txt\" for instructions." -msgstr "Como alternativa, puedes saltarte estos pasos y realizar una instalación manual. Por favor, consulta el archivo \"INSTALL.txt\" para las instrucciones." - -#: mod/install.php:457 -msgid ".htconfig.php is writable" -msgstr ".htconfig.php tiene permiso de escritura" - -#: mod/install.php:467 -msgid "" -"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." -msgstr "Friendica usa el motor de templates Smarty3 para renderizar su visualisacion web. Smarty3 compila templates hacia PHP para acelerar la velocidad del renderizar." - -#: mod/install.php:468 -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 "Para poder guardar estos templates compilados, el servidor web necesita acceso de escritura en el directorio /view/smarty3/ en el árbol de raíz de la instalación friendica." - -#: mod/install.php:469 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has" -" write access to this folder." -msgstr "Por favor asegure que el usuario que utiliza el servidor web (ejemplo: www-data) tiene permisos de escritura en esta carpeta." - -#: mod/install.php:470 -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 "Nota: como medida de seguridad deberia dar acceso de escritura solo a /view/smarty3 / → no al los archivos template (.tpl) que contiene." - -#: mod/install.php:473 -msgid "view/smarty3 is writable" -msgstr "Se puede escribir en /view/smarty3" - -#: mod/install.php:489 -msgid "" -"Url rewrite in .htaccess is not working. Check your server configuration." -msgstr "La reescritura de la dirección en .htaccess no funcionó. Revisa la configuración." - -#: mod/install.php:491 -msgid "Url rewrite is working" -msgstr "Reescribiendo la dirección..." - -#: mod/install.php:510 -msgid "ImageMagick PHP extension is not installed" -msgstr "No está instalada la extensión ImageMagick PHP" - -#: mod/install.php:512 -msgid "ImageMagick PHP extension is installed" -msgstr "ImageMagick PHP extension is installed" - -#: mod/install.php:514 -msgid "ImageMagick supports GIF" -msgstr "ImageMagick supporta GIF" - -#: mod/install.php:521 -msgid "" -"The database configuration file \".htconfig.php\" could not be written. " -"Please use the enclosed text to create a configuration file in your web " -"server root." -msgstr "El archivo de configuración de base de datos \".htconfig.php\" no se pudo escribir. Por favor, utiliza el texto adjunto para crear un archivo de configuración en la raíz de tu servidor web." - -#: mod/install.php:546 -msgid "

What next

" -msgstr "

¿Ahora qué?

" - -#: mod/install.php:547 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the " -"poller." -msgstr "IMPORTANTE: Tendrás que configurar [manualmente] una tarea programada para el sondeo" - -#: mod/search.php:28 mod/network.php:189 -msgid "Remove term" -msgstr "Eliminar término" - -#: mod/search.php:96 -msgid "Only logged in users are permitted to perform a search." -msgstr "Solo usuarios activos tienen permiso para ejecutar búsquedas." - -#: mod/search.php:120 -msgid "Too Many Requests" -msgstr "Demasiadas consultas" - -#: mod/search.php:121 -msgid "Only one search per minute is permitted for not logged in users." -msgstr "Se permite solo una búsqueda por minuto para usuarios no identificados." - -#: mod/search.php:221 -#, php-format -msgid "Items tagged with: %s" -msgstr "Objetos taggeado con: %s" - -#: mod/search.php:223 mod/contacts.php:827 -#, php-format -msgid "Results for: %s" -msgstr "Resultados para: %s" - -#: mod/unfollow.php:33 -msgid "Contact wasn't found or can't be unfollowed." -msgstr "El contacto no fue encontrado o no puede ser dejado de seguir." - -#: mod/unfollow.php:47 -msgid "Contact unfollowed" -msgstr "Contacto no seguido" - -#: mod/unfollow.php:73 -msgid "You aren't a friend of this contact." -msgstr "Usted no es amigo de este contacto." - -#: mod/unfollow.php:79 -msgid "Unfollowing is currently not supported by your network." -msgstr "Dejar de Seguir no es compatible con su red actualmente." - -#: mod/unfollow.php:100 mod/contacts.php:593 -msgid "Disconnect/Unfollow" -msgstr "Desconectar/Dejar de seguir" - -#: mod/admin.php:100 +#: mod/admin.php:106 msgid "Theme settings updated." msgstr "Configuración de la apariencia actualizada." -#: mod/admin.php:172 mod/admin.php:1175 -msgid "Site" -msgstr "Sitio" +#: mod/admin.php:179 src/Content/Nav.php:225 +msgid "Information" +msgstr "Información" -#: mod/admin.php:173 mod/admin.php:1103 mod/admin.php:1620 mod/admin.php:1636 -msgid "Users" -msgstr "Usuarios" +#: mod/admin.php:180 +msgid "Overview" +msgstr "" -#: mod/admin.php:174 mod/admin.php:1738 mod/admin.php:1801 mod/settings.php:74 -msgid "Plugins" -msgstr "Módulos" - -#: mod/admin.php:175 mod/admin.php:2014 mod/admin.php:2064 -msgid "Themes" -msgstr "Temas" - -#: mod/admin.php:176 mod/settings.php:52 -msgid "Additional features" -msgstr "Características adicionales" - -#: mod/admin.php:177 -msgid "DB updates" -msgstr "Actualizaciones de la Base de Datos" - -#: mod/admin.php:178 mod/admin.php:585 -msgid "Inspect Queue" -msgstr "Inspeccionar cola" - -#: mod/admin.php:179 mod/admin.php:299 -msgid "Server Blocklist" -msgstr "Lista de bloqueo del servidor" - -#: mod/admin.php:180 mod/admin.php:551 +#: mod/admin.php:181 mod/admin.php:753 msgid "Federation Statistics" msgstr "Estadísticas de federación" -#: mod/admin.php:181 mod/admin.php:376 +#: mod/admin.php:182 +msgid "Configuration" +msgstr "Configuración" + +#: mod/admin.php:183 mod/admin.php:1478 +msgid "Site" +msgstr "Sitio" + +#: mod/admin.php:184 mod/admin.php:1409 mod/admin.php:1952 mod/admin.php:1969 +msgid "Users" +msgstr "Usuarios" + +#: mod/admin.php:185 mod/admin.php:2068 mod/admin.php:2128 mod/settings.php:99 +msgid "Addons" +msgstr "" + +#: mod/admin.php:186 mod/admin.php:2332 mod/admin.php:2376 +msgid "Themes" +msgstr "Temas" + +#: mod/admin.php:187 mod/settings.php:77 +msgid "Additional features" +msgstr "Características adicionales" + +#: mod/admin.php:188 mod/admin.php:312 mod/register.php:280 +#: src/Content/Nav.php:228 src/Module/Tos.php:71 +msgid "Terms of Service" +msgstr "Términos de Servicio" + +#: mod/admin.php:189 +msgid "Database" +msgstr "Base de Datos" + +#: mod/admin.php:190 +msgid "DB updates" +msgstr "Actualizaciones de la Base de Datos" + +#: mod/admin.php:191 mod/admin.php:796 +msgid "Inspect Queue" +msgstr "Inspeccionar cola" + +#: mod/admin.php:192 +msgid "Inspect Deferred Workers" +msgstr "" + +#: mod/admin.php:193 +msgid "Inspect worker Queue" +msgstr "" + +#: mod/admin.php:194 +msgid "Tools" +msgstr "Herramientas" + +#: mod/admin.php:195 +msgid "Contact Blocklist" +msgstr "" + +#: mod/admin.php:196 mod/admin.php:376 +msgid "Server Blocklist" +msgstr "Lista de bloqueo del servidor" + +#: mod/admin.php:197 mod/admin.php:534 msgid "Delete Item" msgstr "Eliminar Artículo" -#: mod/admin.php:195 mod/admin.php:206 mod/admin.php:2138 +#: mod/admin.php:198 mod/admin.php:199 mod/admin.php:2451 msgid "Logs" msgstr "Registros" -#: mod/admin.php:196 mod/admin.php:2206 +#: mod/admin.php:200 mod/admin.php:2518 msgid "View Logs" msgstr "Ver registro de depuración" -#: mod/admin.php:197 +#: mod/admin.php:202 +msgid "Diagnostics" +msgstr "Diagnósticos" + +#: mod/admin.php:203 +msgid "PHP Info" +msgstr "" + +#: mod/admin.php:204 msgid "probe address" msgstr "probar direccion" -#: mod/admin.php:198 +#: mod/admin.php:205 msgid "check webfinger" msgstr "Verificar webfinger" -#: mod/admin.php:205 -msgid "Plugin Features" -msgstr "Características del módulo" +#: mod/admin.php:225 src/Content/Nav.php:268 +msgid "Admin" +msgstr "Admin" -#: mod/admin.php:207 -msgid "diagnostics" -msgstr "diagnosticos" +#: mod/admin.php:226 +msgid "Addon Features" +msgstr "" -#: mod/admin.php:208 +#: mod/admin.php:227 msgid "User registrations waiting for confirmation" msgstr "Registro de usuarios esperando la confirmación" -#: mod/admin.php:290 -msgid "The blocked domain" -msgstr "El dominio bloqueado" - -#: mod/admin.php:291 mod/admin.php:304 -msgid "The reason why you blocked this domain." -msgstr "La razón por la que bloqueó este dominio." - -#: mod/admin.php:292 -msgid "Delete domain" -msgstr "Eliminar dominio" - -#: mod/admin.php:292 -msgid "Check to delete this entry from the blocklist" -msgstr "Marca para eliminar esta entrada de la lista de bloqueo" - -#: mod/admin.php:298 mod/admin.php:375 mod/admin.php:550 mod/admin.php:584 -#: mod/admin.php:681 mod/admin.php:1174 mod/admin.php:1619 mod/admin.php:1737 -#: mod/admin.php:1800 mod/admin.php:2013 mod/admin.php:2063 mod/admin.php:2137 -#: mod/admin.php:2205 +#: mod/admin.php:311 mod/admin.php:375 mod/admin.php:491 mod/admin.php:533 +#: mod/admin.php:752 mod/admin.php:795 mod/admin.php:846 mod/admin.php:964 +#: mod/admin.php:1477 mod/admin.php:1951 mod/admin.php:2067 mod/admin.php:2127 +#: mod/admin.php:2331 mod/admin.php:2375 mod/admin.php:2450 mod/admin.php:2517 msgid "Administration" msgstr "Administración" -#: mod/admin.php:300 +#: mod/admin.php:313 +msgid "Display Terms of Service" +msgstr "Mostrar los Términos de Servicio" + +#: mod/admin.php:313 +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 "Habilitar la página de los Términos de Servicio. Si esto está activo un enlace a los términos será adicionado al formulario de registro y en la página de información general." + +#: mod/admin.php:314 +msgid "Display Privacy Statement" +msgstr "Mostrar las Directivas de Privacidad" + +#: mod/admin.php:314 +#, php-format +msgid "" +"Show some informations regarding the needed information to operate the node " +"according e.g. to EU-GDPR." +msgstr "" + +#: mod/admin.php:315 +msgid "Privacy Statement Preview" +msgstr "Vista previa de las Directivas de Seguridad" + +#: mod/admin.php:317 +msgid "The Terms of Service" +msgstr "Los Términos de Servicio" + +#: mod/admin.php:317 +msgid "" +"Enter the Terms of Service for your node here. You can use BBCode. Headers " +"of sections should be [h2] and below." +msgstr "Introduzca los Términos de Servicio para tu nodo aquí. Puedes usar BBCode. Cabeceras de sección deberían ser [2] e inferior." + +#: mod/admin.php:319 mod/admin.php:1479 mod/admin.php:2129 mod/admin.php:2377 +#: mod/admin.php:2452 mod/admin.php:2599 mod/delegate.php:176 +#: mod/settings.php:668 mod/settings.php:775 mod/settings.php:863 +#: mod/settings.php:952 mod/settings.php:1177 +msgid "Save Settings" +msgstr "Guardar configuración" + +#: mod/admin.php:367 mod/admin.php:385 mod/dfrn_request.php:346 +#: mod/friendica.php:122 src/Model/Contact.php:1645 +msgid "Blocked domain" +msgstr "Dominio bloqueado" + +#: mod/admin.php:367 +msgid "The blocked domain" +msgstr "El dominio bloqueado" + +#: mod/admin.php:368 mod/admin.php:386 mod/friendica.php:122 +msgid "Reason for the block" +msgstr "Razón para el bloqueo" + +#: mod/admin.php:368 mod/admin.php:381 +msgid "The reason why you blocked this domain." +msgstr "La razón por la que bloqueó este dominio." + +#: mod/admin.php:369 +msgid "Delete domain" +msgstr "Eliminar dominio" + +#: mod/admin.php:369 +msgid "Check to delete this entry from the blocklist" +msgstr "Marca para eliminar esta entrada de la lista de bloqueo" + +#: mod/admin.php:377 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 " @@ -5253,623 +1065,804 @@ msgid "" "server." msgstr "Esta página se puede usar para definir una lista negra de servidores de la red federada a los que no se les permite interactuar con su nodo. Para todos los dominios ingresados, también debe dar una razón por la que ha bloqueado el servidor remoto." -#: mod/admin.php:301 +#: mod/admin.php:378 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 "La lista de servidores bloqueados estará disponible públicamente en la página /friendica para que los usuarios y las personas que investiguen los problemas de comunicación puedan encontrar fácilmente la razón.." -#: mod/admin.php:302 +#: mod/admin.php:379 msgid "Add new entry to block list" msgstr "Agregar nueva entrada a la lista de bloqueo" -#: mod/admin.php:303 +#: mod/admin.php:380 msgid "Server Domain" msgstr "Dominio del servidor" -#: mod/admin.php:303 +#: mod/admin.php:380 msgid "" "The domain of the new server to add to the block list. Do not include the " "protocol." msgstr "El dominio del nuevo servidor para añadir a la lista de bloqueo. No incluye el protocolo." -#: mod/admin.php:304 +#: mod/admin.php:381 msgid "Block reason" msgstr "Lazón del bloqueo" -#: mod/admin.php:305 +#: mod/admin.php:382 msgid "Add Entry" msgstr "Añadir Entrada" -#: mod/admin.php:306 +#: mod/admin.php:383 msgid "Save changes to the blocklist" msgstr "Guardar cambios en la lista de bloqueo" -#: mod/admin.php:307 +#: mod/admin.php:384 msgid "Current Entries in the Blocklist" msgstr "Entradas actuales en la lista de bloqueo" -#: mod/admin.php:310 +#: mod/admin.php:387 msgid "Delete entry from blocklist" msgstr "Eliminar entrada de la lista de bloqueo" -#: mod/admin.php:313 +#: mod/admin.php:390 msgid "Delete entry from blocklist?" msgstr "¿Eliminar entrada de la lista de bloqueo?" -#: mod/admin.php:338 +#: mod/admin.php:416 msgid "Server added to blocklist." msgstr "Servidor añadido a la lista de bloqueo." -#: mod/admin.php:354 +#: mod/admin.php:432 msgid "Site blocklist updated." msgstr "Lista de bloqueo del sitio actualizada." -#: mod/admin.php:377 +#: mod/admin.php:455 src/Core/Console/GlobalCommunityBlock.php:68 +msgid "The contact has been blocked from the node" +msgstr "El contacto ha sido blockeado del nodo" + +#: mod/admin.php:457 src/Core/Console/GlobalCommunityBlock.php:65 +#, php-format +msgid "Could not find any contact entry for this URL (%s)" +msgstr "" + +#: mod/admin.php:464 +#, php-format +msgid "%s contact unblocked" +msgid_plural "%s contacts unblocked" +msgstr[0] "" +msgstr[1] "" + +#: mod/admin.php:492 +msgid "Remote Contact Blocklist" +msgstr "" + +#: mod/admin.php:493 +msgid "" +"This page allows you to prevent any message from a remote contact to reach " +"your node." +msgstr "" + +#: mod/admin.php:494 +msgid "Block Remote Contact" +msgstr "" + +#: mod/admin.php:495 mod/admin.php:1954 +msgid "select all" +msgstr "seleccionar todo" + +#: mod/admin.php:496 +msgid "select none" +msgstr "" + +#: mod/admin.php:497 mod/admin.php:1963 src/Module/Contact.php:623 +#: src/Module/Contact.php:825 src/Module/Contact.php:1078 +msgid "Block" +msgstr "Bloquear" + +#: mod/admin.php:498 mod/admin.php:1965 src/Module/Contact.php:623 +#: src/Module/Contact.php:825 src/Module/Contact.php:1078 +msgid "Unblock" +msgstr "Desbloquear" + +#: mod/admin.php:499 +msgid "No remote contact is blocked from this node." +msgstr "" + +#: mod/admin.php:501 +msgid "Blocked Remote Contacts" +msgstr "" + +#: mod/admin.php:502 +msgid "Block New Remote Contact" +msgstr "" + +#: mod/admin.php:503 +msgid "Photo" +msgstr "" + +#: mod/admin.php:503 mod/admin.php:1946 mod/admin.php:1957 mod/admin.php:1971 +#: mod/admin.php:1987 mod/crepair.php:161 mod/settings.php:670 +#: mod/settings.php:696 +msgid "Name" +msgstr "Nombre" + +#: mod/admin.php:503 mod/profiles.php:395 +msgid "Address" +msgstr "Dirección" + +#: mod/admin.php:503 mod/admin.php:513 mod/follow.php:167 +#: mod/notifications.php:177 mod/notifications.php:261 mod/unfollow.php:137 +#: src/Module/Contact.php:642 +msgid "Profile URL" +msgstr "URL Perfil" + +#: mod/admin.php:511 +#, php-format +msgid "%s total blocked contact" +msgid_plural "%s total blocked contacts" +msgstr[0] "" +msgstr[1] "" + +#: mod/admin.php:513 +msgid "URL of the remote contact to block." +msgstr "" + +#: mod/admin.php:535 msgid "Delete this Item" msgstr "Eliminar este artículo" -#: mod/admin.php:378 +#: mod/admin.php:536 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." msgstr "En esta página, puede eliminar un artículo de su nodo. Si el artículo es una publicación de nivel superior, se eliminará todo el hilo." -#: mod/admin.php:379 +#: mod/admin.php:537 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." msgstr "Usted debe conocer el GUID del artículo. Puedes encontrarlo, por ejemplo. mirando la URL visible. La última parte de http://example.com/display/123456 es el GUID, aquí 123456." -#: mod/admin.php:380 +#: mod/admin.php:538 msgid "GUID" msgstr "GUID" -#: mod/admin.php:380 +#: mod/admin.php:538 msgid "The GUID of the item you want to delete." msgstr "El GUID del artículo que quiere eliminar." -#: mod/admin.php:417 +#: mod/admin.php:572 msgid "Item marked for deletion." msgstr "Artículo marcado para eliminación." -#: mod/admin.php:481 +#: mod/admin.php:643 msgid "unknown" msgstr "desconocido" -#: mod/admin.php:544 +#: mod/admin.php:746 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 "Esta pagina ofrece algunos datos sobre la red conocida a la que tu nodo friendica esta conectado. Estos nummeros no son completos respecto a las redes federadas, si no refleja los nodos esta instancia conoce. " -#: mod/admin.php:545 +#: mod/admin.php:747 msgid "" "The Auto Discovered Contact Directory feature is not enabled, it " "will improve the data displayed here." msgstr "El modulo directorio de contactos encontrados no esta habilitado, habilitado aumentara la cantidad de datos detallados aquí." -#: mod/admin.php:557 +#: mod/admin.php:759 #, php-format -msgid "Currently this node is aware of %d nodes from the following platforms:" -msgstr "Actualmente este nodo reconoce %d nodos de las siguientes plataformas:" +msgid "" +"Currently this node is aware of %d nodes with %d registered users from the " +"following platforms:" +msgstr "" -#: mod/admin.php:587 +#: mod/admin.php:798 mod/admin.php:849 msgid "ID" msgstr "ID" -#: mod/admin.php:588 +#: mod/admin.php:799 msgid "Recipient Name" msgstr "Nombre del recipiente" -#: mod/admin.php:589 +#: mod/admin.php:800 msgid "Recipient Profile" msgstr "Perfil del recipiente" -#: mod/admin.php:591 +#: mod/admin.php:801 src/Content/Nav.php:233 +#: src/Core/NotificationsManager.php:178 view/theme/frio/theme.php:280 +msgid "Network" +msgstr "Red" + +#: mod/admin.php:802 mod/admin.php:851 msgid "Created" msgstr "Creado" -#: mod/admin.php:592 +#: mod/admin.php:803 msgid "Last Tried" msgstr "Ultimo intento" -#: mod/admin.php:593 +#: mod/admin.php:804 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 "Esta pagina muestra la cola de mensajes salientes. Estos son publicaciones cuyo envío inicial fallo. Serán reenviados mas tarde y eventualmente eliminados si la entrega falla permanentemente. " -#: mod/admin.php:617 +#: mod/admin.php:825 +msgid "Inspect Deferred Worker Queue" +msgstr "" + +#: mod/admin.php:826 +msgid "" +"This page lists the deferred worker jobs. This are jobs that couldn't be " +"executed at the first time." +msgstr "" + +#: mod/admin.php:829 +msgid "Inspect Worker Queue" +msgstr "" + +#: mod/admin.php:830 +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/admin.php:850 +msgid "Job Parameters" +msgstr "" + +#: mod/admin.php:852 +msgid "Priority" +msgstr "" + +#: mod/admin.php:877 #, 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 here for a guide that may be helpful " "converting the table engines. You may also use the command php " -"include/dbstructure.php toinnodb of your Friendica installation for an " -"automatic conversion.
" -msgstr "Su DB aún funciona con las tablas MyISAM. Debe cambiar el tipo de motor a InnoDB. Como Friendica usará las características únicas de InnoDB en el futuro, ¡debería cambiar esto! Vea aquípara ver una guía que puede ser útil para convertir los motores de tabla. También puede usar el comando php include/dbstructure.php toinnodb de si instalación de Friendica para una conversión automática.
" +"bin/console.php dbstructure toinnodb of your Friendica installation for" +" an automatic conversion.
" +msgstr "" -#: mod/admin.php:624 +#: mod/admin.php:884 #, 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 "Hay una nueva versión de Friendica disponible para descargar. Su versión actual es %1$s, la versión ascendente es %2$s" -#: mod/admin.php:635 +#: mod/admin.php:894 msgid "" -"The database update failed. Please run \"php include/dbstructure.php " +"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 "La actualización de la base de datos falló. Por favor, ejecute «actualización php include/dbstructure.php» desde la línea de comando y eche un vistazo a los errores que pueden aparecer." +msgstr "" -#: mod/admin.php:641 +#: mod/admin.php:900 msgid "The worker was never executed. Please check your database structure!" msgstr "El trabajador nunca fue ejecutado. ¡Revise la estructura de su base de datos, por favor!" -#: mod/admin.php:644 +#: mod/admin.php:903 #, php-format msgid "" "The last worker execution was on %s UTC. This is older than one hour. Please" " check your crontab settings." msgstr "La última ejecución del trabajador estaba en %s UTC. Esto es anterior a una hora. Revise tu configuración de crontab, por favor." -#: mod/admin.php:649 mod/admin.php:1569 +#: mod/admin.php:909 +#, php-format +msgid "" +"Friendica's configuration now is stored in config/local.config.php, please " +"copy config/local-sample.config.php and move your config from " +".htconfig.php. See the Config help page for " +"help with the transition." +msgstr "" + +#: mod/admin.php:916 +#, php-format +msgid "" +"%s is not reachable on your system. This is a severe " +"configuration issue that prevents server to server communication. See the installation page for help." +msgstr "" + +#: mod/admin.php:922 msgid "Normal Account" msgstr "Cuenta normal" -#: mod/admin.php:650 mod/admin.php:1570 +#: mod/admin.php:923 msgid "Automatic Follower Account" msgstr "Cuenta de Seguimiento Automático" -#: mod/admin.php:651 mod/admin.php:1571 +#: mod/admin.php:924 msgid "Public Forum Account" msgstr "Cuenta del Foro Pública" -#: mod/admin.php:652 mod/admin.php:1572 +#: mod/admin.php:925 msgid "Automatic Friend Account" msgstr "Cuenta de amistad automática" -#: mod/admin.php:653 +#: mod/admin.php:926 msgid "Blog Account" msgstr "Cuenta de blog" -#: mod/admin.php:654 +#: mod/admin.php:927 msgid "Private Forum Account" msgstr "Cuenta del Foro Privada" -#: mod/admin.php:676 +#: mod/admin.php:950 msgid "Message queues" msgstr "Cola de mensajes" -#: mod/admin.php:682 +#: mod/admin.php:956 +msgid "Server Settings" +msgstr "" + +#: mod/admin.php:965 msgid "Summary" msgstr "Resumen" -#: mod/admin.php:684 +#: mod/admin.php:967 msgid "Registered users" msgstr "Usuarios registrados" -#: mod/admin.php:686 +#: mod/admin.php:969 msgid "Pending registrations" msgstr "Pendientes de registro" -#: mod/admin.php:687 +#: mod/admin.php:970 msgid "Version" msgstr "Versión" -#: mod/admin.php:692 -msgid "Active plugins" -msgstr "Módulos activos" +#: mod/admin.php:975 +msgid "Active addons" +msgstr "" -#: mod/admin.php:722 +#: mod/admin.php:1007 msgid "Can not parse base url. Must have at least ://" msgstr "No se puede resolver la direccion URL base.\nDeberá tener al menos ://" -#: mod/admin.php:1029 +#: mod/admin.php:1343 msgid "Site settings updated." msgstr "Configuración de actualización." -#: mod/admin.php:1057 mod/settings.php:948 +#: mod/admin.php:1371 mod/settings.php:896 msgid "No special theme for mobile devices" msgstr "No hay tema especial para dispositivos móviles" -#: mod/admin.php:1086 +#: mod/admin.php:1400 +msgid "No community page for local users" +msgstr "" + +#: mod/admin.php:1401 msgid "No community page" msgstr "No hay pagina de comunidad" -#: mod/admin.php:1087 +#: mod/admin.php:1402 msgid "Public postings from users of this site" msgstr "Temas públicos de perfiles de este sitio." -#: mod/admin.php:1088 -msgid "Global community page" -msgstr "Pagina global de comunidad" +#: mod/admin.php:1403 +msgid "Public postings from the federated network" +msgstr "" -#: mod/admin.php:1093 mod/contacts.php:552 -msgid "Never" -msgstr "Nunca" +#: mod/admin.php:1404 +msgid "Public postings from local users and the federated network" +msgstr "" -#: mod/admin.php:1094 -msgid "At post arrival" -msgstr "A la llegada de una publicación" - -#: mod/admin.php:1102 mod/contacts.php:579 +#: mod/admin.php:1408 mod/admin.php:1576 mod/admin.php:1586 +#: src/Module/Contact.php:548 msgid "Disabled" msgstr "Deshabilitado" -#: mod/admin.php:1104 +#: mod/admin.php:1410 msgid "Users, Global Contacts" msgstr "Perfiles, contactos globales" -#: mod/admin.php:1105 +#: mod/admin.php:1411 msgid "Users, Global Contacts/fallback" msgstr "Perfiles, contactos globales/fallback" -#: mod/admin.php:1109 +#: mod/admin.php:1415 msgid "One month" msgstr "Un mes" -#: mod/admin.php:1110 +#: mod/admin.php:1416 msgid "Three months" msgstr "Tres meses" -#: mod/admin.php:1111 +#: mod/admin.php:1417 msgid "Half a year" msgstr "Medio año" -#: mod/admin.php:1112 +#: mod/admin.php:1418 msgid "One year" msgstr "Un año" -#: mod/admin.php:1117 +#: mod/admin.php:1423 msgid "Multi user instance" msgstr "Sesión multi usuario" -#: mod/admin.php:1140 +#: mod/admin.php:1447 msgid "Closed" msgstr "Cerrado" -#: mod/admin.php:1141 +#: mod/admin.php:1448 msgid "Requires approval" msgstr "Requiere aprobación" -#: mod/admin.php:1142 +#: mod/admin.php:1449 msgid "Open" msgstr "Abierto" -#: mod/admin.php:1146 +#: mod/admin.php:1453 msgid "No SSL policy, links will track page SSL state" msgstr "No existe una política de SSL, los vínculos harán un seguimiento del estado de SSL en la página" -#: mod/admin.php:1147 +#: mod/admin.php:1454 msgid "Force all links to use SSL" msgstr "Forzar todos los enlaces a utilizar SSL" -#: mod/admin.php:1148 +#: mod/admin.php:1455 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "Certificación personal, usa SSL solo para enlaces locales (no recomendado)" -#: mod/admin.php:1152 +#: mod/admin.php:1459 msgid "Don't check" msgstr "No verificar" -#: mod/admin.php:1153 +#: mod/admin.php:1460 msgid "check the stable version" msgstr "verifique la versión estable" -#: mod/admin.php:1154 +#: mod/admin.php:1461 msgid "check the development version" msgstr "verifica la versión de desarrollo" -#: mod/admin.php:1176 mod/admin.php:1802 mod/admin.php:2065 mod/admin.php:2139 -#: mod/admin.php:2292 mod/settings.php:691 mod/settings.php:802 -#: mod/settings.php:851 mod/settings.php:913 mod/settings.php:1010 -#: mod/settings.php:1258 -msgid "Save Settings" -msgstr "Guardar configuración" - -#: mod/admin.php:1177 +#: mod/admin.php:1480 msgid "Republish users to directory" msgstr "Volver a publicar usuarios en el directorio" -#: mod/admin.php:1178 mod/register.php:277 +#: mod/admin.php:1481 mod/register.php:257 msgid "Registration" msgstr "Registro" -#: mod/admin.php:1179 +#: mod/admin.php:1482 msgid "File upload" msgstr "Subida de archivo" -#: mod/admin.php:1180 +#: mod/admin.php:1483 msgid "Policies" msgstr "Políticas" -#: mod/admin.php:1182 +#: mod/admin.php:1484 mod/events.php:570 src/Model/Profile.php:879 +#: src/Module/Contact.php:903 +msgid "Advanced" +msgstr "Avanzado" + +#: mod/admin.php:1485 msgid "Auto Discovered Contact Directory" msgstr "Directorio de contactos descubierto automáticamente" -#: mod/admin.php:1183 +#: mod/admin.php:1486 msgid "Performance" msgstr "Rendimiento" -#: mod/admin.php:1184 +#: mod/admin.php:1487 msgid "Worker" msgstr "Trabajador (??)" -#: mod/admin.php:1185 -msgid "" -"Relocate - WARNING: advanced function. Could make this server unreachable." -msgstr "Reubicación - ADVERTENCIA: función avanzada. Puede hacer a este servidor inaccesible. " +#: mod/admin.php:1488 +msgid "Message Relay" +msgstr "" -#: mod/admin.php:1188 +#: mod/admin.php:1489 +msgid "Relocate Instance" +msgstr "" + +#: mod/admin.php:1490 +msgid "Warning! Advanced function. Could make this server unreachable." +msgstr "" + +#: mod/admin.php:1494 msgid "Site name" msgstr "Nombre del sitio" -#: mod/admin.php:1189 +#: mod/admin.php:1495 msgid "Host name" msgstr "Nombre de dominio" -#: mod/admin.php:1190 +#: mod/admin.php:1496 msgid "Sender Email" msgstr "Dirección de origen de correo electrónico" -#: mod/admin.php:1190 +#: mod/admin.php:1496 msgid "" "The email address your server shall use to send notification emails from." msgstr "La dirección de correo electrónico que el servidor debería usar como dirección de envío." -#: mod/admin.php:1191 +#: mod/admin.php:1497 msgid "Banner/Logo" msgstr "Imagen/Logotipo" -#: mod/admin.php:1192 +#: mod/admin.php:1498 msgid "Shortcut icon" msgstr "Icono de atajo" -#: mod/admin.php:1192 +#: mod/admin.php:1498 msgid "Link to an icon that will be used for browsers." msgstr "Enlace hacia un icono que sera usado para el navegador." -#: mod/admin.php:1193 +#: mod/admin.php:1499 msgid "Touch icon" msgstr "Icono touch" -#: mod/admin.php:1193 +#: mod/admin.php:1499 msgid "Link to an icon that will be used for tablets and mobiles." msgstr "Enlace para un icono que sera usado para tablets y moviles." -#: mod/admin.php:1194 +#: mod/admin.php:1500 msgid "Additional Info" msgstr "Información adicional" -#: mod/admin.php:1194 +#: mod/admin.php:1500 #, php-format msgid "" "For public servers: you can add additional information here that will be " -"listed at %s/siteinfo." -msgstr "Para servidores públicos: información adicional que sera publicado en %s/siteinfo." +"listed at %s/servers." +msgstr "" -#: mod/admin.php:1195 +#: mod/admin.php:1501 msgid "System language" msgstr "Idioma" -#: mod/admin.php:1196 +#: mod/admin.php:1502 msgid "System theme" msgstr "Tema" -#: mod/admin.php:1196 +#: mod/admin.php:1502 msgid "" "Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "Tema por defecto del sistema, los usuarios podrán elegir el suyo propio en su configuración cambiar configuración del tema" -#: mod/admin.php:1197 +#: mod/admin.php:1503 msgid "Mobile system theme" msgstr "Tema de sistema móvil" -#: mod/admin.php:1197 +#: mod/admin.php:1503 msgid "Theme for mobile devices" msgstr "Tema para dispositivos móviles" -#: mod/admin.php:1198 +#: mod/admin.php:1504 msgid "SSL link policy" msgstr "Política de enlaces SSL" -#: mod/admin.php:1198 +#: mod/admin.php:1504 msgid "Determines whether generated links should be forced to use SSL" msgstr "Determina si los enlaces generados deben ser forzados a utilizar SSL" -#: mod/admin.php:1199 +#: mod/admin.php:1505 msgid "Force SSL" msgstr "Forzar SSL" -#: mod/admin.php:1199 +#: mod/admin.php:1505 msgid "" "Force all Non-SSL requests to SSL - Attention: on some systems it could lead" " to endless loops." msgstr "Forzar todos las consultas No-SSL a SSL. - ATENCIÓN: en algunos sistemas esto puede generar comportamiento recursivo interminable." -#: mod/admin.php:1200 +#: mod/admin.php:1506 msgid "Hide help entry from navigation menu" msgstr "Ocultar la ayuda en el menú de navegación" -#: mod/admin.php:1200 +#: mod/admin.php:1506 msgid "" "Hides the menu entry for the Help pages from the navigation menu. You can " "still access it calling /help directly." msgstr "Oculta la entrada de las páginas de Ayuda en el menú de navegación. Todavía se puede acceder escribiendo /ayuda directamente." -#: mod/admin.php:1201 +#: mod/admin.php:1507 msgid "Single user instance" msgstr "Sesión de usuario único" -#: mod/admin.php:1201 +#: mod/admin.php:1507 msgid "Make this instance multi-user or single-user for the named user" msgstr "Haz esta sesión multi-usuario o usuario único para el usuario" -#: mod/admin.php:1202 +#: mod/admin.php:1508 msgid "Maximum image size" msgstr "Tamaño máximo de la imagen" -#: mod/admin.php:1202 +#: mod/admin.php:1508 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Tamaño máximo en bytes de las imágenes a subir. Por defecto es 0, que quiere decir que no hay límite." -#: mod/admin.php:1203 +#: mod/admin.php:1509 msgid "Maximum image length" msgstr "Largo máximo de imagen" -#: mod/admin.php:1203 +#: mod/admin.php:1509 msgid "" "Maximum length in pixels of the longest side of uploaded images. Default is " "-1, which means no limits." msgstr "Longitud máxima en píxeles del lado más largo de las imágenes subidas. Por defecto es -1, que significa que no hay límites." -#: mod/admin.php:1204 +#: mod/admin.php:1510 msgid "JPEG image quality" msgstr "Calidad de imagen JPEG" -#: mod/admin.php:1204 +#: mod/admin.php:1510 msgid "" "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " "100, which is full quality." msgstr "Los archivos JPEG subidos se guardarán con este ajuste de calidad [0-100]. Por defecto es 100, que es calidad máxima." -#: mod/admin.php:1206 +#: mod/admin.php:1512 msgid "Register policy" msgstr "Política de registros" -#: mod/admin.php:1207 +#: mod/admin.php:1513 msgid "Maximum Daily Registrations" msgstr "Registros Máximos Diarios" -#: mod/admin.php:1207 +#: mod/admin.php:1513 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 "Si anteriormente se ha permitido el registro, esto establece el número máximo de registro de nuevos usuarios aceptados por día. Si el registro se establece como cerrado, esta opción no tiene efecto." -#: mod/admin.php:1208 +#: mod/admin.php:1514 msgid "Register text" msgstr "Términos" -#: mod/admin.php:1208 -msgid "Will be displayed prominently on the registration page." -msgstr "Se mostrará en un lugar destacado en la página de registro." +#: mod/admin.php:1514 +msgid "" +"Will be displayed prominently on the registration page. You can use BBCode " +"here." +msgstr "" -#: mod/admin.php:1209 +#: mod/admin.php:1515 +msgid "Forbidden Nicknames" +msgstr "" + +#: mod/admin.php:1515 +msgid "" +"Comma separated list of nicknames that are forbidden from registration. " +"Preset is a list of role names according RFC 2142." +msgstr "" + +#: mod/admin.php:1516 msgid "Accounts abandoned after x days" msgstr "Cuentas abandonadas después de x días" -#: mod/admin.php:1209 +#: mod/admin.php:1516 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "No gastará recursos del sistema creando sondeos a sitios externos para cuentas abandonadas. Introduce 0 para ningún límite temporal." -#: mod/admin.php:1210 +#: mod/admin.php:1517 msgid "Allowed friend domains" msgstr "Dominios amigos permitidos" -#: mod/admin.php:1210 +#: mod/admin.php:1517 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Lista separada por comas de los dominios que están autorizados para establecer conexiones con este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio" -#: mod/admin.php:1211 +#: mod/admin.php:1518 msgid "Allowed email domains" msgstr "Dominios de correo permitidos" -#: mod/admin.php:1211 +#: mod/admin.php:1518 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 "Lista separada por comas de los dominios que están autorizados en las direcciones de correo para registrarse en este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio" -#: mod/admin.php:1212 +#: mod/admin.php:1519 +msgid "No OEmbed rich content" +msgstr "" + +#: mod/admin.php:1519 +msgid "" +"Don't show the rich content (e.g. embedded PDF), except from the domains " +"listed below." +msgstr "" + +#: mod/admin.php:1520 +msgid "Allowed OEmbed domains" +msgstr "" + +#: mod/admin.php:1520 +msgid "" +"Comma separated list of domains which oembed content is allowed to be " +"displayed. Wildcards are accepted." +msgstr "" + +#: mod/admin.php:1521 msgid "Block public" msgstr "Bloqueo público" -#: mod/admin.php:1212 +#: mod/admin.php:1521 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "Marca para bloquear el acceso público a todas las páginas personales, aún siendo públicas, hasta que no hayas iniciado tu sesión." -#: mod/admin.php:1213 +#: mod/admin.php:1522 msgid "Force publish" msgstr "Forzar publicación" -#: mod/admin.php:1213 +#: mod/admin.php:1522 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Marca para forzar que todos los perfiles de este sitio sean listados en el directorio del sitio." -#: mod/admin.php:1214 +#: mod/admin.php:1522 +msgid "Enabling this may violate privacy laws like the GDPR" +msgstr "" + +#: mod/admin.php:1523 msgid "Global directory URL" msgstr "URL del directorio global." -#: mod/admin.php:1214 +#: mod/admin.php:1523 msgid "" "URL to the global directory. If this is not set, the global directory is " "completely unavailable to the application." msgstr "URL del directorio global. Si se deja este campo vacío, el directorio global sera completamente inaccesible para la instancia." -#: mod/admin.php:1215 -msgid "Allow threaded items" -msgstr "Permitir elementos en hilo" - -#: mod/admin.php:1215 -msgid "Allow infinite level threading for items on this site." -msgstr "Permitir infinitos niveles de hilo para los elementos de este sitio." - -#: mod/admin.php:1216 +#: mod/admin.php:1524 msgid "Private posts by default for new users" msgstr "Publicaciones privadas por defecto para usuarios nuevos" -#: mod/admin.php:1216 +#: mod/admin.php:1524 msgid "" "Set default post permissions for all new members to the default privacy " "group rather than public." msgstr "Ajusta los permisos de publicación por defecto a los miembros nuevos al grupo privado por defecto en vez del público." -#: mod/admin.php:1217 +#: mod/admin.php:1525 msgid "Don't include post content in email notifications" msgstr "No incluir el contenido del post en las notificaciones de correo electrónico" -#: mod/admin.php:1217 +#: mod/admin.php:1525 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 "No incluye el contenido de un mensaje/comentario/mensaje privado/etc. en las notificaciones de correo electrónico que se envían desde este sitio, como una medida de privacidad." -#: mod/admin.php:1218 +#: mod/admin.php:1526 msgid "Disallow public access to addons listed in the apps menu." msgstr "Deshabilitar acceso a addons listados en el menú de aplicaciones." -#: mod/admin.php:1218 +#: mod/admin.php:1526 msgid "" "Checking this box will restrict addons listed in the apps menu to members " "only." msgstr "Habilitando esta opción restringe el acceso a addons en el menú de aplicaciones a usuarios identificados." -#: mod/admin.php:1219 +#: mod/admin.php:1527 msgid "Don't embed private images in posts" msgstr "No agregar imágenes privados en las publicaciones" -#: mod/admin.php:1219 +#: mod/admin.php:1527 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 " @@ -5877,210 +1870,223 @@ msgid "" "while." msgstr "No reemplazar imágenes privadas guardadas localmente en el servidor con imágenes integrados en los envíos. Esto significa que contactos que reciben publicaciones tendrán que autenticarse y cargar cada imagen, lo que puede demorar." -#: mod/admin.php:1220 +#: mod/admin.php:1528 +msgid "Explicit Content" +msgstr "" + +#: mod/admin.php:1528 +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/admin.php:1529 msgid "Allow Users to set remote_self" msgstr "Permitir a los usuarios de definir perfiles_remotos" -#: mod/admin.php:1220 +#: mod/admin.php:1529 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 "Al habilitar esta opción, cada perfil tiene el permiso de marcar cualquiera de sus contactos como un perfil_remoto. Habilitar la opción perfil_remoto para un contacto genera que todas las publicaciones de este contacto seran re-publicado en el muro del perfil." -#: mod/admin.php:1221 +#: mod/admin.php:1530 msgid "Block multiple registrations" msgstr "Bloquear registros multiples" -#: mod/admin.php:1221 +#: mod/admin.php:1530 msgid "Disallow users to register additional accounts for use as pages." msgstr "Impedir que los usuarios registren cuentas adicionales para su uso como páginas." -#: mod/admin.php:1222 -msgid "OpenID support" -msgstr "Soporte OpenID" +#: mod/admin.php:1531 +msgid "Disable OpenID" +msgstr "" -#: mod/admin.php:1222 -msgid "OpenID support for registration and logins." -msgstr "Soporte OpenID para registros y accesos." +#: mod/admin.php:1531 +msgid "Disable OpenID support for registration and logins." +msgstr "" -#: mod/admin.php:1223 -msgid "Fullname check" -msgstr "Comprobar Nombre completo" +#: mod/admin.php:1532 +msgid "No Fullname check" +msgstr "" -#: mod/admin.php:1223 +#: mod/admin.php:1532 msgid "" -"Force users to register with a space between firstname and lastname in Full " -"name, as an antispam measure" -msgstr "Fuerza a los usuarios a registrarse con un espacio entre su nombre y su apellido en el campo Nombre completo como medida anti-spam" +"Allow users to register without a space between the first name and the last " +"name in their full name." +msgstr "" -#: mod/admin.php:1224 -msgid "Community Page Style" -msgstr "Estilo de pagina de comunidad" +#: mod/admin.php:1533 +msgid "Community pages for visitors" +msgstr "" -#: mod/admin.php:1224 +#: mod/admin.php:1533 msgid "" -"Type of community page to show. 'Global community' shows every public " -"posting from an open distributed network that arrived on this server." -msgstr "Tipo de pagina de comunidad a visualizar. 'Comunidad global' muestra todas las publicaciones publicas de la red abierta federada que llega a este servidor." +"Which community pages should be available for visitors. Local users always " +"see both pages." +msgstr "" -#: mod/admin.php:1225 +#: mod/admin.php:1534 msgid "Posts per user on community page" msgstr "Publicaciones por usuario en la pagina de comunidad" -#: mod/admin.php:1225 +#: mod/admin.php:1534 msgid "" "The maximum number of posts per user on the community page. (Not valid for " "'Global Community')" msgstr "El numero máximo de publicaciones por usuario que aparecerán en la pagina de comunidad. (No valido para 'comunidad global')" -#: mod/admin.php:1226 -msgid "Enable OStatus support" -msgstr "Permitir soporte OStatus" +#: mod/admin.php:1535 +msgid "Disable OStatus support" +msgstr "" -#: mod/admin.php:1226 +#: mod/admin.php:1535 msgid "" -"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " +"Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." -msgstr "Proporcionar OStatus compatibilidad integrada (StatusNet, GNU Social, Quitter etc.). Todas las comunicaciones en OStatus son publicas así que eventuales advertencias serán ocasionalmente desplegadas." +msgstr "" -#: mod/admin.php:1227 -msgid "Only import OStatus threads from our contacts" -msgstr "Solo importar OStatus temas de nuestros (?) contactos." +#: mod/admin.php:1536 +msgid "Only import OStatus/ActivityPub threads from our contacts" +msgstr "" -#: mod/admin.php:1227 +#: mod/admin.php:1536 msgid "" -"Normally we import every content from our OStatus contacts. With this option" -" we only store threads that are started by a contact that is known on our " -"system." -msgstr "Normalmente importamos todo el contenido de los contactos de OStatus. Con esta opción solamente se guardan temas que fueron iniciados por contactos que son conocidos de la instancia.\n(nota de traducción, no se entiende muy bien la función en base al texto original)" +"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/admin.php:1228 +#: mod/admin.php:1537 msgid "OStatus support can only be enabled if threading is enabled." msgstr "Solo se puede habilitar el soporte OStatus si threading (comentarios en fila) se encuentra habilitado." -#: mod/admin.php:1230 +#: mod/admin.php:1539 msgid "" "Diaspora support can't be enabled because Friendica was installed into a sub" " directory." msgstr "El soporte para Diaspora* no se puede habilitar porque friendica se instalo en un directorio subalterno (sub directory)." -#: mod/admin.php:1231 +#: mod/admin.php:1540 msgid "Enable Diaspora support" msgstr "Habilitar el soporte para Diaspora*" -#: mod/admin.php:1231 +#: mod/admin.php:1540 msgid "Provide built-in Diaspora network compatibility." msgstr "Provee una compatibilidad con la red de Diaspora." -#: mod/admin.php:1232 +#: mod/admin.php:1541 msgid "Only allow Friendica contacts" msgstr "Permitir solo contactos de Friendica" -#: mod/admin.php:1232 +#: mod/admin.php:1541 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "Todos los contactos deben usar protocolos de Friendica. El resto de protocolos serán desactivados." -#: mod/admin.php:1233 +#: mod/admin.php:1542 msgid "Verify SSL" msgstr "Verificar SSL" -#: mod/admin.php:1233 +#: mod/admin.php:1542 msgid "" "If you wish, you can turn on strict certificate checking. This will mean you" " cannot connect (at all) to self-signed SSL sites." msgstr "Si quieres puedes activar la comprobación estricta de certificados. Esto significa que serás incapaz de conectar con ningún sitio que use certificados SSL autofirmados." -#: mod/admin.php:1234 +#: mod/admin.php:1543 msgid "Proxy user" msgstr "Usuario proxy" -#: mod/admin.php:1235 +#: mod/admin.php:1544 msgid "Proxy URL" msgstr "Dirección proxy" -#: mod/admin.php:1236 +#: mod/admin.php:1545 msgid "Network timeout" msgstr "Tiempo de espera de red" -#: mod/admin.php:1236 +#: mod/admin.php:1545 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valor en segundos. Usar 0 para dejarlo sin límites (no se recomienda)." -#: mod/admin.php:1237 +#: mod/admin.php:1546 msgid "Maximum Load Average" msgstr "Promedio de carga máxima" -#: mod/admin.php:1237 +#: mod/admin.php:1546 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Carga máxima del sistema antes de que la entrega y los procesos de sondeo sean retrasados - por defecto 50." -#: mod/admin.php:1238 +#: mod/admin.php:1547 msgid "Maximum Load Average (Frontend)" msgstr "Carga máxima promedio (frontend)" -#: mod/admin.php:1238 +#: mod/admin.php:1547 msgid "Maximum system load before the frontend quits service - default 50." msgstr "Carga máxima del sistema antes de que el frontend cancele el servicio - por defecto 50." -#: mod/admin.php:1239 +#: mod/admin.php:1548 msgid "Minimal Memory" msgstr "Memoria Mínima" -#: mod/admin.php:1239 +#: mod/admin.php:1548 msgid "" -"Minimal free memory in MB for the poller. Needs access to /proc/meminfo - " +"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - " "default 0 (deactivated)." -msgstr "Memoria libre mínima en MB para la encuesta. Necesita acceso a /proc/meminfo - estándar 0 (desactivado)." +msgstr "" -#: mod/admin.php:1240 +#: mod/admin.php:1549 msgid "Maximum table size for optimization" msgstr "Tamaño máximo de las tablas para la optimización." -#: mod/admin.php:1240 +#: mod/admin.php:1549 msgid "" -"Maximum table size (in MB) for the automatic optimization - default 100 MB. " -"Enter -1 to disable it." -msgstr "Tamaño máximo de tablas (en MB) para la optimización automática - por defecto 100MB. Ingrese -1 para deshabilitar." +"Maximum table size (in MB) for the automatic optimization. Enter -1 to " +"disable it." +msgstr "" -#: mod/admin.php:1241 +#: mod/admin.php:1550 msgid "Minimum level of fragmentation" msgstr "Nivel mínimo de fragmentación " -#: mod/admin.php:1241 +#: mod/admin.php:1550 msgid "" "Minimum fragmenation level to start the automatic optimization - default " "value is 30%." msgstr "Nivel mínimo de fragmentación para para comenzar la optimización - valor por defecto es 30%. " -#: mod/admin.php:1243 +#: mod/admin.php:1552 msgid "Periodical check of global contacts" msgstr "Verificación periódica de los contactos globales." -#: mod/admin.php:1243 +#: mod/admin.php:1552 msgid "" "If enabled, the global contacts are checked periodically for missing or " "outdated data and the vitality of the contacts and servers." msgstr "Habilitado los contactos globales son verificado periódicamente por datos faltantes o datos obsoletos como también por la vitalidad de los contactos y servidores." -#: mod/admin.php:1244 +#: mod/admin.php:1553 msgid "Days between requery" msgstr "Días entre búsquedas" -#: mod/admin.php:1244 +#: mod/admin.php:1553 msgid "Number of days after which a server is requeried for his contacts." msgstr "Cantidad de días hasta que un servidor es consultado por sus contactos." -#: mod/admin.php:1245 +#: mod/admin.php:1554 msgid "Discover contacts from other servers" msgstr "Descubrir contactos de otros servidores" -#: mod/admin.php:1245 +#: mod/admin.php:1554 msgid "" "Periodically query other servers for contacts. You can choose between " "'users': the users on the remote system, 'Global Contacts': active contacts " @@ -6090,32 +2096,32 @@ msgid "" "Global Contacts'." msgstr "Recoger periódicamente información sobre perfiles en otros servidores. Puede elegir entre 'usuarios': perfiles de un sistema remoto, 'contactos globales': contactos activos que son conocidos por el servidor. El fallback es para servidors redmatrix y instalaciones viejas de friendica en las que los contactos no estaban a disposición. El fallback aumenta la carga del servidor, asi que la configuración recomendada es 'usuarios, contactos globales'" -#: mod/admin.php:1246 +#: mod/admin.php:1555 msgid "Timeframe for fetching global contacts" msgstr "Intervalos de tiempo para revisar contactos globales." -#: mod/admin.php:1246 +#: mod/admin.php:1555 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 "Cuando la revisacion es activada, este valor define el intervalo de tiempo de la actividad de los contactos globales que son recolectados de los servidores. (?)" -#: mod/admin.php:1247 +#: mod/admin.php:1556 msgid "Search the local directory" msgstr "Buscar el directorio local" -#: mod/admin.php:1247 +#: mod/admin.php:1556 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 "Buscar en el directorio local en vez del directorio global. Cuando se busca localmente, cada busqueda sera efectuada en el directorio global en el background. Esto mejora los resultados de la busqueda cuando la misma es repetida." -#: mod/admin.php:1249 +#: mod/admin.php:1558 msgid "Publish server information" msgstr "Publicar información del servidor" -#: mod/admin.php:1249 +#: mod/admin.php:1558 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 " @@ -6123,212 +2129,331 @@ msgid "" " href='http://the-federation.info/'>the-federation.info for details." msgstr "Si habilitado, datos generales del servidor y estadisticas de uso serán publicados. Los datos contienen el nombre y la versión del servidor, numero de usuarios con perfiles públicos, cantidad de temas publicados y los protocolos y conectores activados. Vea the-federation.info por detalles." -#: mod/admin.php:1251 +#: mod/admin.php:1560 msgid "Check upstream version" msgstr "Verifique la versión ascendente" -#: mod/admin.php:1251 +#: mod/admin.php:1560 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 "Permite verificar nuevas versiones de Friendica en Github. Si hay una nueva versión, se le informará en el panel de administración." -#: mod/admin.php:1252 +#: mod/admin.php:1561 msgid "Suppress Tags" msgstr "Suprimir tags" -#: mod/admin.php:1252 +#: mod/admin.php:1561 msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "Suprimir la lista de tags al final de una publicación." -#: mod/admin.php:1253 +#: mod/admin.php:1562 +msgid "Clean database" +msgstr "" + +#: mod/admin.php:1562 +msgid "" +"Remove old remote items, orphaned database records and old content from some" +" other helper tables." +msgstr "" + +#: mod/admin.php:1563 +msgid "Lifespan of remote items" +msgstr "" + +#: mod/admin.php:1563 +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/admin.php:1564 +msgid "Lifespan of unclaimed items" +msgstr "" + +#: mod/admin.php:1564 +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/admin.php:1565 +msgid "Lifespan of raw conversation data" +msgstr "" + +#: mod/admin.php:1565 +msgid "" +"The conversation data is used for ActivityPub and OStatus, as well as for " +"debug purposes. It should be safe to remove it after 14 days, default is 90 " +"days." +msgstr "" + +#: mod/admin.php:1566 msgid "Path to item cache" msgstr "Ruta a la caché del objeto" -#: mod/admin.php:1253 +#: mod/admin.php:1566 msgid "The item caches buffers generated bbcode and external images." msgstr "El buffer de cache de items generado para bbcodes e imágenes externas. " -#: mod/admin.php:1254 +#: mod/admin.php:1567 msgid "Cache duration in seconds" msgstr "Duración de la caché en segundos" -#: mod/admin.php:1254 +#: mod/admin.php:1567 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 "¿Por cuanto tiempo deberían los archives ser almacenados en el cache? Valor por defecto 86400 segundos (un día). Para deshabilita el item cache, ajuste el valor a -1." -#: mod/admin.php:1255 +#: mod/admin.php:1568 msgid "Maximum numbers of comments per post" msgstr "Numero máximo de respuestas por tema" -#: mod/admin.php:1255 +#: mod/admin.php:1568 msgid "How much comments should be shown for each post? Default value is 100." msgstr "¿Cuantos comentarios deberían ser mostrados por tema? Valor por defecto es 100." -#: mod/admin.php:1256 +#: mod/admin.php:1569 msgid "Temp path" msgstr "Ruta a los temporales" -#: mod/admin.php:1256 +#: mod/admin.php:1569 msgid "" "If you have a restricted system where the webserver can't access the system " "temp path, enter another path here." msgstr "Si tiene un sistema restringido en donde el servidor web no puede acceder la dirección del sistema temp, ingrese una dirección alternativa aquí. " -#: mod/admin.php:1257 +#: mod/admin.php:1570 msgid "Base path to installation" msgstr "Ruta base para la instalación" -#: mod/admin.php:1257 +#: mod/admin.php:1570 msgid "" "If the system cannot detect the correct path to your installation, enter the" " correct path here. This setting should only be set if you are using a " "restricted system and symbolic links to your webroot." msgstr "Si el sistema no puede detectar el acceso correcto a la instalación, ingrese la dirección correcta aquí. Esta configuración solo debería utilizarse si si usa un sistema restringido y enlaces simbolicos a su webroot." -#: mod/admin.php:1258 +#: mod/admin.php:1571 msgid "Disable picture proxy" msgstr "Deshabilitar proxy de imagen" -#: mod/admin.php:1258 +#: mod/admin.php:1571 msgid "" "The picture proxy increases performance and privacy. It shouldn't be used on" -" systems with very low bandwith." -msgstr "El proxy de imagen mejora el performance y privacidad. No debería ser usado en sistemas con poco ancho de banda." +" systems with very low bandwidth." +msgstr "" -#: mod/admin.php:1259 +#: mod/admin.php:1572 msgid "Only search in tags" msgstr "Solo buscar en tags" -#: mod/admin.php:1259 +#: mod/admin.php:1572 msgid "On large systems the text search can slow down the system extremely." msgstr "En sistemas grandes, la búsqueda de texto puede enlentecer el sistema gravemente." -#: mod/admin.php:1261 +#: mod/admin.php:1574 msgid "New base url" msgstr "Nueva URLbase" -#: mod/admin.php:1261 +#: mod/admin.php:1574 msgid "" "Change base url for this server. Sends relocate message to all Friendica and" " Diaspora* contacts of all users." msgstr "Cambiar la URL base para este servidor. Envía un mensaje de reubicación a todos los contactos de Friendica y Diaspora* de todos los usuarios." -#: mod/admin.php:1263 +#: mod/admin.php:1576 msgid "RINO Encryption" msgstr "Encryptado RINO" -#: mod/admin.php:1263 +#: mod/admin.php:1576 msgid "Encryption layer between nodes." msgstr "Capa de encryptación entre nodos." -#: mod/admin.php:1265 +#: mod/admin.php:1576 +msgid "Enabled" +msgstr "" + +#: mod/admin.php:1578 msgid "Maximum number of parallel workers" msgstr "Numero máximo de trabajos paralelos de fondo." -#: mod/admin.php:1265 +#: mod/admin.php:1578 +#, php-format msgid "" -"On shared hosters set this to 2. On larger systems, values of 10 are great. " -"Default value is 4." -msgstr "Ajustar a 2 en un servidor compartido (shared hosting).\nEn sistemas grandes valores como 10 son excelentes.\nValor por defecto es 4." +"On shared hosters set this to %d. On larger systems, values of %d are great." +" Default value is %d." +msgstr "" -#: mod/admin.php:1266 +#: mod/admin.php:1579 msgid "Don't use 'proc_open' with the worker" msgstr "No use 'proc_open' junto al \"trabajador\"!" -#: mod/admin.php:1266 +#: mod/admin.php:1579 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 poller calls in your crontab." -msgstr "Habilite esta función si el sistema no permite el uso de 'proc_open'. Esto suelo suceder en servidores compartidos (shared hosting). Si esta función se habilita se debería incrementar la frecuencia de llamadas del poller (poller calls) en la pestaña de trabajos cron. (¡en el hosting?)" +"frequency of worker calls in your crontab." +msgstr "" -#: mod/admin.php:1267 +#: mod/admin.php:1580 msgid "Enable fastlane" msgstr "Habilitar ascenso rápido" -#: mod/admin.php:1267 +#: mod/admin.php:1580 msgid "" "When enabed, the fastlane mechanism starts an additional worker if processes" " with higher priority are blocked by processes of lower priority." msgstr "Cuando está habilitado, el mecanismo ascenso rápido inicia un trabajador adicional si los procesos de mayor prioridad son bloqueados por prcesos de menor prioridad." -#: mod/admin.php:1268 +#: mod/admin.php:1581 msgid "Enable frontend worker" msgstr "Habilitar trabajador de interfaz" -#: mod/admin.php:1268 +#: mod/admin.php:1581 #, php-format msgid "" "When enabled the Worker process is triggered when backend access is " -"performed (e.g. messages being delivered). 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 "Cuando está habilitado, el proceso del Trabajador se activa cuando se realiza el acceso a la parte trasera (ej. mensajes entregados). En sitios más pequeños es posible que desee llamar a %s/worker de forma regular a través de un trabajo cron externo. Solo debe habilitar esta opción si no puede utilizar los trabajos cron/scheduled en su servidor." +"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/admin.php:1298 +#: mod/admin.php:1583 +msgid "Subscribe to relay" +msgstr "" + +#: mod/admin.php:1583 +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." +msgstr "" + +#: mod/admin.php:1584 +msgid "Relay server" +msgstr "" + +#: mod/admin.php:1584 +msgid "" +"Address of the relay server where public posts should be send to. For " +"example https://relay.diasp.org" +msgstr "" + +#: mod/admin.php:1585 +msgid "Direct relay transfer" +msgstr "" + +#: mod/admin.php:1585 +msgid "" +"Enables the direct transfer to other servers without using the relay servers" +msgstr "" + +#: mod/admin.php:1586 +msgid "Relay scope" +msgstr "" + +#: mod/admin.php:1586 +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." +msgstr "" + +#: mod/admin.php:1586 +msgid "all" +msgstr "" + +#: mod/admin.php:1586 +msgid "tags" +msgstr "" + +#: mod/admin.php:1587 +msgid "Server tags" +msgstr "" + +#: mod/admin.php:1587 +msgid "Comma separated list of tags for the 'tags' subscription." +msgstr "" + +#: mod/admin.php:1588 +msgid "Allow user tags" +msgstr "" + +#: mod/admin.php:1588 +msgid "" +"If enabled, the tags from the saved searches will used for the 'tags' " +"subscription in addition to the 'relay_server_tags'." +msgstr "" + +#: mod/admin.php:1591 +msgid "Start Relocation" +msgstr "" + +#: mod/admin.php:1617 msgid "Update has been marked successful" msgstr "La actualización se ha completado con éxito" -#: mod/admin.php:1306 +#: mod/admin.php:1624 #, php-format msgid "Database structure update %s was successfully applied." msgstr "Actualización de base de datos %s fue aplicada con éxito." -#: mod/admin.php:1309 +#: mod/admin.php:1628 #, php-format msgid "Executing of database structure update %s failed with error: %s" msgstr "El paso de actualización de la estructura de la base de datos %s fallo con el mensaje de error: %s" -#: mod/admin.php:1323 +#: mod/admin.php:1644 #, php-format msgid "Executing %s failed with error: %s" msgstr "Paso %s fallo con el error: %s" -#: mod/admin.php:1326 +#: mod/admin.php:1646 #, php-format msgid "Update %s was successfully applied." msgstr "Actualización %s aplicada con éxito." -#: mod/admin.php:1329 +#: mod/admin.php:1649 #, php-format msgid "Update %s did not return a status. Unknown if it succeeded." msgstr "La actualización %s no ha informado, se desconoce el estado." -#: mod/admin.php:1332 +#: mod/admin.php:1652 #, php-format msgid "There was no additional update function %s that needed to be called." msgstr "No había función adicional de actualización %s que necesitaba ser requerida." -#: mod/admin.php:1352 +#: mod/admin.php:1675 msgid "No failed updates." msgstr "Actualizaciones sin fallos." -#: mod/admin.php:1353 +#: mod/admin.php:1676 msgid "Check database structure" msgstr "Revisar estructura de la base de datos" -#: mod/admin.php:1358 +#: mod/admin.php:1681 msgid "Failed Updates" msgstr "Actualizaciones fallidas" -#: mod/admin.php:1359 +#: mod/admin.php:1682 msgid "" "This does not include updates prior to 1139, which did not return a status." msgstr "No se incluyen las anteriores a la 1139, que no indicaban su estado." -#: mod/admin.php:1360 +#: mod/admin.php:1683 msgid "Mark success (if update was manually applied)" msgstr "Marcar como correcta (si actualizaste manualmente)" -#: mod/admin.php:1361 +#: mod/admin.php:1684 msgid "Attempt to execute this update step automatically" msgstr "Intentando ejecutar este paso automáticamente" -#: mod/admin.php:1395 +#: mod/admin.php:1723 #, php-format msgid "" "\n" @@ -6336,7 +2461,7 @@ msgid "" "\t\t\t\tthe administrator of %2$s has set up an account for you." msgstr "\n\t\t\tEstimado %1$s,\n\t\t\t\tel administrador de %2$s ha creado una cuenta para usted." -#: mod/admin.php:1398 +#: mod/admin.php:1726 #, php-format msgid "" "\n" @@ -6363,803 +2488,1930 @@ msgid "" "\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 "\n\t\t\tLos detalles de acceso son las siguientes:\n\n\t\t\tDirección del sitio:\t%1$s\n\t\t\tNombre de la cuenta:\t\t%2$s\n\t\t\tContraseña:\t\t%3$s\n\n\t\t\tPodrá cambiar la contraseña desde la pagina de configuración de su cuenta después de acceder a la misma\n\t\t\ten.\n\n\t\t\tPor favor tome unos minutos para revisar las opciones demás de la cuenta en dicha pagina de configuración.\n\n\t\t\tTambién podrá agregar informaciones adicionales a su pagina de perfil predeterminado. \n\t\t\t(en la pagina \"Perfiles\") para que otras personas pueden encontrarlo fácilmente.\n\n\t\t\tRecomendamos que elija un nombre apropiado, agregando una imagen de perfil,\n\t\t\tagregando algunas palabras claves de la cuenta (muy útil para hacer nuevos amigos) - y \n\t\t\tquizás el país en donde vive; si no quiere ser mas especifico\n\t\t\tque eso.\n\n\t\t\tRespetamos absolutamente su derecho a la privacidad y ninguno de estos detalles es necesario.\n\t\t\tSi eres nuevo aquí y no conoces a nadie, estos detalles pueden ayudarte\n\t\t\tpara hacer nuevas e interesantes amistades.\n\n\t\t\tGracias y bienvenido a %4$s." +msgstr "" -#: mod/admin.php:1442 +#: mod/admin.php:1763 src/Model/User.php:802 +#, php-format +msgid "Registration details for %s" +msgstr "Detalles de registro para %s" + +#: mod/admin.php:1773 #, php-format msgid "%s user blocked/unblocked" msgid_plural "%s users blocked/unblocked" msgstr[0] "%s usuario bloqueado/desbloqueado" msgstr[1] "%s usuarios bloqueados/desbloqueados" -#: mod/admin.php:1449 +#: mod/admin.php:1780 mod/admin.php:1833 +msgid "You can't remove yourself" +msgstr "" + +#: mod/admin.php:1783 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "%s usuario eliminado" msgstr[1] "%s usuarios eliminados" -#: mod/admin.php:1496 +#: mod/admin.php:1831 #, php-format msgid "User '%s' deleted" msgstr "Usuario '%s' eliminado" -#: mod/admin.php:1504 +#: mod/admin.php:1842 #, php-format msgid "User '%s' unblocked" msgstr "Usuario '%s' desbloqueado" -#: mod/admin.php:1504 +#: mod/admin.php:1842 #, php-format msgid "User '%s' blocked" msgstr "Usuario '%s' bloqueado'" -#: mod/admin.php:1612 mod/admin.php:1638 +#: mod/admin.php:1890 mod/settings.php:1052 +msgid "Normal Account Page" +msgstr "Página de cuenta normal" + +#: mod/admin.php:1891 mod/settings.php:1056 +msgid "Soapbox Page" +msgstr "Página de tribuna" + +#: mod/admin.php:1892 mod/settings.php:1060 +msgid "Public Forum" +msgstr "Foro público" + +#: mod/admin.php:1893 mod/settings.php:1064 +msgid "Automatic Friend Page" +msgstr "Página de Amistad autómatica" + +#: mod/admin.php:1894 +msgid "Private Forum" +msgstr "" + +#: mod/admin.php:1897 mod/settings.php:1036 +msgid "Personal Page" +msgstr "Página personal" + +#: mod/admin.php:1898 mod/settings.php:1040 +msgid "Organisation Page" +msgstr "Página de organización" + +#: mod/admin.php:1899 mod/settings.php:1044 +msgid "News Page" +msgstr "Página de noticias" + +#: mod/admin.php:1900 mod/settings.php:1048 +msgid "Community Forum" +msgstr "Foro de la comunidad" + +#: mod/admin.php:1946 mod/admin.php:1957 mod/admin.php:1971 mod/admin.php:1989 +#: src/Content/ContactSelector.php:84 +msgid "Email" +msgstr "Correo electrónico" + +#: mod/admin.php:1946 mod/admin.php:1971 msgid "Register date" msgstr "Fecha de registro" -#: mod/admin.php:1612 mod/admin.php:1638 +#: mod/admin.php:1946 mod/admin.php:1971 msgid "Last login" msgstr "Último acceso" -#: mod/admin.php:1612 mod/admin.php:1638 +#: mod/admin.php:1946 mod/admin.php:1971 msgid "Last item" msgstr "Último elemento" -#: mod/admin.php:1612 mod/settings.php:43 -msgid "Account" -msgstr "Cuenta" +#: mod/admin.php:1946 +msgid "Type" +msgstr "" -#: mod/admin.php:1621 +#: mod/admin.php:1953 msgid "Add User" msgstr "Agregar usuario" -#: mod/admin.php:1622 -msgid "select all" -msgstr "seleccionar todo" - -#: mod/admin.php:1623 +#: mod/admin.php:1955 msgid "User registrations waiting for confirm" msgstr "Registro de usuarios esperando confirmación" -#: mod/admin.php:1624 +#: mod/admin.php:1956 msgid "User waiting for permanent deletion" msgstr "Usuario esperando anulación permanente." -#: mod/admin.php:1625 +#: mod/admin.php:1957 msgid "Request date" msgstr "Solicitud de fecha" -#: mod/admin.php:1626 +#: mod/admin.php:1958 msgid "No registrations." msgstr "Sin registros." -#: mod/admin.php:1627 +#: mod/admin.php:1959 msgid "Note from the user" msgstr "Nota para el usuario" -#: mod/admin.php:1629 +#: mod/admin.php:1960 mod/notifications.php:181 mod/notifications.php:267 +msgid "Approve" +msgstr "Aprobar" + +#: mod/admin.php:1961 msgid "Deny" msgstr "Denegado" -#: mod/admin.php:1631 mod/contacts.php:635 mod/contacts.php:835 -#: mod/contacts.php:1013 -msgid "Block" -msgstr "Bloquear" +#: mod/admin.php:1964 +msgid "User blocked" +msgstr "" -#: mod/admin.php:1632 mod/contacts.php:635 mod/contacts.php:835 -#: mod/contacts.php:1013 -msgid "Unblock" -msgstr "Desbloquear" - -#: mod/admin.php:1633 +#: mod/admin.php:1966 msgid "Site admin" msgstr "Administrador de la web" -#: mod/admin.php:1634 +#: mod/admin.php:1967 msgid "Account expired" msgstr "Cuenta caducada" -#: mod/admin.php:1637 +#: mod/admin.php:1970 msgid "New User" msgstr "Nuevo usuario" -#: mod/admin.php:1638 -msgid "Deleted since" -msgstr "Borrado desde" +#: mod/admin.php:1971 +msgid "Permanent deletion" +msgstr "" -#: mod/admin.php:1643 +#: mod/admin.php:1976 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "¡Los usuarios seleccionados serán eliminados!\\n\\n¡Todo lo que hayan publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?" -#: mod/admin.php:1644 +#: mod/admin.php:1977 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 "¡El usuario {0} será eliminado!\\n\\n¡Todo lo que haya publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?" -#: mod/admin.php:1654 +#: mod/admin.php:1987 msgid "Name of the new user." msgstr "Nombre del nuevo usuario" -#: mod/admin.php:1655 +#: mod/admin.php:1988 msgid "Nickname" msgstr "Apodo" -#: mod/admin.php:1655 +#: mod/admin.php:1988 msgid "Nickname of the new user." msgstr "Apodo del nuevo perfil." -#: mod/admin.php:1656 +#: mod/admin.php:1989 msgid "Email address of the new user." msgstr "Dirección de correo del nuevo perfil." -#: mod/admin.php:1699 +#: mod/admin.php:2030 #, php-format -msgid "Plugin %s disabled." -msgstr "Módulo %s deshabilitado." +msgid "Addon %s disabled." +msgstr "" -#: mod/admin.php:1703 +#: mod/admin.php:2033 #, php-format -msgid "Plugin %s enabled." -msgstr "Módulo %s habilitado." +msgid "Addon %s enabled." +msgstr "" -#: mod/admin.php:1714 mod/admin.php:1966 +#: mod/admin.php:2044 mod/admin.php:2293 msgid "Disable" msgstr "Desactivado" -#: mod/admin.php:1716 mod/admin.php:1968 +#: mod/admin.php:2047 mod/admin.php:2296 msgid "Enable" msgstr "Activado" -#: mod/admin.php:1739 mod/admin.php:2015 +#: mod/admin.php:2069 mod/admin.php:2333 msgid "Toggle" msgstr "Activar" -#: mod/admin.php:1747 mod/admin.php:2024 +#: mod/admin.php:2070 mod/admin.php:2334 mod/newmember.php:20 +#: mod/settings.php:136 src/Content/Nav.php:257 view/theme/frio/theme.php:283 +msgid "Settings" +msgstr "Configuración" + +#: mod/admin.php:2077 mod/admin.php:2342 msgid "Author: " msgstr "Autor:" -#: mod/admin.php:1748 mod/admin.php:2025 +#: mod/admin.php:2078 mod/admin.php:2343 msgid "Maintainer: " msgstr "Mantenedor: " -#: mod/admin.php:1803 -msgid "Reload active plugins" -msgstr "Recargar plugins activos" +#: mod/admin.php:2130 +msgid "Reload active addons" +msgstr "" -#: mod/admin.php:1808 +#: mod/admin.php:2135 #, php-format msgid "" -"There are currently no plugins available on your node. You can find the " -"official plugin repository at %1$s and might find other interesting plugins " -"in the open plugin registry at %2$s" -msgstr "No ay plugins habilitados en este nodo. Encontrara los repositorios oficiales de plugins en %1$s y posiblemente encontrara mas plugins interesantes en el registro abierto de plugins aquí %2$s ." +"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/admin.php:1927 +#: mod/admin.php:2255 msgid "No themes found." msgstr "No se encontraron temas." -#: mod/admin.php:2006 +#: mod/admin.php:2324 msgid "Screenshot" msgstr "Captura de pantalla" -#: mod/admin.php:2066 +#: mod/admin.php:2378 msgid "Reload active themes" msgstr "Recargar interfaces de usuario activos" -#: mod/admin.php:2071 +#: mod/admin.php:2383 #, php-format -msgid "No themes found on the system. They should be paced in %1$s" -msgstr "No se encuentran interfaces en el sistema. Deberían estar localizados (paced) en %1$s" +msgid "No themes found on the system. They should be placed in %1$s" +msgstr "" -#: mod/admin.php:2072 +#: mod/admin.php:2384 msgid "[Experimental]" msgstr "[Experimental]" -#: mod/admin.php:2073 +#: mod/admin.php:2385 msgid "[Unsupported]" msgstr "[Sin soporte]" -#: mod/admin.php:2097 +#: mod/admin.php:2409 msgid "Log settings updated." msgstr "Configuración de registro actualizada." -#: mod/admin.php:2129 +#: mod/admin.php:2442 msgid "PHP log currently enabled." msgstr "Registro PHP actualmente disponible." -#: mod/admin.php:2131 +#: mod/admin.php:2444 msgid "PHP log currently disabled." msgstr "Registro PHP actualmente deshabilitado." -#: mod/admin.php:2140 +#: mod/admin.php:2453 msgid "Clear" msgstr "Limpiar" -#: mod/admin.php:2145 +#: mod/admin.php:2457 msgid "Enable Debugging" msgstr "Habilitar debugging" -#: mod/admin.php:2146 +#: mod/admin.php:2458 msgid "Log file" msgstr "Archivo de registro" -#: mod/admin.php:2146 +#: mod/admin.php:2458 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "Debes tener permiso de escritura en el servidor. Relacionado con tu directorio de inicio de Friendica." -#: mod/admin.php:2147 +#: mod/admin.php:2459 msgid "Log level" msgstr "Nivel de registro" -#: mod/admin.php:2150 +#: mod/admin.php:2461 msgid "PHP logging" msgstr "PHP logging" -#: mod/admin.php:2151 +#: mod/admin.php:2462 msgid "" -"To enable logging of PHP errors and warnings you can add the following to " -"the .htconfig.php file of your installation. The filename set in the " -"'error_log' line is relative to the friendica top-level directory and must " -"be writeable by the web server. The option '1' for 'log_errors' and " +"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 "Para habilitar la documentación de los errores PHP y las advertencias se puede agregar lo siguiente al archivo .htconfig.php de la instalación (ftp). La dirección definido en el 'error_log' es relativo al directorio friendica principal (top-level directory) y debe de ser habilitado para la escritura por el servidor web. La opción '1' para 'log_errors' y 'display_errors' es para habilitar estas opciones, '0' para deshabilitarlo." +msgstr "" -#: mod/admin.php:2281 mod/admin.php:2282 mod/settings.php:792 +#: mod/admin.php:2493 +#, php-format +msgid "" +"Error trying to open %1$s log file.\\r\\n
Check to see " +"if file %1$s exist and is readable." +msgstr "" + +#: mod/admin.php:2497 +#, php-format +msgid "" +"Couldn't open %1$s log file.\\r\\n
Check to see if file" +" %1$s is readable." +msgstr "" + +#: mod/admin.php:2588 mod/admin.php:2589 mod/settings.php:766 msgid "Off" msgstr "Apagado" -#: mod/admin.php:2281 mod/admin.php:2282 mod/settings.php:792 +#: mod/admin.php:2588 mod/admin.php:2589 mod/settings.php:766 msgid "On" msgstr "Encendido" -#: mod/admin.php:2282 +#: mod/admin.php:2589 #, php-format msgid "Lock feature %s" msgstr "Trancar opción %s " -#: mod/admin.php:2290 +#: mod/admin.php:2597 msgid "Manage Additional Features" msgstr "Administrar opciones adicionales" -#: mod/contacts.php:139 -#, php-format -msgid "%d contact edited." -msgid_plural "%d contacts edited." -msgstr[0] "%d contacto editado." -msgstr[1] "%d contacts edited." +#: mod/allfriends.php:52 +msgid "No friends to display." +msgstr "No hay amigos para mostrar." -#: mod/contacts.php:174 mod/contacts.php:392 -msgid "Could not access contact record." -msgstr "No se pudo acceder a los datos del contacto." +#: mod/allfriends.php:91 mod/dirfind.php:219 mod/match.php:99 +#: mod/suggest.php:105 src/Content/Widget.php:38 src/Model/Profile.php:307 +msgid "Connect" +msgstr "Conectar" -#: mod/contacts.php:188 -msgid "Could not locate selected profile." -msgstr "No se pudo encontrar el perfil seleccionado." +#: mod/api.php:87 mod/api.php:109 +msgid "Authorize application connection" +msgstr "Autorizar la conexión de la aplicación" -#: mod/contacts.php:221 -msgid "Contact updated." -msgstr "Contacto actualizado." +#: mod/api.php:88 +msgid "Return to your app and insert this Securty Code:" +msgstr "Regresa a tu aplicación e introduce este código de seguridad:" -#: mod/contacts.php:413 -msgid "Contact has been blocked" -msgstr "El contacto ha sido bloqueado" +#: mod/api.php:97 +msgid "Please login to continue." +msgstr "Inicia sesión para continuar." -#: mod/contacts.php:413 -msgid "Contact has been unblocked" -msgstr "El contacto ha sido desbloqueado" - -#: mod/contacts.php:424 -msgid "Contact has been ignored" -msgstr "El contacto ha sido ignorado" - -#: mod/contacts.php:424 -msgid "Contact has been unignored" -msgstr "El contacto ya no está ignorado" - -#: mod/contacts.php:436 -msgid "Contact has been archived" -msgstr "El contacto ha sido archivado" - -#: mod/contacts.php:436 -msgid "Contact has been unarchived" -msgstr "El contacto ya no está archivado" - -#: mod/contacts.php:461 -msgid "Drop contact" -msgstr "Eliminar contacto" - -#: mod/contacts.php:464 mod/contacts.php:831 -msgid "Do you really want to delete this contact?" -msgstr "¿Estás seguro de que quieres eliminar este contacto?" - -#: mod/contacts.php:483 -msgid "Contact has been removed." -msgstr "El contacto ha sido eliminado" - -#: mod/contacts.php:520 -#, php-format -msgid "You are mutual friends with %s" -msgstr "Ahora tienes una amistad mutua con %s" - -#: mod/contacts.php:524 -#, php-format -msgid "You are sharing with %s" -msgstr "Estás compartiendo con %s" - -#: mod/contacts.php:529 -#, php-format -msgid "%s is sharing with you" -msgstr "%s está compartiendo contigo" - -#: mod/contacts.php:549 -msgid "Private communications are not available for this contact." -msgstr "Las comunicaciones privadas no está disponibles para este contacto." - -#: mod/contacts.php:556 -msgid "(Update was successful)" -msgstr "(La actualización se ha completado)" - -#: mod/contacts.php:556 -msgid "(Update was not successful)" -msgstr "(La actualización no se ha completado)" - -#: mod/contacts.php:558 mod/contacts.php:994 -msgid "Suggest friends" -msgstr "Sugerir amigos" - -#: mod/contacts.php:562 -#, php-format -msgid "Network type: %s" -msgstr "Tipo de red: %s" - -#: mod/contacts.php:575 -msgid "Communications lost with this contact!" -msgstr "¡Se ha perdido la comunicación con este contacto!" - -#: mod/contacts.php:578 -msgid "Fetch further information for feeds" -msgstr "Recaudar informacion complementaria de los feeds" - -#: mod/contacts.php:579 -msgid "Fetch information" -msgstr "Recaudar informacion" - -#: mod/contacts.php:579 -msgid "Fetch information and keywords" -msgstr "Recaudar informacion y palabras claves" - -#: mod/contacts.php:603 -msgid "Contact" -msgstr "Contacto" - -#: mod/contacts.php:606 -msgid "Profile Visibility" -msgstr "Visibilidad del Perfil" - -#: mod/contacts.php:607 -#, php-format +#: mod/api.php:111 msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Por favor, selecciona el perfil que quieras mostrar a %s cuando esté viendo tu perfil de forma segura." +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "¿Quieres autorizar a esta aplicación el acceso a tus mensajes y contactos, y/o crear nuevas publicaciones para ti?" -#: mod/contacts.php:608 -msgid "Contact Information / Notes" -msgstr "Información del Contacto / Notas" +#: mod/api.php:113 mod/dfrn_request.php:644 mod/follow.php:151 +#: mod/profiles.php:542 mod/profiles.php:546 mod/profiles.php:567 +#: mod/register.php:233 mod/settings.php:1088 mod/settings.php:1094 +#: mod/settings.php:1101 mod/settings.php:1105 mod/settings.php:1109 +#: mod/settings.php:1113 mod/settings.php:1117 mod/settings.php:1121 +#: mod/settings.php:1141 mod/settings.php:1142 mod/settings.php:1143 +#: mod/settings.php:1144 mod/settings.php:1145 +msgid "No" +msgstr "No" -#: mod/contacts.php:609 -msgid "Their personal note" -msgstr "Su nota personal" +#: mod/apps.php:15 src/App.php:1657 +msgid "You must be logged in to use addons. " +msgstr "Tienes que estar registrado para tener acceso a los accesorios." -#: mod/contacts.php:611 -msgid "Edit contact notes" -msgstr "Editar notas del contacto" +#: mod/apps.php:20 +msgid "Applications" +msgstr "Aplicaciones" -#: mod/contacts.php:617 -msgid "Block/Unblock contact" -msgstr "Boquear/Desbloquear contacto" +#: mod/apps.php:25 +msgid "No installed applications." +msgstr "Sin aplicaciones" -#: mod/contacts.php:618 -msgid "Ignore contact" -msgstr "Ignorar contacto" +#: mod/attach.php:14 +msgid "Item not available." +msgstr "Elemento no disponible." -#: mod/contacts.php:619 -msgid "Repair URL settings" -msgstr "Configuración de reparación de la dirección" +#: mod/attach.php:24 +msgid "Item was not found." +msgstr "Elemento no encontrado." -#: mod/contacts.php:620 -msgid "View conversations" -msgstr "Ver conversaciones" +#: mod/babel.php:25 +msgid "Source input" +msgstr "" -#: mod/contacts.php:626 -msgid "Last update:" -msgstr "Última actualización:" +#: mod/babel.php:31 +msgid "BBCode::toPlaintext" +msgstr "" -#: mod/contacts.php:628 -msgid "Update public posts" -msgstr "Actualizar publicaciones públicas" +#: mod/babel.php:37 +msgid "BBCode::convert (raw HTML)" +msgstr "" -#: mod/contacts.php:630 mod/contacts.php:1004 -msgid "Update now" -msgstr "Actualizar ahora" +#: mod/babel.php:42 +msgid "BBCode::convert" +msgstr "" -#: mod/contacts.php:636 mod/contacts.php:836 mod/contacts.php:1021 -msgid "Unignore" -msgstr "Quitar de Ignorados" +#: mod/babel.php:48 +msgid "BBCode::convert => HTML::toBBCode" +msgstr "" -#: mod/contacts.php:640 -msgid "Currently blocked" -msgstr "Bloqueados" +#: mod/babel.php:54 +msgid "BBCode::toMarkdown" +msgstr "" -#: mod/contacts.php:641 -msgid "Currently ignored" -msgstr "Ignorados" +#: mod/babel.php:60 +msgid "BBCode::toMarkdown => Markdown::convert" +msgstr "" -#: mod/contacts.php:642 -msgid "Currently archived" -msgstr "Archivados" +#: mod/babel.php:66 +msgid "BBCode::toMarkdown => Markdown::toBBCode" +msgstr "" -#: mod/contacts.php:643 +#: mod/babel.php:72 +msgid "BBCode::toMarkdown => Markdown::convert => HTML::toBBCode" +msgstr "" + +#: mod/babel.php:79 +msgid "Source input (Diaspora format)" +msgstr "" + +#: mod/babel.php:85 +msgid "Markdown::convert (raw HTML)" +msgstr "" + +#: mod/babel.php:90 +msgid "Markdown::convert" +msgstr "" + +#: mod/babel.php:96 +msgid "Markdown::toBBCode" +msgstr "" + +#: mod/babel.php:103 +msgid "Raw HTML input" +msgstr "" + +#: mod/babel.php:108 +msgid "HTML Input" +msgstr "" + +#: mod/babel.php:114 +msgid "HTML::toBBCode" +msgstr "" + +#: mod/babel.php:120 +msgid "HTML::toBBCode => BBCode::convert" +msgstr "" + +#: mod/babel.php:125 +msgid "HTML::toBBCode => BBCode::convert (raw HTML)" +msgstr "" + +#: mod/babel.php:131 +msgid "HTML::toMarkdown" +msgstr "" + +#: mod/babel.php:137 +msgid "HTML::toPlaintext" +msgstr "" + +#: mod/babel.php:145 +msgid "Source text" +msgstr "" + +#: mod/babel.php:146 +msgid "BBCode" +msgstr "" + +#: mod/babel.php:147 +msgid "Markdown" +msgstr "" + +#: mod/babel.php:148 +msgid "HTML" +msgstr "" + +#: mod/bookmarklet.php:22 src/Content/Nav.php:164 src/Module/Login.php:319 +msgid "Login" +msgstr "Acceder" + +#: mod/bookmarklet.php:32 +msgid "Bad Request" +msgstr "" + +#: mod/bookmarklet.php:54 +msgid "The post was created" +msgstr "La publicación fue creada" + +#: mod/cal.php:35 mod/cal.php:39 mod/community.php:38 mod/follow.php:21 +#: mod/viewcontacts.php:23 mod/viewcontacts.php:27 mod/viewsrc.php:13 +msgid "Access denied." +msgstr "Acceso denegado." + +#: mod/cal.php:47 mod/dfrn_poll.php:490 mod/help.php:67 +#: mod/viewcontacts.php:34 src/App.php:1708 +msgid "Page not found." +msgstr "Página no encontrada." + +#: mod/cal.php:142 mod/display.php:313 mod/profile.php:156 +msgid "Access to this profile has been restricted." +msgstr "El acceso a este perfil ha sido restringido." + +#: mod/cal.php:274 mod/events.php:399 src/Content/Nav.php:154 +#: src/Content/Nav.php:220 src/Model/Profile.php:938 src/Model/Profile.php:949 +#: view/theme/frio/theme.php:277 view/theme/frio/theme.php:281 +msgid "Events" +msgstr "Eventos" + +#: mod/cal.php:275 mod/events.php:400 +msgid "View" +msgstr "Vista" + +#: mod/cal.php:276 mod/events.php:402 +msgid "Previous" +msgstr "Previo" + +#: mod/cal.php:277 mod/events.php:403 src/Module/Install.php:135 +msgid "Next" +msgstr "Siguiente" + +#: mod/cal.php:280 mod/events.php:408 src/Model/Event.php:426 +msgid "today" +msgstr "hoy" + +#: mod/cal.php:281 mod/events.php:409 src/Model/Event.php:427 +#: src/Util/Temporal.php:309 +msgid "month" +msgstr "mes" + +#: mod/cal.php:282 mod/events.php:410 src/Model/Event.php:428 +#: src/Util/Temporal.php:310 +msgid "week" +msgstr "semana" + +#: mod/cal.php:283 mod/events.php:411 src/Model/Event.php:429 +#: src/Util/Temporal.php:311 +msgid "day" +msgstr "día" + +#: mod/cal.php:284 mod/events.php:412 +msgid "list" +msgstr "lista" + +#: mod/cal.php:297 src/Core/Console/NewPassword.php:67 src/Model/User.php:269 +msgid "User not found" +msgstr "Usuario no encontrado" + +#: mod/cal.php:313 +msgid "This calendar format is not supported" +msgstr "Este formato de calendario no se soporta" + +#: mod/cal.php:315 +msgid "No exportable data found" +msgstr "No se ha encontrado información exportable" + +#: mod/cal.php:332 +msgid "calendar" +msgstr "calendario" + +#: mod/common.php:90 +msgid "No contacts in common." +msgstr "Sin contactos en común." + +#: mod/common.php:141 src/Module/Contact.php:893 +msgid "Common Friends" +msgstr "Amigos comunes" + +#: mod/community.php:31 mod/dfrn_request.php:598 mod/directory.php:43 +#: mod/display.php:213 mod/photos.php:943 mod/probe.php:13 mod/search.php:97 +#: mod/search.php:103 mod/videos.php:192 mod/viewcontacts.php:46 +#: mod/webfinger.php:16 +msgid "Public access denied." +msgstr "Acceso público denegado." + +#: mod/community.php:74 +msgid "Community option not available." +msgstr "" + +#: mod/community.php:91 +msgid "Not available." +msgstr "No disponible" + +#: mod/community.php:101 +msgid "Local Community" +msgstr "" + +#: mod/community.php:104 +msgid "Posts from local users on this server" +msgstr "" + +#: mod/community.php:112 +msgid "Global Community" +msgstr "" + +#: mod/community.php:115 +msgid "Posts from users of the whole federated network" +msgstr "" + +#: mod/community.php:161 mod/search.php:230 +msgid "No results." +msgstr "Sin resultados." + +#: mod/community.php:205 msgid "" -"Replies/likes to your public posts may still be visible" -msgstr "Los comentarios o \"me gusta\" en tus publicaciones públicas todavía pueden ser visibles." +"This community stream shows all public posts received by this node. They may" +" not reflect the opinions of this node’s users." +msgstr "" -#: mod/contacts.php:644 -msgid "Notification for new posts" -msgstr "Notificacion de nuevos temas." +#: mod/credits.php:19 +msgid "Credits" +msgstr "Creditos" -#: mod/contacts.php:644 -msgid "Send a notification of every new post of this contact" -msgstr "Enviar una notificacion por nuevos temas de este contacto." - -#: mod/contacts.php:647 -msgid "Blacklisted keywords" -msgstr "Lista negra de palabras" - -#: mod/contacts.php:647 +#: mod/credits.php:20 msgid "" -"Comma separated list of keywords that should not be converted to hashtags, " -"when \"Fetch information and keywords\" is selected" -msgstr "Lista separada por comas de palabras claves que no deberian ser convertido en #hashtags cuando \"Recaudar informacion y palabras claves\" es seleccionado" +"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 "Friendica es un proyecto comunitario, que no seria posible sin la ayuda de mucha gente. Aquí una lista de de aquellos que aportaron al código o la traducción de friendica.\nGracias a todos! " -#: mod/contacts.php:665 -msgid "Actions" -msgstr "Acciones" +#: mod/crepair.php:90 +msgid "Contact settings applied." +msgstr "Contacto configurado con éxito." -#: mod/contacts.php:668 -msgid "Contact Settings" -msgstr "Ajustes del contacto" +#: mod/crepair.php:92 +msgid "Contact update failed." +msgstr "Error al actualizar el Contacto." -#: mod/contacts.php:714 -msgid "Suggestions" -msgstr "Sugerencias" +#: mod/crepair.php:113 mod/dfrn_confirm.php:127 mod/fsuggest.php:31 +#: mod/fsuggest.php:97 mod/redir.php:32 mod/redir.php:138 +msgid "Contact not found." +msgstr "Contacto no encontrado." -#: mod/contacts.php:717 -msgid "Suggest potential friends" -msgstr "Amistades potenciales sugeridas" +#: mod/crepair.php:117 +msgid "" +"WARNING: This is highly advanced and if you enter incorrect" +" information your communications with this contact may stop working." +msgstr "ADVERTENCIA: Esto es muy avanzado y si se introduce información incorrecta tu conexión con este contacto puede dejar de funcionar." -#: mod/contacts.php:725 -msgid "Show all contacts" -msgstr "Mostrar todos los contactos" +#: mod/crepair.php:118 +msgid "" +"Please use your browser 'Back' button now if you are " +"uncertain what to do on this page." +msgstr "Por favor usa el botón 'Atás' de tu navegador ahora si no tienes claro qué hacer en esta página." -#: mod/contacts.php:730 -msgid "Unblocked" -msgstr "Desbloqueados" +#: mod/crepair.php:132 mod/crepair.php:134 +msgid "No mirroring" +msgstr "No espejar" -#: mod/contacts.php:733 -msgid "Only show unblocked contacts" -msgstr "Mostrar solo contactos sin bloquear" +#: mod/crepair.php:132 +msgid "Mirror as forwarded posting" +msgstr "Espejar como reenvio" -#: mod/contacts.php:739 -msgid "Blocked" -msgstr "Bloqueados" +#: mod/crepair.php:132 mod/crepair.php:134 +msgid "Mirror as my own posting" +msgstr "Espejar como publicación propia" -#: mod/contacts.php:742 -msgid "Only show blocked contacts" -msgstr "Mostrar solo contactos bloqueados" +#: mod/crepair.php:147 +msgid "Return to contact editor" +msgstr "Volver al editor de contactos" -#: mod/contacts.php:748 -msgid "Ignored" -msgstr "Ignorados" +#: mod/crepair.php:149 +msgid "Refetch contact data" +msgstr "Volver a solicitar datos del contacto." -#: mod/contacts.php:751 -msgid "Only show ignored contacts" -msgstr "Mostrar solo contactos ignorados" +#: mod/crepair.php:151 mod/events.php:568 mod/fsuggest.php:115 +#: mod/invite.php:154 mod/localtime.php:56 mod/manage.php:183 +#: mod/message.php:263 mod/message.php:443 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:192 +#: mod/profiles.php:578 src/Module/Contact.php:596 src/Module/Install.php:189 +#: src/Module/Install.php:224 src/Object/Post.php:808 +#: view/theme/duepuntozero/config.php:72 view/theme/frio/config.php:119 +#: view/theme/quattro/config.php:74 view/theme/vier/config.php:120 +msgid "Submit" +msgstr "Envíar" -#: mod/contacts.php:757 -msgid "Archived" -msgstr "Archivados" +#: mod/crepair.php:152 +msgid "Remote Self" +msgstr "Perfil remoto" -#: mod/contacts.php:760 -msgid "Only show archived contacts" -msgstr "Mostrar solo contactos archivados" +#: mod/crepair.php:155 +msgid "Mirror postings from this contact" +msgstr "Espejar publicaciones de este contacto" -#: mod/contacts.php:766 -msgid "Hidden" -msgstr "Ocultos" +#: mod/crepair.php:157 +msgid "" +"Mark this contact as remote_self, this will cause friendica to repost new " +"entries from this contact." +msgstr "Marcar este contacto como perfil_remoto, esto generara que friendica reenvía nuevas publicaciones desde esta cuenta." -#: mod/contacts.php:769 -msgid "Only show hidden contacts" -msgstr "Mostrar solo contactos ocultos" +#: mod/crepair.php:162 +msgid "Account Nickname" +msgstr "Apodo de la cuenta" -#: mod/contacts.php:826 -msgid "Search your contacts" -msgstr "Buscar en tus contactos" +#: mod/crepair.php:163 +msgid "@Tagname - overrides Name/Nickname" +msgstr "@Etiqueta - Sobrescribe el Nombre/Apodo" -#: mod/contacts.php:834 mod/settings.php:160 mod/settings.php:717 -msgid "Update" -msgstr "Actualizar" +#: mod/crepair.php:164 +msgid "Account URL" +msgstr "Dirección de la cuenta" -#: mod/contacts.php:837 mod/contacts.php:1029 -msgid "Archive" -msgstr "Archivo" +#: mod/crepair.php:165 +msgid "Friend Request URL" +msgstr "Dirección de la solicitud de amistad" -#: mod/contacts.php:837 mod/contacts.php:1029 -msgid "Unarchive" -msgstr "Sin archivar" +#: mod/crepair.php:166 +msgid "Friend Confirm URL" +msgstr "Dirección de confirmación de tu amigo " -#: mod/contacts.php:840 -msgid "Batch Actions" -msgstr "Accones en lote" +#: mod/crepair.php:167 +msgid "Notification Endpoint URL" +msgstr "Dirección URL de la notificación" -#: mod/contacts.php:886 -msgid "View all contacts" -msgstr "Ver todos los contactos" +#: mod/crepair.php:168 +msgid "Poll/Feed URL" +msgstr "Dirección del Sondeo/Fuentes" -#: mod/contacts.php:896 -msgid "View all common friends" -msgstr "Ver todos los conocidos en común " +#: mod/crepair.php:169 +msgid "New photo from this URL" +msgstr "Nueva foto de esta dirección" -#: mod/contacts.php:903 -msgid "Advanced Contact Settings" -msgstr "Configuración avanzada" +#: mod/delegate.php:43 +msgid "Parent user not found." +msgstr "" -#: mod/contacts.php:937 -msgid "Mutual Friendship" -msgstr "Amistad recíproca" +#: mod/delegate.php:150 +msgid "No parent user" +msgstr "" -#: mod/contacts.php:941 -msgid "is a fan of yours" -msgstr "es tu fan" +#: mod/delegate.php:165 +msgid "Parent Password:" +msgstr "" -#: mod/contacts.php:945 -msgid "you are a fan of" -msgstr "eres fan de" +#: mod/delegate.php:165 +msgid "" +"Please enter the password of the parent account to legitimize your request." +msgstr "" -#: mod/contacts.php:1015 -msgid "Toggle Blocked status" -msgstr "Cambiar bloqueados" +#: mod/delegate.php:172 +msgid "Parent User" +msgstr "" -#: mod/contacts.php:1023 -msgid "Toggle Ignored status" -msgstr "Cambiar ignorados" +#: mod/delegate.php:175 +msgid "" +"Parent users have total control about this account, including the account " +"settings. Please double check whom you give this access." +msgstr "" -#: mod/contacts.php:1031 -msgid "Toggle Archive status" -msgstr "Cambiar archivados" +#: mod/delegate.php:177 src/Content/Nav.php:255 +msgid "Delegate Page Management" +msgstr "Delegar la administración de la página" -#: mod/contacts.php:1039 -msgid "Delete contact" -msgstr "Eliminar contacto" +#: mod/delegate.php:178 +msgid "Delegates" +msgstr "" -#: mod/dfrn_confirm.php:74 mod/profiles.php:25 mod/profiles.php:135 -#: mod/profiles.php:182 mod/profiles.php:618 +#: mod/delegate.php:180 +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 "Los delegados tienen la capacidad de gestionar todos los aspectos de esta cuenta/página, excepto los ajustes básicos de la cuenta. Por favor, no delegues tu cuenta personal a nadie en quien no confíes completamente." + +#: mod/delegate.php:181 +msgid "Existing Page Delegates" +msgstr "Delegados actuales de la página" + +#: mod/delegate.php:183 +msgid "Potential Delegates" +msgstr "Delegados potenciales" + +#: mod/delegate.php:185 mod/tagrm.php:112 +msgid "Remove" +msgstr "Eliminar" + +#: mod/delegate.php:186 +msgid "Add" +msgstr "Añadir" + +#: mod/delegate.php:187 +msgid "No entries." +msgstr "Sin entradas." + +#: mod/dfrn_confirm.php:72 mod/profiles.php:42 mod/profiles.php:152 +#: mod/profiles.php:197 mod/profiles.php:527 msgid "Profile not found." msgstr "Perfil no encontrado." -#: mod/dfrn_confirm.php:131 +#: mod/dfrn_confirm.php:128 msgid "" "This may occasionally happen if contact was requested by both persons and it" " has already been approved." msgstr "Esto puede ocurrir a veces si la conexión fue solicitada por ambas personas y ya hubiera sido aprobada." -#: mod/dfrn_confirm.php:248 +#: mod/dfrn_confirm.php:238 msgid "Response from remote site was not understood." msgstr "La respuesta desde el sitio remoto no ha sido entendida." -#: mod/dfrn_confirm.php:257 mod/dfrn_confirm.php:262 +#: mod/dfrn_confirm.php:245 mod/dfrn_confirm.php:251 msgid "Unexpected response from remote site: " msgstr "Respuesta inesperada desde el sitio remoto: " -#: mod/dfrn_confirm.php:271 +#: mod/dfrn_confirm.php:260 msgid "Confirmation completed successfully." msgstr "Confirmación completada con éxito." -#: mod/dfrn_confirm.php:273 mod/dfrn_confirm.php:287 mod/dfrn_confirm.php:294 -msgid "Remote site reported: " -msgstr "El sito remoto informó: " - -#: mod/dfrn_confirm.php:285 +#: mod/dfrn_confirm.php:272 msgid "Temporary failure. Please wait and try again." msgstr "Error temporal. Por favor, espere y vuelva a intentarlo." -#: mod/dfrn_confirm.php:292 +#: mod/dfrn_confirm.php:275 msgid "Introduction failed or was revoked." msgstr "La presentación ha fallado o ha sido anulada." -#: mod/dfrn_confirm.php:421 +#: mod/dfrn_confirm.php:280 +msgid "Remote site reported: " +msgstr "El sito remoto informó: " + +#: mod/dfrn_confirm.php:381 msgid "Unable to set contact photo." msgstr "Imposible establecer la foto del contacto." -#: mod/dfrn_confirm.php:562 +#: mod/dfrn_confirm.php:443 #, php-format msgid "No user record found for '%s' " msgstr "No se ha encontrado a ningún '%s' " -#: mod/dfrn_confirm.php:572 +#: mod/dfrn_confirm.php:453 msgid "Our site encryption key is apparently messed up." msgstr "Nuestra clave de cifrado del sitio es aparentemente un lío." -#: mod/dfrn_confirm.php:583 +#: mod/dfrn_confirm.php:464 msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "Se ha proporcionado una dirección vacía o no hemos podido descifrarla." -#: mod/dfrn_confirm.php:605 +#: mod/dfrn_confirm.php:480 msgid "Contact record was not found for you on our site." msgstr "El contacto no se ha encontrado en nuestra base de datos." -#: mod/dfrn_confirm.php:619 +#: mod/dfrn_confirm.php:494 #, php-format msgid "Site public key not available in contact record for URL %s." msgstr "La clave pública del sitio no está disponible en los datos del contacto para %s." -#: mod/dfrn_confirm.php:639 +#: mod/dfrn_confirm.php:510 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." msgstr "La identificación proporcionada por el sistema es un duplicado de nuestro sistema. Debería funcionar si lo intentas de nuevo." -#: mod/dfrn_confirm.php:650 +#: mod/dfrn_confirm.php:521 msgid "Unable to set your contact credentials on our system." msgstr "No se puede establecer las credenciales de tu contacto en nuestro sistema." -#: mod/dfrn_confirm.php:712 +#: mod/dfrn_confirm.php:577 msgid "Unable to update your contact profile details on our system" msgstr "No se puede actualizar los datos de tu perfil de contacto en nuestro sistema" -#: mod/dfrn_confirm.php:784 -#, php-format -msgid "%1$s has joined %2$s" -msgstr "%1$s se ha unido a %2$s" +#: mod/dfrn_confirm.php:607 mod/dfrn_request.php:560 +#: src/Model/Contact.php:1960 +msgid "[Name Withheld]" +msgstr "[Nombre oculto]" -#: mod/dirfind.php:41 +#: mod/dfrn_poll.php:126 mod/dfrn_poll.php:534 +#, php-format +msgid "%1$s welcomes %2$s" +msgstr "%1$s te da la bienvenida a %2$s" + +#: mod/dfrn_request.php:95 +msgid "This introduction has already been accepted." +msgstr "Esta presentación ya ha sido aceptada." + +#: mod/dfrn_request.php:113 mod/dfrn_request.php:354 +msgid "Profile location is not valid or does not contain profile information." +msgstr "La dirección del perfil no es válida o no contiene información del perfil." + +#: mod/dfrn_request.php:117 mod/dfrn_request.php:358 +msgid "Warning: profile location has no identifiable owner name." +msgstr "Aviso: La dirección del perfil no tiene un nombre de propietario identificable." + +#: mod/dfrn_request.php:120 mod/dfrn_request.php:361 +msgid "Warning: profile location has no profile photo." +msgstr "Aviso: la dirección del perfil no tiene foto de perfil." + +#: 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] "no se encontró %d parámetro requerido en el lugar determinado" +msgstr[1] "no se encontraron %d parámetros requeridos en el lugar determinado" + +#: mod/dfrn_request.php:162 +msgid "Introduction complete." +msgstr "Presentación completa." + +#: mod/dfrn_request.php:198 +msgid "Unrecoverable protocol error." +msgstr "Error de protocolo irrecuperable." + +#: mod/dfrn_request.php:225 +msgid "Profile unavailable." +msgstr "Perfil no disponible." + +#: mod/dfrn_request.php:247 +#, php-format +msgid "%s has received too many connection requests today." +msgstr "%s ha recibido demasiadas solicitudes de conexión hoy." + +#: mod/dfrn_request.php:248 +msgid "Spam protection measures have been invoked." +msgstr "Han sido activadas las medidas de protección contra spam." + +#: mod/dfrn_request.php:249 +msgid "Friends are advised to please try again in 24 hours." +msgstr "Tus amigos serán avisados para que lo intenten de nuevo pasadas 24 horas." + +#: mod/dfrn_request.php:275 +msgid "Invalid locator" +msgstr "Localizador no válido" + +#: mod/dfrn_request.php:311 +msgid "You have already introduced yourself here." +msgstr "Ya te has presentado aquí." + +#: mod/dfrn_request.php:314 +#, php-format +msgid "Apparently you are already friends with %s." +msgstr "Al parecer, ya eres amigo de %s." + +#: mod/dfrn_request.php:334 +msgid "Invalid profile URL." +msgstr "Dirección de perfil no válida." + +#: mod/dfrn_request.php:340 src/Model/Contact.php:1640 +msgid "Disallowed profile URL." +msgstr "Dirección de perfil no permitida." + +#: mod/dfrn_request.php:413 src/Module/Contact.php:236 +msgid "Failed to update contact record." +msgstr "Error al actualizar el contacto." + +#: mod/dfrn_request.php:433 +msgid "Your introduction has been sent." +msgstr "Tu presentación ha sido enviada." + +#: mod/dfrn_request.php:471 +msgid "" +"Remote subscription can't be done for your network. Please subscribe " +"directly on your system." +msgstr "La subscripción remota no se podrá hacer para tu red. Por favor contacta directamente desde tu sistema." + +#: mod/dfrn_request.php:487 +msgid "Please login to confirm introduction." +msgstr "Inicia sesión para confirmar la presentación." + +#: mod/dfrn_request.php:495 +msgid "" +"Incorrect identity currently logged in. Please login to " +"this profile." +msgstr "Sesión iniciada con la identificación incorrecta. Entra en este perfil." + +#: mod/dfrn_request.php:509 mod/dfrn_request.php:524 +msgid "Confirm" +msgstr "Confirmar" + +#: mod/dfrn_request.php:520 +msgid "Hide this contact" +msgstr "Ocultar este contacto" + +#: mod/dfrn_request.php:522 +#, php-format +msgid "Welcome home %s." +msgstr "Bienvenido a casa %s" + +#: mod/dfrn_request.php:523 +#, php-format +msgid "Please confirm your introduction/connection request to %s." +msgstr "Por favor, confirma tu solicitud de presentación/conexión con %s." + +#: mod/dfrn_request.php:633 +msgid "" +"Please enter your 'Identity Address' from one of the following supported " +"communications networks:" +msgstr "Por favor introduce tu dirección ID de una de las siguientes redes sociales soportadas:" + +#: mod/dfrn_request.php:636 +#, php-format +msgid "" +"If you are not yet a member of the free social web, follow " +"this link to find a public Friendica site and join us today." +msgstr "" + +#: mod/dfrn_request.php:641 +msgid "Friend/Connection Request" +msgstr "Solicitud de Amistad/Conexión" + +#: mod/dfrn_request.php:642 +msgid "" +"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " +"testuser@gnusocial.de" +msgstr "" + +#: mod/dfrn_request.php:643 mod/follow.php:150 +msgid "Please answer the following:" +msgstr "Por favor responde lo siguiente:" + +#: mod/dfrn_request.php:644 mod/follow.php:151 +#, php-format +msgid "Does %s know you?" +msgstr "¿%s te conoce?" + +#: mod/dfrn_request.php:645 mod/follow.php:152 +msgid "Add a personal note:" +msgstr "Añade una nota personal:" + +#: mod/dfrn_request.php:647 +msgid "Friendica" +msgstr "Friendica" + +#: mod/dfrn_request.php:648 +msgid "GNU Social (Pleroma, Mastodon)" +msgstr "" + +#: mod/dfrn_request.php:649 +msgid "Diaspora (Socialhome, Hubzilla)" +msgstr "" + +#: mod/dfrn_request.php:650 +#, php-format +msgid "" +" - please do not use this form. Instead, enter %s into your Diaspora search" +" bar." +msgstr "(En vez de usar este formulario, introduce %s en la barra de búsqueda de Diaspora." + +#: mod/dfrn_request.php:651 mod/follow.php:158 mod/unfollow.php:128 +msgid "Your Identity Address:" +msgstr "Dirección de tu perfil:" + +#: mod/dfrn_request.php:653 mod/follow.php:66 mod/unfollow.php:131 +msgid "Submit Request" +msgstr "Enviar solicitud" + +#: mod/directory.php:154 mod/events.php:556 mod/notifications.php:251 +#: src/Model/Event.php:66 src/Model/Event.php:93 src/Model/Event.php:435 +#: src/Model/Event.php:926 src/Model/Profile.php:437 +#: src/Module/Contact.php:646 +msgid "Location:" +msgstr "Localización:" + +#: mod/directory.php:159 mod/notifications.php:257 src/Model/Profile.php:440 +#: src/Model/Profile.php:759 +msgid "Gender:" +msgstr "Género:" + +#: mod/directory.php:160 src/Model/Profile.php:441 src/Model/Profile.php:783 +msgid "Status:" +msgstr "Estado:" + +#: mod/directory.php:161 src/Model/Profile.php:442 src/Model/Profile.php:800 +msgid "Homepage:" +msgstr "Página de inicio:" + +#: mod/directory.php:162 mod/notifications.php:253 src/Model/Profile.php:443 +#: src/Model/Profile.php:820 src/Module/Contact.php:650 +msgid "About:" +msgstr "Acerca de:" + +#: mod/directory.php:210 src/Content/Widget.php:69 +#: view/theme/vier/theme.php:208 +msgid "Global Directory" +msgstr "Directorio global" + +#: mod/directory.php:212 +msgid "Find on this site" +msgstr "Buscar en este sitio" + +#: mod/directory.php:214 +msgid "Results for:" +msgstr "Resultados para:" + +#: mod/directory.php:216 +msgid "Site Directory" +msgstr "Directorio del sitio" + +#: mod/directory.php:217 src/Content/Widget.php:64 src/Module/Contact.php:818 +#: view/theme/vier/theme.php:203 +msgid "Find" +msgstr "Buscar" + +#: mod/directory.php:221 +msgid "No entries (some entries may be hidden)." +msgstr "Sin entradas (algunas pueden que estén ocultas)." + +#: mod/dirfind.php:55 #, php-format msgid "People Search - %s" msgstr "Buscar perfiles - %s" -#: mod/dirfind.php:52 +#: mod/dirfind.php:66 #, php-format msgid "Forum Search - %s" msgstr "Búsqueda de foro - %s" -#: mod/display.php:482 -msgid "Item has been removed." -msgstr "El elemento ha sido eliminado." +#: mod/dirfind.php:261 mod/match.php:127 +msgid "No matches" +msgstr "Sin conincidencias" -#: mod/events.php:98 mod/events.php:100 +#: mod/editpost.php:30 mod/editpost.php:40 +msgid "Item not found" +msgstr "Elemento no encontrado" + +#: mod/editpost.php:47 +msgid "Edit post" +msgstr "Editar publicación" + +#: mod/editpost.php:93 mod/filer.php:36 mod/notes.php:52 +#: src/Content/Text/HTML.php:963 +msgid "Save" +msgstr "Guardar" + +#: mod/editpost.php:98 mod/message.php:261 mod/message.php:442 +#: mod/wallmessage.php:140 +msgid "Insert web link" +msgstr "Insertar enlace" + +#: mod/editpost.php:99 +msgid "web link" +msgstr "enlace web" + +#: mod/editpost.php:100 +msgid "Insert video link" +msgstr "Insertar enlace del vídeo" + +#: mod/editpost.php:101 +msgid "video link" +msgstr "enlace de video" + +#: mod/editpost.php:102 +msgid "Insert audio link" +msgstr "Insertar vínculo del audio" + +#: mod/editpost.php:103 +msgid "audio link" +msgstr "enlace de audio" + +#: mod/editpost.php:118 src/Core/ACL.php:305 +msgid "CC: email addresses" +msgstr "CC: dirección de correo electrónico" + +#: mod/editpost.php:125 src/Core/ACL.php:306 +msgid "Example: bob@example.com, mary@example.com" +msgstr "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com" + +#: mod/events.php:117 mod/events.php:119 msgid "Event can not end before it has started." msgstr "Un evento no puede terminar antes de su comienzo." -#: mod/events.php:107 mod/events.php:109 +#: mod/events.php:126 mod/events.php:128 msgid "Event title and start time are required." msgstr "Título del evento y hora de inicio requeridas." -#: mod/events.php:385 +#: mod/events.php:401 msgid "Create New Event" msgstr "Crea un evento nuevo" -#: mod/events.php:505 +#: mod/events.php:524 msgid "Event details" msgstr "Detalles del evento" -#: mod/events.php:506 +#: mod/events.php:525 msgid "Starting date and Title are required." msgstr "Se requiere fecha de comienzo y titulo" -#: mod/events.php:507 mod/events.php:508 +#: mod/events.php:526 mod/events.php:531 msgid "Event Starts:" msgstr "Inicio del evento:" -#: mod/events.php:507 mod/events.php:519 mod/profiles.php:708 +#: mod/events.php:526 mod/events.php:558 mod/profiles.php:608 msgid "Required" msgstr "Obligatorio" -#: mod/events.php:509 mod/events.php:525 +#: mod/events.php:539 mod/events.php:564 msgid "Finish date/time is not known or not relevant" msgstr "La fecha/hora de finalización no es conocida o es irrelevante." -#: mod/events.php:511 mod/events.php:512 +#: mod/events.php:541 mod/events.php:546 msgid "Event Finishes:" msgstr "Finalización del evento:" -#: mod/events.php:513 mod/events.php:526 +#: mod/events.php:552 mod/events.php:565 msgid "Adjust for viewer timezone" msgstr "Ajuste de zona horaria" -#: mod/events.php:515 +#: mod/events.php:554 msgid "Description:" msgstr "Descripción:" -#: mod/events.php:519 mod/events.php:521 +#: mod/events.php:558 mod/events.php:560 msgid "Title:" msgstr "Título:" -#: mod/events.php:522 mod/events.php:523 +#: mod/events.php:561 mod/events.php:562 msgid "Share this event" msgstr "Comparte este evento" -#: mod/events.php:552 +#: mod/events.php:569 src/Model/Profile.php:878 +msgid "Basic" +msgstr "Basic" + +#: mod/events.php:571 mod/photos.php:1107 mod/photos.php:1448 +#: src/Core/ACL.php:308 +msgid "Permissions" +msgstr "Permisos" + +#: mod/events.php:587 msgid "Failed to remove event" msgstr "Error al eliminar el evento" -#: mod/events.php:554 +#: mod/events.php:589 msgid "Event removed" msgstr "Evento eliminado" -#: mod/fsuggest.php:66 +#: mod/fbrowser.php:36 src/Content/Nav.php:152 src/Model/Profile.php:918 +#: view/theme/frio/theme.php:275 +msgid "Photos" +msgstr "Fotografías" + +#: mod/fbrowser.php:45 mod/fbrowser.php:70 mod/photos.php:202 +#: mod/photos.php:1071 mod/photos.php:1166 mod/photos.php:1183 +#: mod/photos.php:1650 mod/photos.php:1665 src/Model/Photo.php:242 +#: src/Model/Photo.php:251 +msgid "Contact Photos" +msgstr "Foto del contacto" + +#: mod/fbrowser.php:107 mod/fbrowser.php:138 mod/profile_photo.php:251 +msgid "Upload" +msgstr "Subir" + +#: mod/fbrowser.php:133 +msgid "Files" +msgstr "Archivos" + +#: mod/feedtest.php:18 +msgid "You must be logged in to use this module" +msgstr "" + +#: mod/feedtest.php:45 +msgid "Source URL" +msgstr "" + +#: mod/filer.php:35 +msgid "- select -" +msgstr "- seleccionar -" + +#: mod/follow.php:47 +msgid "The contact could not be added." +msgstr "" + +#: mod/follow.php:77 +msgid "You already added this contact." +msgstr "Ya has añadido este contacto." + +#: mod/follow.php:87 +msgid "Diaspora support isn't enabled. Contact can't be added." +msgstr "El soporte de Diaspora* no esta habilitado, el contacto no puede ser agregado." + +#: mod/follow.php:94 +msgid "OStatus support is disabled. Contact can't be added." +msgstr "El soporte de OStatus no esta habilitado, el contacto no puede ser agregado." + +#: mod/follow.php:101 +msgid "The network type couldn't be detected. Contact can't be added." +msgstr "No se pudo detectar el tipo de red. Contacto no puede ser agregado." + +#: mod/follow.php:171 mod/notifications.php:255 src/Model/Profile.php:808 +#: src/Module/Contact.php:652 +msgid "Tags:" +msgstr "Etiquetas:" + +#: mod/follow.php:183 mod/unfollow.php:147 src/Model/Profile.php:905 +#: src/Module/Contact.php:865 +msgid "Status Messages and Posts" +msgstr "Mensajes de Estado y Publicaciones" + +#: mod/friendica.php:79 +#, 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." +msgstr "" + +#: mod/friendica.php:85 +msgid "" +"Please visit Friendi.ca to learn more " +"about the Friendica project." +msgstr "Visite Friendi.ca para aprender más sobre el proyecto Friendica, por favor." + +#: mod/friendica.php:89 +msgid "Bug reports and issues: please visit" +msgstr "Reporte de fallos y problemas: por favor visita" + +#: mod/friendica.php:89 +msgid "the bugtracker at github" +msgstr "aviso de fallas (bugs) en github" + +#: mod/friendica.php:92 +msgid "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca" +msgstr "" + +#: mod/friendica.php:97 +msgid "Installed addons/apps:" +msgstr "" + +#: mod/friendica.php:111 +msgid "No installed addons/apps" +msgstr "" + +#: mod/friendica.php:116 +#, php-format +msgid "Read about the Terms of Service of this node." +msgstr "" + +#: mod/friendica.php:121 +msgid "On this server the following remote servers are blocked." +msgstr "En este servidor los siguientes servidores remotos están bloqueados." + +#: mod/fsuggest.php:73 msgid "Friend suggestion sent." msgstr "Solicitud de amistad enviada." -#: mod/fsuggest.php:100 +#: mod/fsuggest.php:102 msgid "Suggest Friends" msgstr "Sugerencias de amistad" -#: mod/fsuggest.php:102 +#: mod/fsuggest.php:104 #, php-format msgid "Suggest a friend for %s" msgstr "Recomienda un amigo a %s" -#: mod/item.php:120 +#: mod/group.php:40 +msgid "Group created." +msgstr "Grupo creado." + +#: mod/group.php:46 +msgid "Could not create group." +msgstr "Imposible crear el grupo." + +#: mod/group.php:60 mod/group.php:187 +msgid "Group not found." +msgstr "Grupo no encontrado." + +#: mod/group.php:74 +msgid "Group name changed." +msgstr "El nombre del grupo ha cambiado." + +#: mod/group.php:87 mod/profperm.php:30 src/App.php:1785 +msgid "Permission denied" +msgstr "Permiso denegado" + +#: mod/group.php:105 +msgid "Save Group" +msgstr "Guardar grupo" + +#: mod/group.php:106 +msgid "Filter" +msgstr "" + +#: mod/group.php:111 +msgid "Create a group of contacts/friends." +msgstr "Crea un grupo de contactos/amigos." + +#: mod/group.php:112 mod/group.php:136 mod/group.php:229 +#: src/Model/Group.php:415 +msgid "Group Name: " +msgstr "Nombre del grupo: " + +#: mod/group.php:127 src/Model/Group.php:412 +msgid "Contacts not in any group" +msgstr "Contactos sin grupo" + +#: mod/group.php:159 +msgid "Group removed." +msgstr "Grupo eliminado." + +#: mod/group.php:161 +msgid "Unable to remove group." +msgstr "No se puede eliminar el grupo." + +#: mod/group.php:222 +msgid "Delete Group" +msgstr "Borrar grupo" + +#: mod/group.php:233 +msgid "Edit Group Name" +msgstr "Editar nombre de grupo" + +#: mod/group.php:244 +msgid "Members" +msgstr "Miembros" + +#: mod/group.php:246 src/Module/Contact.php:707 +msgid "All Contacts" +msgstr "Todos los contactos" + +#: mod/group.php:247 mod/network.php:651 +msgid "Group is empty" +msgstr "El grupo está vacío" + +#: mod/group.php:260 +msgid "Remove contact from group" +msgstr "" + +#: mod/group.php:278 mod/profperm.php:119 +msgid "Click on a contact to add or remove." +msgstr "Pulsa en un contacto para añadirlo o eliminarlo." + +#: mod/group.php:292 +msgid "Add contact to group" +msgstr "" + +#: mod/hcard.php:19 +msgid "No profile" +msgstr "Nigún perfil" + +#: mod/help.php:51 +msgid "Help:" +msgstr "Ayuda:" + +#: mod/help.php:58 src/Content/Nav.php:184 view/theme/vier/theme.php:294 +msgid "Help" +msgstr "Ayuda" + +#: mod/help.php:64 src/App.php:1705 +msgid "Not Found" +msgstr "No se ha encontrado" + +#: mod/home.php:40 +#, php-format +msgid "Welcome to %s" +msgstr "Bienvenido a %s" + +#: mod/invite.php:38 +msgid "Total invitation limit exceeded." +msgstr "Límite total de invitaciones excedido." + +#: mod/invite.php:60 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s : No es una dirección de correo válida." + +#: mod/invite.php:87 +msgid "Please join us on Friendica" +msgstr "Únete a nosotros en Friendica" + +#: mod/invite.php:96 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "Límite de invitaciones sobrepasado. Contacta con el administrador del sitio." + +#: mod/invite.php:100 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s : Ha fallado la entrega del mensaje." + +#: mod/invite.php:104 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d mensaje enviado." +msgstr[1] "%d mensajes enviados." + +#: mod/invite.php:122 +msgid "You have no more invitations available" +msgstr "No tienes más invitaciones disponibles" + +#: mod/invite.php:130 +#, 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 "Visita %s para ver una lista de servidores públicos donde puedes darte de alta. Los miembros de otros servidores de Friendica pueden conectarse entre ellos, así como con miembros de otras redes sociales diferentes." + +#: mod/invite.php:132 +#, php-format +msgid "" +"To accept this invitation, please visit and register at %s or any other " +"public Friendica website." +msgstr "Para aceptar la invitación visita y regístrate en %s o en cualquier otro servidor público de Friendica." + +#: mod/invite.php:133 +#, 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 "Los servidores de Friendica están interconectados para crear una enorme red social centrada en la privacidad y controlada por sus miembros. También se puede conectar con muchas redes sociales tradicionales. Mira en %s para poder ver un listado de servidores alternativos de Friendica donde puedes darte de alta." + +#: mod/invite.php:137 +msgid "" +"Our apologies. This system is not currently configured to connect with other" +" public sites or invite members." +msgstr "Discúlpanos. Este sistema no está configurado actualmente para conectar con otros servidores públicos o invitar nuevos miembros." + +#: mod/invite.php:141 +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 "Los sitios de Friendica se conectan entre sí para crear una gran red social con privacidad mejorada que es propiedad y está controlada por sus miembros. También pueden conectarse con muchas redes sociales tradicionales." + +#: mod/invite.php:140 +#, php-format +msgid "To accept this invitation, please visit and register at %s." +msgstr "Para aceptar esta invitación, visite y regístrese en%s, por favor." + +#: mod/invite.php:147 +msgid "Send invitations" +msgstr "Enviar invitaciones" + +#: mod/invite.php:148 +msgid "Enter email addresses, one per line:" +msgstr "Introduce las direcciones de correo, una por línea:" + +#: mod/invite.php:149 mod/message.php:257 mod/message.php:437 +#: mod/wallmessage.php:137 +msgid "Your message:" +msgstr "Tu mensaje:" + +#: mod/invite.php:149 +msgid "" +"You are cordially invited to join me and other close friends on Friendica - " +"and help us to create a better social web." +msgstr "Estás cordialmente invitado a unirte a mi y a otros amigos en Friendica, creemos juntos una red social mejor." + +#: mod/invite.php:151 +msgid "You will need to supply this invitation code: $invite_code" +msgstr "Tienes que proporcionar el siguiente código: $invite_code" + +#: mod/invite.php:151 +msgid "" +"Once you have registered, please connect with me via my profile page at:" +msgstr "Una vez registrado, por favor contacta conmigo a través de mi página de perfil en:" + +#: mod/invite.php:153 +msgid "" +"For more information about the Friendica project and why we feel it is " +"important, please visit http://friendi.ca" +msgstr "Para más información sobre el proyecto Friendica y por qué sentimos que es importante, visite http://friendi.ca, por favor" + +#: mod/item.php:116 msgid "Unable to locate original post." msgstr "No se puede encontrar la publicación original." -#: mod/item.php:347 +#: mod/item.php:284 msgid "Empty post discarded." msgstr "Publicación vacía descartada." -#: mod/item.php:931 -msgid "System error. Post not saved." -msgstr "Error del sistema. Mensaje no guardado." - -#: mod/item.php:1022 +#: mod/item.php:805 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Este mensaje te lo ha enviado %s, miembro de la red social Friendica." -#: mod/item.php:1024 +#: mod/item.php:807 #, php-format msgid "You may visit them online at %s" msgstr "Los puedes visitar en línea en %s" -#: mod/item.php:1025 +#: mod/item.php:808 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Por favor contacta con el remitente respondiendo a este mensaje si no deseas recibir estos mensajes." -#: mod/item.php:1029 +#: mod/item.php:812 #, php-format msgid "%s posted an update." msgstr "%s ha publicado una actualización." -#: mod/mood.php:137 -msgid "Mood" -msgstr "Ánimo" +#: mod/localtime.php:19 src/Model/Event.php:34 src/Model/Event.php:840 +msgid "l F d, Y \\@ g:i A" +msgstr "l F d, Y \\@ g:i A" -#: mod/mood.php:138 -msgid "Set your current mood and tell your friends" -msgstr "Coloca tu ánimo actual y cuéntaselo a tus amigos" +#: mod/localtime.php:33 +msgid "Time Conversion" +msgstr "Conversión horária" -#: mod/network.php:563 +#: mod/localtime.php:35 +msgid "" +"Friendica provides this service for sharing events with other networks and " +"friends in unknown timezones." +msgstr "Friendica ofrece este servicio para compartir eventos con otros servidores de la red friendica y amigos en zonas de horarios desconocidos." + +#: mod/localtime.php:39 +#, php-format +msgid "UTC time: %s" +msgstr "Tiempo UTC: %s" + +#: mod/localtime.php:42 +#, php-format +msgid "Current timezone: %s" +msgstr "Zona horaria actual: %s" + +#: mod/localtime.php:46 +#, php-format +msgid "Converted localtime: %s" +msgstr "Zona horaria local convertida: %s" + +#: mod/localtime.php:52 +msgid "Please select your timezone:" +msgstr "Por favor, selecciona tu zona horaria:" + +#: mod/lockview.php:46 mod/lockview.php:57 +msgid "Remote privacy information not available." +msgstr "Privacidad de la información remota no disponible." + +#: mod/lockview.php:66 +msgid "Visible to:" +msgstr "Visible para:" + +#: mod/lostpass.php:26 +msgid "No valid account found." +msgstr "No se ha encontrado ninguna cuenta válida" + +#: mod/lostpass.php:38 +msgid "Password reset request issued. Check your email." +msgstr "Solicitud de restablecimiento de contraseña enviada. Revisa tu correo." + +#: mod/lostpass.php:44 +#, 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/lostpass.php:55 +#, 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/lostpass.php:74 +#, php-format +msgid "Password reset requested at %s" +msgstr "Contraseña restablecida enviada a %s" + +#: mod/lostpass.php:90 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "La solicitud no puede ser verificada (deberías haberla proporcionado antes). Falló el restablecimiento de la contraseña." + +#: mod/lostpass.php:103 +msgid "Request has expired, please make a new one." +msgstr "" + +#: mod/lostpass.php:118 +msgid "Forgot your Password?" +msgstr "¿Olvidaste tu contraseña?" + +#: mod/lostpass.php:119 +msgid "" +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Introduce tu correo para restablecer tu contraseña. Luego comprueba tu correo para las instrucciones adicionales." + +#: mod/lostpass.php:120 src/Module/Login.php:321 +msgid "Nickname or Email: " +msgstr "Apodo o Correo electrónico: " + +#: mod/lostpass.php:121 +msgid "Reset" +msgstr "Restablecer" + +#: mod/lostpass.php:137 src/Module/Login.php:333 +msgid "Password Reset" +msgstr "Restablecer la contraseña" + +#: mod/lostpass.php:138 +msgid "Your password has been reset as requested." +msgstr "Tu contraseña ha sido restablecida como solicitaste." + +#: mod/lostpass.php:139 +msgid "Your new password is" +msgstr "Tu nueva contraseña es" + +#: mod/lostpass.php:140 +msgid "Save or copy your new password - and then" +msgstr "Guarda o copia tu nueva contraseña y luego" + +#: mod/lostpass.php:141 +msgid "click here to login" +msgstr "pulsa aquí para acceder" + +#: mod/lostpass.php:142 +msgid "" +"Your password may be changed from the Settings page after " +"successful login." +msgstr "Puedes cambiar tu contraseña desde la página de Configuración después de acceder con éxito." + +#: mod/lostpass.php:150 +#, 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/lostpass.php:156 +#, 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" +msgstr "" + +#: mod/lostpass.php:172 +#, php-format +msgid "Your password has been changed at %s" +msgstr "Tu contraseña se ha cambiado por %s" + +#: mod/maintenance.php:26 +msgid "System down for maintenance" +msgstr "Servicio suspendido por mantenimiento" + +#: mod/manage.php:179 +msgid "Manage Identities and/or Pages" +msgstr "Administrar identidades y/o páginas" + +#: mod/manage.php:180 +msgid "" +"Toggle between different identities or community/group pages which share " +"your account details or which you have been granted \"manage\" permissions" +msgstr "Cambia entre diferentes identidades o páginas de Comunidad/Grupos que comparten los detalles de tu cuenta o sobre los que tienes permisos para administrar" + +#: mod/manage.php:181 +msgid "Select an identity to manage: " +msgstr "Selecciona una identidad a gestionar:" + +#: mod/match.php:46 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "No hay palabras clave que coincidan. Por favor, agrega algunas palabras claves en tu perfil predeterminado." + +#: mod/match.php:112 src/Content/Pager.php:210 +msgid "first" +msgstr "primera" + +#: mod/match.php:117 src/Content/Pager.php:270 +msgid "next" +msgstr "sig." + +#: mod/match.php:132 +msgid "Profile Match" +msgstr "Coincidencias de Perfil" + +#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:249 +msgid "New Message" +msgstr "Nuevo mensaje" + +#: mod/message.php:70 mod/wallmessage.php:60 +msgid "No recipient selected." +msgstr "Ningún destinatario seleccionado" + +#: mod/message.php:74 +msgid "Unable to locate contact information." +msgstr "No se puede encontrar información del contacto." + +#: mod/message.php:77 mod/wallmessage.php:66 +msgid "Message could not be sent." +msgstr "El mensaje no ha podido ser enviado." + +#: mod/message.php:80 mod/wallmessage.php:69 +msgid "Message collection failure." +msgstr "Fallo en la recolección de mensajes." + +#: mod/message.php:83 mod/wallmessage.php:72 +msgid "Message sent." +msgstr "Mensaje enviado." + +#: mod/message.php:110 mod/notifications.php:47 mod/notifications.php:185 +#: mod/notifications.php:233 +msgid "Discard" +msgstr "Descartar" + +#: mod/message.php:123 src/Content/Nav.php:246 view/theme/frio/theme.php:282 +msgid "Messages" +msgstr "Mensajes" + +#: mod/message.php:148 +msgid "Do you really want to delete this message?" +msgstr "¿Estás seguro de que quieres borrar este mensaje?" + +#: mod/message.php:166 +msgid "Conversation not found." +msgstr "" + +#: mod/message.php:171 +msgid "Message deleted." +msgstr "Mensaje eliminado." + +#: mod/message.php:176 mod/message.php:191 +msgid "Conversation removed." +msgstr "Conversación eliminada." + +#: mod/message.php:205 mod/message.php:362 mod/wallmessage.php:123 +msgid "Please enter a link URL:" +msgstr "Introduce la dirección del enlace:" + +#: mod/message.php:248 mod/wallmessage.php:128 +msgid "Send Private Message" +msgstr "Enviar mensaje privado" + +#: mod/message.php:249 mod/message.php:432 mod/wallmessage.php:130 +msgid "To:" +msgstr "Para:" + +#: mod/message.php:253 mod/message.php:434 mod/wallmessage.php:131 +msgid "Subject:" +msgstr "Asunto:" + +#: mod/message.php:291 +msgid "No messages." +msgstr "No hay mensajes." + +#: mod/message.php:354 +msgid "Message not available." +msgstr "Mensaje no disponibile." + +#: mod/message.php:408 +msgid "Delete message" +msgstr "Borrar mensaje" + +#: mod/message.php:410 mod/message.php:542 +msgid "D, d M Y - g:i A" +msgstr "D, d M Y - g:i A" + +#: mod/message.php:425 mod/message.php:539 +msgid "Delete conversation" +msgstr "Eliminar conversación" + +#: mod/message.php:427 +msgid "" +"No secure communications available. You may be able to " +"respond from the sender's profile page." +msgstr "No hay comunicaciones seguras disponibles. Podrías responder desde la página de perfil del remitente. " + +#: mod/message.php:431 +msgid "Send Reply" +msgstr "Enviar respuesta" + +#: mod/message.php:514 +#, php-format +msgid "Unknown sender - %s" +msgstr "Remitente desconocido - %s" + +#: mod/message.php:516 +#, php-format +msgid "You and %s" +msgstr "Tú y %s" + +#: mod/message.php:518 +#, php-format +msgid "%s and You" +msgstr "%s y Tú" + +#: mod/message.php:545 +#, php-format +msgid "%d message" +msgid_plural "%d messages" +msgstr[0] "%d mensaje" +msgstr[1] "%d mensajes" + +#: mod/network.php:184 mod/search.php:39 +msgid "Remove term" +msgstr "Eliminar término" + +#: mod/network.php:191 mod/search.php:48 +msgid "Saved Searches" +msgstr "Búsquedas guardadas" + +#: mod/network.php:192 src/Model/Group.php:406 +msgid "add" +msgstr "añadir" + +#: mod/network.php:559 #, php-format msgid "" "Warning: This group contains %s member from a network that doesn't allow non" @@ -7170,1945 +4422,5369 @@ msgid_plural "" msgstr[0] "Aviso: Este grupo contiene %s miembro de una red que no permite mensajes públicos." msgstr[1] "Aviso: Este grupo contiene %s miembros de una red que no permite mensajes públicos." -#: mod/network.php:566 +#: mod/network.php:562 msgid "Messages in this group won't be send to these receivers." msgstr "Los mensajes de este grupo no se enviarán a estos receptores." -#: mod/network.php:634 +#: mod/network.php:630 msgid "No such group" msgstr "Ningún grupo" -#: mod/network.php:659 +#: mod/network.php:655 #, php-format msgid "Group: %s" msgstr "Grupo: %s" -#: mod/network.php:686 +#: mod/network.php:681 msgid "Private messages to this person are at risk of public disclosure." msgstr "Los mensajes privados a esta persona corren el riesgo de ser mostrados públicamente." -#: mod/network.php:690 +#: mod/network.php:684 msgid "Invalid contact." msgstr "Contacto erróneo." -#: mod/network.php:895 +#: mod/network.php:962 msgid "Commented Order" msgstr "Orden de comentarios" -#: mod/network.php:898 +#: mod/network.php:965 msgid "Sort by Comment Date" msgstr "Ordenar por fecha de comentarios" -#: mod/network.php:903 +#: mod/network.php:970 msgid "Posted Order" msgstr "Orden de publicación" -#: mod/network.php:906 +#: mod/network.php:973 msgid "Sort by Post Date" msgstr "Ordenar por fecha de publicación" -#: mod/network.php:917 +#: mod/network.php:980 mod/profiles.php:595 +#: src/Core/NotificationsManager.php:185 +msgid "Personal" +msgstr "Personal" + +#: mod/network.php:983 msgid "Posts that mention or involve you" msgstr "Publicaciones que te mencionan o involucran" -#: mod/network.php:925 +#: mod/network.php:990 msgid "New" msgstr "Nuevo" -#: mod/network.php:928 +#: mod/network.php:993 msgid "Activity Stream - by date" msgstr "Corriente de actividad por fecha" -#: mod/network.php:936 +#: mod/network.php:1001 msgid "Shared Links" msgstr "Enlaces compartidos" -#: mod/network.php:939 +#: mod/network.php:1004 msgid "Interesting Links" msgstr "Enlaces interesantes" -#: mod/network.php:947 +#: mod/network.php:1011 msgid "Starred" msgstr "Favoritos" -#: mod/network.php:950 +#: mod/network.php:1014 msgid "Favourite Posts" msgstr "Publicaciones favoritas" -#: mod/ostatus_subscribe.php:17 +#: mod/newmember.php:12 +msgid "Welcome to Friendica" +msgstr "Bienvenido a Friendica " + +#: mod/newmember.php:13 +msgid "New Member Checklist" +msgstr "Listado de nuevos miembros" + +#: mod/newmember.php:15 +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 "Nos gustaría ofrecerte algunos consejos y enlaces para ayudar a hacer tu experiencia más amena. Pulsa en cualquier elemento para visitar la página correspondiente. Un enlace a esta página será visible desde tu página de inicio durante las dos semanas siguientes a tu inscripción y luego desaparecerá." + +#: mod/newmember.php:16 +msgid "Getting Started" +msgstr "Empezando" + +#: mod/newmember.php:18 +msgid "Friendica Walk-Through" +msgstr "Visita guiada a Friendica" + +#: mod/newmember.php:18 +msgid "" +"On your Quick Start page - find a brief introduction to your " +"profile and network tabs, make some new connections, and find some groups to" +" join." +msgstr "En tu página de Inicio Rápido - busca una introducción breve para tus pestañas de perfil y red, haz algunas conexiones nuevas, y busca algunos grupos a los que unirte." + +#: mod/newmember.php:22 +msgid "Go to Your Settings" +msgstr "Ir a tus ajustes" + +#: mod/newmember.php:22 +msgid "" +"On your Settings 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 "En la página de Configuración puedes cambiar tu contraseña inicial. También aparece tu ID (Identity Address). Es parecida a una dirección de correo y te servirá para conectar con gente de redes sociales libres." + +#: mod/newmember.php:23 +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." +msgstr "Revisa las otras configuraciones, especialmente la configuración de privacidad. Un listado de directorio sin publicar es como tener un número de teléfono sin publicar. Normalmente querrás publicar tu listado, a menos que tus amigos y amigos potenciales sepan cómo ponerse en contacto contigo." + +#: mod/newmember.php:25 mod/profperm.php:117 src/Content/Nav.php:151 +#: src/Model/Profile.php:744 src/Model/Profile.php:877 +#: src/Model/Profile.php:910 src/Module/Contact.php:657 +#: src/Module/Contact.php:870 view/theme/frio/theme.php:274 +msgid "Profile" +msgstr "Perfil" + +#: mod/newmember.php:27 mod/profiles.php:599 mod/profile_photo.php:250 +msgid "Upload Profile Photo" +msgstr "Subir foto del Perfil" + +#: mod/newmember.php:27 +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." +msgstr "Sube una foto para tu perfil si no lo has hecho aún. Los estudios han demostrado que la gente que usa fotos suyas reales tienen diez veces más éxito a la hora de entablar amistad que las que no." + +#: mod/newmember.php:28 +msgid "Edit Your Profile" +msgstr "Editar tu perfil" + +#: mod/newmember.php:28 +msgid "" +"Edit your default profile to your liking. Review the " +"settings for hiding your list of friends and hiding the profile from unknown" +" visitors." +msgstr "Edita tu perfil predeterminado como quieras. Revisa la configuración para ocultar tu lista de amigos o tu perfil a los visitantes desconocidos." + +#: mod/newmember.php:29 +msgid "Profile Keywords" +msgstr "Palabras clave del perfil" + +#: mod/newmember.php:29 +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 "Define en tu perfil público algunas palabras que describan tus intereses. Así podremos buscar otras personas con los mismos gustos y sugerirte posibles amigos." + +#: mod/newmember.php:31 +msgid "Connecting" +msgstr "Conectando" + +#: mod/newmember.php:37 +msgid "Importing Emails" +msgstr "Importando correos electrónicos" + +#: mod/newmember.php:37 +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 "Introduce la información para acceder a tu correo en la página de Configuración del conector si quieres importar e interactuar con amigos o listas de correos del buzón de entrada de tu correo electrónico." + +#: mod/newmember.php:40 +msgid "Go to Your Contacts Page" +msgstr "Ir a tu página de contactos" + +#: mod/newmember.php:40 +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 Add New Contact dialog." +msgstr "Tu página de Contactos es el portal desde donde podrás manejar tus amistades y conectarte con amigos de otras redes. Normalmente introduces su dirección o la dirección de su sitio web en el recuadro \"Añadir contacto nuevo\"." + +#: mod/newmember.php:41 +msgid "Go to Your Site's Directory" +msgstr "Ir al directorio de tu sitio" + +#: mod/newmember.php:41 +msgid "" +"The Directory page lets you find other people in this network or other " +"federated sites. Look for a Connect or Follow link on " +"their profile page. Provide your own Identity Address if requested." +msgstr "El Directorio te permite encontrar otras personas en esta red o en cualquier otro sitio federado. Busca algún enlace de Conectar o Seguir en su perfil. Proporciona tu direción personal si es necesario." + +#: mod/newmember.php:42 +msgid "Finding New People" +msgstr "Encontrando nueva gente" + +#: mod/newmember.php:42 +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 "En el panel lateral de la página de Contactos existen varias herramientas para encontrar nuevos amigos. Podemos filtrar personas por sus intereses, buscar personas por nombre o por sus intereses, y ofrecerte sugerencias basadas en sus relaciones de la red. En un sitio nuevo, las sugerencias de amigos por lo general comienzan pasadas las 24 horas." + +#: mod/newmember.php:44 src/Model/Group.php:407 src/Module/Contact.php:755 +msgid "Groups" +msgstr "Grupos" + +#: mod/newmember.php:46 +msgid "Group Your Contacts" +msgstr "Agrupa tus contactos" + +#: mod/newmember.php:46 +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 "Una vez que tengas algunos amigos, puedes organizarlos en grupos privados de conversación mediante el memnú en tu página de Contactos y luego puedes interactuar con cada grupo por separado desde tu página de Red." + +#: mod/newmember.php:49 +msgid "Why Aren't My Posts Public?" +msgstr "¿Por qué mis publicaciones no son públicas?" + +#: mod/newmember.php:49 +msgid "" +"Friendica respects your privacy. By default, your posts will only show up to" +" people you've added as friends. For more information, see the help section " +"from the link above." +msgstr "Friendica respeta tu privacidad. Por defecto, tus publicaciones solo se mostrarán a personas que hayas añadido como amistades. Para más información, mira la sección de ayuda en el enlace de más arriba." + +#: mod/newmember.php:53 +msgid "Getting Help" +msgstr "Consiguiendo ayuda" + +#: mod/newmember.php:55 +msgid "Go to the Help Section" +msgstr "Ir a la sección de ayuda" + +#: mod/newmember.php:55 +msgid "" +"Our help pages may be consulted for detail on other program" +" features and resources." +msgstr "Puedes consultar nuestra página de Ayuda para más información y recursos de ayuda." + +#: mod/notes.php:40 src/Model/Profile.php:960 +msgid "Personal Notes" +msgstr "Notas personales" + +#: mod/notifications.php:38 +msgid "Invalid request identifier." +msgstr "Solicitud de identificación no válida." + +#: mod/notifications.php:60 mod/notifications.php:184 +#: mod/notifications.php:269 src/Module/Contact.php:624 +#: src/Module/Contact.php:826 src/Module/Contact.php:1086 +msgid "Ignore" +msgstr "Ignorar" + +#: mod/notifications.php:93 src/Content/Nav.php:241 +msgid "Notifications" +msgstr "Notificaciones" + +#: mod/notifications.php:105 +msgid "Network Notifications" +msgstr "Notificaciones de Red" + +#: mod/notifications.php:110 mod/notify.php:82 +msgid "System Notifications" +msgstr "Notificaciones del sistema" + +#: mod/notifications.php:115 +msgid "Personal Notifications" +msgstr "Notificaciones personales" + +#: mod/notifications.php:120 +msgid "Home Notifications" +msgstr "Notificaciones de Inicio" + +#: mod/notifications.php:140 +msgid "Show unread" +msgstr "Mostrar no leído" + +#: mod/notifications.php:140 +msgid "Show all" +msgstr "Mostrar todo" + +#: mod/notifications.php:151 +msgid "Show Ignored Requests" +msgstr "Mostrar peticiones ignoradas" + +#: mod/notifications.php:151 +msgid "Hide Ignored Requests" +msgstr "Ocultar peticiones ignoradas" + +#: mod/notifications.php:164 mod/notifications.php:241 +msgid "Notification type:" +msgstr "" + +#: mod/notifications.php:167 +msgid "Suggested by:" +msgstr "" + +#: mod/notifications.php:179 mod/notifications.php:258 +#: src/Module/Contact.php:632 +msgid "Hide this contact from others" +msgstr "Ocultar este contacto a los demás." + +#: mod/notifications.php:201 +msgid "Claims to be known to you: " +msgstr "Dice conocerte: " + +#: mod/notifications.php:202 +msgid "yes" +msgstr "sí" + +#: mod/notifications.php:202 +msgid "no" +msgstr "no" + +#: mod/notifications.php:203 mod/notifications.php:207 +msgid "Shall your connection be bidirectional or not?" +msgstr "¿Su conexión debe ser bidireccional o no?" + +#: mod/notifications.php:204 mod/notifications.php:208 +#, 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 "Aceptar a %s como amigo le permite a %s suscribirse a sus publicaciones, y usted también recibirá actualizaciones de ellos en sus noticias." + +#: mod/notifications.php:205 +#, 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 "Aceptar a %s como suscriptor les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias." + +#: mod/notifications.php:209 +#, 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 "Aceptar a %s como participante les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias." + +#: mod/notifications.php:220 +msgid "Friend" +msgstr "Amigo" + +#: mod/notifications.php:221 +msgid "Sharer" +msgstr "Lector" + +#: mod/notifications.php:221 +msgid "Subscriber" +msgstr "Suscriptor" + +#: mod/notifications.php:264 src/Model/Profile.php:538 +#: src/Module/Contact.php:89 +msgid "Network:" +msgstr "Red:" + +#: mod/notifications.php:277 +msgid "No introductions." +msgstr "Sin presentaciones." + +#: mod/notifications.php:311 +#, php-format +msgid "No more %s notifications." +msgstr "No más notificaciones de %s." + +#: mod/notify.php:78 +msgid "No more system notifications." +msgstr "No hay más notificaciones del sistema." + +#: mod/oexchange.php:32 +msgid "Post successful." +msgstr "¡Publicado!" + +#: mod/openid.php:32 +msgid "OpenID protocol error. No ID returned." +msgstr "Error de protocolo OpenID. ID no devuelta." + +#: mod/openid.php:68 +msgid "" +"Account not found and OpenID registration is not permitted on this site." +msgstr "Cuenta no encontrada y el registro OpenID no está permitido en ese sitio." + +#: mod/openid.php:118 src/Module/Login.php:91 src/Module/Login.php:141 +msgid "Login failed." +msgstr "Accesso fallido." + +#: mod/ostatus_subscribe.php:23 msgid "Subscribing to OStatus contacts" msgstr "Subscribir a los contactos de OStatus" -#: mod/ostatus_subscribe.php:28 +#: mod/ostatus_subscribe.php:35 msgid "No contact provided." msgstr "Sin suministro de datos de contacto." -#: mod/ostatus_subscribe.php:34 +#: mod/ostatus_subscribe.php:42 msgid "Couldn't fetch information for contact." msgstr "No se ha podido conseguir la información del contacto." -#: mod/ostatus_subscribe.php:43 +#: mod/ostatus_subscribe.php:52 msgid "Couldn't fetch friends for contact." msgstr "No se ha podido conseguir datos de amigos para contactar." -#: mod/ostatus_subscribe.php:71 +#: mod/ostatus_subscribe.php:70 mod/repair_ostatus.php:52 +msgid "Done" +msgstr "hecho!" + +#: mod/ostatus_subscribe.php:84 msgid "success" msgstr "exito!" -#: mod/ostatus_subscribe.php:73 +#: mod/ostatus_subscribe.php:86 msgid "failed" msgstr "fallido!" -#: mod/ostatus_subscribe.php:76 object/Item.php:262 +#: mod/ostatus_subscribe.php:89 src/Object/Post.php:277 msgid "ignored" msgstr "ignorado" -#: mod/photos.php:98 mod/photos.php:1877 +#: mod/ostatus_subscribe.php:94 mod/repair_ostatus.php:58 +msgid "Keep this window open until done." +msgstr "Mantén esta ventana abierta hasta que el proceso ha terminado." + +#: mod/photos.php:116 src/Model/Profile.php:921 +msgid "Photo Albums" +msgstr "Álbum de Fotos" + +#: mod/photos.php:117 mod/photos.php:1706 msgid "Recent Photos" msgstr "Fotos recientes" -#: mod/photos.php:101 mod/photos.php:1305 mod/photos.php:1879 +#: mod/photos.php:120 mod/photos.php:1227 mod/photos.php:1708 msgid "Upload New Photos" msgstr "Subir nuevas fotos" -#: mod/photos.php:116 mod/settings.php:36 +#: mod/photos.php:138 mod/settings.php:56 msgid "everybody" msgstr "todos" -#: mod/photos.php:180 +#: mod/photos.php:194 msgid "Contact information unavailable" msgstr "Información del contacto no disponible" -#: mod/photos.php:201 +#: mod/photos.php:213 msgid "Album not found." msgstr "Álbum no encontrado." -#: mod/photos.php:234 mod/photos.php:246 mod/photos.php:1249 +#: mod/photos.php:242 mod/photos.php:255 mod/photos.php:1178 msgid "Delete Album" msgstr "Eliminar álbum" -#: mod/photos.php:244 +#: mod/photos.php:253 msgid "Do you really want to delete this photo album and all its photos?" msgstr "¿Estás seguro de quieres borrar este álbum y todas sus fotos?" -#: mod/photos.php:327 mod/photos.php:338 mod/photos.php:1575 +#: mod/photos.php:315 mod/photos.php:327 mod/photos.php:1453 msgid "Delete Photo" msgstr "Eliminar foto" -#: mod/photos.php:336 +#: mod/photos.php:325 msgid "Do you really want to delete this photo?" msgstr "¿Estás seguro de que quieres borrar esta foto?" -#: mod/photos.php:717 +#: mod/photos.php:682 +msgid "a photo" +msgstr "una foto" + +#: mod/photos.php:682 #, php-format msgid "%1$s was tagged in %2$s by %3$s" msgstr "%1$s fue etiquetado en %2$s por %3$s" -#: mod/photos.php:717 -msgid "a photo" -msgstr "una foto" - -#: mod/photos.php:817 mod/profile_photo.php:157 mod/wall_upload.php:182 +#: mod/photos.php:778 mod/photos.php:781 mod/photos.php:810 +#: mod/profile_photo.php:155 mod/wall_upload.php:197 #, php-format msgid "Image exceeds size limit of %s" msgstr "La imagen excede el limite de %s" -#: mod/photos.php:825 +#: mod/photos.php:784 +msgid "Image upload didn't complete, please try again" +msgstr "" + +#: mod/photos.php:787 +msgid "Image file is missing" +msgstr "" + +#: mod/photos.php:792 +msgid "" +"Server can't accept new file upload at this time, please contact your " +"administrator" +msgstr "" + +#: mod/photos.php:818 msgid "Image file is empty." msgstr "El archivo de imagen está vacío." -#: mod/photos.php:840 mod/profile_photo.php:166 mod/wall_upload.php:196 +#: mod/photos.php:833 mod/profile_photo.php:164 mod/wall_upload.php:211 msgid "Unable to process image." msgstr "Imposible procesar la imagen." -#: mod/photos.php:869 mod/profile_photo.php:316 mod/wall_upload.php:235 +#: mod/photos.php:862 mod/profile_photo.php:309 mod/wall_upload.php:250 msgid "Image upload failed." msgstr "Error al subir la imagen." -#: mod/photos.php:974 +#: mod/photos.php:948 msgid "No photos selected" msgstr "Ninguna foto seleccionada" -#: mod/photos.php:1077 mod/videos.php:313 +#: mod/photos.php:1045 mod/videos.php:298 msgid "Access to this item is restricted." msgstr "El acceso a este elemento está restringido." -#: mod/photos.php:1165 +#: mod/photos.php:1099 msgid "Upload Photos" msgstr "Subir fotos" -#: mod/photos.php:1169 mod/photos.php:1244 +#: mod/photos.php:1103 mod/photos.php:1173 msgid "New album name: " msgstr "Nombre del nuevo álbum: " -#: mod/photos.php:1170 -msgid "or existing album name: " -msgstr "o nombre de un álbum existente: " +#: mod/photos.php:1104 +msgid "or select existing album:" +msgstr "" -#: mod/photos.php:1171 +#: mod/photos.php:1105 msgid "Do not show a status post for this upload" msgstr "No actualizar tu estado con este envío" -#: mod/photos.php:1182 mod/photos.php:1579 mod/settings.php:1294 +#: mod/photos.php:1121 mod/photos.php:1456 mod/settings.php:1212 msgid "Show to Groups" msgstr "Mostrar a los Grupos" -#: mod/photos.php:1183 mod/photos.php:1580 mod/settings.php:1295 +#: mod/photos.php:1122 mod/photos.php:1457 mod/settings.php:1213 msgid "Show to Contacts" msgstr "Mostrar a los Contactos" #: mod/photos.php:1184 -msgid "Private Photo" -msgstr "Foto Privada" - -#: mod/photos.php:1185 -msgid "Public Photo" -msgstr "Foto Pública" - -#: mod/photos.php:1255 msgid "Edit Album" msgstr "Modificar álbum" -#: mod/photos.php:1260 +#: mod/photos.php:1189 msgid "Show Newest First" msgstr "Mostrar más nuevos primero" -#: mod/photos.php:1262 +#: mod/photos.php:1191 msgid "Show Oldest First" msgstr "Mostrar más antiguos primero" -#: mod/photos.php:1291 mod/photos.php:1862 +#: mod/photos.php:1212 mod/photos.php:1691 msgid "View Photo" msgstr "Ver foto" -#: mod/photos.php:1336 +#: mod/photos.php:1253 msgid "Permission denied. Access to this item may be restricted." msgstr "Permiso denegado. El acceso a este elemento puede estar restringido." -#: mod/photos.php:1338 +#: mod/photos.php:1255 msgid "Photo not available" msgstr "Foto no disponible" -#: mod/photos.php:1399 +#: mod/photos.php:1330 msgid "View photo" msgstr "Ver foto" -#: mod/photos.php:1399 +#: mod/photos.php:1330 msgid "Edit photo" msgstr "Modificar foto" -#: mod/photos.php:1400 +#: mod/photos.php:1331 msgid "Use as profile photo" msgstr "Usar como foto del perfil" -#: mod/photos.php:1406 object/Item.php:127 +#: mod/photos.php:1337 src/Object/Post.php:150 msgid "Private Message" msgstr "Mensaje privado" -#: mod/photos.php:1425 +#: mod/photos.php:1357 msgid "View Full Size" msgstr "Ver a tamaño completo" -#: mod/photos.php:1515 +#: mod/photos.php:1421 msgid "Tags: " msgstr "Etiquetas: " -#: mod/photos.php:1518 -msgid "[Remove any tag]" -msgstr "[Borrar todas las etiquetas]" +#: mod/photos.php:1424 +msgid "[Select tags to remove]" +msgstr "" -#: mod/photos.php:1561 +#: mod/photos.php:1439 msgid "New album name" msgstr "Nuevo nombre del álbum" -#: mod/photos.php:1562 +#: mod/photos.php:1440 msgid "Caption" msgstr "Título" -#: mod/photos.php:1563 +#: mod/photos.php:1441 msgid "Add a Tag" msgstr "Añadir una etiqueta" -#: mod/photos.php:1563 +#: mod/photos.php:1441 msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Ejemplo: @juan, @Barbara_Ruiz, @julia@example.com, #California, #camping" -#: mod/photos.php:1564 +#: mod/photos.php:1442 msgid "Do not rotate" msgstr "No rotar" -#: mod/photos.php:1565 +#: mod/photos.php:1443 msgid "Rotate CW (right)" msgstr "Girar a la derecha" -#: mod/photos.php:1566 +#: mod/photos.php:1444 msgid "Rotate CCW (left)" msgstr "Girar a la izquierda" -#: mod/photos.php:1581 -msgid "Private photo" -msgstr "Foto privada" - -#: mod/photos.php:1582 -msgid "Public photo" -msgstr "Foto pública" - -#: mod/photos.php:1602 object/Item.php:280 +#: mod/photos.php:1478 src/Object/Post.php:305 msgid "I like this (toggle)" msgstr "Me gusta esto (cambiar)" -#: mod/photos.php:1603 object/Item.php:281 +#: mod/photos.php:1479 src/Object/Post.php:306 msgid "I don't like this (toggle)" msgstr "No me gusta esto (cambiar)" -#: mod/photos.php:1620 mod/photos.php:1662 mod/photos.php:1742 -#: object/Item.php:699 +#: mod/photos.php:1494 mod/photos.php:1533 mod/photos.php:1593 +#: src/Module/Contact.php:1019 src/Object/Post.php:805 msgid "This is you" msgstr "Este eres tú" -#: mod/photos.php:1622 mod/photos.php:1664 mod/photos.php:1744 -#: object/Item.php:386 object/Item.php:701 +#: mod/photos.php:1496 mod/photos.php:1535 mod/photos.php:1595 +#: src/Object/Post.php:410 src/Object/Post.php:807 msgid "Comment" msgstr "Comentar" -#: mod/photos.php:1791 +#: mod/photos.php:1625 msgid "Map" msgstr "Mapa" -#: mod/photos.php:1868 mod/videos.php:397 +#: mod/photos.php:1697 mod/videos.php:375 msgid "View Album" msgstr "Ver Álbum" -#: mod/ping.php:276 +#: mod/ping.php:272 msgid "{0} wants to be your friend" msgstr "{0} quiere ser tu amigo" -#: mod/ping.php:291 -msgid "{0} sent you a message" -msgstr "{0} te ha enviado un mensaje" - -#: mod/ping.php:306 +#: mod/ping.php:288 msgid "{0} requested registration" msgstr "{0} solicitudes de registro" -#: mod/poke.php:199 +#: mod/poke.php:185 msgid "Poke/Prod" msgstr "Toque/Empujón" -#: mod/poke.php:200 +#: mod/poke.php:186 msgid "poke, prod or do other things to somebody" msgstr "da un toque, empujón o similar a alguien" -#: mod/poke.php:201 +#: mod/poke.php:187 msgid "Recipient" msgstr "Receptor" -#: mod/poke.php:202 +#: mod/poke.php:188 msgid "Choose what you wish to do to recipient" msgstr "Elige qué desea hacer con el receptor" -#: mod/poke.php:205 +#: mod/poke.php:191 msgid "Make this post private" msgstr "Hacer esta publicación privada" -#: mod/profile_photo.php:46 -msgid "Image uploaded but image cropping failed." -msgstr "Imagen recibida, pero ha fallado al recortarla." +#: mod/probe.php:14 mod/webfinger.php:17 +msgid "Only logged in users are permitted to perform a probing." +msgstr "Sólo los usuarios registrados pueden realizar una exploración." -#: mod/profile_photo.php:79 mod/profile_photo.php:87 mod/profile_photo.php:95 -#: mod/profile_photo.php:324 +#: mod/profile.php:87 mod/profile.php:90 src/Protocol/OStatus.php:1287 #, php-format -msgid "Image size reduction [%s] failed." -msgstr "Ha fallado la reducción de las dimensiones de la imagen [%s]." +msgid "%s's timeline" +msgstr "" -#: mod/profile_photo.php:129 -msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." -msgstr "Recarga la página o limpia la caché del navegador si la foto nueva no aparece inmediatamente." +#: mod/profile.php:88 src/Protocol/OStatus.php:1291 +#, php-format +msgid "%s's posts" +msgstr "" -#: mod/profile_photo.php:138 -msgid "Unable to process image" -msgstr "Imposible procesar la imagen" +#: mod/profile.php:89 src/Protocol/OStatus.php:1294 +#, php-format +msgid "%s's comments" +msgstr "" -#: mod/profile_photo.php:255 -msgid "Upload File:" -msgstr "Subir archivo:" - -#: mod/profile_photo.php:256 -msgid "Select a profile:" -msgstr "Elige un perfil:" - -#: mod/profile_photo.php:258 -msgid "Upload" -msgstr "Subir" - -#: mod/profile_photo.php:261 -msgid "or" -msgstr "o" - -#: mod/profile_photo.php:261 -msgid "skip this step" -msgstr "saltar este paso" - -#: mod/profile_photo.php:261 -msgid "select a photo from your photo albums" -msgstr "elige una foto de tus álbumes" - -#: mod/profile_photo.php:275 -msgid "Crop Image" -msgstr "Recortar imagen" - -#: mod/profile_photo.php:276 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "Por favor, ajusta el recorte de la imagen para optimizarla." - -#: mod/profile_photo.php:278 -msgid "Done Editing" -msgstr "Editado" - -#: mod/profile_photo.php:314 -msgid "Image uploaded successfully." -msgstr "Imagen subida con éxito." - -#: mod/profiles.php:44 +#: mod/profiles.php:61 msgid "Profile deleted." msgstr "Perfil eliminado." -#: mod/profiles.php:60 mod/profiles.php:96 +#: mod/profiles.php:77 mod/profiles.php:113 msgid "Profile-" msgstr "Perfil-" -#: mod/profiles.php:79 mod/profiles.php:118 +#: mod/profiles.php:96 mod/profiles.php:135 msgid "New profile created." msgstr "Nuevo perfil creado." -#: mod/profiles.php:102 +#: mod/profiles.php:119 msgid "Profile unavailable to clone." msgstr "Imposible duplicar el perfil." -#: mod/profiles.php:192 +#: mod/profiles.php:207 msgid "Profile Name is required." msgstr "Se necesita un nombre de perfil." -#: mod/profiles.php:332 +#: mod/profiles.php:348 msgid "Marital Status" msgstr "Estado civil" -#: mod/profiles.php:336 +#: mod/profiles.php:352 msgid "Romantic Partner" msgstr "Pareja sentimental" -#: mod/profiles.php:348 +#: mod/profiles.php:364 msgid "Work/Employment" msgstr "Trabajo/estudios" -#: mod/profiles.php:351 +#: mod/profiles.php:367 msgid "Religion" msgstr "Religión" -#: mod/profiles.php:355 +#: mod/profiles.php:371 msgid "Political Views" msgstr "Preferencias políticas" -#: mod/profiles.php:359 +#: mod/profiles.php:375 msgid "Gender" msgstr "Género" -#: mod/profiles.php:363 +#: mod/profiles.php:379 msgid "Sexual Preference" msgstr "Orientación sexual" -#: mod/profiles.php:367 +#: mod/profiles.php:383 msgid "XMPP" msgstr "XMPP" -#: mod/profiles.php:371 +#: mod/profiles.php:387 msgid "Homepage" msgstr "Página de inicio" -#: mod/profiles.php:375 mod/profiles.php:694 +#: mod/profiles.php:391 mod/profiles.php:594 msgid "Interests" msgstr "Intereses" -#: mod/profiles.php:379 -msgid "Address" -msgstr "Dirección" - -#: mod/profiles.php:386 mod/profiles.php:690 +#: mod/profiles.php:402 mod/profiles.php:590 msgid "Location" msgstr "Ubicación" -#: mod/profiles.php:471 +#: mod/profiles.php:485 msgid "Profile updated." msgstr "Perfil actualizado." -#: mod/profiles.php:563 -msgid " and " -msgstr " y " - -#: mod/profiles.php:572 -msgid "public profile" -msgstr "perfil público" - -#: mod/profiles.php:575 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "%1$s cambió su %2$s a “%3$s”" - -#: mod/profiles.php:576 -#, php-format -msgid " - Visit %1$s's %2$s" -msgstr " - Visita %1$s's %2$s" - -#: mod/profiles.php:578 -#, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "%1$s tiene una actualización %2$s, cambiando %3$s." - -#: mod/profiles.php:636 +#: mod/profiles.php:539 msgid "Hide contacts and friends:" msgstr "Ocultar contactos y amigos" -#: mod/profiles.php:641 +#: mod/profiles.php:544 msgid "Hide your contact/friend list from viewers of this profile?" msgstr "¿Ocultar tu lista de contactos/amigos en este perfil?" -#: mod/profiles.php:666 +#: mod/profiles.php:564 msgid "Show more profile fields:" msgstr "Mostrar mas campos del perfil:" -#: mod/profiles.php:678 +#: mod/profiles.php:576 msgid "Profile Actions" msgstr "Acciones de perfil" -#: mod/profiles.php:679 +#: mod/profiles.php:577 msgid "Edit Profile Details" msgstr "Editar detalles de tu perfil" -#: mod/profiles.php:681 +#: mod/profiles.php:579 msgid "Change Profile Photo" msgstr "Cambiar imagen del Perfil" -#: mod/profiles.php:682 +#: mod/profiles.php:581 msgid "View this profile" msgstr "Ver este perfil" -#: mod/profiles.php:684 +#: mod/profiles.php:582 +msgid "View all profiles" +msgstr "" + +#: mod/profiles.php:583 mod/profiles.php:678 src/Model/Profile.php:413 +msgid "Edit visibility" +msgstr "Editar visibilidad" + +#: mod/profiles.php:584 msgid "Create a new profile using these settings" msgstr "¿Crear un nuevo perfil con esta configuración?" -#: mod/profiles.php:685 +#: mod/profiles.php:585 msgid "Clone this profile" msgstr "Clonar este perfil" -#: mod/profiles.php:686 +#: mod/profiles.php:586 msgid "Delete this profile" msgstr "Eliminar este perfil" -#: mod/profiles.php:688 +#: mod/profiles.php:588 msgid "Basic information" msgstr "Información básica" -#: mod/profiles.php:689 +#: mod/profiles.php:589 msgid "Profile picture" msgstr "Imagen del perfil" -#: mod/profiles.php:691 +#: mod/profiles.php:591 msgid "Preferences" msgstr "Preferencias" -#: mod/profiles.php:692 +#: mod/profiles.php:592 msgid "Status information" msgstr "Información del estatus" -#: mod/profiles.php:693 +#: mod/profiles.php:593 msgid "Additional information" msgstr "Información addicional" -#: mod/profiles.php:696 +#: mod/profiles.php:596 msgid "Relation" msgstr "Relación" -#: mod/profiles.php:700 +#: mod/profiles.php:597 src/Util/Temporal.php:80 src/Util/Temporal.php:82 +msgid "Miscellaneous" +msgstr "Varios" + +#: mod/profiles.php:600 msgid "Your Gender:" msgstr "Género:" -#: mod/profiles.php:701 +#: mod/profiles.php:601 msgid " Marital Status:" msgstr " Estado civil:" -#: mod/profiles.php:703 +#: mod/profiles.php:602 src/Model/Profile.php:796 +msgid "Sexual Preference:" +msgstr "Preferencia sexual:" + +#: mod/profiles.php:603 msgid "Example: fishing photography software" msgstr "Ejemplo: pesca fotografía software" -#: mod/profiles.php:708 +#: mod/profiles.php:608 msgid "Profile Name:" msgstr "Nombres del perfil:" -#: mod/profiles.php:710 +#: mod/profiles.php:610 msgid "" "This is your public profile.
It may " "be visible to anybody using the internet." msgstr "Éste es tu perfil público.
Puede ser visto por cualquier usuario de internet." -#: mod/profiles.php:711 +#: mod/profiles.php:611 msgid "Your Full Name:" msgstr "Tu nombre completo:" -#: mod/profiles.php:712 +#: mod/profiles.php:612 msgid "Title/Description:" msgstr "Título/Descrición:" -#: mod/profiles.php:715 +#: mod/profiles.php:615 msgid "Street Address:" msgstr "Dirección" -#: mod/profiles.php:716 +#: mod/profiles.php:616 msgid "Locality/City:" msgstr "Localidad/Ciudad:" -#: mod/profiles.php:717 +#: mod/profiles.php:617 msgid "Region/State:" msgstr "Región/Estado:" -#: mod/profiles.php:718 +#: mod/profiles.php:618 msgid "Postal/Zip Code:" msgstr "Código postal:" -#: mod/profiles.php:719 +#: mod/profiles.php:619 msgid "Country:" msgstr "País" -#: mod/profiles.php:723 +#: mod/profiles.php:620 src/Util/Temporal.php:148 +msgid "Age: " +msgstr "Edad: " + +#: mod/profiles.php:623 msgid "Who: (if applicable)" msgstr "¿Quién? (si es aplicable)" -#: mod/profiles.php:723 +#: mod/profiles.php:623 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "Ejemplos: cathy123, Cathy Williams, cathy@example.com" -#: mod/profiles.php:724 +#: mod/profiles.php:624 msgid "Since [date]:" msgstr "Desde [fecha]:" -#: mod/profiles.php:726 +#: mod/profiles.php:626 msgid "Tell us about yourself..." msgstr "Háblanos sobre ti..." -#: mod/profiles.php:727 +#: mod/profiles.php:627 msgid "XMPP (Jabber) address:" msgstr "Dirección XMPP (Jabber):" -#: mod/profiles.php:727 +#: mod/profiles.php:627 msgid "" "The XMPP address will be propagated to your contacts so that they can follow" " you." msgstr "La dirección XMPP será propagada entre sus contactos para que puedan seguirle." -#: mod/profiles.php:728 +#: mod/profiles.php:628 msgid "Homepage URL:" msgstr "Dirección de tu página:" -#: mod/profiles.php:731 +#: mod/profiles.php:629 src/Model/Profile.php:804 +msgid "Hometown:" +msgstr "Ciudad de origen:" + +#: mod/profiles.php:630 src/Model/Profile.php:812 +msgid "Political Views:" +msgstr "Ideas políticas:" + +#: mod/profiles.php:631 msgid "Religious Views:" msgstr "Creencias religiosas:" -#: mod/profiles.php:732 +#: mod/profiles.php:632 msgid "Public Keywords:" msgstr "Palabras clave públicas:" -#: mod/profiles.php:732 +#: mod/profiles.php:632 msgid "(Used for suggesting potential friends, can be seen by others)" msgstr "(Utilizadas para sugerir amigos potenciales, otros pueden verlo)" -#: mod/profiles.php:733 +#: mod/profiles.php:633 msgid "Private Keywords:" msgstr "Palabras clave privadas:" -#: mod/profiles.php:733 +#: mod/profiles.php:633 msgid "(Used for searching profiles, never shown to others)" msgstr "(Utilizadas para buscar perfiles, nunca se muestra a otros)" -#: mod/profiles.php:736 +#: mod/profiles.php:634 src/Model/Profile.php:828 +msgid "Likes:" +msgstr "Me gusta:" + +#: mod/profiles.php:635 src/Model/Profile.php:832 +msgid "Dislikes:" +msgstr "No me gusta:" + +#: mod/profiles.php:636 msgid "Musical interests" msgstr "Gustos musicales" -#: mod/profiles.php:737 +#: mod/profiles.php:637 msgid "Books, literature" msgstr "Libros, literatura" -#: mod/profiles.php:738 +#: mod/profiles.php:638 msgid "Television" msgstr "Televisión" -#: mod/profiles.php:739 +#: mod/profiles.php:639 msgid "Film/dance/culture/entertainment" msgstr "Películas/baile/cultura/entretenimiento" -#: mod/profiles.php:740 +#: mod/profiles.php:640 msgid "Hobbies/Interests" msgstr "Aficiones/Intereses" -#: mod/profiles.php:741 +#: mod/profiles.php:641 msgid "Love/romance" msgstr "Amor/Romance" -#: mod/profiles.php:742 +#: mod/profiles.php:642 msgid "Work/employment" msgstr "Trabajo/ocupación" -#: mod/profiles.php:743 +#: mod/profiles.php:643 msgid "School/education" msgstr "Escuela/estudios" -#: mod/profiles.php:744 +#: mod/profiles.php:644 msgid "Contact information and Social Networks" msgstr "Informacioń de contacto y Redes sociales" -#: mod/profiles.php:785 +#: mod/profiles.php:675 src/Model/Profile.php:409 +msgid "Profile Image" +msgstr "Imagen del Perfil" + +#: mod/profiles.php:677 src/Model/Profile.php:412 +msgid "visible to everybody" +msgstr "Visible para todos" + +#: mod/profiles.php:684 msgid "Edit/Manage Profiles" msgstr "Editar/Administrar perfiles" -#: mod/register.php:98 +#: mod/profiles.php:685 src/Model/Profile.php:399 src/Model/Profile.php:421 +msgid "Change profile photo" +msgstr "Cambiar foto del perfil" + +#: mod/profiles.php:686 src/Model/Profile.php:400 +msgid "Create New Profile" +msgstr "Crear nuevo perfil" + +#: mod/profile_photo.php:59 +msgid "Image uploaded but image cropping failed." +msgstr "Imagen recibida, pero ha fallado al recortarla." + +#: mod/profile_photo.php:91 mod/profile_photo.php:100 +#: mod/profile_photo.php:109 mod/profile_photo.php:317 +#, php-format +msgid "Image size reduction [%s] failed." +msgstr "Ha fallado la reducción de las dimensiones de la imagen [%s]." + +#: mod/profile_photo.php:128 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." +msgstr "Recarga la página o limpia la caché del navegador si la foto nueva no aparece inmediatamente." + +#: mod/profile_photo.php:136 +msgid "Unable to process image" +msgstr "Imposible procesar la imagen" + +#: mod/profile_photo.php:248 +msgid "Upload File:" +msgstr "Subir archivo:" + +#: mod/profile_photo.php:249 +msgid "Select a profile:" +msgstr "Elige un perfil:" + +#: mod/profile_photo.php:254 +msgid "or" +msgstr "o" + +#: mod/profile_photo.php:255 +msgid "skip this step" +msgstr "saltar este paso" + +#: mod/profile_photo.php:255 +msgid "select a photo from your photo albums" +msgstr "elige una foto de tus álbumes" + +#: mod/profile_photo.php:268 +msgid "Crop Image" +msgstr "Recortar imagen" + +#: mod/profile_photo.php:269 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Por favor, ajusta el recorte de la imagen para optimizarla." + +#: mod/profile_photo.php:271 +msgid "Done Editing" +msgstr "Editado" + +#: mod/profile_photo.php:307 +msgid "Image uploaded successfully." +msgstr "Imagen subida con éxito." + +#: mod/profperm.php:36 mod/profperm.php:69 +msgid "Invalid profile identifier." +msgstr "Identificador de perfil no válido." + +#: mod/profperm.php:115 +msgid "Profile Visibility Editor" +msgstr "Editor de visibilidad del perfil" + +#: mod/profperm.php:128 +msgid "Visible To" +msgstr "Visible para" + +#: mod/profperm.php:144 +msgid "All Contacts (with secure profile access)" +msgstr "Todos los contactos (con perfil de acceso seguro)" + +#: mod/register.php:103 msgid "" "Registration successful. Please check your email for further instructions." msgstr "Te has registrado con éxito. Por favor, consulta tu correo para más información." -#: mod/register.php:103 +#: mod/register.php:107 #, php-format msgid "" "Failed to send email message. Here your accout details:
login: %s
" "password: %s

You can change your password after login." msgstr "Error al intentar de enviar mensaje de correo. Aquí los detalles de su cuenta:
login: %s
contraseña: %s

Puede cambiar su contraseña después de ingresar al sitio." -#: mod/register.php:110 +#: mod/register.php:114 msgid "Registration successful." msgstr "Registro exitoso." -#: mod/register.php:116 +#: mod/register.php:119 msgid "Your registration can not be processed." msgstr "Tu registro no se puede procesar." -#: mod/register.php:165 +#: mod/register.php:162 msgid "Your registration is pending approval by the site owner." msgstr "Tu registro está pendiente de aprobación por el propietario del sitio." -#: mod/register.php:231 +#: mod/register.php:191 mod/uimport.php:39 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Este sitio ha excedido el número de registros diarios permitidos. Inténtalo de nuevo mañana por favor." + +#: mod/register.php:218 msgid "" "You may (optionally) fill in this form via OpenID by supplying your OpenID " "and clicking 'Register'." msgstr "Puedes (opcionalmente) rellenar este formulario a través de OpenID escribiendo tu OpenID y pulsando en \"Registrar\"." -#: mod/register.php:232 +#: mod/register.php:219 msgid "" "If you are not familiar with OpenID, please leave that field blank and fill " "in the rest of the items." msgstr "Si no estás familiarizado con OpenID, por favor deja ese campo en blanco y rellena el resto de los elementos." -#: mod/register.php:233 +#: mod/register.php:220 msgid "Your OpenID (optional): " msgstr "Tu OpenID (opcional):" -#: mod/register.php:247 +#: mod/register.php:229 msgid "Include your profile in member directory?" msgstr "¿Incluir tu perfil en el directorio de miembros?" -#: mod/register.php:272 +#: mod/register.php:253 msgid "Note for the admin" msgstr "Nota para el administrador" -#: mod/register.php:272 +#: mod/register.php:253 msgid "Leave a message for the admin, why you want to join this node" msgstr "Deje un mensaje para el administrador sobre por qué quiere unirse a este nodo" -#: mod/register.php:273 +#: mod/register.php:254 msgid "Membership on this site is by invitation only." msgstr "Sitio solo accesible mediante invitación." -#: mod/register.php:274 -msgid "Your invitation ID: " -msgstr "ID de tu invitación: " +#: mod/register.php:255 +msgid "Your invitation code: " +msgstr "" -#: mod/register.php:285 +#: mod/register.php:263 msgid "Your Full Name (e.g. Joe Smith, real or real-looking): " msgstr "Nombre completo (ej. Joe Smith, real o real aparente):" -#: mod/register.php:286 -msgid "Your Email Address: " -msgstr "Tu dirección de correo: " +#: mod/register.php:264 +msgid "" +"Your Email Address: (Initial information will be send there, so this has to " +"be an existing address.)" +msgstr "" -#: mod/register.php:288 mod/settings.php:1265 +#: mod/register.php:266 mod/settings.php:1184 msgid "New Password:" msgstr "Contraseña nueva:" -#: mod/register.php:288 +#: mod/register.php:266 msgid "Leave empty for an auto generated password." msgstr "Dejar vacío para autogenerar una contraseña" -#: mod/register.php:289 mod/settings.php:1266 +#: mod/register.php:267 mod/settings.php:1185 msgid "Confirm:" msgstr "Confirmar:" -#: mod/register.php:290 +#: mod/register.php:268 +#, php-format msgid "" "Choose a profile nickname. This must begin with a text character. Your " -"profile address on this site will then be " -"'nickname@$sitename'." -msgstr "Elije un apodo. Debe comenzar con una letra. Tu dirección de perfil en este sitio va a ser \"apodo@$nombredelsitio\"." +"profile address on this site will then be 'nickname@%s'." +msgstr "" -#: mod/register.php:291 +#: mod/register.php:269 msgid "Choose a nickname: " msgstr "Escoge un apodo: " -#: mod/register.php:301 +#: mod/register.php:272 src/Content/Nav.php:178 src/Module/Login.php:290 +msgid "Register" +msgstr "Registrarse" + +#: mod/register.php:277 mod/uimport.php:54 +msgid "Import" +msgstr "Importar" + +#: mod/register.php:278 msgid "Import your profile to this friendica instance" msgstr "Importar tu perfil a esta instancia de friendica" -#: mod/regmod.php:62 +#: mod/register.php:286 +msgid "Note: This node explicitly contains adult content" +msgstr "" + +#: mod/regmod.php:53 msgid "Account approved." msgstr "Cuenta aprobada." -#: mod/regmod.php:90 +#: mod/regmod.php:77 #, php-format msgid "Registration revoked for %s" msgstr "Registro anulado para %s" -#: mod/regmod.php:102 +#: mod/regmod.php:84 msgid "Please login." msgstr "Por favor accede." -#: mod/settings.php:60 +#: mod/removeme.php:47 +msgid "User deleted their account" +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." +msgstr "" + +#: mod/removeme.php:49 +#, php-format +msgid "The user id is %d" +msgstr "" + +#: mod/removeme.php:85 mod/removeme.php:88 +msgid "Remove My Account" +msgstr "Eliminar mi cuenta" + +#: mod/removeme.php:86 +msgid "" +"This will completely remove your account. Once this has been done it is not " +"recoverable." +msgstr "Esto eliminará por completo tu cuenta. Una vez hecho no se puede deshacer." + +#: mod/removeme.php:87 +msgid "Please enter your password for verification:" +msgstr "Por favor, introduce tu contraseña para la verificación:" + +#: mod/repair_ostatus.php:21 +msgid "Resubscribing to OStatus contacts" +msgstr "Resubscribir a contactos de OStatus" + +#: mod/repair_ostatus.php:37 +msgid "Error" +msgstr "error" + +#: mod/search.php:104 +msgid "Only logged in users are permitted to perform a search." +msgstr "Solo usuarios activos tienen permiso para ejecutar búsquedas." + +#: mod/search.php:128 +msgid "Too Many Requests" +msgstr "Demasiadas consultas" + +#: mod/search.php:129 +msgid "Only one search per minute is permitted for not logged in users." +msgstr "Se permite solo una búsqueda por minuto para usuarios no identificados." + +#: mod/search.php:150 src/Content/Nav.php:192 src/Content/Text/HTML.php:969 +msgid "Search" +msgstr "Buscar" + +#: mod/search.php:236 +#, php-format +msgid "Items tagged with: %s" +msgstr "Objetos taggeado con: %s" + +#: mod/search.php:238 src/Module/Contact.php:817 +#, php-format +msgid "Results for: %s" +msgstr "Resultados para: %s" + +#: mod/settings.php:61 +msgid "Account" +msgstr "Cuenta" + +#: mod/settings.php:69 src/Content/Nav.php:260 src/Model/Profile.php:392 +msgid "Profiles" +msgstr "Perfiles" + +#: mod/settings.php:85 msgid "Display" msgstr "Interfaz del usuario" -#: mod/settings.php:67 mod/settings.php:895 +#: mod/settings.php:92 mod/settings.php:833 msgid "Social Networks" msgstr "Redes sociales" -#: mod/settings.php:88 +#: mod/settings.php:106 src/Content/Nav.php:255 +msgid "Delegations" +msgstr "Delegaciones" + +#: mod/settings.php:113 msgid "Connected apps" msgstr "Aplicaciones conectadas" -#: mod/settings.php:102 +#: mod/settings.php:120 mod/uexport.php:53 +msgid "Export personal data" +msgstr "Exportación de datos personales" + +#: mod/settings.php:127 msgid "Remove account" msgstr "Eliminar cuenta" -#: mod/settings.php:157 +#: mod/settings.php:179 msgid "Missing some important data!" msgstr "¡Faltan algunos datos importantes!" -#: mod/settings.php:267 +#: mod/settings.php:181 mod/settings.php:694 src/Module/Contact.php:824 +msgid "Update" +msgstr "Actualizar" + +#: mod/settings.php:290 msgid "Failed to connect with email account using the settings provided." msgstr "Error al conectar con la cuenta de correo mediante la configuración suministrada." -#: mod/settings.php:272 +#: mod/settings.php:295 msgid "Email settings updated." msgstr "Configuración de correo actualizada." -#: mod/settings.php:288 +#: mod/settings.php:311 msgid "Features updated" msgstr "Actualizaciones" -#: mod/settings.php:359 +#: mod/settings.php:384 msgid "Relocate message has been send to your contacts" msgstr "Mensaje de reubicación ha sido enviado a sus contactos." -#: mod/settings.php:378 -msgid "Empty passwords are not allowed. Password unchanged." -msgstr "No se permiten contraseñas vacías. La contraseña no ha sido modificada." +#: mod/settings.php:396 +msgid "Passwords do not match." +msgstr "" -#: mod/settings.php:386 -msgid "Wrong password." -msgstr "Contraseña incorrecta" - -#: mod/settings.php:397 -msgid "Password changed." -msgstr "Contraseña modificada." - -#: mod/settings.php:399 +#: mod/settings.php:404 src/Core/Console/NewPassword.php:80 msgid "Password update failed. Please try again." msgstr "La actualización de la contraseña ha fallado. Por favor, prueba otra vez." -#: mod/settings.php:489 +#: mod/settings.php:407 src/Core/Console/NewPassword.php:83 +msgid "Password changed." +msgstr "Contraseña modificada." + +#: mod/settings.php:410 +msgid "Password unchanged." +msgstr "" + +#: mod/settings.php:493 msgid " Please use a shorter name." msgstr " Usa un nombre más corto." -#: mod/settings.php:492 +#: mod/settings.php:496 msgid " Name too short." msgstr " Nombre demasiado corto." -#: mod/settings.php:502 +#: mod/settings.php:504 msgid "Wrong Password" msgstr "Contraseña incorrecta" -#: mod/settings.php:507 -msgid " Not valid email." -msgstr " Correo no válido." +#: mod/settings.php:509 +msgid "Invalid email." +msgstr "" -#: mod/settings.php:514 -msgid " Cannot change to that email." -msgstr " No se puede usar ese correo." +#: mod/settings.php:515 +msgid "Cannot change to that email." +msgstr "" -#: mod/settings.php:570 +#: mod/settings.php:565 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "El foro privado no tiene permisos de privacidad. Usando el grupo de privacidad por defecto." -#: mod/settings.php:573 +#: mod/settings.php:568 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "El foro privado no tiene permisos de privacidad ni grupo por defecto de privacidad." -#: mod/settings.php:613 +#: mod/settings.php:608 msgid "Settings updated." msgstr "Configuración actualizada." -#: mod/settings.php:690 mod/settings.php:716 mod/settings.php:752 +#: mod/settings.php:667 mod/settings.php:693 mod/settings.php:727 msgid "Add application" msgstr "Agregar aplicación" -#: mod/settings.php:694 mod/settings.php:720 +#: mod/settings.php:671 mod/settings.php:697 msgid "Consumer Key" msgstr "Clave del consumidor" -#: mod/settings.php:695 mod/settings.php:721 +#: mod/settings.php:672 mod/settings.php:698 msgid "Consumer Secret" msgstr "Secreto del consumidor" -#: mod/settings.php:696 mod/settings.php:722 +#: mod/settings.php:673 mod/settings.php:699 msgid "Redirect" msgstr "Redirigir" -#: mod/settings.php:697 mod/settings.php:723 +#: mod/settings.php:674 mod/settings.php:700 msgid "Icon url" msgstr "Dirección del ícono" -#: mod/settings.php:708 +#: mod/settings.php:685 msgid "You can't edit this application." msgstr "No puedes editar esta aplicación." -#: mod/settings.php:751 +#: mod/settings.php:726 msgid "Connected Apps" msgstr "Aplicaciones conectadas" -#: mod/settings.php:753 object/Item.php:132 object/Item.php:134 +#: mod/settings.php:728 src/Object/Post.php:160 src/Object/Post.php:162 msgid "Edit" msgstr "Editar" -#: mod/settings.php:755 +#: mod/settings.php:730 msgid "Client key starts with" msgstr "Clave de cliente comienza por" -#: mod/settings.php:756 +#: mod/settings.php:731 msgid "No name" msgstr "Sin nombre" -#: mod/settings.php:757 +#: mod/settings.php:732 msgid "Remove authorization" msgstr "Suprimir la autorización" -#: mod/settings.php:769 -msgid "No Plugin settings configured" -msgstr "No se ha configurado ningún módulo" +#: mod/settings.php:743 +msgid "No Addon settings configured" +msgstr "" -#: mod/settings.php:778 -msgid "Plugin Settings" -msgstr "Configuración de los módulos" +#: mod/settings.php:752 +msgid "Addon Settings" +msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:773 msgid "Additional Features" msgstr "Características adicionales" -#: mod/settings.php:810 mod/settings.php:814 +#: mod/settings.php:796 src/Content/ContactSelector.php:85 +msgid "Diaspora" +msgstr "Diaspora*" + +#: mod/settings.php:796 mod/settings.php:797 +msgid "enabled" +msgstr "habilitado" + +#: mod/settings.php:796 mod/settings.php:797 +msgid "disabled" +msgstr "deshabilitado" + +#: mod/settings.php:796 mod/settings.php:797 +#, php-format +msgid "Built-in support for %s connectivity is %s" +msgstr "El soporte integrado de conexión con %s está %s" + +#: mod/settings.php:797 +msgid "GNU Social (OStatus)" +msgstr "GNUsocial (OStatus)" + +#: mod/settings.php:828 +msgid "Email access is disabled on this site." +msgstr "El acceso por correo está deshabilitado en esta web." + +#: mod/settings.php:838 msgid "General Social Media Settings" msgstr "Configuración general de social media " -#: mod/settings.php:820 +#: mod/settings.php:839 +msgid "Disable Content Warning" +msgstr "" + +#: mod/settings.php:839 +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." +msgstr "" + +#: mod/settings.php:840 msgid "Disable intelligent shortening" msgstr "Deshabilitar recorte inteligente de URL" -#: mod/settings.php:822 +#: mod/settings.php:840 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If this option is enabled then every shortened post will always point to the" " original friendica post." msgstr "Normalemente el sistema intenta de encontrara el mejor enlace para agregar a envíos recortados (twitter, OStatus). Si esta opción se encuentra habilitado, todo envío recortado apuntara siempre al tema original en friendica." -#: mod/settings.php:828 +#: mod/settings.php:841 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" msgstr "Automáticamente seguir cualquier GNUsocial (OStatus) seguidores o menciones " -#: mod/settings.php:830 +#: mod/settings.php:841 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 "Cuando se recibe un mensaje de un perfil desconocido de OStatus, esta opción define que hacer.\nSi es habilitado, un nuevo contacto sera creado para cada usuario." -#: mod/settings.php:836 +#: mod/settings.php:842 msgid "Default group for OStatus contacts" msgstr "Grupo por defecto para contactos OStatus" -#: mod/settings.php:844 +#: mod/settings.php:843 msgid "Your legacy GNU Social account" msgstr "Tu cuenta GNU social conectada" -#: mod/settings.php:846 +#: mod/settings.php:843 msgid "" "If you enter your old GNU Social/Statusnet account name here (in the format " "user@domain.tld), your contacts will be added automatically. The field will " "be emptied when done." msgstr "Si agrega su viejo nombre de perfil GNUsocial/Statusnet aqui (en el formato de usuario@dominio.tld), sus contactos serán añadidos automáticamente.\nEl campo sera vaciado cuando termine el proceso. " -#: mod/settings.php:849 +#: mod/settings.php:846 msgid "Repair OStatus subscriptions" msgstr "Reparar subscripciones de OStatus" -#: mod/settings.php:858 mod/settings.php:859 -#, php-format -msgid "Built-in support for %s connectivity is %s" -msgstr "El soporte integrado de conexión con %s está %s" - -#: mod/settings.php:858 mod/settings.php:859 -msgid "enabled" -msgstr "habilitado" - -#: mod/settings.php:858 mod/settings.php:859 -msgid "disabled" -msgstr "deshabilitado" - -#: mod/settings.php:859 -msgid "GNU Social (OStatus)" -msgstr "GNUsocial (OStatus)" - -#: mod/settings.php:890 -msgid "Email access is disabled on this site." -msgstr "El acceso por correo está deshabilitado en esta web." - -#: mod/settings.php:900 +#: mod/settings.php:850 msgid "Email/Mailbox Setup" msgstr "Configuración del correo/buzón" -#: mod/settings.php:901 +#: mod/settings.php:851 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "Si quieres comunicarte con tus contactos de correo usando este servicio (opcional), por favor, especifica cómo conectar con tu buzón." -#: mod/settings.php:902 +#: mod/settings.php:852 msgid "Last successful email check:" msgstr "Última comprobación del correo con éxito:" -#: mod/settings.php:904 +#: mod/settings.php:854 msgid "IMAP server name:" msgstr "Nombre del servidor IMAP:" -#: mod/settings.php:905 +#: mod/settings.php:855 msgid "IMAP port:" msgstr "Puerto IMAP:" -#: mod/settings.php:906 +#: mod/settings.php:856 msgid "Security:" msgstr "Seguridad:" -#: mod/settings.php:906 mod/settings.php:911 +#: mod/settings.php:856 mod/settings.php:861 msgid "None" msgstr "Ninguna" -#: mod/settings.php:907 +#: mod/settings.php:857 msgid "Email login name:" msgstr "Nombre de usuario:" -#: mod/settings.php:908 +#: mod/settings.php:858 msgid "Email password:" msgstr "Contraseña:" -#: mod/settings.php:909 +#: mod/settings.php:859 msgid "Reply-to address:" msgstr "Dirección de respuesta:" -#: mod/settings.php:910 +#: mod/settings.php:860 msgid "Send public posts to all email contacts:" msgstr "Enviar publicaciones públicas a todos los contactos de correo:" -#: mod/settings.php:911 +#: mod/settings.php:861 msgid "Action after import:" msgstr "Acción después de importar:" -#: mod/settings.php:911 +#: mod/settings.php:861 src/Content/Nav.php:243 +msgid "Mark as seen" +msgstr "Marcar como leído" + +#: mod/settings.php:861 msgid "Move to folder" msgstr "Mover a un directorio" -#: mod/settings.php:912 +#: mod/settings.php:862 msgid "Move to folder:" msgstr "Mover al directorio:" -#: mod/settings.php:1008 +#: mod/settings.php:905 +#, php-format +msgid "%s - (Unsupported)" +msgstr "" + +#: mod/settings.php:907 +#, php-format +msgid "%s - (Experimental)" +msgstr "" + +#: mod/settings.php:934 src/Core/L10n.php:356 src/Model/Event.php:392 +msgid "Sunday" +msgstr "Domingo" + +#: mod/settings.php:934 src/Core/L10n.php:356 src/Model/Event.php:393 +msgid "Monday" +msgstr "Lunes" + +#: mod/settings.php:950 msgid "Display Settings" msgstr "Configuración Tema/Visualización" -#: mod/settings.php:1014 mod/settings.php:1037 +#: mod/settings.php:956 msgid "Display Theme:" msgstr "Utilizar tema:" -#: mod/settings.php:1015 +#: mod/settings.php:957 msgid "Mobile Theme:" msgstr "Tema móvil:" -#: mod/settings.php:1016 +#: mod/settings.php:958 msgid "Suppress warning of insecure networks" msgstr "Suprimir el aviso de redes inseguras" -#: mod/settings.php:1016 +#: mod/settings.php:958 msgid "" "Should the system suppress the warning that the current group contains " "members of networks that can't receive non public postings." msgstr "Debería el sistema suprimir el aviso de que el grupo actual contiene miembros de redes que no pueden recibir publicaciones públicas." -#: mod/settings.php:1017 +#: mod/settings.php:959 msgid "Update browser every xx seconds" msgstr "Actualizar navegador cada xx segundos" -#: mod/settings.php:1017 +#: mod/settings.php:959 msgid "Minimum of 10 seconds. Enter -1 to disable it." msgstr "Minimo 10 segundos. Ingrese -1 para deshabilitar." -#: mod/settings.php:1018 +#: mod/settings.php:960 msgid "Number of items to display per page:" msgstr "Número de elementos a mostrar por página:" -#: mod/settings.php:1018 mod/settings.php:1019 +#: mod/settings.php:960 mod/settings.php:961 msgid "Maximum of 100 items" msgstr "Máximo 100 elementos" -#: mod/settings.php:1019 +#: mod/settings.php:961 msgid "Number of items to display per page when viewed from mobile device:" msgstr "Cantidad de objetos a visualizar cuando se usa un movil" -#: mod/settings.php:1020 +#: mod/settings.php:962 msgid "Don't show emoticons" msgstr "No mostrar emoticones" -#: mod/settings.php:1021 +#: mod/settings.php:963 msgid "Calendar" msgstr "Calendario" -#: mod/settings.php:1022 +#: mod/settings.php:964 msgid "Beginning of week:" msgstr "Principio de la semana:" -#: mod/settings.php:1023 +#: mod/settings.php:965 msgid "Don't show notices" msgstr "No mostrara avisos" -#: mod/settings.php:1024 +#: mod/settings.php:966 msgid "Infinite scroll" msgstr "pagina infinita (sroll)" -#: mod/settings.php:1025 +#: mod/settings.php:967 msgid "Automatic updates only at the top of the network page" msgstr "Actualizaciones automaticas solo estando al principio de la pagina" -#: mod/settings.php:1025 +#: mod/settings.php:967 msgid "" "When disabled, the network page is updated all the time, which could be " "confusing while reading." msgstr "Cuando está deshabilitada, la página de red se actualiza constantemente, lo que podría ser confuso al leer." -#: mod/settings.php:1026 -msgid "Bandwith Saver Mode" -msgstr "Modo de guardado de ancho de banda" +#: mod/settings.php:968 +msgid "Bandwidth Saver Mode" +msgstr "" -#: mod/settings.php:1026 +#: mod/settings.php:968 msgid "" "When enabled, embedded content is not displayed on automatic updates, they " "only show on page reload." msgstr "Cuando está habilitado, el contenido incrustado no se muestra en las actualizaciones automáticas, sólo en las páginas recargadas." -#: mod/settings.php:1028 +#: mod/settings.php:969 +msgid "Smart Threading" +msgstr "" + +#: mod/settings.php:969 +msgid "" +"When enabled, suppress extraneous thread indentation while keeping it where " +"it matters. Only works if threading is available and enabled." +msgstr "" + +#: mod/settings.php:971 msgid "General Theme Settings" msgstr "Ajustes generales de tema" -#: mod/settings.php:1029 +#: mod/settings.php:972 msgid "Custom Theme Settings" msgstr "Ajustes personalizados de tema" -#: mod/settings.php:1030 +#: mod/settings.php:973 msgid "Content Settings" msgstr "Ajustes de contenido" -#: mod/settings.php:1031 view/theme/duepuntozero/config.php:67 -#: view/theme/frio/config.php:110 view/theme/quattro/config.php:73 -#: view/theme/vier/config.php:116 +#: mod/settings.php:974 view/theme/duepuntozero/config.php:74 +#: view/theme/frio/config.php:121 view/theme/quattro/config.php:76 +#: view/theme/vier/config.php:122 msgid "Theme settings" msgstr "Configuración del Tema" -#: mod/settings.php:1097 +#: mod/settings.php:988 +msgid "Unable to find your profile. Please contact your admin." +msgstr "" + +#: mod/settings.php:1027 msgid "Account Types" msgstr "Tipos de cuenta" -#: mod/settings.php:1098 +#: mod/settings.php:1028 msgid "Personal Page Subtypes" msgstr "Subtipos de página personal" -#: mod/settings.php:1099 +#: mod/settings.php:1029 msgid "Community Forum Subtypes" msgstr "Subtipos de foro de comunidad" -#: mod/settings.php:1106 -msgid "Personal Page" -msgstr "Página personal" - -#: mod/settings.php:1107 +#: mod/settings.php:1037 msgid "Account for a personal profile." msgstr "Cuenta para un perfil personal." -#: mod/settings.php:1110 -msgid "Organisation Page" -msgstr "Página de organización" - -#: mod/settings.php:1111 +#: mod/settings.php:1041 msgid "" "Account for an organisation that automatically approves contact requests as " "\"Followers\"." msgstr "Cuenta para una organización que aprueba automáticamente las solicitudes de contacto como «Seguidores»." -#: mod/settings.php:1114 -msgid "News Page" -msgstr "Página de noticias" - -#: mod/settings.php:1115 +#: mod/settings.php:1045 msgid "" "Account for a news reflector that automatically approves contact requests as" " \"Followers\"." msgstr "Cuenta para un reflector de noticias que aprueba automáticamente las solicitudes de contacto como «Seguidores»." -#: mod/settings.php:1118 -msgid "Community Forum" -msgstr "Foro de la comunidad" - -#: mod/settings.php:1119 +#: mod/settings.php:1049 msgid "Account for community discussions." msgstr "Cuenta para discusiones de la comunidad." -#: mod/settings.php:1122 -msgid "Normal Account Page" -msgstr "Página de cuenta normal" - -#: mod/settings.php:1123 +#: mod/settings.php:1053 msgid "" "Account for a regular personal profile that requires manual approval of " "\"Friends\" and \"Followers\"." msgstr "Cuenta para un perfil personal regular que requiere aprobación manual de «Amigos» y «Seguidores»." -#: mod/settings.php:1126 -msgid "Soapbox Page" -msgstr "Página de tribuna" - -#: mod/settings.php:1127 +#: mod/settings.php:1057 msgid "" "Account for a public profile that automatically approves contact requests as" " \"Followers\"." msgstr "Cuenta para un perfil público que aprueba automáticamente las solicitudes de contacto como «Seguidores»." -#: mod/settings.php:1130 -msgid "Public Forum" -msgstr "Foro público" - -#: mod/settings.php:1131 +#: mod/settings.php:1061 msgid "Automatically approves all contact requests." msgstr "Aprueba automáticamente todas las solicitudes de contacto." -#: mod/settings.php:1134 -msgid "Automatic Friend Page" -msgstr "Página de Amistad autómatica" - -#: mod/settings.php:1135 +#: mod/settings.php:1065 msgid "" "Account for a popular profile that automatically approves contact requests " "as \"Friends\"." msgstr "Cuenta para un perfil popular que aprueba automáticamente las solicitudes de contacto como «Friends»." -#: mod/settings.php:1138 +#: mod/settings.php:1068 msgid "Private Forum [Experimental]" msgstr "Foro privado [Experimental]" -#: mod/settings.php:1139 +#: mod/settings.php:1069 msgid "Requires manual approval of contact requests." msgstr "Requiere aprobación manual de solicitudes de contacto." -#: mod/settings.php:1150 +#: mod/settings.php:1080 msgid "OpenID:" msgstr "OpenID:" -#: mod/settings.php:1150 +#: mod/settings.php:1080 msgid "(Optional) Allow this OpenID to login to this account." msgstr "(Opcional) Permitir a este OpenID acceder a esta cuenta." -#: mod/settings.php:1158 +#: mod/settings.php:1088 msgid "Publish your default profile in your local site directory?" msgstr "¿Quieres publicar tu perfil predeterminado en el directorio local del sitio?" -#: mod/settings.php:1158 -msgid "Your profile may be visible in public." -msgstr "Su perfil puede ser visible en público." +#: mod/settings.php:1088 +#, php-format +msgid "" +"Your profile will be published in this node's local " +"directory. Your profile details may be publicly visible depending on the" +" system settings." +msgstr "" -#: mod/settings.php:1164 +#: mod/settings.php:1094 msgid "Publish your default profile in the global social directory?" msgstr "¿Quieres publicar tu perfil predeterminado en el directorio social de forma global?" -#: mod/settings.php:1171 +#: mod/settings.php:1094 +#, php-format +msgid "" +"Your profile will be published in the global friendica directories (e.g. %s). Your profile will be visible in public." +msgstr "" + +#: mod/settings.php:1101 msgid "Hide your contact/friend list from viewers of your default profile?" msgstr "¿Quieres ocultar tu lista de contactos/amigos en la vista de tu perfil predeterminado?" -#: mod/settings.php:1175 +#: mod/settings.php:1101 msgid "" -"If enabled, posting public messages to Diaspora and other networks isn't " -"possible." -msgstr "Si habilitado, enviar temas públicos a a Diaspora* y otras redes no es posible. " +"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/settings.php:1180 +#: mod/settings.php:1105 +msgid "Hide your profile details from anonymous viewers?" +msgstr "" + +#: mod/settings.php:1105 +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/settings.php:1109 msgid "Allow friends to post to your profile page?" msgstr "¿Permites que tus amigos publiquen en tu página de perfil?" -#: mod/settings.php:1185 +#: mod/settings.php:1109 +msgid "" +"Your contacts may write posts on your profile wall. These posts will be " +"distributed to your contacts" +msgstr "" + +#: mod/settings.php:1113 msgid "Allow friends to tag your posts?" msgstr "¿Permites a los amigos etiquetar tus publicaciones?" -#: mod/settings.php:1190 +#: mod/settings.php:1113 +msgid "Your contacts can add additional tags to your posts." +msgstr "" + +#: mod/settings.php:1117 msgid "Allow us to suggest you as a potential friend to new members?" msgstr "¿Nos permite recomendarte como amigo potencial a los nuevos miembros?" -#: mod/settings.php:1195 +#: mod/settings.php:1117 +msgid "" +"If you like, Friendica may suggest new members to add you as a contact." +msgstr "" + +#: mod/settings.php:1121 msgid "Permit unknown people to send you private mail?" msgstr "¿Permites que desconocidos te manden correos privados?" -#: mod/settings.php:1203 +#: mod/settings.php:1121 +msgid "" +"Friendica network users may send you private messages even if they are not " +"in your contact list." +msgstr "" + +#: mod/settings.php:1125 msgid "Profile is not published." msgstr "El perfil no está publicado." -#: mod/settings.php:1211 +#: mod/settings.php:1131 #, php-format msgid "Your Identity Address is '%s' or '%s'." msgstr "Su dirección de identidad es '%s' o '%s'." -#: mod/settings.php:1218 +#: mod/settings.php:1138 msgid "Automatically expire posts after this many days:" msgstr "Las publicaciones expirarán automáticamente después de estos días:" -#: mod/settings.php:1218 +#: mod/settings.php:1138 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "Si lo dejas vacío no expirarán nunca. Las publicaciones que hayan expirado se borrarán" -#: mod/settings.php:1219 +#: mod/settings.php:1139 msgid "Advanced expiration settings" msgstr "Configuración avanzada de expiración" -#: mod/settings.php:1220 +#: mod/settings.php:1140 msgid "Advanced Expiration" msgstr "Expiración avanzada" -#: mod/settings.php:1221 +#: mod/settings.php:1141 msgid "Expire posts:" msgstr "¿Expiran las publicaciones?" -#: mod/settings.php:1222 +#: mod/settings.php:1142 msgid "Expire personal notes:" msgstr "¿Expiran las notas personales?" -#: mod/settings.php:1223 +#: mod/settings.php:1143 msgid "Expire starred posts:" msgstr "¿Expiran los favoritos?" -#: mod/settings.php:1224 +#: mod/settings.php:1144 msgid "Expire photos:" msgstr "¿Expiran las fotografías?" -#: mod/settings.php:1225 +#: mod/settings.php:1145 msgid "Only expire posts by others:" msgstr "Solo expiran los mensajes de los demás:" -#: mod/settings.php:1256 +#: mod/settings.php:1175 msgid "Account Settings" msgstr "Configuración de la cuenta" -#: mod/settings.php:1264 +#: mod/settings.php:1183 msgid "Password Settings" msgstr "Configuración de la contraseña" -#: mod/settings.php:1266 +#: mod/settings.php:1184 +msgid "" +"Allowed characters are a-z, A-Z, 0-9 and special characters except white " +"spaces, accentuated letters and colon (:)." +msgstr "" + +#: mod/settings.php:1185 msgid "Leave password fields blank unless changing" msgstr "Deja la contraseña en blanco si no quieres cambiarla" -#: mod/settings.php:1267 +#: mod/settings.php:1186 msgid "Current Password:" msgstr "Contraseña actual:" -#: mod/settings.php:1267 mod/settings.php:1268 +#: mod/settings.php:1186 mod/settings.php:1187 msgid "Your current password to confirm the changes" msgstr "Su contraseña actual para confirmar los cambios." -#: mod/settings.php:1268 +#: mod/settings.php:1187 msgid "Password:" msgstr "Contraseña:" -#: mod/settings.php:1272 +#: mod/settings.php:1191 msgid "Basic Settings" msgstr "Configuración básica" -#: mod/settings.php:1274 +#: mod/settings.php:1192 src/Model/Profile.php:752 +msgid "Full Name:" +msgstr "Nombre completo:" + +#: mod/settings.php:1193 msgid "Email Address:" msgstr "Dirección de correo:" -#: mod/settings.php:1275 +#: mod/settings.php:1194 msgid "Your Timezone:" msgstr "Zona horaria:" -#: mod/settings.php:1276 +#: mod/settings.php:1195 msgid "Your Language:" msgstr "Tu idioma:" -#: mod/settings.php:1276 +#: mod/settings.php:1195 msgid "" "Set the language we use to show you friendica interface and to send you " "emails" msgstr "Selecciona el idioma que se usara para la interfaz del usuario y para el envío de correo." -#: mod/settings.php:1277 +#: mod/settings.php:1196 msgid "Default Post Location:" msgstr "Localización predeterminada:" -#: mod/settings.php:1278 +#: mod/settings.php:1197 msgid "Use Browser Location:" msgstr "Usar localización del navegador:" -#: mod/settings.php:1281 +#: mod/settings.php:1200 msgid "Security and Privacy Settings" msgstr "Configuración de seguridad y privacidad" -#: mod/settings.php:1283 +#: mod/settings.php:1202 msgid "Maximum Friend Requests/Day:" msgstr "Máximo número de peticiones de amistad por día:" -#: mod/settings.php:1283 mod/settings.php:1313 +#: mod/settings.php:1202 mod/settings.php:1231 msgid "(to prevent spam abuse)" msgstr "(para prevenir el abuso de spam)" -#: mod/settings.php:1284 +#: mod/settings.php:1203 msgid "Default Post Permissions" msgstr "Permisos por defecto para las publicaciones" -#: mod/settings.php:1285 +#: mod/settings.php:1204 msgid "(click to open/close)" msgstr "(pulsa para abrir/cerrar)" -#: mod/settings.php:1296 +#: mod/settings.php:1214 msgid "Default Private Post" msgstr "Publicación Privada por defecto" -#: mod/settings.php:1297 +#: mod/settings.php:1215 msgid "Default Public Post" msgstr "Publicación Pública por defecto" -#: mod/settings.php:1301 +#: mod/settings.php:1219 msgid "Default Permissions for New Posts" msgstr "Permisos por defecto para nuevas publicaciones" -#: mod/settings.php:1313 +#: mod/settings.php:1231 msgid "Maximum private messages per day from unknown people:" msgstr "Número máximo de mensajes diarios para desconocidos:" -#: mod/settings.php:1316 +#: mod/settings.php:1234 msgid "Notification Settings" msgstr "Configuración de notificaciones" -#: mod/settings.php:1317 -msgid "By default post a status message when:" -msgstr "Publicar en tu estado cuando:" - -#: mod/settings.php:1318 -msgid "accepting a friend request" -msgstr "aceptes una solicitud de amistad" - -#: mod/settings.php:1319 -msgid "joining a forum/community" -msgstr "te unas a un foro/comunidad" - -#: mod/settings.php:1320 -msgid "making an interesting profile change" -msgstr "hagas un cambio interesante en tu perfil" - -#: mod/settings.php:1321 +#: mod/settings.php:1235 msgid "Send a notification email when:" msgstr "Enviar notificación por correo cuando:" -#: mod/settings.php:1322 +#: mod/settings.php:1236 msgid "You receive an introduction" msgstr "Recibas una presentación" -#: mod/settings.php:1323 +#: mod/settings.php:1237 msgid "Your introductions are confirmed" msgstr "Tu presentación sea confirmada" -#: mod/settings.php:1324 +#: mod/settings.php:1238 msgid "Someone writes on your profile wall" msgstr "Alguien escriba en el muro de mi perfil" -#: mod/settings.php:1325 +#: mod/settings.php:1239 msgid "Someone writes a followup comment" msgstr "Algien escriba en un comentario que sigo" -#: mod/settings.php:1326 +#: mod/settings.php:1240 msgid "You receive a private message" msgstr "Recibas un mensaje privado" -#: mod/settings.php:1327 +#: mod/settings.php:1241 msgid "You receive a friend suggestion" msgstr "Recibas una sugerencia de amistad" -#: mod/settings.php:1328 +#: mod/settings.php:1242 msgid "You are tagged in a post" msgstr "Seas etiquetado en una publicación" -#: mod/settings.php:1329 +#: mod/settings.php:1243 msgid "You are poked/prodded/etc. in a post" msgstr "Te han tocado/empujado/etc. en una publicación" -#: mod/settings.php:1331 +#: mod/settings.php:1245 msgid "Activate desktop notifications" msgstr "Activar notificaciones en pantalla." -#: mod/settings.php:1331 +#: mod/settings.php:1245 msgid "Show desktop popup on new notifications" msgstr "Mostrar notificaciones emergentes en caso de nuevos eventos." -#: mod/settings.php:1333 +#: mod/settings.php:1247 msgid "Text-only notification emails" msgstr "Notificaciones e-mail de solo texto" -#: mod/settings.php:1335 +#: mod/settings.php:1249 msgid "Send text only notification emails, without the html part" msgstr "Enviar las notificaciones por correo con formato de solo texto sin html." -#: mod/settings.php:1337 +#: mod/settings.php:1251 msgid "Show detailled notifications" msgstr "Mostrar notificaciones detalladas" -#: mod/settings.php:1339 +#: mod/settings.php:1253 msgid "" -"Per default the notificiation are condensed to a single notification per " -"item. When enabled, every notification is displayed." -msgstr "Por defecto, la notificación se condensa en una sola notificación por artículo. Cuando está habilitado, se muestra cada notificación." +"Per default, notifications are condensed to a single notification per item. " +"When enabled every notification is displayed." +msgstr "" -#: mod/settings.php:1341 +#: mod/settings.php:1255 msgid "Advanced Account/Page Type Settings" msgstr "Configuración avanzada de tipo de Cuenta/Página" -#: mod/settings.php:1342 +#: mod/settings.php:1256 msgid "Change the behaviour of this account for special situations" msgstr "Cambiar el comportamiento de esta cuenta para situaciones especiales" -#: mod/settings.php:1345 +#: mod/settings.php:1259 msgid "Relocate" msgstr "Relocalizar" -#: mod/settings.php:1346 +#: mod/settings.php:1260 msgid "" "If you have moved this profile from another server, and some of your " "contacts don't receive your updates, try pushing this button." msgstr "Si ha migrado este perfil desde otro servidor aquí y algunos contactos no reciben sus publicaciones intente recomunicar su ubicación a traves este botón. (Como para decir el botón de los botones)" -#: mod/settings.php:1347 +#: mod/settings.php:1261 msgid "Resend relocate message to contacts" msgstr "Reenviar mensaje de relocalización a los contactos" -#: mod/videos.php:128 +#: mod/subthread.php:104 +#, php-format +msgid "%1$s is following %2$s's %3$s" +msgstr "%1$s está siguiendo las %3$s de %2$s" + +#: mod/suggest.php:39 +msgid "Do you really want to delete this suggestion?" +msgstr "¿Estás seguro de que quieres borrar esta sugerencia?" + +#: mod/suggest.php:75 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." +msgstr "No hay sugerencias disponibles. Si el sitio web es nuevo inténtalo de nuevo dentro de 24 horas." + +#: mod/suggest.php:88 mod/suggest.php:108 +msgid "Ignore/Hide" +msgstr "Ignorar/Ocultar" + +#: mod/suggest.php:118 src/Content/Widget.php:65 view/theme/vier/theme.php:204 +msgid "Friend Suggestions" +msgstr "Sugerencias de amigos" + +#: mod/tagrm.php:31 +msgid "Tag(s) removed" +msgstr "" + +#: mod/tagrm.php:99 +msgid "Remove Item Tag" +msgstr "Eliminar etiqueta" + +#: mod/tagrm.php:101 +msgid "Select a tag to remove: " +msgstr "Selecciona una etiqueta para eliminar: " + +#: mod/uexport.php:45 +msgid "Export account" +msgstr "Exportar cuenta" + +#: mod/uexport.php:45 +msgid "" +"Export your account info and contacts. Use this to make a backup of your " +"account and/or to move it to another server." +msgstr "Exporta la información de tu cuenta y tus contactos. Úsalo para guardar una copia de seguridad de tu cuenta y/o moverla a otro servidor." + +#: mod/uexport.php:46 +msgid "Export all" +msgstr "Exportar todo" + +#: mod/uexport.php:46 +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 "Exporta la información de tu cuenta, contactos y lo demás en JSON. Puede ser un archivo bastante grande, por lo que llevará tiempo. Úsalo para hacer una copia de seguridad completa de tu cuenta (las fotos no se exportarán)" + +#: mod/uimport.php:30 +msgid "User imports on closed servers can only be done by an administrator." +msgstr "" + +#: mod/uimport.php:56 +msgid "Move account" +msgstr "Mover cuenta" + +#: mod/uimport.php:57 +msgid "You can import an account from another Friendica server." +msgstr "Puedes importar una cuenta desde otro servidor de Friendica." + +#: mod/uimport.php:58 +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 "Necesitas exportar tu cuenta del antiguo servidor y subirla aquí. Volveremos a crear tu antigua cuenta con todos tus contactos aquí. También intentaremos de informar a tus amigos de que te has mudado." + +#: mod/uimport.php:59 +msgid "" +"This feature is experimental. We can't import contacts from the OStatus " +"network (GNU Social/Statusnet) or from Diaspora" +msgstr "Esta característica es experimental. No podemos importar contactos desde la red OStatus (statusnet/identi.ca) o desde Diaspora*" + +#: mod/uimport.php:60 +msgid "Account file" +msgstr "Archivo de la cuenta" + +#: mod/uimport.php:60 +msgid "" +"To export your account, go to \"Settings->Export your personal data\" and " +"select \"Export account\"" +msgstr "Para exportar el perfil vaya a \"Configuracion -> Exportar sus datos personales\" y seleccione \"Exportar cuenta\"" + +#: mod/unfollow.php:36 mod/unfollow.php:92 +msgid "You aren't following this contact." +msgstr "" + +#: mod/unfollow.php:46 mod/unfollow.php:98 +msgid "Unfollowing is currently not supported by your network." +msgstr "Dejar de Seguir no es compatible con su red actualmente." + +#: mod/unfollow.php:67 +msgid "Contact unfollowed" +msgstr "Contacto no seguido" + +#: mod/unfollow.php:118 src/Module/Contact.php:572 +msgid "Disconnect/Unfollow" +msgstr "Desconectar/Dejar de seguir" + +#: mod/update_community.php:23 mod/update_contact.php:23 +#: mod/update_display.php:24 mod/update_network.php:33 mod/update_notes.php:36 +#: mod/update_profile.php:35 +msgid "[Embedded content - reload page to view]" +msgstr "[Contenido incrustado - recarga la página para verlo]" + +#: mod/videos.php:132 msgid "Do you really want to delete this video?" msgstr "Realmente quieres eliminar este vídeo?" -#: mod/videos.php:133 +#: mod/videos.php:137 msgid "Delete Video" msgstr "Borrar vídeo" -#: mod/videos.php:212 +#: mod/videos.php:197 msgid "No videos selected" msgstr "Ningún vídeo seleccionado" -#: mod/videos.php:406 +#: mod/videos.php:368 src/Model/Item.php:3426 +msgid "View Video" +msgstr "Ver vídeo" + +#: mod/videos.php:383 msgid "Recent Videos" msgstr "Vídeos recientes" -#: mod/videos.php:408 +#: mod/videos.php:385 msgid "Upload New Videos" msgstr "Subir nuevos vídeos" -#: mod/wall_attach.php:19 mod/wall_attach.php:27 mod/wall_attach.php:78 -#: mod/wall_upload.php:37 mod/wall_upload.php:53 mod/wall_upload.php:111 -#: mod/wall_upload.php:151 mod/wall_upload.php:154 +#: mod/viewcontacts.php:78 +msgid "No contacts." +msgstr "Ningún contacto." + +#: mod/viewcontacts.php:94 src/Module/Contact.php:605 +#: src/Module/Contact.php:1025 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "Ver el perfil de %s [%s]" + +#: mod/viewcontacts.php:114 src/Content/Nav.php:197 src/Content/Nav.php:263 +#: src/Content/Text/HTML.php:980 src/Model/Profile.php:981 +#: src/Model/Profile.php:984 src/Module/Contact.php:812 +#: src/Module/Contact.php:882 view/theme/frio/theme.php:284 +msgid "Contacts" +msgstr "Contactos" + +#: mod/wallmessage.php:52 mod/wallmessage.php:115 +#, php-format +msgid "Number of daily wall messages for %s exceeded. Message failed." +msgstr "Excedido el número máximo de mensajes para %s. El mensaje no se ha enviado." + +#: mod/wallmessage.php:63 +msgid "Unable to check your home location." +msgstr "Imposible comprobar tu servidor de inicio." + +#: mod/wallmessage.php:89 mod/wallmessage.php:98 +msgid "No recipient." +msgstr "Sin receptor." + +#: mod/wallmessage.php:129 +#, 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 "Si quieres que %s te responda, asegúrate de que la configuración de privacidad permite enviar correo privado a desconocidos." + +#: mod/wall_attach.php:28 mod/wall_attach.php:35 mod/wall_attach.php:90 +#: mod/wall_upload.php:41 mod/wall_upload.php:57 mod/wall_upload.php:115 +#: mod/wall_upload.php:166 mod/wall_upload.php:169 msgid "Invalid request." msgstr "Consulta invalida" -#: mod/wall_attach.php:96 +#: mod/wall_attach.php:108 msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" msgstr "Disculpa, posiblemente el archivo subido es mas grande que la PHP configuración permite." -#: mod/wall_attach.php:96 +#: mod/wall_attach.php:108 msgid "Or - did you try to upload an empty file?" msgstr "Si no - intento de subir un archivo vacío?" -#: mod/wall_attach.php:107 +#: mod/wall_attach.php:119 #, php-format msgid "File exceeds size limit of %s" msgstr "El archivo excede el limite de tamaño de %s" -#: mod/wall_attach.php:131 mod/wall_attach.php:147 +#: mod/wall_attach.php:143 mod/wall_attach.php:159 msgid "File upload failed." msgstr "Ha fallado la subida del archivo." -#: object/Item.php:106 +#: mod/wall_upload.php:242 src/Object/Image.php:968 src/Object/Image.php:984 +#: src/Object/Image.php:992 src/Object/Image.php:1017 +msgid "Wall Photos" +msgstr "Foto del Muro" + +#: src/App.php:787 +msgid "Delete this item?" +msgstr "¿Eliminar este elemento?" + +#: src/App.php:789 +msgid "show fewer" +msgstr "ver menos" + +#: src/App.php:831 +msgid "toggle mobile" +msgstr "Cambiar a versión móvil" + +#: src/App.php:1384 +msgid "No system theme config value set." +msgstr "" + +#: 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 "La ficha de seguridad no es correcta. Seguramente haya ocurrido por haber dejado el formulario abierto demasiado tiempo (>3 horas) antes de enviarlo." + +#: src/Content/ContactSelector.php:57 +msgid "Frequently" +msgstr "" + +#: src/Content/ContactSelector.php:58 +msgid "Hourly" +msgstr "" + +#: src/Content/ContactSelector.php:59 +msgid "Twice daily" +msgstr "" + +#: src/Content/ContactSelector.php:60 +msgid "Daily" +msgstr "" + +#: src/Content/ContactSelector.php:61 +msgid "Weekly" +msgstr "" + +#: src/Content/ContactSelector.php:62 +msgid "Monthly" +msgstr "" + +#: src/Content/ContactSelector.php:81 +msgid "DFRN" +msgstr "" + +#: src/Content/ContactSelector.php:82 +msgid "OStatus" +msgstr "" + +#: src/Content/ContactSelector.php:83 +msgid "RSS/Atom" +msgstr "" + +#: src/Content/ContactSelector.php:86 +msgid "Zot!" +msgstr "" + +#: src/Content/ContactSelector.php:87 +msgid "LinkedIn" +msgstr "" + +#: src/Content/ContactSelector.php:88 +msgid "XMPP/IM" +msgstr "" + +#: src/Content/ContactSelector.php:89 +msgid "MySpace" +msgstr "" + +#: src/Content/ContactSelector.php:90 +msgid "Google+" +msgstr "" + +#: src/Content/ContactSelector.php:91 +msgid "pump.io" +msgstr "" + +#: src/Content/ContactSelector.php:92 +msgid "Twitter" +msgstr "" + +#: src/Content/ContactSelector.php:93 +msgid "Diaspora Connector" +msgstr "" + +#: src/Content/ContactSelector.php:94 +msgid "GNU Social Connector" +msgstr "" + +#: src/Content/ContactSelector.php:95 +msgid "ActivityPub" +msgstr "" + +#: src/Content/ContactSelector.php:96 +msgid "pnut" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Male" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Female" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Currently Male" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Currently Female" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Mostly Male" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Mostly Female" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Transgender" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Intersex" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Transsexual" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Hermaphrodite" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Neuter" +msgstr "" + +#: src/Content/ContactSelector.php:148 +msgid "Non-specific" +msgstr "Sin especificar" + +#: src/Content/ContactSelector.php:148 +msgid "Other" +msgstr "Otro" + +#: src/Content/ContactSelector.php:170 +msgid "Males" +msgstr "Hombres" + +#: src/Content/ContactSelector.php:170 +msgid "Females" +msgstr "Mujeres" + +#: src/Content/ContactSelector.php:170 +msgid "Gay" +msgstr "Gay" + +#: src/Content/ContactSelector.php:170 +msgid "Lesbian" +msgstr "Lesbiana" + +#: src/Content/ContactSelector.php:170 +msgid "No Preference" +msgstr "Sin preferencias" + +#: src/Content/ContactSelector.php:170 +msgid "Bisexual" +msgstr "Bisexual" + +#: src/Content/ContactSelector.php:170 +msgid "Autosexual" +msgstr "Autosexual" + +#: src/Content/ContactSelector.php:170 +msgid "Abstinent" +msgstr "Célibe" + +#: src/Content/ContactSelector.php:170 +msgid "Virgin" +msgstr "Virgen" + +#: src/Content/ContactSelector.php:170 +msgid "Deviant" +msgstr "Desviado" + +#: src/Content/ContactSelector.php:170 +msgid "Fetish" +msgstr "Fetichista" + +#: src/Content/ContactSelector.php:170 +msgid "Oodles" +msgstr "Orgiástico" + +#: src/Content/ContactSelector.php:170 +msgid "Nonsexual" +msgstr "Asexual" + +#: src/Content/ContactSelector.php:192 +msgid "Single" +msgstr "Soltero" + +#: src/Content/ContactSelector.php:192 +msgid "Lonely" +msgstr "Solitario" + +#: src/Content/ContactSelector.php:192 +msgid "Available" +msgstr "Disponible" + +#: src/Content/ContactSelector.php:192 +msgid "Unavailable" +msgstr "No disponible" + +#: src/Content/ContactSelector.php:192 +msgid "Has crush" +msgstr "Enamorado" + +#: src/Content/ContactSelector.php:192 +msgid "Infatuated" +msgstr "Loco/a por alguien" + +#: src/Content/ContactSelector.php:192 +msgid "Dating" +msgstr "De citas" + +#: src/Content/ContactSelector.php:192 +msgid "Unfaithful" +msgstr "Infiel" + +#: src/Content/ContactSelector.php:192 +msgid "Sex Addict" +msgstr "Adicto al sexo" + +#: src/Content/ContactSelector.php:192 src/Model/User.php:647 +msgid "Friends" +msgstr "Amigos" + +#: src/Content/ContactSelector.php:192 +msgid "Friends/Benefits" +msgstr "Amigos con beneficios" + +#: src/Content/ContactSelector.php:192 +msgid "Casual" +msgstr "Casual" + +#: src/Content/ContactSelector.php:192 +msgid "Engaged" +msgstr "Comprometido/a" + +#: src/Content/ContactSelector.php:192 +msgid "Married" +msgstr "Casado/a" + +#: src/Content/ContactSelector.php:192 +msgid "Imaginarily married" +msgstr "Casado imaginario" + +#: src/Content/ContactSelector.php:192 +msgid "Partners" +msgstr "Socios" + +#: src/Content/ContactSelector.php:192 +msgid "Cohabiting" +msgstr "Cohabitando" + +#: src/Content/ContactSelector.php:192 +msgid "Common law" +msgstr "Pareja de hecho" + +#: src/Content/ContactSelector.php:192 +msgid "Happy" +msgstr "Feliz" + +#: src/Content/ContactSelector.php:192 +msgid "Not looking" +msgstr "No busca relación" + +#: src/Content/ContactSelector.php:192 +msgid "Swinger" +msgstr "Swinger" + +#: src/Content/ContactSelector.php:192 +msgid "Betrayed" +msgstr "Traicionado/a" + +#: src/Content/ContactSelector.php:192 +msgid "Separated" +msgstr "Separado/a" + +#: src/Content/ContactSelector.php:192 +msgid "Unstable" +msgstr "Inestable" + +#: src/Content/ContactSelector.php:192 +msgid "Divorced" +msgstr "Divorciado/a" + +#: src/Content/ContactSelector.php:192 +msgid "Imaginarily divorced" +msgstr "Divorciado imaginario" + +#: src/Content/ContactSelector.php:192 +msgid "Widowed" +msgstr "Viudo/a" + +#: src/Content/ContactSelector.php:192 +msgid "Uncertain" +msgstr "Incierto" + +#: src/Content/ContactSelector.php:192 +msgid "It's complicated" +msgstr "Es complicado" + +#: src/Content/ContactSelector.php:192 +msgid "Don't care" +msgstr "No te importa" + +#: src/Content/ContactSelector.php:192 +msgid "Ask me" +msgstr "Pregúntame" + +#: src/Content/Feature.php:79 +msgid "General Features" +msgstr "Opciones generales" + +#: src/Content/Feature.php:81 +msgid "Multiple Profiles" +msgstr "Perfiles multiples" + +#: src/Content/Feature.php:81 +msgid "Ability to create multiple profiles" +msgstr "Capacidad de crear perfiles multiples. Cada pagina/perfil/usuario puede tener diferentes perfiles/apariencias. Las mismas pueden ser visibles para determinados contactos seleccionados dentro de la red friendica." + +#: src/Content/Feature.php:82 +msgid "Photo Location" +msgstr "Localización foto" + +#: 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 "Normalmente los meta datos de las imágenes son eliminados. Esto extraerá la localización si presente antes de eliminar los meta datos y enlaza la misma con el mapa." + +#: src/Content/Feature.php:83 +msgid "Export Public Calendar" +msgstr "Exportar Calendario Público" + +#: src/Content/Feature.php:83 +msgid "Ability for visitors to download the public calendar" +msgstr "Posibilidad de los visitantes de descargar el calendario público" + +#: src/Content/Feature.php:88 +msgid "Post Composition Features" +msgstr "Opciones de edición de publicaciones." + +#: src/Content/Feature.php:89 +msgid "Auto-mention Forums" +msgstr "Auto-mencionar foros" + +#: src/Content/Feature.php:89 +msgid "" +"Add/remove mention when a forum page is selected/deselected in ACL window." +msgstr "Añadir/eliminar mención cuando un foro es seleccionado/deseleccionado en la ventana ACL." + +#: src/Content/Feature.php:94 +msgid "Network Sidebar" +msgstr "" + +#: src/Content/Feature.php:95 +msgid "Ability to select posts by date ranges" +msgstr "Habilidad de seleccionar publicaciones por fecha" + +#: src/Content/Feature.php:96 +msgid "Protocol Filter" +msgstr "" + +#: src/Content/Feature.php:96 +msgid "Enable widget to display Network posts only from selected protocols" +msgstr "" + +#: src/Content/Feature.php:101 +msgid "Network Tabs" +msgstr "Pestañas de redes" + +#: src/Content/Feature.php:102 +msgid "Network New Tab" +msgstr "Pestaña nuevo en la red" + +#: src/Content/Feature.php:102 +msgid "Enable tab to display only new Network posts (from the last 12 hours)" +msgstr "Activar para mostrar solo publicaciones nuevas en la red (de las ultimas 12 horas)" + +#: src/Content/Feature.php:103 +msgid "Network Shared Links Tab" +msgstr "Pestaña publicaciones con enlaces" + +#: src/Content/Feature.php:103 +msgid "Enable tab to display only Network posts with links in them" +msgstr "Habilitar para visualizar solo publicaciones que contienen enlaces" + +#: src/Content/Feature.php:108 +msgid "Post/Comment Tools" +msgstr "Herramienta de publicaciones/respuestas" + +#: src/Content/Feature.php:109 +msgid "Post Categories" +msgstr "Categorías de publicaciones" + +#: src/Content/Feature.php:109 +msgid "Add categories to your posts" +msgstr "Agregue categorías a sus publicaciones. Las mismas serán visualizadas en su pagina de inicio." + +#: src/Content/Feature.php:114 +msgid "Advanced Profile Settings" +msgstr "Ajustes avanzados del perfil" + +#: src/Content/Feature.php:115 +msgid "List Forums" +msgstr "Listar foros" + +#: src/Content/Feature.php:115 +msgid "Show visitors public community forums at the Advanced Profile Page" +msgstr "Mostrar a los visitantes foros públicos en las que se esta participando en el pagina avanzada de perfiles." + +#: src/Content/Feature.php:116 +msgid "Tag Cloud" +msgstr "" + +#: src/Content/Feature.php:116 +msgid "Provide a personal tag cloud on your profile page" +msgstr "" + +#: src/Content/Feature.php:117 +msgid "Display Membership Date" +msgstr "" + +#: src/Content/Feature.php:117 +msgid "Display membership date in profile" +msgstr "" + +#: src/Content/ForumManager.php:126 src/Content/Nav.php:201 +#: src/Content/Text/HTML.php:983 view/theme/vier/theme.php:250 +msgid "Forums" +msgstr "Foros" + +#: src/Content/ForumManager.php:128 view/theme/vier/theme.php:252 +msgid "External link to forum" +msgstr "Enlace externo al foro" + +#: src/Content/Nav.php:69 +msgid "Nothing new here" +msgstr "Nada nuevo por aquí" + +#: src/Content/Nav.php:73 +msgid "Clear notifications" +msgstr "Limpiar notificaciones" + +#: src/Content/Nav.php:74 src/Content/Text/HTML.php:972 +msgid "@name, !forum, #tags, content" +msgstr "@name, !forum, #tags, contenido" + +#: src/Content/Nav.php:147 src/Module/Login.php:318 +#: view/theme/frio/theme.php:270 +msgid "Logout" +msgstr "Salir" + +#: src/Content/Nav.php:147 view/theme/frio/theme.php:270 +msgid "End this session" +msgstr "Cerrar la sesión" + +#: src/Content/Nav.php:150 src/Model/Profile.php:902 +#: src/Module/Contact.php:655 src/Module/Contact.php:854 +#: view/theme/frio/theme.php:273 +msgid "Status" +msgstr "Estado" + +#: src/Content/Nav.php:150 src/Content/Nav.php:236 +#: view/theme/frio/theme.php:273 +msgid "Your posts and conversations" +msgstr "Tus publicaciones y conversaciones" + +#: src/Content/Nav.php:151 view/theme/frio/theme.php:274 +msgid "Your profile page" +msgstr "Tu página de perfil" + +#: src/Content/Nav.php:152 view/theme/frio/theme.php:275 +msgid "Your photos" +msgstr "Tus fotos" + +#: src/Content/Nav.php:153 src/Model/Profile.php:926 src/Model/Profile.php:929 +#: view/theme/frio/theme.php:276 +msgid "Videos" +msgstr "Videos" + +#: src/Content/Nav.php:153 view/theme/frio/theme.php:276 +msgid "Your videos" +msgstr "Tus videos" + +#: src/Content/Nav.php:154 view/theme/frio/theme.php:277 +msgid "Your events" +msgstr "Tus eventos" + +#: src/Content/Nav.php:155 +msgid "Personal notes" +msgstr "Notas personales" + +#: src/Content/Nav.php:155 +msgid "Your personal notes" +msgstr "Tus notas personales" + +#: src/Content/Nav.php:164 +msgid "Sign in" +msgstr "Date de alta" + +#: src/Content/Nav.php:174 src/Content/Nav.php:236 +#: src/Core/NotificationsManager.php:192 +msgid "Home" +msgstr "Inicio" + +#: src/Content/Nav.php:174 +msgid "Home Page" +msgstr "Página de inicio" + +#: src/Content/Nav.php:178 +msgid "Create an account" +msgstr "Crea una cuenta" + +#: src/Content/Nav.php:184 +msgid "Help and documentation" +msgstr "Ayuda y documentación" + +#: src/Content/Nav.php:188 +msgid "Apps" +msgstr "Aplicaciones" + +#: src/Content/Nav.php:188 +msgid "Addon applications, utilities, games" +msgstr "Aplicaciones, utilidades, juegos" + +#: src/Content/Nav.php:192 +msgid "Search site content" +msgstr " Busca contenido en la página" + +#: src/Content/Nav.php:195 src/Content/Text/HTML.php:978 +msgid "Full Text" +msgstr "Texto completo" + +#: src/Content/Nav.php:196 src/Content/Text/HTML.php:979 +#: src/Content/Widget/TagCloud.php:53 +msgid "Tags" +msgstr "Tags" + +#: src/Content/Nav.php:216 +msgid "Community" +msgstr "Comunidad" + +#: src/Content/Nav.php:216 +msgid "Conversations on this and other servers" +msgstr "" + +#: src/Content/Nav.php:220 src/Model/Profile.php:941 src/Model/Profile.php:952 +#: view/theme/frio/theme.php:281 +msgid "Events and Calendar" +msgstr "Eventos y Calendario" + +#: src/Content/Nav.php:223 +msgid "Directory" +msgstr "Directorio" + +#: src/Content/Nav.php:223 +msgid "People directory" +msgstr "Directorio de usuarios" + +#: src/Content/Nav.php:225 +msgid "Information about this friendica instance" +msgstr "Información sobre esta instancia de friendica" + +#: src/Content/Nav.php:228 +msgid "Terms of Service of this Friendica instance" +msgstr "" + +#: src/Content/Nav.php:233 view/theme/frio/theme.php:280 +msgid "Conversations from your friends" +msgstr "Conversaciones de tus amigos" + +#: src/Content/Nav.php:234 +msgid "Network Reset" +msgstr "Reseteo de la red" + +#: src/Content/Nav.php:234 +msgid "Load Network page with no filters" +msgstr "Cargar pagina de redes sin filtros" + +#: src/Content/Nav.php:240 src/Core/NotificationsManager.php:199 +msgid "Introductions" +msgstr "Presentaciones" + +#: src/Content/Nav.php:240 +msgid "Friend Requests" +msgstr "Solicitudes de amistad" + +#: src/Content/Nav.php:242 +msgid "See all notifications" +msgstr "Ver todas las notificaciones" + +#: src/Content/Nav.php:243 +msgid "Mark all system notifications seen" +msgstr "Marcar todas las notificaciones del sistema como leídas" + +#: src/Content/Nav.php:246 view/theme/frio/theme.php:282 +msgid "Private mail" +msgstr "Correo privado" + +#: src/Content/Nav.php:247 +msgid "Inbox" +msgstr "Entrada" + +#: src/Content/Nav.php:248 +msgid "Outbox" +msgstr "Enviados" + +#: src/Content/Nav.php:252 +msgid "Manage" +msgstr "Administrar" + +#: src/Content/Nav.php:252 +msgid "Manage other pages" +msgstr "Administrar otras páginas" + +#: src/Content/Nav.php:257 view/theme/frio/theme.php:283 +msgid "Account settings" +msgstr "Configuración de tu cuenta" + +#: src/Content/Nav.php:260 +msgid "Manage/Edit Profiles" +msgstr "Manejar/editar Perfiles" + +#: src/Content/Nav.php:263 view/theme/frio/theme.php:284 +msgid "Manage/edit friends and contacts" +msgstr "Administrar/editar amigos y contactos" + +#: src/Content/Nav.php:268 +msgid "Site setup and configuration" +msgstr "Opciones y configuración del sitio" + +#: src/Content/Nav.php:271 +msgid "Navigation" +msgstr "Navegación" + +#: src/Content/Nav.php:271 +msgid "Site map" +msgstr "Mapa del sitio" + +#: src/Content/OEmbed.php:255 +msgid "Embedding disabled" +msgstr "Contenido incrustrado desabilitado" + +#: src/Content/OEmbed.php:375 +msgid "Embedded content" +msgstr "Contenido integrado" + +#: src/Content/Pager.php:166 +msgid "newer" +msgstr "más nuevo" + +#: src/Content/Pager.php:171 +msgid "older" +msgstr "más antiguo" + +#: src/Content/Pager.php:215 +msgid "prev" +msgstr "ant." + +#: src/Content/Pager.php:275 +msgid "last" +msgstr "última" + +#: src/Content/Text/BBCode.php:426 +msgid "view full size" +msgstr "Ver a tamaño completo" + +#: src/Content/Text/BBCode.php:858 src/Content/Text/BBCode.php:1583 +#: src/Content/Text/BBCode.php:1584 +msgid "Image/photo" +msgstr "Imagen/Foto" + +#: src/Content/Text/BBCode.php:961 +#, php-format +msgid "%2$s %3$s" +msgstr "%2$s %3$s" + +#: src/Content/Text/BBCode.php:1510 src/Content/Text/BBCode.php:1532 +msgid "$1 wrote:" +msgstr "$1 escribió:" + +#: src/Content/Text/BBCode.php:1594 src/Content/Text/BBCode.php:1595 +msgid "Encrypted content" +msgstr "Contenido cifrado" + +#: src/Content/Text/BBCode.php:1702 +msgid "Invalid source protocol" +msgstr "Protocolo de fuente inválido" + +#: src/Content/Text/BBCode.php:1713 +msgid "Invalid link protocol" +msgstr "Protocolo de enlace inválido" + +#: src/Content/Text/HTML.php:799 +msgid "Loading more entries..." +msgstr "Cargar mas entradas .." + +#: src/Content/Text/HTML.php:800 +msgid "The end" +msgstr "El fin" + +#: src/Content/Text/HTML.php:840 +msgid "No contacts" +msgstr "Sin contactos" + +#: src/Content/Text/HTML.php:867 +#, php-format +msgid "%d Contact" +msgid_plural "%d Contacts" +msgstr[0] "%d Contacto" +msgstr[1] "%d Contactos" + +#: src/Content/Text/HTML.php:880 +msgid "View Contacts" +msgstr "Ver contactos" + +#: src/Content/Text/HTML.php:963 +msgid "Follow" +msgstr "" + +#: src/Content/Text/HTML.php:1018 src/Model/Item.php:3476 +#: src/Model/Item.php:3487 +msgid "Click to open/close" +msgstr "Pulsa para abrir/cerrar" + +#: src/Content/Widget/CalendarExport.php:63 +msgid "Export" +msgstr "Exportar" + +#: src/Content/Widget/CalendarExport.php:64 +msgid "Export calendar as ical" +msgstr "Exportar calendario como ical" + +#: src/Content/Widget/CalendarExport.php:65 +msgid "Export calendar as csv" +msgstr "Exportar calendario como csv" + +#: src/Content/Widget.php:34 +msgid "Add New Contact" +msgstr "Añadir nuevo contacto" + +#: src/Content/Widget.php:35 +msgid "Enter address or web location" +msgstr "Escribe la dirección o página web" + +#: src/Content/Widget.php:36 +msgid "Example: bob@example.com, http://example.com/barbara" +msgstr "Ejemplo: miguel@ejemplo.com, http://ejemplo.com/miguel" + +#: src/Content/Widget.php:54 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d invitación disponible" +msgstr[1] "%d invitaviones disponibles" + +#: src/Content/Widget.php:60 view/theme/vier/theme.php:199 +msgid "Find People" +msgstr "Buscar personas" + +#: src/Content/Widget.php:61 view/theme/vier/theme.php:200 +msgid "Enter name or interest" +msgstr "Introduzce nombre o intereses" + +#: src/Content/Widget.php:63 view/theme/vier/theme.php:202 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Ejemplos: Robert Morgenstein, Pesca" + +#: src/Content/Widget.php:66 view/theme/vier/theme.php:205 +msgid "Similar Interests" +msgstr "Intereses similares" + +#: src/Content/Widget.php:67 view/theme/vier/theme.php:206 +msgid "Random Profile" +msgstr "Perfil aleatorio" + +#: src/Content/Widget.php:68 view/theme/vier/theme.php:207 +msgid "Invite Friends" +msgstr "Invitar amigos" + +#: src/Content/Widget.php:71 view/theme/vier/theme.php:210 +msgid "Local Directory" +msgstr "Directorio local" + +#: src/Content/Widget.php:155 +msgid "Protocols" +msgstr "" + +#: src/Content/Widget.php:158 +msgid "All Protocols" +msgstr "" + +#: src/Content/Widget.php:193 +msgid "Saved Folders" +msgstr "Directorios guardados" + +#: src/Content/Widget.php:196 src/Content/Widget.php:236 +msgid "Everything" +msgstr "Todo" + +#: src/Content/Widget.php:233 +msgid "Categories" +msgstr "Categorías" + +#: src/Content/Widget.php:300 +#, php-format +msgid "%d contact in common" +msgid_plural "%d contacts in common" +msgstr[0] "%d contacto en común" +msgstr[1] "%d contactos en común" + +#: src/Core/ACL.php:285 +msgid "Post to Email" +msgstr "Publicar mediante correo electrónico" + +#: src/Core/ACL.php:291 +msgid "Hide your profile details from unknown viewers?" +msgstr "¿Quieres que los detalles de tu perfil permanezcan ocultos a los desconocidos?" + +#: src/Core/ACL.php:290 +#, php-format +msgid "Connectors disabled, since \"%s\" is enabled." +msgstr "Conectores deshabilitados, ya que \"%s\" es habilitado." + +#: src/Core/ACL.php:297 +msgid "Visible to everybody" +msgstr "Visible para cualquiera" + +#: src/Core/ACL.php:298 view/theme/vier/config.php:116 +msgid "show" +msgstr "mostrar" + +#: src/Core/ACL.php:299 view/theme/vier/config.php:116 +msgid "don't show" +msgstr "no mostrar" + +#: src/Core/ACL.php:309 +msgid "Close" +msgstr "Cerrado" + +#: src/Core/Authentication.php:89 +msgid "Welcome " +msgstr "Bienvenido " + +#: src/Core/Authentication.php:90 +msgid "Please upload a profile photo." +msgstr "Por favor sube una foto para tu perfil." + +#: src/Core/Authentication.php:92 +msgid "Welcome back " +msgstr "Bienvenido de nuevo " + +#: src/Core/Console/ArchiveContact.php:66 +#, php-format +msgid "Could not find any unarchived contact entry for this URL (%s)" +msgstr "" + +#: src/Core/Console/ArchiveContact.php:71 +msgid "The contact entries have been archived" +msgstr "" + +#: src/Core/Console/NewPassword.php:72 +msgid "Enter new password: " +msgstr "" + +#: src/Core/Console/PostUpdate.php:50 +#, php-format +msgid "Post update version number has been set to %s." +msgstr "" + +#: src/Core/Console/PostUpdate.php:58 +msgid "Check for pending update actions." +msgstr "" + +#: src/Core/Console/PostUpdate.php:60 +msgid "Done." +msgstr "" + +#: src/Core/Console/PostUpdate.php:62 +msgid "Execute pending post updates." +msgstr "" + +#: src/Core/Console/PostUpdate.php:68 +msgid "All pending post updates are done." +msgstr "" + +#: src/Core/Installer.php:160 +msgid "" +"The database configuration file \"config/local.config.php\" could not be " +"written. Please use the enclosed text to create a configuration file in your" +" web server root." +msgstr "" + +#: src/Core/Installer.php:176 +msgid "" +"You may need to import the file \"database.sql\" manually using phpmyadmin " +"or mysql." +msgstr "Puede que tengas que importar el archivo \"Database.sql\" manualmente usando phpmyadmin o mysql." + +#: src/Core/Installer.php:177 src/Module/Install.php:134 +#: src/Module/Install.php:264 +msgid "Please see the file \"INSTALL.txt\"." +msgstr "Por favor, consulta el archivo \"INSTALL.txt\"." + +#: src/Core/Installer.php:239 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "No se pudo encontrar una versión de la línea de comandos de PHP en la ruta del servidor web." + +#: src/Core/Installer.php:240 +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 'Setup the worker'" +msgstr "" + +#: src/Core/Installer.php:244 +msgid "PHP executable path" +msgstr "Dirección al ejecutable PHP" + +#: src/Core/Installer.php:244 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." +msgstr "Introduce la ruta completa al ejecutable php. Puedes dejarlo en blanco y seguir con la instalación." + +#: src/Core/Installer.php:249 +msgid "Command line PHP" +msgstr "Línea de comandos PHP" + +#: src/Core/Installer.php:258 +msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" +msgstr "El ejecutable PHP no es e lphp cli binary (podria ser versión cgi-fgci)" + +#: src/Core/Installer.php:259 +msgid "Found PHP version: " +msgstr "Versión PHP encontrada:" + +#: src/Core/Installer.php:261 +msgid "PHP cli binary" +msgstr "PHP cli binario" + +#: src/Core/Installer.php:274 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "La versión en línea de comandos de PHP en tu sistema no tiene \"register_argc_argv\" habilitado." + +#: src/Core/Installer.php:275 +msgid "This is required for message delivery to work." +msgstr "Esto es necesario para que funcione la entrega de mensajes." + +#: src/Core/Installer.php:280 +msgid "PHP register_argc_argv" +msgstr "PHP register_argc_argv" + +#: src/Core/Installer.php:312 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de generar claves de cifrado" + +#: src/Core/Installer.php:313 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Si se ejecuta en Windows, por favor consulta la sección \"http://www.php.net/manual/en/openssl.installation.php\"." + +#: src/Core/Installer.php:316 +msgid "Generate encryption keys" +msgstr "Generar claves de encriptación" + +#: src/Core/Installer.php:367 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Error: El módulo de Apache mod-rewrite es necesario pero no está instalado." + +#: src/Core/Installer.php:372 +msgid "Apache mod_rewrite module" +msgstr "Módulo mod_rewrite de Apache" + +#: src/Core/Installer.php:378 +msgid "Error: PDO or MySQLi PHP module required but not installed." +msgstr "Error: Módulo PDO o MySQLi PHP requerido pero no instalado." + +#: src/Core/Installer.php:383 +msgid "Error: The MySQL driver for PDO is not installed." +msgstr "Error: El dispositivo MySQL para PDO no está instalado." + +#: src/Core/Installer.php:387 +msgid "PDO or MySQLi PHP module" +msgstr "Módulo PDO o MySQLi PHP" + +#: src/Core/Installer.php:395 +msgid "Error, XML PHP module required but not installed." +msgstr "Error, módulo XML PHP requerido pero no instalado." + +#: src/Core/Installer.php:399 +msgid "XML PHP module" +msgstr "Módulo XML PHP" + +#: src/Core/Installer.php:402 +msgid "libCurl PHP module" +msgstr "Módulo PHP libCurl" + +#: src/Core/Installer.php:403 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Error: El módulo de PHP libcurl es necesario, pero no está instalado." + +#: src/Core/Installer.php:409 +msgid "GD graphics PHP module" +msgstr "Módulo PHP gráficos GD" + +#: src/Core/Installer.php:410 +msgid "" +"Error: GD graphics PHP module with JPEG support required but not installed." +msgstr "Error: El módulo de de PHP gráficos GD con soporte JPEG es necesario, pero no está instalado." + +#: src/Core/Installer.php:416 +msgid "OpenSSL PHP module" +msgstr "Módulo PHP OpenSSL" + +#: src/Core/Installer.php:417 +msgid "Error: openssl PHP module required but not installed." +msgstr "Error: El módulo de PHP openssl es necesario, pero no está instalado." + +#: src/Core/Installer.php:423 +msgid "mb_string PHP module" +msgstr "Módulo PHP mb_string" + +#: src/Core/Installer.php:424 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Error: El módulo de PHP mb_string es necesario, pero no está instalado." + +#: src/Core/Installer.php:430 +msgid "iconv PHP module" +msgstr "" + +#: src/Core/Installer.php:431 +msgid "Error: iconv PHP module required but not installed." +msgstr "Error: módulo iconv PHP requerido pero no instalado." + +#: src/Core/Installer.php:437 +msgid "POSIX PHP module" +msgstr "" + +#: src/Core/Installer.php:438 +msgid "Error: POSIX PHP module required but not installed." +msgstr "" + +#: src/Core/Installer.php:444 +msgid "JSON PHP module" +msgstr "" + +#: src/Core/Installer.php:445 +msgid "Error: JSON PHP module required but not installed." +msgstr "" + +#: src/Core/Installer.php:468 +msgid "" +"The web installer needs to be able to create a file called " +"\"local.config.php\" in the \"config\" folder of your web server and it is " +"unable to do so." +msgstr "" + +#: src/Core/Installer.php:469 +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 "Se trata a menudo de una configuración de permisos, pues el servidor web puede que no sea capaz de escribir archivos en la carpeta, aunque tú sí puedas." + +#: src/Core/Installer.php:470 +msgid "" +"At the end of this procedure, we will give you a text to save in a file " +"named local.config.php in your Friendica \"config\" folder." +msgstr "" + +#: src/Core/Installer.php:471 +msgid "" +"You can alternatively skip this procedure and perform a manual installation." +" Please see the file \"INSTALL.txt\" for instructions." +msgstr "Como alternativa, puedes saltarte estos pasos y realizar una instalación manual. Por favor, consulta el archivo \"INSTALL.txt\" para las instrucciones." + +#: src/Core/Installer.php:474 +msgid "config/local.config.php is writable" +msgstr "" + +#: src/Core/Installer.php:494 +msgid "" +"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " +"compiles templates to PHP to speed up rendering." +msgstr "Friendica usa el motor de templates Smarty3 para renderizar su visualisacion web. Smarty3 compila templates hacia PHP para acelerar la velocidad del renderizar." + +#: src/Core/Installer.php:495 +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 "Para poder guardar estos templates compilados, el servidor web necesita acceso de escritura en el directorio /view/smarty3/ en el árbol de raíz de la instalación friendica." + +#: src/Core/Installer.php:496 +msgid "" +"Please ensure that the user that your web server runs as (e.g. www-data) has" +" write access to this folder." +msgstr "Por favor asegure que el usuario que utiliza el servidor web (ejemplo: www-data) tiene permisos de escritura en esta carpeta." + +#: src/Core/Installer.php:497 +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 "Nota: como medida de seguridad deberia dar acceso de escritura solo a /view/smarty3 / → no al los archivos template (.tpl) que contiene." + +#: src/Core/Installer.php:500 +msgid "view/smarty3 is writable" +msgstr "Se puede escribir en /view/smarty3" + +#: src/Core/Installer.php:528 +msgid "" +"Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist" +" to .htaccess." +msgstr "" + +#: src/Core/Installer.php:530 +msgid "Error message from Curl when fetching" +msgstr "" + +#: src/Core/Installer.php:535 +msgid "Url rewrite is working" +msgstr "Reescribiendo la dirección..." + +#: src/Core/Installer.php:564 +msgid "ImageMagick PHP extension is not installed" +msgstr "No está instalada la extensión ImageMagick PHP" + +#: src/Core/Installer.php:566 +msgid "ImageMagick PHP extension is installed" +msgstr "ImageMagick PHP extension is installed" + +#: src/Core/Installer.php:568 tests/src/Core/InstallerTest.php:319 +#: tests/src/Core/InstallerTest.php:343 +msgid "ImageMagick supports GIF" +msgstr "ImageMagick supporta GIF" + +#: src/Core/Installer.php:589 +msgid "Could not connect to database." +msgstr "No es posible la conexión con la base de datos." + +#: src/Core/Installer.php:596 +msgid "Database already in use." +msgstr "Base de datos ya se encuentra en uso" + +#: src/Core/L10n.php:356 src/Model/Event.php:394 +msgid "Tuesday" +msgstr "Martes" + +#: src/Core/L10n.php:356 src/Model/Event.php:395 +msgid "Wednesday" +msgstr "Miércoles" + +#: src/Core/L10n.php:356 src/Model/Event.php:396 +msgid "Thursday" +msgstr "Jueves" + +#: src/Core/L10n.php:356 src/Model/Event.php:397 +msgid "Friday" +msgstr "Viernes" + +#: src/Core/L10n.php:356 src/Model/Event.php:398 +msgid "Saturday" +msgstr "Sábado" + +#: src/Core/L10n.php:360 src/Model/Event.php:413 +msgid "January" +msgstr "Enero" + +#: src/Core/L10n.php:360 src/Model/Event.php:414 +msgid "February" +msgstr "Febrero" + +#: src/Core/L10n.php:360 src/Model/Event.php:415 +msgid "March" +msgstr "Marzo" + +#: src/Core/L10n.php:360 src/Model/Event.php:416 +msgid "April" +msgstr "Abril" + +#: src/Core/L10n.php:360 src/Core/L10n.php:379 src/Model/Event.php:404 +#: src/Model/Event.php:417 +msgid "May" +msgstr "Mayo" + +#: src/Core/L10n.php:360 src/Model/Event.php:418 +msgid "June" +msgstr "Junio" + +#: src/Core/L10n.php:360 src/Model/Event.php:419 +msgid "July" +msgstr "Julio" + +#: src/Core/L10n.php:360 src/Model/Event.php:420 +msgid "August" +msgstr "Agosto" + +#: src/Core/L10n.php:360 src/Model/Event.php:421 +msgid "September" +msgstr "Septiembre" + +#: src/Core/L10n.php:360 src/Model/Event.php:422 +msgid "October" +msgstr "Octubre" + +#: src/Core/L10n.php:360 src/Model/Event.php:423 +msgid "November" +msgstr "Noviembre" + +#: src/Core/L10n.php:360 src/Model/Event.php:424 +msgid "December" +msgstr "Diciembre" + +#: src/Core/L10n.php:375 src/Model/Event.php:385 +msgid "Mon" +msgstr "Lun" + +#: src/Core/L10n.php:375 src/Model/Event.php:386 +msgid "Tue" +msgstr "Mar" + +#: src/Core/L10n.php:375 src/Model/Event.php:387 +msgid "Wed" +msgstr "Mie" + +#: src/Core/L10n.php:375 src/Model/Event.php:388 +msgid "Thu" +msgstr "Jue" + +#: src/Core/L10n.php:375 src/Model/Event.php:389 +msgid "Fri" +msgstr "Vie" + +#: src/Core/L10n.php:375 src/Model/Event.php:390 +msgid "Sat" +msgstr "Sab" + +#: src/Core/L10n.php:375 src/Model/Event.php:384 +msgid "Sun" +msgstr "Dom" + +#: src/Core/L10n.php:379 src/Model/Event.php:400 +msgid "Jan" +msgstr "Ene" + +#: src/Core/L10n.php:379 src/Model/Event.php:401 +msgid "Feb" +msgstr "Feb" + +#: src/Core/L10n.php:379 src/Model/Event.php:402 +msgid "Mar" +msgstr "Mar" + +#: src/Core/L10n.php:379 src/Model/Event.php:403 +msgid "Apr" +msgstr "Abr" + +#: src/Core/L10n.php:379 src/Model/Event.php:406 +msgid "Jul" +msgstr "Jul" + +#: src/Core/L10n.php:379 src/Model/Event.php:407 +msgid "Aug" +msgstr "Ago" + +#: src/Core/L10n.php:379 +msgid "Sep" +msgstr "Sep" + +#: src/Core/L10n.php:379 src/Model/Event.php:409 +msgid "Oct" +msgstr "Oct" + +#: src/Core/L10n.php:379 src/Model/Event.php:410 +msgid "Nov" +msgstr "Nov" + +#: src/Core/L10n.php:379 src/Model/Event.php:411 +msgid "Dec" +msgstr "Dec" + +#: src/Core/L10n.php:397 +msgid "poke" +msgstr "tocar" + +#: src/Core/L10n.php:397 +msgid "poked" +msgstr "tocó a" + +#: src/Core/L10n.php:398 +msgid "ping" +msgstr "hacer \"ping\"" + +#: src/Core/L10n.php:398 +msgid "pinged" +msgstr "hizo \"ping\" a" + +#: src/Core/L10n.php:399 +msgid "prod" +msgstr "empujar" + +#: src/Core/L10n.php:399 +msgid "prodded" +msgstr "empujó a" + +#: src/Core/L10n.php:400 +msgid "slap" +msgstr "abofetear" + +#: src/Core/L10n.php:400 +msgid "slapped" +msgstr "abofeteó a" + +#: src/Core/L10n.php:401 +msgid "finger" +msgstr "meter dedo" + +#: src/Core/L10n.php:401 +msgid "fingered" +msgstr "le metió un dedo a" + +#: src/Core/L10n.php:402 +msgid "rebuff" +msgstr "desairar" + +#: src/Core/L10n.php:402 +msgid "rebuffed" +msgstr "desairó a" + +#: src/Core/NotificationsManager.php:171 +msgid "System" +msgstr "Sistema" + +#: src/Core/NotificationsManager.php:261 src/Core/NotificationsManager.php:273 +#, php-format +msgid "%s commented on %s's post" +msgstr "%s comentó la publicación de %s" + +#: src/Core/NotificationsManager.php:272 +#, php-format +msgid "%s created a new post" +msgstr "%s creó una nueva publicación" + +#: src/Core/NotificationsManager.php:286 +#, php-format +msgid "%s liked %s's post" +msgstr "A %s le gusta la publicación de %s" + +#: src/Core/NotificationsManager.php:299 +#, php-format +msgid "%s disliked %s's post" +msgstr "A %s no le gusta la publicación de %s" + +#: src/Core/NotificationsManager.php:312 +#, php-format +msgid "%s is attending %s's event" +msgstr "%s está asistiendo al evento %s's" + +#: src/Core/NotificationsManager.php:325 +#, php-format +msgid "%s is not attending %s's event" +msgstr "%s no está asistiendo al evento %s's" + +#: src/Core/NotificationsManager.php:338 +#, php-format +msgid "%s may attend %s's event" +msgstr "%s podría asistir al evento %s's" + +#: src/Core/NotificationsManager.php:371 +#, php-format +msgid "%s is now friends with %s" +msgstr "%s es ahora es amigo de %s" + +#: src/Core/NotificationsManager.php:637 +msgid "Friend Suggestion" +msgstr "Propuestas de amistad" + +#: src/Core/NotificationsManager.php:671 +msgid "Friend/Connect Request" +msgstr "Solicitud de Amistad/Conexión" + +#: src/Core/NotificationsManager.php:671 +msgid "New Follower" +msgstr "Nuevo seguidor" + +#: src/Core/System.php:133 +msgid "Error 400 - Bad Request" +msgstr "" + +#: src/Core/System.php:134 +msgid "Error 401 - Unauthorized" +msgstr "" + +#: src/Core/System.php:135 +msgid "Error 403 - Forbidden" +msgstr "" + +#: src/Core/System.php:136 +msgid "Error 404 - Not Found" +msgstr "" + +#: src/Core/System.php:137 +msgid "Error 500 - Internal Server Error" +msgstr "" + +#: src/Core/System.php:138 +msgid "Error 503 - Service Unavailable" +msgstr "" + +#: src/Core/System.php:146 +msgid "" +"The server cannot or will not process the request due to an apparent client " +"error." +msgstr "" + +#: src/Core/System.php:147 +msgid "" +"Authentication is required and has failed or has not yet been provided." +msgstr "" + +#: src/Core/System.php:148 +msgid "" +"The request was valid, but the server is refusing action. The user might not" +" have the necessary permissions for a resource, or may need an account." +msgstr "" + +#: src/Core/System.php:149 +msgid "" +"The requested resource could not be found but may be available in the " +"future." +msgstr "" + +#: src/Core/System.php:150 +msgid "" +"An unexpected condition was encountered and no more specific message is " +"suitable." +msgstr "" + +#: src/Core/System.php:151 +msgid "" +"The server is currently unavailable (because it is overloaded or down for " +"maintenance). Please try again later." +msgstr "" + +#: src/Core/Update.php:163 +#, php-format +msgid "Update %s failed. See error logs." +msgstr "Falló la actualización de %s. Mira los registros de errores." + +#: src/Core/Update.php:219 +#, 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/Core/Update.php:225 +#, php-format +msgid "" +"The error message is\n" +"[pre]%s[/pre]" +msgstr "El mensaje de error es\n[pre]%s[/pre]" + +#: src/Core/Update.php:254 +#, php-format +msgid "" +"\n" +"\t\t\t\t\tThe friendica database was successfully updated from %s to %s." +msgstr "" + +#: src/Core/UserImport.php:101 +msgid "Error decoding account file" +msgstr "Error decodificando el archivo de cuenta" + +#: src/Core/UserImport.php:107 +msgid "Error! No version data in file! This is not a Friendica account file?" +msgstr "Error! No hay datos de versión en el archivo! ¿Es esto de una cuenta friendica? " + +#: src/Core/UserImport.php:115 +#, php-format +msgid "User '%s' already exists on this server!" +msgstr "La cuenta '%s' ya existe en este servidor!" + +#: src/Core/UserImport.php:151 +msgid "User creation error" +msgstr "Error al crear la cuenta" + +#: src/Core/UserImport.php:169 +msgid "User profile creation error" +msgstr "Error de creación del perfil de la cuenta" + +#: src/Core/UserImport.php:213 +#, php-format +msgid "%d contact not imported" +msgid_plural "%d contacts not imported" +msgstr[0] "%d contactos no encontrado" +msgstr[1] "%d contactos no importado" + +#: src/Core/UserImport.php:278 +msgid "Done. You can now login with your username and password" +msgstr "Hecho. Ahora podes ingresar con tu nombre de cuenta y la contraseña." + +#: src/Database/DBStructure.php:45 +msgid "There are no tables on MyISAM." +msgstr "No hay tablas en MyISAM" + +#: src/Database/DBStructure.php:69 +#, php-format +msgid "" +"\n" +"Error %d occurred during database update:\n" +"%s\n" +msgstr "\nError %d ocurrido durante la actualización de la base de datos:\n%s\n" + +#: src/Database/DBStructure.php:72 +msgid "Errors encountered performing database changes: " +msgstr "Errores encontrados al realizar cambios en la base de datos: " + +#: src/Database/DBStructure.php:259 +#, php-format +msgid "%s: Database update" +msgstr "" + +#: src/Database/DBStructure.php:520 +#, php-format +msgid "%s: updating %s table." +msgstr "%s: actualizando %s tabla." + +#: src/LegacyModule.php:29 +#, php-format +msgid "Legacy module file not found: %s" +msgstr "" + +#: src/Model/Contact.php:994 +msgid "Drop Contact" +msgstr "Eliminar contacto" + +#: src/Model/Contact.php:1460 +msgid "Organisation" +msgstr "Organización" + +#: src/Model/Contact.php:1464 +msgid "News" +msgstr "Noticias" + +#: src/Model/Contact.php:1468 +msgid "Forum" +msgstr "Foro" + +#: src/Model/Contact.php:1650 +msgid "Connect URL missing." +msgstr "Falta el conector URL." + +#: src/Model/Contact.php:1659 +msgid "" +"The contact could not be added. Please check the relevant network " +"credentials in your Settings -> Social Networks page." +msgstr "" + +#: src/Model/Contact.php:1698 +msgid "" +"This site is not configured to allow communications with other networks." +msgstr "Este sitio no está configurado para permitir la comunicación con otras redes." + +#: src/Model/Contact.php:1699 src/Model/Contact.php:1712 +msgid "No compatible communication protocols or feeds were discovered." +msgstr "No se ha descubierto protocolos de comunicación o fuentes compatibles." + +#: src/Model/Contact.php:1710 +msgid "The profile address specified does not provide adequate information." +msgstr "La dirección del perfil especificado no proporciona información adecuada." + +#: src/Model/Contact.php:1715 +msgid "An author or name was not found." +msgstr "No se ha encontrado un autor o nombre." + +#: src/Model/Contact.php:1718 +msgid "No browser URL could be matched to this address." +msgstr "Ninguna dirección concuerda con la suministrada." + +#: src/Model/Contact.php:1721 +msgid "" +"Unable to match @-style Identity Address with a known protocol or email " +"contact." +msgstr "Imposible identificar la dirección @ con algún protocolo conocido o dirección de contacto." + +#: src/Model/Contact.php:1722 +msgid "Use mailto: in front of address to force email check." +msgstr "Escribe mailto: al principio de la dirección para forzar el envío." + +#: src/Model/Contact.php:1728 +msgid "" +"The profile address specified belongs to a network which has been disabled " +"on this site." +msgstr "La dirección del perfil especificada pertenece a una red que ha sido deshabilitada en este sitio." + +#: src/Model/Contact.php:1733 +msgid "" +"Limited profile. This person will be unable to receive direct/personal " +"notifications from you." +msgstr "Perfil limitado. Esta persona no podrá recibir notificaciones directas/personales tuyas." + +#: src/Model/Contact.php:1784 +msgid "Unable to retrieve contact information." +msgstr "No ha sido posible recibir la información del contacto." + +#: src/Model/Event.php:59 src/Model/Event.php:76 src/Model/Event.php:433 +#: src/Model/Event.php:908 +msgid "Starts:" +msgstr "Inicio:" + +#: src/Model/Event.php:62 src/Model/Event.php:82 src/Model/Event.php:434 +#: src/Model/Event.php:912 +msgid "Finishes:" +msgstr "Final:" + +#: src/Model/Event.php:382 +msgid "all-day" +msgstr "todo el día" + +#: src/Model/Event.php:405 +msgid "Jun" +msgstr "Jun" + +#: src/Model/Event.php:408 +msgid "Sept" +msgstr "Sept" + +#: src/Model/Event.php:431 +msgid "No events to display" +msgstr "No hay eventos a mostrar" + +#: src/Model/Event.php:555 +msgid "l, F j" +msgstr "l, F j" + +#: src/Model/Event.php:586 +msgid "Edit event" +msgstr "Editar evento" + +#: src/Model/Event.php:587 +msgid "Duplicate event" +msgstr "Duplicar evento" + +#: src/Model/Event.php:588 +msgid "Delete event" +msgstr "Borrar evento" + +#: src/Model/Event.php:620 src/Model/Item.php:3525 src/Model/Item.php:3532 +msgid "link to source" +msgstr "Enlace al original" + +#: src/Model/Event.php:841 +msgid "D g:i A" +msgstr "D g:i A" + +#: src/Model/Event.php:842 +msgid "g:i A" +msgstr "g:i A" + +#: src/Model/Event.php:927 src/Model/Event.php:929 +msgid "Show map" +msgstr "Mostrar mapa" + +#: src/Model/Event.php:928 +msgid "Hide map" +msgstr "Ocultar mapa" + +#: src/Model/Event.php:1018 +#, php-format +msgid "%s's birthday" +msgstr "Cumpleaños de %s" + +#: src/Model/Event.php:1019 +#, php-format +msgid "Happy Birthday %s" +msgstr "Feliz cumpleaños %s" + +#: src/Model/FileTag.php:255 +msgid "Item filed" +msgstr "Elemento archivado" + +#: src/Model/Group.php:43 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"may apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." +msgstr "Un grupo eliminado con este nombre fue restablecido. Los permisos existentes pueden aplicarse a este grupo y a sus futuros miembros. Si esto no es lo que pretendes, por favor, crea otro grupo con un nombre diferente." + +#: src/Model/Group.php:329 +msgid "Default privacy group for new contacts" +msgstr "Grupo por defecto para nuevos contactos" + +#: src/Model/Group.php:362 +msgid "Everybody" +msgstr "Todo el mundo" + +#: src/Model/Group.php:382 +msgid "edit" +msgstr "editar" + +#: src/Model/Group.php:411 +msgid "Edit group" +msgstr "Editar grupo" + +#: src/Model/Group.php:414 +msgid "Create a new group" +msgstr "Crear un nuevo grupo" + +#: src/Model/Group.php:416 +msgid "Edit groups" +msgstr "Editar grupo" + +#: src/Model/Item.php:3263 +msgid "activity" +msgstr "Actividad" + +#: src/Model/Item.php:3265 src/Object/Post.php:441 src/Object/Post.php:453 +msgid "comment" +msgid_plural "comments" +msgstr[0] "" +msgstr[1] "Comentario" + +#: src/Model/Item.php:3268 +msgid "post" +msgstr "Publicación" + +#: src/Model/Item.php:3364 +#, php-format +msgid "Content warning: %s" +msgstr "" + +#: src/Model/Item.php:3443 +msgid "bytes" +msgstr "bytes" + +#: src/Model/Item.php:3519 +msgid "View on separate page" +msgstr "Ver en pagina aparte" + +#: src/Model/Item.php:3520 +msgid "view on separate page" +msgstr "ver en pagina aparte" + +#: src/Model/Mail.php:38 src/Model/Mail.php:170 +msgid "[no subject]" +msgstr "[sin asunto]" + +#: src/Model/Profile.php:112 +msgid "Requested account is not available." +msgstr "La cuenta solicitada no está disponible." + +#: src/Model/Profile.php:130 +msgid "Requested profile is not available." +msgstr "El perfil solicitado no está disponible." + +#: src/Model/Profile.php:178 src/Model/Profile.php:419 +#: src/Model/Profile.php:873 +msgid "Edit profile" +msgstr "Editar perfil" + +#: src/Model/Profile.php:353 +msgid "Atom feed" +msgstr "Atom feed" + +#: src/Model/Profile.php:392 +msgid "Manage/edit profiles" +msgstr "Administrar/editar perfiles" + +#: src/Model/Profile.php:444 src/Module/Contact.php:648 +msgid "XMPP:" +msgstr "XMPP:" + +#: src/Model/Profile.php:568 src/Model/Profile.php:666 +msgid "g A l F d" +msgstr "g A l F d" + +#: src/Model/Profile.php:569 +msgid "F d" +msgstr "F d" + +#: src/Model/Profile.php:631 src/Model/Profile.php:717 +msgid "[today]" +msgstr "[hoy]" + +#: src/Model/Profile.php:642 +msgid "Birthday Reminders" +msgstr "Recordatorios de cumpleaños" + +#: src/Model/Profile.php:643 +msgid "Birthdays this week:" +msgstr "Cumpleaños esta semana:" + +#: src/Model/Profile.php:704 +msgid "[No description]" +msgstr "[Sin descripción]" + +#: src/Model/Profile.php:731 +msgid "Event Reminders" +msgstr "Recordatorios de eventos" + +#: src/Model/Profile.php:732 +msgid "Upcoming events the next 7 days:" +msgstr "" + +#: src/Model/Profile.php:755 +msgid "Member since:" +msgstr "" + +#: src/Model/Profile.php:763 +msgid "j F, Y" +msgstr "j F, Y" + +#: src/Model/Profile.php:764 +msgid "j F" +msgstr "j F" + +#: src/Model/Profile.php:772 src/Util/Temporal.php:146 +msgid "Birthday:" +msgstr "Fecha de nacimiento:" + +#: src/Model/Profile.php:779 +msgid "Age:" +msgstr "Edad:" + +#: src/Model/Profile.php:792 +#, php-format +msgid "for %1$d %2$s" +msgstr "por %1$d %2$s" + +#: src/Model/Profile.php:816 +msgid "Religion:" +msgstr "Religión:" + +#: src/Model/Profile.php:824 +msgid "Hobbies/Interests:" +msgstr "Aficiones/Intereses:" + +#: src/Model/Profile.php:836 +msgid "Contact information and Social Networks:" +msgstr "Información de contacto y Redes sociales:" + +#: src/Model/Profile.php:840 +msgid "Musical interests:" +msgstr "Intereses musicales:" + +#: src/Model/Profile.php:844 +msgid "Books, literature:" +msgstr "Libros, literatura:" + +#: src/Model/Profile.php:848 +msgid "Television:" +msgstr "Televisión:" + +#: src/Model/Profile.php:852 +msgid "Film/dance/culture/entertainment:" +msgstr "Películas/baile/cultura/entretenimiento:" + +#: src/Model/Profile.php:856 +msgid "Love/Romance:" +msgstr "Amor/Romance:" + +#: src/Model/Profile.php:860 +msgid "Work/employment:" +msgstr "Trabajo/ocupación:" + +#: src/Model/Profile.php:864 +msgid "School/education:" +msgstr "Escuela/estudios:" + +#: src/Model/Profile.php:869 +msgid "Forums:" +msgstr "Foros:" + +#: src/Model/Profile.php:913 src/Module/Contact.php:873 +msgid "Profile Details" +msgstr "Detalles del Perfil" + +#: src/Model/Profile.php:963 +msgid "Only You Can See This" +msgstr "Únicamente tú puedes ver esto" + +#: src/Model/Profile.php:971 src/Model/Profile.php:974 +msgid "Tips for New Members" +msgstr "Consejos para nuevos miembros" + +#: src/Model/Profile.php:1147 +#, php-format +msgid "OpenWebAuth: %1$s welcomes %2$s" +msgstr "" + +#: src/Model/User.php:216 +msgid "Login failed" +msgstr "" + +#: src/Model/User.php:247 +msgid "Not enough information to authenticate" +msgstr "" + +#: src/Model/User.php:325 +msgid "Password can't be empty" +msgstr "" + +#: src/Model/User.php:344 +msgid "Empty passwords are not allowed." +msgstr "" + +#: src/Model/User.php:348 +msgid "" +"The new password has been exposed in a public data dump, please choose " +"another." +msgstr "" + +#: src/Model/User.php:354 +msgid "" +"The password can't contain accentuated letters, white spaces or colons (:)" +msgstr "" + +#: src/Model/User.php:452 +msgid "Passwords do not match. Password unchanged." +msgstr "Las contraseñas no coinciden. La contraseña no ha sido modificada." + +#: src/Model/User.php:459 +msgid "An invitation is required." +msgstr "Se necesita invitación." + +#: src/Model/User.php:463 +msgid "Invitation could not be verified." +msgstr "No se puede verificar la invitación." + +#: src/Model/User.php:470 +msgid "Invalid OpenID url" +msgstr "Dirección OpenID no válida" + +#: src/Model/User.php:483 src/Module/Login.php:105 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." +msgstr "Se ha encontrado un problema para acceder con el OpenID que has escrito. Verifica que lo hayas escrito correctamente." + +#: src/Model/User.php:483 src/Module/Login.php:105 +msgid "The error message was:" +msgstr "El mensaje del error fue:" + +#: src/Model/User.php:489 +msgid "Please enter the required information." +msgstr "Por favor, introduce la información necesaria." + +#: src/Model/User.php:505 +#, php-format +msgid "" +"system.username_min_length (%s) and system.username_max_length (%s) are " +"excluding each other, swapping values." +msgstr "" + +#: src/Model/User.php:512 +#, php-format +msgid "Username should be at least %s character." +msgid_plural "Username should be at least %s characters." +msgstr[0] "" +msgstr[1] "" + +#: src/Model/User.php:516 +#, 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:524 +msgid "That doesn't appear to be your full (First Last) name." +msgstr "No parece que ese sea tu nombre completo." + +#: src/Model/User.php:529 +msgid "Your email domain is not among those allowed on this site." +msgstr "Tu dominio de correo no se encuentra entre los permitidos en este sitio." + +#: src/Model/User.php:533 +msgid "Not a valid email address." +msgstr "No es una dirección de correo electrónico válida." + +#: src/Model/User.php:536 +msgid "The nickname was blocked from registration by the nodes admin." +msgstr "" + +#: src/Model/User.php:540 src/Model/User.php:548 +msgid "Cannot use that email." +msgstr "No se puede utilizar este correo electrónico." + +#: src/Model/User.php:555 +msgid "Your nickname can only contain a-z, 0-9 and _." +msgstr "" + +#: src/Model/User.php:562 src/Model/User.php:619 +msgid "Nickname is already registered. Please choose another." +msgstr "Apodo ya registrado. Por favor, elije otro." + +#: src/Model/User.php:572 +msgid "SERIOUS ERROR: Generation of security keys failed." +msgstr "ERROR GRAVE: La generación de claves de seguridad ha fallado." + +#: src/Model/User.php:606 src/Model/User.php:610 +msgid "An error occurred during registration. Please try again." +msgstr "Se produjo un error durante el registro. Por favor, inténtalo de nuevo." + +#: src/Model/User.php:630 view/theme/duepuntozero/config.php:55 +msgid "default" +msgstr "predeterminado" + +#: src/Model/User.php:635 +msgid "An error occurred creating your default profile. Please try again." +msgstr "Error al crear tu perfil predeterminado. Por favor, inténtalo de nuevo." + +#: src/Model/User.php:642 +msgid "An error occurred creating your self contact. Please try again." +msgstr "" + +#: src/Model/User.php:651 +msgid "" +"An error occurred creating your default contact group. Please try again." +msgstr "" + +#: src/Model/User.php:726 +#, 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:743 +#, php-format +msgid "Registration at %s" +msgstr "Registro en %s" + +#: src/Model/User.php:761 +#, 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:767 +#, 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/Module/Contact.php:167 +#, php-format +msgid "%d contact edited." +msgid_plural "%d contacts edited." +msgstr[0] "%d contacto editado." +msgstr[1] "%d contacts edited." + +#: src/Module/Contact.php:192 src/Module/Contact.php:375 +msgid "Could not access contact record." +msgstr "No se pudo acceder a los datos del contacto." + +#: src/Module/Contact.php:202 +msgid "Could not locate selected profile." +msgstr "No se pudo encontrar el perfil seleccionado." + +#: src/Module/Contact.php:234 +msgid "Contact updated." +msgstr "Contacto actualizado." + +#: src/Module/Contact.php:396 +msgid "Contact has been blocked" +msgstr "El contacto ha sido bloqueado" + +#: src/Module/Contact.php:396 +msgid "Contact has been unblocked" +msgstr "El contacto ha sido desbloqueado" + +#: src/Module/Contact.php:406 +msgid "Contact has been ignored" +msgstr "El contacto ha sido ignorado" + +#: src/Module/Contact.php:406 +msgid "Contact has been unignored" +msgstr "El contacto ya no está ignorado" + +#: src/Module/Contact.php:416 +msgid "Contact has been archived" +msgstr "El contacto ha sido archivado" + +#: src/Module/Contact.php:416 +msgid "Contact has been unarchived" +msgstr "El contacto ya no está archivado" + +#: src/Module/Contact.php:440 +msgid "Drop contact" +msgstr "Eliminar contacto" + +#: src/Module/Contact.php:443 src/Module/Contact.php:821 +msgid "Do you really want to delete this contact?" +msgstr "¿Estás seguro de que quieres eliminar este contacto?" + +#: src/Module/Contact.php:457 +msgid "Contact has been removed." +msgstr "El contacto ha sido eliminado" + +#: src/Module/Contact.php:488 +#, php-format +msgid "You are mutual friends with %s" +msgstr "Ahora tienes una amistad mutua con %s" + +#: src/Module/Contact.php:493 +#, php-format +msgid "You are sharing with %s" +msgstr "Estás compartiendo con %s" + +#: src/Module/Contact.php:498 +#, php-format +msgid "%s is sharing with you" +msgstr "%s está compartiendo contigo" + +#: src/Module/Contact.php:522 +msgid "Private communications are not available for this contact." +msgstr "Las comunicaciones privadas no está disponibles para este contacto." + +#: src/Module/Contact.php:524 +msgid "Never" +msgstr "Nunca" + +#: src/Module/Contact.php:527 +msgid "(Update was successful)" +msgstr "(La actualización se ha completado)" + +#: src/Module/Contact.php:527 +msgid "(Update was not successful)" +msgstr "(La actualización no se ha completado)" + +#: src/Module/Contact.php:529 src/Module/Contact.php:1059 +msgid "Suggest friends" +msgstr "Sugerir amigos" + +#: src/Module/Contact.php:533 +#, php-format +msgid "Network type: %s" +msgstr "Tipo de red: %s" + +#: src/Module/Contact.php:538 +msgid "Communications lost with this contact!" +msgstr "¡Se ha perdido la comunicación con este contacto!" + +#: src/Module/Contact.php:544 +msgid "Fetch further information for feeds" +msgstr "Recaudar informacion complementaria de los feeds" + +#: src/Module/Contact.php:546 +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/Module/Contact.php:549 +msgid "Fetch information" +msgstr "Recaudar informacion" + +#: src/Module/Contact.php:550 +msgid "Fetch keywords" +msgstr "" + +#: src/Module/Contact.php:551 +msgid "Fetch information and keywords" +msgstr "Recaudar informacion y palabras claves" + +#: src/Module/Contact.php:583 +msgid "Profile Visibility" +msgstr "Visibilidad del Perfil" + +#: src/Module/Contact.php:584 +msgid "Contact Information / Notes" +msgstr "Información del Contacto / Notas" + +#: src/Module/Contact.php:585 +msgid "Contact Settings" +msgstr "Ajustes del contacto" + +#: src/Module/Contact.php:594 +msgid "Contact" +msgstr "Contacto" + +#: src/Module/Contact.php:598 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Por favor, selecciona el perfil que quieras mostrar a %s cuando esté viendo tu perfil de forma segura." + +#: src/Module/Contact.php:600 +msgid "Their personal note" +msgstr "Su nota personal" + +#: src/Module/Contact.php:602 +msgid "Edit contact notes" +msgstr "Editar notas del contacto" + +#: src/Module/Contact.php:606 +msgid "Block/Unblock contact" +msgstr "Boquear/Desbloquear contacto" + +#: src/Module/Contact.php:607 +msgid "Ignore contact" +msgstr "Ignorar contacto" + +#: src/Module/Contact.php:608 +msgid "Repair URL settings" +msgstr "Configuración de reparación de la dirección" + +#: src/Module/Contact.php:609 +msgid "View conversations" +msgstr "Ver conversaciones" + +#: src/Module/Contact.php:614 +msgid "Last update:" +msgstr "Última actualización:" + +#: src/Module/Contact.php:616 +msgid "Update public posts" +msgstr "Actualizar publicaciones públicas" + +#: src/Module/Contact.php:618 src/Module/Contact.php:1069 +msgid "Update now" +msgstr "Actualizar ahora" + +#: src/Module/Contact.php:624 src/Module/Contact.php:826 +#: src/Module/Contact.php:1086 +msgid "Unignore" +msgstr "Quitar de Ignorados" + +#: src/Module/Contact.php:628 +msgid "Currently blocked" +msgstr "Bloqueados" + +#: src/Module/Contact.php:629 +msgid "Currently ignored" +msgstr "Ignorados" + +#: src/Module/Contact.php:630 +msgid "Currently archived" +msgstr "Archivados" + +#: src/Module/Contact.php:631 +msgid "Awaiting connection acknowledge" +msgstr "" + +#: src/Module/Contact.php:632 +msgid "" +"Replies/likes to your public posts may still be visible" +msgstr "Los comentarios o \"me gusta\" en tus publicaciones públicas todavía pueden ser visibles." + +#: src/Module/Contact.php:633 +msgid "Notification for new posts" +msgstr "Notificacion de nuevos temas." + +#: src/Module/Contact.php:633 +msgid "Send a notification of every new post of this contact" +msgstr "Enviar una notificacion por nuevos temas de este contacto." + +#: src/Module/Contact.php:636 +msgid "Blacklisted keywords" +msgstr "Lista negra de palabras" + +#: src/Module/Contact.php:636 +msgid "" +"Comma separated list of keywords that should not be converted to hashtags, " +"when \"Fetch information and keywords\" is selected" +msgstr "Lista separada por comas de palabras claves que no deberian ser convertido en #hashtags cuando \"Recaudar informacion y palabras claves\" es seleccionado" + +#: src/Module/Contact.php:653 +msgid "Actions" +msgstr "Acciones" + +#: src/Module/Contact.php:699 +msgid "Suggestions" +msgstr "Sugerencias" + +#: src/Module/Contact.php:702 +msgid "Suggest potential friends" +msgstr "Amistades potenciales sugeridas" + +#: src/Module/Contact.php:710 +msgid "Show all contacts" +msgstr "Mostrar todos los contactos" + +#: src/Module/Contact.php:715 +msgid "Unblocked" +msgstr "Desbloqueados" + +#: src/Module/Contact.php:718 +msgid "Only show unblocked contacts" +msgstr "Mostrar solo contactos sin bloquear" + +#: src/Module/Contact.php:723 +msgid "Blocked" +msgstr "Bloqueados" + +#: src/Module/Contact.php:726 +msgid "Only show blocked contacts" +msgstr "Mostrar solo contactos bloqueados" + +#: src/Module/Contact.php:731 +msgid "Ignored" +msgstr "Ignorados" + +#: src/Module/Contact.php:734 +msgid "Only show ignored contacts" +msgstr "Mostrar solo contactos ignorados" + +#: src/Module/Contact.php:739 +msgid "Archived" +msgstr "Archivados" + +#: src/Module/Contact.php:742 +msgid "Only show archived contacts" +msgstr "Mostrar solo contactos archivados" + +#: src/Module/Contact.php:747 +msgid "Hidden" +msgstr "Ocultos" + +#: src/Module/Contact.php:750 +msgid "Only show hidden contacts" +msgstr "Mostrar solo contactos ocultos" + +#: src/Module/Contact.php:758 +msgid "Organize your contact groups" +msgstr "" + +#: src/Module/Contact.php:816 +msgid "Search your contacts" +msgstr "Buscar en tus contactos" + +#: src/Module/Contact.php:827 src/Module/Contact.php:1095 +msgid "Archive" +msgstr "Archivo" + +#: src/Module/Contact.php:827 src/Module/Contact.php:1095 +msgid "Unarchive" +msgstr "Sin archivar" + +#: src/Module/Contact.php:830 +msgid "Batch Actions" +msgstr "Accones en lote" + +#: src/Module/Contact.php:857 +msgid "Conversations started by this contact" +msgstr "" + +#: src/Module/Contact.php:862 +msgid "Posts and Comments" +msgstr "" + +#: src/Module/Contact.php:885 +msgid "View all contacts" +msgstr "Ver todos los contactos" + +#: src/Module/Contact.php:896 +msgid "View all common friends" +msgstr "Ver todos los conocidos en común " + +#: src/Module/Contact.php:906 +msgid "Advanced Contact Settings" +msgstr "Configuración avanzada" + +#: src/Module/Contact.php:992 +msgid "Mutual Friendship" +msgstr "Amistad recíproca" + +#: src/Module/Contact.php:997 +msgid "is a fan of yours" +msgstr "es tu fan" + +#: src/Module/Contact.php:1002 +msgid "you are a fan of" +msgstr "eres fan de" + +#: src/Module/Contact.php:1026 +msgid "Edit contact" +msgstr "Modificar contacto" + +#: src/Module/Contact.php:1080 +msgid "Toggle Blocked status" +msgstr "Cambiar bloqueados" + +#: src/Module/Contact.php:1088 +msgid "Toggle Ignored status" +msgstr "Cambiar ignorados" + +#: src/Module/Contact.php:1097 +msgid "Toggle Archive status" +msgstr "Cambiar archivados" + +#: src/Module/Contact.php:1105 +msgid "Delete contact" +msgstr "Eliminar contacto" + +#: src/Module/Install.php:120 +msgid "Friendica Communications Server - Setup" +msgstr "" + +#: src/Module/Install.php:131 +msgid "System check" +msgstr "Verificación del sistema" + +#: src/Module/Install.php:136 +msgid "Check again" +msgstr "Compruebalo de nuevo" + +#: src/Module/Install.php:153 +msgid "Database connection" +msgstr "Conexión con la base de datos" + +#: src/Module/Install.php:154 +msgid "" +"In order to install Friendica we need to know how to connect to your " +"database." +msgstr "Con el fin de poder instalar Friendica, necesitamos saber cómo conectar con tu base de datos." + +#: src/Module/Install.php:155 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Por favor, contacta con tu proveedor de servicios o con el administrador de la página si tienes alguna pregunta sobre estas configuraciones." + +#: src/Module/Install.php:156 +msgid "" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "La base de datos que especifiques a continuación debería existir ya. Si no es el caso, debes crearla antes de continuar." + +#: src/Module/Install.php:159 +msgid "Database Server Name" +msgstr "Nombre del servidor de la base de datos" + +#: src/Module/Install.php:164 +msgid "Database Login Name" +msgstr "Usuario de la base de datos" + +#: src/Module/Install.php:170 +msgid "Database Login Password" +msgstr "Contraseña de la base de datos" + +#: src/Module/Install.php:172 +msgid "For security reasons the password must not be empty" +msgstr "Por razones de seguridad la contraseña no debe estar vacía" + +#: src/Module/Install.php:175 +msgid "Database Name" +msgstr "Nombre de la base de datos" + +#: src/Module/Install.php:180 src/Module/Install.php:216 +msgid "Site administrator email address" +msgstr "Dirección de correo del administrador de la web" + +#: src/Module/Install.php:182 src/Module/Install.php:216 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "La dirección de correo de tu cuenta debe coincidir con esta para poder usar el panel de administración de la web." + +#: src/Module/Install.php:186 src/Module/Install.php:217 +msgid "Please select a default timezone for your website" +msgstr "Por favor, selecciona la zona horaria predeterminada para tu web" + +#: src/Module/Install.php:210 +msgid "Site settings" +msgstr "Configuración de la página web" + +#: src/Module/Install.php:219 +msgid "System Language:" +msgstr "Sistema de idioma:" + +#: src/Module/Install.php:221 +msgid "" +"Set the default language for your Friendica installation interface and to " +"send emails." +msgstr "Seleccione el idioma por defecto para su interfaz de instalación de Friendica y para enviar emails." + +#: src/Module/Install.php:233 +msgid "Your Friendica site database has been installed." +msgstr "La base de datos de su sitio web de Friendica ha sido instalada." + +#: src/Module/Install.php:241 +msgid "Installation finished" +msgstr "" + +#: src/Module/Install.php:262 +msgid "

What next

" +msgstr "

¿Ahora qué?

" + +#: src/Module/Install.php:263 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"worker." +msgstr "" + +#: src/Module/Install.php:266 +#, php-format +msgid "" +"Go to your new Friendica node registration page " +"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/Module/Itemsource.php:33 +msgid "Item Guid" +msgstr "" + +#: src/Module/Login.php:289 +msgid "Create a New Account" +msgstr "Crear una nueva cuenta" + +#: src/Module/Login.php:322 +msgid "Password: " +msgstr "Contraseña: " + +#: src/Module/Login.php:323 +msgid "Remember me" +msgstr "Recordarme" + +#: src/Module/Login.php:326 +msgid "Or login using OpenID: " +msgstr "O inicia sesión usando OpenID: " + +#: src/Module/Login.php:332 +msgid "Forgot your password?" +msgstr "¿Olvidaste la contraseña?" + +#: src/Module/Login.php:335 +msgid "Website Terms of Service" +msgstr "Términos de uso del sitio" + +#: src/Module/Login.php:336 +msgid "terms of service" +msgstr "Términos de uso" + +#: src/Module/Login.php:338 +msgid "Website Privacy Policy" +msgstr "Política de privacidad del sitio" + +#: src/Module/Login.php:339 +msgid "privacy policy" +msgstr "Política de privacidad" + +#: src/Module/Logout.php:27 +msgid "Logged out." +msgstr "Sesión finalizada" + +#: src/Module/Proxy.php:136 +msgid "Bad Request." +msgstr "" + +#: src/Module/Tos.php:35 src/Module/Tos.php:75 +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/Module/Tos.php:36 src/Module/Tos.php:76 +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/Module/Tos.php:37 src/Module/Tos.php:77 +#, php-format +msgid "" +"At any point in time a logged in user can export their account data from the" +" account settings. If the user wants " +"to delete their account they can do so at %1$s/removeme. 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/Module/Tos.php:40 src/Module/Tos.php:74 +msgid "Privacy Statement" +msgstr "" + +#: src/Object/Post.php:129 msgid "This entry was edited" msgstr "Esta entrada fue editada" -#: object/Item.php:151 +#: src/Object/Post.php:192 +msgid "Delete locally" +msgstr "" + +#: src/Object/Post.php:195 +msgid "Delete globally" +msgstr "" + +#: src/Object/Post.php:195 +msgid "Remove locally" +msgstr "" + +#: src/Object/Post.php:209 msgid "save to folder" msgstr "grabado en directorio" -#: object/Item.php:221 +#: src/Object/Post.php:244 msgid "I will attend" msgstr "Voy a estar presente" -#: object/Item.php:221 +#: src/Object/Post.php:244 msgid "I will not attend" msgstr "No voy a estar presente" -#: object/Item.php:221 +#: src/Object/Post.php:244 msgid "I might attend" msgstr "Puede que voy a estar presente" -#: object/Item.php:247 -msgid "add star" -msgstr "Añadir estrella" - -#: object/Item.php:248 -msgid "remove star" -msgstr "Quitar estrella" - -#: object/Item.php:249 -msgid "toggle star status" -msgstr "Añadir a destacados" - -#: object/Item.php:252 -msgid "starred" -msgstr "marcados con estrellas" - -#: object/Item.php:257 +#: src/Object/Post.php:272 msgid "ignore thread" msgstr "ignorar publicación" -#: object/Item.php:258 +#: src/Object/Post.php:273 msgid "unignore thread" msgstr "revertir ignorar publicacion" -#: object/Item.php:259 +#: src/Object/Post.php:274 msgid "toggle ignore status" msgstr "cambiar estatus de observación" -#: object/Item.php:269 +#: src/Object/Post.php:285 +msgid "add star" +msgstr "Añadir estrella" + +#: src/Object/Post.php:286 +msgid "remove star" +msgstr "Quitar estrella" + +#: src/Object/Post.php:287 +msgid "toggle star status" +msgstr "Añadir a destacados" + +#: src/Object/Post.php:290 +msgid "starred" +msgstr "marcados con estrellas" + +#: src/Object/Post.php:294 msgid "add tag" msgstr "añadir etiqueta" -#: object/Item.php:280 +#: src/Object/Post.php:305 msgid "like" msgstr "me gusta" -#: object/Item.php:281 +#: src/Object/Post.php:306 msgid "dislike" msgstr "no me gusta" -#: object/Item.php:284 +#: src/Object/Post.php:309 msgid "Share this" msgstr "Compartir esto" -#: object/Item.php:284 +#: src/Object/Post.php:309 msgid "share" msgstr "compartir" -#: object/Item.php:352 +#: src/Object/Post.php:376 msgid "to" msgstr "a" -#: object/Item.php:353 +#: src/Object/Post.php:377 msgid "via" msgstr "vía" -#: object/Item.php:354 +#: src/Object/Post.php:378 msgid "Wall-to-Wall" msgstr "Muro-A-Muro" -#: object/Item.php:355 +#: src/Object/Post.php:379 msgid "via Wall-To-Wall:" msgstr "via Muro-A-Muro:" -#: object/Item.php:414 +#: src/Object/Post.php:439 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d comentario" msgstr[1] "%d comentarios" -#: object/Item.php:703 -msgid "Bold" -msgstr "Negrita" +#: src/Protocol/Diaspora.php:2449 +msgid "Sharing notification from Diaspora network" +msgstr "Compartir notificaciones con la red Diaspora*" -#: object/Item.php:704 -msgid "Italic" -msgstr "Cursiva" +#: src/Protocol/Diaspora.php:3543 +msgid "Attachments:" +msgstr "Archivos adjuntos:" -#: object/Item.php:705 -msgid "Underline" -msgstr "Subrayado" +#: src/Protocol/OStatus.php:1838 +#, php-format +msgid "%s is now following %s." +msgstr "%s sigue ahora a %s." -#: object/Item.php:706 -msgid "Quote" -msgstr "Cita" +#: src/Protocol/OStatus.php:1839 +msgid "following" +msgstr "siguiendo" -#: object/Item.php:707 -msgid "Code" -msgstr "Código" +#: src/Protocol/OStatus.php:1842 +#, php-format +msgid "%s stopped following %s." +msgstr "%s dejó de seguir a %s." -#: object/Item.php:708 -msgid "Image" -msgstr "Imagen" +#: src/Protocol/OStatus.php:1843 +msgid "stopped following" +msgstr "dejó de seguir" -#: object/Item.php:709 -msgid "Link" -msgstr "Enlace" +#: src/Util/Temporal.php:150 +msgid "YYYY-MM-DD or MM-DD" +msgstr "YYYY-MM-DD o MM-DD" -#: object/Item.php:710 -msgid "Video" -msgstr "Vídeo" +#: src/Util/Temporal.php:293 +msgid "never" +msgstr "nunca" -#: view/theme/duepuntozero/config.php:48 +#: src/Util/Temporal.php:300 +msgid "less than a second ago" +msgstr "hace menos de un segundo" + +#: src/Util/Temporal.php:308 +msgid "year" +msgstr "año" + +#: src/Util/Temporal.php:308 +msgid "years" +msgstr "años" + +#: src/Util/Temporal.php:309 +msgid "months" +msgstr "meses" + +#: src/Util/Temporal.php:310 +msgid "weeks" +msgstr "semanas" + +#: src/Util/Temporal.php:311 +msgid "days" +msgstr "días" + +#: src/Util/Temporal.php:312 +msgid "hour" +msgstr "hora" + +#: src/Util/Temporal.php:312 +msgid "hours" +msgstr "horas" + +#: src/Util/Temporal.php:313 +msgid "minute" +msgstr "minuto" + +#: src/Util/Temporal.php:313 +msgid "minutes" +msgstr "minutos" + +#: src/Util/Temporal.php:314 +msgid "second" +msgstr "segundo" + +#: src/Util/Temporal.php:314 +msgid "seconds" +msgstr "segundos" + +#: src/Util/Temporal.php:324 +#, php-format +msgid "in %1$d %2$s" +msgstr "" + +#: src/Util/Temporal.php:327 +#, php-format +msgid "%1$d %2$s ago" +msgstr "hace %1$d %2$s" + +#: src/Worker/Delivery.php:431 +msgid "(no subject)" +msgstr "(sin asunto)" + +#: update.php:193 +#, php-format +msgid "%s: Updating author-id and owner-id in item and thread table. " +msgstr "" + +#: update.php:239 +#, php-format +msgid "%s: Updating post-type." +msgstr "" + +#: view/theme/duepuntozero/config.php:56 msgid "greenzero" msgstr "greenzero" -#: view/theme/duepuntozero/config.php:49 +#: view/theme/duepuntozero/config.php:57 msgid "purplezero" msgstr "purplezero" -#: view/theme/duepuntozero/config.php:50 +#: view/theme/duepuntozero/config.php:58 msgid "easterbunny" msgstr "easterbunny" -#: view/theme/duepuntozero/config.php:51 +#: view/theme/duepuntozero/config.php:59 msgid "darkzero" msgstr "darkzero" -#: view/theme/duepuntozero/config.php:52 +#: view/theme/duepuntozero/config.php:60 msgid "comix" msgstr "comix" -#: view/theme/duepuntozero/config.php:53 +#: view/theme/duepuntozero/config.php:61 msgid "slackr" msgstr "slackr" -#: view/theme/duepuntozero/config.php:68 +#: view/theme/duepuntozero/config.php:75 msgid "Variations" msgstr "Variaciones" -#: view/theme/frio/php/Image.php:23 -msgid "Repeat the image" -msgstr "Repetir la imagen" +#: view/theme/frio/config.php:103 +msgid "Custom" +msgstr "" -#: view/theme/frio/php/Image.php:23 -msgid "Will repeat your image to fill the background." -msgstr "Repetirá su imagen para llenar el fondo" - -#: view/theme/frio/php/Image.php:25 -msgid "Stretch" -msgstr "Estirar" - -#: view/theme/frio/php/Image.php:25 -msgid "Will stretch to width/height of the image." -msgstr "Estirará la anchura/altura de la imagen." - -#: view/theme/frio/php/Image.php:27 -msgid "Resize fill and-clip" -msgstr "Reajustar llenado y clip" - -#: view/theme/frio/php/Image.php:27 -msgid "Resize to fill and retain aspect ratio." -msgstr "Reajustar para llenar y conservar proporción" - -#: view/theme/frio/php/Image.php:29 -msgid "Resize best fit" -msgstr "Reajustar al mejor tamaño" - -#: view/theme/frio/php/Image.php:29 -msgid "Resize to best fit and retain aspect ratio." -msgstr "Reajustar al mejor tamaño y conservar proporción" - -#: view/theme/frio/config.php:92 -msgid "Default" -msgstr "Por defecto" - -#: view/theme/frio/config.php:104 +#: view/theme/frio/config.php:115 msgid "Note" msgstr "Nota" -#: view/theme/frio/config.php:104 -msgid "Check image permissions if all users are allowed to visit the image" -msgstr "Compruebe los permisos de imagen si se les permite a todos los usuarios visitar la imagen" +#: view/theme/frio/config.php:115 +msgid "Check image permissions if all users are allowed to see the image" +msgstr "" -#: view/theme/frio/config.php:111 -msgid "Select scheme" -msgstr "Seleccionar plan" +#: view/theme/frio/config.php:122 +msgid "Select color scheme" +msgstr "" -#: view/theme/frio/config.php:112 +#: view/theme/frio/config.php:123 msgid "Navigation bar background color" msgstr "Color de fondo de la barra de navegación" -#: view/theme/frio/config.php:113 +#: view/theme/frio/config.php:124 msgid "Navigation bar icon color " msgstr "Color de icono de la barra de navegación" -#: view/theme/frio/config.php:114 +#: view/theme/frio/config.php:125 msgid "Link color" msgstr "Color de enlace" -#: view/theme/frio/config.php:115 +#: view/theme/frio/config.php:126 msgid "Set the background color" msgstr "Seleccionar el color de fondo" -#: view/theme/frio/config.php:116 -msgid "Content background transparency" -msgstr "Transparencia de contenido de fondo" +#: view/theme/frio/config.php:127 +msgid "Content background opacity" +msgstr "" -#: view/theme/frio/config.php:117 +#: view/theme/frio/config.php:128 msgid "Set the background image" msgstr "Seleccionar la imagen de fondo" -#: view/theme/frio/theme.php:231 +#: view/theme/frio/config.php:129 +msgid "Background image style" +msgstr "" + +#: view/theme/frio/config.php:134 +msgid "Login page background image" +msgstr "" + +#: view/theme/frio/config.php:138 +msgid "Login page background color" +msgstr "" + +#: view/theme/frio/config.php:138 +msgid "Leave background image and color empty for theme defaults" +msgstr "" + +#: view/theme/frio/php/Image.php:24 +msgid "Top Banner" +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." +msgstr "" + +#: view/theme/frio/php/Image.php:25 +msgid "Full screen" +msgstr "" + +#: view/theme/frio/php/Image.php:25 +msgid "" +"Resize image to fill entire screen, clipping either the right or the bottom." +msgstr "" + +#: view/theme/frio/php/Image.php:26 +msgid "Single row mosaic" +msgstr "" + +#: view/theme/frio/php/Image.php:26 +msgid "" +"Resize image to repeat it on a single row, either vertical or horizontal." +msgstr "" + +#: view/theme/frio/php/Image.php:27 +msgid "Mosaic" +msgstr "" + +#: view/theme/frio/php/Image.php:27 +msgid "Repeat image to fill the screen." +msgstr "" + +#: view/theme/frio/theme.php:252 msgid "Guest" msgstr "Invitado" -#: view/theme/frio/theme.php:237 +#: view/theme/frio/theme.php:257 msgid "Visitor" msgstr "Visitante" -#: view/theme/quattro/config.php:74 +#: view/theme/quattro/config.php:77 msgid "Alignment" msgstr "Alineación" -#: view/theme/quattro/config.php:74 +#: view/theme/quattro/config.php:77 msgid "Left" msgstr "Izquierda" -#: view/theme/quattro/config.php:74 +#: view/theme/quattro/config.php:77 msgid "Center" msgstr "Centrado" -#: view/theme/quattro/config.php:75 +#: view/theme/quattro/config.php:78 msgid "Color scheme" msgstr "Esquema de color" -#: view/theme/quattro/config.php:76 +#: view/theme/quattro/config.php:79 msgid "Posts font size" msgstr "Tamaño de letra del titulo de las publicaciones" -#: view/theme/quattro/config.php:77 +#: view/theme/quattro/config.php:80 msgid "Textareas font size" msgstr "Tamaño de letra del área de texto" -#: view/theme/vier/theme.php:144 view/theme/vier/config.php:119 -msgid "Community Profiles" -msgstr "Perfiles de la Comunidad" - -#: view/theme/vier/theme.php:174 view/theme/vier/config.php:123 -msgid "Last users" -msgstr "Últimos usuarios" - -#: view/theme/vier/theme.php:192 view/theme/vier/config.php:122 -msgid "Find Friends" -msgstr "Buscar amigos" - -#: view/theme/vier/theme.php:193 -msgid "Local Directory" -msgstr "Directorio local" - -#: view/theme/vier/theme.php:285 -msgid "Quick Start" -msgstr "Inicio rápido" - -#: view/theme/vier/theme.php:385 view/theme/vier/config.php:121 -msgid "Connect Services" -msgstr "Servicios conectados" - -#: view/theme/vier/config.php:71 +#: view/theme/vier/config.php:76 msgid "Comma separated list of helper forums" msgstr "Lista separada por comas de foros de ayuda." -#: view/theme/vier/config.php:117 +#: view/theme/vier/config.php:123 msgid "Set style" msgstr "Definir estilo" -#: view/theme/vier/config.php:118 +#: view/theme/vier/config.php:124 msgid "Community Pages" msgstr "Páginas de Comunidad" -#: view/theme/vier/config.php:120 +#: view/theme/vier/config.php:125 view/theme/vier/theme.php:151 +msgid "Community Profiles" +msgstr "Perfiles de la Comunidad" + +#: view/theme/vier/config.php:126 msgid "Help or @NewHere ?" msgstr "¿Ayuda o @NuevoAquí?" -#: src/App.php:522 -msgid "Delete this item?" -msgstr "¿Eliminar este elemento?" +#: view/theme/vier/config.php:127 view/theme/vier/theme.php:385 +msgid "Connect Services" +msgstr "Servicios conectados" -#: src/App.php:524 -msgid "show fewer" -msgstr "ver menos" +#: view/theme/vier/config.php:128 +msgid "Find Friends" +msgstr "Buscar amigos" -#: boot.php:738 -#, php-format -msgid "Update %s failed. See error logs." -msgstr "Falló la actualización de %s. Mira los registros de errores." +#: view/theme/vier/config.php:129 view/theme/vier/theme.php:181 +msgid "Last users" +msgstr "Últimos usuarios" -#: boot.php:850 -msgid "Create a New Account" -msgstr "Crear una nueva cuenta" - -#: boot.php:878 -msgid "Password: " -msgstr "Contraseña: " - -#: boot.php:879 -msgid "Remember me" -msgstr "Recordarme" - -#: boot.php:882 -msgid "Or login using OpenID: " -msgstr "O inicia sesión usando OpenID: " - -#: boot.php:888 -msgid "Forgot your password?" -msgstr "¿Olvidaste la contraseña?" - -#: boot.php:891 -msgid "Website Terms of Service" -msgstr "Términos de uso del sitio" - -#: boot.php:892 -msgid "terms of service" -msgstr "Términos de uso" - -#: boot.php:894 -msgid "Website Privacy Policy" -msgstr "Política de privacidad del sitio" - -#: boot.php:895 -msgid "privacy policy" -msgstr "Política de privacidad" - -#: index.php:438 -msgid "toggle mobile" -msgstr "Cambiar a versión móvil" +#: view/theme/vier/theme.php:288 +msgid "Quick Start" +msgstr "Inicio rápido" diff --git a/view/lang/es/strings.php b/view/lang/es/strings.php index 530ea979c8..96989b3f56 100644 --- a/view/lang/es/strings.php +++ b/view/lang/es/strings.php @@ -6,95 +6,1538 @@ function string_plural_select_es($n){ return ($n != 1);; }} ; -$a->strings["General Features"] = "Opciones generales"; -$a->strings["Multiple Profiles"] = "Perfiles multiples"; -$a->strings["Ability to create multiple profiles"] = "Capacidad de crear perfiles multiples. Cada pagina/perfil/usuario puede tener diferentes perfiles/apariencias. Las mismas pueden ser visibles para determinados contactos seleccionados dentro de la red friendica."; -$a->strings["Photo Location"] = "Localización foto"; -$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "Normalmente los meta datos de las imágenes son eliminados. Esto extraerá la localización si presente antes de eliminar los meta datos y enlaza la misma con el mapa."; -$a->strings["Export Public Calendar"] = "Exportar Calendario Público"; -$a->strings["Ability for visitors to download the public calendar"] = "Posibilidad de los visitantes de descargar el calendario público"; -$a->strings["Post Composition Features"] = "Opciones de edición de publicaciones."; -$a->strings["Post Preview"] = "Previsualizar publicaciones"; -$a->strings["Allow previewing posts and comments before publishing them"] = "Permitir la previsualización de publicaciones antes de publicar las mismas."; -$a->strings["Auto-mention Forums"] = "Auto-mencionar foros"; -$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "Añadir/eliminar mención cuando un foro es seleccionado/deseleccionado en la ventana ACL."; -$a->strings["Network Sidebar Widgets"] = "Accesorios de red del panel lateral"; -$a->strings["Search by Date"] = "Buscar por fecha"; -$a->strings["Ability to select posts by date ranges"] = "Habilidad de seleccionar publicaciones por fecha"; -$a->strings["List Forums"] = "Listar foros"; -$a->strings["Enable widget to display the forums your are connected with"] = "Habilitar la pestaña para mostrar los foros en que estas participando."; -$a->strings["Group Filter"] = "Filtro del grupo"; -$a->strings["Enable widget to display Network posts only from selected group"] = "Habilitar accesorios para visualizar publicaciones en la red solo de grupos seleccionados"; -$a->strings["Network Filter"] = "Filtro de red"; -$a->strings["Enable widget to display Network posts only from selected network"] = "Habilitar accesorios para visualizar publicaciones solo de las redes seleccionadas."; -$a->strings["Saved Searches"] = "Búsquedas guardadas"; -$a->strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilizacion"; -$a->strings["Network Tabs"] = "Pestañas de redes"; -$a->strings["Network Personal Tab"] = "Pestaña actividad personal"; -$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Habilitar para visualizar solo publicaciones con las que se ha interactuado"; -$a->strings["Network New Tab"] = "Pestaña nuevo en la red"; -$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "Activar para mostrar solo publicaciones nuevas en la red (de las ultimas 12 horas)"; -$a->strings["Network Shared Links Tab"] = "Pestaña publicaciones con enlaces"; -$a->strings["Enable tab to display only Network posts with links in them"] = "Habilitar para visualizar solo publicaciones que contienen enlaces"; -$a->strings["Post/Comment Tools"] = "Herramienta de publicaciones/respuestas"; -$a->strings["Multiple Deletion"] = "Borrar múltiples publicaciones"; -$a->strings["Select and delete multiple posts/comments at once"] = "Habilidad de seleccionar y borrar varias publicaciones/comentarios a la vez"; -$a->strings["Edit Sent Posts"] = "Editar temas enviados"; -$a->strings["Edit and correct posts and comments after sending"] = "Editar y corregir publicaciones y respuestas enviados. Las ediciones solo son comunicados dentro de la red friendica. No se modificaran copias enviadas a diaspora, OStatus/GNUsocial/Quitter u otros servicios conectados."; -$a->strings["Tagging"] = "taggear"; -$a->strings["Ability to tag existing posts"] = "Habilidad de taggear publicaciones existentes"; -$a->strings["Post Categories"] = "Categorías de publicaciones"; -$a->strings["Add categories to your posts"] = "Agregue categorías a sus publicaciones. Las mismas serán visualizadas en su pagina de inicio."; -$a->strings["Saved Folders"] = "Directorios guardados"; -$a->strings["Ability to file posts under folders"] = "Archivar publicaciones en carpetas"; -$a->strings["Dislike Posts"] = "Desaprobar publicación (dislike)"; -$a->strings["Ability to dislike posts/comments"] = "Habilidad de expresar desacuerdo en publicaciones y comentarios. Esta función solo es visualizado en la red friendica."; -$a->strings["Star Posts"] = "Fijar publicaciones"; -$a->strings["Ability to mark special posts with a star indicator"] = "Habilidad de marcar - observar fijamente publicaciones.\nEl simbolo de estrella es habilitado. Se recibirán notificaciones sobre comentarios, además una pestaña de publicaciones fijadas es habilitada. En las opciones de expiración de publicaciones se puede filtrar estas publicaciones para no ser eliminados contrario a las publicaciones demás de los contactos."; -$a->strings["Mute Post Notifications"] = "Silenciar notificaciones de una publicacion"; -$a->strings["Ability to mute notifications for a thread"] = "Habilidad de silenciar notificaciones sobre nuevos comentarios en una publicación."; -$a->strings["Advanced Profile Settings"] = "Ajustes avanzados del perfil"; -$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "Mostrar a los visitantes foros públicos en las que se esta participando en el pagina avanzada de perfiles."; -$a->strings["Miscellaneous"] = "Varios"; -$a->strings["Birthday:"] = "Fecha de nacimiento:"; -$a->strings["Age: "] = "Edad: "; -$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD"; -$a->strings["never"] = "nunca"; -$a->strings["less than a second ago"] = "hace menos de un segundo"; -$a->strings["year"] = "año"; -$a->strings["years"] = "años"; -$a->strings["month"] = "mes"; -$a->strings["months"] = "meses"; -$a->strings["week"] = "semana"; -$a->strings["weeks"] = "semanas"; -$a->strings["day"] = "día"; -$a->strings["days"] = "días"; -$a->strings["hour"] = "hora"; -$a->strings["hours"] = "horas"; -$a->strings["minute"] = "minuto"; -$a->strings["minutes"] = "minutos"; -$a->strings["second"] = "segundo"; -$a->strings["seconds"] = "segundos"; -$a->strings["%1\$d %2\$s ago"] = "hace %1\$d %2\$s"; -$a->strings["%s's birthday"] = "Cumpleaños de %s"; -$a->strings["Happy Birthday %s"] = "Feliz cumpleaños %s"; -$a->strings["Male"] = "Hombre"; -$a->strings["Female"] = "Mujer"; -$a->strings["Currently Male"] = "Actualmente Hombre"; -$a->strings["Currently Female"] = "Actualmente Mujer"; -$a->strings["Mostly Male"] = "Mayormente Hombre"; -$a->strings["Mostly Female"] = "Mayormente Mujer"; -$a->strings["Transgender"] = "Transgenérico"; -$a->strings["Intersex"] = "Bisexual"; -$a->strings["Transsexual"] = "Transexual"; -$a->strings["Hermaphrodite"] = "Hermafrodita"; -$a->strings["Neuter"] = "Neutro"; -$a->strings["Non-specific"] = "Sin especificar"; -$a->strings["Other"] = "Otro"; +$a->strings["Daily posting limit of %d post reached. The post was rejected."] = [ + 0 => "", + 1 => "", +]; +$a->strings["Weekly posting limit of %d post reached. The post was rejected."] = [ + 0 => "", + 1 => "", +]; +$a->strings["Monthly posting limit of %d post reached. The post was rejected."] = ""; +$a->strings["Profile Photos"] = "Foto del perfil"; +$a->strings["event"] = "evento"; +$a->strings["status"] = "estado"; +$a->strings["photo"] = "foto"; +$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; +$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; +$a->strings["%1\$s attends %2\$s's %3\$s"] = "%1\$s atenderá %2\$s's %3\$s"; +$a->strings["%1\$s doesn't attend %2\$s's %3\$s"] = "%1\$s no atenderá %2\$s's %3\$s"; +$a->strings["%1\$s attends maybe %2\$s's %3\$s"] = "%1\$s atenderá quizás %2\$s's %3\$s"; +$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s ahora es amigo de %2\$s"; +$a->strings["%1\$s poked %2\$s"] = "%1\$s le dio un toque a %2\$s"; +$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado el %3\$s de %2\$s con %4\$s"; +$a->strings["post/item"] = "publicación/tema"; +$a->strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s ha marcado %3\$s de %2\$s como Favorito"; +$a->strings["Likes"] = "Me gusta"; +$a->strings["Dislikes"] = "No me gusta"; +$a->strings["Attending"] = [ + 0 => "Atendiendo", + 1 => "Atendiendo", +]; +$a->strings["Not attending"] = "No atendiendo"; +$a->strings["Might attend"] = "Puede que atienda"; +$a->strings["Select"] = "Seleccionar"; +$a->strings["Delete"] = "Eliminar"; +$a->strings["View %s's profile @ %s"] = "Ver perfil de %s @ %s"; +$a->strings["Categories:"] = "Categorías:"; +$a->strings["Filed under:"] = "Archivado en:"; +$a->strings["%s from %s"] = "%s de %s"; +$a->strings["View in context"] = "Verlo en contexto"; +$a->strings["Please wait"] = "Por favor, espera"; +$a->strings["remove"] = "eliminar"; +$a->strings["Delete Selected Items"] = "Eliminar el elemento seleccionado"; +$a->strings["Follow Thread"] = "Seguir publicacion"; +$a->strings["View Status"] = "Ver estado"; +$a->strings["View Profile"] = "Ver perfil"; +$a->strings["View Photos"] = "Ver fotos"; +$a->strings["Network Posts"] = "Publicaciones en la red"; +$a->strings["View Contact"] = "Ver contacto"; +$a->strings["Send PM"] = "Enviar mensaje privado"; +$a->strings["Poke"] = "Toque"; +$a->strings["Connect/Follow"] = "Conectar/Seguir"; +$a->strings["%s likes this."] = "A %s le gusta esto."; +$a->strings["%s doesn't like this."] = "A %s no le gusta esto."; +$a->strings["%s attends."] = "%s atiende."; +$a->strings["%s doesn't attend."] = "%s no atenderá."; +$a->strings["%s attends maybe."] = "%s quizás atenderá"; +$a->strings["and"] = "y"; +$a->strings["and %d other people"] = " y a otras %d personas"; +$a->strings["%2\$d people like this"] = "%2\$d personas les gusta esto"; +$a->strings["%s like this."] = "A %s le gusta esto."; +$a->strings["%2\$d people don't like this"] = "%2\$d personas no les gusta esto"; +$a->strings["%s don't like this."] = "A %s no le gusta esto."; +$a->strings["%2\$d people attend"] = "%2\$d personas atienden"; +$a->strings["%s attend."] = "%s atiende."; +$a->strings["%2\$d people don't attend"] = "%2\$d personasno atienden."; +$a->strings["%s don't attend."] = "%s no atiende."; +$a->strings["%2\$d people attend maybe"] = "%2\$d personas quizá asistan."; +$a->strings["%s attend maybe."] = "%s quizás atenderá."; +$a->strings["Visible to everybody"] = "Visible para cualquiera"; +$a->strings["Please enter a image/video/audio/webpage URL:"] = "Por favor agregue la URL de una imagen, video, audio o sitio web."; +$a->strings["Tag term:"] = "Etiquetar:"; +$a->strings["Save to Folder:"] = "Guardar en directorio:"; +$a->strings["Where are you right now?"] = "¿Dónde estás ahora?"; +$a->strings["Delete item(s)?"] = "¿Borrar objeto(s)?"; +$a->strings["New Post"] = "Nueva publicación"; +$a->strings["Share"] = "Compartir"; +$a->strings["Upload photo"] = "Subir foto"; +$a->strings["upload photo"] = "subir imagen"; +$a->strings["Attach file"] = "Adjuntar archivo"; +$a->strings["attach file"] = "adjuntar archivo"; +$a->strings["Bold"] = "Negrita"; +$a->strings["Italic"] = "Cursiva"; +$a->strings["Underline"] = "Subrayado"; +$a->strings["Quote"] = "Cita"; +$a->strings["Code"] = "Código"; +$a->strings["Image"] = "Imagen"; +$a->strings["Link"] = "Enlace"; +$a->strings["Link or Media"] = "Enlace o Multimedia"; +$a->strings["Set your location"] = "Configurar tu localización"; +$a->strings["set location"] = "establecer tu ubicación"; +$a->strings["Clear browser location"] = "Borrar la localización del navegador"; +$a->strings["clear location"] = "limpiar la localización"; +$a->strings["Set title"] = "Establecer el título"; +$a->strings["Categories (comma-separated list)"] = "Categorías (lista separada por comas)"; +$a->strings["Permission settings"] = "Configuración de permisos"; +$a->strings["permissions"] = "permisos"; +$a->strings["Public post"] = "Publicación pública"; +$a->strings["Preview"] = "Vista previa"; +$a->strings["Cancel"] = "Cancelar"; +$a->strings["Post to Groups"] = "Publicar hacia grupos"; +$a->strings["Post to Contacts"] = "Publicar hacia contactos"; +$a->strings["Private post"] = "Publicación privada"; +$a->strings["Message"] = "Mensaje"; +$a->strings["Browser"] = "Navegador"; +$a->strings["View all"] = "Ver todos los contactos"; +$a->strings["Like"] = [ + 0 => "Me gusta", + 1 => "Me gusta", +]; +$a->strings["Dislike"] = [ + 0 => "No me gusta", + 1 => "No me gusta", +]; +$a->strings["Not Attending"] = [ + 0 => "No atendiendo", + 1 => "No atendiendo", +]; $a->strings["Undecided"] = [ 0 => "Indeciso", 1 => "Indeciso", ]; +$a->strings["Friendica Notification"] = "Notificación de Friendica"; +$a->strings["Thank You,"] = "Gracias,"; +$a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s Administrador"; +$a->strings["%s Administrator"] = "%s Administrador"; +$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica:Notificación] Nuevo correo recibido de %s"; +$a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s te ha enviado un mensaje privado desde %2\$s."; +$a->strings["a private message"] = "un mensaje privado"; +$a->strings["%1\$s sent you %2\$s."] = "%1\$s te ha enviado %2\$s."; +$a->strings["Please visit %s to view and/or reply to your private messages."] = "Por favor, visita %s para ver y/o responder a tus mensajes privados."; +$a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s comentó en [url=%2\$s]a %3\$s[/url]"; +$a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s comentó en [url=%2\$s] %4\$s de %3\$s[/url]"; +$a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s comentó en [url=%2\$s] tu %3\$s[/url]"; +$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Notificación] Comentario en la conversación de #%1\$d por %2\$s"; +$a->strings["%s commented on an item/conversation you have been following."] = "%s ha comentado en una conversación/elemento que sigues."; +$a->strings["Please visit %s to view and/or reply to the conversation."] = "Por favor, visita %s para ver y/o responder a la conversación."; +$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Notificación] %s publicó en tu muro"; +$a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s publicó en tu muro de %2\$s"; +$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s publicó en [url=%2\$s]tu muro[/url]"; +$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notificación] %s te ha etiquetado"; +$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s te ha etiquetado en %2\$s"; +$a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]te etiquetó[/url]."; +$a->strings["[Friendica:Notify] %s shared a new post"] = "[Notificacion Friendica] %s compartió una nueva publicación"; +$a->strings["%1\$s shared a new post at %2\$s"] = "%1\$s compartió un nuevo tema en %2\$s"; +$a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s [url=%2\$s]compartió una publicación[/url]."; +$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica:Notify] %1\$s te dio un toque"; +$a->strings["%1\$s poked you at %2\$s"] = "%1\$s te dio un toque en %2\$s"; +$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s [url=%2\$s]te dio un toque[/url]."; +$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Notificación] %s ha etiquetado tu publicación"; +$a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s ha etiquetado tu publicación en %2\$s"; +$a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s ha etiquetado [url=%2\$s]tu publicación[/url]"; +$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica:Notificación] Sugerencia de amistad recibida"; +$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Has recibido una sugerencia de amistad de '%1\$s' en %2\$s"; +$a->strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Has recibido [url=%1\$s]una sugerencia de amistad de [/url] de %2\$s."; +$a->strings["You may visit their profile at %s"] = "Puedes visitar su perfil en %s"; +$a->strings["Please visit %s to approve or reject the introduction."] = " Por favor visita %s para aceptar o rechazar la sugerencia de amistad"; +$a->strings["[Friendica:Notify] A new person is sharing with you"] = "[Notificación:Friendica] Un nuevo contacto comparte contigo"; +$a->strings["%1\$s is sharing with you at %2\$s"] = "%1\$s comparte contigo en %2\$s"; +$a->strings["[Friendica:Notify] You have a new follower"] = "[Notificación:Friendica] Tienes un nuevo seguidor"; +$a->strings["You have a new follower at %2\$s : %1\$s"] = "Tienes un nuevo seguidor en %2\$s : %1\$s"; +$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Notificación] Sugerencia de amistad recibida"; +$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Has recibido una sugerencia de amigo de '%1\$s' en %2\$s"; +$a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Has recibido [url=%1\$s]una sugerencia de amigo[/url] en %2\$s de %3\$s."; +$a->strings["Name:"] = "Nombre: "; +$a->strings["Photo:"] = "Foto: "; +$a->strings["Please visit %s to approve or reject the suggestion."] = "Visita %s para aceptar o rechazar la sugerencia por favor."; +$a->strings["[Friendica:Notify] Connection accepted"] = "[Notificación:Friendica] Conexión aceptada"; +$a->strings["'%1\$s' has accepted your connection request at %2\$s"] = "'%1\$s' acepto tu consulta de conexión %2\$s"; +$a->strings["%2\$s has accepted your [url=%1\$s]connection request[/url]."] = "%2\$s hacepto tu [url=%1\$s]consulta de conexión[/url]."; +$a->strings["You are now mutual friends and may exchange status updates, photos, and email without restriction."] = "Ahora tiene amigos en común y puede intercambiar actualizaciones de estado, fotos y email sin restricción."; +$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Por favor visite %s si desea hacer algún cambio a su relación."; +$a->strings["'%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."] = "'%1\$s' te ha aceptado como fan, lo que restringe algunas formas de comunicación - como conversaciones privadas y algunas interacciones de perfil. Si es una celebridad o una página comunitaria, estos ajustes son aplicados automáticamente."; +$a->strings["'%1\$s' may choose to extend this into a two-way or more permissive relationship in the future."] = "'%1\$s' puede elegir extender esto en una relación más permisiva o ambidireccional en el futuro."; +$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Por favor visita %s si es preciso de hacer algún cambio a la relación con este contacto."; +$a->strings["[Friendica System Notify]"] = "[Friendica Sistema de Notificaciones]"; +$a->strings["registration request"] = "petición de registro"; +$a->strings["You've received a registration request from '%1\$s' at %2\$s"] = "Recibiste una consulta de registro de '%1\$s' en %2\$s"; +$a->strings["You've received a [url=%1\$s]registration request[/url] from %2\$s."] = "Recibiste una [url=%1\$s]consulta de registro[/url] from %2\$s."; +$a->strings["Full Name:\t%s\nSite Location:\t%s\nLogin Name:\t%s (%s)"] = "Nombre Completo:\t%s\nDireccion del sitio:\t%s\nNombre de usuario:\t%s (%s)"; +$a->strings["Please visit %s to approve or reject the request."] = "Por favor visita %s para aprobar o negar la solicitud."; +$a->strings["Item not found."] = "Elemento no encontrado."; +$a->strings["Do you really want to delete this item?"] = "¿Realmente quieres borrar este objeto?"; +$a->strings["Yes"] = "Sí"; +$a->strings["Permission denied."] = "Permiso denegado."; +$a->strings["Archives"] = "Archivos"; +$a->strings["show more"] = "ver más"; +$a->strings["Theme settings updated."] = "Configuración de la apariencia actualizada."; +$a->strings["Information"] = "Información"; +$a->strings["Overview"] = ""; +$a->strings["Federation Statistics"] = "Estadísticas de federación"; +$a->strings["Configuration"] = "Configuración"; +$a->strings["Site"] = "Sitio"; +$a->strings["Users"] = "Usuarios"; +$a->strings["Addons"] = ""; +$a->strings["Themes"] = "Temas"; +$a->strings["Additional features"] = "Características adicionales"; +$a->strings["Terms of Service"] = "Términos de Servicio"; +$a->strings["Database"] = "Base de Datos"; +$a->strings["DB updates"] = "Actualizaciones de la Base de Datos"; +$a->strings["Inspect Queue"] = "Inspeccionar cola"; +$a->strings["Inspect Deferred Workers"] = ""; +$a->strings["Inspect worker Queue"] = ""; +$a->strings["Tools"] = "Herramientas"; +$a->strings["Contact Blocklist"] = ""; +$a->strings["Server Blocklist"] = "Lista de bloqueo del servidor"; +$a->strings["Delete Item"] = "Eliminar Artículo"; +$a->strings["Logs"] = "Registros"; +$a->strings["View Logs"] = "Ver registro de depuración"; +$a->strings["Diagnostics"] = "Diagnósticos"; +$a->strings["PHP Info"] = ""; +$a->strings["probe address"] = "probar direccion"; +$a->strings["check webfinger"] = "Verificar webfinger"; +$a->strings["Admin"] = "Admin"; +$a->strings["Addon Features"] = ""; +$a->strings["User registrations waiting for confirmation"] = "Registro de usuarios esperando la confirmación"; +$a->strings["Administration"] = "Administración"; +$a->strings["Display Terms of Service"] = "Mostrar los Términos de Servicio"; +$a->strings["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."] = "Habilitar la página de los Términos de Servicio. Si esto está activo un enlace a los términos será adicionado al formulario de registro y en la página de información general."; +$a->strings["Display Privacy Statement"] = "Mostrar las Directivas de Privacidad"; +$a->strings["Show some informations regarding the needed information to operate the node according e.g. to EU-GDPR."] = ""; +$a->strings["Privacy Statement Preview"] = "Vista previa de las Directivas de Seguridad"; +$a->strings["The Terms of Service"] = "Los Términos de Servicio"; +$a->strings["Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below."] = "Introduzca los Términos de Servicio para tu nodo aquí. Puedes usar BBCode. Cabeceras de sección deberían ser [2] e inferior."; +$a->strings["Save Settings"] = "Guardar configuración"; +$a->strings["Blocked domain"] = "Dominio bloqueado"; +$a->strings["The blocked domain"] = "El dominio bloqueado"; +$a->strings["Reason for the block"] = "Razón para el bloqueo"; +$a->strings["The reason why you blocked this domain."] = "La razón por la que bloqueó este dominio."; +$a->strings["Delete domain"] = "Eliminar dominio"; +$a->strings["Check to delete this entry from the blocklist"] = "Marca para eliminar esta entrada de la lista de bloqueo"; +$a->strings["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."] = "Esta página se puede usar para definir una lista negra de servidores de la red federada a los que no se les permite interactuar con su nodo. Para todos los dominios ingresados, también debe dar una razón por la que ha bloqueado el servidor remoto."; +$a->strings["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."] = "La lista de servidores bloqueados estará disponible públicamente en la página /friendica para que los usuarios y las personas que investiguen los problemas de comunicación puedan encontrar fácilmente la razón.."; +$a->strings["Add new entry to block list"] = "Agregar nueva entrada a la lista de bloqueo"; +$a->strings["Server Domain"] = "Dominio del servidor"; +$a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "El dominio del nuevo servidor para añadir a la lista de bloqueo. No incluye el protocolo."; +$a->strings["Block reason"] = "Lazón del bloqueo"; +$a->strings["Add Entry"] = "Añadir Entrada"; +$a->strings["Save changes to the blocklist"] = "Guardar cambios en la lista de bloqueo"; +$a->strings["Current Entries in the Blocklist"] = "Entradas actuales en la lista de bloqueo"; +$a->strings["Delete entry from blocklist"] = "Eliminar entrada de la lista de bloqueo"; +$a->strings["Delete entry from blocklist?"] = "¿Eliminar entrada de la lista de bloqueo?"; +$a->strings["Server added to blocklist."] = "Servidor añadido a la lista de bloqueo."; +$a->strings["Site blocklist updated."] = "Lista de bloqueo del sitio actualizada."; +$a->strings["The contact has been blocked from the node"] = "El contacto ha sido blockeado del nodo"; +$a->strings["Could not find any contact entry for this URL (%s)"] = ""; +$a->strings["%s contact unblocked"] = [ + 0 => "", + 1 => "", +]; +$a->strings["Remote Contact Blocklist"] = ""; +$a->strings["This page allows you to prevent any message from a remote contact to reach your node."] = ""; +$a->strings["Block Remote Contact"] = ""; +$a->strings["select all"] = "seleccionar todo"; +$a->strings["select none"] = ""; +$a->strings["Block"] = "Bloquear"; +$a->strings["Unblock"] = "Desbloquear"; +$a->strings["No remote contact is blocked from this node."] = ""; +$a->strings["Blocked Remote Contacts"] = ""; +$a->strings["Block New Remote Contact"] = ""; +$a->strings["Photo"] = ""; +$a->strings["Name"] = "Nombre"; +$a->strings["Address"] = "Dirección"; +$a->strings["Profile URL"] = "URL Perfil"; +$a->strings["%s total blocked contact"] = [ + 0 => "", + 1 => "", +]; +$a->strings["URL of the remote contact to block."] = ""; +$a->strings["Delete this Item"] = "Eliminar este artículo"; +$a->strings["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."] = "En esta página, puede eliminar un artículo de su nodo. Si el artículo es una publicación de nivel superior, se eliminará todo el hilo."; +$a->strings["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."] = "Usted debe conocer el GUID del artículo. Puedes encontrarlo, por ejemplo. mirando la URL visible. La última parte de http://example.com/display/123456 es el GUID, aquí 123456."; +$a->strings["GUID"] = "GUID"; +$a->strings["The GUID of the item you want to delete."] = "El GUID del artículo que quiere eliminar."; +$a->strings["Item marked for deletion."] = "Artículo marcado para eliminación."; +$a->strings["unknown"] = "desconocido"; +$a->strings["This page offers you some numbers to the known part of the federated social network your Friendica node is part of. These numbers are not complete but only reflect the part of the network your node is aware of."] = "Esta pagina ofrece algunos datos sobre la red conocida a la que tu nodo friendica esta conectado. Estos nummeros no son completos respecto a las redes federadas, si no refleja los nodos esta instancia conoce. "; +$a->strings["The Auto Discovered Contact Directory feature is not enabled, it will improve the data displayed here."] = "El modulo directorio de contactos encontrados no esta habilitado, habilitado aumentara la cantidad de datos detallados aquí."; +$a->strings["Currently this node is aware of %d nodes with %d registered users from the following platforms:"] = ""; +$a->strings["ID"] = "ID"; +$a->strings["Recipient Name"] = "Nombre del recipiente"; +$a->strings["Recipient Profile"] = "Perfil del recipiente"; +$a->strings["Network"] = "Red"; +$a->strings["Created"] = "Creado"; +$a->strings["Last Tried"] = "Ultimo intento"; +$a->strings["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."] = "Esta pagina muestra la cola de mensajes salientes. Estos son publicaciones cuyo envío inicial fallo. Serán reenviados mas tarde y eventualmente eliminados si la entrega falla permanentemente. "; +$a->strings["Inspect Deferred Worker Queue"] = ""; +$a->strings["This page lists the deferred worker jobs. This are jobs that couldn't be executed at the first time."] = ""; +$a->strings["Inspect Worker Queue"] = ""; +$a->strings["This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you've set up during install."] = ""; +$a->strings["Job Parameters"] = ""; +$a->strings["Priority"] = ""; +$a->strings["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 here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
"] = ""; +$a->strings["There is a new version of Friendica available for download. Your current version is %1\$s, upstream version is %2\$s"] = "Hay una nueva versión de Friendica disponible para descargar. Su versión actual es %1\$s, la versión ascendente es %2\$s"; +$a->strings["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."] = ""; +$a->strings["The worker was never executed. Please check your database structure!"] = "El trabajador nunca fue ejecutado. ¡Revise la estructura de su base de datos, por favor!"; +$a->strings["The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings."] = "La última ejecución del trabajador estaba en %s UTC. Esto es anterior a una hora. Revise tu configuración de crontab, por favor."; +$a->strings["Friendica's configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from .htconfig.php. See the Config help page for help with the transition."] = ""; +$a->strings["%s is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See the installation page for help."] = ""; +$a->strings["Normal Account"] = "Cuenta normal"; +$a->strings["Automatic Follower Account"] = "Cuenta de Seguimiento Automático"; +$a->strings["Public Forum Account"] = "Cuenta del Foro Pública"; +$a->strings["Automatic Friend Account"] = "Cuenta de amistad automática"; +$a->strings["Blog Account"] = "Cuenta de blog"; +$a->strings["Private Forum Account"] = "Cuenta del Foro Privada"; +$a->strings["Message queues"] = "Cola de mensajes"; +$a->strings["Server Settings"] = ""; +$a->strings["Summary"] = "Resumen"; +$a->strings["Registered users"] = "Usuarios registrados"; +$a->strings["Pending registrations"] = "Pendientes de registro"; +$a->strings["Version"] = "Versión"; +$a->strings["Active addons"] = ""; +$a->strings["Can not parse base url. Must have at least ://"] = "No se puede resolver la direccion URL base.\nDeberá tener al menos ://"; +$a->strings["Site settings updated."] = "Configuración de actualización."; +$a->strings["No special theme for mobile devices"] = "No hay tema especial para dispositivos móviles"; +$a->strings["No community page for local users"] = ""; +$a->strings["No community page"] = "No hay pagina de comunidad"; +$a->strings["Public postings from users of this site"] = "Temas públicos de perfiles de este sitio."; +$a->strings["Public postings from the federated network"] = ""; +$a->strings["Public postings from local users and the federated network"] = ""; +$a->strings["Disabled"] = "Deshabilitado"; +$a->strings["Users, Global Contacts"] = "Perfiles, contactos globales"; +$a->strings["Users, Global Contacts/fallback"] = "Perfiles, contactos globales/fallback"; +$a->strings["One month"] = "Un mes"; +$a->strings["Three months"] = "Tres meses"; +$a->strings["Half a year"] = "Medio año"; +$a->strings["One year"] = "Un año"; +$a->strings["Multi user instance"] = "Sesión multi usuario"; +$a->strings["Closed"] = "Cerrado"; +$a->strings["Requires approval"] = "Requiere aprobación"; +$a->strings["Open"] = "Abierto"; +$a->strings["No SSL policy, links will track page SSL state"] = "No existe una política de SSL, los vínculos harán un seguimiento del estado de SSL en la página"; +$a->strings["Force all links to use SSL"] = "Forzar todos los enlaces a utilizar SSL"; +$a->strings["Self-signed certificate, use SSL for local links only (discouraged)"] = "Certificación personal, usa SSL solo para enlaces locales (no recomendado)"; +$a->strings["Don't check"] = "No verificar"; +$a->strings["check the stable version"] = "verifique la versión estable"; +$a->strings["check the development version"] = "verifica la versión de desarrollo"; +$a->strings["Republish users to directory"] = "Volver a publicar usuarios en el directorio"; +$a->strings["Registration"] = "Registro"; +$a->strings["File upload"] = "Subida de archivo"; +$a->strings["Policies"] = "Políticas"; +$a->strings["Advanced"] = "Avanzado"; +$a->strings["Auto Discovered Contact Directory"] = "Directorio de contactos descubierto automáticamente"; +$a->strings["Performance"] = "Rendimiento"; +$a->strings["Worker"] = "Trabajador (??)"; +$a->strings["Message Relay"] = ""; +$a->strings["Relocate Instance"] = ""; +$a->strings["Warning! Advanced function. Could make this server unreachable."] = ""; +$a->strings["Site name"] = "Nombre del sitio"; +$a->strings["Host name"] = "Nombre de dominio"; +$a->strings["Sender Email"] = "Dirección de origen de correo electrónico"; +$a->strings["The email address your server shall use to send notification emails from."] = "La dirección de correo electrónico que el servidor debería usar como dirección de envío."; +$a->strings["Banner/Logo"] = "Imagen/Logotipo"; +$a->strings["Shortcut icon"] = "Icono de atajo"; +$a->strings["Link to an icon that will be used for browsers."] = "Enlace hacia un icono que sera usado para el navegador."; +$a->strings["Touch icon"] = "Icono touch"; +$a->strings["Link to an icon that will be used for tablets and mobiles."] = "Enlace para un icono que sera usado para tablets y moviles."; +$a->strings["Additional Info"] = "Información adicional"; +$a->strings["For public servers: you can add additional information here that will be listed at %s/servers."] = ""; +$a->strings["System language"] = "Idioma"; +$a->strings["System theme"] = "Tema"; +$a->strings["Default system theme - may be over-ridden by user profiles - change theme settings"] = "Tema por defecto del sistema, los usuarios podrán elegir el suyo propio en su configuración cambiar configuración del tema"; +$a->strings["Mobile system theme"] = "Tema de sistema móvil"; +$a->strings["Theme for mobile devices"] = "Tema para dispositivos móviles"; +$a->strings["SSL link policy"] = "Política de enlaces SSL"; +$a->strings["Determines whether generated links should be forced to use SSL"] = "Determina si los enlaces generados deben ser forzados a utilizar SSL"; +$a->strings["Force SSL"] = "Forzar SSL"; +$a->strings["Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops."] = "Forzar todos las consultas No-SSL a SSL. - ATENCIÓN: en algunos sistemas esto puede generar comportamiento recursivo interminable."; +$a->strings["Hide help entry from navigation menu"] = "Ocultar la ayuda en el menú de navegación"; +$a->strings["Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly."] = "Oculta la entrada de las páginas de Ayuda en el menú de navegación. Todavía se puede acceder escribiendo /ayuda directamente."; +$a->strings["Single user instance"] = "Sesión de usuario único"; +$a->strings["Make this instance multi-user or single-user for the named user"] = "Haz esta sesión multi-usuario o usuario único para el usuario"; +$a->strings["Maximum image size"] = "Tamaño máximo de la imagen"; +$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de las imágenes a subir. Por defecto es 0, que quiere decir que no hay límite."; +$a->strings["Maximum image length"] = "Largo máximo de imagen"; +$a->strings["Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits."] = "Longitud máxima en píxeles del lado más largo de las imágenes subidas. Por defecto es -1, que significa que no hay límites."; +$a->strings["JPEG image quality"] = "Calidad de imagen JPEG"; +$a->strings["Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality."] = "Los archivos JPEG subidos se guardarán con este ajuste de calidad [0-100]. Por defecto es 100, que es calidad máxima."; +$a->strings["Register policy"] = "Política de registros"; +$a->strings["Maximum Daily Registrations"] = "Registros Máximos Diarios"; +$a->strings["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."] = "Si anteriormente se ha permitido el registro, esto establece el número máximo de registro de nuevos usuarios aceptados por día. Si el registro se establece como cerrado, esta opción no tiene efecto."; +$a->strings["Register text"] = "Términos"; +$a->strings["Will be displayed prominently on the registration page. You can use BBCode here."] = ""; +$a->strings["Forbidden Nicknames"] = ""; +$a->strings["Comma separated list of nicknames that are forbidden from registration. Preset is a list of role names according RFC 2142."] = ""; +$a->strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días"; +$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "No gastará recursos del sistema creando sondeos a sitios externos para cuentas abandonadas. Introduce 0 para ningún límite temporal."; +$a->strings["Allowed friend domains"] = "Dominios amigos permitidos"; +$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios que están autorizados para establecer conexiones con este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio"; +$a->strings["Allowed email domains"] = "Dominios de correo permitidos"; +$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios que están autorizados en las direcciones de correo para registrarse en este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio"; +$a->strings["No OEmbed rich content"] = ""; +$a->strings["Don't show the rich content (e.g. embedded PDF), except from the domains listed below."] = ""; +$a->strings["Allowed OEmbed domains"] = ""; +$a->strings["Comma separated list of domains which oembed content is allowed to be displayed. Wildcards are accepted."] = ""; +$a->strings["Block public"] = "Bloqueo público"; +$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Marca para bloquear el acceso público a todas las páginas personales, aún siendo públicas, hasta que no hayas iniciado tu sesión."; +$a->strings["Force publish"] = "Forzar publicación"; +$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Marca para forzar que todos los perfiles de este sitio sean listados en el directorio del sitio."; +$a->strings["Enabling this may violate privacy laws like the GDPR"] = ""; +$a->strings["Global directory URL"] = "URL del directorio global."; +$a->strings["URL to the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL del directorio global. Si se deja este campo vacío, el directorio global sera completamente inaccesible para la instancia."; +$a->strings["Private posts by default for new users"] = "Publicaciones privadas por defecto para usuarios nuevos"; +$a->strings["Set default post permissions for all new members to the default privacy group rather than public."] = "Ajusta los permisos de publicación por defecto a los miembros nuevos al grupo privado por defecto en vez del público."; +$a->strings["Don't include post content in email notifications"] = "No incluir el contenido del post en las notificaciones de correo electrónico"; +$a->strings["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."] = "No incluye el contenido de un mensaje/comentario/mensaje privado/etc. en las notificaciones de correo electrónico que se envían desde este sitio, como una medida de privacidad."; +$a->strings["Disallow public access to addons listed in the apps menu."] = "Deshabilitar acceso a addons listados en el menú de aplicaciones."; +$a->strings["Checking this box will restrict addons listed in the apps menu to members only."] = "Habilitando esta opción restringe el acceso a addons en el menú de aplicaciones a usuarios identificados."; +$a->strings["Don't embed private images in posts"] = "No agregar imágenes privados en las publicaciones"; +$a->strings["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."] = "No reemplazar imágenes privadas guardadas localmente en el servidor con imágenes integrados en los envíos. Esto significa que contactos que reciben publicaciones tendrán que autenticarse y cargar cada imagen, lo que puede demorar."; +$a->strings["Explicit Content"] = ""; +$a->strings["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."] = ""; +$a->strings["Allow Users to set remote_self"] = "Permitir a los usuarios de definir perfiles_remotos"; +$a->strings["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."] = "Al habilitar esta opción, cada perfil tiene el permiso de marcar cualquiera de sus contactos como un perfil_remoto. Habilitar la opción perfil_remoto para un contacto genera que todas las publicaciones de este contacto seran re-publicado en el muro del perfil."; +$a->strings["Block multiple registrations"] = "Bloquear registros multiples"; +$a->strings["Disallow users to register additional accounts for use as pages."] = "Impedir que los usuarios registren cuentas adicionales para su uso como páginas."; +$a->strings["Disable OpenID"] = ""; +$a->strings["Disable OpenID support for registration and logins."] = ""; +$a->strings["No Fullname check"] = ""; +$a->strings["Allow users to register without a space between the first name and the last name in their full name."] = ""; +$a->strings["Community pages for visitors"] = ""; +$a->strings["Which community pages should be available for visitors. Local users always see both pages."] = ""; +$a->strings["Posts per user on community page"] = "Publicaciones por usuario en la pagina de comunidad"; +$a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "El numero máximo de publicaciones por usuario que aparecerán en la pagina de comunidad. (No valido para 'comunidad global')"; +$a->strings["Disable OStatus support"] = ""; +$a->strings["Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = ""; +$a->strings["Only import OStatus/ActivityPub threads from our contacts"] = ""; +$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."] = ""; +$a->strings["OStatus support can only be enabled if threading is enabled."] = "Solo se puede habilitar el soporte OStatus si threading (comentarios en fila) se encuentra habilitado."; +$a->strings["Diaspora support can't be enabled because Friendica was installed into a sub directory."] = "El soporte para Diaspora* no se puede habilitar porque friendica se instalo en un directorio subalterno (sub directory)."; +$a->strings["Enable Diaspora support"] = "Habilitar el soporte para Diaspora*"; +$a->strings["Provide built-in Diaspora network compatibility."] = "Provee una compatibilidad con la red de Diaspora."; +$a->strings["Only allow Friendica contacts"] = "Permitir solo contactos de Friendica"; +$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Todos los contactos deben usar protocolos de Friendica. El resto de protocolos serán desactivados."; +$a->strings["Verify SSL"] = "Verificar SSL"; +$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Si quieres puedes activar la comprobación estricta de certificados. Esto significa que serás incapaz de conectar con ningún sitio que use certificados SSL autofirmados."; +$a->strings["Proxy user"] = "Usuario proxy"; +$a->strings["Proxy URL"] = "Dirección proxy"; +$a->strings["Network timeout"] = "Tiempo de espera de red"; +$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Usar 0 para dejarlo sin límites (no se recomienda)."; +$a->strings["Maximum Load Average"] = "Promedio de carga máxima"; +$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que la entrega y los procesos de sondeo sean retrasados - por defecto 50."; +$a->strings["Maximum Load Average (Frontend)"] = "Carga máxima promedio (frontend)"; +$a->strings["Maximum system load before the frontend quits service - default 50."] = "Carga máxima del sistema antes de que el frontend cancele el servicio - por defecto 50."; +$a->strings["Minimal Memory"] = "Memoria Mínima"; +$a->strings["Minimal free memory in MB for the worker. Needs access to /proc/meminfo - default 0 (deactivated)."] = ""; +$a->strings["Maximum table size for optimization"] = "Tamaño máximo de las tablas para la optimización."; +$a->strings["Maximum table size (in MB) for the automatic optimization. Enter -1 to disable it."] = ""; +$a->strings["Minimum level of fragmentation"] = "Nivel mínimo de fragmentación "; +$a->strings["Minimum fragmenation level to start the automatic optimization - default value is 30%."] = "Nivel mínimo de fragmentación para para comenzar la optimización - valor por defecto es 30%. "; +$a->strings["Periodical check of global contacts"] = "Verificación periódica de los contactos globales."; +$a->strings["If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers."] = "Habilitado los contactos globales son verificado periódicamente por datos faltantes o datos obsoletos como también por la vitalidad de los contactos y servidores."; +$a->strings["Days between requery"] = "Días entre búsquedas"; +$a->strings["Number of days after which a server is requeried for his contacts."] = "Cantidad de días hasta que un servidor es consultado por sus contactos."; +$a->strings["Discover contacts from other servers"] = "Descubrir contactos de otros servidores"; +$a->strings["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'."] = "Recoger periódicamente información sobre perfiles en otros servidores. Puede elegir entre 'usuarios': perfiles de un sistema remoto, 'contactos globales': contactos activos que son conocidos por el servidor. El fallback es para servidors redmatrix y instalaciones viejas de friendica en las que los contactos no estaban a disposición. El fallback aumenta la carga del servidor, asi que la configuración recomendada es 'usuarios, contactos globales'"; +$a->strings["Timeframe for fetching global contacts"] = "Intervalos de tiempo para revisar contactos globales."; +$a->strings["When the discovery is activated, this value defines the timeframe for the activity of the global contacts that are fetched from other servers."] = "Cuando la revisacion es activada, este valor define el intervalo de tiempo de la actividad de los contactos globales que son recolectados de los servidores. (?)"; +$a->strings["Search the local directory"] = "Buscar el directorio local"; +$a->strings["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."] = "Buscar en el directorio local en vez del directorio global. Cuando se busca localmente, cada busqueda sera efectuada en el directorio global en el background. Esto mejora los resultados de la busqueda cuando la misma es repetida."; +$a->strings["Publish server information"] = "Publicar información del servidor"; +$a->strings["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 the-federation.info for details."] = "Si habilitado, datos generales del servidor y estadisticas de uso serán publicados. Los datos contienen el nombre y la versión del servidor, numero de usuarios con perfiles públicos, cantidad de temas publicados y los protocolos y conectores activados. Vea the-federation.info por detalles."; +$a->strings["Check upstream version"] = "Verifique la versión ascendente"; +$a->strings["Enables checking for new Friendica versions at github. If there is a new version, you will be informed in the admin panel overview."] = "Permite verificar nuevas versiones de Friendica en Github. Si hay una nueva versión, se le informará en el panel de administración."; +$a->strings["Suppress Tags"] = "Suprimir tags"; +$a->strings["Suppress showing a list of hashtags at the end of the posting."] = "Suprimir la lista de tags al final de una publicación."; +$a->strings["Clean database"] = ""; +$a->strings["Remove old remote items, orphaned database records and old content from some other helper tables."] = ""; +$a->strings["Lifespan of remote items"] = ""; +$a->strings["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."] = ""; +$a->strings["Lifespan of unclaimed items"] = ""; +$a->strings["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."] = ""; +$a->strings["Lifespan of raw conversation data"] = ""; +$a->strings["The conversation data is used for ActivityPub and OStatus, as well as for debug purposes. It should be safe to remove it after 14 days, default is 90 days."] = ""; +$a->strings["Path to item cache"] = "Ruta a la caché del objeto"; +$a->strings["The item caches buffers generated bbcode and external images."] = "El buffer de cache de items generado para bbcodes e imágenes externas. "; +$a->strings["Cache duration in seconds"] = "Duración de la caché en segundos"; +$a->strings["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."] = "¿Por cuanto tiempo deberían los archives ser almacenados en el cache? Valor por defecto 86400 segundos (un día). Para deshabilita el item cache, ajuste el valor a -1."; +$a->strings["Maximum numbers of comments per post"] = "Numero máximo de respuestas por tema"; +$a->strings["How much comments should be shown for each post? Default value is 100."] = "¿Cuantos comentarios deberían ser mostrados por tema? Valor por defecto es 100."; +$a->strings["Temp path"] = "Ruta a los temporales"; +$a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "Si tiene un sistema restringido en donde el servidor web no puede acceder la dirección del sistema temp, ingrese una dirección alternativa aquí. "; +$a->strings["Base path to installation"] = "Ruta base para la instalación"; +$a->strings["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."] = "Si el sistema no puede detectar el acceso correcto a la instalación, ingrese la dirección correcta aquí. Esta configuración solo debería utilizarse si si usa un sistema restringido y enlaces simbolicos a su webroot."; +$a->strings["Disable picture proxy"] = "Deshabilitar proxy de imagen"; +$a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwidth."] = ""; +$a->strings["Only search in tags"] = "Solo buscar en tags"; +$a->strings["On large systems the text search can slow down the system extremely."] = "En sistemas grandes, la búsqueda de texto puede enlentecer el sistema gravemente."; +$a->strings["New base url"] = "Nueva URLbase"; +$a->strings["Change base url for this server. Sends relocate message to all Friendica and Diaspora* contacts of all users."] = "Cambiar la URL base para este servidor. Envía un mensaje de reubicación a todos los contactos de Friendica y Diaspora* de todos los usuarios."; +$a->strings["RINO Encryption"] = "Encryptado RINO"; +$a->strings["Encryption layer between nodes."] = "Capa de encryptación entre nodos."; +$a->strings["Enabled"] = ""; +$a->strings["Maximum number of parallel workers"] = "Numero máximo de trabajos paralelos de fondo."; +$a->strings["On shared hosters set this to %d. On larger systems, values of %d are great. Default value is %d."] = ""; +$a->strings["Don't use 'proc_open' with the worker"] = "No use 'proc_open' junto al \"trabajador\"!"; +$a->strings["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."] = ""; +$a->strings["Enable fastlane"] = "Habilitar ascenso rápido"; +$a->strings["When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority."] = "Cuando está habilitado, el mecanismo ascenso rápido inicia un trabajador adicional si los procesos de mayor prioridad son bloqueados por prcesos de menor prioridad."; +$a->strings["Enable frontend worker"] = "Habilitar trabajador de interfaz"; +$a->strings["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."] = ""; +$a->strings["Subscribe to relay"] = ""; +$a->strings["Enables the receiving of public posts from the relay. They will be included in the search, subscribed tags and on the global community page."] = ""; +$a->strings["Relay server"] = ""; +$a->strings["Address of the relay server where public posts should be send to. For example https://relay.diasp.org"] = ""; +$a->strings["Direct relay transfer"] = ""; +$a->strings["Enables the direct transfer to other servers without using the relay servers"] = ""; +$a->strings["Relay scope"] = ""; +$a->strings["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."] = ""; +$a->strings["all"] = ""; +$a->strings["tags"] = ""; +$a->strings["Server tags"] = ""; +$a->strings["Comma separated list of tags for the 'tags' subscription."] = ""; +$a->strings["Allow user tags"] = ""; +$a->strings["If enabled, the tags from the saved searches will used for the 'tags' subscription in addition to the 'relay_server_tags'."] = ""; +$a->strings["Start Relocation"] = ""; +$a->strings["Update has been marked successful"] = "La actualización se ha completado con éxito"; +$a->strings["Database structure update %s was successfully applied."] = "Actualización de base de datos %s fue aplicada con éxito."; +$a->strings["Executing of database structure update %s failed with error: %s"] = "El paso de actualización de la estructura de la base de datos %s fallo con el mensaje de error: %s"; +$a->strings["Executing %s failed with error: %s"] = "Paso %s fallo con el error: %s"; +$a->strings["Update %s was successfully applied."] = "Actualización %s aplicada con éxito."; +$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización %s no ha informado, se desconoce el estado."; +$a->strings["There was no additional update function %s that needed to be called."] = "No había función adicional de actualización %s que necesitaba ser requerida."; +$a->strings["No failed updates."] = "Actualizaciones sin fallos."; +$a->strings["Check database structure"] = "Revisar estructura de la base de datos"; +$a->strings["Failed Updates"] = "Actualizaciones fallidas"; +$a->strings["This does not include updates prior to 1139, which did not return a status."] = "No se incluyen las anteriores a la 1139, que no indicaban su estado."; +$a->strings["Mark success (if update was manually applied)"] = "Marcar como correcta (si actualizaste manualmente)"; +$a->strings["Attempt to execute this update step automatically"] = "Intentando ejecutar este paso automáticamente"; +$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tthe administrator of %2\$s has set up an account for you."] = "\n\t\t\tEstimado %1\$s,\n\t\t\t\tel administrador de %2\$s ha creado una cuenta para usted."; +$a->strings["\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."] = ""; +$a->strings["Registration details for %s"] = "Detalles de registro para %s"; +$a->strings["%s user blocked/unblocked"] = [ + 0 => "%s usuario bloqueado/desbloqueado", + 1 => "%s usuarios bloqueados/desbloqueados", +]; +$a->strings["You can't remove yourself"] = ""; +$a->strings["%s user deleted"] = [ + 0 => "%s usuario eliminado", + 1 => "%s usuarios eliminados", +]; +$a->strings["User '%s' deleted"] = "Usuario '%s' eliminado"; +$a->strings["User '%s' unblocked"] = "Usuario '%s' desbloqueado"; +$a->strings["User '%s' blocked"] = "Usuario '%s' bloqueado'"; +$a->strings["Normal Account Page"] = "Página de cuenta normal"; +$a->strings["Soapbox Page"] = "Página de tribuna"; +$a->strings["Public Forum"] = "Foro público"; +$a->strings["Automatic Friend Page"] = "Página de Amistad autómatica"; +$a->strings["Private Forum"] = ""; +$a->strings["Personal Page"] = "Página personal"; +$a->strings["Organisation Page"] = "Página de organización"; +$a->strings["News Page"] = "Página de noticias"; +$a->strings["Community Forum"] = "Foro de la comunidad"; +$a->strings["Email"] = "Correo electrónico"; +$a->strings["Register date"] = "Fecha de registro"; +$a->strings["Last login"] = "Último acceso"; +$a->strings["Last item"] = "Último elemento"; +$a->strings["Type"] = ""; +$a->strings["Add User"] = "Agregar usuario"; +$a->strings["User registrations waiting for confirm"] = "Registro de usuarios esperando confirmación"; +$a->strings["User waiting for permanent deletion"] = "Usuario esperando anulación permanente."; +$a->strings["Request date"] = "Solicitud de fecha"; +$a->strings["No registrations."] = "Sin registros."; +$a->strings["Note from the user"] = "Nota para el usuario"; +$a->strings["Approve"] = "Aprobar"; +$a->strings["Deny"] = "Denegado"; +$a->strings["User blocked"] = ""; +$a->strings["Site admin"] = "Administrador de la web"; +$a->strings["Account expired"] = "Cuenta caducada"; +$a->strings["New User"] = "Nuevo usuario"; +$a->strings["Permanent deletion"] = ""; +$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Los usuarios seleccionados serán eliminados!\\n\\n¡Todo lo que hayan publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?"; +$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡El usuario {0} será eliminado!\\n\\n¡Todo lo que haya publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?"; +$a->strings["Name of the new user."] = "Nombre del nuevo usuario"; +$a->strings["Nickname"] = "Apodo"; +$a->strings["Nickname of the new user."] = "Apodo del nuevo perfil."; +$a->strings["Email address of the new user."] = "Dirección de correo del nuevo perfil."; +$a->strings["Addon %s disabled."] = ""; +$a->strings["Addon %s enabled."] = ""; +$a->strings["Disable"] = "Desactivado"; +$a->strings["Enable"] = "Activado"; +$a->strings["Toggle"] = "Activar"; +$a->strings["Settings"] = "Configuración"; +$a->strings["Author: "] = "Autor:"; +$a->strings["Maintainer: "] = "Mantenedor: "; +$a->strings["Reload active addons"] = ""; +$a->strings["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"] = ""; +$a->strings["No themes found."] = "No se encontraron temas."; +$a->strings["Screenshot"] = "Captura de pantalla"; +$a->strings["Reload active themes"] = "Recargar interfaces de usuario activos"; +$a->strings["No themes found on the system. They should be placed in %1\$s"] = ""; +$a->strings["[Experimental]"] = "[Experimental]"; +$a->strings["[Unsupported]"] = "[Sin soporte]"; +$a->strings["Log settings updated."] = "Configuración de registro actualizada."; +$a->strings["PHP log currently enabled."] = "Registro PHP actualmente disponible."; +$a->strings["PHP log currently disabled."] = "Registro PHP actualmente deshabilitado."; +$a->strings["Clear"] = "Limpiar"; +$a->strings["Enable Debugging"] = "Habilitar debugging"; +$a->strings["Log file"] = "Archivo de registro"; +$a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Debes tener permiso de escritura en el servidor. Relacionado con tu directorio de inicio de Friendica."; +$a->strings["Log level"] = "Nivel de registro"; +$a->strings["PHP logging"] = "PHP logging"; +$a->strings["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."] = ""; +$a->strings["Error trying to open %1\$s log file.\\r\\n
Check to see if file %1\$s exist and is readable."] = ""; +$a->strings["Couldn't open %1\$s log file.\\r\\n
Check to see if file %1\$s is readable."] = ""; +$a->strings["Off"] = "Apagado"; +$a->strings["On"] = "Encendido"; +$a->strings["Lock feature %s"] = "Trancar opción %s "; +$a->strings["Manage Additional Features"] = "Administrar opciones adicionales"; +$a->strings["No friends to display."] = "No hay amigos para mostrar."; +$a->strings["Connect"] = "Conectar"; +$a->strings["Authorize application connection"] = "Autorizar la conexión de la aplicación"; +$a->strings["Return to your app and insert this Securty Code:"] = "Regresa a tu aplicación e introduce este código de seguridad:"; +$a->strings["Please login to continue."] = "Inicia sesión para continuar."; +$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Quieres autorizar a esta aplicación el acceso a tus mensajes y contactos, y/o crear nuevas publicaciones para ti?"; +$a->strings["No"] = "No"; +$a->strings["You must be logged in to use addons. "] = "Tienes que estar registrado para tener acceso a los accesorios."; +$a->strings["Applications"] = "Aplicaciones"; +$a->strings["No installed applications."] = "Sin aplicaciones"; +$a->strings["Item not available."] = "Elemento no disponible."; +$a->strings["Item was not found."] = "Elemento no encontrado."; +$a->strings["Source input"] = ""; +$a->strings["BBCode::toPlaintext"] = ""; +$a->strings["BBCode::convert (raw HTML)"] = ""; +$a->strings["BBCode::convert"] = ""; +$a->strings["BBCode::convert => HTML::toBBCode"] = ""; +$a->strings["BBCode::toMarkdown"] = ""; +$a->strings["BBCode::toMarkdown => Markdown::convert"] = ""; +$a->strings["BBCode::toMarkdown => Markdown::toBBCode"] = ""; +$a->strings["BBCode::toMarkdown => Markdown::convert => HTML::toBBCode"] = ""; +$a->strings["Source input (Diaspora format)"] = ""; +$a->strings["Markdown::convert (raw HTML)"] = ""; +$a->strings["Markdown::convert"] = ""; +$a->strings["Markdown::toBBCode"] = ""; +$a->strings["Raw HTML input"] = ""; +$a->strings["HTML Input"] = ""; +$a->strings["HTML::toBBCode"] = ""; +$a->strings["HTML::toBBCode => BBCode::convert"] = ""; +$a->strings["HTML::toBBCode => BBCode::convert (raw HTML)"] = ""; +$a->strings["HTML::toMarkdown"] = ""; +$a->strings["HTML::toPlaintext"] = ""; +$a->strings["Source text"] = ""; +$a->strings["BBCode"] = ""; +$a->strings["Markdown"] = ""; +$a->strings["HTML"] = ""; +$a->strings["Login"] = "Acceder"; +$a->strings["Bad Request"] = ""; +$a->strings["The post was created"] = "La publicación fue creada"; +$a->strings["Access denied."] = "Acceso denegado."; +$a->strings["Page not found."] = "Página no encontrada."; +$a->strings["Access to this profile has been restricted."] = "El acceso a este perfil ha sido restringido."; +$a->strings["Events"] = "Eventos"; +$a->strings["View"] = "Vista"; +$a->strings["Previous"] = "Previo"; +$a->strings["Next"] = "Siguiente"; +$a->strings["today"] = "hoy"; +$a->strings["month"] = "mes"; +$a->strings["week"] = "semana"; +$a->strings["day"] = "día"; +$a->strings["list"] = "lista"; +$a->strings["User not found"] = "Usuario no encontrado"; +$a->strings["This calendar format is not supported"] = "Este formato de calendario no se soporta"; +$a->strings["No exportable data found"] = "No se ha encontrado información exportable"; +$a->strings["calendar"] = "calendario"; +$a->strings["No contacts in common."] = "Sin contactos en común."; +$a->strings["Common Friends"] = "Amigos comunes"; +$a->strings["Public access denied."] = "Acceso público denegado."; +$a->strings["Community option not available."] = ""; +$a->strings["Not available."] = "No disponible"; +$a->strings["Local Community"] = ""; +$a->strings["Posts from local users on this server"] = ""; +$a->strings["Global Community"] = ""; +$a->strings["Posts from users of the whole federated network"] = ""; +$a->strings["No results."] = "Sin resultados."; +$a->strings["This community stream shows all public posts received by this node. They may not reflect the opinions of this node’s users."] = ""; +$a->strings["Credits"] = "Creditos"; +$a->strings["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!"] = "Friendica es un proyecto comunitario, que no seria posible sin la ayuda de mucha gente. Aquí una lista de de aquellos que aportaron al código o la traducción de friendica.\nGracias a todos! "; +$a->strings["Contact settings applied."] = "Contacto configurado con éxito."; +$a->strings["Contact update failed."] = "Error al actualizar el Contacto."; +$a->strings["Contact not found."] = "Contacto no encontrado."; +$a->strings["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact may stop working."] = "ADVERTENCIA: Esto es muy avanzado y si se introduce información incorrecta tu conexión con este contacto puede dejar de funcionar."; +$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Por favor usa el botón 'Atás' de tu navegador ahora si no tienes claro qué hacer en esta página."; +$a->strings["No mirroring"] = "No espejar"; +$a->strings["Mirror as forwarded posting"] = "Espejar como reenvio"; +$a->strings["Mirror as my own posting"] = "Espejar como publicación propia"; +$a->strings["Return to contact editor"] = "Volver al editor de contactos"; +$a->strings["Refetch contact data"] = "Volver a solicitar datos del contacto."; +$a->strings["Submit"] = "Envíar"; +$a->strings["Remote Self"] = "Perfil remoto"; +$a->strings["Mirror postings from this contact"] = "Espejar publicaciones de este contacto"; +$a->strings["Mark this contact as remote_self, this will cause friendica to repost new entries from this contact."] = "Marcar este contacto como perfil_remoto, esto generara que friendica reenvía nuevas publicaciones desde esta cuenta."; +$a->strings["Account Nickname"] = "Apodo de la cuenta"; +$a->strings["@Tagname - overrides Name/Nickname"] = "@Etiqueta - Sobrescribe el Nombre/Apodo"; +$a->strings["Account URL"] = "Dirección de la cuenta"; +$a->strings["Friend Request URL"] = "Dirección de la solicitud de amistad"; +$a->strings["Friend Confirm URL"] = "Dirección de confirmación de tu amigo "; +$a->strings["Notification Endpoint URL"] = "Dirección URL de la notificación"; +$a->strings["Poll/Feed URL"] = "Dirección del Sondeo/Fuentes"; +$a->strings["New photo from this URL"] = "Nueva foto de esta dirección"; +$a->strings["Parent user not found."] = ""; +$a->strings["No parent user"] = ""; +$a->strings["Parent Password:"] = ""; +$a->strings["Please enter the password of the parent account to legitimize your request."] = ""; +$a->strings["Parent User"] = ""; +$a->strings["Parent users have total control about this account, including the account settings. Please double check whom you give this access."] = ""; +$a->strings["Delegate Page Management"] = "Delegar la administración de la página"; +$a->strings["Delegates"] = ""; +$a->strings["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."] = "Los delegados tienen la capacidad de gestionar todos los aspectos de esta cuenta/página, excepto los ajustes básicos de la cuenta. Por favor, no delegues tu cuenta personal a nadie en quien no confíes completamente."; +$a->strings["Existing Page Delegates"] = "Delegados actuales de la página"; +$a->strings["Potential Delegates"] = "Delegados potenciales"; +$a->strings["Remove"] = "Eliminar"; +$a->strings["Add"] = "Añadir"; +$a->strings["No entries."] = "Sin entradas."; +$a->strings["Profile not found."] = "Perfil no encontrado."; +$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Esto puede ocurrir a veces si la conexión fue solicitada por ambas personas y ya hubiera sido aprobada."; +$a->strings["Response from remote site was not understood."] = "La respuesta desde el sitio remoto no ha sido entendida."; +$a->strings["Unexpected response from remote site: "] = "Respuesta inesperada desde el sitio remoto: "; +$a->strings["Confirmation completed successfully."] = "Confirmación completada con éxito."; +$a->strings["Temporary failure. Please wait and try again."] = "Error temporal. Por favor, espere y vuelva a intentarlo."; +$a->strings["Introduction failed or was revoked."] = "La presentación ha fallado o ha sido anulada."; +$a->strings["Remote site reported: "] = "El sito remoto informó: "; +$a->strings["Unable to set contact photo."] = "Imposible establecer la foto del contacto."; +$a->strings["No user record found for '%s' "] = "No se ha encontrado a ningún '%s' "; +$a->strings["Our site encryption key is apparently messed up."] = "Nuestra clave de cifrado del sitio es aparentemente un lío."; +$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "Se ha proporcionado una dirección vacía o no hemos podido descifrarla."; +$a->strings["Contact record was not found for you on our site."] = "El contacto no se ha encontrado en nuestra base de datos."; +$a->strings["Site public key not available in contact record for URL %s."] = "La clave pública del sitio no está disponible en los datos del contacto para %s."; +$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La identificación proporcionada por el sistema es un duplicado de nuestro sistema. Debería funcionar si lo intentas de nuevo."; +$a->strings["Unable to set your contact credentials on our system."] = "No se puede establecer las credenciales de tu contacto en nuestro sistema."; +$a->strings["Unable to update your contact profile details on our system"] = "No se puede actualizar los datos de tu perfil de contacto en nuestro sistema"; +$a->strings["[Name Withheld]"] = "[Nombre oculto]"; +$a->strings["%1\$s welcomes %2\$s"] = "%1\$s te da la bienvenida a %2\$s"; +$a->strings["This introduction has already been accepted."] = "Esta presentación ya ha sido aceptada."; +$a->strings["Profile location is not valid or does not contain profile information."] = "La dirección del perfil no es válida o no contiene información del perfil."; +$a->strings["Warning: profile location has no identifiable owner name."] = "Aviso: La dirección del perfil no tiene un nombre de propietario identificable."; +$a->strings["Warning: profile location has no profile photo."] = "Aviso: la dirección del perfil no tiene foto de perfil."; +$a->strings["%d required parameter was not found at the given location"] = [ + 0 => "no se encontró %d parámetro requerido en el lugar determinado", + 1 => "no se encontraron %d parámetros requeridos en el lugar determinado", +]; +$a->strings["Introduction complete."] = "Presentación completa."; +$a->strings["Unrecoverable protocol error."] = "Error de protocolo irrecuperable."; +$a->strings["Profile unavailable."] = "Perfil no disponible."; +$a->strings["%s has received too many connection requests today."] = "%s ha recibido demasiadas solicitudes de conexión hoy."; +$a->strings["Spam protection measures have been invoked."] = "Han sido activadas las medidas de protección contra spam."; +$a->strings["Friends are advised to please try again in 24 hours."] = "Tus amigos serán avisados para que lo intenten de nuevo pasadas 24 horas."; +$a->strings["Invalid locator"] = "Localizador no válido"; +$a->strings["You have already introduced yourself here."] = "Ya te has presentado aquí."; +$a->strings["Apparently you are already friends with %s."] = "Al parecer, ya eres amigo de %s."; +$a->strings["Invalid profile URL."] = "Dirección de perfil no válida."; +$a->strings["Disallowed profile URL."] = "Dirección de perfil no permitida."; +$a->strings["Failed to update contact record."] = "Error al actualizar el contacto."; +$a->strings["Your introduction has been sent."] = "Tu presentación ha sido enviada."; +$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "La subscripción remota no se podrá hacer para tu red. Por favor contacta directamente desde tu sistema."; +$a->strings["Please login to confirm introduction."] = "Inicia sesión para confirmar la presentación."; +$a->strings["Incorrect identity currently logged in. Please login to this profile."] = "Sesión iniciada con la identificación incorrecta. Entra en este perfil."; +$a->strings["Confirm"] = "Confirmar"; +$a->strings["Hide this contact"] = "Ocultar este contacto"; +$a->strings["Welcome home %s."] = "Bienvenido a casa %s"; +$a->strings["Please confirm your introduction/connection request to %s."] = "Por favor, confirma tu solicitud de presentación/conexión con %s."; +$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Por favor introduce tu dirección ID de una de las siguientes redes sociales soportadas:"; +$a->strings["If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today."] = ""; +$a->strings["Friend/Connection Request"] = "Solicitud de Amistad/Conexión"; +$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"] = ""; +$a->strings["Please answer the following:"] = "Por favor responde lo siguiente:"; +$a->strings["Does %s know you?"] = "¿%s te conoce?"; +$a->strings["Add a personal note:"] = "Añade una nota personal:"; +$a->strings["Friendica"] = "Friendica"; +$a->strings["GNU Social (Pleroma, Mastodon)"] = ""; +$a->strings["Diaspora (Socialhome, Hubzilla)"] = ""; +$a->strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = "(En vez de usar este formulario, introduce %s en la barra de búsqueda de Diaspora."; +$a->strings["Your Identity Address:"] = "Dirección de tu perfil:"; +$a->strings["Submit Request"] = "Enviar solicitud"; +$a->strings["Location:"] = "Localización:"; +$a->strings["Gender:"] = "Género:"; +$a->strings["Status:"] = "Estado:"; +$a->strings["Homepage:"] = "Página de inicio:"; +$a->strings["About:"] = "Acerca de:"; +$a->strings["Global Directory"] = "Directorio global"; +$a->strings["Find on this site"] = "Buscar en este sitio"; +$a->strings["Results for:"] = "Resultados para:"; +$a->strings["Site Directory"] = "Directorio del sitio"; +$a->strings["Find"] = "Buscar"; +$a->strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas pueden que estén ocultas)."; +$a->strings["People Search - %s"] = "Buscar perfiles - %s"; +$a->strings["Forum Search - %s"] = "Búsqueda de foro - %s"; +$a->strings["No matches"] = "Sin conincidencias"; +$a->strings["Item not found"] = "Elemento no encontrado"; +$a->strings["Edit post"] = "Editar publicación"; +$a->strings["Save"] = "Guardar"; +$a->strings["Insert web link"] = "Insertar enlace"; +$a->strings["web link"] = "enlace web"; +$a->strings["Insert video link"] = "Insertar enlace del vídeo"; +$a->strings["video link"] = "enlace de video"; +$a->strings["Insert audio link"] = "Insertar vínculo del audio"; +$a->strings["audio link"] = "enlace de audio"; +$a->strings["CC: email addresses"] = "CC: dirección de correo electrónico"; +$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com"; +$a->strings["Event can not end before it has started."] = "Un evento no puede terminar antes de su comienzo."; +$a->strings["Event title and start time are required."] = "Título del evento y hora de inicio requeridas."; +$a->strings["Create New Event"] = "Crea un evento nuevo"; +$a->strings["Event details"] = "Detalles del evento"; +$a->strings["Starting date and Title are required."] = "Se requiere fecha de comienzo y titulo"; +$a->strings["Event Starts:"] = "Inicio del evento:"; +$a->strings["Required"] = "Obligatorio"; +$a->strings["Finish date/time is not known or not relevant"] = "La fecha/hora de finalización no es conocida o es irrelevante."; +$a->strings["Event Finishes:"] = "Finalización del evento:"; +$a->strings["Adjust for viewer timezone"] = "Ajuste de zona horaria"; +$a->strings["Description:"] = "Descripción:"; +$a->strings["Title:"] = "Título:"; +$a->strings["Share this event"] = "Comparte este evento"; +$a->strings["Basic"] = "Basic"; +$a->strings["Permissions"] = "Permisos"; +$a->strings["Failed to remove event"] = "Error al eliminar el evento"; +$a->strings["Event removed"] = "Evento eliminado"; +$a->strings["Photos"] = "Fotografías"; +$a->strings["Contact Photos"] = "Foto del contacto"; +$a->strings["Upload"] = "Subir"; +$a->strings["Files"] = "Archivos"; +$a->strings["You must be logged in to use this module"] = ""; +$a->strings["Source URL"] = ""; +$a->strings["- select -"] = "- seleccionar -"; +$a->strings["The contact could not be added."] = ""; +$a->strings["You already added this contact."] = "Ya has añadido este contacto."; +$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "El soporte de Diaspora* no esta habilitado, el contacto no puede ser agregado."; +$a->strings["OStatus support is disabled. Contact can't be added."] = "El soporte de OStatus no esta habilitado, el contacto no puede ser agregado."; +$a->strings["The network type couldn't be detected. Contact can't be added."] = "No se pudo detectar el tipo de red. Contacto no puede ser agregado."; +$a->strings["Tags:"] = "Etiquetas:"; +$a->strings["Status Messages and Posts"] = "Mensajes de Estado y Publicaciones"; +$a->strings["This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s."] = ""; +$a->strings["Please visit Friendi.ca to learn more about the Friendica project."] = "Visite Friendi.ca para aprender más sobre el proyecto Friendica, por favor."; +$a->strings["Bug reports and issues: please visit"] = "Reporte de fallos y problemas: por favor visita"; +$a->strings["the bugtracker at github"] = "aviso de fallas (bugs) en github"; +$a->strings["Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"] = ""; +$a->strings["Installed addons/apps:"] = ""; +$a->strings["No installed addons/apps"] = ""; +$a->strings["Read about the Terms of Service of this node."] = ""; +$a->strings["On this server the following remote servers are blocked."] = "En este servidor los siguientes servidores remotos están bloqueados."; +$a->strings["Friend suggestion sent."] = "Solicitud de amistad enviada."; +$a->strings["Suggest Friends"] = "Sugerencias de amistad"; +$a->strings["Suggest a friend for %s"] = "Recomienda un amigo a %s"; +$a->strings["Group created."] = "Grupo creado."; +$a->strings["Could not create group."] = "Imposible crear el grupo."; +$a->strings["Group not found."] = "Grupo no encontrado."; +$a->strings["Group name changed."] = "El nombre del grupo ha cambiado."; +$a->strings["Permission denied"] = "Permiso denegado"; +$a->strings["Save Group"] = "Guardar grupo"; +$a->strings["Filter"] = ""; +$a->strings["Create a group of contacts/friends."] = "Crea un grupo de contactos/amigos."; +$a->strings["Group Name: "] = "Nombre del grupo: "; +$a->strings["Contacts not in any group"] = "Contactos sin grupo"; +$a->strings["Group removed."] = "Grupo eliminado."; +$a->strings["Unable to remove group."] = "No se puede eliminar el grupo."; +$a->strings["Delete Group"] = "Borrar grupo"; +$a->strings["Edit Group Name"] = "Editar nombre de grupo"; +$a->strings["Members"] = "Miembros"; +$a->strings["All Contacts"] = "Todos los contactos"; +$a->strings["Group is empty"] = "El grupo está vacío"; +$a->strings["Remove contact from group"] = ""; +$a->strings["Click on a contact to add or remove."] = "Pulsa en un contacto para añadirlo o eliminarlo."; +$a->strings["Add contact to group"] = ""; +$a->strings["No profile"] = "Nigún perfil"; +$a->strings["Help:"] = "Ayuda:"; +$a->strings["Help"] = "Ayuda"; +$a->strings["Not Found"] = "No se ha encontrado"; +$a->strings["Welcome to %s"] = "Bienvenido a %s"; +$a->strings["Total invitation limit exceeded."] = "Límite total de invitaciones excedido."; +$a->strings["%s : Not a valid email address."] = "%s : No es una dirección de correo válida."; +$a->strings["Please join us on Friendica"] = "Únete a nosotros en Friendica"; +$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Límite de invitaciones sobrepasado. Contacta con el administrador del sitio."; +$a->strings["%s : Message delivery failed."] = "%s : Ha fallado la entrega del mensaje."; +$a->strings["%d message sent."] = [ + 0 => "%d mensaje enviado.", + 1 => "%d mensajes enviados.", +]; +$a->strings["You have no more invitations available"] = "No tienes más invitaciones disponibles"; +$a->strings["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."] = "Visita %s para ver una lista de servidores públicos donde puedes darte de alta. Los miembros de otros servidores de Friendica pueden conectarse entre ellos, así como con miembros de otras redes sociales diferentes."; +$a->strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Para aceptar la invitación visita y regístrate en %s o en cualquier otro servidor público de Friendica."; +$a->strings["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."] = "Los servidores de Friendica están interconectados para crear una enorme red social centrada en la privacidad y controlada por sus miembros. También se puede conectar con muchas redes sociales tradicionales. Mira en %s para poder ver un listado de servidores alternativos de Friendica donde puedes darte de alta."; +$a->strings["Our apologies. This system is not currently configured to connect with other public sites or invite members."] = "Discúlpanos. Este sistema no está configurado actualmente para conectar con otros servidores públicos o invitar nuevos miembros."; +$a->strings["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."] = "Los sitios de Friendica se conectan entre sí para crear una gran red social con privacidad mejorada que es propiedad y está controlada por sus miembros. También pueden conectarse con muchas redes sociales tradicionales."; +$a->strings["To accept this invitation, please visit and register at %s."] = "Para aceptar esta invitación, visite y regístrese en%s, por favor."; +$a->strings["Send invitations"] = "Enviar invitaciones"; +$a->strings["Enter email addresses, one per line:"] = "Introduce las direcciones de correo, una por línea:"; +$a->strings["Your message:"] = "Tu mensaje:"; +$a->strings["You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web."] = "Estás cordialmente invitado a unirte a mi y a otros amigos en Friendica, creemos juntos una red social mejor."; +$a->strings["You will need to supply this invitation code: \$invite_code"] = "Tienes que proporcionar el siguiente código: \$invite_code"; +$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Una vez registrado, por favor contacta conmigo a través de mi página de perfil en:"; +$a->strings["For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca"] = "Para más información sobre el proyecto Friendica y por qué sentimos que es importante, visite http://friendi.ca, por favor"; +$a->strings["Unable to locate original post."] = "No se puede encontrar la publicación original."; +$a->strings["Empty post discarded."] = "Publicación vacía descartada."; +$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "Este mensaje te lo ha enviado %s, miembro de la red social Friendica."; +$a->strings["You may visit them online at %s"] = "Los puedes visitar en línea en %s"; +$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Por favor contacta con el remitente respondiendo a este mensaje si no deseas recibir estos mensajes."; +$a->strings["%s posted an update."] = "%s ha publicado una actualización."; +$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A"; +$a->strings["Time Conversion"] = "Conversión horária"; +$a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica ofrece este servicio para compartir eventos con otros servidores de la red friendica y amigos en zonas de horarios desconocidos."; +$a->strings["UTC time: %s"] = "Tiempo UTC: %s"; +$a->strings["Current timezone: %s"] = "Zona horaria actual: %s"; +$a->strings["Converted localtime: %s"] = "Zona horaria local convertida: %s"; +$a->strings["Please select your timezone:"] = "Por favor, selecciona tu zona horaria:"; +$a->strings["Remote privacy information not available."] = "Privacidad de la información remota no disponible."; +$a->strings["Visible to:"] = "Visible para:"; +$a->strings["No valid account found."] = "No se ha encontrado ninguna cuenta válida"; +$a->strings["Password reset request issued. Check your email."] = "Solicitud de restablecimiento de contraseña enviada. Revisa tu correo."; +$a->strings["\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."] = ""; +$a->strings["\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"] = ""; +$a->strings["Password reset requested at %s"] = "Contraseña restablecida enviada a %s"; +$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no puede ser verificada (deberías haberla proporcionado antes). Falló el restablecimiento de la contraseña."; +$a->strings["Request has expired, please make a new one."] = ""; +$a->strings["Forgot your Password?"] = "¿Olvidaste tu contraseña?"; +$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduce tu correo para restablecer tu contraseña. Luego comprueba tu correo para las instrucciones adicionales."; +$a->strings["Nickname or Email: "] = "Apodo o Correo electrónico: "; +$a->strings["Reset"] = "Restablecer"; +$a->strings["Password Reset"] = "Restablecer la contraseña"; +$a->strings["Your password has been reset as requested."] = "Tu contraseña ha sido restablecida como solicitaste."; +$a->strings["Your new password is"] = "Tu nueva contraseña es"; +$a->strings["Save or copy your new password - and then"] = "Guarda o copia tu nueva contraseña y luego"; +$a->strings["click here to login"] = "pulsa aquí para acceder"; +$a->strings["Your password may be changed from the Settings page after successful login."] = "Puedes cambiar tu contraseña desde la página de Configuración después de acceder con éxito."; +$a->strings["\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"] = ""; +$a->strings["\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"] = ""; +$a->strings["Your password has been changed at %s"] = "Tu contraseña se ha cambiado por %s"; +$a->strings["System down for maintenance"] = "Servicio suspendido por mantenimiento"; +$a->strings["Manage Identities and/or Pages"] = "Administrar identidades y/o páginas"; +$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Cambia entre diferentes identidades o páginas de Comunidad/Grupos que comparten los detalles de tu cuenta o sobre los que tienes permisos para administrar"; +$a->strings["Select an identity to manage: "] = "Selecciona una identidad a gestionar:"; +$a->strings["No keywords to match. Please add keywords to your default profile."] = "No hay palabras clave que coincidan. Por favor, agrega algunas palabras claves en tu perfil predeterminado."; +$a->strings["first"] = "primera"; +$a->strings["next"] = "sig."; +$a->strings["Profile Match"] = "Coincidencias de Perfil"; +$a->strings["New Message"] = "Nuevo mensaje"; +$a->strings["No recipient selected."] = "Ningún destinatario seleccionado"; +$a->strings["Unable to locate contact information."] = "No se puede encontrar información del contacto."; +$a->strings["Message could not be sent."] = "El mensaje no ha podido ser enviado."; +$a->strings["Message collection failure."] = "Fallo en la recolección de mensajes."; +$a->strings["Message sent."] = "Mensaje enviado."; +$a->strings["Discard"] = "Descartar"; +$a->strings["Messages"] = "Mensajes"; +$a->strings["Do you really want to delete this message?"] = "¿Estás seguro de que quieres borrar este mensaje?"; +$a->strings["Conversation not found."] = ""; +$a->strings["Message deleted."] = "Mensaje eliminado."; +$a->strings["Conversation removed."] = "Conversación eliminada."; +$a->strings["Please enter a link URL:"] = "Introduce la dirección del enlace:"; +$a->strings["Send Private Message"] = "Enviar mensaje privado"; +$a->strings["To:"] = "Para:"; +$a->strings["Subject:"] = "Asunto:"; +$a->strings["No messages."] = "No hay mensajes."; +$a->strings["Message not available."] = "Mensaje no disponibile."; +$a->strings["Delete message"] = "Borrar mensaje"; +$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A"; +$a->strings["Delete conversation"] = "Eliminar conversación"; +$a->strings["No secure communications available. You may be able to respond from the sender's profile page."] = "No hay comunicaciones seguras disponibles. Podrías responder desde la página de perfil del remitente. "; +$a->strings["Send Reply"] = "Enviar respuesta"; +$a->strings["Unknown sender - %s"] = "Remitente desconocido - %s"; +$a->strings["You and %s"] = "Tú y %s"; +$a->strings["%s and You"] = "%s y Tú"; +$a->strings["%d message"] = [ + 0 => "%d mensaje", + 1 => "%d mensajes", +]; +$a->strings["Remove term"] = "Eliminar término"; +$a->strings["Saved Searches"] = "Búsquedas guardadas"; +$a->strings["add"] = "añadir"; +$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = [ + 0 => "Aviso: Este grupo contiene %s miembro de una red que no permite mensajes públicos.", + 1 => "Aviso: Este grupo contiene %s miembros de una red que no permite mensajes públicos.", +]; +$a->strings["Messages in this group won't be send to these receivers."] = "Los mensajes de este grupo no se enviarán a estos receptores."; +$a->strings["No such group"] = "Ningún grupo"; +$a->strings["Group: %s"] = "Grupo: %s"; +$a->strings["Private messages to this person are at risk of public disclosure."] = "Los mensajes privados a esta persona corren el riesgo de ser mostrados públicamente."; +$a->strings["Invalid contact."] = "Contacto erróneo."; +$a->strings["Commented Order"] = "Orden de comentarios"; +$a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentarios"; +$a->strings["Posted Order"] = "Orden de publicación"; +$a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación"; +$a->strings["Personal"] = "Personal"; +$a->strings["Posts that mention or involve you"] = "Publicaciones que te mencionan o involucran"; +$a->strings["New"] = "Nuevo"; +$a->strings["Activity Stream - by date"] = "Corriente de actividad por fecha"; +$a->strings["Shared Links"] = "Enlaces compartidos"; +$a->strings["Interesting Links"] = "Enlaces interesantes"; +$a->strings["Starred"] = "Favoritos"; +$a->strings["Favourite Posts"] = "Publicaciones favoritas"; +$a->strings["Welcome to Friendica"] = "Bienvenido a Friendica "; +$a->strings["New Member Checklist"] = "Listado de nuevos miembros"; +$a->strings["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."] = "Nos gustaría ofrecerte algunos consejos y enlaces para ayudar a hacer tu experiencia más amena. Pulsa en cualquier elemento para visitar la página correspondiente. Un enlace a esta página será visible desde tu página de inicio durante las dos semanas siguientes a tu inscripción y luego desaparecerá."; +$a->strings["Getting Started"] = "Empezando"; +$a->strings["Friendica Walk-Through"] = "Visita guiada a Friendica"; +$a->strings["On your Quick Start page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join."] = "En tu página de Inicio Rápido - busca una introducción breve para tus pestañas de perfil y red, haz algunas conexiones nuevas, y busca algunos grupos a los que unirte."; +$a->strings["Go to Your Settings"] = "Ir a tus ajustes"; +$a->strings["On your Settings 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."] = "En la página de Configuración puedes cambiar tu contraseña inicial. También aparece tu ID (Identity Address). Es parecida a una dirección de correo y te servirá para conectar con gente de redes sociales libres."; +$a->strings["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."] = "Revisa las otras configuraciones, especialmente la configuración de privacidad. Un listado de directorio sin publicar es como tener un número de teléfono sin publicar. Normalmente querrás publicar tu listado, a menos que tus amigos y amigos potenciales sepan cómo ponerse en contacto contigo."; +$a->strings["Profile"] = "Perfil"; +$a->strings["Upload Profile Photo"] = "Subir foto del Perfil"; +$a->strings["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."] = "Sube una foto para tu perfil si no lo has hecho aún. Los estudios han demostrado que la gente que usa fotos suyas reales tienen diez veces más éxito a la hora de entablar amistad que las que no."; +$a->strings["Edit Your Profile"] = "Editar tu perfil"; +$a->strings["Edit your default profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Edita tu perfil predeterminado como quieras. Revisa la configuración para ocultar tu lista de amigos o tu perfil a los visitantes desconocidos."; +$a->strings["Profile Keywords"] = "Palabras clave del perfil"; +$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Define en tu perfil público algunas palabras que describan tus intereses. Así podremos buscar otras personas con los mismos gustos y sugerirte posibles amigos."; +$a->strings["Connecting"] = "Conectando"; +$a->strings["Importing Emails"] = "Importando correos electrónicos"; +$a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Introduce la información para acceder a tu correo en la página de Configuración del conector si quieres importar e interactuar con amigos o listas de correos del buzón de entrada de tu correo electrónico."; +$a->strings["Go to Your Contacts Page"] = "Ir a tu página de contactos"; +$a->strings["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 Add New Contact dialog."] = "Tu página de Contactos es el portal desde donde podrás manejar tus amistades y conectarte con amigos de otras redes. Normalmente introduces su dirección o la dirección de su sitio web en el recuadro \"Añadir contacto nuevo\"."; +$a->strings["Go to Your Site's Directory"] = "Ir al directorio de tu sitio"; +$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a Connect or Follow link on their profile page. Provide your own Identity Address if requested."] = "El Directorio te permite encontrar otras personas en esta red o en cualquier otro sitio federado. Busca algún enlace de Conectar o Seguir en su perfil. Proporciona tu direción personal si es necesario."; +$a->strings["Finding New People"] = "Encontrando nueva gente"; +$a->strings["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."] = "En el panel lateral de la página de Contactos existen varias herramientas para encontrar nuevos amigos. Podemos filtrar personas por sus intereses, buscar personas por nombre o por sus intereses, y ofrecerte sugerencias basadas en sus relaciones de la red. En un sitio nuevo, las sugerencias de amigos por lo general comienzan pasadas las 24 horas."; +$a->strings["Groups"] = "Grupos"; +$a->strings["Group Your Contacts"] = "Agrupa tus contactos"; +$a->strings["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."] = "Una vez que tengas algunos amigos, puedes organizarlos en grupos privados de conversación mediante el memnú en tu página de Contactos y luego puedes interactuar con cada grupo por separado desde tu página de Red."; +$a->strings["Why Aren't My Posts Public?"] = "¿Por qué mis publicaciones no son públicas?"; +$a->strings["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."] = "Friendica respeta tu privacidad. Por defecto, tus publicaciones solo se mostrarán a personas que hayas añadido como amistades. Para más información, mira la sección de ayuda en el enlace de más arriba."; +$a->strings["Getting Help"] = "Consiguiendo ayuda"; +$a->strings["Go to the Help Section"] = "Ir a la sección de ayuda"; +$a->strings["Our help pages may be consulted for detail on other program features and resources."] = "Puedes consultar nuestra página de Ayuda para más información y recursos de ayuda."; +$a->strings["Personal Notes"] = "Notas personales"; +$a->strings["Invalid request identifier."] = "Solicitud de identificación no válida."; +$a->strings["Ignore"] = "Ignorar"; +$a->strings["Notifications"] = "Notificaciones"; +$a->strings["Network Notifications"] = "Notificaciones de Red"; +$a->strings["System Notifications"] = "Notificaciones del sistema"; +$a->strings["Personal Notifications"] = "Notificaciones personales"; +$a->strings["Home Notifications"] = "Notificaciones de Inicio"; +$a->strings["Show unread"] = "Mostrar no leído"; +$a->strings["Show all"] = "Mostrar todo"; +$a->strings["Show Ignored Requests"] = "Mostrar peticiones ignoradas"; +$a->strings["Hide Ignored Requests"] = "Ocultar peticiones ignoradas"; +$a->strings["Notification type:"] = ""; +$a->strings["Suggested by:"] = ""; +$a->strings["Hide this contact from others"] = "Ocultar este contacto a los demás."; +$a->strings["Claims to be known to you: "] = "Dice conocerte: "; +$a->strings["yes"] = "sí"; +$a->strings["no"] = "no"; +$a->strings["Shall your connection be bidirectional or not?"] = "¿Su conexión debe ser bidireccional o no?"; +$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "Aceptar a %s como amigo le permite a %s suscribirse a sus publicaciones, y usted también recibirá actualizaciones de ellos en sus noticias."; +$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Aceptar a %s como suscriptor les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias."; +$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Aceptar a %s como participante les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias."; +$a->strings["Friend"] = "Amigo"; +$a->strings["Sharer"] = "Lector"; +$a->strings["Subscriber"] = "Suscriptor"; +$a->strings["Network:"] = "Red:"; +$a->strings["No introductions."] = "Sin presentaciones."; +$a->strings["No more %s notifications."] = "No más notificaciones de %s."; +$a->strings["No more system notifications."] = "No hay más notificaciones del sistema."; +$a->strings["Post successful."] = "¡Publicado!"; +$a->strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. ID no devuelta."; +$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Cuenta no encontrada y el registro OpenID no está permitido en ese sitio."; +$a->strings["Login failed."] = "Accesso fallido."; +$a->strings["Subscribing to OStatus contacts"] = "Subscribir a los contactos de OStatus"; +$a->strings["No contact provided."] = "Sin suministro de datos de contacto."; +$a->strings["Couldn't fetch information for contact."] = "No se ha podido conseguir la información del contacto."; +$a->strings["Couldn't fetch friends for contact."] = "No se ha podido conseguir datos de amigos para contactar."; +$a->strings["Done"] = "hecho!"; +$a->strings["success"] = "exito!"; +$a->strings["failed"] = "fallido!"; +$a->strings["ignored"] = "ignorado"; +$a->strings["Keep this window open until done."] = "Mantén esta ventana abierta hasta que el proceso ha terminado."; +$a->strings["Photo Albums"] = "Álbum de Fotos"; +$a->strings["Recent Photos"] = "Fotos recientes"; +$a->strings["Upload New Photos"] = "Subir nuevas fotos"; +$a->strings["everybody"] = "todos"; +$a->strings["Contact information unavailable"] = "Información del contacto no disponible"; +$a->strings["Album not found."] = "Álbum no encontrado."; +$a->strings["Delete Album"] = "Eliminar álbum"; +$a->strings["Do you really want to delete this photo album and all its photos?"] = "¿Estás seguro de quieres borrar este álbum y todas sus fotos?"; +$a->strings["Delete Photo"] = "Eliminar foto"; +$a->strings["Do you really want to delete this photo?"] = "¿Estás seguro de que quieres borrar esta foto?"; +$a->strings["a photo"] = "una foto"; +$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s fue etiquetado en %2\$s por %3\$s"; +$a->strings["Image exceeds size limit of %s"] = "La imagen excede el limite de %s"; +$a->strings["Image upload didn't complete, please try again"] = ""; +$a->strings["Image file is missing"] = ""; +$a->strings["Server can't accept new file upload at this time, please contact your administrator"] = ""; +$a->strings["Image file is empty."] = "El archivo de imagen está vacío."; +$a->strings["Unable to process image."] = "Imposible procesar la imagen."; +$a->strings["Image upload failed."] = "Error al subir la imagen."; +$a->strings["No photos selected"] = "Ninguna foto seleccionada"; +$a->strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; +$a->strings["Upload Photos"] = "Subir fotos"; +$a->strings["New album name: "] = "Nombre del nuevo álbum: "; +$a->strings["or select existing album:"] = ""; +$a->strings["Do not show a status post for this upload"] = "No actualizar tu estado con este envío"; +$a->strings["Show to Groups"] = "Mostrar a los Grupos"; +$a->strings["Show to Contacts"] = "Mostrar a los Contactos"; +$a->strings["Edit Album"] = "Modificar álbum"; +$a->strings["Show Newest First"] = "Mostrar más nuevos primero"; +$a->strings["Show Oldest First"] = "Mostrar más antiguos primero"; +$a->strings["View Photo"] = "Ver foto"; +$a->strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; +$a->strings["Photo not available"] = "Foto no disponible"; +$a->strings["View photo"] = "Ver foto"; +$a->strings["Edit photo"] = "Modificar foto"; +$a->strings["Use as profile photo"] = "Usar como foto del perfil"; +$a->strings["Private Message"] = "Mensaje privado"; +$a->strings["View Full Size"] = "Ver a tamaño completo"; +$a->strings["Tags: "] = "Etiquetas: "; +$a->strings["[Select tags to remove]"] = ""; +$a->strings["New album name"] = "Nuevo nombre del álbum"; +$a->strings["Caption"] = "Título"; +$a->strings["Add a Tag"] = "Añadir una etiqueta"; +$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Ejemplo: @juan, @Barbara_Ruiz, @julia@example.com, #California, #camping"; +$a->strings["Do not rotate"] = "No rotar"; +$a->strings["Rotate CW (right)"] = "Girar a la derecha"; +$a->strings["Rotate CCW (left)"] = "Girar a la izquierda"; +$a->strings["I like this (toggle)"] = "Me gusta esto (cambiar)"; +$a->strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; +$a->strings["This is you"] = "Este eres tú"; +$a->strings["Comment"] = "Comentar"; +$a->strings["Map"] = "Mapa"; +$a->strings["View Album"] = "Ver Álbum"; +$a->strings["{0} wants to be your friend"] = "{0} quiere ser tu amigo"; +$a->strings["{0} requested registration"] = "{0} solicitudes de registro"; +$a->strings["Poke/Prod"] = "Toque/Empujón"; +$a->strings["poke, prod or do other things to somebody"] = "da un toque, empujón o similar a alguien"; +$a->strings["Recipient"] = "Receptor"; +$a->strings["Choose what you wish to do to recipient"] = "Elige qué desea hacer con el receptor"; +$a->strings["Make this post private"] = "Hacer esta publicación privada"; +$a->strings["Only logged in users are permitted to perform a probing."] = "Sólo los usuarios registrados pueden realizar una exploración."; +$a->strings["%s's timeline"] = ""; +$a->strings["%s's posts"] = ""; +$a->strings["%s's comments"] = ""; +$a->strings["Profile deleted."] = "Perfil eliminado."; +$a->strings["Profile-"] = "Perfil-"; +$a->strings["New profile created."] = "Nuevo perfil creado."; +$a->strings["Profile unavailable to clone."] = "Imposible duplicar el perfil."; +$a->strings["Profile Name is required."] = "Se necesita un nombre de perfil."; +$a->strings["Marital Status"] = "Estado civil"; +$a->strings["Romantic Partner"] = "Pareja sentimental"; +$a->strings["Work/Employment"] = "Trabajo/estudios"; +$a->strings["Religion"] = "Religión"; +$a->strings["Political Views"] = "Preferencias políticas"; +$a->strings["Gender"] = "Género"; +$a->strings["Sexual Preference"] = "Orientación sexual"; +$a->strings["XMPP"] = "XMPP"; +$a->strings["Homepage"] = "Página de inicio"; +$a->strings["Interests"] = "Intereses"; +$a->strings["Location"] = "Ubicación"; +$a->strings["Profile updated."] = "Perfil actualizado."; +$a->strings["Hide contacts and friends:"] = "Ocultar contactos y amigos"; +$a->strings["Hide your contact/friend list from viewers of this profile?"] = "¿Ocultar tu lista de contactos/amigos en este perfil?"; +$a->strings["Show more profile fields:"] = "Mostrar mas campos del perfil:"; +$a->strings["Profile Actions"] = "Acciones de perfil"; +$a->strings["Edit Profile Details"] = "Editar detalles de tu perfil"; +$a->strings["Change Profile Photo"] = "Cambiar imagen del Perfil"; +$a->strings["View this profile"] = "Ver este perfil"; +$a->strings["View all profiles"] = ""; +$a->strings["Edit visibility"] = "Editar visibilidad"; +$a->strings["Create a new profile using these settings"] = "¿Crear un nuevo perfil con esta configuración?"; +$a->strings["Clone this profile"] = "Clonar este perfil"; +$a->strings["Delete this profile"] = "Eliminar este perfil"; +$a->strings["Basic information"] = "Información básica"; +$a->strings["Profile picture"] = "Imagen del perfil"; +$a->strings["Preferences"] = "Preferencias"; +$a->strings["Status information"] = "Información del estatus"; +$a->strings["Additional information"] = "Información addicional"; +$a->strings["Relation"] = "Relación"; +$a->strings["Miscellaneous"] = "Varios"; +$a->strings["Your Gender:"] = "Género:"; +$a->strings[" Marital Status:"] = " Estado civil:"; +$a->strings["Sexual Preference:"] = "Preferencia sexual:"; +$a->strings["Example: fishing photography software"] = "Ejemplo: pesca fotografía software"; +$a->strings["Profile Name:"] = "Nombres del perfil:"; +$a->strings["This is your public profile.
It may be visible to anybody using the internet."] = "Éste es tu perfil público.
Puede ser visto por cualquier usuario de internet."; +$a->strings["Your Full Name:"] = "Tu nombre completo:"; +$a->strings["Title/Description:"] = "Título/Descrición:"; +$a->strings["Street Address:"] = "Dirección"; +$a->strings["Locality/City:"] = "Localidad/Ciudad:"; +$a->strings["Region/State:"] = "Región/Estado:"; +$a->strings["Postal/Zip Code:"] = "Código postal:"; +$a->strings["Country:"] = "País"; +$a->strings["Age: "] = "Edad: "; +$a->strings["Who: (if applicable)"] = "¿Quién? (si es aplicable)"; +$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Ejemplos: cathy123, Cathy Williams, cathy@example.com"; +$a->strings["Since [date]:"] = "Desde [fecha]:"; +$a->strings["Tell us about yourself..."] = "Háblanos sobre ti..."; +$a->strings["XMPP (Jabber) address:"] = "Dirección XMPP (Jabber):"; +$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "La dirección XMPP será propagada entre sus contactos para que puedan seguirle."; +$a->strings["Homepage URL:"] = "Dirección de tu página:"; +$a->strings["Hometown:"] = "Ciudad de origen:"; +$a->strings["Political Views:"] = "Ideas políticas:"; +$a->strings["Religious Views:"] = "Creencias religiosas:"; +$a->strings["Public Keywords:"] = "Palabras clave públicas:"; +$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Utilizadas para sugerir amigos potenciales, otros pueden verlo)"; +$a->strings["Private Keywords:"] = "Palabras clave privadas:"; +$a->strings["(Used for searching profiles, never shown to others)"] = "(Utilizadas para buscar perfiles, nunca se muestra a otros)"; +$a->strings["Likes:"] = "Me gusta:"; +$a->strings["Dislikes:"] = "No me gusta:"; +$a->strings["Musical interests"] = "Gustos musicales"; +$a->strings["Books, literature"] = "Libros, literatura"; +$a->strings["Television"] = "Televisión"; +$a->strings["Film/dance/culture/entertainment"] = "Películas/baile/cultura/entretenimiento"; +$a->strings["Hobbies/Interests"] = "Aficiones/Intereses"; +$a->strings["Love/romance"] = "Amor/Romance"; +$a->strings["Work/employment"] = "Trabajo/ocupación"; +$a->strings["School/education"] = "Escuela/estudios"; +$a->strings["Contact information and Social Networks"] = "Informacioń de contacto y Redes sociales"; +$a->strings["Profile Image"] = "Imagen del Perfil"; +$a->strings["visible to everybody"] = "Visible para todos"; +$a->strings["Edit/Manage Profiles"] = "Editar/Administrar perfiles"; +$a->strings["Change profile photo"] = "Cambiar foto del perfil"; +$a->strings["Create New Profile"] = "Crear nuevo perfil"; +$a->strings["Image uploaded but image cropping failed."] = "Imagen recibida, pero ha fallado al recortarla."; +$a->strings["Image size reduction [%s] failed."] = "Ha fallado la reducción de las dimensiones de la imagen [%s]."; +$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recarga la página o limpia la caché del navegador si la foto nueva no aparece inmediatamente."; +$a->strings["Unable to process image"] = "Imposible procesar la imagen"; +$a->strings["Upload File:"] = "Subir archivo:"; +$a->strings["Select a profile:"] = "Elige un perfil:"; +$a->strings["or"] = "o"; +$a->strings["skip this step"] = "saltar este paso"; +$a->strings["select a photo from your photo albums"] = "elige una foto de tus álbumes"; +$a->strings["Crop Image"] = "Recortar imagen"; +$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor, ajusta el recorte de la imagen para optimizarla."; +$a->strings["Done Editing"] = "Editado"; +$a->strings["Image uploaded successfully."] = "Imagen subida con éxito."; +$a->strings["Invalid profile identifier."] = "Identificador de perfil no válido."; +$a->strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; +$a->strings["Visible To"] = "Visible para"; +$a->strings["All Contacts (with secure profile access)"] = "Todos los contactos (con perfil de acceso seguro)"; +$a->strings["Registration successful. Please check your email for further instructions."] = "Te has registrado con éxito. Por favor, consulta tu correo para más información."; +$a->strings["Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login."] = "Error al intentar de enviar mensaje de correo. Aquí los detalles de su cuenta:
login: %s
contraseña: %s

Puede cambiar su contraseña después de ingresar al sitio."; +$a->strings["Registration successful."] = "Registro exitoso."; +$a->strings["Your registration can not be processed."] = "Tu registro no se puede procesar."; +$a->strings["Your registration is pending approval by the site owner."] = "Tu registro está pendiente de aprobación por el propietario del sitio."; +$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el número de registros diarios permitidos. Inténtalo de nuevo mañana por favor."; +$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Puedes (opcionalmente) rellenar este formulario a través de OpenID escribiendo tu OpenID y pulsando en \"Registrar\"."; +$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Si no estás familiarizado con OpenID, por favor deja ese campo en blanco y rellena el resto de los elementos."; +$a->strings["Your OpenID (optional): "] = "Tu OpenID (opcional):"; +$a->strings["Include your profile in member directory?"] = "¿Incluir tu perfil en el directorio de miembros?"; +$a->strings["Note for the admin"] = "Nota para el administrador"; +$a->strings["Leave a message for the admin, why you want to join this node"] = "Deje un mensaje para el administrador sobre por qué quiere unirse a este nodo"; +$a->strings["Membership on this site is by invitation only."] = "Sitio solo accesible mediante invitación."; +$a->strings["Your invitation code: "] = ""; +$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "Nombre completo (ej. Joe Smith, real o real aparente):"; +$a->strings["Your Email Address: (Initial information will be send there, so this has to be an existing address.)"] = ""; +$a->strings["New Password:"] = "Contraseña nueva:"; +$a->strings["Leave empty for an auto generated password."] = "Dejar vacío para autogenerar una contraseña"; +$a->strings["Confirm:"] = "Confirmar:"; +$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be 'nickname@%s'."] = ""; +$a->strings["Choose a nickname: "] = "Escoge un apodo: "; +$a->strings["Register"] = "Registrarse"; +$a->strings["Import"] = "Importar"; +$a->strings["Import your profile to this friendica instance"] = "Importar tu perfil a esta instancia de friendica"; +$a->strings["Note: This node explicitly contains adult content"] = ""; +$a->strings["Account approved."] = "Cuenta aprobada."; +$a->strings["Registration revoked for %s"] = "Registro anulado para %s"; +$a->strings["Please login."] = "Por favor accede."; +$a->strings["User deleted their account"] = ""; +$a->strings["On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups."] = ""; +$a->strings["The user id is %d"] = ""; +$a->strings["Remove My Account"] = "Eliminar mi cuenta"; +$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Esto eliminará por completo tu cuenta. Una vez hecho no se puede deshacer."; +$a->strings["Please enter your password for verification:"] = "Por favor, introduce tu contraseña para la verificación:"; +$a->strings["Resubscribing to OStatus contacts"] = "Resubscribir a contactos de OStatus"; +$a->strings["Error"] = "error"; +$a->strings["Only logged in users are permitted to perform a search."] = "Solo usuarios activos tienen permiso para ejecutar búsquedas."; +$a->strings["Too Many Requests"] = "Demasiadas consultas"; +$a->strings["Only one search per minute is permitted for not logged in users."] = "Se permite solo una búsqueda por minuto para usuarios no identificados."; +$a->strings["Search"] = "Buscar"; +$a->strings["Items tagged with: %s"] = "Objetos taggeado con: %s"; +$a->strings["Results for: %s"] = "Resultados para: %s"; +$a->strings["Account"] = "Cuenta"; +$a->strings["Profiles"] = "Perfiles"; +$a->strings["Display"] = "Interfaz del usuario"; +$a->strings["Social Networks"] = "Redes sociales"; +$a->strings["Delegations"] = "Delegaciones"; +$a->strings["Connected apps"] = "Aplicaciones conectadas"; +$a->strings["Export personal data"] = "Exportación de datos personales"; +$a->strings["Remove account"] = "Eliminar cuenta"; +$a->strings["Missing some important data!"] = "¡Faltan algunos datos importantes!"; +$a->strings["Update"] = "Actualizar"; +$a->strings["Failed to connect with email account using the settings provided."] = "Error al conectar con la cuenta de correo mediante la configuración suministrada."; +$a->strings["Email settings updated."] = "Configuración de correo actualizada."; +$a->strings["Features updated"] = "Actualizaciones"; +$a->strings["Relocate message has been send to your contacts"] = "Mensaje de reubicación ha sido enviado a sus contactos."; +$a->strings["Passwords do not match."] = ""; +$a->strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, prueba otra vez."; +$a->strings["Password changed."] = "Contraseña modificada."; +$a->strings["Password unchanged."] = ""; +$a->strings[" Please use a shorter name."] = " Usa un nombre más corto."; +$a->strings[" Name too short."] = " Nombre demasiado corto."; +$a->strings["Wrong Password"] = "Contraseña incorrecta"; +$a->strings["Invalid email."] = ""; +$a->strings["Cannot change to that email."] = ""; +$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "El foro privado no tiene permisos de privacidad. Usando el grupo de privacidad por defecto."; +$a->strings["Private forum has no privacy permissions and no default privacy group."] = "El foro privado no tiene permisos de privacidad ni grupo por defecto de privacidad."; +$a->strings["Settings updated."] = "Configuración actualizada."; +$a->strings["Add application"] = "Agregar aplicación"; +$a->strings["Consumer Key"] = "Clave del consumidor"; +$a->strings["Consumer Secret"] = "Secreto del consumidor"; +$a->strings["Redirect"] = "Redirigir"; +$a->strings["Icon url"] = "Dirección del ícono"; +$a->strings["You can't edit this application."] = "No puedes editar esta aplicación."; +$a->strings["Connected Apps"] = "Aplicaciones conectadas"; +$a->strings["Edit"] = "Editar"; +$a->strings["Client key starts with"] = "Clave de cliente comienza por"; +$a->strings["No name"] = "Sin nombre"; +$a->strings["Remove authorization"] = "Suprimir la autorización"; +$a->strings["No Addon settings configured"] = ""; +$a->strings["Addon Settings"] = ""; +$a->strings["Additional Features"] = "Características adicionales"; +$a->strings["Diaspora"] = "Diaspora*"; +$a->strings["enabled"] = "habilitado"; +$a->strings["disabled"] = "deshabilitado"; +$a->strings["Built-in support for %s connectivity is %s"] = "El soporte integrado de conexión con %s está %s"; +$a->strings["GNU Social (OStatus)"] = "GNUsocial (OStatus)"; +$a->strings["Email access is disabled on this site."] = "El acceso por correo está deshabilitado en esta web."; +$a->strings["General Social Media Settings"] = "Configuración general de social media "; +$a->strings["Disable Content Warning"] = ""; +$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."] = ""; +$a->strings["Disable intelligent shortening"] = "Deshabilitar recorte inteligente de URL"; +$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."] = "Normalemente el sistema intenta de encontrara el mejor enlace para agregar a envíos recortados (twitter, OStatus). Si esta opción se encuentra habilitado, todo envío recortado apuntara siempre al tema original en friendica."; +$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automáticamente seguir cualquier GNUsocial (OStatus) seguidores o menciones "; +$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."] = "Cuando se recibe un mensaje de un perfil desconocido de OStatus, esta opción define que hacer.\nSi es habilitado, un nuevo contacto sera creado para cada usuario."; +$a->strings["Default group for OStatus contacts"] = "Grupo por defecto para contactos OStatus"; +$a->strings["Your legacy GNU Social account"] = "Tu cuenta GNU social conectada"; +$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."] = "Si agrega su viejo nombre de perfil GNUsocial/Statusnet aqui (en el formato de usuario@dominio.tld), sus contactos serán añadidos automáticamente.\nEl campo sera vaciado cuando termine el proceso. "; +$a->strings["Repair OStatus subscriptions"] = "Reparar subscripciones de OStatus"; +$a->strings["Email/Mailbox Setup"] = "Configuración del correo/buzón"; +$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Si quieres comunicarte con tus contactos de correo usando este servicio (opcional), por favor, especifica cómo conectar con tu buzón."; +$a->strings["Last successful email check:"] = "Última comprobación del correo con éxito:"; +$a->strings["IMAP server name:"] = "Nombre del servidor IMAP:"; +$a->strings["IMAP port:"] = "Puerto IMAP:"; +$a->strings["Security:"] = "Seguridad:"; +$a->strings["None"] = "Ninguna"; +$a->strings["Email login name:"] = "Nombre de usuario:"; +$a->strings["Email password:"] = "Contraseña:"; +$a->strings["Reply-to address:"] = "Dirección de respuesta:"; +$a->strings["Send public posts to all email contacts:"] = "Enviar publicaciones públicas a todos los contactos de correo:"; +$a->strings["Action after import:"] = "Acción después de importar:"; +$a->strings["Mark as seen"] = "Marcar como leído"; +$a->strings["Move to folder"] = "Mover a un directorio"; +$a->strings["Move to folder:"] = "Mover al directorio:"; +$a->strings["%s - (Unsupported)"] = ""; +$a->strings["%s - (Experimental)"] = ""; +$a->strings["Sunday"] = "Domingo"; +$a->strings["Monday"] = "Lunes"; +$a->strings["Display Settings"] = "Configuración Tema/Visualización"; +$a->strings["Display Theme:"] = "Utilizar tema:"; +$a->strings["Mobile Theme:"] = "Tema móvil:"; +$a->strings["Suppress warning of insecure networks"] = "Suprimir el aviso de redes inseguras"; +$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Debería el sistema suprimir el aviso de que el grupo actual contiene miembros de redes que no pueden recibir publicaciones públicas."; +$a->strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos"; +$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimo 10 segundos. Ingrese -1 para deshabilitar."; +$a->strings["Number of items to display per page:"] = "Número de elementos a mostrar por página:"; +$a->strings["Maximum of 100 items"] = "Máximo 100 elementos"; +$a->strings["Number of items to display per page when viewed from mobile device:"] = "Cantidad de objetos a visualizar cuando se usa un movil"; +$a->strings["Don't show emoticons"] = "No mostrar emoticones"; +$a->strings["Calendar"] = "Calendario"; +$a->strings["Beginning of week:"] = "Principio de la semana:"; +$a->strings["Don't show notices"] = "No mostrara avisos"; +$a->strings["Infinite scroll"] = "pagina infinita (sroll)"; +$a->strings["Automatic updates only at the top of the network page"] = "Actualizaciones automaticas solo estando al principio de la pagina"; +$a->strings["When disabled, the network page is updated all the time, which could be confusing while reading."] = "Cuando está deshabilitada, la página de red se actualiza constantemente, lo que podría ser confuso al leer."; +$a->strings["Bandwidth Saver Mode"] = ""; +$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "Cuando está habilitado, el contenido incrustado no se muestra en las actualizaciones automáticas, sólo en las páginas recargadas."; +$a->strings["Smart Threading"] = ""; +$a->strings["When enabled, suppress extraneous thread indentation while keeping it where it matters. Only works if threading is available and enabled."] = ""; +$a->strings["General Theme Settings"] = "Ajustes generales de tema"; +$a->strings["Custom Theme Settings"] = "Ajustes personalizados de tema"; +$a->strings["Content Settings"] = "Ajustes de contenido"; +$a->strings["Theme settings"] = "Configuración del Tema"; +$a->strings["Unable to find your profile. Please contact your admin."] = ""; +$a->strings["Account Types"] = "Tipos de cuenta"; +$a->strings["Personal Page Subtypes"] = "Subtipos de página personal"; +$a->strings["Community Forum Subtypes"] = "Subtipos de foro de comunidad"; +$a->strings["Account for a personal profile."] = "Cuenta para un perfil personal."; +$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "Cuenta para una organización que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; +$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "Cuenta para un reflector de noticias que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; +$a->strings["Account for community discussions."] = "Cuenta para discusiones de la comunidad."; +$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "Cuenta para un perfil personal regular que requiere aprobación manual de «Amigos» y «Seguidores»."; +$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "Cuenta para un perfil público que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; +$a->strings["Automatically approves all contact requests."] = "Aprueba automáticamente todas las solicitudes de contacto."; +$a->strings["Account for a popular profile that automatically approves contact requests as \"Friends\"."] = "Cuenta para un perfil popular que aprueba automáticamente las solicitudes de contacto como «Friends»."; +$a->strings["Private Forum [Experimental]"] = "Foro privado [Experimental]"; +$a->strings["Requires manual approval of contact requests."] = "Requiere aprobación manual de solicitudes de contacto."; +$a->strings["OpenID:"] = "OpenID:"; +$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Opcional) Permitir a este OpenID acceder a esta cuenta."; +$a->strings["Publish your default profile in your local site directory?"] = "¿Quieres publicar tu perfil predeterminado en el directorio local del sitio?"; +$a->strings["Your profile will be published in this node's local directory. Your profile details may be publicly visible depending on the system settings."] = ""; +$a->strings["Publish your default profile in the global social directory?"] = "¿Quieres publicar tu perfil predeterminado en el directorio social de forma global?"; +$a->strings["Your profile will be published in the global friendica directories (e.g. %s). Your profile will be visible in public."] = ""; +$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "¿Quieres ocultar tu lista de contactos/amigos en la vista de tu perfil predeterminado?"; +$a->strings["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"] = ""; +$a->strings["Hide your profile details from anonymous viewers?"] = ""; +$a->strings["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."] = ""; +$a->strings["Allow friends to post to your profile page?"] = "¿Permites que tus amigos publiquen en tu página de perfil?"; +$a->strings["Your contacts may write posts on your profile wall. These posts will be distributed to your contacts"] = ""; +$a->strings["Allow friends to tag your posts?"] = "¿Permites a los amigos etiquetar tus publicaciones?"; +$a->strings["Your contacts can add additional tags to your posts."] = ""; +$a->strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite recomendarte como amigo potencial a los nuevos miembros?"; +$a->strings["If you like, Friendica may suggest new members to add you as a contact."] = ""; +$a->strings["Permit unknown people to send you private mail?"] = "¿Permites que desconocidos te manden correos privados?"; +$a->strings["Friendica network users may send you private messages even if they are not in your contact list."] = ""; +$a->strings["Profile is not published."] = "El perfil no está publicado."; +$a->strings["Your Identity Address is '%s' or '%s'."] = "Su dirección de identidad es '%s' o '%s'."; +$a->strings["Automatically expire posts after this many days:"] = "Las publicaciones expirarán automáticamente después de estos días:"; +$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Si lo dejas vacío no expirarán nunca. Las publicaciones que hayan expirado se borrarán"; +$a->strings["Advanced expiration settings"] = "Configuración avanzada de expiración"; +$a->strings["Advanced Expiration"] = "Expiración avanzada"; +$a->strings["Expire posts:"] = "¿Expiran las publicaciones?"; +$a->strings["Expire personal notes:"] = "¿Expiran las notas personales?"; +$a->strings["Expire starred posts:"] = "¿Expiran los favoritos?"; +$a->strings["Expire photos:"] = "¿Expiran las fotografías?"; +$a->strings["Only expire posts by others:"] = "Solo expiran los mensajes de los demás:"; +$a->strings["Account Settings"] = "Configuración de la cuenta"; +$a->strings["Password Settings"] = "Configuración de la contraseña"; +$a->strings["Allowed characters are a-z, A-Z, 0-9 and special characters except white spaces, accentuated letters and colon (:)."] = ""; +$a->strings["Leave password fields blank unless changing"] = "Deja la contraseña en blanco si no quieres cambiarla"; +$a->strings["Current Password:"] = "Contraseña actual:"; +$a->strings["Your current password to confirm the changes"] = "Su contraseña actual para confirmar los cambios."; +$a->strings["Password:"] = "Contraseña:"; +$a->strings["Basic Settings"] = "Configuración básica"; +$a->strings["Full Name:"] = "Nombre completo:"; +$a->strings["Email Address:"] = "Dirección de correo:"; +$a->strings["Your Timezone:"] = "Zona horaria:"; +$a->strings["Your Language:"] = "Tu idioma:"; +$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "Selecciona el idioma que se usara para la interfaz del usuario y para el envío de correo."; +$a->strings["Default Post Location:"] = "Localización predeterminada:"; +$a->strings["Use Browser Location:"] = "Usar localización del navegador:"; +$a->strings["Security and Privacy Settings"] = "Configuración de seguridad y privacidad"; +$a->strings["Maximum Friend Requests/Day:"] = "Máximo número de peticiones de amistad por día:"; +$a->strings["(to prevent spam abuse)"] = "(para prevenir el abuso de spam)"; +$a->strings["Default Post Permissions"] = "Permisos por defecto para las publicaciones"; +$a->strings["(click to open/close)"] = "(pulsa para abrir/cerrar)"; +$a->strings["Default Private Post"] = "Publicación Privada por defecto"; +$a->strings["Default Public Post"] = "Publicación Pública por defecto"; +$a->strings["Default Permissions for New Posts"] = "Permisos por defecto para nuevas publicaciones"; +$a->strings["Maximum private messages per day from unknown people:"] = "Número máximo de mensajes diarios para desconocidos:"; +$a->strings["Notification Settings"] = "Configuración de notificaciones"; +$a->strings["Send a notification email when:"] = "Enviar notificación por correo cuando:"; +$a->strings["You receive an introduction"] = "Recibas una presentación"; +$a->strings["Your introductions are confirmed"] = "Tu presentación sea confirmada"; +$a->strings["Someone writes on your profile wall"] = "Alguien escriba en el muro de mi perfil"; +$a->strings["Someone writes a followup comment"] = "Algien escriba en un comentario que sigo"; +$a->strings["You receive a private message"] = "Recibas un mensaje privado"; +$a->strings["You receive a friend suggestion"] = "Recibas una sugerencia de amistad"; +$a->strings["You are tagged in a post"] = "Seas etiquetado en una publicación"; +$a->strings["You are poked/prodded/etc. in a post"] = "Te han tocado/empujado/etc. en una publicación"; +$a->strings["Activate desktop notifications"] = "Activar notificaciones en pantalla."; +$a->strings["Show desktop popup on new notifications"] = "Mostrar notificaciones emergentes en caso de nuevos eventos."; +$a->strings["Text-only notification emails"] = "Notificaciones e-mail de solo texto"; +$a->strings["Send text only notification emails, without the html part"] = "Enviar las notificaciones por correo con formato de solo texto sin html."; +$a->strings["Show detailled notifications"] = "Mostrar notificaciones detalladas"; +$a->strings["Per default, notifications are condensed to a single notification per item. When enabled every notification is displayed."] = ""; +$a->strings["Advanced Account/Page Type Settings"] = "Configuración avanzada de tipo de Cuenta/Página"; +$a->strings["Change the behaviour of this account for special situations"] = "Cambiar el comportamiento de esta cuenta para situaciones especiales"; +$a->strings["Relocate"] = "Relocalizar"; +$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "Si ha migrado este perfil desde otro servidor aquí y algunos contactos no reciben sus publicaciones intente recomunicar su ubicación a traves este botón. (Como para decir el botón de los botones)"; +$a->strings["Resend relocate message to contacts"] = "Reenviar mensaje de relocalización a los contactos"; +$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo las %3\$s de %2\$s"; +$a->strings["Do you really want to delete this suggestion?"] = "¿Estás seguro de que quieres borrar esta sugerencia?"; +$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si el sitio web es nuevo inténtalo de nuevo dentro de 24 horas."; +$a->strings["Ignore/Hide"] = "Ignorar/Ocultar"; +$a->strings["Friend Suggestions"] = "Sugerencias de amigos"; +$a->strings["Tag(s) removed"] = ""; +$a->strings["Remove Item Tag"] = "Eliminar etiqueta"; +$a->strings["Select a tag to remove: "] = "Selecciona una etiqueta para eliminar: "; +$a->strings["Export account"] = "Exportar cuenta"; +$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "Exporta la información de tu cuenta y tus contactos. Úsalo para guardar una copia de seguridad de tu cuenta y/o moverla a otro servidor."; +$a->strings["Export all"] = "Exportar todo"; +$a->strings["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)"] = "Exporta la información de tu cuenta, contactos y lo demás en JSON. Puede ser un archivo bastante grande, por lo que llevará tiempo. Úsalo para hacer una copia de seguridad completa de tu cuenta (las fotos no se exportarán)"; +$a->strings["User imports on closed servers can only be done by an administrator."] = ""; +$a->strings["Move account"] = "Mover cuenta"; +$a->strings["You can import an account from another Friendica server."] = "Puedes importar una cuenta desde otro servidor de Friendica."; +$a->strings["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."] = "Necesitas exportar tu cuenta del antiguo servidor y subirla aquí. Volveremos a crear tu antigua cuenta con todos tus contactos aquí. También intentaremos de informar a tus amigos de que te has mudado."; +$a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "Esta característica es experimental. No podemos importar contactos desde la red OStatus (statusnet/identi.ca) o desde Diaspora*"; +$a->strings["Account file"] = "Archivo de la cuenta"; +$a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "Para exportar el perfil vaya a \"Configuracion -> Exportar sus datos personales\" y seleccione \"Exportar cuenta\""; +$a->strings["You aren't following this contact."] = ""; +$a->strings["Unfollowing is currently not supported by your network."] = "Dejar de Seguir no es compatible con su red actualmente."; +$a->strings["Contact unfollowed"] = "Contacto no seguido"; +$a->strings["Disconnect/Unfollow"] = "Desconectar/Dejar de seguir"; +$a->strings["[Embedded content - reload page to view]"] = "[Contenido incrustado - recarga la página para verlo]"; +$a->strings["Do you really want to delete this video?"] = "Realmente quieres eliminar este vídeo?"; +$a->strings["Delete Video"] = "Borrar vídeo"; +$a->strings["No videos selected"] = "Ningún vídeo seleccionado"; +$a->strings["View Video"] = "Ver vídeo"; +$a->strings["Recent Videos"] = "Vídeos recientes"; +$a->strings["Upload New Videos"] = "Subir nuevos vídeos"; +$a->strings["No contacts."] = "Ningún contacto."; +$a->strings["Visit %s's profile [%s]"] = "Ver el perfil de %s [%s]"; +$a->strings["Contacts"] = "Contactos"; +$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "Excedido el número máximo de mensajes para %s. El mensaje no se ha enviado."; +$a->strings["Unable to check your home location."] = "Imposible comprobar tu servidor de inicio."; +$a->strings["No recipient."] = "Sin receptor."; +$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Si quieres que %s te responda, asegúrate de que la configuración de privacidad permite enviar correo privado a desconocidos."; +$a->strings["Invalid request."] = "Consulta invalida"; +$a->strings["Sorry, maybe your upload is bigger than the PHP configuration allows"] = "Disculpa, posiblemente el archivo subido es mas grande que la PHP configuración permite."; +$a->strings["Or - did you try to upload an empty file?"] = "Si no - intento de subir un archivo vacío?"; +$a->strings["File exceeds size limit of %s"] = "El archivo excede el limite de tamaño de %s"; +$a->strings["File upload failed."] = "Ha fallado la subida del archivo."; +$a->strings["Wall Photos"] = "Foto del Muro"; +$a->strings["Delete this item?"] = "¿Eliminar este elemento?"; +$a->strings["show fewer"] = "ver menos"; +$a->strings["toggle mobile"] = "Cambiar a versión móvil"; +$a->strings["No system theme config value set."] = ""; +$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La ficha de seguridad no es correcta. Seguramente haya ocurrido por haber dejado el formulario abierto demasiado tiempo (>3 horas) antes de enviarlo."; +$a->strings["Frequently"] = ""; +$a->strings["Hourly"] = ""; +$a->strings["Twice daily"] = ""; +$a->strings["Daily"] = ""; +$a->strings["Weekly"] = ""; +$a->strings["Monthly"] = ""; +$a->strings["DFRN"] = ""; +$a->strings["OStatus"] = ""; +$a->strings["RSS/Atom"] = ""; +$a->strings["Zot!"] = ""; +$a->strings["LinkedIn"] = ""; +$a->strings["XMPP/IM"] = ""; +$a->strings["MySpace"] = ""; +$a->strings["Google+"] = ""; +$a->strings["pump.io"] = ""; +$a->strings["Twitter"] = ""; +$a->strings["Diaspora Connector"] = ""; +$a->strings["GNU Social Connector"] = ""; +$a->strings["ActivityPub"] = ""; +$a->strings["pnut"] = ""; +$a->strings["Male"] = ""; +$a->strings["Female"] = ""; +$a->strings["Currently Male"] = ""; +$a->strings["Currently Female"] = ""; +$a->strings["Mostly Male"] = ""; +$a->strings["Mostly Female"] = ""; +$a->strings["Transgender"] = ""; +$a->strings["Intersex"] = ""; +$a->strings["Transsexual"] = ""; +$a->strings["Hermaphrodite"] = ""; +$a->strings["Neuter"] = ""; +$a->strings["Non-specific"] = "Sin especificar"; +$a->strings["Other"] = "Otro"; $a->strings["Males"] = "Hombres"; $a->strings["Females"] = "Mujeres"; $a->strings["Gay"] = "Gay"; @@ -139,137 +1582,37 @@ $a->strings["Uncertain"] = "Incierto"; $a->strings["It's complicated"] = "Es complicado"; $a->strings["Don't care"] = "No te importa"; $a->strings["Ask me"] = "Pregúntame"; -$a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo eliminado con este nombre fue restablecido. Los permisos existentes pueden aplicarse a este grupo y a sus futuros miembros. Si esto no es lo que pretendes, por favor, crea otro grupo con un nombre diferente."; -$a->strings["Default privacy group for new contacts"] = "Grupo por defecto para nuevos contactos"; -$a->strings["Everybody"] = "Todo el mundo"; -$a->strings["edit"] = "editar"; -$a->strings["Groups"] = "Grupos"; -$a->strings["Edit groups"] = "Editar grupo"; -$a->strings["Edit group"] = "Editar grupo"; -$a->strings["Create a new group"] = "Crear un nuevo grupo"; -$a->strings["Group Name: "] = "Nombre del grupo: "; -$a->strings["Contacts not in any group"] = "Contactos sin grupo"; -$a->strings["add"] = "añadir"; +$a->strings["General Features"] = "Opciones generales"; +$a->strings["Multiple Profiles"] = "Perfiles multiples"; +$a->strings["Ability to create multiple profiles"] = "Capacidad de crear perfiles multiples. Cada pagina/perfil/usuario puede tener diferentes perfiles/apariencias. Las mismas pueden ser visibles para determinados contactos seleccionados dentro de la red friendica."; +$a->strings["Photo Location"] = "Localización foto"; +$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "Normalmente los meta datos de las imágenes son eliminados. Esto extraerá la localización si presente antes de eliminar los meta datos y enlaza la misma con el mapa."; +$a->strings["Export Public Calendar"] = "Exportar Calendario Público"; +$a->strings["Ability for visitors to download the public calendar"] = "Posibilidad de los visitantes de descargar el calendario público"; +$a->strings["Post Composition Features"] = "Opciones de edición de publicaciones."; +$a->strings["Auto-mention Forums"] = "Auto-mencionar foros"; +$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "Añadir/eliminar mención cuando un foro es seleccionado/deseleccionado en la ventana ACL."; +$a->strings["Network Sidebar"] = ""; +$a->strings["Ability to select posts by date ranges"] = "Habilidad de seleccionar publicaciones por fecha"; +$a->strings["Protocol Filter"] = ""; +$a->strings["Enable widget to display Network posts only from selected protocols"] = ""; +$a->strings["Network Tabs"] = "Pestañas de redes"; +$a->strings["Network New Tab"] = "Pestaña nuevo en la red"; +$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "Activar para mostrar solo publicaciones nuevas en la red (de las ultimas 12 horas)"; +$a->strings["Network Shared Links Tab"] = "Pestaña publicaciones con enlaces"; +$a->strings["Enable tab to display only Network posts with links in them"] = "Habilitar para visualizar solo publicaciones que contienen enlaces"; +$a->strings["Post/Comment Tools"] = "Herramienta de publicaciones/respuestas"; +$a->strings["Post Categories"] = "Categorías de publicaciones"; +$a->strings["Add categories to your posts"] = "Agregue categorías a sus publicaciones. Las mismas serán visualizadas en su pagina de inicio."; +$a->strings["Advanced Profile Settings"] = "Ajustes avanzados del perfil"; +$a->strings["List Forums"] = "Listar foros"; +$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "Mostrar a los visitantes foros públicos en las que se esta participando en el pagina avanzada de perfiles."; +$a->strings["Tag Cloud"] = ""; +$a->strings["Provide a personal tag cloud on your profile page"] = ""; +$a->strings["Display Membership Date"] = ""; +$a->strings["Display membership date in profile"] = ""; $a->strings["Forums"] = "Foros"; $a->strings["External link to forum"] = "Enlace externo al foro"; -$a->strings["show more"] = "ver más"; -$a->strings["System"] = "Sistema"; -$a->strings["Network"] = "Red"; -$a->strings["Personal"] = "Personal"; -$a->strings["Home"] = "Inicio"; -$a->strings["Introductions"] = "Presentaciones"; -$a->strings["%s commented on %s's post"] = "%s comentó la publicación de %s"; -$a->strings["%s created a new post"] = "%s creó una nueva publicación"; -$a->strings["%s liked %s's post"] = "A %s le gusta la publicación de %s"; -$a->strings["%s disliked %s's post"] = "A %s no le gusta la publicación de %s"; -$a->strings["%s is attending %s's event"] = "%s está asistiendo al evento %s's"; -$a->strings["%s is not attending %s's event"] = "%s no está asistiendo al evento %s's"; -$a->strings["%s may attend %s's event"] = "%s podría asistir al evento %s's"; -$a->strings["%s is now friends with %s"] = "%s es ahora es amigo de %s"; -$a->strings["Friend Suggestion"] = "Propuestas de amistad"; -$a->strings["Friend/Connect Request"] = "Solicitud de Amistad/Conexión"; -$a->strings["New Follower"] = "Nuevo seguidor"; -$a->strings["Logged out."] = "Sesión finalizada"; -$a->strings["Login failed."] = "Accesso fallido."; -$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Se ha encontrado un problema para acceder con el OpenID que has escrito. Verifica que lo hayas escrito correctamente."; -$a->strings["The error message was:"] = "El mensaje del error fue:"; -$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A"; -$a->strings["Starts:"] = "Inicio:"; -$a->strings["Finishes:"] = "Final:"; -$a->strings["Location:"] = "Localización:"; -$a->strings["Add New Contact"] = "Añadir nuevo contacto"; -$a->strings["Enter address or web location"] = "Escribe la dirección o página web"; -$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Ejemplo: miguel@ejemplo.com, http://ejemplo.com/miguel"; -$a->strings["Connect"] = "Conectar"; -$a->strings["%d invitation available"] = [ - 0 => "%d invitación disponible", - 1 => "%d invitaviones disponibles", -]; -$a->strings["Find People"] = "Buscar personas"; -$a->strings["Enter name or interest"] = "Introduzce nombre o intereses"; -$a->strings["Connect/Follow"] = "Conectar/Seguir"; -$a->strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: Robert Morgenstein, Pesca"; -$a->strings["Find"] = "Buscar"; -$a->strings["Friend Suggestions"] = "Sugerencias de amigos"; -$a->strings["Similar Interests"] = "Intereses similares"; -$a->strings["Random Profile"] = "Perfil aleatorio"; -$a->strings["Invite Friends"] = "Invitar amigos"; -$a->strings["View Global Directory"] = "Ver Directorio Global"; -$a->strings["Networks"] = "Redes"; -$a->strings["All Networks"] = "Todas las redes"; -$a->strings["Everything"] = "Todo"; -$a->strings["Categories"] = "Categorías"; -$a->strings["%d contact in common"] = [ - 0 => "%d contacto en común", - 1 => "%d contactos en común", -]; -$a->strings["Friendica Notification"] = "Notificación de Friendica"; -$a->strings["Thank You,"] = "Gracias,"; -$a->strings["%s Administrator"] = "%s Administrador"; -$a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s Administrador"; -$a->strings["noreply"] = "no responder"; -$a->strings["%s "] = "%s "; -$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica:Notificación] Nuevo correo recibido de %s"; -$a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s te ha enviado un mensaje privado desde %2\$s."; -$a->strings["%1\$s sent you %2\$s."] = "%1\$s te ha enviado %2\$s."; -$a->strings["a private message"] = "un mensaje privado"; -$a->strings["Please visit %s to view and/or reply to your private messages."] = "Por favor, visita %s para ver y/o responder a tus mensajes privados."; -$a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s comentó en [url=%2\$s]a %3\$s[/url]"; -$a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s comentó en [url=%2\$s] %4\$s de %3\$s[/url]"; -$a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s comentó en [url=%2\$s] tu %3\$s[/url]"; -$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Notificación] Comentario en la conversación de #%1\$d por %2\$s"; -$a->strings["%s commented on an item/conversation you have been following."] = "%s ha comentado en una conversación/elemento que sigues."; -$a->strings["Please visit %s to view and/or reply to the conversation."] = "Por favor, visita %s para ver y/o responder a la conversación."; -$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Notificación] %s publicó en tu muro"; -$a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s publicó en tu perfil de %2\$s"; -$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s publicó en [url=%2\$s]tu muro[/url]"; -$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notificación] %s te ha nombrado"; -$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s te ha nombrado en %2\$s"; -$a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]te nombró[/url]."; -$a->strings["[Friendica:Notify] %s shared a new post"] = "[Notificacion Friendica] %s compartio una nueva publicacion"; -$a->strings["%1\$s shared a new post at %2\$s"] = "%1\$s compartió un nuevo tema en %2\$s"; -$a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s [url=%2\$s]compartió una publicación[/url]."; -$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica:Notify] %1\$s te dio un toque"; -$a->strings["%1\$s poked you at %2\$s"] = "%1\$s te dio un toque en %2\$s"; -$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s [url=%2\$s]te dio un toque[/url]."; -$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Notificación] %s ha etiquetado tu publicación"; -$a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s ha etiquetado tu publicación en %2\$s"; -$a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s ha etiquetado [url=%2\$s]tu publicación[/url]"; -$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica:Notificación] Presentación recibida"; -$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Has recibido una presentación de '%1\$s' en %2\$s"; -$a->strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Has recibido [url=%1\$s]una presentación[/url] de %2\$s."; -$a->strings["You may visit their profile at %s"] = "Puedes visitar su perfil en %s"; -$a->strings["Please visit %s to approve or reject the introduction."] = "Visita %s para aceptar o rechazar la presentación por favor."; -$a->strings["[Friendica:Notify] A new person is sharing with you"] = "[Notificación:Friendica] Un nuevo contacto comparte contigo"; -$a->strings["%1\$s is sharing with you at %2\$s"] = "%1\$s comparte con tigo en %2\$s"; -$a->strings["[Friendica:Notify] You have a new follower"] = "[Notificación:Friendica] Tienes un nuevo seguidor"; -$a->strings["You have a new follower at %2\$s : %1\$s"] = "Tienes un nuevo seguidor en %2\$s : %1\$s"; -$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Notificación] Sugerencia de amigo recibida"; -$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Has recibido una sugerencia de amigo de '%1\$s' en %2\$s"; -$a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Has recibido [url=%1\$s]una sugerencia de amigo[/url] en %2\$s de %3\$s."; -$a->strings["Name:"] = "Nombre: "; -$a->strings["Photo:"] = "Foto: "; -$a->strings["Please visit %s to approve or reject the suggestion."] = "Visita %s para aceptar o rechazar la sugerencia por favor."; -$a->strings["[Friendica:Notify] Connection accepted"] = "[Notificación:Friendica] Conexión aceptada"; -$a->strings["'%1\$s' has accepted your connection request at %2\$s"] = "'%1\$s' acepto tu consulta de conexión %2\$s"; -$a->strings["%2\$s has accepted your [url=%1\$s]connection request[/url]."] = "%2\$s hacepto tu [url=%1\$s]consulta de conexión[/url]."; -$a->strings["You are now mutual friends and may exchange status updates, photos, and email without restriction."] = "Ahora tiene amigos en común y puede intercambiar actualizaciones de estado, fotos y email sin restricción."; -$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Por favor visite %s si desea hacer algún cambio a su relación."; -$a->strings["'%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."] = "'%1\$s' eligió de aceptarte como fan/hincha lo que restringe algunas formas de comunicación - tales como mensajes privados y algunas interacciones de los perfiles. Si esto es una pagina de celebridad o comunidad, estas configuraciones se adoptaron automáticamente."; -$a->strings["'%1\$s' may choose to extend this into a two-way or more permissive relationship in the future."] = "'%1\$s' puede elegir extender esto en una relación más permisiva o ambidireccional en el futuro."; -$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Por favor visita %s si es preciso de hacer algún cambio a la relación con este contacto."; -$a->strings["[Friendica System:Notify] registration request"] = "[Notificacion:Friendica] consulta de registro"; -$a->strings["You've received a registration request from '%1\$s' at %2\$s"] = "Recibiste una consulta de registro de '%1\$s' en %2\$s"; -$a->strings["You've received a [url=%1\$s]registration request[/url] from %2\$s."] = "Recibiste una [url=%1\$s]consulta de registro[/url] from %2\$s."; -$a->strings["Full Name:\t%1\$s\\nSite Location:\t%2\$s\\nLogin Name:\t%3\$s (%4\$s)"] = "Nombre completo:\t%1\$s\\nUbicación del sitio:\t%2\$s\\nLogin Nombre:\t%3\$s (%4\$s)"; -$a->strings["Please visit %s to approve or reject the request."] = "Por favor visita %s para aprobar o negar la solicitud."; -$a->strings["Embedded content"] = "Contenido integrado"; -$a->strings["Embedding disabled"] = "Contenido incrustrado desabilitado"; -$a->strings["Welcome "] = "Bienvenido "; -$a->strings["Please upload a profile photo."] = "Por favor sube una foto para tu perfil."; -$a->strings["Welcome back "] = "Bienvenido de nuevo "; -$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La ficha de seguridad no es correcta. Seguramente haya ocurrido por haber dejado el formulario abierto demasiado tiempo (>3 horas) antes de enviarlo."; -$a->strings["Contact Photos"] = "Foto del contacto"; $a->strings["Nothing new here"] = "Nada nuevo por aquí"; $a->strings["Clear notifications"] = "Limpiar notificaciones"; $a->strings["@name, !forum, #tags, content"] = "@name, !forum, #tags, contenido"; @@ -277,374 +1620,61 @@ $a->strings["Logout"] = "Salir"; $a->strings["End this session"] = "Cerrar la sesión"; $a->strings["Status"] = "Estado"; $a->strings["Your posts and conversations"] = "Tus publicaciones y conversaciones"; -$a->strings["Profile"] = "Perfil"; $a->strings["Your profile page"] = "Tu página de perfil"; -$a->strings["Photos"] = "Fotografías"; $a->strings["Your photos"] = "Tus fotos"; $a->strings["Videos"] = "Videos"; $a->strings["Your videos"] = "Tus videos"; -$a->strings["Events"] = "Eventos"; $a->strings["Your events"] = "Tus eventos"; $a->strings["Personal notes"] = "Notas personales"; $a->strings["Your personal notes"] = "Tus notas personales"; -$a->strings["Login"] = "Acceder"; $a->strings["Sign in"] = "Date de alta"; +$a->strings["Home"] = "Inicio"; $a->strings["Home Page"] = "Página de inicio"; -$a->strings["Register"] = "Registrarse"; $a->strings["Create an account"] = "Crea una cuenta"; -$a->strings["Help"] = "Ayuda"; $a->strings["Help and documentation"] = "Ayuda y documentación"; $a->strings["Apps"] = "Aplicaciones"; $a->strings["Addon applications, utilities, games"] = "Aplicaciones, utilidades, juegos"; -$a->strings["Search"] = "Buscar"; $a->strings["Search site content"] = " Busca contenido en la página"; $a->strings["Full Text"] = "Texto completo"; $a->strings["Tags"] = "Tags"; -$a->strings["Contacts"] = "Contactos"; $a->strings["Community"] = "Comunidad"; -$a->strings["Conversations on this site"] = "Conversaciones en este sitio"; -$a->strings["Conversations on the network"] = "Conversaciones en la red"; +$a->strings["Conversations on this and other servers"] = ""; $a->strings["Events and Calendar"] = "Eventos y Calendario"; $a->strings["Directory"] = "Directorio"; $a->strings["People directory"] = "Directorio de usuarios"; -$a->strings["Information"] = "Información"; $a->strings["Information about this friendica instance"] = "Información sobre esta instancia de friendica"; +$a->strings["Terms of Service of this Friendica instance"] = ""; $a->strings["Conversations from your friends"] = "Conversaciones de tus amigos"; $a->strings["Network Reset"] = "Reseteo de la red"; $a->strings["Load Network page with no filters"] = "Cargar pagina de redes sin filtros"; +$a->strings["Introductions"] = "Presentaciones"; $a->strings["Friend Requests"] = "Solicitudes de amistad"; -$a->strings["Notifications"] = "Notificaciones"; $a->strings["See all notifications"] = "Ver todas las notificaciones"; -$a->strings["Mark as seen"] = "Marcar como leído"; $a->strings["Mark all system notifications seen"] = "Marcar todas las notificaciones del sistema como leídas"; -$a->strings["Messages"] = "Mensajes"; $a->strings["Private mail"] = "Correo privado"; $a->strings["Inbox"] = "Entrada"; $a->strings["Outbox"] = "Enviados"; -$a->strings["New Message"] = "Nuevo mensaje"; $a->strings["Manage"] = "Administrar"; $a->strings["Manage other pages"] = "Administrar otras páginas"; -$a->strings["Delegations"] = "Delegaciones"; -$a->strings["Delegate Page Management"] = "Delegar la administración de la página"; -$a->strings["Settings"] = "Configuración"; $a->strings["Account settings"] = "Configuración de tu cuenta"; -$a->strings["Profiles"] = "Perfiles"; $a->strings["Manage/Edit Profiles"] = "Manejar/editar Perfiles"; $a->strings["Manage/edit friends and contacts"] = "Administrar/editar amigos y contactos"; -$a->strings["Admin"] = "Admin"; $a->strings["Site setup and configuration"] = "Opciones y configuración del sitio"; $a->strings["Navigation"] = "Navegación"; $a->strings["Site map"] = "Mapa del sitio"; -$a->strings["View Profile"] = "Ver perfil"; -$a->strings["View Status"] = "Ver estado"; -$a->strings["View Photos"] = "Ver fotos"; -$a->strings["Network Posts"] = "Publicaciones en la red"; -$a->strings["View Contact"] = "Ver contacto"; -$a->strings["Drop Contact"] = "Eliminar contacto"; -$a->strings["Send PM"] = "Enviar mensaje privado"; -$a->strings["Poke"] = "Toque"; -$a->strings["Organisation"] = "Organización"; -$a->strings["News"] = "Noticias"; -$a->strings["Forum"] = "Foro"; -$a->strings["Wall Photos"] = "Foto del Muro"; -$a->strings["Post to Email"] = "Publicar mediante correo electrónico"; -$a->strings["Connectors disabled, since \"%s\" is enabled."] = "Conectores deshabilitados, ya que \"%s\" es habilitado."; -$a->strings["Hide your profile details from unknown viewers?"] = "¿Quieres que los detalles de tu perfil permanezcan ocultos a los desconocidos?"; -$a->strings["Visible to everybody"] = "Visible para cualquiera"; -$a->strings["show"] = "mostrar"; -$a->strings["don't show"] = "no mostrar"; -$a->strings["CC: email addresses"] = "CC: dirección de correo electrónico"; -$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com"; -$a->strings["Permissions"] = "Permisos"; -$a->strings["Close"] = "Cerrado"; -$a->strings["Daily posting limit of %d posts reached. The post was rejected."] = "Limite diario de publicaciones %d alcanzado. La publicación fue rechazada."; -$a->strings["Weekly posting limit of %d posts reached. The post was rejected."] = "Limite semanal de publicaciones %d alcanzado. La publicación fue rechazada."; -$a->strings["Monthly posting limit of %d posts reached. The post was rejected."] = "Limite mensual de publicaciones %d alcanzado. La publicación fue rechazada."; -$a->strings["Profile Photos"] = "Foto del perfil"; +$a->strings["Embedding disabled"] = "Contenido incrustrado desabilitado"; +$a->strings["Embedded content"] = "Contenido integrado"; +$a->strings["newer"] = "más nuevo"; +$a->strings["older"] = "más antiguo"; +$a->strings["prev"] = "ant."; +$a->strings["last"] = "última"; +$a->strings["view full size"] = "Ver a tamaño completo"; $a->strings["Image/photo"] = "Imagen/Foto"; $a->strings["%2\$s %3\$s"] = "%2\$s %3\$s"; $a->strings["$1 wrote:"] = "$1 escribió:"; $a->strings["Encrypted content"] = "Contenido cifrado"; $a->strings["Invalid source protocol"] = "Protocolo de fuente inválido"; $a->strings["Invalid link protocol"] = "Protocolo de enlace inválido"; -$a->strings["Unknown | Not categorised"] = "Desconocido | No clasificado"; -$a->strings["Block immediately"] = "Bloquear inmediatamente"; -$a->strings["Shady, spammer, self-marketer"] = "Sospechoso, spammer, auto-publicidad"; -$a->strings["Known to me, but no opinion"] = "Le conozco, sin opinión"; -$a->strings["OK, probably harmless"] = "OK, probablemente inofensivo"; -$a->strings["Reputable, has my trust"] = "Buena reputación, tiene mi confianza"; -$a->strings["Frequently"] = "Frequentemente"; -$a->strings["Hourly"] = "Cada hora"; -$a->strings["Twice daily"] = "Dos veces al día"; -$a->strings["Daily"] = "Diariamente"; -$a->strings["Weekly"] = "Semanalmente"; -$a->strings["Monthly"] = "Mensualmente"; -$a->strings["Friendica"] = "Friendica"; -$a->strings["OStatus"] = "OStatus"; -$a->strings["RSS/Atom"] = "RSS/Atom"; -$a->strings["Email"] = "Correo electrónico"; -$a->strings["Diaspora"] = "Diaspora*"; -$a->strings["Facebook"] = "Facebook"; -$a->strings["Zot!"] = "Zot!"; -$a->strings["LinkedIn"] = "LinkedIn"; -$a->strings["XMPP/IM"] = "XMPP/IM"; -$a->strings["MySpace"] = "MySpace"; -$a->strings["Google+"] = "Google+"; -$a->strings["pump.io"] = "pump.io"; -$a->strings["Twitter"] = "Twitter"; -$a->strings["Diaspora Connector"] = "Conector Diaspora"; -$a->strings["GNU Social Connector"] = "Conector a GNU Social"; -$a->strings["pnut"] = "pnut"; -$a->strings["App.net"] = "App.net"; -$a->strings["event"] = "evento"; -$a->strings["status"] = "estado"; -$a->strings["photo"] = "foto"; -$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; -$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; -$a->strings["%1\$s attends %2\$s's %3\$s"] = "%1\$s atenderá %2\$s's %3\$s"; -$a->strings["%1\$s doesn't attend %2\$s's %3\$s"] = "%1\$s no atenderá %2\$s's %3\$s"; -$a->strings["%1\$s attends maybe %2\$s's %3\$s"] = "%1\$s atenderá quizás %2\$s's %3\$s"; -$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s ahora es amigo de %2\$s"; -$a->strings["%1\$s poked %2\$s"] = "%1\$s le dio un toque a %2\$s"; -$a->strings["%1\$s is currently %2\$s"] = "%1\$s está actualmente %2\$s"; -$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado el %3\$s de %2\$s con %4\$s"; -$a->strings["post/item"] = "publicación/tema"; -$a->strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s ha marcado %3\$s de %2\$s como Favorito"; -$a->strings["Likes"] = "Me gusta"; -$a->strings["Dislikes"] = "No me gusta"; -$a->strings["Attending"] = [ - 0 => "Atendiendo", - 1 => "Atendiendo", -]; -$a->strings["Not attending"] = "No atendiendo"; -$a->strings["Might attend"] = "Puede que atienda"; -$a->strings["Select"] = "Seleccionar"; -$a->strings["Delete"] = "Eliminar"; -$a->strings["View %s's profile @ %s"] = "Ver perfil de %s @ %s"; -$a->strings["Categories:"] = "Categorías:"; -$a->strings["Filed under:"] = "Archivado en:"; -$a->strings["%s from %s"] = "%s de %s"; -$a->strings["View in context"] = "Verlo en contexto"; -$a->strings["Please wait"] = "Por favor, espera"; -$a->strings["remove"] = "eliminar"; -$a->strings["Delete Selected Items"] = "Eliminar el elemento seleccionado"; -$a->strings["Follow Thread"] = "Seguir publicacion"; -$a->strings["%s likes this."] = "A %s le gusta esto."; -$a->strings["%s doesn't like this."] = "A %s no le gusta esto."; -$a->strings["%s attends."] = "%s atiende."; -$a->strings["%s doesn't attend."] = "%s no atenderá."; -$a->strings["%s attends maybe."] = "%s quizás atenderá"; -$a->strings["and"] = "y"; -$a->strings[", and %d other people"] = " y a otras %d personas"; -$a->strings["%2\$d people like this"] = "%2\$d personas les gusta esto"; -$a->strings["%s like this."] = "A %s le gusta esto."; -$a->strings["%2\$d people don't like this"] = "%2\$d personas no les gusta esto"; -$a->strings["%s don't like this."] = "A %s no le gusta esto."; -$a->strings["%2\$d people attend"] = "%2\$d personas atienden"; -$a->strings["%s attend."] = "%s atiende."; -$a->strings["%2\$d people don't attend"] = "%2\$d personasno atienden"; -$a->strings["%s don't attend."] = "%s no atiende."; -$a->strings["%2\$d people attend maybe"] = "%2\$d people quizá asistan"; -$a->strings["%s anttend maybe."] = "%s atiende quizás."; -$a->strings["Visible to everybody"] = "Visible para cualquiera"; -$a->strings["Please enter a link URL:"] = "Introduce la dirección del enlace:"; -$a->strings["Please enter a video link/URL:"] = "Por favor, introduce la URL/enlace del vídeo:"; -$a->strings["Please enter an audio link/URL:"] = "Por favor, introduce la URL/enlace del audio:"; -$a->strings["Tag term:"] = "Etiquetar:"; -$a->strings["Save to Folder:"] = "Guardar en directorio:"; -$a->strings["Where are you right now?"] = "¿Dónde estás ahora?"; -$a->strings["Delete item(s)?"] = "¿Borrar objeto(s)?"; -$a->strings["Share"] = "Compartir"; -$a->strings["Upload photo"] = "Subir foto"; -$a->strings["upload photo"] = "subir imagen"; -$a->strings["Attach file"] = "Adjuntar archivo"; -$a->strings["attach file"] = "adjuntar archivo"; -$a->strings["Insert web link"] = "Insertar enlace"; -$a->strings["web link"] = "enlace web"; -$a->strings["Insert video link"] = "Insertar enlace del vídeo"; -$a->strings["video link"] = "enlace de video"; -$a->strings["Insert audio link"] = "Insertar vínculo del audio"; -$a->strings["audio link"] = "enlace de audio"; -$a->strings["Set your location"] = "Configurar tu localización"; -$a->strings["set location"] = "establecer tu ubicación"; -$a->strings["Clear browser location"] = "Borrar la localización del navegador"; -$a->strings["clear location"] = "limpiar la localización"; -$a->strings["Set title"] = "Establecer el título"; -$a->strings["Categories (comma-separated list)"] = "Categorías (lista separada por comas)"; -$a->strings["Permission settings"] = "Configuración de permisos"; -$a->strings["permissions"] = "permisos"; -$a->strings["Public post"] = "Publicación pública"; -$a->strings["Preview"] = "Vista previa"; -$a->strings["Cancel"] = "Cancelar"; -$a->strings["Post to Groups"] = "Publicar hacia grupos"; -$a->strings["Post to Contacts"] = "Publicar hacia contactos"; -$a->strings["Private post"] = "Publicación privada"; -$a->strings["Message"] = "Mensaje"; -$a->strings["Browser"] = "Navegador"; -$a->strings["View all"] = "Ver todos los contactos"; -$a->strings["Like"] = [ - 0 => "Me gusta", - 1 => "Me gusta", -]; -$a->strings["Dislike"] = [ - 0 => "No me gusta", - 1 => "No me gusta", -]; -$a->strings["Not Attending"] = [ - 0 => "No atendiendo", - 1 => "No atendiendo", -]; -$a->strings["Cannot locate DNS info for database server '%s'"] = "No se puede encontrar información DNS para la base de datos del servidor '%s'"; -$a->strings["There are no tables on MyISAM."] = "No hay tablas en MyISAM"; -$a->strings["\n\t\t\tThe friendica developers released update %s recently,\n\t\t\tbut when I tried to install it, something went terribly wrong.\n\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."] = "\n\t\t\tLos desarolladores de friendica publicaron una actualización %s recientemente\n\t\t\tpero cuando intento de instalarla,algo salio terriblemente mal.\n\t\t\tEsto necesita ser arreglado pronto y no puedo hacerlo solo. Por favor contacta\n\t\t\tlos desarolladores de friendica si no me podes ayudar por ti solo. Mi base de datos puede estar invalido."; -$a->strings["The error message is\n[pre]%s[/pre]"] = "El mensaje de error es\n[pre]%s[/pre]"; -$a->strings["\nError %d occurred during database update:\n%s\n"] = "\nError %d ocurrido durante la actualización de la base de datos:\n%s\n"; -$a->strings["Errors encountered performing database changes: "] = "Errores encontrados al realizar cambios en la base de datos: "; -$a->strings[": Database update"] = ": Actualización de la base de datos"; -$a->strings["%s: updating %s table."] = "%s: actualizando %s tabla."; -$a->strings["(no subject)"] = "(sin asunto)"; -$a->strings["%s\\'s birthday"] = "%s\\'s cumpleaños"; -$a->strings["Sharing notification from Diaspora network"] = "Compartir notificaciones con la red Diaspora*"; -$a->strings["Attachments:"] = "Archivos adjuntos:"; -$a->strings["all-day"] = "todo el día"; -$a->strings["Sun"] = "Dom"; -$a->strings["Mon"] = "Lun"; -$a->strings["Tue"] = "Mar"; -$a->strings["Wed"] = "Mie"; -$a->strings["Thu"] = "Jue"; -$a->strings["Fri"] = "Vie"; -$a->strings["Sat"] = "Sab"; -$a->strings["Sunday"] = "Domingo"; -$a->strings["Monday"] = "Lunes"; -$a->strings["Tuesday"] = "Martes"; -$a->strings["Wednesday"] = "Miércoles"; -$a->strings["Thursday"] = "Jueves"; -$a->strings["Friday"] = "Viernes"; -$a->strings["Saturday"] = "Sábado"; -$a->strings["Jan"] = "Ene"; -$a->strings["Feb"] = "Feb"; -$a->strings["Mar"] = "Mar"; -$a->strings["Apr"] = "Abr"; -$a->strings["May"] = "Mayo"; -$a->strings["Jun"] = "Jun"; -$a->strings["Jul"] = "Jul"; -$a->strings["Aug"] = "Ago"; -$a->strings["Sept"] = "Sept"; -$a->strings["Oct"] = "Oct"; -$a->strings["Nov"] = "Nov"; -$a->strings["Dec"] = "Dec"; -$a->strings["January"] = "Enero"; -$a->strings["February"] = "Febrero"; -$a->strings["March"] = "Marzo"; -$a->strings["April"] = "Abril"; -$a->strings["June"] = "Junio"; -$a->strings["July"] = "Julio"; -$a->strings["August"] = "Agosto"; -$a->strings["September"] = "Septiembre"; -$a->strings["October"] = "Octubre"; -$a->strings["November"] = "Noviembre"; -$a->strings["December"] = "Diciembre"; -$a->strings["today"] = "hoy"; -$a->strings["No events to display"] = "No hay eventos a mostrar"; -$a->strings["l, F j"] = "l, F j"; -$a->strings["Edit event"] = "Editar evento"; -$a->strings["Duplicate event"] = "Duplicar evento"; -$a->strings["Delete event"] = "Borrar evento"; -$a->strings["link to source"] = "Enlace al original"; -$a->strings["Export"] = "Exportar"; -$a->strings["Export calendar as ical"] = "Exportar calendario como ical"; -$a->strings["Export calendar as csv"] = "Exportar calendario como csv"; -$a->strings["D g:i A"] = "D g:i A"; -$a->strings["g:i A"] = "g:i A"; -$a->strings["Show map"] = "Mostrar mapa"; -$a->strings["Hide map"] = "Ocultar mapa"; -$a->strings["Disallowed profile URL."] = "Dirección de perfil no permitida."; -$a->strings["Blocked domain"] = "Dominio bloqueado"; -$a->strings["Connect URL missing."] = "Falta el conector URL."; -$a->strings["This site is not configured to allow communications with other networks."] = "Este sitio no está configurado para permitir la comunicación con otras redes."; -$a->strings["No compatible communication protocols or feeds were discovered."] = "No se ha descubierto protocolos de comunicación o fuentes compatibles."; -$a->strings["The profile address specified does not provide adequate information."] = "La dirección del perfil especificado no proporciona información adecuada."; -$a->strings["An author or name was not found."] = "No se ha encontrado un autor o nombre."; -$a->strings["No browser URL could be matched to this address."] = "Ninguna dirección concuerda con la suministrada."; -$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Imposible identificar la dirección @ con algún protocolo conocido o dirección de contacto."; -$a->strings["Use mailto: in front of address to force email check."] = "Escribe mailto: al principio de la dirección para forzar el envío."; -$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "La dirección del perfil especificada pertenece a una red que ha sido deshabilitada en este sitio."; -$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Perfil limitado. Esta persona no podrá recibir notificaciones directas/personales tuyas."; -$a->strings["Unable to retrieve contact information."] = "No ha sido posible recibir la información del contacto."; -$a->strings["Requested account is not available."] = "La cuenta solicitada no está disponible."; -$a->strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; -$a->strings["Edit profile"] = "Editar perfil"; -$a->strings["Atom feed"] = "Atom feed"; -$a->strings["Manage/edit profiles"] = "Administrar/editar perfiles"; -$a->strings["Change profile photo"] = "Cambiar foto del perfil"; -$a->strings["Create New Profile"] = "Crear nuevo perfil"; -$a->strings["Profile Image"] = "Imagen del Perfil"; -$a->strings["visible to everybody"] = "Visible para todos"; -$a->strings["Edit visibility"] = "Editar visibilidad"; -$a->strings["Gender:"] = "Género:"; -$a->strings["Status:"] = "Estado:"; -$a->strings["Homepage:"] = "Página de inicio:"; -$a->strings["About:"] = "Acerca de:"; -$a->strings["XMPP:"] = "XMPP:"; -$a->strings["Network:"] = "Red:"; -$a->strings["g A l F d"] = "g A l F d"; -$a->strings["F d"] = "F d"; -$a->strings["[today]"] = "[hoy]"; -$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños"; -$a->strings["Birthdays this week:"] = "Cumpleaños esta semana:"; -$a->strings["[No description]"] = "[Sin descripción]"; -$a->strings["Event Reminders"] = "Recordatorios de eventos"; -$a->strings["Events this week:"] = "Eventos de esta semana:"; -$a->strings["Full Name:"] = "Nombre completo:"; -$a->strings["j F, Y"] = "j F, Y"; -$a->strings["j F"] = "j F"; -$a->strings["Age:"] = "Edad:"; -$a->strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; -$a->strings["Sexual Preference:"] = "Preferencia sexual:"; -$a->strings["Hometown:"] = "Ciudad de origen:"; -$a->strings["Tags:"] = "Etiquetas:"; -$a->strings["Political Views:"] = "Ideas políticas:"; -$a->strings["Religion:"] = "Religión:"; -$a->strings["Hobbies/Interests:"] = "Aficiones/Intereses:"; -$a->strings["Likes:"] = "Me gusta:"; -$a->strings["Dislikes:"] = "No me gusta:"; -$a->strings["Contact information and Social Networks:"] = "Información de contacto y Redes sociales:"; -$a->strings["Musical interests:"] = "Intereses musicales:"; -$a->strings["Books, literature:"] = "Libros, literatura:"; -$a->strings["Television:"] = "Televisión:"; -$a->strings["Film/dance/culture/entertainment:"] = "Películas/baile/cultura/entretenimiento:"; -$a->strings["Love/Romance:"] = "Amor/Romance:"; -$a->strings["Work/employment:"] = "Trabajo/ocupación:"; -$a->strings["School/education:"] = "Escuela/estudios:"; -$a->strings["Forums:"] = "Foros:"; -$a->strings["Basic"] = "Basic"; -$a->strings["Advanced"] = "Avanzado"; -$a->strings["Status Messages and Posts"] = "Mensajes de Estado y Publicaciones"; -$a->strings["Profile Details"] = "Detalles del Perfil"; -$a->strings["Photo Albums"] = "Álbum de Fotos"; -$a->strings["Personal Notes"] = "Notas personales"; -$a->strings["Only You Can See This"] = "Únicamente tú puedes ver esto"; -$a->strings["[Name Withheld]"] = "[Nombre oculto]"; -$a->strings["Item not found."] = "Elemento no encontrado."; -$a->strings["Do you really want to delete this item?"] = "¿Realmente quieres borrar este objeto?"; -$a->strings["Yes"] = "Sí"; -$a->strings["Permission denied."] = "Permiso denegado."; -$a->strings["Archives"] = "Archivos"; -$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s atenderá %2\$s's %3\$s"; -$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no atenderá %2\$s's %3\$s"; -$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s puede que atienda %2\$s's %3\$s"; -$a->strings["[no subject]"] = "[sin asunto]"; -$a->strings["view full size"] = "Ver a tamaño completo"; -$a->strings["%s is now following %s."] = "%s sigue ahora a %s."; -$a->strings["following"] = "siguiendo"; -$a->strings["%s stopped following %s."] = "%s dejó de seguir a %s."; -$a->strings["stopped following"] = "dejó de seguir"; -$a->strings["newer"] = "más nuevo"; -$a->strings["older"] = "más antiguo"; -$a->strings["first"] = "primera"; -$a->strings["prev"] = "ant."; -$a->strings["next"] = "sig."; -$a->strings["last"] = "última"; $a->strings["Loading more entries..."] = "Cargar mas entradas .."; $a->strings["The end"] = "El fin"; $a->strings["No contacts"] = "Sin contactos"; @@ -653,464 +1683,57 @@ $a->strings["%d Contact"] = [ 1 => "%d Contactos", ]; $a->strings["View Contacts"] = "Ver contactos"; -$a->strings["Save"] = "Guardar"; -$a->strings["poke"] = "tocar"; -$a->strings["poked"] = "tocó a"; -$a->strings["ping"] = "hacer \"ping\""; -$a->strings["pinged"] = "hizo \"ping\" a"; -$a->strings["prod"] = "empujar"; -$a->strings["prodded"] = "empujó a"; -$a->strings["slap"] = "abofetear"; -$a->strings["slapped"] = "abofeteó a"; -$a->strings["finger"] = "meter dedo"; -$a->strings["fingered"] = "le metió un dedo a"; -$a->strings["rebuff"] = "desairar"; -$a->strings["rebuffed"] = "desairó a"; -$a->strings["happy"] = "feliz"; -$a->strings["sad"] = "triste"; -$a->strings["mellow"] = "sentimental"; -$a->strings["tired"] = "cansado"; -$a->strings["perky"] = "alegre"; -$a->strings["angry"] = "furioso"; -$a->strings["stupified"] = "estupefacto"; -$a->strings["puzzled"] = "extrañado"; -$a->strings["interested"] = "interesado"; -$a->strings["bitter"] = "rencoroso"; -$a->strings["cheerful"] = "jovial"; -$a->strings["alive"] = "vivo"; -$a->strings["annoyed"] = "enojado"; -$a->strings["anxious"] = "ansioso"; -$a->strings["cranky"] = "irritable"; -$a->strings["disturbed"] = "perturbado"; -$a->strings["frustrated"] = "frustrado"; -$a->strings["motivated"] = "motivado"; -$a->strings["relaxed"] = "relajado"; -$a->strings["surprised"] = "sorprendido"; -$a->strings["Sund"] = "Dom"; -$a->strings["Sep"] = "Sep"; -$a->strings["View Video"] = "Ver vídeo"; -$a->strings["bytes"] = "bytes"; +$a->strings["Follow"] = ""; $a->strings["Click to open/close"] = "Pulsa para abrir/cerrar"; -$a->strings["View on separate page"] = "Ver en pagina aparte"; -$a->strings["view on separate page"] = "ver en pagina aparte"; -$a->strings["activity"] = "Actividad"; -$a->strings["comment"] = [ - 0 => "", - 1 => "Comentario", +$a->strings["Export"] = "Exportar"; +$a->strings["Export calendar as ical"] = "Exportar calendario como ical"; +$a->strings["Export calendar as csv"] = "Exportar calendario como csv"; +$a->strings["Add New Contact"] = "Añadir nuevo contacto"; +$a->strings["Enter address or web location"] = "Escribe la dirección o página web"; +$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Ejemplo: miguel@ejemplo.com, http://ejemplo.com/miguel"; +$a->strings["%d invitation available"] = [ + 0 => "%d invitación disponible", + 1 => "%d invitaviones disponibles", ]; -$a->strings["post"] = "Publicación"; -$a->strings["Item filed"] = "Elemento archivado"; -$a->strings["Error decoding account file"] = "Error decodificando el archivo de cuenta"; -$a->strings["Error! No version data in file! This is not a Friendica account file?"] = "Error! No hay datos de versión en el archivo! ¿Es esto de una cuenta friendica? "; -$a->strings["Error! Cannot check nickname"] = "Error! No puedo consultar el apodo"; -$a->strings["User '%s' already exists on this server!"] = "La cuenta '%s' ya existe en este servidor!"; -$a->strings["User creation error"] = "Error al crear la cuenta"; -$a->strings["User profile creation error"] = "Error de creación del perfil de la cuenta"; -$a->strings["%d contact not imported"] = [ - 0 => "%d contactos no encontrado", - 1 => "%d contactos no importado", +$a->strings["Find People"] = "Buscar personas"; +$a->strings["Enter name or interest"] = "Introduzce nombre o intereses"; +$a->strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: Robert Morgenstein, Pesca"; +$a->strings["Similar Interests"] = "Intereses similares"; +$a->strings["Random Profile"] = "Perfil aleatorio"; +$a->strings["Invite Friends"] = "Invitar amigos"; +$a->strings["Local Directory"] = "Directorio local"; +$a->strings["Protocols"] = ""; +$a->strings["All Protocols"] = ""; +$a->strings["Saved Folders"] = "Directorios guardados"; +$a->strings["Everything"] = "Todo"; +$a->strings["Categories"] = "Categorías"; +$a->strings["%d contact in common"] = [ + 0 => "%d contacto en común", + 1 => "%d contactos en común", ]; -$a->strings["Done. You can now login with your username and password"] = "Hecho. Ahora podes ingresar con tu nombre de cuenta y la contraseña."; -$a->strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no ha sido modificada."; -$a->strings["An invitation is required."] = "Se necesita invitación."; -$a->strings["Invitation could not be verified."] = "No se puede verificar la invitación."; -$a->strings["Invalid OpenID url"] = "Dirección OpenID no válida"; -$a->strings["Please enter the required information."] = "Por favor, introduce la información necesaria."; -$a->strings["Please use a shorter name."] = "Por favor, usa un nombre más corto."; -$a->strings["Name too short."] = "El nombre es demasiado corto."; -$a->strings["That doesn't appear to be your full (First Last) name."] = "No parece que ese sea tu nombre completo."; -$a->strings["Your email domain is not among those allowed on this site."] = "Tu dominio de correo no se encuentra entre los permitidos en este sitio."; -$a->strings["Not a valid email address."] = "No es una dirección de correo electrónico válida."; -$a->strings["Cannot use that email."] = "No se puede utilizar este correo electrónico."; -$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"."] = "El apodo solo puede contener \"a-z\", \"0-9\" y \"_\"."; -$a->strings["Nickname is already registered. Please choose another."] = "Apodo ya registrado. Por favor, elije otro."; -$a->strings["Nickname was once registered here and may not be re-used. Please choose another."] = "El apodo ya ha sido registrado alguna vez y no puede volver a usarse. Por favor, utiliza otro."; -$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERROR GRAVE: La generación de claves de seguridad ha fallado."; -$a->strings["An error occurred during registration. Please try again."] = "Se produjo un error durante el registro. Por favor, inténtalo de nuevo."; -$a->strings["default"] = "predeterminado"; -$a->strings["An error occurred creating your default profile. Please try again."] = "Error al crear tu perfil predeterminado. Por favor, inténtalo de nuevo."; -$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account is pending for approval by the administrator.\n\t"] = "\n\t\tEstimado %1\$s,\n\t\t\tGracias por registrarse en %2\$s. Su cuenta está pendiente de aprobación por el administrador.\n\t"; -$a->strings["Registration at %s"] = "Registro en %s"; -$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account has been created.\n\t"] = "\n\t\tEstimado %1\$s,\n\t\t\tGracias por registrar en %2\$s. Su cuenta ha sido creada.\n\t"; -$a->strings["\n\t\tThe login details are as follows:\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t%1\$s\n\t\t\tPassword:\t%5\$s\n\n\t\tYou may change your password from your account \"Settings\" page after logging\n\t\tin.\n\n\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\tYou may also wish to add some basic information to your default profile\n\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\tWe recommend setting your full name, adding a profile photo,\n\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\tthan that.\n\n\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\tIf you are new and do not know anybody here, they may help\n\t\tyou to make some new and interesting friends.\n\n\n\t\tThank you and welcome to %2\$s."] = "\n\t\t\tLos detalles de acceso son las siguientes:\n\n\t\t\tDirección del sitio:\t%3\$s\n\t\t\tNombre de la cuenta:\t\t%1\$s\n\t\t\tContraseña:\t\t%5\$s\n\n\t\t\tPodrá cambiar la contraseña desde la pagina de configuración de su cuenta después de acceder a la misma\n\t\t\ten.\n\n\t\t\tPor favor tome unos minutos para revisar las opciones demás de la cuenta en dicha pagina de configuración.\n\n\t\t\tTambién podrá agregar informaciones adicionales a su pagina de perfil predeterminado. \n\t\t\t(en la pagina \"Perfiles\") para que otras personas pueden encontrarlo fácilmente.\n\n\t\t\tRecomendamos que elija un nombre apropiado, agregando una imagen de perfil,\n\t\t\tagregando algunas palabras claves de la cuenta (muy útil para hacer nuevos amigos) - y \n\t\t\tquizás el país en donde vive; si no quiere ser mas especifico\n\t\t\tque eso.\n\n\t\t\tRespetamos absolutamente su derecho a la privacidad y ninguno de estos detalles es necesario.\n\t\t\tSi eres nuevo aquí y no conoces a nadie, estos detalles pueden ayudarte\n\t\t\tpara hacer nuevas e interesantes amistades.\n\n\t\t\tGracias y bienvenido a %2\$s."; -$a->strings["Registration details for %s"] = "Detalles de registro para %s"; -$a->strings["Authorize application connection"] = "Autorizar la conexión de la aplicación"; -$a->strings["Return to your app and insert this Securty Code:"] = "Regresa a tu aplicación e introduce este código de seguridad:"; -$a->strings["Please login to continue."] = "Inicia sesión para continuar."; -$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Quieres autorizar a esta aplicación el acceso a tus mensajes y contactos, y/o crear nuevas publicaciones para ti?"; -$a->strings["No"] = "No"; -$a->strings["You must be logged in to use addons. "] = "Tienes que estar registrado para tener acceso a los accesorios."; -$a->strings["Applications"] = "Aplicaciones"; -$a->strings["No installed applications."] = "Sin aplicaciones"; -$a->strings["Item not available."] = "Elemento no disponible."; -$a->strings["Item was not found."] = "Elemento no encontrado."; -$a->strings["Source (bbcode) text:"] = "Texto fuente (bbcode):"; -$a->strings["Source (Diaspora) text to convert to BBcode:"] = "Fuente (Diaspora) para pasar a BBcode:"; -$a->strings["Source input: "] = "Entrada: "; -$a->strings["bb2html (raw HTML): "] = "bb2html (raw HTML): "; -$a->strings["bb2html: "] = "bb2html: "; -$a->strings["bb2html2bb: "] = "bb2html2bb: "; -$a->strings["bb2md: "] = "bb2md: "; -$a->strings["bb2md2html: "] = "bb2md2html: "; -$a->strings["bb2dia2bb: "] = "bb2dia2bb: "; -$a->strings["bb2md2html2bb: "] = "bb2md2html2bb: "; -$a->strings["Source input (Diaspora format): "] = "Fuente (formato Diaspora): "; -$a->strings["diaspora2bb: "] = "diaspora2bb: "; -$a->strings["No contacts in common."] = "Sin contactos en común."; -$a->strings["Common Friends"] = "Amigos comunes"; -$a->strings["Credits"] = "Creditos"; -$a->strings["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!"] = "Friendica es un proyecto comunitario, que no seria posible sin la ayuda de mucha gente. Aquí una lista de de aquellos que aportaron al código o la traducción de friendica.\nGracias a todos! "; -$a->strings["Contact settings applied."] = "Contacto configurado con éxito."; -$a->strings["Contact update failed."] = "Error al actualizar el Contacto."; -$a->strings["Contact not found."] = "Contacto no encontrado."; -$a->strings["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact may stop working."] = "ADVERTENCIA: Esto es muy avanzado y si se introduce información incorrecta tu conexión con este contacto puede dejar de funcionar."; -$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Por favor usa el botón 'Atás' de tu navegador ahora si no tienes claro qué hacer en esta página."; -$a->strings["No mirroring"] = "No espejar"; -$a->strings["Mirror as forwarded posting"] = "Espejar como reenvio"; -$a->strings["Mirror as my own posting"] = "Espejar como publicación propia"; -$a->strings["Return to contact editor"] = "Volver al editor de contactos"; -$a->strings["Refetch contact data"] = "Volver a solicitar datos del contacto."; -$a->strings["Submit"] = "Envíar"; -$a->strings["Remote Self"] = "Perfil remoto"; -$a->strings["Mirror postings from this contact"] = "Espejar publicaciones de este contacto"; -$a->strings["Mark this contact as remote_self, this will cause friendica to repost new entries from this contact."] = "Marcar este contacto como perfil_remoto, esto generara que friendica reenvía nuevas publicaciones desde esta cuenta."; -$a->strings["Name"] = "Nombre"; -$a->strings["Account Nickname"] = "Apodo de la cuenta"; -$a->strings["@Tagname - overrides Name/Nickname"] = "@Etiqueta - Sobrescribe el Nombre/Apodo"; -$a->strings["Account URL"] = "Dirección de la cuenta"; -$a->strings["Friend Request URL"] = "Dirección de la solicitud de amistad"; -$a->strings["Friend Confirm URL"] = "Dirección de confirmación de tu amigo "; -$a->strings["Notification Endpoint URL"] = "Dirección URL de la notificación"; -$a->strings["Poll/Feed URL"] = "Dirección del Sondeo/Fuentes"; -$a->strings["New photo from this URL"] = "Nueva foto de esta dirección"; -$a->strings["- select -"] = "- seleccionar -"; -$a->strings["Remote privacy information not available."] = "Privacidad de la información remota no disponible."; -$a->strings["Visible to:"] = "Visible para:"; -$a->strings["System down for maintenance"] = "Servicio suspendido por mantenimiento"; -$a->strings["Welcome to Friendica"] = "Bienvenido a Friendica "; -$a->strings["New Member Checklist"] = "Listado de nuevos miembros"; -$a->strings["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."] = "Nos gustaría ofrecerte algunos consejos y enlaces para ayudar a hacer tu experiencia más amena. Pulsa en cualquier elemento para visitar la página correspondiente. Un enlace a esta página será visible desde tu página de inicio durante las dos semanas siguientes a tu inscripción y luego desaparecerá."; -$a->strings["Getting Started"] = "Empezando"; -$a->strings["Friendica Walk-Through"] = "Visita guiada a Friendica"; -$a->strings["On your Quick Start page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join."] = "En tu página de Inicio Rápido - busca una introducción breve para tus pestañas de perfil y red, haz algunas conexiones nuevas, y busca algunos grupos a los que unirte."; -$a->strings["Go to Your Settings"] = "Ir a tus ajustes"; -$a->strings["On your Settings 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."] = "En la página de Configuración puedes cambiar tu contraseña inicial. También aparece tu ID (Identity Address). Es parecida a una dirección de correo y te servirá para conectar con gente de redes sociales libres."; -$a->strings["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."] = "Revisa las otras configuraciones, especialmente la configuración de privacidad. Un listado de directorio sin publicar es como tener un número de teléfono sin publicar. Normalmente querrás publicar tu listado, a menos que tus amigos y amigos potenciales sepan cómo ponerse en contacto contigo."; -$a->strings["Upload Profile Photo"] = "Subir foto del Perfil"; -$a->strings["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."] = "Sube una foto para tu perfil si no lo has hecho aún. Los estudios han demostrado que la gente que usa fotos suyas reales tienen diez veces más éxito a la hora de entablar amistad que las que no."; -$a->strings["Edit Your Profile"] = "Editar tu perfil"; -$a->strings["Edit your default profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Edita tu perfil predeterminado como quieras. Revisa la configuración para ocultar tu lista de amigos o tu perfil a los visitantes desconocidos."; -$a->strings["Profile Keywords"] = "Palabras clave del perfil"; -$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Define en tu perfil público algunas palabras que describan tus intereses. Así podremos buscar otras personas con los mismos gustos y sugerirte posibles amigos."; -$a->strings["Connecting"] = "Conectando"; -$a->strings["Importing Emails"] = "Importando correos electrónicos"; -$a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Introduce la información para acceder a tu correo en la página de Configuración del conector si quieres importar e interactuar con amigos o listas de correos del buzón de entrada de tu correo electrónico."; -$a->strings["Go to Your Contacts Page"] = "Ir a tu página de contactos"; -$a->strings["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 Add New Contact dialog."] = "Tu página de Contactos es el portal desde donde podrás manejar tus amistades y conectarte con amigos de otras redes. Normalmente introduces su dirección o la dirección de su sitio web en el recuadro \"Añadir contacto nuevo\"."; -$a->strings["Go to Your Site's Directory"] = "Ir al directorio de tu sitio"; -$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a Connect or Follow link on their profile page. Provide your own Identity Address if requested."] = "El Directorio te permite encontrar otras personas en esta red o en cualquier otro sitio federado. Busca algún enlace de Conectar o Seguir en su perfil. Proporciona tu direción personal si es necesario."; -$a->strings["Finding New People"] = "Encontrando nueva gente"; -$a->strings["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."] = "En el panel lateral de la página de Contactos existen varias herramientas para encontrar nuevos amigos. Podemos filtrar personas por sus intereses, buscar personas por nombre o por sus intereses, y ofrecerte sugerencias basadas en sus relaciones de la red. En un sitio nuevo, las sugerencias de amigos por lo general comienzan pasadas las 24 horas."; -$a->strings["Group Your Contacts"] = "Agrupa tus contactos"; -$a->strings["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."] = "Una vez que tengas algunos amigos, puedes organizarlos en grupos privados de conversación mediante el memnú en tu página de Contactos y luego puedes interactuar con cada grupo por separado desde tu página de Red."; -$a->strings["Why Aren't My Posts Public?"] = "¿Por qué mis publicaciones no son públicas?"; -$a->strings["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."] = "Friendica respeta tu privacidad. Por defecto, tus publicaciones solo se mostrarán a personas que hayas añadido como amistades. Para más información, mira la sección de ayuda en el enlace de más arriba."; -$a->strings["Getting Help"] = "Consiguiendo ayuda"; -$a->strings["Go to the Help Section"] = "Ir a la sección de ayuda"; -$a->strings["Our help pages may be consulted for detail on other program features and resources."] = "Puedes consultar nuestra página de Ayuda para más información y recursos de ayuda."; -$a->strings["Visit %s's profile [%s]"] = "Ver el perfil de %s [%s]"; -$a->strings["Edit contact"] = "Modificar contacto"; -$a->strings["Contacts who are not members of a group"] = "Contactos sin grupo"; -$a->strings["Permission denied"] = "Permiso denegado"; -$a->strings["Invalid profile identifier."] = "Identificador de perfil no válido."; -$a->strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; -$a->strings["Click on a contact to add or remove."] = "Pulsa en un contacto para añadirlo o eliminarlo."; -$a->strings["Visible To"] = "Visible para"; -$a->strings["All Contacts (with secure profile access)"] = "Todos los contactos (con perfil de acceso seguro)"; -$a->strings["[Embedded content - reload page to view]"] = "[Contenido incrustado - recarga la página para verlo]"; -$a->strings["Public access denied."] = "Acceso público denegado."; -$a->strings["No contacts."] = "Ningún contacto."; -$a->strings["Access denied."] = "Acceso denegado."; -$a->strings["Only logged in users are permitted to perform a probing."] = "Sólo los usuarios registrados pueden realizar una exploración."; -$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el número de registros diarios permitidos. Inténtalo de nuevo mañana por favor."; -$a->strings["Import"] = "Importar"; -$a->strings["Move account"] = "Mover cuenta"; -$a->strings["You can import an account from another Friendica server."] = "Puedes importar una cuenta desde otro servidor de Friendica."; -$a->strings["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."] = "Necesitas exportar tu cuenta del antiguo servidor y subirla aquí. Volveremos a crear tu antigua cuenta con todos tus contactos aquí. También intentaremos de informar a tus amigos de que te has mudado."; -$a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "Esta característica es experimental. No podemos importar contactos desde la red OStatus (statusnet/identi.ca) o desde Diaspora*"; -$a->strings["Account file"] = "Archivo de la cuenta"; -$a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "Para exportar el perfil vaya a \"Configuracion -> Exportar sus datos personales\" y seleccione \"Exportar cuenta\""; -$a->strings["Not available."] = "No disponible"; -$a->strings["No results."] = "Sin resultados."; -$a->strings["No friends to display."] = "No hay amigos para mostrar."; -$a->strings["The post was created"] = "La publicación fue creada"; -$a->strings["Access to this profile has been restricted."] = "El acceso a este perfil ha sido restringido."; -$a->strings["View"] = "Vista"; -$a->strings["Previous"] = "Previo"; -$a->strings["Next"] = "Siguiente"; -$a->strings["list"] = "lista"; -$a->strings["User not found"] = "Usuario no encontrado"; -$a->strings["This calendar format is not supported"] = "Este formato de calendario no se soporta"; -$a->strings["No exportable data found"] = "No se ha encontrado información exportable"; -$a->strings["calendar"] = "calendario"; -$a->strings["%1\$s welcomes %2\$s"] = "%1\$s te da la bienvenida a %2\$s"; -$a->strings["This introduction has already been accepted."] = "Esta presentación ya ha sido aceptada."; -$a->strings["Profile location is not valid or does not contain profile information."] = "La dirección del perfil no es válida o no contiene información del perfil."; -$a->strings["Warning: profile location has no identifiable owner name."] = "Aviso: La dirección del perfil no tiene un nombre de propietario identificable."; -$a->strings["Warning: profile location has no profile photo."] = "Aviso: la dirección del perfil no tiene foto de perfil."; -$a->strings["%d required parameter was not found at the given location"] = [ - 0 => "no se encontró %d parámetro requerido en el lugar determinado", - 1 => "no se encontraron %d parámetros requeridos en el lugar determinado", -]; -$a->strings["Introduction complete."] = "Presentación completa."; -$a->strings["Unrecoverable protocol error."] = "Error de protocolo irrecuperable."; -$a->strings["Profile unavailable."] = "Perfil no disponible."; -$a->strings["%s has received too many connection requests today."] = "%s ha recibido demasiadas solicitudes de conexión hoy."; -$a->strings["Spam protection measures have been invoked."] = "Han sido activadas las medidas de protección contra spam."; -$a->strings["Friends are advised to please try again in 24 hours."] = "Tus amigos serán avisados para que lo intenten de nuevo pasadas 24 horas."; -$a->strings["Invalid locator"] = "Localizador no válido"; -$a->strings["Invalid email address."] = "Dirección de correo incorrecta"; -$a->strings["This account has not been configured for email. Request failed."] = "Esta cuenta no ha sido configurada para el correo. Fallo de solicitud."; -$a->strings["You have already introduced yourself here."] = "Ya te has presentado aquí."; -$a->strings["Apparently you are already friends with %s."] = "Al parecer, ya eres amigo de %s."; -$a->strings["Invalid profile URL."] = "Dirección de perfil no válida."; -$a->strings["Failed to update contact record."] = "Error al actualizar el contacto."; -$a->strings["Your introduction has been sent."] = "Tu presentación ha sido enviada."; -$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "La subscripción remota no se podrá hacer para tu red. Por favor contacta directamente desde tu sistema."; -$a->strings["Please login to confirm introduction."] = "Inicia sesión para confirmar la presentación."; -$a->strings["Incorrect identity currently logged in. Please login to this profile."] = "Sesión iniciada con la identificación incorrecta. Entra en este perfil."; -$a->strings["Confirm"] = "Confirmar"; -$a->strings["Hide this contact"] = "Ocultar este contacto"; -$a->strings["Welcome home %s."] = "Bienvenido a casa %s"; -$a->strings["Please confirm your introduction/connection request to %s."] = "Por favor, confirma tu solicitud de presentación/conexión con %s."; -$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Por favor introduce tu dirección ID de una de las siguientes redes sociales soportadas:"; -$a->strings["If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today."] = "Si aun no eres miembro de la red social libre seguí este enlace para encontrara un sitio disponible de friendica y acompañanos hoy mismo"; -$a->strings["Friend/Connection Request"] = "Solicitud de Amistad/Conexión"; -$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Ejemplos: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"; -$a->strings["Please answer the following:"] = "Por favor responde lo siguiente:"; -$a->strings["Does %s know you?"] = "¿%s te conoce?"; -$a->strings["Add a personal note:"] = "Añade una nota personal:"; -$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Web Social Federada"; -$a->strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = "(En vez de usar este formulario, introduce %s en la barra de búsqueda de Diaspora."; -$a->strings["Your Identity Address:"] = "Dirección de tu perfil:"; -$a->strings["Submit Request"] = "Enviar solicitud"; -$a->strings["Item not found"] = "Elemento no encontrado"; -$a->strings["Edit post"] = "Editar publicación"; -$a->strings["Not Found"] = "No se ha encontrado"; -$a->strings["Contact added"] = "Contacto añadido"; -$a->strings["You already added this contact."] = "Ya has añadido este contacto."; -$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "El soporte de Diaspora* no esta habilitado, el contacto no puede ser agregado."; -$a->strings["OStatus support is disabled. Contact can't be added."] = "El soporte de OStatus no esta habilitado, el contacto no puede ser agregado."; -$a->strings["The network type couldn't be detected. Contact can't be added."] = "No se pudo detectar el tipo de red. Contacto no puede ser agregado."; -$a->strings["Profile URL"] = "URL Perfil"; -$a->strings["Group created."] = "Grupo creado."; -$a->strings["Could not create group."] = "Imposible crear el grupo."; -$a->strings["Group not found."] = "Grupo no encontrado."; -$a->strings["Group name changed."] = "El nombre del grupo ha cambiado."; -$a->strings["Save Group"] = "Guardar grupo"; -$a->strings["Create a group of contacts/friends."] = "Crea un grupo de contactos/amigos."; -$a->strings["Group removed."] = "Grupo eliminado."; -$a->strings["Unable to remove group."] = "No se puede eliminar el grupo."; -$a->strings["Delete Group"] = "Borrar grupo"; -$a->strings["Group Editor"] = "Editor de grupos"; -$a->strings["Edit Group Name"] = "Editar nombre de grupo"; -$a->strings["Members"] = "Miembros"; -$a->strings["All Contacts"] = "Todos los contactos"; -$a->strings["Group is empty"] = "El grupo está vacío"; -$a->strings["Remove Contact"] = "Borrar contacto"; -$a->strings["Add Contact"] = "Agregar contacto"; -$a->strings["No profile"] = "Nigún perfil"; -$a->strings["Help:"] = "Ayuda:"; -$a->strings["Page not found."] = "Página no encontrada."; -$a->strings["Welcome to %s"] = "Bienvenido a %s"; -$a->strings["Total invitation limit exceeded."] = "Límite total de invitaciones excedido."; -$a->strings["%s : Not a valid email address."] = "%s : No es una dirección de correo válida."; -$a->strings["Please join us on Friendica"] = "Únete a nosotros en Friendica"; -$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Límite de invitaciones sobrepasado. Contacta con el administrador del sitio."; -$a->strings["%s : Message delivery failed."] = "%s : Ha fallado la entrega del mensaje."; -$a->strings["%d message sent."] = [ - 0 => "%d mensaje enviado.", - 1 => "%d mensajes enviados.", -]; -$a->strings["You have no more invitations available"] = "No tienes más invitaciones disponibles"; -$a->strings["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."] = "Visita %s para ver una lista de servidores públicos donde puedes darte de alta. Los miembros de otros servidores de Friendica pueden conectarse entre ellos, así como con miembros de otras redes sociales diferentes."; -$a->strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Para aceptar la invitación visita y regístrate en %s o en cualquier otro servidor público de Friendica."; -$a->strings["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."] = "Los servidores de Friendica están interconectados para crear una enorme red social centrada en la privacidad y controlada por sus miembros. También se puede conectar con muchas redes sociales tradicionales. Mira en %s para poder ver un listado de servidores alternativos de Friendica donde puedes darte de alta."; -$a->strings["Our apologies. This system is not currently configured to connect with other public sites or invite members."] = "Discúlpanos. Este sistema no está configurado actualmente para conectar con otros servidores públicos o invitar nuevos miembros."; -$a->strings["To accept this invitation, please visit and register at %s."] = "Para aceptar esta invitación, visite y regístrese en%s, por favor."; -$a->strings["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."] = "Los sitios de Friendica se conectan entre sí para crear una gran red social con privacidad mejorada que es propiedad y está controlada por sus miembros. También pueden conectarse con muchas redes sociales tradicionales."; -$a->strings["Send invitations"] = "Enviar invitaciones"; -$a->strings["Enter email addresses, one per line:"] = "Introduce las direcciones de correo, una por línea:"; -$a->strings["Your message:"] = "Tu mensaje:"; -$a->strings["You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web."] = "Estás cordialmente invitado a unirte a mi y a otros amigos en Friendica, creemos juntos una red social mejor."; -$a->strings["You will need to supply this invitation code: \$invite_code"] = "Tienes que proporcionar el siguiente código: \$invite_code"; -$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Una vez registrado, por favor contacta conmigo a través de mi página de perfil en:"; -$a->strings["For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca"] = "Para más información sobre el proyecto Friendica y por qué sentimos que es importante, visite http://friendi.ca, por favor"; -$a->strings["Time Conversion"] = "Conversión horária"; -$a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica ofrece este servicio para compartir eventos con otros servidores de la red friendica y amigos en zonas de horarios desconocidos."; -$a->strings["UTC time: %s"] = "Tiempo UTC: %s"; -$a->strings["Current timezone: %s"] = "Zona horaria actual: %s"; -$a->strings["Converted localtime: %s"] = "Zona horaria local convertida: %s"; -$a->strings["Please select your timezone:"] = "Por favor, selecciona tu zona horaria:"; -$a->strings["No valid account found."] = "No se ha encontrado ninguna cuenta válida"; -$a->strings["Password reset request issued. Check your email."] = "Solicitud de restablecimiento de contraseña enviada. Revisa tu correo."; -$a->strings["\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.\n\n\t\tYour password will not be changed unless we can verify that you\n\t\tissued this request."] = "\n\t\tEstimado %1\$s,\n\t\t\tUna consulta llego recientemente a \"%2\$s\" para renovar su\n\t\tcontraseña. Para confirmar esta solicitud por favor seleccione el enlace de verificación mas \n\t\tabajo o copie a pegue el mismo en la barra de dirección de su navegador.\n\n\t\tSi NO ha solicitado este cambio por favor NO SIGA este enlace\n\t\tproporcionado y ignore o borre este mail.\n\n\t\tSu contraseña no sera cambiada hasta que podamos verificar que usted haza\n\t\tsolicitado este cambio.."; -$a->strings["\n\t\tFollow this link 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"] = "\n\t\tSiga este enlace para verificar su identidad:\n\n\t\t%1\$s\n\n\t\tA continuación recibirá un mensaje consecutivo conteniendo la nueva contraseña.\n\t\tPodrá cambiar la contraseña después de haber accedido a la cuenta.\n\n\t\tLos detalles del acceso son las siguientes:\n\n\t\tDirección del sitio:\t%2\$s\n\t\tNombre de la cuenta:\t%3\$s"; -$a->strings["Password reset requested at %s"] = "Contraseña restablecida enviada a %s"; -$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no puede ser verificada (deberías haberla proporcionado antes). Falló el restablecimiento de la contraseña."; -$a->strings["Password Reset"] = "Restablecer la contraseña"; -$a->strings["Your password has been reset as requested."] = "Tu contraseña ha sido restablecida como solicitaste."; -$a->strings["Your new password is"] = "Tu nueva contraseña es"; -$a->strings["Save or copy your new password - and then"] = "Guarda o copia tu nueva contraseña y luego"; -$a->strings["click here to login"] = "pulsa aquí para acceder"; -$a->strings["Your password may be changed from the Settings page after successful login."] = "Puedes cambiar tu contraseña desde la página de Configuración después de acceder con éxito."; -$a->strings["\n\t\t\t\tDear %1\$s,\n\t\t\t\t\tYour password has been changed as requested. Please retain this\n\t\t\t\tinformation for your records (or change your password immediately to\n\t\t\t\tsomething that you will remember).\n\t\t\t"] = "\n\t\t\t\tEstimado %1\$s,\n\t\t\t\t\tSu contraseña ha cambiado como solicitado. Por favor guarde esta\n\t\t\t\tinformación para sus documentación (o cambie su contraseña inmediatamente a\n\t\t\t\talgo que pueda recordar).\n\t\t"; -$a->strings["\n\t\t\t\tYour login details are as follows:\n\n\t\t\t\tSite Location:\t%1\$s\n\t\t\t\tLogin Name:\t%2\$s\n\t\t\t\tPassword:\t%3\$s\n\n\t\t\t\tYou may change that password from your account settings page after logging in.\n\t\t\t"] = "\n\t\t\t\tSus datos de acceso son las siguientes:\n\n\t\t\t\tDirección del sitio:\t%1\$s\n\t\t\t\tNombre de cuenta:\t%2\$s\n\t\t\t\tContraseña:\t%3\$s\n\n\t\t\t\tPodrá cambiar esta contraseña después de ingresar al sitio en su pagina de configuración.\n\t\t\t"; -$a->strings["Your password has been changed at %s"] = "Tu contraseña se ha cambiado por %s"; -$a->strings["Forgot your Password?"] = "¿Olvidaste tu contraseña?"; -$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduce tu correo para restablecer tu contraseña. Luego comprueba tu correo para las instrucciones adicionales."; -$a->strings["Nickname or Email: "] = "Apodo o Correo electrónico: "; -$a->strings["Reset"] = "Restablecer"; -$a->strings["Manage Identities and/or Pages"] = "Administrar identidades y/o páginas"; -$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Cambia entre diferentes identidades o páginas de Comunidad/Grupos que comparten los detalles de tu cuenta o sobre los que tienes permisos para administrar"; -$a->strings["Select an identity to manage: "] = "Selecciona una identidad a gestionar:"; -$a->strings["No keywords to match. Please add keywords to your default profile."] = "No hay palabras clave que coincidan. Por favor, agrega algunas palabras claves en tu perfil predeterminado."; -$a->strings["is interested in:"] = "estás interesado en:"; -$a->strings["Profile Match"] = "Coincidencias de Perfil"; -$a->strings["No matches"] = "Sin conincidencias"; -$a->strings["No recipient selected."] = "Ningún destinatario seleccionado"; -$a->strings["Unable to locate contact information."] = "No se puede encontrar información del contacto."; -$a->strings["Message could not be sent."] = "El mensaje no ha podido ser enviado."; -$a->strings["Message collection failure."] = "Fallo en la recolección de mensajes."; -$a->strings["Message sent."] = "Mensaje enviado."; -$a->strings["Do you really want to delete this message?"] = "¿Estás seguro de que quieres borrar este mensaje?"; -$a->strings["Message deleted."] = "Mensaje eliminado."; -$a->strings["Conversation removed."] = "Conversación eliminada."; -$a->strings["Send Private Message"] = "Enviar mensaje privado"; -$a->strings["To:"] = "Para:"; -$a->strings["Subject:"] = "Asunto:"; -$a->strings["No messages."] = "No hay mensajes."; -$a->strings["Message not available."] = "Mensaje no disponibile."; -$a->strings["Delete message"] = "Borrar mensaje"; -$a->strings["Delete conversation"] = "Eliminar conversación"; -$a->strings["No secure communications available. You may be able to respond from the sender's profile page."] = "No hay comunicaciones seguras disponibles. Podrías responder desde la página de perfil del remitente. "; -$a->strings["Send Reply"] = "Enviar respuesta"; -$a->strings["Unknown sender - %s"] = "Remitente desconocido - %s"; -$a->strings["You and %s"] = "Tú y %s"; -$a->strings["%s and You"] = "%s y Tú"; -$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A"; -$a->strings["%d message"] = [ - 0 => "%d mensaje", - 1 => "%d mensajes", -]; -$a->strings["Invalid request identifier."] = "Solicitud de identificación no válida."; -$a->strings["Discard"] = "Descartar"; -$a->strings["Ignore"] = "Ignorar"; -$a->strings["Network Notifications"] = "Notificaciones de Red"; -$a->strings["System Notifications"] = "Notificaciones del sistema"; -$a->strings["Personal Notifications"] = "Notificaciones personales"; -$a->strings["Home Notifications"] = "Notificaciones de Inicio"; -$a->strings["Show Ignored Requests"] = "Mostrar peticiones ignoradas"; -$a->strings["Hide Ignored Requests"] = "Ocultar peticiones ignoradas"; -$a->strings["Notification type: "] = "Tipo de notificación: "; -$a->strings["suggested by %s"] = "sugerido por %s"; -$a->strings["Hide this contact from others"] = "Ocultar este contacto a los demás."; -$a->strings["Post a new friend activity"] = "Publica tu nueva amistad"; -$a->strings["if applicable"] = "Si corresponde"; -$a->strings["Approve"] = "Aprobar"; -$a->strings["Claims to be known to you: "] = "Dice conocerte: "; -$a->strings["yes"] = "sí"; -$a->strings["no"] = "no"; -$a->strings["Shall your connection be bidirectional or not?"] = "¿Su conexión debe ser bidireccional o no?"; -$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "Aceptar a %s como amigo le permite a %s suscribirse a sus publicaciones, y usted también recibirá actualizaciones de ellos en sus noticias."; -$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Aceptar a %s como suscriptor les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias."; -$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Aceptar a %s como participante les permite suscribirse a sus publicaciones, pero usted no recibirá actualizaciones de ellos en sus noticias."; -$a->strings["Friend"] = "Amigo"; -$a->strings["Sharer"] = "Lector"; -$a->strings["Subscriber"] = "Suscriptor"; -$a->strings["No introductions."] = "Sin presentaciones."; -$a->strings["Show unread"] = "Mostrar no leído"; -$a->strings["Show all"] = "Mostrar todo"; -$a->strings["No more %s notifications."] = "No más notificaciones de %s."; -$a->strings["No more system notifications."] = "No hay más notificaciones del sistema."; -$a->strings["Post successful."] = "¡Publicado!"; -$a->strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. ID no devuelta."; -$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Cuenta no encontrada y el registro OpenID no está permitido en ese sitio."; -$a->strings["Not Extended"] = "No extendido"; -$a->strings["Tips for New Members"] = "Consejos para nuevos miembros"; -$a->strings["Remove My Account"] = "Eliminar mi cuenta"; -$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Esto eliminará por completo tu cuenta. Una vez hecho no se puede deshacer."; -$a->strings["Please enter your password for verification:"] = "Por favor, introduce tu contraseña para la verificación:"; -$a->strings["Resubscribing to OStatus contacts"] = "Resubscribir a contactos de OStatus"; -$a->strings["Error"] = "error"; -$a->strings["Done"] = "hecho!"; -$a->strings["Keep this window open until done."] = "Mantén esta ventana abierta hasta que el proceso ha terminado."; -$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo las %3\$s de %2\$s"; -$a->strings["Tag removed"] = "Etiqueta eliminada"; -$a->strings["Remove Item Tag"] = "Eliminar etiqueta"; -$a->strings["Select a tag to remove: "] = "Selecciona una etiqueta para eliminar: "; -$a->strings["Remove"] = "Eliminar"; -$a->strings["Export account"] = "Exportar cuenta"; -$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "Exporta la información de tu cuenta y tus contactos. Úsalo para guardar una copia de seguridad de tu cuenta y/o moverla a otro servidor."; -$a->strings["Export all"] = "Exportar todo"; -$a->strings["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)"] = "Exporta la información de tu cuenta, contactos y lo demás en JSON. Puede ser un archivo bastante grande, por lo que llevará tiempo. Úsalo para hacer una copia de seguridad completa de tu cuenta (las fotos no se exportarán)"; -$a->strings["Export personal data"] = "Exportación de datos personales"; -$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "Excedido el número máximo de mensajes para %s. El mensaje no se ha enviado."; -$a->strings["Unable to check your home location."] = "Imposible comprobar tu servidor de inicio."; -$a->strings["No recipient."] = "Sin receptor."; -$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Si quieres que %s te responda, asegúrate de que la configuración de privacidad permite enviar correo privado a desconocidos."; -$a->strings["No potential page delegates located."] = "No se han localizado delegados potenciales de la página."; -$a->strings["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."] = "Los delegados tienen la capacidad de gestionar todos los aspectos de esta cuenta/página, excepto los ajustes básicos de la cuenta. Por favor, no delegues tu cuenta personal a nadie en quien no confíes completamente."; -$a->strings["Existing Page Managers"] = "Administradores actuales de la página"; -$a->strings["Existing Page Delegates"] = "Delegados actuales de la página"; -$a->strings["Potential Delegates"] = "Delegados potenciales"; -$a->strings["Add"] = "Añadir"; -$a->strings["No entries."] = "Sin entradas."; -$a->strings["Do you really want to delete this suggestion?"] = "¿Estás seguro de que quieres borrar esta sugerencia?"; -$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si el sitio web es nuevo inténtalo de nuevo dentro de 24 horas."; -$a->strings["Ignore/Hide"] = "Ignorar/Ocultar"; -$a->strings["Global Directory"] = "Directorio global"; -$a->strings["Find on this site"] = "Buscar en este sitio"; -$a->strings["Results for:"] = "Resultados para:"; -$a->strings["Site Directory"] = "Directorio del sitio"; -$a->strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas pueden que estén ocultas)."; -$a->strings["Files"] = "Archivos"; -$a->strings["This is Friendica, version"] = "Esto es Friendica, versión"; -$a->strings["running at web location"] = "ejecutándose en la dirección web"; -$a->strings["Please visit Friendi.ca to learn more about the Friendica project."] = "Visite Friendi.ca para aprender más sobre el proyecto Friendica, por favor."; -$a->strings["Bug reports and issues: please visit"] = "Reporte de fallos y problemas: por favor visita"; -$a->strings["the bugtracker at github"] = "aviso de fallas (bugs) en github"; -$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "Sugerencias, elogios, donaciones, etc. por favor manda un correo a Info arroba Friendica punto com"; -$a->strings["Installed plugins/addons/apps:"] = "Módulos/extensiones/aplicaciones instalados:"; -$a->strings["No installed plugins/addons/apps"] = "Módulos/extensiones/aplicaciones no instalados"; -$a->strings["On this server the following remote servers are blocked."] = "En este servidor los siguientes servidores remotos están bloqueados."; -$a->strings["Reason for the block"] = "Razón para el bloqueo"; -$a->strings["Friendica Communications Server - Setup"] = "Servidor de comunicación Friendica - Configuración"; -$a->strings["Could not connect to database."] = "No es posible la conexión con la base de datos."; -$a->strings["Could not create table."] = "No se puede crear la tabla."; -$a->strings["Your Friendica site database has been installed."] = "La base de datos de su sitio web de Friendica ha sido instalada."; +$a->strings["Post to Email"] = "Publicar mediante correo electrónico"; +$a->strings["Hide your profile details from unknown viewers?"] = "¿Quieres que los detalles de tu perfil permanezcan ocultos a los desconocidos?"; +$a->strings["Connectors disabled, since \"%s\" is enabled."] = "Conectores deshabilitados, ya que \"%s\" es habilitado."; +$a->strings["Visible to everybody"] = "Visible para cualquiera"; +$a->strings["show"] = "mostrar"; +$a->strings["don't show"] = "no mostrar"; +$a->strings["Close"] = "Cerrado"; +$a->strings["Welcome "] = "Bienvenido "; +$a->strings["Please upload a profile photo."] = "Por favor sube una foto para tu perfil."; +$a->strings["Welcome back "] = "Bienvenido de nuevo "; +$a->strings["Could not find any unarchived contact entry for this URL (%s)"] = ""; +$a->strings["The contact entries have been archived"] = ""; +$a->strings["Enter new password: "] = ""; +$a->strings["Post update version number has been set to %s."] = ""; +$a->strings["Check for pending update actions."] = ""; +$a->strings["Done."] = ""; +$a->strings["Execute pending post updates."] = ""; +$a->strings["All pending post updates are done."] = ""; +$a->strings["The database configuration file \"config/local.config.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = ""; $a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Puede que tengas que importar el archivo \"Database.sql\" manualmente usando phpmyadmin o mysql."; $a->strings["Please see the file \"INSTALL.txt\"."] = "Por favor, consulta el archivo \"INSTALL.txt\"."; -$a->strings["Database already in use."] = "Base de datos ya se encuentra en uso"; -$a->strings["System check"] = "Verificación del sistema"; -$a->strings["Check again"] = "Compruebalo de nuevo"; -$a->strings["Database connection"] = "Conexión con la base de datos"; -$a->strings["In order to install Friendica we need to know how to connect to your database."] = "Con el fin de poder instalar Friendica, necesitamos saber cómo conectar con tu base de datos."; -$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacta con tu proveedor de servicios o con el administrador de la página si tienes alguna pregunta sobre estas configuraciones."; -$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifiques a continuación debería existir ya. Si no es el caso, debes crearla antes de continuar."; -$a->strings["Database Server Name"] = "Nombre del servidor de la base de datos"; -$a->strings["Database Login Name"] = "Usuario de la base de datos"; -$a->strings["Database Login Password"] = "Contraseña de la base de datos"; -$a->strings["For security reasons the password must not be empty"] = "Por razones de seguridad la contraseña no debe estar vacía"; -$a->strings["Database Name"] = "Nombre de la base de datos"; -$a->strings["Site administrator email address"] = "Dirección de correo del administrador de la web"; -$a->strings["Your account email address must match this in order to use the web admin panel."] = "La dirección de correo de tu cuenta debe coincidir con esta para poder usar el panel de administración de la web."; -$a->strings["Please select a default timezone for your website"] = "Por favor, selecciona la zona horaria predeterminada para tu web"; -$a->strings["Site settings"] = "Configuración de la página web"; -$a->strings["System Language:"] = "Sistema de idioma:"; -$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Seleccione el idioma por defecto para su interfaz de instalación de Friendica y para enviar emails."; $a->strings["Could not find a command line version of PHP in the web server PATH."] = "No se pudo encontrar una versión de la línea de comandos de PHP en la ruta del servidor web."; -$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run the background processing. See 'Setup the poller'"] = "Si no tiene una versión de línea de comando de PHP instalada en el servidor, no podrá ejecutar el procesamiento en segundo plano. Vea «Configurar el sondeo»"; +$a->strings["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 'Setup the worker'"] = ""; $a->strings["PHP executable path"] = "Dirección al ejecutable PHP"; $a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introduce la ruta completa al ejecutable php. Puedes dejarlo en blanco y seguir con la instalación."; $a->strings["Command line PHP"] = "Línea de comandos PHP"; @@ -1123,371 +1746,261 @@ $a->strings["PHP register_argc_argv"] = "PHP register_argc_argv"; $a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de generar claves de cifrado"; $a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si se ejecuta en Windows, por favor consulta la sección \"http://www.php.net/manual/en/openssl.installation.php\"."; $a->strings["Generate encryption keys"] = "Generar claves de encriptación"; -$a->strings["libCurl PHP module"] = "Módulo PHP libCurl"; -$a->strings["GD graphics PHP module"] = "Módulo PHP gráficos GD"; -$a->strings["OpenSSL PHP module"] = "Módulo PHP OpenSSL"; -$a->strings["PDO or MySQLi PHP module"] = "Módulo PDO o MySQLi PHP"; -$a->strings["mb_string PHP module"] = "Módulo PHP mb_string"; -$a->strings["XML PHP module"] = "Módulo XML PHP"; -$a->strings["iconv module"] = "Módulo iconv"; -$a->strings["Apache mod_rewrite module"] = "Módulo mod_rewrite de Apache"; $a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: El módulo de Apache mod-rewrite es necesario pero no está instalado."; -$a->strings["Error: libCURL PHP module required but not installed."] = "Error: El módulo de PHP libcurl es necesario, pero no está instalado."; -$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: El módulo de de PHP gráficos GD con soporte JPEG es necesario, pero no está instalado."; -$a->strings["Error: openssl PHP module required but not installed."] = "Error: El módulo de PHP openssl es necesario, pero no está instalado."; +$a->strings["Apache mod_rewrite module"] = "Módulo mod_rewrite de Apache"; $a->strings["Error: PDO or MySQLi PHP module required but not installed."] = "Error: Módulo PDO o MySQLi PHP requerido pero no instalado."; $a->strings["Error: The MySQL driver for PDO is not installed."] = "Error: El dispositivo MySQL para PDO no está instalado."; -$a->strings["Error: mb_string PHP module required but not installed."] = "Error: El módulo de PHP mb_string es necesario, pero no está instalado."; -$a->strings["Error: iconv PHP module required but not installed."] = "Error: módulo iconv PHP requerido pero no instalado."; +$a->strings["PDO or MySQLi PHP module"] = "Módulo PDO o MySQLi PHP"; $a->strings["Error, XML PHP module required but not installed."] = "Error, módulo XML PHP requerido pero no instalado."; -$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El programa de instalación web necesita ser capaz de crear un archivo llamado \".htconfig.php\" en la carpeta principal de tu servidor web y es incapaz de hacerlo."; +$a->strings["XML PHP module"] = "Módulo XML PHP"; +$a->strings["libCurl PHP module"] = "Módulo PHP libCurl"; +$a->strings["Error: libCURL PHP module required but not installed."] = "Error: El módulo de PHP libcurl es necesario, pero no está instalado."; +$a->strings["GD graphics PHP module"] = "Módulo PHP gráficos GD"; +$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: El módulo de de PHP gráficos GD con soporte JPEG es necesario, pero no está instalado."; +$a->strings["OpenSSL PHP module"] = "Módulo PHP OpenSSL"; +$a->strings["Error: openssl PHP module required but not installed."] = "Error: El módulo de PHP openssl es necesario, pero no está instalado."; +$a->strings["mb_string PHP module"] = "Módulo PHP mb_string"; +$a->strings["Error: mb_string PHP module required but not installed."] = "Error: El módulo de PHP mb_string es necesario, pero no está instalado."; +$a->strings["iconv PHP module"] = ""; +$a->strings["Error: iconv PHP module required but not installed."] = "Error: módulo iconv PHP requerido pero no instalado."; +$a->strings["POSIX PHP module"] = ""; +$a->strings["Error: POSIX PHP module required but not installed."] = ""; +$a->strings["JSON PHP module"] = ""; +$a->strings["Error: JSON PHP module required but not installed."] = ""; +$a->strings["The web installer needs to be able to create a file called \"local.config.php\" in the \"config\" folder of your web server and it is unable to do so."] = ""; $a->strings["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."] = "Se trata a menudo de una configuración de permisos, pues el servidor web puede que no sea capaz de escribir archivos en la carpeta, aunque tú sí puedas."; -$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Al final obtendremos un texto que debes guardar en un archivo llamado .htconfig.php en la carpeta de Friendica."; +$a->strings["At the end of this procedure, we will give you a text to save in a file named local.config.php in your Friendica \"config\" folder."] = ""; $a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Como alternativa, puedes saltarte estos pasos y realizar una instalación manual. Por favor, consulta el archivo \"INSTALL.txt\" para las instrucciones."; -$a->strings[".htconfig.php is writable"] = ".htconfig.php tiene permiso de escritura"; +$a->strings["config/local.config.php is writable"] = ""; $a->strings["Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Friendica usa el motor de templates Smarty3 para renderizar su visualisacion web. Smarty3 compila templates hacia PHP para acelerar la velocidad del renderizar."; $a->strings["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."] = "Para poder guardar estos templates compilados, el servidor web necesita acceso de escritura en el directorio /view/smarty3/ en el árbol de raíz de la instalación friendica."; $a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor asegure que el usuario que utiliza el servidor web (ejemplo: www-data) tiene permisos de escritura en esta carpeta."; $a->strings["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."] = "Nota: como medida de seguridad deberia dar acceso de escritura solo a /view/smarty3 / → no al los archivos template (.tpl) que contiene."; $a->strings["view/smarty3 is writable"] = "Se puede escribir en /view/smarty3"; -$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "La reescritura de la dirección en .htaccess no funcionó. Revisa la configuración."; +$a->strings["Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist to .htaccess."] = ""; +$a->strings["Error message from Curl when fetching"] = ""; $a->strings["Url rewrite is working"] = "Reescribiendo la dirección..."; $a->strings["ImageMagick PHP extension is not installed"] = "No está instalada la extensión ImageMagick PHP"; $a->strings["ImageMagick PHP extension is installed"] = "ImageMagick PHP extension is installed"; $a->strings["ImageMagick supports GIF"] = "ImageMagick supporta GIF"; -$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El archivo de configuración de base de datos \".htconfig.php\" no se pudo escribir. Por favor, utiliza el texto adjunto para crear un archivo de configuración en la raíz de tu servidor web."; -$a->strings["

What next

"] = "

¿Ahora qué?

"; -$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Tendrás que configurar [manualmente] una tarea programada para el sondeo"; -$a->strings["Remove term"] = "Eliminar término"; -$a->strings["Only logged in users are permitted to perform a search."] = "Solo usuarios activos tienen permiso para ejecutar búsquedas."; -$a->strings["Too Many Requests"] = "Demasiadas consultas"; -$a->strings["Only one search per minute is permitted for not logged in users."] = "Se permite solo una búsqueda por minuto para usuarios no identificados."; -$a->strings["Items tagged with: %s"] = "Objetos taggeado con: %s"; -$a->strings["Results for: %s"] = "Resultados para: %s"; -$a->strings["Contact wasn't found or can't be unfollowed."] = "El contacto no fue encontrado o no puede ser dejado de seguir."; -$a->strings["Contact unfollowed"] = "Contacto no seguido"; -$a->strings["You aren't a friend of this contact."] = "Usted no es amigo de este contacto."; -$a->strings["Unfollowing is currently not supported by your network."] = "Dejar de Seguir no es compatible con su red actualmente."; -$a->strings["Disconnect/Unfollow"] = "Desconectar/Dejar de seguir"; -$a->strings["Theme settings updated."] = "Configuración de la apariencia actualizada."; -$a->strings["Site"] = "Sitio"; -$a->strings["Users"] = "Usuarios"; -$a->strings["Plugins"] = "Módulos"; -$a->strings["Themes"] = "Temas"; -$a->strings["Additional features"] = "Características adicionales"; -$a->strings["DB updates"] = "Actualizaciones de la Base de Datos"; -$a->strings["Inspect Queue"] = "Inspeccionar cola"; -$a->strings["Server Blocklist"] = "Lista de bloqueo del servidor"; -$a->strings["Federation Statistics"] = "Estadísticas de federación"; -$a->strings["Delete Item"] = "Eliminar Artículo"; -$a->strings["Logs"] = "Registros"; -$a->strings["View Logs"] = "Ver registro de depuración"; -$a->strings["probe address"] = "probar direccion"; -$a->strings["check webfinger"] = "Verificar webfinger"; -$a->strings["Plugin Features"] = "Características del módulo"; -$a->strings["diagnostics"] = "diagnosticos"; -$a->strings["User registrations waiting for confirmation"] = "Registro de usuarios esperando la confirmación"; -$a->strings["The blocked domain"] = "El dominio bloqueado"; -$a->strings["The reason why you blocked this domain."] = "La razón por la que bloqueó este dominio."; -$a->strings["Delete domain"] = "Eliminar dominio"; -$a->strings["Check to delete this entry from the blocklist"] = "Marca para eliminar esta entrada de la lista de bloqueo"; -$a->strings["Administration"] = "Administración"; -$a->strings["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."] = "Esta página se puede usar para definir una lista negra de servidores de la red federada a los que no se les permite interactuar con su nodo. Para todos los dominios ingresados, también debe dar una razón por la que ha bloqueado el servidor remoto."; -$a->strings["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."] = "La lista de servidores bloqueados estará disponible públicamente en la página /friendica para que los usuarios y las personas que investiguen los problemas de comunicación puedan encontrar fácilmente la razón.."; -$a->strings["Add new entry to block list"] = "Agregar nueva entrada a la lista de bloqueo"; -$a->strings["Server Domain"] = "Dominio del servidor"; -$a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "El dominio del nuevo servidor para añadir a la lista de bloqueo. No incluye el protocolo."; -$a->strings["Block reason"] = "Lazón del bloqueo"; -$a->strings["Add Entry"] = "Añadir Entrada"; -$a->strings["Save changes to the blocklist"] = "Guardar cambios en la lista de bloqueo"; -$a->strings["Current Entries in the Blocklist"] = "Entradas actuales en la lista de bloqueo"; -$a->strings["Delete entry from blocklist"] = "Eliminar entrada de la lista de bloqueo"; -$a->strings["Delete entry from blocklist?"] = "¿Eliminar entrada de la lista de bloqueo?"; -$a->strings["Server added to blocklist."] = "Servidor añadido a la lista de bloqueo."; -$a->strings["Site blocklist updated."] = "Lista de bloqueo del sitio actualizada."; -$a->strings["Delete this Item"] = "Eliminar este artículo"; -$a->strings["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."] = "En esta página, puede eliminar un artículo de su nodo. Si el artículo es una publicación de nivel superior, se eliminará todo el hilo."; -$a->strings["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."] = "Usted debe conocer el GUID del artículo. Puedes encontrarlo, por ejemplo. mirando la URL visible. La última parte de http://example.com/display/123456 es el GUID, aquí 123456."; -$a->strings["GUID"] = "GUID"; -$a->strings["The GUID of the item you want to delete."] = "El GUID del artículo que quiere eliminar."; -$a->strings["Item marked for deletion."] = "Artículo marcado para eliminación."; -$a->strings["unknown"] = "desconocido"; -$a->strings["This page offers you some numbers to the known part of the federated social network your Friendica node is part of. These numbers are not complete but only reflect the part of the network your node is aware of."] = "Esta pagina ofrece algunos datos sobre la red conocida a la que tu nodo friendica esta conectado. Estos nummeros no son completos respecto a las redes federadas, si no refleja los nodos esta instancia conoce. "; -$a->strings["The Auto Discovered Contact Directory feature is not enabled, it will improve the data displayed here."] = "El modulo directorio de contactos encontrados no esta habilitado, habilitado aumentara la cantidad de datos detallados aquí."; -$a->strings["Currently this node is aware of %d nodes from the following platforms:"] = "Actualmente este nodo reconoce %d nodos de las siguientes plataformas:"; -$a->strings["ID"] = "ID"; -$a->strings["Recipient Name"] = "Nombre del recipiente"; -$a->strings["Recipient Profile"] = "Perfil del recipiente"; -$a->strings["Created"] = "Creado"; -$a->strings["Last Tried"] = "Ultimo intento"; -$a->strings["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."] = "Esta pagina muestra la cola de mensajes salientes. Estos son publicaciones cuyo envío inicial fallo. Serán reenviados mas tarde y eventualmente eliminados si la entrega falla permanentemente. "; -$a->strings["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 here for a guide that may be helpful converting the table engines. You may also use the command php include/dbstructure.php toinnodb of your Friendica installation for an automatic conversion.
"] = "Su DB aún funciona con las tablas MyISAM. Debe cambiar el tipo de motor a InnoDB. Como Friendica usará las características únicas de InnoDB en el futuro, ¡debería cambiar esto! Vea aquípara ver una guía que puede ser útil para convertir los motores de tabla. También puede usar el comando php include/dbstructure.php toinnodb de si instalación de Friendica para una conversión automática.
"; -$a->strings["There is a new version of Friendica available for download. Your current version is %1\$s, upstream version is %2\$s"] = "Hay una nueva versión de Friendica disponible para descargar. Su versión actual es %1\$s, la versión ascendente es %2\$s"; -$a->strings["The database update failed. Please run \"php include/dbstructure.php update\" from the command line and have a look at the errors that might appear."] = "La actualización de la base de datos falló. Por favor, ejecute «actualización php include/dbstructure.php» desde la línea de comando y eche un vistazo a los errores que pueden aparecer."; -$a->strings["The worker was never executed. Please check your database structure!"] = "El trabajador nunca fue ejecutado. ¡Revise la estructura de su base de datos, por favor!"; -$a->strings["The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings."] = "La última ejecución del trabajador estaba en %s UTC. Esto es anterior a una hora. Revise tu configuración de crontab, por favor."; -$a->strings["Normal Account"] = "Cuenta normal"; -$a->strings["Automatic Follower Account"] = "Cuenta de Seguimiento Automático"; -$a->strings["Public Forum Account"] = "Cuenta del Foro Pública"; -$a->strings["Automatic Friend Account"] = "Cuenta de amistad automática"; -$a->strings["Blog Account"] = "Cuenta de blog"; -$a->strings["Private Forum Account"] = "Cuenta del Foro Privada"; -$a->strings["Message queues"] = "Cola de mensajes"; -$a->strings["Summary"] = "Resumen"; -$a->strings["Registered users"] = "Usuarios registrados"; -$a->strings["Pending registrations"] = "Pendientes de registro"; -$a->strings["Version"] = "Versión"; -$a->strings["Active plugins"] = "Módulos activos"; -$a->strings["Can not parse base url. Must have at least ://"] = "No se puede resolver la direccion URL base.\nDeberá tener al menos ://"; -$a->strings["Site settings updated."] = "Configuración de actualización."; -$a->strings["No special theme for mobile devices"] = "No hay tema especial para dispositivos móviles"; -$a->strings["No community page"] = "No hay pagina de comunidad"; -$a->strings["Public postings from users of this site"] = "Temas públicos de perfiles de este sitio."; -$a->strings["Global community page"] = "Pagina global de comunidad"; -$a->strings["Never"] = "Nunca"; -$a->strings["At post arrival"] = "A la llegada de una publicación"; -$a->strings["Disabled"] = "Deshabilitado"; -$a->strings["Users, Global Contacts"] = "Perfiles, contactos globales"; -$a->strings["Users, Global Contacts/fallback"] = "Perfiles, contactos globales/fallback"; -$a->strings["One month"] = "Un mes"; -$a->strings["Three months"] = "Tres meses"; -$a->strings["Half a year"] = "Medio año"; -$a->strings["One year"] = "Un año"; -$a->strings["Multi user instance"] = "Sesión multi usuario"; -$a->strings["Closed"] = "Cerrado"; -$a->strings["Requires approval"] = "Requiere aprobación"; -$a->strings["Open"] = "Abierto"; -$a->strings["No SSL policy, links will track page SSL state"] = "No existe una política de SSL, los vínculos harán un seguimiento del estado de SSL en la página"; -$a->strings["Force all links to use SSL"] = "Forzar todos los enlaces a utilizar SSL"; -$a->strings["Self-signed certificate, use SSL for local links only (discouraged)"] = "Certificación personal, usa SSL solo para enlaces locales (no recomendado)"; -$a->strings["Don't check"] = "No verificar"; -$a->strings["check the stable version"] = "verifique la versión estable"; -$a->strings["check the development version"] = "verifica la versión de desarrollo"; -$a->strings["Save Settings"] = "Guardar configuración"; -$a->strings["Republish users to directory"] = "Volver a publicar usuarios en el directorio"; -$a->strings["Registration"] = "Registro"; -$a->strings["File upload"] = "Subida de archivo"; -$a->strings["Policies"] = "Políticas"; -$a->strings["Auto Discovered Contact Directory"] = "Directorio de contactos descubierto automáticamente"; -$a->strings["Performance"] = "Rendimiento"; -$a->strings["Worker"] = "Trabajador (??)"; -$a->strings["Relocate - WARNING: advanced function. Could make this server unreachable."] = "Reubicación - ADVERTENCIA: función avanzada. Puede hacer a este servidor inaccesible. "; -$a->strings["Site name"] = "Nombre del sitio"; -$a->strings["Host name"] = "Nombre de dominio"; -$a->strings["Sender Email"] = "Dirección de origen de correo electrónico"; -$a->strings["The email address your server shall use to send notification emails from."] = "La dirección de correo electrónico que el servidor debería usar como dirección de envío."; -$a->strings["Banner/Logo"] = "Imagen/Logotipo"; -$a->strings["Shortcut icon"] = "Icono de atajo"; -$a->strings["Link to an icon that will be used for browsers."] = "Enlace hacia un icono que sera usado para el navegador."; -$a->strings["Touch icon"] = "Icono touch"; -$a->strings["Link to an icon that will be used for tablets and mobiles."] = "Enlace para un icono que sera usado para tablets y moviles."; -$a->strings["Additional Info"] = "Información adicional"; -$a->strings["For public servers: you can add additional information here that will be listed at %s/siteinfo."] = "Para servidores públicos: información adicional que sera publicado en %s/siteinfo."; -$a->strings["System language"] = "Idioma"; -$a->strings["System theme"] = "Tema"; -$a->strings["Default system theme - may be over-ridden by user profiles - change theme settings"] = "Tema por defecto del sistema, los usuarios podrán elegir el suyo propio en su configuración cambiar configuración del tema"; -$a->strings["Mobile system theme"] = "Tema de sistema móvil"; -$a->strings["Theme for mobile devices"] = "Tema para dispositivos móviles"; -$a->strings["SSL link policy"] = "Política de enlaces SSL"; -$a->strings["Determines whether generated links should be forced to use SSL"] = "Determina si los enlaces generados deben ser forzados a utilizar SSL"; -$a->strings["Force SSL"] = "Forzar SSL"; -$a->strings["Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops."] = "Forzar todos las consultas No-SSL a SSL. - ATENCIÓN: en algunos sistemas esto puede generar comportamiento recursivo interminable."; -$a->strings["Hide help entry from navigation menu"] = "Ocultar la ayuda en el menú de navegación"; -$a->strings["Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly."] = "Oculta la entrada de las páginas de Ayuda en el menú de navegación. Todavía se puede acceder escribiendo /ayuda directamente."; -$a->strings["Single user instance"] = "Sesión de usuario único"; -$a->strings["Make this instance multi-user or single-user for the named user"] = "Haz esta sesión multi-usuario o usuario único para el usuario"; -$a->strings["Maximum image size"] = "Tamaño máximo de la imagen"; -$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de las imágenes a subir. Por defecto es 0, que quiere decir que no hay límite."; -$a->strings["Maximum image length"] = "Largo máximo de imagen"; -$a->strings["Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits."] = "Longitud máxima en píxeles del lado más largo de las imágenes subidas. Por defecto es -1, que significa que no hay límites."; -$a->strings["JPEG image quality"] = "Calidad de imagen JPEG"; -$a->strings["Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality."] = "Los archivos JPEG subidos se guardarán con este ajuste de calidad [0-100]. Por defecto es 100, que es calidad máxima."; -$a->strings["Register policy"] = "Política de registros"; -$a->strings["Maximum Daily Registrations"] = "Registros Máximos Diarios"; -$a->strings["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."] = "Si anteriormente se ha permitido el registro, esto establece el número máximo de registro de nuevos usuarios aceptados por día. Si el registro se establece como cerrado, esta opción no tiene efecto."; -$a->strings["Register text"] = "Términos"; -$a->strings["Will be displayed prominently on the registration page."] = "Se mostrará en un lugar destacado en la página de registro."; -$a->strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días"; -$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "No gastará recursos del sistema creando sondeos a sitios externos para cuentas abandonadas. Introduce 0 para ningún límite temporal."; -$a->strings["Allowed friend domains"] = "Dominios amigos permitidos"; -$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios que están autorizados para establecer conexiones con este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio"; -$a->strings["Allowed email domains"] = "Dominios de correo permitidos"; -$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios que están autorizados en las direcciones de correo para registrarse en este sitio. Se aceptan comodines. Dejar en blanco para permitir cualquier dominio"; -$a->strings["Block public"] = "Bloqueo público"; -$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Marca para bloquear el acceso público a todas las páginas personales, aún siendo públicas, hasta que no hayas iniciado tu sesión."; -$a->strings["Force publish"] = "Forzar publicación"; -$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Marca para forzar que todos los perfiles de este sitio sean listados en el directorio del sitio."; -$a->strings["Global directory URL"] = "URL del directorio global."; -$a->strings["URL to the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL del directorio global. Si se deja este campo vacío, el directorio global sera completamente inaccesible para la instancia."; -$a->strings["Allow threaded items"] = "Permitir elementos en hilo"; -$a->strings["Allow infinite level threading for items on this site."] = "Permitir infinitos niveles de hilo para los elementos de este sitio."; -$a->strings["Private posts by default for new users"] = "Publicaciones privadas por defecto para usuarios nuevos"; -$a->strings["Set default post permissions for all new members to the default privacy group rather than public."] = "Ajusta los permisos de publicación por defecto a los miembros nuevos al grupo privado por defecto en vez del público."; -$a->strings["Don't include post content in email notifications"] = "No incluir el contenido del post en las notificaciones de correo electrónico"; -$a->strings["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."] = "No incluye el contenido de un mensaje/comentario/mensaje privado/etc. en las notificaciones de correo electrónico que se envían desde este sitio, como una medida de privacidad."; -$a->strings["Disallow public access to addons listed in the apps menu."] = "Deshabilitar acceso a addons listados en el menú de aplicaciones."; -$a->strings["Checking this box will restrict addons listed in the apps menu to members only."] = "Habilitando esta opción restringe el acceso a addons en el menú de aplicaciones a usuarios identificados."; -$a->strings["Don't embed private images in posts"] = "No agregar imágenes privados en las publicaciones"; -$a->strings["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."] = "No reemplazar imágenes privadas guardadas localmente en el servidor con imágenes integrados en los envíos. Esto significa que contactos que reciben publicaciones tendrán que autenticarse y cargar cada imagen, lo que puede demorar."; -$a->strings["Allow Users to set remote_self"] = "Permitir a los usuarios de definir perfiles_remotos"; -$a->strings["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."] = "Al habilitar esta opción, cada perfil tiene el permiso de marcar cualquiera de sus contactos como un perfil_remoto. Habilitar la opción perfil_remoto para un contacto genera que todas las publicaciones de este contacto seran re-publicado en el muro del perfil."; -$a->strings["Block multiple registrations"] = "Bloquear registros multiples"; -$a->strings["Disallow users to register additional accounts for use as pages."] = "Impedir que los usuarios registren cuentas adicionales para su uso como páginas."; -$a->strings["OpenID support"] = "Soporte OpenID"; -$a->strings["OpenID support for registration and logins."] = "Soporte OpenID para registros y accesos."; -$a->strings["Fullname check"] = "Comprobar Nombre completo"; -$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Fuerza a los usuarios a registrarse con un espacio entre su nombre y su apellido en el campo Nombre completo como medida anti-spam"; -$a->strings["Community Page Style"] = "Estilo de pagina de comunidad"; -$a->strings["Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."] = "Tipo de pagina de comunidad a visualizar. 'Comunidad global' muestra todas las publicaciones publicas de la red abierta federada que llega a este servidor."; -$a->strings["Posts per user on community page"] = "Publicaciones por usuario en la pagina de comunidad"; -$a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "El numero máximo de publicaciones por usuario que aparecerán en la pagina de comunidad. (No valido para 'comunidad global')"; -$a->strings["Enable OStatus support"] = "Permitir soporte OStatus"; -$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Proporcionar OStatus compatibilidad integrada (StatusNet, GNU Social, Quitter etc.). Todas las comunicaciones en OStatus son publicas así que eventuales advertencias serán ocasionalmente desplegadas."; -$a->strings["Only import OStatus threads from our contacts"] = "Solo importar OStatus temas de nuestros (?) contactos."; -$a->strings["Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system."] = "Normalmente importamos todo el contenido de los contactos de OStatus. Con esta opción solamente se guardan temas que fueron iniciados por contactos que son conocidos de la instancia.\n(nota de traducción, no se entiende muy bien la función en base al texto original)"; -$a->strings["OStatus support can only be enabled if threading is enabled."] = "Solo se puede habilitar el soporte OStatus si threading (comentarios en fila) se encuentra habilitado."; -$a->strings["Diaspora support can't be enabled because Friendica was installed into a sub directory."] = "El soporte para Diaspora* no se puede habilitar porque friendica se instalo en un directorio subalterno (sub directory)."; -$a->strings["Enable Diaspora support"] = "Habilitar el soporte para Diaspora*"; -$a->strings["Provide built-in Diaspora network compatibility."] = "Provee una compatibilidad con la red de Diaspora."; -$a->strings["Only allow Friendica contacts"] = "Permitir solo contactos de Friendica"; -$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Todos los contactos deben usar protocolos de Friendica. El resto de protocolos serán desactivados."; -$a->strings["Verify SSL"] = "Verificar SSL"; -$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Si quieres puedes activar la comprobación estricta de certificados. Esto significa que serás incapaz de conectar con ningún sitio que use certificados SSL autofirmados."; -$a->strings["Proxy user"] = "Usuario proxy"; -$a->strings["Proxy URL"] = "Dirección proxy"; -$a->strings["Network timeout"] = "Tiempo de espera de red"; -$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Usar 0 para dejarlo sin límites (no se recomienda)."; -$a->strings["Maximum Load Average"] = "Promedio de carga máxima"; -$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que la entrega y los procesos de sondeo sean retrasados - por defecto 50."; -$a->strings["Maximum Load Average (Frontend)"] = "Carga máxima promedio (frontend)"; -$a->strings["Maximum system load before the frontend quits service - default 50."] = "Carga máxima del sistema antes de que el frontend cancele el servicio - por defecto 50."; -$a->strings["Minimal Memory"] = "Memoria Mínima"; -$a->strings["Minimal free memory in MB for the poller. Needs access to /proc/meminfo - default 0 (deactivated)."] = "Memoria libre mínima en MB para la encuesta. Necesita acceso a /proc/meminfo - estándar 0 (desactivado)."; -$a->strings["Maximum table size for optimization"] = "Tamaño máximo de las tablas para la optimización."; -$a->strings["Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it."] = "Tamaño máximo de tablas (en MB) para la optimización automática - por defecto 100MB. Ingrese -1 para deshabilitar."; -$a->strings["Minimum level of fragmentation"] = "Nivel mínimo de fragmentación "; -$a->strings["Minimum fragmenation level to start the automatic optimization - default value is 30%."] = "Nivel mínimo de fragmentación para para comenzar la optimización - valor por defecto es 30%. "; -$a->strings["Periodical check of global contacts"] = "Verificación periódica de los contactos globales."; -$a->strings["If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers."] = "Habilitado los contactos globales son verificado periódicamente por datos faltantes o datos obsoletos como también por la vitalidad de los contactos y servidores."; -$a->strings["Days between requery"] = "Días entre búsquedas"; -$a->strings["Number of days after which a server is requeried for his contacts."] = "Cantidad de días hasta que un servidor es consultado por sus contactos."; -$a->strings["Discover contacts from other servers"] = "Descubrir contactos de otros servidores"; -$a->strings["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'."] = "Recoger periódicamente información sobre perfiles en otros servidores. Puede elegir entre 'usuarios': perfiles de un sistema remoto, 'contactos globales': contactos activos que son conocidos por el servidor. El fallback es para servidors redmatrix y instalaciones viejas de friendica en las que los contactos no estaban a disposición. El fallback aumenta la carga del servidor, asi que la configuración recomendada es 'usuarios, contactos globales'"; -$a->strings["Timeframe for fetching global contacts"] = "Intervalos de tiempo para revisar contactos globales."; -$a->strings["When the discovery is activated, this value defines the timeframe for the activity of the global contacts that are fetched from other servers."] = "Cuando la revisacion es activada, este valor define el intervalo de tiempo de la actividad de los contactos globales que son recolectados de los servidores. (?)"; -$a->strings["Search the local directory"] = "Buscar el directorio local"; -$a->strings["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."] = "Buscar en el directorio local en vez del directorio global. Cuando se busca localmente, cada busqueda sera efectuada en el directorio global en el background. Esto mejora los resultados de la busqueda cuando la misma es repetida."; -$a->strings["Publish server information"] = "Publicar información del servidor"; -$a->strings["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 the-federation.info for details."] = "Si habilitado, datos generales del servidor y estadisticas de uso serán publicados. Los datos contienen el nombre y la versión del servidor, numero de usuarios con perfiles públicos, cantidad de temas publicados y los protocolos y conectores activados. Vea the-federation.info por detalles."; -$a->strings["Check upstream version"] = "Verifique la versión ascendente"; -$a->strings["Enables checking for new Friendica versions at github. If there is a new version, you will be informed in the admin panel overview."] = "Permite verificar nuevas versiones de Friendica en Github. Si hay una nueva versión, se le informará en el panel de administración."; -$a->strings["Suppress Tags"] = "Suprimir tags"; -$a->strings["Suppress showing a list of hashtags at the end of the posting."] = "Suprimir la lista de tags al final de una publicación."; -$a->strings["Path to item cache"] = "Ruta a la caché del objeto"; -$a->strings["The item caches buffers generated bbcode and external images."] = "El buffer de cache de items generado para bbcodes e imágenes externas. "; -$a->strings["Cache duration in seconds"] = "Duración de la caché en segundos"; -$a->strings["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."] = "¿Por cuanto tiempo deberían los archives ser almacenados en el cache? Valor por defecto 86400 segundos (un día). Para deshabilita el item cache, ajuste el valor a -1."; -$a->strings["Maximum numbers of comments per post"] = "Numero máximo de respuestas por tema"; -$a->strings["How much comments should be shown for each post? Default value is 100."] = "¿Cuantos comentarios deberían ser mostrados por tema? Valor por defecto es 100."; -$a->strings["Temp path"] = "Ruta a los temporales"; -$a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "Si tiene un sistema restringido en donde el servidor web no puede acceder la dirección del sistema temp, ingrese una dirección alternativa aquí. "; -$a->strings["Base path to installation"] = "Ruta base para la instalación"; -$a->strings["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."] = "Si el sistema no puede detectar el acceso correcto a la instalación, ingrese la dirección correcta aquí. Esta configuración solo debería utilizarse si si usa un sistema restringido y enlaces simbolicos a su webroot."; -$a->strings["Disable picture proxy"] = "Deshabilitar proxy de imagen"; -$a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = "El proxy de imagen mejora el performance y privacidad. No debería ser usado en sistemas con poco ancho de banda."; -$a->strings["Only search in tags"] = "Solo buscar en tags"; -$a->strings["On large systems the text search can slow down the system extremely."] = "En sistemas grandes, la búsqueda de texto puede enlentecer el sistema gravemente."; -$a->strings["New base url"] = "Nueva URLbase"; -$a->strings["Change base url for this server. Sends relocate message to all Friendica and Diaspora* contacts of all users."] = "Cambiar la URL base para este servidor. Envía un mensaje de reubicación a todos los contactos de Friendica y Diaspora* de todos los usuarios."; -$a->strings["RINO Encryption"] = "Encryptado RINO"; -$a->strings["Encryption layer between nodes."] = "Capa de encryptación entre nodos."; -$a->strings["Maximum number of parallel workers"] = "Numero máximo de trabajos paralelos de fondo."; -$a->strings["On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4."] = "Ajustar a 2 en un servidor compartido (shared hosting).\nEn sistemas grandes valores como 10 son excelentes.\nValor por defecto es 4."; -$a->strings["Don't use 'proc_open' with the worker"] = "No use 'proc_open' junto al \"trabajador\"!"; -$a->strings["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 poller calls in your crontab."] = "Habilite esta función si el sistema no permite el uso de 'proc_open'. Esto suelo suceder en servidores compartidos (shared hosting). Si esta función se habilita se debería incrementar la frecuencia de llamadas del poller (poller calls) en la pestaña de trabajos cron. (¡en el hosting?)"; -$a->strings["Enable fastlane"] = "Habilitar ascenso rápido"; -$a->strings["When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority."] = "Cuando está habilitado, el mecanismo ascenso rápido inicia un trabajador adicional si los procesos de mayor prioridad son bloqueados por prcesos de menor prioridad."; -$a->strings["Enable frontend worker"] = "Habilitar trabajador de interfaz"; -$a->strings["When enabled the Worker process is triggered when backend access is performed (e.g. messages being delivered). 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."] = "Cuando está habilitado, el proceso del Trabajador se activa cuando se realiza el acceso a la parte trasera (ej. mensajes entregados). En sitios más pequeños es posible que desee llamar a %s/worker de forma regular a través de un trabajo cron externo. Solo debe habilitar esta opción si no puede utilizar los trabajos cron/scheduled en su servidor."; -$a->strings["Update has been marked successful"] = "La actualización se ha completado con éxito"; -$a->strings["Database structure update %s was successfully applied."] = "Actualización de base de datos %s fue aplicada con éxito."; -$a->strings["Executing of database structure update %s failed with error: %s"] = "El paso de actualización de la estructura de la base de datos %s fallo con el mensaje de error: %s"; -$a->strings["Executing %s failed with error: %s"] = "Paso %s fallo con el error: %s"; -$a->strings["Update %s was successfully applied."] = "Actualización %s aplicada con éxito."; -$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización %s no ha informado, se desconoce el estado."; -$a->strings["There was no additional update function %s that needed to be called."] = "No había función adicional de actualización %s que necesitaba ser requerida."; -$a->strings["No failed updates."] = "Actualizaciones sin fallos."; -$a->strings["Check database structure"] = "Revisar estructura de la base de datos"; -$a->strings["Failed Updates"] = "Actualizaciones fallidas"; -$a->strings["This does not include updates prior to 1139, which did not return a status."] = "No se incluyen las anteriores a la 1139, que no indicaban su estado."; -$a->strings["Mark success (if update was manually applied)"] = "Marcar como correcta (si actualizaste manualmente)"; -$a->strings["Attempt to execute this update step automatically"] = "Intentando ejecutar este paso automáticamente"; -$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tthe administrator of %2\$s has set up an account for you."] = "\n\t\t\tEstimado %1\$s,\n\t\t\t\tel administrador de %2\$s ha creado una cuenta para usted."; -$a->strings["\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\tThank you and welcome to %4\$s."] = "\n\t\t\tLos detalles de acceso son las siguientes:\n\n\t\t\tDirección del sitio:\t%1\$s\n\t\t\tNombre de la cuenta:\t\t%2\$s\n\t\t\tContraseña:\t\t%3\$s\n\n\t\t\tPodrá cambiar la contraseña desde la pagina de configuración de su cuenta después de acceder a la misma\n\t\t\ten.\n\n\t\t\tPor favor tome unos minutos para revisar las opciones demás de la cuenta en dicha pagina de configuración.\n\n\t\t\tTambién podrá agregar informaciones adicionales a su pagina de perfil predeterminado. \n\t\t\t(en la pagina \"Perfiles\") para que otras personas pueden encontrarlo fácilmente.\n\n\t\t\tRecomendamos que elija un nombre apropiado, agregando una imagen de perfil,\n\t\t\tagregando algunas palabras claves de la cuenta (muy útil para hacer nuevos amigos) - y \n\t\t\tquizás el país en donde vive; si no quiere ser mas especifico\n\t\t\tque eso.\n\n\t\t\tRespetamos absolutamente su derecho a la privacidad y ninguno de estos detalles es necesario.\n\t\t\tSi eres nuevo aquí y no conoces a nadie, estos detalles pueden ayudarte\n\t\t\tpara hacer nuevas e interesantes amistades.\n\n\t\t\tGracias y bienvenido a %4\$s."; -$a->strings["%s user blocked/unblocked"] = [ - 0 => "%s usuario bloqueado/desbloqueado", - 1 => "%s usuarios bloqueados/desbloqueados", +$a->strings["Could not connect to database."] = "No es posible la conexión con la base de datos."; +$a->strings["Database already in use."] = "Base de datos ya se encuentra en uso"; +$a->strings["Tuesday"] = "Martes"; +$a->strings["Wednesday"] = "Miércoles"; +$a->strings["Thursday"] = "Jueves"; +$a->strings["Friday"] = "Viernes"; +$a->strings["Saturday"] = "Sábado"; +$a->strings["January"] = "Enero"; +$a->strings["February"] = "Febrero"; +$a->strings["March"] = "Marzo"; +$a->strings["April"] = "Abril"; +$a->strings["May"] = "Mayo"; +$a->strings["June"] = "Junio"; +$a->strings["July"] = "Julio"; +$a->strings["August"] = "Agosto"; +$a->strings["September"] = "Septiembre"; +$a->strings["October"] = "Octubre"; +$a->strings["November"] = "Noviembre"; +$a->strings["December"] = "Diciembre"; +$a->strings["Mon"] = "Lun"; +$a->strings["Tue"] = "Mar"; +$a->strings["Wed"] = "Mie"; +$a->strings["Thu"] = "Jue"; +$a->strings["Fri"] = "Vie"; +$a->strings["Sat"] = "Sab"; +$a->strings["Sun"] = "Dom"; +$a->strings["Jan"] = "Ene"; +$a->strings["Feb"] = "Feb"; +$a->strings["Mar"] = "Mar"; +$a->strings["Apr"] = "Abr"; +$a->strings["Jul"] = "Jul"; +$a->strings["Aug"] = "Ago"; +$a->strings["Sep"] = "Sep"; +$a->strings["Oct"] = "Oct"; +$a->strings["Nov"] = "Nov"; +$a->strings["Dec"] = "Dec"; +$a->strings["poke"] = "tocar"; +$a->strings["poked"] = "tocó a"; +$a->strings["ping"] = "hacer \"ping\""; +$a->strings["pinged"] = "hizo \"ping\" a"; +$a->strings["prod"] = "empujar"; +$a->strings["prodded"] = "empujó a"; +$a->strings["slap"] = "abofetear"; +$a->strings["slapped"] = "abofeteó a"; +$a->strings["finger"] = "meter dedo"; +$a->strings["fingered"] = "le metió un dedo a"; +$a->strings["rebuff"] = "desairar"; +$a->strings["rebuffed"] = "desairó a"; +$a->strings["System"] = "Sistema"; +$a->strings["%s commented on %s's post"] = "%s comentó la publicación de %s"; +$a->strings["%s created a new post"] = "%s creó una nueva publicación"; +$a->strings["%s liked %s's post"] = "A %s le gusta la publicación de %s"; +$a->strings["%s disliked %s's post"] = "A %s no le gusta la publicación de %s"; +$a->strings["%s is attending %s's event"] = "%s está asistiendo al evento %s's"; +$a->strings["%s is not attending %s's event"] = "%s no está asistiendo al evento %s's"; +$a->strings["%s may attend %s's event"] = "%s podría asistir al evento %s's"; +$a->strings["%s is now friends with %s"] = "%s es ahora es amigo de %s"; +$a->strings["Friend Suggestion"] = "Propuestas de amistad"; +$a->strings["Friend/Connect Request"] = "Solicitud de Amistad/Conexión"; +$a->strings["New Follower"] = "Nuevo seguidor"; +$a->strings["Error 400 - Bad Request"] = ""; +$a->strings["Error 401 - Unauthorized"] = ""; +$a->strings["Error 403 - Forbidden"] = ""; +$a->strings["Error 404 - Not Found"] = ""; +$a->strings["Error 500 - Internal Server Error"] = ""; +$a->strings["Error 503 - Service Unavailable"] = ""; +$a->strings["The server cannot or will not process the request due to an apparent client error."] = ""; +$a->strings["Authentication is required and has failed or has not yet been provided."] = ""; +$a->strings["The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account."] = ""; +$a->strings["The requested resource could not be found but may be available in the future."] = ""; +$a->strings["An unexpected condition was encountered and no more specific message is suitable."] = ""; +$a->strings["The server is currently unavailable (because it is overloaded or down for maintenance). Please try again later."] = ""; +$a->strings["Update %s failed. See error logs."] = "Falló la actualización de %s. Mira los registros de errores."; +$a->strings["\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."] = ""; +$a->strings["The error message is\n[pre]%s[/pre]"] = "El mensaje de error es\n[pre]%s[/pre]"; +$a->strings["\n\t\t\t\t\tThe friendica database was successfully updated from %s to %s."] = ""; +$a->strings["Error decoding account file"] = "Error decodificando el archivo de cuenta"; +$a->strings["Error! No version data in file! This is not a Friendica account file?"] = "Error! No hay datos de versión en el archivo! ¿Es esto de una cuenta friendica? "; +$a->strings["User '%s' already exists on this server!"] = "La cuenta '%s' ya existe en este servidor!"; +$a->strings["User creation error"] = "Error al crear la cuenta"; +$a->strings["User profile creation error"] = "Error de creación del perfil de la cuenta"; +$a->strings["%d contact not imported"] = [ + 0 => "%d contactos no encontrado", + 1 => "%d contactos no importado", ]; -$a->strings["%s user deleted"] = [ - 0 => "%s usuario eliminado", - 1 => "%s usuarios eliminados", +$a->strings["Done. You can now login with your username and password"] = "Hecho. Ahora podes ingresar con tu nombre de cuenta y la contraseña."; +$a->strings["There are no tables on MyISAM."] = "No hay tablas en MyISAM"; +$a->strings["\nError %d occurred during database update:\n%s\n"] = "\nError %d ocurrido durante la actualización de la base de datos:\n%s\n"; +$a->strings["Errors encountered performing database changes: "] = "Errores encontrados al realizar cambios en la base de datos: "; +$a->strings["%s: Database update"] = ""; +$a->strings["%s: updating %s table."] = "%s: actualizando %s tabla."; +$a->strings["Legacy module file not found: %s"] = ""; +$a->strings["Drop Contact"] = "Eliminar contacto"; +$a->strings["Organisation"] = "Organización"; +$a->strings["News"] = "Noticias"; +$a->strings["Forum"] = "Foro"; +$a->strings["Connect URL missing."] = "Falta el conector URL."; +$a->strings["The contact could not be added. Please check the relevant network credentials in your Settings -> Social Networks page."] = ""; +$a->strings["This site is not configured to allow communications with other networks."] = "Este sitio no está configurado para permitir la comunicación con otras redes."; +$a->strings["No compatible communication protocols or feeds were discovered."] = "No se ha descubierto protocolos de comunicación o fuentes compatibles."; +$a->strings["The profile address specified does not provide adequate information."] = "La dirección del perfil especificado no proporciona información adecuada."; +$a->strings["An author or name was not found."] = "No se ha encontrado un autor o nombre."; +$a->strings["No browser URL could be matched to this address."] = "Ninguna dirección concuerda con la suministrada."; +$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Imposible identificar la dirección @ con algún protocolo conocido o dirección de contacto."; +$a->strings["Use mailto: in front of address to force email check."] = "Escribe mailto: al principio de la dirección para forzar el envío."; +$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "La dirección del perfil especificada pertenece a una red que ha sido deshabilitada en este sitio."; +$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Perfil limitado. Esta persona no podrá recibir notificaciones directas/personales tuyas."; +$a->strings["Unable to retrieve contact information."] = "No ha sido posible recibir la información del contacto."; +$a->strings["Starts:"] = "Inicio:"; +$a->strings["Finishes:"] = "Final:"; +$a->strings["all-day"] = "todo el día"; +$a->strings["Jun"] = "Jun"; +$a->strings["Sept"] = "Sept"; +$a->strings["No events to display"] = "No hay eventos a mostrar"; +$a->strings["l, F j"] = "l, F j"; +$a->strings["Edit event"] = "Editar evento"; +$a->strings["Duplicate event"] = "Duplicar evento"; +$a->strings["Delete event"] = "Borrar evento"; +$a->strings["link to source"] = "Enlace al original"; +$a->strings["D g:i A"] = "D g:i A"; +$a->strings["g:i A"] = "g:i A"; +$a->strings["Show map"] = "Mostrar mapa"; +$a->strings["Hide map"] = "Ocultar mapa"; +$a->strings["%s's birthday"] = "Cumpleaños de %s"; +$a->strings["Happy Birthday %s"] = "Feliz cumpleaños %s"; +$a->strings["Item filed"] = "Elemento archivado"; +$a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo eliminado con este nombre fue restablecido. Los permisos existentes pueden aplicarse a este grupo y a sus futuros miembros. Si esto no es lo que pretendes, por favor, crea otro grupo con un nombre diferente."; +$a->strings["Default privacy group for new contacts"] = "Grupo por defecto para nuevos contactos"; +$a->strings["Everybody"] = "Todo el mundo"; +$a->strings["edit"] = "editar"; +$a->strings["Edit group"] = "Editar grupo"; +$a->strings["Create a new group"] = "Crear un nuevo grupo"; +$a->strings["Edit groups"] = "Editar grupo"; +$a->strings["activity"] = "Actividad"; +$a->strings["comment"] = [ + 0 => "", + 1 => "Comentario", ]; -$a->strings["User '%s' deleted"] = "Usuario '%s' eliminado"; -$a->strings["User '%s' unblocked"] = "Usuario '%s' desbloqueado"; -$a->strings["User '%s' blocked"] = "Usuario '%s' bloqueado'"; -$a->strings["Register date"] = "Fecha de registro"; -$a->strings["Last login"] = "Último acceso"; -$a->strings["Last item"] = "Último elemento"; -$a->strings["Account"] = "Cuenta"; -$a->strings["Add User"] = "Agregar usuario"; -$a->strings["select all"] = "seleccionar todo"; -$a->strings["User registrations waiting for confirm"] = "Registro de usuarios esperando confirmación"; -$a->strings["User waiting for permanent deletion"] = "Usuario esperando anulación permanente."; -$a->strings["Request date"] = "Solicitud de fecha"; -$a->strings["No registrations."] = "Sin registros."; -$a->strings["Note from the user"] = "Nota para el usuario"; -$a->strings["Deny"] = "Denegado"; -$a->strings["Block"] = "Bloquear"; -$a->strings["Unblock"] = "Desbloquear"; -$a->strings["Site admin"] = "Administrador de la web"; -$a->strings["Account expired"] = "Cuenta caducada"; -$a->strings["New User"] = "Nuevo usuario"; -$a->strings["Deleted since"] = "Borrado desde"; -$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Los usuarios seleccionados serán eliminados!\\n\\n¡Todo lo que hayan publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?"; -$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡El usuario {0} será eliminado!\\n\\n¡Todo lo que haya publicado en este sitio se borrará para siempre!\\n\\n¿Estás seguro?"; -$a->strings["Name of the new user."] = "Nombre del nuevo usuario"; -$a->strings["Nickname"] = "Apodo"; -$a->strings["Nickname of the new user."] = "Apodo del nuevo perfil."; -$a->strings["Email address of the new user."] = "Dirección de correo del nuevo perfil."; -$a->strings["Plugin %s disabled."] = "Módulo %s deshabilitado."; -$a->strings["Plugin %s enabled."] = "Módulo %s habilitado."; -$a->strings["Disable"] = "Desactivado"; -$a->strings["Enable"] = "Activado"; -$a->strings["Toggle"] = "Activar"; -$a->strings["Author: "] = "Autor:"; -$a->strings["Maintainer: "] = "Mantenedor: "; -$a->strings["Reload active plugins"] = "Recargar plugins activos"; -$a->strings["There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s"] = "No ay plugins habilitados en este nodo. Encontrara los repositorios oficiales de plugins en %1\$s y posiblemente encontrara mas plugins interesantes en el registro abierto de plugins aquí %2\$s ."; -$a->strings["No themes found."] = "No se encontraron temas."; -$a->strings["Screenshot"] = "Captura de pantalla"; -$a->strings["Reload active themes"] = "Recargar interfaces de usuario activos"; -$a->strings["No themes found on the system. They should be paced in %1\$s"] = "No se encuentran interfaces en el sistema. Deberían estar localizados (paced) en %1\$s"; -$a->strings["[Experimental]"] = "[Experimental]"; -$a->strings["[Unsupported]"] = "[Sin soporte]"; -$a->strings["Log settings updated."] = "Configuración de registro actualizada."; -$a->strings["PHP log currently enabled."] = "Registro PHP actualmente disponible."; -$a->strings["PHP log currently disabled."] = "Registro PHP actualmente deshabilitado."; -$a->strings["Clear"] = "Limpiar"; -$a->strings["Enable Debugging"] = "Habilitar debugging"; -$a->strings["Log file"] = "Archivo de registro"; -$a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Debes tener permiso de escritura en el servidor. Relacionado con tu directorio de inicio de Friendica."; -$a->strings["Log level"] = "Nivel de registro"; -$a->strings["PHP logging"] = "PHP logging"; -$a->strings["To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "Para habilitar la documentación de los errores PHP y las advertencias se puede agregar lo siguiente al archivo .htconfig.php de la instalación (ftp). La dirección definido en el 'error_log' es relativo al directorio friendica principal (top-level directory) y debe de ser habilitado para la escritura por el servidor web. La opción '1' para 'log_errors' y 'display_errors' es para habilitar estas opciones, '0' para deshabilitarlo."; -$a->strings["Off"] = "Apagado"; -$a->strings["On"] = "Encendido"; -$a->strings["Lock feature %s"] = "Trancar opción %s "; -$a->strings["Manage Additional Features"] = "Administrar opciones adicionales"; +$a->strings["post"] = "Publicación"; +$a->strings["Content warning: %s"] = ""; +$a->strings["bytes"] = "bytes"; +$a->strings["View on separate page"] = "Ver en pagina aparte"; +$a->strings["view on separate page"] = "ver en pagina aparte"; +$a->strings["[no subject]"] = "[sin asunto]"; +$a->strings["Requested account is not available."] = "La cuenta solicitada no está disponible."; +$a->strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; +$a->strings["Edit profile"] = "Editar perfil"; +$a->strings["Atom feed"] = "Atom feed"; +$a->strings["Manage/edit profiles"] = "Administrar/editar perfiles"; +$a->strings["XMPP:"] = "XMPP:"; +$a->strings["g A l F d"] = "g A l F d"; +$a->strings["F d"] = "F d"; +$a->strings["[today]"] = "[hoy]"; +$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños"; +$a->strings["Birthdays this week:"] = "Cumpleaños esta semana:"; +$a->strings["[No description]"] = "[Sin descripción]"; +$a->strings["Event Reminders"] = "Recordatorios de eventos"; +$a->strings["Upcoming events the next 7 days:"] = ""; +$a->strings["Member since:"] = ""; +$a->strings["j F, Y"] = "j F, Y"; +$a->strings["j F"] = "j F"; +$a->strings["Birthday:"] = "Fecha de nacimiento:"; +$a->strings["Age:"] = "Edad:"; +$a->strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; +$a->strings["Religion:"] = "Religión:"; +$a->strings["Hobbies/Interests:"] = "Aficiones/Intereses:"; +$a->strings["Contact information and Social Networks:"] = "Información de contacto y Redes sociales:"; +$a->strings["Musical interests:"] = "Intereses musicales:"; +$a->strings["Books, literature:"] = "Libros, literatura:"; +$a->strings["Television:"] = "Televisión:"; +$a->strings["Film/dance/culture/entertainment:"] = "Películas/baile/cultura/entretenimiento:"; +$a->strings["Love/Romance:"] = "Amor/Romance:"; +$a->strings["Work/employment:"] = "Trabajo/ocupación:"; +$a->strings["School/education:"] = "Escuela/estudios:"; +$a->strings["Forums:"] = "Foros:"; +$a->strings["Profile Details"] = "Detalles del Perfil"; +$a->strings["Only You Can See This"] = "Únicamente tú puedes ver esto"; +$a->strings["Tips for New Members"] = "Consejos para nuevos miembros"; +$a->strings["OpenWebAuth: %1\$s welcomes %2\$s"] = ""; +$a->strings["Login failed"] = ""; +$a->strings["Not enough information to authenticate"] = ""; +$a->strings["Password can't be empty"] = ""; +$a->strings["Empty passwords are not allowed."] = ""; +$a->strings["The new password has been exposed in a public data dump, please choose another."] = ""; +$a->strings["The password can't contain accentuated letters, white spaces or colons (:)"] = ""; +$a->strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no ha sido modificada."; +$a->strings["An invitation is required."] = "Se necesita invitación."; +$a->strings["Invitation could not be verified."] = "No se puede verificar la invitación."; +$a->strings["Invalid OpenID url"] = "Dirección OpenID no válida"; +$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Se ha encontrado un problema para acceder con el OpenID que has escrito. Verifica que lo hayas escrito correctamente."; +$a->strings["The error message was:"] = "El mensaje del error fue:"; +$a->strings["Please enter the required information."] = "Por favor, introduce la información necesaria."; +$a->strings["system.username_min_length (%s) and system.username_max_length (%s) are excluding each other, swapping values."] = ""; +$a->strings["Username should be at least %s character."] = [ + 0 => "", + 1 => "", +]; +$a->strings["Username should be at most %s character."] = [ + 0 => "", + 1 => "", +]; +$a->strings["That doesn't appear to be your full (First Last) name."] = "No parece que ese sea tu nombre completo."; +$a->strings["Your email domain is not among those allowed on this site."] = "Tu dominio de correo no se encuentra entre los permitidos en este sitio."; +$a->strings["Not a valid email address."] = "No es una dirección de correo electrónico válida."; +$a->strings["The nickname was blocked from registration by the nodes admin."] = ""; +$a->strings["Cannot use that email."] = "No se puede utilizar este correo electrónico."; +$a->strings["Your nickname can only contain a-z, 0-9 and _."] = ""; +$a->strings["Nickname is already registered. Please choose another."] = "Apodo ya registrado. Por favor, elije otro."; +$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERROR GRAVE: La generación de claves de seguridad ha fallado."; +$a->strings["An error occurred during registration. Please try again."] = "Se produjo un error durante el registro. Por favor, inténtalo de nuevo."; +$a->strings["default"] = "predeterminado"; +$a->strings["An error occurred creating your default profile. Please try again."] = "Error al crear tu perfil predeterminado. Por favor, inténtalo de nuevo."; +$a->strings["An error occurred creating your self contact. Please try again."] = ""; +$a->strings["An error occurred creating your default contact group. Please try again."] = ""; +$a->strings["\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"] = ""; +$a->strings["Registration at %s"] = "Registro en %s"; +$a->strings["\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"] = ""; +$a->strings["\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."] = ""; $a->strings["%d contact edited."] = [ 0 => "%d contacto editado.", 1 => "%d contacts edited.", @@ -1508,18 +2021,22 @@ $a->strings["You are mutual friends with %s"] = "Ahora tienes una amistad mutua $a->strings["You are sharing with %s"] = "Estás compartiendo con %s"; $a->strings["%s is sharing with you"] = "%s está compartiendo contigo"; $a->strings["Private communications are not available for this contact."] = "Las comunicaciones privadas no está disponibles para este contacto."; +$a->strings["Never"] = "Nunca"; $a->strings["(Update was successful)"] = "(La actualización se ha completado)"; $a->strings["(Update was not successful)"] = "(La actualización no se ha completado)"; $a->strings["Suggest friends"] = "Sugerir amigos"; $a->strings["Network type: %s"] = "Tipo de red: %s"; $a->strings["Communications lost with this contact!"] = "¡Se ha perdido la comunicación con este contacto!"; $a->strings["Fetch further information for feeds"] = "Recaudar informacion complementaria de los feeds"; +$a->strings["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."] = ""; $a->strings["Fetch information"] = "Recaudar informacion"; +$a->strings["Fetch keywords"] = ""; $a->strings["Fetch information and keywords"] = "Recaudar informacion y palabras claves"; -$a->strings["Contact"] = "Contacto"; $a->strings["Profile Visibility"] = "Visibilidad del Perfil"; -$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, selecciona el perfil que quieras mostrar a %s cuando esté viendo tu perfil de forma segura."; $a->strings["Contact Information / Notes"] = "Información del Contacto / Notas"; +$a->strings["Contact Settings"] = "Ajustes del contacto"; +$a->strings["Contact"] = "Contacto"; +$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, selecciona el perfil que quieras mostrar a %s cuando esté viendo tu perfil de forma segura."; $a->strings["Their personal note"] = "Su nota personal"; $a->strings["Edit contact notes"] = "Editar notas del contacto"; $a->strings["Block/Unblock contact"] = "Boquear/Desbloquear contacto"; @@ -1533,13 +2050,13 @@ $a->strings["Unignore"] = "Quitar de Ignorados"; $a->strings["Currently blocked"] = "Bloqueados"; $a->strings["Currently ignored"] = "Ignorados"; $a->strings["Currently archived"] = "Archivados"; +$a->strings["Awaiting connection acknowledge"] = ""; $a->strings["Replies/likes to your public posts may still be visible"] = "Los comentarios o \"me gusta\" en tus publicaciones públicas todavía pueden ser visibles."; $a->strings["Notification for new posts"] = "Notificacion de nuevos temas."; $a->strings["Send a notification of every new post of this contact"] = "Enviar una notificacion por nuevos temas de este contacto."; $a->strings["Blacklisted keywords"] = "Lista negra de palabras"; $a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "Lista separada por comas de palabras claves que no deberian ser convertido en #hashtags cuando \"Recaudar informacion y palabras claves\" es seleccionado"; $a->strings["Actions"] = "Acciones"; -$a->strings["Contact Settings"] = "Ajustes del contacto"; $a->strings["Suggestions"] = "Sugerencias"; $a->strings["Suggest potential friends"] = "Amistades potenciales sugeridas"; $a->strings["Show all contacts"] = "Mostrar todos los contactos"; @@ -1553,466 +2070,78 @@ $a->strings["Archived"] = "Archivados"; $a->strings["Only show archived contacts"] = "Mostrar solo contactos archivados"; $a->strings["Hidden"] = "Ocultos"; $a->strings["Only show hidden contacts"] = "Mostrar solo contactos ocultos"; +$a->strings["Organize your contact groups"] = ""; $a->strings["Search your contacts"] = "Buscar en tus contactos"; -$a->strings["Update"] = "Actualizar"; $a->strings["Archive"] = "Archivo"; $a->strings["Unarchive"] = "Sin archivar"; $a->strings["Batch Actions"] = "Accones en lote"; +$a->strings["Conversations started by this contact"] = ""; +$a->strings["Posts and Comments"] = ""; $a->strings["View all contacts"] = "Ver todos los contactos"; $a->strings["View all common friends"] = "Ver todos los conocidos en común "; $a->strings["Advanced Contact Settings"] = "Configuración avanzada"; $a->strings["Mutual Friendship"] = "Amistad recíproca"; $a->strings["is a fan of yours"] = "es tu fan"; $a->strings["you are a fan of"] = "eres fan de"; +$a->strings["Edit contact"] = "Modificar contacto"; $a->strings["Toggle Blocked status"] = "Cambiar bloqueados"; $a->strings["Toggle Ignored status"] = "Cambiar ignorados"; $a->strings["Toggle Archive status"] = "Cambiar archivados"; $a->strings["Delete contact"] = "Eliminar contacto"; -$a->strings["Profile not found."] = "Perfil no encontrado."; -$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Esto puede ocurrir a veces si la conexión fue solicitada por ambas personas y ya hubiera sido aprobada."; -$a->strings["Response from remote site was not understood."] = "La respuesta desde el sitio remoto no ha sido entendida."; -$a->strings["Unexpected response from remote site: "] = "Respuesta inesperada desde el sitio remoto: "; -$a->strings["Confirmation completed successfully."] = "Confirmación completada con éxito."; -$a->strings["Remote site reported: "] = "El sito remoto informó: "; -$a->strings["Temporary failure. Please wait and try again."] = "Error temporal. Por favor, espere y vuelva a intentarlo."; -$a->strings["Introduction failed or was revoked."] = "La presentación ha fallado o ha sido anulada."; -$a->strings["Unable to set contact photo."] = "Imposible establecer la foto del contacto."; -$a->strings["No user record found for '%s' "] = "No se ha encontrado a ningún '%s' "; -$a->strings["Our site encryption key is apparently messed up."] = "Nuestra clave de cifrado del sitio es aparentemente un lío."; -$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "Se ha proporcionado una dirección vacía o no hemos podido descifrarla."; -$a->strings["Contact record was not found for you on our site."] = "El contacto no se ha encontrado en nuestra base de datos."; -$a->strings["Site public key not available in contact record for URL %s."] = "La clave pública del sitio no está disponible en los datos del contacto para %s."; -$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La identificación proporcionada por el sistema es un duplicado de nuestro sistema. Debería funcionar si lo intentas de nuevo."; -$a->strings["Unable to set your contact credentials on our system."] = "No se puede establecer las credenciales de tu contacto en nuestro sistema."; -$a->strings["Unable to update your contact profile details on our system"] = "No se puede actualizar los datos de tu perfil de contacto en nuestro sistema"; -$a->strings["%1\$s has joined %2\$s"] = "%1\$s se ha unido a %2\$s"; -$a->strings["People Search - %s"] = "Buscar perfiles - %s"; -$a->strings["Forum Search - %s"] = "Búsqueda de foro - %s"; -$a->strings["Item has been removed."] = "El elemento ha sido eliminado."; -$a->strings["Event can not end before it has started."] = "Un evento no puede terminar antes de su comienzo."; -$a->strings["Event title and start time are required."] = "Título del evento y hora de inicio requeridas."; -$a->strings["Create New Event"] = "Crea un evento nuevo"; -$a->strings["Event details"] = "Detalles del evento"; -$a->strings["Starting date and Title are required."] = "Se requiere fecha de comienzo y titulo"; -$a->strings["Event Starts:"] = "Inicio del evento:"; -$a->strings["Required"] = "Obligatorio"; -$a->strings["Finish date/time is not known or not relevant"] = "La fecha/hora de finalización no es conocida o es irrelevante."; -$a->strings["Event Finishes:"] = "Finalización del evento:"; -$a->strings["Adjust for viewer timezone"] = "Ajuste de zona horaria"; -$a->strings["Description:"] = "Descripción:"; -$a->strings["Title:"] = "Título:"; -$a->strings["Share this event"] = "Comparte este evento"; -$a->strings["Failed to remove event"] = "Error al eliminar el evento"; -$a->strings["Event removed"] = "Evento eliminado"; -$a->strings["Friend suggestion sent."] = "Solicitud de amistad enviada."; -$a->strings["Suggest Friends"] = "Sugerencias de amistad"; -$a->strings["Suggest a friend for %s"] = "Recomienda un amigo a %s"; -$a->strings["Unable to locate original post."] = "No se puede encontrar la publicación original."; -$a->strings["Empty post discarded."] = "Publicación vacía descartada."; -$a->strings["System error. Post not saved."] = "Error del sistema. Mensaje no guardado."; -$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "Este mensaje te lo ha enviado %s, miembro de la red social Friendica."; -$a->strings["You may visit them online at %s"] = "Los puedes visitar en línea en %s"; -$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Por favor contacta con el remitente respondiendo a este mensaje si no deseas recibir estos mensajes."; -$a->strings["%s posted an update."] = "%s ha publicado una actualización."; -$a->strings["Mood"] = "Ánimo"; -$a->strings["Set your current mood and tell your friends"] = "Coloca tu ánimo actual y cuéntaselo a tus amigos"; -$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = [ - 0 => "Aviso: Este grupo contiene %s miembro de una red que no permite mensajes públicos.", - 1 => "Aviso: Este grupo contiene %s miembros de una red que no permite mensajes públicos.", -]; -$a->strings["Messages in this group won't be send to these receivers."] = "Los mensajes de este grupo no se enviarán a estos receptores."; -$a->strings["No such group"] = "Ningún grupo"; -$a->strings["Group: %s"] = "Grupo: %s"; -$a->strings["Private messages to this person are at risk of public disclosure."] = "Los mensajes privados a esta persona corren el riesgo de ser mostrados públicamente."; -$a->strings["Invalid contact."] = "Contacto erróneo."; -$a->strings["Commented Order"] = "Orden de comentarios"; -$a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentarios"; -$a->strings["Posted Order"] = "Orden de publicación"; -$a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación"; -$a->strings["Posts that mention or involve you"] = "Publicaciones que te mencionan o involucran"; -$a->strings["New"] = "Nuevo"; -$a->strings["Activity Stream - by date"] = "Corriente de actividad por fecha"; -$a->strings["Shared Links"] = "Enlaces compartidos"; -$a->strings["Interesting Links"] = "Enlaces interesantes"; -$a->strings["Starred"] = "Favoritos"; -$a->strings["Favourite Posts"] = "Publicaciones favoritas"; -$a->strings["Subscribing to OStatus contacts"] = "Subscribir a los contactos de OStatus"; -$a->strings["No contact provided."] = "Sin suministro de datos de contacto."; -$a->strings["Couldn't fetch information for contact."] = "No se ha podido conseguir la información del contacto."; -$a->strings["Couldn't fetch friends for contact."] = "No se ha podido conseguir datos de amigos para contactar."; -$a->strings["success"] = "exito!"; -$a->strings["failed"] = "fallido!"; -$a->strings["ignored"] = "ignorado"; -$a->strings["Recent Photos"] = "Fotos recientes"; -$a->strings["Upload New Photos"] = "Subir nuevas fotos"; -$a->strings["everybody"] = "todos"; -$a->strings["Contact information unavailable"] = "Información del contacto no disponible"; -$a->strings["Album not found."] = "Álbum no encontrado."; -$a->strings["Delete Album"] = "Eliminar álbum"; -$a->strings["Do you really want to delete this photo album and all its photos?"] = "¿Estás seguro de quieres borrar este álbum y todas sus fotos?"; -$a->strings["Delete Photo"] = "Eliminar foto"; -$a->strings["Do you really want to delete this photo?"] = "¿Estás seguro de que quieres borrar esta foto?"; -$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s fue etiquetado en %2\$s por %3\$s"; -$a->strings["a photo"] = "una foto"; -$a->strings["Image exceeds size limit of %s"] = "La imagen excede el limite de %s"; -$a->strings["Image file is empty."] = "El archivo de imagen está vacío."; -$a->strings["Unable to process image."] = "Imposible procesar la imagen."; -$a->strings["Image upload failed."] = "Error al subir la imagen."; -$a->strings["No photos selected"] = "Ninguna foto seleccionada"; -$a->strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; -$a->strings["Upload Photos"] = "Subir fotos"; -$a->strings["New album name: "] = "Nombre del nuevo álbum: "; -$a->strings["or existing album name: "] = "o nombre de un álbum existente: "; -$a->strings["Do not show a status post for this upload"] = "No actualizar tu estado con este envío"; -$a->strings["Show to Groups"] = "Mostrar a los Grupos"; -$a->strings["Show to Contacts"] = "Mostrar a los Contactos"; -$a->strings["Private Photo"] = "Foto Privada"; -$a->strings["Public Photo"] = "Foto Pública"; -$a->strings["Edit Album"] = "Modificar álbum"; -$a->strings["Show Newest First"] = "Mostrar más nuevos primero"; -$a->strings["Show Oldest First"] = "Mostrar más antiguos primero"; -$a->strings["View Photo"] = "Ver foto"; -$a->strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; -$a->strings["Photo not available"] = "Foto no disponible"; -$a->strings["View photo"] = "Ver foto"; -$a->strings["Edit photo"] = "Modificar foto"; -$a->strings["Use as profile photo"] = "Usar como foto del perfil"; -$a->strings["Private Message"] = "Mensaje privado"; -$a->strings["View Full Size"] = "Ver a tamaño completo"; -$a->strings["Tags: "] = "Etiquetas: "; -$a->strings["[Remove any tag]"] = "[Borrar todas las etiquetas]"; -$a->strings["New album name"] = "Nuevo nombre del álbum"; -$a->strings["Caption"] = "Título"; -$a->strings["Add a Tag"] = "Añadir una etiqueta"; -$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Ejemplo: @juan, @Barbara_Ruiz, @julia@example.com, #California, #camping"; -$a->strings["Do not rotate"] = "No rotar"; -$a->strings["Rotate CW (right)"] = "Girar a la derecha"; -$a->strings["Rotate CCW (left)"] = "Girar a la izquierda"; -$a->strings["Private photo"] = "Foto privada"; -$a->strings["Public photo"] = "Foto pública"; -$a->strings["I like this (toggle)"] = "Me gusta esto (cambiar)"; -$a->strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; -$a->strings["This is you"] = "Este eres tú"; -$a->strings["Comment"] = "Comentar"; -$a->strings["Map"] = "Mapa"; -$a->strings["View Album"] = "Ver Álbum"; -$a->strings["{0} wants to be your friend"] = "{0} quiere ser tu amigo"; -$a->strings["{0} sent you a message"] = "{0} te ha enviado un mensaje"; -$a->strings["{0} requested registration"] = "{0} solicitudes de registro"; -$a->strings["Poke/Prod"] = "Toque/Empujón"; -$a->strings["poke, prod or do other things to somebody"] = "da un toque, empujón o similar a alguien"; -$a->strings["Recipient"] = "Receptor"; -$a->strings["Choose what you wish to do to recipient"] = "Elige qué desea hacer con el receptor"; -$a->strings["Make this post private"] = "Hacer esta publicación privada"; -$a->strings["Image uploaded but image cropping failed."] = "Imagen recibida, pero ha fallado al recortarla."; -$a->strings["Image size reduction [%s] failed."] = "Ha fallado la reducción de las dimensiones de la imagen [%s]."; -$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recarga la página o limpia la caché del navegador si la foto nueva no aparece inmediatamente."; -$a->strings["Unable to process image"] = "Imposible procesar la imagen"; -$a->strings["Upload File:"] = "Subir archivo:"; -$a->strings["Select a profile:"] = "Elige un perfil:"; -$a->strings["Upload"] = "Subir"; -$a->strings["or"] = "o"; -$a->strings["skip this step"] = "saltar este paso"; -$a->strings["select a photo from your photo albums"] = "elige una foto de tus álbumes"; -$a->strings["Crop Image"] = "Recortar imagen"; -$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor, ajusta el recorte de la imagen para optimizarla."; -$a->strings["Done Editing"] = "Editado"; -$a->strings["Image uploaded successfully."] = "Imagen subida con éxito."; -$a->strings["Profile deleted."] = "Perfil eliminado."; -$a->strings["Profile-"] = "Perfil-"; -$a->strings["New profile created."] = "Nuevo perfil creado."; -$a->strings["Profile unavailable to clone."] = "Imposible duplicar el perfil."; -$a->strings["Profile Name is required."] = "Se necesita un nombre de perfil."; -$a->strings["Marital Status"] = "Estado civil"; -$a->strings["Romantic Partner"] = "Pareja sentimental"; -$a->strings["Work/Employment"] = "Trabajo/estudios"; -$a->strings["Religion"] = "Religión"; -$a->strings["Political Views"] = "Preferencias políticas"; -$a->strings["Gender"] = "Género"; -$a->strings["Sexual Preference"] = "Orientación sexual"; -$a->strings["XMPP"] = "XMPP"; -$a->strings["Homepage"] = "Página de inicio"; -$a->strings["Interests"] = "Intereses"; -$a->strings["Address"] = "Dirección"; -$a->strings["Location"] = "Ubicación"; -$a->strings["Profile updated."] = "Perfil actualizado."; -$a->strings[" and "] = " y "; -$a->strings["public profile"] = "perfil público"; -$a->strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s cambió su %2\$s a “%3\$s”"; -$a->strings[" - Visit %1\$s's %2\$s"] = " - Visita %1\$s's %2\$s"; -$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s tiene una actualización %2\$s, cambiando %3\$s."; -$a->strings["Hide contacts and friends:"] = "Ocultar contactos y amigos"; -$a->strings["Hide your contact/friend list from viewers of this profile?"] = "¿Ocultar tu lista de contactos/amigos en este perfil?"; -$a->strings["Show more profile fields:"] = "Mostrar mas campos del perfil:"; -$a->strings["Profile Actions"] = "Acciones de perfil"; -$a->strings["Edit Profile Details"] = "Editar detalles de tu perfil"; -$a->strings["Change Profile Photo"] = "Cambiar imagen del Perfil"; -$a->strings["View this profile"] = "Ver este perfil"; -$a->strings["Create a new profile using these settings"] = "¿Crear un nuevo perfil con esta configuración?"; -$a->strings["Clone this profile"] = "Clonar este perfil"; -$a->strings["Delete this profile"] = "Eliminar este perfil"; -$a->strings["Basic information"] = "Información básica"; -$a->strings["Profile picture"] = "Imagen del perfil"; -$a->strings["Preferences"] = "Preferencias"; -$a->strings["Status information"] = "Información del estatus"; -$a->strings["Additional information"] = "Información addicional"; -$a->strings["Relation"] = "Relación"; -$a->strings["Your Gender:"] = "Género:"; -$a->strings[" Marital Status:"] = " Estado civil:"; -$a->strings["Example: fishing photography software"] = "Ejemplo: pesca fotografía software"; -$a->strings["Profile Name:"] = "Nombres del perfil:"; -$a->strings["This is your public profile.
It may be visible to anybody using the internet."] = "Éste es tu perfil público.
Puede ser visto por cualquier usuario de internet."; -$a->strings["Your Full Name:"] = "Tu nombre completo:"; -$a->strings["Title/Description:"] = "Título/Descrición:"; -$a->strings["Street Address:"] = "Dirección"; -$a->strings["Locality/City:"] = "Localidad/Ciudad:"; -$a->strings["Region/State:"] = "Región/Estado:"; -$a->strings["Postal/Zip Code:"] = "Código postal:"; -$a->strings["Country:"] = "País"; -$a->strings["Who: (if applicable)"] = "¿Quién? (si es aplicable)"; -$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Ejemplos: cathy123, Cathy Williams, cathy@example.com"; -$a->strings["Since [date]:"] = "Desde [fecha]:"; -$a->strings["Tell us about yourself..."] = "Háblanos sobre ti..."; -$a->strings["XMPP (Jabber) address:"] = "Dirección XMPP (Jabber):"; -$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "La dirección XMPP será propagada entre sus contactos para que puedan seguirle."; -$a->strings["Homepage URL:"] = "Dirección de tu página:"; -$a->strings["Religious Views:"] = "Creencias religiosas:"; -$a->strings["Public Keywords:"] = "Palabras clave públicas:"; -$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Utilizadas para sugerir amigos potenciales, otros pueden verlo)"; -$a->strings["Private Keywords:"] = "Palabras clave privadas:"; -$a->strings["(Used for searching profiles, never shown to others)"] = "(Utilizadas para buscar perfiles, nunca se muestra a otros)"; -$a->strings["Musical interests"] = "Gustos musicales"; -$a->strings["Books, literature"] = "Libros, literatura"; -$a->strings["Television"] = "Televisión"; -$a->strings["Film/dance/culture/entertainment"] = "Películas/baile/cultura/entretenimiento"; -$a->strings["Hobbies/Interests"] = "Aficiones/Intereses"; -$a->strings["Love/romance"] = "Amor/Romance"; -$a->strings["Work/employment"] = "Trabajo/ocupación"; -$a->strings["School/education"] = "Escuela/estudios"; -$a->strings["Contact information and Social Networks"] = "Informacioń de contacto y Redes sociales"; -$a->strings["Edit/Manage Profiles"] = "Editar/Administrar perfiles"; -$a->strings["Registration successful. Please check your email for further instructions."] = "Te has registrado con éxito. Por favor, consulta tu correo para más información."; -$a->strings["Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login."] = "Error al intentar de enviar mensaje de correo. Aquí los detalles de su cuenta:
login: %s
contraseña: %s

Puede cambiar su contraseña después de ingresar al sitio."; -$a->strings["Registration successful."] = "Registro exitoso."; -$a->strings["Your registration can not be processed."] = "Tu registro no se puede procesar."; -$a->strings["Your registration is pending approval by the site owner."] = "Tu registro está pendiente de aprobación por el propietario del sitio."; -$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Puedes (opcionalmente) rellenar este formulario a través de OpenID escribiendo tu OpenID y pulsando en \"Registrar\"."; -$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Si no estás familiarizado con OpenID, por favor deja ese campo en blanco y rellena el resto de los elementos."; -$a->strings["Your OpenID (optional): "] = "Tu OpenID (opcional):"; -$a->strings["Include your profile in member directory?"] = "¿Incluir tu perfil en el directorio de miembros?"; -$a->strings["Note for the admin"] = "Nota para el administrador"; -$a->strings["Leave a message for the admin, why you want to join this node"] = "Deje un mensaje para el administrador sobre por qué quiere unirse a este nodo"; -$a->strings["Membership on this site is by invitation only."] = "Sitio solo accesible mediante invitación."; -$a->strings["Your invitation ID: "] = "ID de tu invitación: "; -$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "Nombre completo (ej. Joe Smith, real o real aparente):"; -$a->strings["Your Email Address: "] = "Tu dirección de correo: "; -$a->strings["New Password:"] = "Contraseña nueva:"; -$a->strings["Leave empty for an auto generated password."] = "Dejar vacío para autogenerar una contraseña"; -$a->strings["Confirm:"] = "Confirmar:"; -$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be 'nickname@\$sitename'."] = "Elije un apodo. Debe comenzar con una letra. Tu dirección de perfil en este sitio va a ser \"apodo@\$nombredelsitio\"."; -$a->strings["Choose a nickname: "] = "Escoge un apodo: "; -$a->strings["Import your profile to this friendica instance"] = "Importar tu perfil a esta instancia de friendica"; -$a->strings["Account approved."] = "Cuenta aprobada."; -$a->strings["Registration revoked for %s"] = "Registro anulado para %s"; -$a->strings["Please login."] = "Por favor accede."; -$a->strings["Display"] = "Interfaz del usuario"; -$a->strings["Social Networks"] = "Redes sociales"; -$a->strings["Connected apps"] = "Aplicaciones conectadas"; -$a->strings["Remove account"] = "Eliminar cuenta"; -$a->strings["Missing some important data!"] = "¡Faltan algunos datos importantes!"; -$a->strings["Failed to connect with email account using the settings provided."] = "Error al conectar con la cuenta de correo mediante la configuración suministrada."; -$a->strings["Email settings updated."] = "Configuración de correo actualizada."; -$a->strings["Features updated"] = "Actualizaciones"; -$a->strings["Relocate message has been send to your contacts"] = "Mensaje de reubicación ha sido enviado a sus contactos."; -$a->strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no ha sido modificada."; -$a->strings["Wrong password."] = "Contraseña incorrecta"; -$a->strings["Password changed."] = "Contraseña modificada."; -$a->strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, prueba otra vez."; -$a->strings[" Please use a shorter name."] = " Usa un nombre más corto."; -$a->strings[" Name too short."] = " Nombre demasiado corto."; -$a->strings["Wrong Password"] = "Contraseña incorrecta"; -$a->strings[" Not valid email."] = " Correo no válido."; -$a->strings[" Cannot change to that email."] = " No se puede usar ese correo."; -$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "El foro privado no tiene permisos de privacidad. Usando el grupo de privacidad por defecto."; -$a->strings["Private forum has no privacy permissions and no default privacy group."] = "El foro privado no tiene permisos de privacidad ni grupo por defecto de privacidad."; -$a->strings["Settings updated."] = "Configuración actualizada."; -$a->strings["Add application"] = "Agregar aplicación"; -$a->strings["Consumer Key"] = "Clave del consumidor"; -$a->strings["Consumer Secret"] = "Secreto del consumidor"; -$a->strings["Redirect"] = "Redirigir"; -$a->strings["Icon url"] = "Dirección del ícono"; -$a->strings["You can't edit this application."] = "No puedes editar esta aplicación."; -$a->strings["Connected Apps"] = "Aplicaciones conectadas"; -$a->strings["Edit"] = "Editar"; -$a->strings["Client key starts with"] = "Clave de cliente comienza por"; -$a->strings["No name"] = "Sin nombre"; -$a->strings["Remove authorization"] = "Suprimir la autorización"; -$a->strings["No Plugin settings configured"] = "No se ha configurado ningún módulo"; -$a->strings["Plugin Settings"] = "Configuración de los módulos"; -$a->strings["Additional Features"] = "Características adicionales"; -$a->strings["General Social Media Settings"] = "Configuración general de social media "; -$a->strings["Disable intelligent shortening"] = "Deshabilitar recorte inteligente de URL"; -$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."] = "Normalemente el sistema intenta de encontrara el mejor enlace para agregar a envíos recortados (twitter, OStatus). Si esta opción se encuentra habilitado, todo envío recortado apuntara siempre al tema original en friendica."; -$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automáticamente seguir cualquier GNUsocial (OStatus) seguidores o menciones "; -$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."] = "Cuando se recibe un mensaje de un perfil desconocido de OStatus, esta opción define que hacer.\nSi es habilitado, un nuevo contacto sera creado para cada usuario."; -$a->strings["Default group for OStatus contacts"] = "Grupo por defecto para contactos OStatus"; -$a->strings["Your legacy GNU Social account"] = "Tu cuenta GNU social conectada"; -$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."] = "Si agrega su viejo nombre de perfil GNUsocial/Statusnet aqui (en el formato de usuario@dominio.tld), sus contactos serán añadidos automáticamente.\nEl campo sera vaciado cuando termine el proceso. "; -$a->strings["Repair OStatus subscriptions"] = "Reparar subscripciones de OStatus"; -$a->strings["Built-in support for %s connectivity is %s"] = "El soporte integrado de conexión con %s está %s"; -$a->strings["enabled"] = "habilitado"; -$a->strings["disabled"] = "deshabilitado"; -$a->strings["GNU Social (OStatus)"] = "GNUsocial (OStatus)"; -$a->strings["Email access is disabled on this site."] = "El acceso por correo está deshabilitado en esta web."; -$a->strings["Email/Mailbox Setup"] = "Configuración del correo/buzón"; -$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Si quieres comunicarte con tus contactos de correo usando este servicio (opcional), por favor, especifica cómo conectar con tu buzón."; -$a->strings["Last successful email check:"] = "Última comprobación del correo con éxito:"; -$a->strings["IMAP server name:"] = "Nombre del servidor IMAP:"; -$a->strings["IMAP port:"] = "Puerto IMAP:"; -$a->strings["Security:"] = "Seguridad:"; -$a->strings["None"] = "Ninguna"; -$a->strings["Email login name:"] = "Nombre de usuario:"; -$a->strings["Email password:"] = "Contraseña:"; -$a->strings["Reply-to address:"] = "Dirección de respuesta:"; -$a->strings["Send public posts to all email contacts:"] = "Enviar publicaciones públicas a todos los contactos de correo:"; -$a->strings["Action after import:"] = "Acción después de importar:"; -$a->strings["Move to folder"] = "Mover a un directorio"; -$a->strings["Move to folder:"] = "Mover al directorio:"; -$a->strings["Display Settings"] = "Configuración Tema/Visualización"; -$a->strings["Display Theme:"] = "Utilizar tema:"; -$a->strings["Mobile Theme:"] = "Tema móvil:"; -$a->strings["Suppress warning of insecure networks"] = "Suprimir el aviso de redes inseguras"; -$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Debería el sistema suprimir el aviso de que el grupo actual contiene miembros de redes que no pueden recibir publicaciones públicas."; -$a->strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos"; -$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimo 10 segundos. Ingrese -1 para deshabilitar."; -$a->strings["Number of items to display per page:"] = "Número de elementos a mostrar por página:"; -$a->strings["Maximum of 100 items"] = "Máximo 100 elementos"; -$a->strings["Number of items to display per page when viewed from mobile device:"] = "Cantidad de objetos a visualizar cuando se usa un movil"; -$a->strings["Don't show emoticons"] = "No mostrar emoticones"; -$a->strings["Calendar"] = "Calendario"; -$a->strings["Beginning of week:"] = "Principio de la semana:"; -$a->strings["Don't show notices"] = "No mostrara avisos"; -$a->strings["Infinite scroll"] = "pagina infinita (sroll)"; -$a->strings["Automatic updates only at the top of the network page"] = "Actualizaciones automaticas solo estando al principio de la pagina"; -$a->strings["When disabled, the network page is updated all the time, which could be confusing while reading."] = "Cuando está deshabilitada, la página de red se actualiza constantemente, lo que podría ser confuso al leer."; -$a->strings["Bandwith Saver Mode"] = "Modo de guardado de ancho de banda"; -$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "Cuando está habilitado, el contenido incrustado no se muestra en las actualizaciones automáticas, sólo en las páginas recargadas."; -$a->strings["General Theme Settings"] = "Ajustes generales de tema"; -$a->strings["Custom Theme Settings"] = "Ajustes personalizados de tema"; -$a->strings["Content Settings"] = "Ajustes de contenido"; -$a->strings["Theme settings"] = "Configuración del Tema"; -$a->strings["Account Types"] = "Tipos de cuenta"; -$a->strings["Personal Page Subtypes"] = "Subtipos de página personal"; -$a->strings["Community Forum Subtypes"] = "Subtipos de foro de comunidad"; -$a->strings["Personal Page"] = "Página personal"; -$a->strings["Account for a personal profile."] = "Cuenta para un perfil personal."; -$a->strings["Organisation Page"] = "Página de organización"; -$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "Cuenta para una organización que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; -$a->strings["News Page"] = "Página de noticias"; -$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "Cuenta para un reflector de noticias que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; -$a->strings["Community Forum"] = "Foro de la comunidad"; -$a->strings["Account for community discussions."] = "Cuenta para discusiones de la comunidad."; -$a->strings["Normal Account Page"] = "Página de cuenta normal"; -$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "Cuenta para un perfil personal regular que requiere aprobación manual de «Amigos» y «Seguidores»."; -$a->strings["Soapbox Page"] = "Página de tribuna"; -$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "Cuenta para un perfil público que aprueba automáticamente las solicitudes de contacto como «Seguidores»."; -$a->strings["Public Forum"] = "Foro público"; -$a->strings["Automatically approves all contact requests."] = "Aprueba automáticamente todas las solicitudes de contacto."; -$a->strings["Automatic Friend Page"] = "Página de Amistad autómatica"; -$a->strings["Account for a popular profile that automatically approves contact requests as \"Friends\"."] = "Cuenta para un perfil popular que aprueba automáticamente las solicitudes de contacto como «Friends»."; -$a->strings["Private Forum [Experimental]"] = "Foro privado [Experimental]"; -$a->strings["Requires manual approval of contact requests."] = "Requiere aprobación manual de solicitudes de contacto."; -$a->strings["OpenID:"] = "OpenID:"; -$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Opcional) Permitir a este OpenID acceder a esta cuenta."; -$a->strings["Publish your default profile in your local site directory?"] = "¿Quieres publicar tu perfil predeterminado en el directorio local del sitio?"; -$a->strings["Your profile may be visible in public."] = "Su perfil puede ser visible en público."; -$a->strings["Publish your default profile in the global social directory?"] = "¿Quieres publicar tu perfil predeterminado en el directorio social de forma global?"; -$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "¿Quieres ocultar tu lista de contactos/amigos en la vista de tu perfil predeterminado?"; -$a->strings["If enabled, posting public messages to Diaspora and other networks isn't possible."] = "Si habilitado, enviar temas públicos a a Diaspora* y otras redes no es posible. "; -$a->strings["Allow friends to post to your profile page?"] = "¿Permites que tus amigos publiquen en tu página de perfil?"; -$a->strings["Allow friends to tag your posts?"] = "¿Permites a los amigos etiquetar tus publicaciones?"; -$a->strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite recomendarte como amigo potencial a los nuevos miembros?"; -$a->strings["Permit unknown people to send you private mail?"] = "¿Permites que desconocidos te manden correos privados?"; -$a->strings["Profile is not published."] = "El perfil no está publicado."; -$a->strings["Your Identity Address is '%s' or '%s'."] = "Su dirección de identidad es '%s' o '%s'."; -$a->strings["Automatically expire posts after this many days:"] = "Las publicaciones expirarán automáticamente después de estos días:"; -$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Si lo dejas vacío no expirarán nunca. Las publicaciones que hayan expirado se borrarán"; -$a->strings["Advanced expiration settings"] = "Configuración avanzada de expiración"; -$a->strings["Advanced Expiration"] = "Expiración avanzada"; -$a->strings["Expire posts:"] = "¿Expiran las publicaciones?"; -$a->strings["Expire personal notes:"] = "¿Expiran las notas personales?"; -$a->strings["Expire starred posts:"] = "¿Expiran los favoritos?"; -$a->strings["Expire photos:"] = "¿Expiran las fotografías?"; -$a->strings["Only expire posts by others:"] = "Solo expiran los mensajes de los demás:"; -$a->strings["Account Settings"] = "Configuración de la cuenta"; -$a->strings["Password Settings"] = "Configuración de la contraseña"; -$a->strings["Leave password fields blank unless changing"] = "Deja la contraseña en blanco si no quieres cambiarla"; -$a->strings["Current Password:"] = "Contraseña actual:"; -$a->strings["Your current password to confirm the changes"] = "Su contraseña actual para confirmar los cambios."; -$a->strings["Password:"] = "Contraseña:"; -$a->strings["Basic Settings"] = "Configuración básica"; -$a->strings["Email Address:"] = "Dirección de correo:"; -$a->strings["Your Timezone:"] = "Zona horaria:"; -$a->strings["Your Language:"] = "Tu idioma:"; -$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "Selecciona el idioma que se usara para la interfaz del usuario y para el envío de correo."; -$a->strings["Default Post Location:"] = "Localización predeterminada:"; -$a->strings["Use Browser Location:"] = "Usar localización del navegador:"; -$a->strings["Security and Privacy Settings"] = "Configuración de seguridad y privacidad"; -$a->strings["Maximum Friend Requests/Day:"] = "Máximo número de peticiones de amistad por día:"; -$a->strings["(to prevent spam abuse)"] = "(para prevenir el abuso de spam)"; -$a->strings["Default Post Permissions"] = "Permisos por defecto para las publicaciones"; -$a->strings["(click to open/close)"] = "(pulsa para abrir/cerrar)"; -$a->strings["Default Private Post"] = "Publicación Privada por defecto"; -$a->strings["Default Public Post"] = "Publicación Pública por defecto"; -$a->strings["Default Permissions for New Posts"] = "Permisos por defecto para nuevas publicaciones"; -$a->strings["Maximum private messages per day from unknown people:"] = "Número máximo de mensajes diarios para desconocidos:"; -$a->strings["Notification Settings"] = "Configuración de notificaciones"; -$a->strings["By default post a status message when:"] = "Publicar en tu estado cuando:"; -$a->strings["accepting a friend request"] = "aceptes una solicitud de amistad"; -$a->strings["joining a forum/community"] = "te unas a un foro/comunidad"; -$a->strings["making an interesting profile change"] = "hagas un cambio interesante en tu perfil"; -$a->strings["Send a notification email when:"] = "Enviar notificación por correo cuando:"; -$a->strings["You receive an introduction"] = "Recibas una presentación"; -$a->strings["Your introductions are confirmed"] = "Tu presentación sea confirmada"; -$a->strings["Someone writes on your profile wall"] = "Alguien escriba en el muro de mi perfil"; -$a->strings["Someone writes a followup comment"] = "Algien escriba en un comentario que sigo"; -$a->strings["You receive a private message"] = "Recibas un mensaje privado"; -$a->strings["You receive a friend suggestion"] = "Recibas una sugerencia de amistad"; -$a->strings["You are tagged in a post"] = "Seas etiquetado en una publicación"; -$a->strings["You are poked/prodded/etc. in a post"] = "Te han tocado/empujado/etc. en una publicación"; -$a->strings["Activate desktop notifications"] = "Activar notificaciones en pantalla."; -$a->strings["Show desktop popup on new notifications"] = "Mostrar notificaciones emergentes en caso de nuevos eventos."; -$a->strings["Text-only notification emails"] = "Notificaciones e-mail de solo texto"; -$a->strings["Send text only notification emails, without the html part"] = "Enviar las notificaciones por correo con formato de solo texto sin html."; -$a->strings["Show detailled notifications"] = "Mostrar notificaciones detalladas"; -$a->strings["Per default the notificiation are condensed to a single notification per item. When enabled, every notification is displayed."] = "Por defecto, la notificación se condensa en una sola notificación por artículo. Cuando está habilitado, se muestra cada notificación."; -$a->strings["Advanced Account/Page Type Settings"] = "Configuración avanzada de tipo de Cuenta/Página"; -$a->strings["Change the behaviour of this account for special situations"] = "Cambiar el comportamiento de esta cuenta para situaciones especiales"; -$a->strings["Relocate"] = "Relocalizar"; -$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "Si ha migrado este perfil desde otro servidor aquí y algunos contactos no reciben sus publicaciones intente recomunicar su ubicación a traves este botón. (Como para decir el botón de los botones)"; -$a->strings["Resend relocate message to contacts"] = "Reenviar mensaje de relocalización a los contactos"; -$a->strings["Do you really want to delete this video?"] = "Realmente quieres eliminar este vídeo?"; -$a->strings["Delete Video"] = "Borrar vídeo"; -$a->strings["No videos selected"] = "Ningún vídeo seleccionado"; -$a->strings["Recent Videos"] = "Vídeos recientes"; -$a->strings["Upload New Videos"] = "Subir nuevos vídeos"; -$a->strings["Invalid request."] = "Consulta invalida"; -$a->strings["Sorry, maybe your upload is bigger than the PHP configuration allows"] = "Disculpa, posiblemente el archivo subido es mas grande que la PHP configuración permite."; -$a->strings["Or - did you try to upload an empty file?"] = "Si no - intento de subir un archivo vacío?"; -$a->strings["File exceeds size limit of %s"] = "El archivo excede el limite de tamaño de %s"; -$a->strings["File upload failed."] = "Ha fallado la subida del archivo."; +$a->strings["Friendica Communications Server - Setup"] = ""; +$a->strings["System check"] = "Verificación del sistema"; +$a->strings["Check again"] = "Compruebalo de nuevo"; +$a->strings["Database connection"] = "Conexión con la base de datos"; +$a->strings["In order to install Friendica we need to know how to connect to your database."] = "Con el fin de poder instalar Friendica, necesitamos saber cómo conectar con tu base de datos."; +$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacta con tu proveedor de servicios o con el administrador de la página si tienes alguna pregunta sobre estas configuraciones."; +$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifiques a continuación debería existir ya. Si no es el caso, debes crearla antes de continuar."; +$a->strings["Database Server Name"] = "Nombre del servidor de la base de datos"; +$a->strings["Database Login Name"] = "Usuario de la base de datos"; +$a->strings["Database Login Password"] = "Contraseña de la base de datos"; +$a->strings["For security reasons the password must not be empty"] = "Por razones de seguridad la contraseña no debe estar vacía"; +$a->strings["Database Name"] = "Nombre de la base de datos"; +$a->strings["Site administrator email address"] = "Dirección de correo del administrador de la web"; +$a->strings["Your account email address must match this in order to use the web admin panel."] = "La dirección de correo de tu cuenta debe coincidir con esta para poder usar el panel de administración de la web."; +$a->strings["Please select a default timezone for your website"] = "Por favor, selecciona la zona horaria predeterminada para tu web"; +$a->strings["Site settings"] = "Configuración de la página web"; +$a->strings["System Language:"] = "Sistema de idioma:"; +$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Seleccione el idioma por defecto para su interfaz de instalación de Friendica y para enviar emails."; +$a->strings["Your Friendica site database has been installed."] = "La base de datos de su sitio web de Friendica ha sido instalada."; +$a->strings["Installation finished"] = ""; +$a->strings["

What next

"] = "

¿Ahora qué?

"; +$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the worker."] = ""; +$a->strings["Go to your new Friendica node registration page 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."] = ""; +$a->strings["Item Guid"] = ""; +$a->strings["Create a New Account"] = "Crear una nueva cuenta"; +$a->strings["Password: "] = "Contraseña: "; +$a->strings["Remember me"] = "Recordarme"; +$a->strings["Or login using OpenID: "] = "O inicia sesión usando OpenID: "; +$a->strings["Forgot your password?"] = "¿Olvidaste la contraseña?"; +$a->strings["Website Terms of Service"] = "Términos de uso del sitio"; +$a->strings["terms of service"] = "Términos de uso"; +$a->strings["Website Privacy Policy"] = "Política de privacidad del sitio"; +$a->strings["privacy policy"] = "Política de privacidad"; +$a->strings["Logged out."] = "Sesión finalizada"; +$a->strings["Bad Request."] = ""; +$a->strings["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."] = ""; +$a->strings["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."] = ""; +$a->strings["At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1\$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners."] = ""; +$a->strings["Privacy Statement"] = ""; $a->strings["This entry was edited"] = "Esta entrada fue editada"; +$a->strings["Delete locally"] = ""; +$a->strings["Delete globally"] = ""; +$a->strings["Remove locally"] = ""; $a->strings["save to folder"] = "grabado en directorio"; $a->strings["I will attend"] = "Voy a estar presente"; $a->strings["I will not attend"] = "No voy a estar presente"; $a->strings["I might attend"] = "Puede que voy a estar presente"; +$a->strings["ignore thread"] = "ignorar publicación"; +$a->strings["unignore thread"] = "revertir ignorar publicacion"; +$a->strings["toggle ignore status"] = "cambiar estatus de observación"; $a->strings["add star"] = "Añadir estrella"; $a->strings["remove star"] = "Quitar estrella"; $a->strings["toggle star status"] = "Añadir a destacados"; $a->strings["starred"] = "marcados con estrellas"; -$a->strings["ignore thread"] = "ignorar publicación"; -$a->strings["unignore thread"] = "revertir ignorar publicacion"; -$a->strings["toggle ignore status"] = "cambiar estatus de observación"; $a->strings["add tag"] = "añadir etiqueta"; $a->strings["like"] = "me gusta"; $a->strings["dislike"] = "no me gusta"; @@ -2026,14 +2155,31 @@ $a->strings["%d comment"] = [ 0 => "%d comentario", 1 => "%d comentarios", ]; -$a->strings["Bold"] = "Negrita"; -$a->strings["Italic"] = "Cursiva"; -$a->strings["Underline"] = "Subrayado"; -$a->strings["Quote"] = "Cita"; -$a->strings["Code"] = "Código"; -$a->strings["Image"] = "Imagen"; -$a->strings["Link"] = "Enlace"; -$a->strings["Video"] = "Vídeo"; +$a->strings["Sharing notification from Diaspora network"] = "Compartir notificaciones con la red Diaspora*"; +$a->strings["Attachments:"] = "Archivos adjuntos:"; +$a->strings["%s is now following %s."] = "%s sigue ahora a %s."; +$a->strings["following"] = "siguiendo"; +$a->strings["%s stopped following %s."] = "%s dejó de seguir a %s."; +$a->strings["stopped following"] = "dejó de seguir"; +$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD"; +$a->strings["never"] = "nunca"; +$a->strings["less than a second ago"] = "hace menos de un segundo"; +$a->strings["year"] = "año"; +$a->strings["years"] = "años"; +$a->strings["months"] = "meses"; +$a->strings["weeks"] = "semanas"; +$a->strings["days"] = "días"; +$a->strings["hour"] = "hora"; +$a->strings["hours"] = "horas"; +$a->strings["minute"] = "minuto"; +$a->strings["minutes"] = "minutos"; +$a->strings["second"] = "segundo"; +$a->strings["seconds"] = "segundos"; +$a->strings["in %1\$d %2\$s"] = ""; +$a->strings["%1\$d %2\$s ago"] = "hace %1\$d %2\$s"; +$a->strings["(no subject)"] = "(sin asunto)"; +$a->strings["%s: Updating author-id and owner-id in item and thread table. "] = ""; +$a->strings["%s: Updating post-type."] = ""; $a->strings["greenzero"] = "greenzero"; $a->strings["purplezero"] = "purplezero"; $a->strings["easterbunny"] = "easterbunny"; @@ -2041,24 +2187,28 @@ $a->strings["darkzero"] = "darkzero"; $a->strings["comix"] = "comix"; $a->strings["slackr"] = "slackr"; $a->strings["Variations"] = "Variaciones"; -$a->strings["Repeat the image"] = "Repetir la imagen"; -$a->strings["Will repeat your image to fill the background."] = "Repetirá su imagen para llenar el fondo"; -$a->strings["Stretch"] = "Estirar"; -$a->strings["Will stretch to width/height of the image."] = "Estirará la anchura/altura de la imagen."; -$a->strings["Resize fill and-clip"] = "Reajustar llenado y clip"; -$a->strings["Resize to fill and retain aspect ratio."] = "Reajustar para llenar y conservar proporción"; -$a->strings["Resize best fit"] = "Reajustar al mejor tamaño"; -$a->strings["Resize to best fit and retain aspect ratio."] = "Reajustar al mejor tamaño y conservar proporción"; -$a->strings["Default"] = "Por defecto"; +$a->strings["Custom"] = ""; $a->strings["Note"] = "Nota"; -$a->strings["Check image permissions if all users are allowed to visit the image"] = "Compruebe los permisos de imagen si se les permite a todos los usuarios visitar la imagen"; -$a->strings["Select scheme"] = "Seleccionar plan"; +$a->strings["Check image permissions if all users are allowed to see the image"] = ""; +$a->strings["Select color scheme"] = ""; $a->strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; $a->strings["Navigation bar icon color "] = "Color de icono de la barra de navegación"; $a->strings["Link color"] = "Color de enlace"; $a->strings["Set the background color"] = "Seleccionar el color de fondo"; -$a->strings["Content background transparency"] = "Transparencia de contenido de fondo"; +$a->strings["Content background opacity"] = ""; $a->strings["Set the background image"] = "Seleccionar la imagen de fondo"; +$a->strings["Background image style"] = ""; +$a->strings["Login page background image"] = ""; +$a->strings["Login page background color"] = ""; +$a->strings["Leave background image and color empty for theme defaults"] = ""; +$a->strings["Top Banner"] = ""; +$a->strings["Resize image to the width of the screen and show background color below on long pages."] = ""; +$a->strings["Full screen"] = ""; +$a->strings["Resize image to fill entire screen, clipping either the right or the bottom."] = ""; +$a->strings["Single row mosaic"] = ""; +$a->strings["Resize image to repeat it on a single row, either vertical or horizontal."] = ""; +$a->strings["Mosaic"] = ""; +$a->strings["Repeat image to fill the screen."] = ""; $a->strings["Guest"] = "Invitado"; $a->strings["Visitor"] = "Visitante"; $a->strings["Alignment"] = "Alineación"; @@ -2067,26 +2217,12 @@ $a->strings["Center"] = "Centrado"; $a->strings["Color scheme"] = "Esquema de color"; $a->strings["Posts font size"] = "Tamaño de letra del titulo de las publicaciones"; $a->strings["Textareas font size"] = "Tamaño de letra del área de texto"; -$a->strings["Community Profiles"] = "Perfiles de la Comunidad"; -$a->strings["Last users"] = "Últimos usuarios"; -$a->strings["Find Friends"] = "Buscar amigos"; -$a->strings["Local Directory"] = "Directorio local"; -$a->strings["Quick Start"] = "Inicio rápido"; -$a->strings["Connect Services"] = "Servicios conectados"; $a->strings["Comma separated list of helper forums"] = "Lista separada por comas de foros de ayuda."; $a->strings["Set style"] = "Definir estilo"; $a->strings["Community Pages"] = "Páginas de Comunidad"; +$a->strings["Community Profiles"] = "Perfiles de la Comunidad"; $a->strings["Help or @NewHere ?"] = "¿Ayuda o @NuevoAquí?"; -$a->strings["Delete this item?"] = "¿Eliminar este elemento?"; -$a->strings["show fewer"] = "ver menos"; -$a->strings["Update %s failed. See error logs."] = "Falló la actualización de %s. Mira los registros de errores."; -$a->strings["Create a New Account"] = "Crear una nueva cuenta"; -$a->strings["Password: "] = "Contraseña: "; -$a->strings["Remember me"] = "Recordarme"; -$a->strings["Or login using OpenID: "] = "O inicia sesión usando OpenID: "; -$a->strings["Forgot your password?"] = "¿Olvidaste la contraseña?"; -$a->strings["Website Terms of Service"] = "Términos de uso del sitio"; -$a->strings["terms of service"] = "Términos de uso"; -$a->strings["Website Privacy Policy"] = "Política de privacidad del sitio"; -$a->strings["privacy policy"] = "Política de privacidad"; -$a->strings["toggle mobile"] = "Cambiar a versión móvil"; +$a->strings["Connect Services"] = "Servicios conectados"; +$a->strings["Find Friends"] = "Buscar amigos"; +$a->strings["Last users"] = "Últimos usuarios"; +$a->strings["Quick Start"] = "Inicio rápido"; From 0c19c4c75d7ef3d93eddcd09702915c083469c1e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:05:03 -0500 Subject: [PATCH 207/728] Fix missing reference to 'data' key in Util\Crypto - Fix doc blocks --- src/Util/Crypto.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Util/Crypto.php b/src/Util/Crypto.php index 4f762964c9..2ab97e5373 100644 --- a/src/Util/Crypto.php +++ b/src/Util/Crypto.php @@ -423,13 +423,13 @@ class Crypto * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php * - * @param string $data + * @param array $data ['iv' => $iv, 'key' => $key, 'alg' => $alg, 'data' => $data] * @param string $prvkey The private key used for decryption. * * @return string|boolean The decrypted string or false on failure. * @throws \Exception */ - public static function unencapsulate($data, $prvkey) + public static function unencapsulate(array $data, $prvkey) { if (!$data) { return; @@ -437,23 +437,23 @@ class Crypto $alg = ((array_key_exists('alg', $data)) ? $data['alg'] : 'aes256cbc'); if ($alg === 'aes256cbc') { - return self::encapsulateAes($data, $prvkey); + return self::encapsulateAes($data['data'], $prvkey); } - return self::encapsulateOther($data, $prvkey, $alg); + return self::encapsulateOther($data['data'], $prvkey, $alg); } /** * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php * - * @param string $data + * @param array $data * @param string $prvkey The private key used for decryption. * @param string $alg * * @return string|boolean The decrypted string or false on failure. * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - private static function unencapsulateOther($data, $prvkey, $alg) + private static function unencapsulateOther(array $data, $prvkey, $alg) { $fn = 'decrypt' . strtoupper($alg); From d5ce74672e0886ccceeff25ed6d1a3ad31a50a83 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:05:25 -0500 Subject: [PATCH 208/728] Fix method scope in Model\Attach --- src/Model/Attach.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Attach.php b/src/Model/Attach.php index bd4269b9e3..3bd77ef9c9 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -176,7 +176,7 @@ class Attach extends BaseObject * @return boolean/integer Row id on success, False on errors * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') + public static function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { if ($filetype === '') { $filetype = Mimetype::getContentType($filename); From 5ea033db33c62562dcd27dd70447a35b3d14326e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:05:42 -0500 Subject: [PATCH 209/728] Remove unused variable in Model\Item --- src/Model/Item.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 300e80650d..67071db318 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1790,13 +1790,13 @@ class Item extends BaseObject DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $diaspora_signed_text], true); } - $deleted = self::tagDeliver($item['uid'], $current_post); + self::tagDeliver($item['uid'], $current_post); /* * current post can be deleted if is for a community page and no mention are * in it. */ - if (!$deleted && !$dontcache) { + if (!$dontcache) { $posted_item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $current_post]); if (DBA::isResult($posted_item)) { if ($notify) { From 64847e7cc8ca8f157cae4994c71b93df28624d6f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:51:59 -0500 Subject: [PATCH 210/728] Fix types in doc blocks/prototypes --- src/Content/Widget/TagCloud.php | 2 +- src/Core/Console.php | 1 + src/Core/Renderer.php | 1 + src/Core/StorageManager.php | 3 ++ src/Model/Attach.php | 4 +++ src/Model/Mail.php | 4 +-- src/Model/Photo.php | 6 +++- src/Object/Image.php | 1 + src/Protocol/DFRN.php | 60 ++++++++++++++++----------------- src/Protocol/Diaspora.php | 12 +++---- src/Protocol/Email.php | 26 +++++++------- src/Protocol/OStatus.php | 16 ++++----- src/Util/Temporal.php | 8 ++--- src/Util/XML.php | 24 ++++++------- 14 files changed, 91 insertions(+), 77 deletions(-) diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index d775d010a8..f2b94b1114 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -113,7 +113,7 @@ class TagCloud * @param array $arr Array of tags/terms with tag/term name and total count of use. * @return array Alphabetical sorted array of used tags/terms of an user. */ - private static function tagCalc($arr) + private static function tagCalc(array $arr) { $tags = []; $min = 1e9; diff --git a/src/Core/Console.php b/src/Core/Console.php index 32e12fa1f0..c60f36296a 100644 --- a/src/Core/Console.php +++ b/src/Core/Console.php @@ -121,6 +121,7 @@ HELP; $className = $this->subConsoles[$command]; + /** @var Console $subconsole */ $subconsole = new $className($subargs); foreach ($this->options as $name => $value) { diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 9d2a7e22e5..67bc5e3bab 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -8,6 +8,7 @@ namespace Friendica\Core; use Exception; use Friendica\BaseObject; use Friendica\Render\FriendicaSmarty; +use Friendica\Render\ITemplateEngine; /** * @brief This class handles Renderer related functions. diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 415ee522b6..cfefa5f35a 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -3,6 +3,7 @@ namespace Friendica\Core; use Friendica\Database\DBA; +use Friendica\Model\Storage\IStorage; /** @@ -138,6 +139,7 @@ class StorageManager while($r = DBA::fetch($rr)) { $id = $r['id']; $data = $r['data']; + /** @var IStorage $backendClass */ $backendClass = $r['backend-class']; $backendRef = $r['backend-ref']; if (!is_null($backendClass) && $backendClass !== '') { @@ -146,6 +148,7 @@ class StorageManager } Logger::log("save data to new backend " . $dest); + /** @var IStorage $dest */ $ref = $dest::put($data); Logger::log("saved data as " . $ref); diff --git a/src/Model/Attach.php b/src/Model/Attach.php index 3bd77ef9c9..7efb56f95a 100644 --- a/src/Model/Attach.php +++ b/src/Model/Attach.php @@ -11,6 +11,7 @@ use Friendica\Core\System; use Friendica\Core\StorageManager; use Friendica\Database\DBA; use Friendica\Database\DBStructure; +use Friendica\Model\Storage\IStorage; use Friendica\Object\Image; use Friendica\Util\Security; use Friendica\Util\DateTimeFormat; @@ -186,6 +187,7 @@ class Attach extends BaseObject $filesize = strlen($data); } + /** @var IStorage $backend_class */ $backend_class = StorageManager::getBackend(); $backend_ref = ''; if ($backend_class !== '') { @@ -265,6 +267,7 @@ class Attach extends BaseObject $items = self::select(['backend-class','backend-ref'], $conditions); foreach($items as $item) { + /** @var IStorage $backend_class */ $backend_class = (string)$item['backend-class']; if ($backend_class !== '') { $fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']); @@ -297,6 +300,7 @@ class Attach extends BaseObject $items = self::select(['backend-class','backend-ref'], $conditions); foreach($items as $item) { + /** @var IStorage $backend_class */ $backend_class = (string)$item['backend-class']; if ($backend_class !== '') { $backend_class::delete($item['backend-ref']); diff --git a/src/Model/Mail.php b/src/Model/Mail.php index b9ed609fa1..2d304e55f8 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -157,7 +157,7 @@ class Mail } /** - * @param string $recipient recipient, default empty + * @param array $recipient recipient, default empty * @param string $body message body, default empty * @param string $subject message subject, default empty * @param string $replyto reply to, default empty @@ -165,7 +165,7 @@ class Mail * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function sendWall($recipient = '', $body = '', $subject = '', $replyto = '') + public static function sendWall(array $recipient = [], $body = '', $subject = '', $replyto = '') { if (!$recipient) { return -1; diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 1cee2f633b..0778bf4196 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -14,6 +14,7 @@ use Friendica\Core\System; use Friendica\Core\StorageManager; use Friendica\Database\DBA; use Friendica\Database\DBStructure; +use Friendica\Model\Storage\IStorage; use Friendica\Object\Image; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; @@ -268,6 +269,7 @@ class Photo extends BaseObject $data = ""; $backend_ref = ""; + /** @var IStorage $backend_class */ if (DBA::isResult($existing_photo)) { $backend_ref = (string)$existing_photo["backend-ref"]; $backend_class = (string)$existing_photo["backend-class"]; @@ -334,6 +336,7 @@ class Photo extends BaseObject $photos = self::select(["backend-class","backend-ref"], $conditions); foreach($photos as $photo) { + /** @var IStorage $backend_class */ $backend_class = (string)$photo["backend-class"]; if ($backend_class !== "") { $backend_class::delete($photo["backend-ref"]); @@ -363,6 +366,7 @@ class Photo extends BaseObject $photos = self::select(["backend-class","backend-ref"], $conditions); foreach($photos as $photo) { + /** @var IStorage $backend_class */ $backend_class = (string)$photo["backend-class"]; if ($backend_class !== "") { $fields["backend-ref"] = $backend_class::put($img->asString(), $photo["backend-ref"]); @@ -479,7 +483,7 @@ class Photo extends BaseObject } /** - * @param string $exifCoord coordinate + * @param array $exifCoord coordinate * @param string $hemi hemi * @return float */ diff --git a/src/Object/Image.php b/src/Object/Image.php index 1fe0a048b9..9143c23c16 100644 --- a/src/Object/Image.php +++ b/src/Object/Image.php @@ -23,6 +23,7 @@ use ImagickPixel; */ class Image { + /** @var Imagick|resource */ private $image; /* diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index cf6080c572..e6524de965 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -529,17 +529,17 @@ class DFRN /** * @brief Adds the header elements for the DFRN protocol * - * @param object $doc XML document - * @param array $owner Owner record - * @param string $authorelement Element name for the author - * @param string $alternatelink link to profile or category - * @param bool $public Is it a header for public posts? + * @param DOMDocument $doc XML document + * @param array $owner Owner record + * @param string $authorelement Element name for the author + * @param string $alternatelink link to profile or category + * @param bool $public Is it a header for public posts? * * @return object XML root object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Find proper type-hints */ - private static function addHeader($doc, $owner, $authorelement, $alternatelink = "", $public = false) + private static function addHeader(DOMDocument $doc, $owner, $authorelement, $alternatelink = "", $public = false) { if ($alternatelink == "") { @@ -607,16 +607,16 @@ class DFRN /** * @brief Adds the author element in the header for the DFRN protocol * - * @param object $doc XML document - * @param array $owner Owner record - * @param string $authorelement Element name for the author - * @param boolean $public boolean + * @param DOMDocument $doc XML document + * @param array $owner Owner record + * @param string $authorelement Element name for the author + * @param boolean $public boolean * - * @return object XML author object + * @return \DOMElement XML author object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Find proper type-hints */ - private static function addAuthor($doc, $owner, $authorelement, $public) + private static function addAuthor(DOMDocument $doc, array $owner, $authorelement, $public) { // Is the profile hidden or shouldn't be published in the net? Then add the "hide" element $r = q( @@ -752,16 +752,16 @@ class DFRN /** * @brief Adds the author elements in the "entry" elements of the DFRN protocol * - * @param object $doc XML document + * @param DOMDocument $doc XML document * @param string $element Element name for the author * @param string $contact_url Link of the contact * @param array $item Item elements * - * @return object XML author object + * @return \DOMElement XML author object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Find proper type-hints */ - private static function addEntryAuthor($doc, $element, $contact_url, $item) + private static function addEntryAuthor(DOMDocument $doc, $element, $contact_url, $item) { $contact = Contact::getDetailsByURL($contact_url, $item["uid"]); @@ -795,15 +795,15 @@ class DFRN /** * @brief Adds the activity elements * - * @param object $doc XML document - * @param string $element Element name for the activity - * @param string $activity activity value + * @param DOMDocument $doc XML document + * @param string $element Element name for the activity + * @param string $activity activity value * - * @return object XML activity object + * @return \DOMElement XML activity object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Find proper type-hints */ - private static function createActivity($doc, $element, $activity) + private static function createActivity(DOMDocument $doc, $element, $activity) { if ($activity) { $entry = $doc->createElement($element); @@ -898,20 +898,20 @@ class DFRN /** * @brief Adds the "entry" elements for the DFRN protocol * - * @param object $doc XML document - * @param string $type "text" or "html" - * @param array $item Item element - * @param array $owner Owner record - * @param bool $comment Trigger the sending of the "comment" element - * @param int $cid Contact ID of the recipient - * @param bool $single If set, the entry is created as an XML document with a single "entry" element + * @param DOMDocument $doc XML document + * @param string $type "text" or "html" + * @param array $item Item element + * @param array $owner Owner record + * @param bool $comment Trigger the sending of the "comment" element + * @param int $cid Contact ID of the recipient + * @param bool $single If set, the entry is created as an XML document with a single "entry" element * - * @return object XML entry object + * @return \DOMElement XML entry object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException * @todo Find proper type-hints */ - private static function entry($doc, $type, array $item, array $owner, $comment = false, $cid = 0, $single = false) + private static function entry(DOMDocument $doc, $type, array $item, array $owner, $comment = false, $cid = 0, $single = false) { $mentioned = []; @@ -2414,7 +2414,7 @@ class DFRN * @param object $xpath XPath object * @param object $entry entry elements * @param array $importer Record of the importer user mixed with contact of the content - * @param object $xml xml + * @param string $xml xml * @return void * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index e9d3be805f..34bdf2e876 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -648,15 +648,15 @@ class Diaspora /** * @brief Dispatches the different message types to the different functions * - * @param array $importer Array of the importer user - * @param array $msg The post that will be dispatched - * @param object $fields SimpleXML object that contains the message + * @param array $importer Array of the importer user + * @param array $msg The post that will be dispatched + * @param SimpleXMLElement $fields SimpleXML object that contains the message * * @return int The message id of the generated message, "true" or "false" if there was an error * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function dispatch(array $importer, $msg, $fields = null) + public static function dispatch(array $importer, $msg, SimpleXMLElement $fields = null) { // The sender is the handle of the contact that sent the message. // This will often be different with relayed messages (for example "like" and "comment") @@ -758,7 +758,7 @@ class Diaspora * * @param array $msg Array with the XML, the sender handle and the sender signature * - * @return bool|array If the posting is valid then an array with an SimpleXML object is returned + * @return bool|SimpleXMLElement If the posting is valid then an array with an SimpleXML object is returned * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -1077,7 +1077,7 @@ class Diaspora * @param int $uid The user id * @param string $handle The handle in the format user@domain.tld * - * @return int Contact id + * @return array Contact data * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ diff --git a/src/Protocol/Email.php b/src/Protocol/Email.php index 05d59a1525..a6090ce91f 100644 --- a/src/Protocol/Email.php +++ b/src/Protocol/Email.php @@ -17,7 +17,7 @@ class Email * @param string $mailbox The mailbox name * @param string $username The username * @param string $password The password - * @return object + * @return resource * @throws \Exception */ public static function connect($mailbox, $username, $password) @@ -42,8 +42,8 @@ class Email } /** - * @param object $mbox mailbox - * @param string $email_addr email + * @param resource $mbox mailbox + * @param string $email_addr email * @return array * @throws \Exception */ @@ -92,8 +92,8 @@ class Email } /** - * @param object $mbox mailbox - * @param integer $uid user id + * @param resource $mbox mailbox + * @param integer $uid user id * @return mixed */ public static function messageMeta($mbox, $uid) @@ -103,9 +103,9 @@ class Email } /** - * @param object $mbox mailbox - * @param integer $uid user id - * @param string $reply reply + * @param resource $mbox mailbox + * @param integer $uid user id + * @param string $reply reply * @return array * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ @@ -166,11 +166,11 @@ class Email // At the moment - only return plain/text. // Later we'll repackage inline images as data url's and make the HTML safe /** - * @param object $mbox mailbox - * @param integer $uid user id - * @param object $p parts - * @param integer $partno part number - * @param string $subtype sub type + * @param resource $mbox mailbox + * @param integer $uid user id + * @param object $p parts + * @param integer $partno part number + * @param string $subtype sub type * @return string */ private static function messageGetPart($mbox, $uid, $p, $partno, $subtype) diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index b1cc4f4020..b2d0004c06 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1453,7 +1453,7 @@ class OStatus * @param array $owner Contact data of the poster * @param bool $show_profile Whether to show profile * - * @return object author element + * @return \DOMElement author element * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function addAuthor(DOMDocument $doc, array $owner, $show_profile = true) @@ -1573,7 +1573,7 @@ class OStatus * @param bool $toplevel optional default false * @param bool $feed_mode Behave like a regular feed for users if true * - * @return object Entry element + * @return \DOMElement Entry element * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -1605,7 +1605,7 @@ class OStatus * @param DOMDocument $doc XML document * @param array $contact Array of the contact that is added * - * @return object Source element + * @return \DOMElement Source element * @throws \Exception */ private static function sourceEntry(DOMDocument $doc, array $contact) @@ -1748,7 +1748,7 @@ class OStatus * @param array $owner Contact data of the poster * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * - * @return object Entry element with "like" + * @return \DOMElement Entry element with "like" * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -1835,7 +1835,7 @@ class OStatus * @param array $owner Contact data of the poster * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * - * @return object Entry element + * @return \DOMElement Entry element * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -1900,7 +1900,7 @@ class OStatus * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * @param bool $feed_mode Behave like a regular feed for users if true * - * @return object Entry element + * @return \DOMElement Entry element * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ @@ -1976,7 +1976,7 @@ class OStatus * @brief Adds elements to the XML document * * @param DOMDocument $doc XML document - * @param object $entry Entry element where the content is added + * @param \DOMElement $entry Entry element where the content is added * @param array $item Data of the item that is to be posted * @param array $owner Contact data of the poster * @param string $title Title for the post @@ -1986,7 +1986,7 @@ class OStatus * @return void * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - private static function entryContent(DOMDocument $doc, $entry, array $item, array $owner, $title, $verb = "", $complete = true, $feed_mode = false) + private static function entryContent(DOMDocument $doc, \DOMElement $entry, array $item, array $owner, $title, $verb = "", $complete = true, $feed_mode = false) { if ($verb == "") { $verb = self::constructVerb($item); diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index 0e9baf2498..ec71ab5e96 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -158,10 +158,10 @@ class Temporal /** * @brief Returns a date selector * - * @param string $min Unix timestamp of minimum date - * @param string $max Unix timestap of maximum date - * @param string $default Unix timestamp of default date - * @param string $id ID and name of datetimepicker (defaults to "datetimepicker") + * @param DateTime $min Minimum date + * @param DateTime $max Maximum date + * @param DateTime $default Default date + * @param string $id ID and name of datetimepicker (defaults to "datetimepicker") * * @return string Parsed HTML output. * @throws \Friendica\Network\HTTPException\InternalServerErrorException diff --git a/src/Util/XML.php b/src/Util/XML.php index d56b2311f3..ba146ec7b8 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -135,14 +135,14 @@ class XML /** * @brief Create an XML element * - * @param object $doc XML root - * @param string $element XML element name - * @param string $value XML value - * @param array $attributes array containing the attributes + * @param \DOMDocument $doc XML root + * @param string $element XML element name + * @param string $value XML value + * @param array $attributes array containing the attributes * - * @return object XML element object + * @return \DOMElement XML element object */ - public static function createElement($doc, $element, $value = "", $attributes = []) + public static function createElement(\DOMDocument $doc, $element, $value = "", $attributes = []) { $element = $doc->createElement($element, self::escape($value)); @@ -157,14 +157,14 @@ class XML /** * @brief Create an XML and append it to the parent object * - * @param object $doc XML root + * @param \DOMDocument $doc XML root * @param object $parent parent object * @param string $element XML element name * @param string $value XML value * @param array $attributes array containing the attributes * @return void */ - public static function addElement($doc, $parent, $element, $value = "", $attributes = []) + public static function addElement(\DOMDocument $doc, $parent, $element, $value = "", $attributes = []) { $element = self::createElement($doc, $element, $value, $attributes); $parent->appendChild($element); @@ -402,11 +402,11 @@ class XML /** * @brief Delete a node in a XML object * - * @param object $doc XML document + * @param \DOMDocument $doc XML document * @param string $node Node name * @return void */ - public static function deleteNode(&$doc, $node) + public static function deleteNode(\DOMDocument $doc, $node) { $xpath = new DOMXPath($doc); $list = $xpath->query("//".$node); @@ -431,7 +431,7 @@ class XML return $x; } - public static function getFirstNodeValue($xpath, $element, $context = null) + public static function getFirstNodeValue(DOMXPath $xpath, $element, $context = null) { $result = $xpath->evaluate($element, $context); if (!is_object($result)) { @@ -446,7 +446,7 @@ class XML return $first_item->nodeValue; } - public static function getFirstAttributes($xpath, $element, $context = null) + public static function getFirstAttributes(DOMXPath $xpath, $element, $context = null) { $result = $xpath->query($element, $context); if (!is_object($result)) { From f8c782380fa8acd90090e8f99a1e6eb228183fd5 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:52:28 -0500 Subject: [PATCH 211/728] Remove unused code/use statements --- src/Content/Text/HTML.php | 3 --- src/Module/Contact.php | 1 - src/Module/Inbox.php | 14 -------------- src/Protocol/ActivityPub/Transmitter.php | 1 - 4 files changed, 19 deletions(-) diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php index 7976b02e6b..47463bdd09 100644 --- a/src/Content/Text/HTML.php +++ b/src/Content/Text/HTML.php @@ -11,10 +11,7 @@ use Friendica\Content\Widget\ContactBlock; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Config; -use Friendica\Core\PConfig; -use Friendica\Core\Protocol; use Friendica\Core\Renderer; -use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Util\Network; use Friendica\Util\Proxy as ProxyUtils; diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 59f2627e33..230ad4b57b 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -8,7 +8,6 @@ use Friendica\Content\ContactSelector; use Friendica\Content\Nav; use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; -use Friendica\Content\Text\HTML; use Friendica\Content\Widget; use Friendica\Core\ACL; use Friendica\Core\Hook; diff --git a/src/Module/Inbox.php b/src/Module/Inbox.php index 25312bdf3a..e955f11a36 100644 --- a/src/Module/Inbox.php +++ b/src/Module/Inbox.php @@ -8,7 +8,6 @@ use Friendica\BaseModule; use Friendica\Protocol\ActivityPub; use Friendica\Core\System; use Friendica\Database\DBA; -use Friendica\Util\HTTPSignature; /** * ActivityPub Inbox @@ -25,19 +24,6 @@ class Inbox extends BaseModule System::httpExit(400); } -// Enable for test purposes -/* - if (HTTPSignature::getSigner($postdata, $_SERVER)) { - $filename = 'signed-activitypub'; - } else { - $filename = 'failed-activitypub'; - } - - $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::log('Incoming message stored under ' . $tempfile); -*/ if (!empty($a->argv[1])) { $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); if (!DBA::isResult($user)) { diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a44f5c8b59..05ce138794 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -23,7 +23,6 @@ use Friendica\Util\LDSignature; use Friendica\Model\Profile; use Friendica\Object\Image; use Friendica\Protocol\ActivityPub; -use Friendica\Protocol\Diaspora; use Friendica\Core\Cache; use Friendica\Util\Map; use Friendica\Util\Network; From 49c9b6f9ffc946c2eafe99a9930d30a3d72e6156 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:53:03 -0500 Subject: [PATCH 212/728] Fix possibly undefined variables --- src/Content/ForumManager.php | 2 ++ src/Content/Widget/TagCloud.php | 1 + src/Model/Event.php | 6 +++-- src/Model/Term.php | 1 + src/Module/Photo.php | 43 +++++++++++++++++---------------- 5 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/Content/ForumManager.php b/src/Content/ForumManager.php index d39ea30294..d0aefd3062 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/ForumManager.php @@ -105,6 +105,8 @@ class ForumManager if (DBA::isResult($contacts)) { $id = 0; + $entries = []; + foreach ($contacts as $contact) { $selected = (($cid == $contact['id']) ? ' forum-selected' : ''); diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index f2b94b1114..62301729b7 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -40,6 +40,7 @@ class TagCloud $contact = DBA::selectFirst('contact', ['url'], ['uid' => $uid, 'self' => true]); $url = System::removedBaseUrl($contact['url']); + $tags = []; foreach ($r as $rr) { $tag['level'] = $rr[2]; $tag['url'] = $url . '?tag=' . urlencode($rr[0]); diff --git a/src/Model/Event.php b/src/Model/Event.php index cd08c314af..3ce86017ba 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -644,15 +644,17 @@ class Event extends BaseObject */ private static function formatListForExport(array $events, $format) { + $o = ''; + if (!count($events)) { - return ''; + return $o; } switch ($format) { // Format the exported data as a CSV file. case "csv": header("Content-type: text/csv"); - $o = '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL; + $o .= '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL; foreach ($events as $event) { /// @todo The time / date entries don't include any information about the diff --git a/src/Model/Term.php b/src/Model/Term.php index 28c28fb1a9..6a213d445b 100644 --- a/src/Model/Term.php +++ b/src/Model/Term.php @@ -274,6 +274,7 @@ class Term 'network' => $item['author-network'], 'url' => $item['author-link']]; $tag['url'] = Contact::magicLinkByContact($author, $tag['url']); + $prefix = ''; if ($tag['type'] == TERM_HASHTAG) { if ($orig_tag != $tag['url']) { $item['body'] = str_replace($orig_tag, $tag['url'], $item['body']); diff --git a/src/Module/Photo.php b/src/Module/Photo.php index 994d0efa61..15ea261fb0 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -46,28 +46,29 @@ class Photo extends BaseModule } $customsize = 0; + $photo = false; switch($a->argc) { - case 4: - $customsize = intval($a->argv[2]); - $uid = self::stripExtension($a->argv[3]); - $photo = self::getAvatar($uid, $a->argv[1]); - break; - case 3: - $uid = self::stripExtension($a->argv[2]); - $photo = self::getAvatar($uid, $a->argv[1]); - break; - case 2: - $photoid = self::stripExtension($a->argv[1]); - $scale = 0; - if (substr($photoid, -2, 1) == "-") { - $scale = intval(substr($photoid, -1, 1)); - $photoid = substr($photoid, 0, -2); - } - $photo = MPhoto::getPhoto($photoid, $scale); - if ($photo === false) { - $photo = MPhoto::createPhotoForSystemResource("images/nosign.jpg"); - } - break; + case 4: + $customsize = intval($a->argv[2]); + $uid = self::stripExtension($a->argv[3]); + $photo = self::getAvatar($uid, $a->argv[1]); + break; + case 3: + $uid = self::stripExtension($a->argv[2]); + $photo = self::getAvatar($uid, $a->argv[1]); + break; + case 2: + $photoid = self::stripExtension($a->argv[1]); + $scale = 0; + if (substr($photoid, -2, 1) == "-") { + $scale = intval(substr($photoid, -1, 1)); + $photoid = substr($photoid, 0, -2); + } + $photo = MPhoto::getPhoto($photoid, $scale); + if ($photo === false) { + $photo = MPhoto::createPhotoForSystemResource("images/nosign.jpg"); + } + break; } if ($photo === false) { From ddad9721c024523232b944ea24d37ae8c7c69967 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:55:35 -0500 Subject: [PATCH 213/728] Fix query return type in Widget\TagCloud --- src/Content/Widget/TagCloud.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index 62301729b7..8413eccd19 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -89,7 +89,7 @@ class TagCloud } // Fetch tags - $r = DBA::p("SELECT `term`, COUNT(`term`) AS `total` FROM `term` + $tag_stmt = DBA::p("SELECT `term`, COUNT(`term`) AS `total` FROM `term` LEFT JOIN `item` ON `term`.`oid` = `item`.`id` WHERE `term`.`uid` = ? AND `term`.`type` = ? AND `term`.`otype` = ? @@ -100,10 +100,12 @@ class TagCloud $type, TERM_OBJ_POST ); - if (!DBA::isResult($r)) { + if (!DBA::isResult($tag_stmt)) { return []; } + $r = DBA::toArray($tag_stmt); + return self::tagCalc($r); } From df706484cdf2e7a066ff54ddeacc4175f27db964 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:56:15 -0500 Subject: [PATCH 214/728] User DOMDocument object call instead of static in Content\OEmbed --- src/Content/OEmbed.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 0093ba11af..7adff89086 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -86,7 +86,8 @@ class OEmbed $redirects = 0; $html_text = Network::fetchUrl($embedurl, false, $redirects, 15, 'text/*'); if ($html_text) { - $dom = @DOMDocument::loadHTML($html_text); + $dom = new DOMDocument(); + $dom->loadHTML($html_text); if ($dom) { $xpath = new DOMXPath($dom); $entries = $xpath->query("//link[@type='application/json+oembed']"); @@ -274,7 +275,8 @@ class OEmbed $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text)); // If it doesn't parse at all, just return the text. - $dom = @DOMDocument::loadHTML($html_text); + $dom = new DOMDocument(); + $dom->loadHTML($html_text); if (!$dom) { return $text; } From a6786ac81402ca58a9deef5719f1b31640fe1eb4 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:56:35 -0500 Subject: [PATCH 215/728] Update array notation in Protocol\DFRN --- src/Protocol/DFRN.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index e6524de965..5e6c733e21 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2513,7 +2513,7 @@ class DFRN $notice_info = $xpath->query("statusnet:notice_info", $entry); if ($notice_info && ($notice_info->length > 0)) { - foreach ($notice_info->item(0)->attributes as $attributes) { + foreach ($notice_info->item[0]->attributes as $attributes) { if ($attributes->name == "source") { $item["app"] = strip_tags($attributes->textContent); } @@ -2588,8 +2588,8 @@ class DFRN $item['conversation-uri'] = XML::getFirstNodeValue($xpath, 'ostatus:conversation/text()', $entry); $conv = $xpath->query('ostatus:conversation', $entry); - if (is_object($conv->item(0))) { - foreach ($conv->item(0)->attributes as $attributes) { + if (is_object($conv->item[0])) { + foreach ($conv->item[0]->attributes as $attributes) { if ($attributes->name == "ref") { $item['conversation-uri'] = $attributes->textContent; } @@ -2603,8 +2603,8 @@ class DFRN $item["parent-uri"] = $item["uri"]; $inreplyto = $xpath->query("thr:in-reply-to", $entry); - if (is_object($inreplyto->item(0))) { - foreach ($inreplyto->item(0)->attributes as $attributes) { + if (is_object($inreplyto->item[0])) { + foreach ($inreplyto->item[0]->attributes as $attributes) { if ($attributes->name == "ref") { $item["parent-uri"] = $attributes->textContent; } From c8979695891765a0d2f17b640ddf99cc3a9400e4 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 21 Jan 2019 16:56:48 -0500 Subject: [PATCH 216/728] Fix wrong variable name in Worker\Delivery --- src/Worker/Delivery.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 18654d5ed4..8e9b649c7b 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -94,7 +94,7 @@ class Delivery extends BaseObject } elseif (!empty($target_item['uid'])) { $uid = $target_item['uid']; } else { - Logger::log('Only public users for item ' . $item_id, Logger::DEBUG); + Logger::log('Only public users for item ' . $target_id, Logger::DEBUG); return; } From bfc0729752320ddc078fd737ac1f162d7bed0bf7 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 01:30:52 -0500 Subject: [PATCH 217/728] Use new log levels in admin log settings page --- mod/admin.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 97d7a8bfd6..cc2256b73d 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -34,6 +34,7 @@ use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; use Friendica\Util\Strings; use Friendica\Util\Temporal; +use Psr\Log\LogLevel; /** * Sets the current theme for theme settings pages. @@ -2497,7 +2498,7 @@ function admin_page_logs_post(App $a) $logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : ''); $debugging = !empty($_POST['debugging']); - $loglevel = (!empty($_POST['loglevel']) ? intval(trim($_POST['loglevel'])) : 0); + $loglevel = defaults($_POST, 'loglevel', LogLevel::ERROR); Config::set('system', 'logfile', $logfile); Config::set('system', 'debugging', $debugging); @@ -2529,12 +2530,11 @@ function admin_page_logs_post(App $a) function admin_page_logs(App $a) { $log_choices = [ - Logger::WARNING => 'Warning', - Logger::INFO => 'Info', - Logger::TRACE => 'Trace', - Logger::DEBUG => 'Debug', - Logger::DATA => 'Data', - Logger::ALL => 'All' + LogLevel::ERROR => 'Error', + LogLevel::WARNING => 'Warning', + LogLevel::NOTICE => 'Notice', + LogLevel::INFO => 'Info', + LogLevel::DEBUG => 'Debug', ]; if (ini_get('log_errors')) { From 7720b627998d4cd647bdb09debcf50a7123ac11d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 01:32:55 -0500 Subject: [PATCH 218/728] Change workerqueue.parameter to mediumtext for lisibility --- config/dbstructure.config.php | 4 ++-- database.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/dbstructure.config.php b/config/dbstructure.config.php index a4728c15d1..dcacce811e 100644 --- a/config/dbstructure.config.php +++ b/config/dbstructure.config.php @@ -34,7 +34,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1299); + define('DB_UPDATE_VERSION', 1300); } return [ @@ -1365,7 +1365,7 @@ return [ "comment" => "Background tasks queue entries", "fields" => [ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented worker task id"], - "parameter" => ["type" => "mediumblob", "comment" => "Task command"], + "parameter" => ["type" => "mediumtext", "comment" => "Task command"], "priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Task priority"], "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"], "pid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Process id of the worker"], diff --git a/database.sql b/database.sql index 7d0db4fa69..2102a9398a 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2019.03-dev (The Tazmans Flax-lily) --- DB_UPDATE_VERSION 1299 +-- DB_UPDATE_VERSION 1300 -- ------------------------------------------ @@ -1260,7 +1260,7 @@ CREATE TABLE IF NOT EXISTS `worker-ipc` ( -- CREATE TABLE IF NOT EXISTS `workerqueue` ( `id` int unsigned NOT NULL auto_increment COMMENT 'Auto incremented worker task id', - `parameter` mediumblob COMMENT 'Task command', + `parameter` mediumtext COMMENT 'Task command', `priority` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Task priority', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date', `pid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Process id of the worker', From 0d9209a74bffff8f9a025cf7fb03d5265293f0b9 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 12:15:42 -0500 Subject: [PATCH 219/728] Add AP Inbox logging back with config --- config/defaults.config.php | 5 +++++ src/Module/Inbox.php | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/config/defaults.config.php b/config/defaults.config.php index 90596a8fee..f16bd664cf 100644 --- a/config/defaults.config.php +++ b/config/defaults.config.php @@ -421,4 +421,9 @@ return [ // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes. 'lockpath' => '', ], + 'debug' => [ + // ap_inbox_log (Boolean) + // Logs every call to /inbox as a JSON file in Friendica's temporary directory + 'ap_inbox_log' => false, + ] ]; diff --git a/src/Module/Inbox.php b/src/Module/Inbox.php index e955f11a36..5fc1b15f1a 100644 --- a/src/Module/Inbox.php +++ b/src/Module/Inbox.php @@ -8,6 +8,7 @@ use Friendica\BaseModule; use Friendica\Protocol\ActivityPub; use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\Util\HTTPSignature; /** * ActivityPub Inbox @@ -24,6 +25,17 @@ class Inbox extends BaseModule System::httpExit(400); } + if (Config::get('debug', 'ap_inbox_log')) { + if (HTTPSignature::getSigner($postdata, $_SERVER)) { + $filename = 'signed-activitypub'; + } else { + $filename = 'failed-activitypub'; + } + $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::log('Incoming message stored under ' . $tempfile); + } + if (!empty($a->argv[1])) { $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); if (!DBA::isResult($user)) { From 004818ca1b37dac574eed7d528f02219b7394c29 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 12:19:15 -0500 Subject: [PATCH 220/728] Fix indentation in Module\Inbox --- src/Module/Inbox.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Module/Inbox.php b/src/Module/Inbox.php index 5fc1b15f1a..8842c66bcb 100644 --- a/src/Module/Inbox.php +++ b/src/Module/Inbox.php @@ -2,6 +2,7 @@ /** * @file src/Module/Inbox.php */ + namespace Friendica\Module; use Friendica\BaseModule; @@ -26,15 +27,15 @@ class Inbox extends BaseModule } if (Config::get('debug', 'ap_inbox_log')) { - if (HTTPSignature::getSigner($postdata, $_SERVER)) { - $filename = 'signed-activitypub'; - } else { - $filename = 'failed-activitypub'; - } - $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::log('Incoming message stored under ' . $tempfile); - } + if (HTTPSignature::getSigner($postdata, $_SERVER)) { + $filename = 'signed-activitypub'; + } else { + $filename = 'failed-activitypub'; + } + $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::log('Incoming message stored under ' . $tempfile); + } if (!empty($a->argv[1])) { $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); From 41136e53ccbb3ff3524481b9b129dcc2dff90d2d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 22 Jan 2019 22:02:35 -0500 Subject: [PATCH 221/728] [Travis] Update target PHP versions --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f9f9acff19..c66457325f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,10 @@ --- language: php -## Friendica supports PHP version >= 5.6.1 +## Friendica officially supports PHP version >= 7.1 php: - - 5.6 - - 7.0 - 7.1 - 7.2 + - 7.3 services: - mysql From 0fdab4ed10af43d25a8a4a8f1d7d0fd9f9d18eaa Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 23 Jan 2019 21:54:20 +0000 Subject: [PATCH 222/728] Fix for several fatal errors --- src/Content/OEmbed.php | 6 ++---- src/Content/Widget/ContactBlock.php | 6 +++--- src/Module/Inbox.php | 1 + src/Protocol/DFRN.php | 6 +++--- src/Protocol/OStatus.php | 4 ++-- src/Worker/Notifier.php | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 7adff89086..0093ba11af 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -86,8 +86,7 @@ class OEmbed $redirects = 0; $html_text = Network::fetchUrl($embedurl, false, $redirects, 15, 'text/*'); if ($html_text) { - $dom = new DOMDocument(); - $dom->loadHTML($html_text); + $dom = @DOMDocument::loadHTML($html_text); if ($dom) { $xpath = new DOMXPath($dom); $entries = $xpath->query("//link[@type='application/json+oembed']"); @@ -275,8 +274,7 @@ class OEmbed $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text)); // If it doesn't parse at all, just return the text. - $dom = new DOMDocument(); - $dom->loadHTML($html_text); + $dom = @DOMDocument::loadHTML($html_text); if (!$dom) { return $text; } diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php index 33f72af40e..fdc7a470f7 100644 --- a/src/Content/Widget/ContactBlock.php +++ b/src/Content/Widget/ContactBlock.php @@ -57,9 +57,9 @@ class ContactBlock $contacts_title = L10n::t('No contacts'); - if (!$total) { - $micropro = []; - } else { + $micropro = []; + + if ($total) { // Only show followed for personal accounts, followers for pages if (defaults($profile, 'account-type', User::ACCOUNT_TYPE_PERSON) == User::ACCOUNT_TYPE_PERSON) { $rel = [Contact::FOLLOWER, Contact::FRIEND]; diff --git a/src/Module/Inbox.php b/src/Module/Inbox.php index 8842c66bcb..c075dd6a63 100644 --- a/src/Module/Inbox.php +++ b/src/Module/Inbox.php @@ -10,6 +10,7 @@ use Friendica\Protocol\ActivityPub; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Util\HTTPSignature; +use Friendica\Core\Config; /** * ActivityPub Inbox diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 5e6c733e21..52790d46dd 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2512,7 +2512,7 @@ class DFRN } $notice_info = $xpath->query("statusnet:notice_info", $entry); - if ($notice_info && ($notice_info->length > 0)) { + if ($notice_info && ($notice_info->length > 0) && !empty($notice_info->item)) { foreach ($notice_info->item[0]->attributes as $attributes) { if ($attributes->name == "source") { $item["app"] = strip_tags($attributes->textContent); @@ -2588,7 +2588,7 @@ class DFRN $item['conversation-uri'] = XML::getFirstNodeValue($xpath, 'ostatus:conversation/text()', $entry); $conv = $xpath->query('ostatus:conversation', $entry); - if (is_object($conv->item[0])) { + if (!empty($conv->item[0])) { foreach ($conv->item[0]->attributes as $attributes) { if ($attributes->name == "ref") { $item['conversation-uri'] = $attributes->textContent; @@ -2603,7 +2603,7 @@ class DFRN $item["parent-uri"] = $item["uri"]; $inreplyto = $xpath->query("thr:in-reply-to", $entry); - if (is_object($inreplyto->item[0])) { + if (!empty($inreplyto->item[0])) { foreach ($inreplyto->item[0]->attributes as $attributes) { if ($attributes->name == "ref") { $item["parent-uri"] = $attributes->textContent; diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index b2d0004c06..051c0d6c8c 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -53,7 +53,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, array &$contact, $onlyfetch) + private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, &$contact, $onlyfetch) { $author = []; $author["author-link"] = XML::getFirstNodeValue($xpath, 'atom:author/atom:uri/text()', $context); @@ -322,7 +322,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function process($xml, array $importer, array &$contact, &$hub, $stored = false, $initialize = true) + private static function process($xml, array $importer, &$contact, &$hub, $stored = false, $initialize = true) { if ($initialize) { self::$itemlist = []; diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 9e5430e8fa..ef4e882492 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -152,7 +152,7 @@ class Notifier if (!empty($target_item) && !empty($items)) { $parent = $items[0]; - $delivery_queue_count += self::activityPubDelivery($cmd, $target_item, $parent, $a->queue['priority'], $a->query_string['created']); + $delivery_queue_count += self::activityPubDelivery($cmd, $target_item, $parent, $a->queue['priority'], defaults($a->query_string, 'created', '')); $fields = ['network', 'author-id', 'owner-id']; $condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]]; From 7e31cebb67a13479590188efa5383ec72181fe2e Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 23 Jan 2019 22:04:14 +0000 Subject: [PATCH 223/728] Parameters redone --- src/Protocol/OStatus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 051c0d6c8c..45071f82e2 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -53,7 +53,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, &$contact, $onlyfetch) + private static function fetchAuthor(DOMXPath $xpath, $context, array $importer, array &$contact = null, $onlyfetch) { $author = []; $author["author-link"] = XML::getFirstNodeValue($xpath, 'atom:author/atom:uri/text()', $context); @@ -322,7 +322,7 @@ class OStatus * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function process($xml, array $importer, &$contact, &$hub, $stored = false, $initialize = true) + private static function process($xml, array $importer, array &$contact = null, &$hub, $stored = false, $initialize = true) { if ($initialize) { self::$itemlist = []; From 3392c7a8be6b40931cce90f1e6d9360529d3e832 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 24 Jan 2019 00:34:14 +0000 Subject: [PATCH 224/728] Fixed "created" origin --- src/Worker/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index ef4e882492..512fbe8844 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -152,7 +152,7 @@ class Notifier if (!empty($target_item) && !empty($items)) { $parent = $items[0]; - $delivery_queue_count += self::activityPubDelivery($cmd, $target_item, $parent, $a->queue['priority'], defaults($a->query_string, 'created', '')); + $delivery_queue_count += self::activityPubDelivery($cmd, $target_item, $parent, $a->queue['priority'], $a->queue['created']); $fields = ['network', 'author-id', 'owner-id']; $condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]]; From 8a554fef2dbbce954bfc47da8e51cd323ad249de Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 23 Jan 2019 21:22:26 -0500 Subject: [PATCH 225/728] Fix missing library include in Database\DBstructure --- src/Database/DBStructure.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 39252beadf..7d52e60cae 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -12,6 +12,8 @@ use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Util\DateTimeFormat; +require_once 'include/dba.php'; + /** * @brief This class contain functions for the database management * From 46315f6946d69ac006eec937bdc83390a0d9e449 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 23 Jan 2019 21:22:39 -0500 Subject: [PATCH 226/728] Fix missing use statement in Module\Inbox --- src/Module/Inbox.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Module/Inbox.php b/src/Module/Inbox.php index c075dd6a63..1bc127b7c9 100644 --- a/src/Module/Inbox.php +++ b/src/Module/Inbox.php @@ -6,6 +6,7 @@ namespace Friendica\Module; use Friendica\BaseModule; +use Friendica\Core\Logger; use Friendica\Protocol\ActivityPub; use Friendica\Core\System; use Friendica\Database\DBA; From a286bc98c651e6ec471c64bfa331e9453993ca4e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 24 Jan 2019 01:25:01 -0500 Subject: [PATCH 227/728] Update requirements with PHP 7.1+, MySQL 5.6+ and MariaDB 10.0.5+ --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 19c9362567..b6107e0063 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -29,14 +29,14 @@ is self-signed). ## 1. Requirements - Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file -- PHP 5.6.1+ (PHP 7 recommended for performance). +- PHP 5.6.1+ (PHP 7.1+ recommended for performance and official support). - PHP *command line* with `register_argc_argv = true` in php.ini - curl, gd (with at least jpeg support), mysql, mbstring, xml, zip and openssl extensions - Some form of email server or email gateway such that PHP mail() works - The POSIX module of PHP needs to be activated (e.g. RHEL, CentOS have disabled it) - Composer for a Git install -- Mysql 5.5.3+ or an equivalant alternative for MySQL (MariaDB, Percona Server etc.) +- Mysql 5.6+ or an equivalent alternative for MySQL (MariaDB 10.0.5+, Percona Server etc.) - Ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks (Windows) - Installation into a top-level domain or sub-domain (without a directory/path component in the URL) is preferred. This is REQUIRED if you wish to communicate From 4664d42a463bdf9b072f471d217cbd27c9373424 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 24 Jan 2019 06:36:05 +0000 Subject: [PATCH 228/728] Updated composer.lock --- composer.lock | 78 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/composer.lock b/composer.lock index 9d5728fc2d..f91b833de7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8cf7268fbcae8a22a518b9e7727eab84", + "content-hash": "b944adfb6ede89430ba3b7e9ebb45acb", "packages": [ { "name": "asika/simple-console", @@ -1097,6 +1097,22 @@ "require": { "npm-asset/ev-emitter": ">=1.0.0,<2.0.0" }, + "require-dev": { + "npm-asset/chalk": ">=1.1.1,<2.0.0", + "npm-asset/cheerio": ">=0.19.0,<0.20.0", + "npm-asset/gulp": ">=3.9.0,<4.0.0", + "npm-asset/gulp-jshint": ">=1.11.2,<2.0.0", + "npm-asset/gulp-json-lint": ">=0.1.0,<0.2.0", + "npm-asset/gulp-rename": ">=1.2.2,<2.0.0", + "npm-asset/gulp-replace": ">=0.5.4,<0.6.0", + "npm-asset/gulp-requirejs-optimize": "dev-github:metafizzy/gulp-requirejs-optimize", + "npm-asset/gulp-uglify": ">=1.4.2,<2.0.0", + "npm-asset/gulp-util": ">=3.0.7,<4.0.0", + "npm-asset/highlight.js": ">=8.9.1,<9.0.0", + "npm-asset/marked": ">=0.3.5,<0.4.0", + "npm-asset/minimist": ">=1.2.0,<2.0.0", + "npm-asset/transfob": ">=1.0.0,<2.0.0" + }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1142,6 +1158,14 @@ "reference": null, "shasum": "2736e332aaee73ccf0a14a5f0066391a0a13f4a3" }, + "require-dev": { + "npm-asset/grunt": "~0.4.2", + "npm-asset/grunt-contrib-cssmin": "~0.9.0", + "npm-asset/grunt-contrib-jshint": "~0.6.3", + "npm-asset/grunt-contrib-less": "~0.11.0", + "npm-asset/grunt-contrib-uglify": "~0.4.0", + "npm-asset/grunt-contrib-watch": "~0.6.1" + }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1175,6 +1199,32 @@ "reference": null, "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02" }, + "require-dev": { + "npm-asset/commitplease": "2.0.0", + "npm-asset/core-js": "0.9.17", + "npm-asset/grunt": "0.4.5", + "npm-asset/grunt-babel": "5.0.1", + "npm-asset/grunt-cli": "0.1.13", + "npm-asset/grunt-compare-size": "0.4.0", + "npm-asset/grunt-contrib-jshint": "0.11.2", + "npm-asset/grunt-contrib-uglify": "0.9.2", + "npm-asset/grunt-contrib-watch": "0.6.1", + "npm-asset/grunt-git-authors": "2.0.1", + "npm-asset/grunt-jscs": "2.1.0", + "npm-asset/grunt-jsonlint": "1.0.4", + "npm-asset/grunt-npmcopy": "0.1.0", + "npm-asset/gzip-js": "0.3.2", + "npm-asset/jsdom": "5.6.1", + "npm-asset/load-grunt-tasks": "1.0.0", + "npm-asset/qunit-assert-step": "1.0.3", + "npm-asset/qunitjs": "1.17.1", + "npm-asset/requirejs": "2.1.17", + "npm-asset/sinon": "1.10.3", + "npm-asset/sizzle": "2.2.1", + "npm-asset/strip-json-comments": "1.0.3", + "npm-asset/testswarm": "1.1.0", + "npm-asset/win-spawn": "2.0.0" + }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1272,18 +1322,6 @@ "npm-asset/jquery-mousewheel": ">=3.1.13", "npm-asset/php-date-formatter": ">=1.3.4,<2.0.0" }, - "require-dev": { - "npm-asset/chai": ">=4.1.2,<5.0.0", - "npm-asset/concat": "dev-github:azer/concat", - "npm-asset/concat-cli": ">=4.0.0,<5.0.0", - "npm-asset/karma": ">=2.0.0,<3.0.0", - "npm-asset/karma-chai": ">=0.1.0,<0.2.0", - "npm-asset/karma-firefox-launcher": ">=1.1.0,<2.0.0", - "npm-asset/karma-mocha": ">=1.3.0,<2.0.0", - "npm-asset/mocha": ">=5.0.4,<6.0.0", - "npm-asset/uglifycss": ">=0.0.27,<0.0.28", - "npm-asset/uglifyjs": ">=2.4.10,<3.0.0" - }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -1337,6 +1375,12 @@ "reference": null, "shasum": "06f0335f16e353a695e7206bf50503cb523a6ee5" }, + "require-dev": { + "npm-asset/grunt": "~0.4.1", + "npm-asset/grunt-contrib-connect": "~0.5.0", + "npm-asset/grunt-contrib-jshint": "~0.7.1", + "npm-asset/grunt-contrib-uglify": "~0.2.7" + }, "type": "npm-asset-library", "extra": { "npm-asset-bugs": { @@ -2606,7 +2650,6 @@ "testing", "xunit" ], - "abandoned": true, "time": "2016-12-02T14:39:14+00:00" }, { @@ -3689,10 +3732,17 @@ "prefer-lowest": false, "platform": { "php": ">=5.6.1", + "ext-ctype": "*", "ext-curl": "*", "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", "ext-openssl": "*", + "ext-simplexml": "*", "ext-xml": "*" }, "platform-dev": [] From 7634663970741a885fd19ec5ebaec9985dc0fc97 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 24 Jan 2019 08:13:44 +0100 Subject: [PATCH 229/728] Adding an explicit FriendicaProcessor --- src/Util/Logger/FriendicaProcessor.php | 84 ++++++++++++++++++++++++++ src/Util/LoggerFactory.php | 7 +-- 2 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 src/Util/Logger/FriendicaProcessor.php diff --git a/src/Util/Logger/FriendicaProcessor.php b/src/Util/Logger/FriendicaProcessor.php new file mode 100644 index 0000000000..5b2487d8b2 --- /dev/null +++ b/src/Util/Logger/FriendicaProcessor.php @@ -0,0 +1,84 @@ +level = Logger::toMonologLevel($level); + $this->skipStackFramesCount = $skipStackFramesCount; + } + + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + + // skip first since it's always the current method + array_shift($trace); + // the call_user_func call is also skipped + array_shift($trace); + + $i = 0; + + while ($this->isSkippedFunction($trace, $i)) { + if (in_array($trace[$i]['function'], $this->skipFunctions)) { + $i++; + + continue; + } + + break; + } + + $i += $this->skipStackFramesCount; + + // we should have the call source now + $record['extra'] = array_merge( + $record['extra'], + [ + 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null, + 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null, + 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null, + ] + ); + + return $record; + } + + private function isSkippedFunction(array $trace, $index) + { + if (!isset($trace[$index])) { + return false; + } + + return in_array($trace[$index]['function'], $this->skipFunctions); + } +} diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php index 1e7bdcd160..88b6fe8c81 100644 --- a/src/Util/LoggerFactory.php +++ b/src/Util/LoggerFactory.php @@ -4,6 +4,7 @@ namespace Friendica\Util; use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Util\Logger\FriendicaDevelopHandler; +use Friendica\Util\Logger\FriendicaProcessor; use Monolog; use Psr\Log\LoggerInterface; use Psr\Log\LogLevel; @@ -27,9 +28,7 @@ class LoggerFactory $logger = new Monolog\Logger($channel); $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); - - // Add more information in case of a warning and more - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(LogLevel::WARNING, [], 1)); + $logger->pushProcessor(new FriendicaProcessor(LogLevel::DEBUG, 1)); return $logger; } @@ -52,8 +51,8 @@ class LoggerFactory $logger = new Monolog\Logger($channel); $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor()); $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor()); + $logger->pushProcessor(new FriendicaProcessor(LogLevel::DEBUG, 1)); - $logger->pushProcessor(new Monolog\Processor\IntrospectionProcessor(Loglevel::DEBUG, [], 1)); $logger->pushHandler(new FriendicaDevelopHandler($developerIp)); From b90c8c6346ee2c4fab363b6460eab56d38b8ca43 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 24 Jan 2019 14:23:42 +0000 Subject: [PATCH 230/728] Logger: Display the correct file, function and line number --- src/Util/Logger/FriendicaProcessor.php | 37 ++++++++------------------ 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/Util/Logger/FriendicaProcessor.php b/src/Util/Logger/FriendicaProcessor.php index 5b2487d8b2..21c6fcc031 100644 --- a/src/Util/Logger/FriendicaProcessor.php +++ b/src/Util/Logger/FriendicaProcessor.php @@ -22,6 +22,10 @@ class FriendicaProcessor implements ProcessorInterface 'call_user_func_array', ]; + private $skipFiles = [ + 'Logger.php' + ]; + /** * @param string|int $level The minimum logging level at which this Processor will be triggered * @param int $skipStackFramesCount If the logger should use information from other hierarchy levels of the call @@ -41,30 +45,20 @@ class FriendicaProcessor implements ProcessorInterface $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - // skip first since it's always the current method - array_shift($trace); - // the call_user_func call is also skipped - array_shift($trace); + $i = 1; - $i = 0; - - while ($this->isSkippedFunction($trace, $i)) { - if (in_array($trace[$i]['function'], $this->skipFunctions)) { - $i++; - - continue; - } - - break; + // Skip everything that we shouldn't display + while (in_array($trace[$i]['function'], $this->skipFunctions) || + !isset($trace[$i - 1]['file']) || + in_array(basename($trace[$i - 1]['file']), $this->skipFiles)) { + $i++; } - $i += $this->skipStackFramesCount; - // we should have the call source now $record['extra'] = array_merge( $record['extra'], [ - 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null, + 'file' => isset($trace[$i - 1]['file']) ? basename($trace[$i - 1]['file']) : null, 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null, 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null, ] @@ -72,13 +66,4 @@ class FriendicaProcessor implements ProcessorInterface return $record; } - - private function isSkippedFunction(array $trace, $index) - { - if (!isset($trace[$index])) { - return false; - } - - return in_array($trace[$index]['function'], $this->skipFunctions); - } } From 6fb2383116ce9bf721b96401348d320acbf48b56 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Thu, 24 Jan 2019 17:23:25 +0100 Subject: [PATCH 231/728] Added nofilter to geotag Fixes issue GH-6511 --- view/templates/jot-header.tpl | 2 +- view/theme/frio/templates/jot-header.tpl | 2 +- view/theme/smoothly/templates/jot-header.tpl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/view/templates/jot-header.tpl b/view/templates/jot-header.tpl index f37b67085e..bf0c99d3a2 100644 --- a/view/templates/jot-header.tpl +++ b/view/templates/jot-header.tpl @@ -230,7 +230,7 @@ function enableOnUser(){ $("#profile-jot-text").val(currentText + data); } - {{$geotag}} + {{$geotag nofilter}} diff --git a/view/theme/frio/templates/jot-header.tpl b/view/theme/frio/templates/jot-header.tpl index 73c7690f6e..70370e42eb 100644 --- a/view/theme/frio/templates/jot-header.tpl +++ b/view/theme/frio/templates/jot-header.tpl @@ -275,7 +275,7 @@ autosize.update($("#profile-jot-text")); } - {{$geotag}} + {{$geotag nofilter}} function jotShow() { var modal = $('#jot-modal').modal(); diff --git a/view/theme/smoothly/templates/jot-header.tpl b/view/theme/smoothly/templates/jot-header.tpl index 5eae0ce4bb..632481ce59 100644 --- a/view/theme/smoothly/templates/jot-header.tpl +++ b/view/theme/smoothly/templates/jot-header.tpl @@ -263,6 +263,6 @@ function enableOnUser(){ } - {{$geotag}} + {{$geotag nofilter}} From ebb84f5e434370596c303cde86c4ebc96fa3cdc5 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 24 Jan 2019 18:54:45 +0000 Subject: [PATCH 232/728] DFRN comments are now stored as comments again --- src/Protocol/DFRN.php | 12 ++++++------ src/Protocol/OStatus.php | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 52790d46dd..e6524de965 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2512,8 +2512,8 @@ class DFRN } $notice_info = $xpath->query("statusnet:notice_info", $entry); - if ($notice_info && ($notice_info->length > 0) && !empty($notice_info->item)) { - foreach ($notice_info->item[0]->attributes as $attributes) { + if ($notice_info && ($notice_info->length > 0)) { + foreach ($notice_info->item(0)->attributes as $attributes) { if ($attributes->name == "source") { $item["app"] = strip_tags($attributes->textContent); } @@ -2588,8 +2588,8 @@ class DFRN $item['conversation-uri'] = XML::getFirstNodeValue($xpath, 'ostatus:conversation/text()', $entry); $conv = $xpath->query('ostatus:conversation', $entry); - if (!empty($conv->item[0])) { - foreach ($conv->item[0]->attributes as $attributes) { + if (is_object($conv->item(0))) { + foreach ($conv->item(0)->attributes as $attributes) { if ($attributes->name == "ref") { $item['conversation-uri'] = $attributes->textContent; } @@ -2603,8 +2603,8 @@ class DFRN $item["parent-uri"] = $item["uri"]; $inreplyto = $xpath->query("thr:in-reply-to", $entry); - if (!empty($inreplyto->item[0])) { - foreach ($inreplyto->item[0]->attributes as $attributes) { + if (is_object($inreplyto->item(0))) { + foreach ($inreplyto->item(0)->attributes as $attributes) { if ($attributes->name == "ref") { $item["parent-uri"] = $attributes->textContent; } diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 45071f82e2..38105e452a 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -72,7 +72,7 @@ class OStatus } $author["author-id"] = Contact::getIdForURL($author["author-link"]); - $author["contact-id"] = $contact["id"]; + $author['contact-id'] = defaults($contact, 'id', $author['author-id']); $contact = []; From 7cba8942c749e2b3c48d15f9e3e5ede15b9ad942 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 24 Jan 2019 21:06:53 +0000 Subject: [PATCH 233/728] Fix: Connector posts now do work again (postopts hadn't been stored) --- src/Model/ItemDeliveryData.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/ItemDeliveryData.php b/src/Model/ItemDeliveryData.php index 8d273e22b9..1cd9c4f448 100644 --- a/src/Model/ItemDeliveryData.php +++ b/src/Model/ItemDeliveryData.php @@ -31,7 +31,7 @@ class ItemDeliveryData public static function extractFields(array &$fields) { $delivery_data = []; - foreach (ItemDeliveryData::FIELD_LIST as $key => $field) { + foreach (array_merge(ItemDeliveryData::FIELD_LIST, ItemDeliveryData::LEGACY_FIELD_LIST) as $key => $field) { if (is_int($key) && isset($fields[$field])) { // Legacy field moved from item table $delivery_data[$field] = $fields[$field]; From ae806a593dd87759c3d8b2dbf86d01fc3a2b6c3a Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 25 Jan 2019 01:15:43 +0100 Subject: [PATCH 234/728] BBCode - added preg_replacers for local [url] without target="_blank" --- src/Content/Text/BBCode.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 78f252b924..f225460645 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1361,7 +1361,16 @@ class BBCode extends BaseObject . ''; }, $text); - $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); + // We need no target="_blank" for local links + // convert links start with System::baseUrl() as local link + $escapedBaseUrl = str_replace('://', '\:\/\/', System::baseUrl()); + $text = preg_replace("/\[url\]($escapedBaseUrl)([$URLSearchString]*)\[\/url\]/ism", '$1$2', $text); + $text = preg_replace("/\[url\=($escapedBaseUrl)([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$3', $text); + // convert links that start with / as local link + $text = preg_replace("/\[url\](\/[$URLSearchString]*)\[\/url\]/ism", '$1', $text); + $text = preg_replace("/\[url\=(\/[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); + + $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); // Red compatibility, though the link can't be authenticated on Friendica From a505dbbe5ca3d28fe290d51b695abdf85fee7883 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 25 Jan 2019 01:25:06 +0100 Subject: [PATCH 235/728] BBCode - fixed code styling --- src/Content/Text/BBCode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index f225460645..b710dc13ec 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1370,7 +1370,7 @@ class BBCode extends BaseObject $text = preg_replace("/\[url\](\/[$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=(\/[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); - $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); + $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); // Red compatibility, though the link can't be authenticated on Friendica From 6ba08e510d1be9f56ca21bbf26d68d6417aa5882 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 25 Jan 2019 15:32:31 +0100 Subject: [PATCH 236/728] BBCode - removed convert for relative URLs --- src/Content/Text/BBCode.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index b710dc13ec..0818e28b1a 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1362,13 +1362,10 @@ class BBCode extends BaseObject }, $text); // We need no target="_blank" for local links - // convert links start with System::baseUrl() as local link + // convert links start with System::baseUrl() as local link without the target="_blank" attribute $escapedBaseUrl = str_replace('://', '\:\/\/', System::baseUrl()); $text = preg_replace("/\[url\]($escapedBaseUrl)([$URLSearchString]*)\[\/url\]/ism", '$1$2', $text); $text = preg_replace("/\[url\=($escapedBaseUrl)([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$3', $text); - // convert links that start with / as local link - $text = preg_replace("/\[url\](\/[$URLSearchString]*)\[\/url\]/ism", '$1', $text); - $text = preg_replace("/\[url\=(\/[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); From 71e58a0f424b06b22e2ab1257e03809c4653c131 Mon Sep 17 00:00:00 2001 From: Peter Liebetrau Date: Fri, 25 Jan 2019 16:56:28 +0100 Subject: [PATCH 237/728] BBCode - optimized preg escaping of searchstring --- src/Content/Text/BBCode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 0818e28b1a..b436fb20ec 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1363,7 +1363,7 @@ class BBCode extends BaseObject // We need no target="_blank" for local links // convert links start with System::baseUrl() as local link without the target="_blank" attribute - $escapedBaseUrl = str_replace('://', '\:\/\/', System::baseUrl()); + $escapedBaseUrl = preg_quote(System::baseUrl(), '/'); $text = preg_replace("/\[url\]($escapedBaseUrl)([$URLSearchString]*)\[\/url\]/ism", '$1$2', $text); $text = preg_replace("/\[url\=($escapedBaseUrl)([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$3', $text); From 54bec2bc8e69d7307ee819b7c10c6e05ac188110 Mon Sep 17 00:00:00 2001 From: Peter Liebetrau Date: Fri, 25 Jan 2019 17:25:42 +0100 Subject: [PATCH 238/728] BBCode - optimized preg searchstring --- src/Content/Text/BBCode.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index b436fb20ec..24118ef577 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1364,8 +1364,8 @@ class BBCode extends BaseObject // We need no target="_blank" for local links // convert links start with System::baseUrl() as local link without the target="_blank" attribute $escapedBaseUrl = preg_quote(System::baseUrl(), '/'); - $text = preg_replace("/\[url\]($escapedBaseUrl)([$URLSearchString]*)\[\/url\]/ism", '$1$2', $text); - $text = preg_replace("/\[url\=($escapedBaseUrl)([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$3', $text); + $text = preg_replace("/\[url\]($escapedBaseUrl[$URLSearchString]*)\[\/url\]/ism", '$1', $text); + $text = preg_replace("/\[url\=($escapedBaseUrl[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); From 41663c7592abe55a958632c3a48265e0a8544d2b Mon Sep 17 00:00:00 2001 From: Peter Liebetrau Date: Fri, 25 Jan 2019 17:33:25 +0100 Subject: [PATCH 239/728] BBCode - fixed syntax error --- src/Content/Text/BBCode.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 24118ef577..2c2054750c 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1364,8 +1364,8 @@ class BBCode extends BaseObject // We need no target="_blank" for local links // convert links start with System::baseUrl() as local link without the target="_blank" attribute $escapedBaseUrl = preg_quote(System::baseUrl(), '/'); - $text = preg_replace("/\[url\]($escapedBaseUrl[$URLSearchString]*)\[\/url\]/ism", '$1', $text); - $text = preg_replace("/\[url\=($escapedBaseUrl[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); + $text = preg_replace("/\[url\](".$escapedBaseUrl."[$URLSearchString]*)\[\/url\]/ism", '$1', $text); + $text = preg_replace("/\[url\=(".$escapedBaseUrl."[$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $text); $text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $text); From 8b8187ee9cdc828ca3a977753ef010e1fa8ebc54 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 25 Jan 2019 19:37:37 +0100 Subject: [PATCH 240/728] added nofilter to banner in smoothy and quaddro --- view/theme/quattro/templates/nav.tpl | 2 +- view/theme/smoothly/templates/nav.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/quattro/templates/nav.tpl b/view/theme/quattro/templates/nav.tpl index f002e72feb..cb5412c161 100644 --- a/view/theme/quattro/templates/nav.tpl +++ b/view/theme/quattro/templates/nav.tpl @@ -2,7 +2,7 @@ {{* {{$langselector}} *}}
{{$sitelocation}}
- +