Merge remote-tracking branch 'upstream/develop' into lemmy
This commit is contained in:
commit
8a50101eea
|
@ -367,6 +367,7 @@ class Conversation
|
||||||
'$eduline' => $this->l10n->t('Underline'),
|
'$eduline' => $this->l10n->t('Underline'),
|
||||||
'$edquote' => $this->l10n->t('Quote'),
|
'$edquote' => $this->l10n->t('Quote'),
|
||||||
'$edemojis' => $this->l10n->t('Add emojis'),
|
'$edemojis' => $this->l10n->t('Add emojis'),
|
||||||
|
'$contentwarn' => $this->l10n->t('Content Warning'),
|
||||||
'$edcode' => $this->l10n->t('Code'),
|
'$edcode' => $this->l10n->t('Code'),
|
||||||
'$edimg' => $this->l10n->t('Image'),
|
'$edimg' => $this->l10n->t('Image'),
|
||||||
'$edurl' => $this->l10n->t('Link'),
|
'$edurl' => $this->l10n->t('Link'),
|
||||||
|
|
|
@ -472,6 +472,8 @@ class Widget
|
||||||
// Set the start and end date to the beginning of the month
|
// Set the start and end date to the beginning of the month
|
||||||
$cutoffday = $dthen;
|
$cutoffday = $dthen;
|
||||||
$thisday = substr($dnow, 4);
|
$thisday = substr($dnow, 4);
|
||||||
|
$nextday = date('Y-m-d', strtotime($dnow . ' + 1 day'));
|
||||||
|
$nextday = substr($nextday, 4);
|
||||||
$dnow = substr($dnow, 0, 8) . '01';
|
$dnow = substr($dnow, 0, 8) . '01';
|
||||||
$dthen = substr($dthen, 0, 8) . '01';
|
$dthen = substr($dthen, 0, 8) . '01';
|
||||||
|
|
||||||
|
@ -515,6 +517,7 @@ class Widget
|
||||||
'$showmore' => DI::l10n()->t('show more'),
|
'$showmore' => DI::l10n()->t('show more'),
|
||||||
'$onthisdate' => DI::l10n()->t('On this date'),
|
'$onthisdate' => DI::l10n()->t('On this date'),
|
||||||
'$thisday' => $thisday,
|
'$thisday' => $thisday,
|
||||||
|
'$nextday' => $nextday,
|
||||||
'$cutoffday' => $cutoffday
|
'$cutoffday' => $cutoffday
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -752,8 +752,8 @@ class Database
|
||||||
@file_put_contents(
|
@file_put_contents(
|
||||||
$this->config->get('system', 'db_log'),
|
$this->config->get('system', 'db_log'),
|
||||||
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
basename($backtrace[1]['file']) . "\t" .
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
$backtrace[1]['line'] . "\t" . $backtrace[2]['function'] . "\t" .
|
||||||
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
|
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
|
||||||
FILE_APPEND
|
FILE_APPEND
|
||||||
);
|
);
|
||||||
|
|
|
@ -2595,7 +2595,7 @@ class Contact
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function updateFromProbe(int $id, string $network = '')
|
public static function updateFromProbe(int $id, string $network = ''): bool
|
||||||
{
|
{
|
||||||
$contact = DBA::selectFirst('contact', ['uid', 'url'], ['id' => $id]);
|
$contact = DBA::selectFirst('contact', ['uid', 'url'], ['id' => $id]);
|
||||||
if (!DBA::isResult($contact)) {
|
if (!DBA::isResult($contact)) {
|
||||||
|
|
|
@ -191,7 +191,8 @@ class Compose extends BaseModule
|
||||||
'editalic' => $this->l10n->t('Italic'),
|
'editalic' => $this->l10n->t('Italic'),
|
||||||
'eduline' => $this->l10n->t('Underline'),
|
'eduline' => $this->l10n->t('Underline'),
|
||||||
'edquote' => $this->l10n->t('Quote'),
|
'edquote' => $this->l10n->t('Quote'),
|
||||||
'$edemojis' => $this->l10n->t('Add emojis'),
|
'edemojis' => $this->l10n->t('Add emojis'),
|
||||||
|
'contentwarn' => $this->l10n->t('Content Warning'),
|
||||||
'edcode' => $this->l10n->t('Code'),
|
'edcode' => $this->l10n->t('Code'),
|
||||||
'edimg' => $this->l10n->t('Image'),
|
'edimg' => $this->l10n->t('Image'),
|
||||||
'edurl' => $this->l10n->t('Link'),
|
'edurl' => $this->l10n->t('Link'),
|
||||||
|
|
|
@ -130,8 +130,8 @@ class Magic extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = [
|
$header = [
|
||||||
'Accept' => ['application/x-dfrn+json', 'application/x-zot+json'],
|
'Accept' => 'application/x-dfrn+json, application/x-zot+json',
|
||||||
'X-Open-Web-Auth' => [Strings::getRandomHex()],
|
'X-Open-Web-Auth' => Strings::getRandomHex()
|
||||||
];
|
];
|
||||||
|
|
||||||
// Create a header that is signed with the local users private key.
|
// Create a header that is signed with the local users private key.
|
||||||
|
|
|
@ -1180,7 +1180,6 @@ class Probe
|
||||||
$data = self::pollHcard($profile_link, $data, true);
|
$data = self::pollHcard($profile_link, $data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
$prof_data = [];
|
|
||||||
|
|
||||||
if (empty($data['addr']) || empty($data['nick'])) {
|
if (empty($data['addr']) || empty($data['nick'])) {
|
||||||
$probe_data = self::uri($profile_link);
|
$probe_data = self::uri($profile_link);
|
||||||
|
@ -1188,15 +1187,17 @@ class Probe
|
||||||
$data['nick'] = ($data['nick'] ?? '') ?: $probe_data['nick'];
|
$data['nick'] = ($data['nick'] ?? '') ?: $probe_data['nick'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$prof_data['addr'] = $data['addr'];
|
$prof_data = [
|
||||||
$prof_data['nick'] = $data['nick'];
|
'addr' => $data['addr'],
|
||||||
$prof_data['dfrn-request'] = $data['request'] ?? null;
|
'nick' => $data['nick'],
|
||||||
$prof_data['dfrn-confirm'] = $data['confirm'] ?? null;
|
'dfrn-request' => $data['request'] ?? null,
|
||||||
$prof_data['dfrn-notify'] = $data['notify'] ?? null;
|
'dfrn-confirm' => $data['confirm'] ?? null,
|
||||||
$prof_data['dfrn-poll'] = $data['poll'] ?? null;
|
'dfrn-notify' => $data['notify'] ?? null,
|
||||||
$prof_data['photo'] = $data['photo'] ?? null;
|
'dfrn-poll' => $data['poll'] ?? null,
|
||||||
$prof_data['fn'] = $data['name'] ?? null;
|
'photo' => $data['photo'] ?? null,
|
||||||
$prof_data['key'] = $data['pubkey'] ?? null;
|
'fn' => $data['name'] ?? null,
|
||||||
|
'key' => $data['pubkey'] ?? null,
|
||||||
|
];
|
||||||
|
|
||||||
Logger::debug('Result', ['link' => $profile_link, 'data' => $prof_data]);
|
Logger::debug('Result', ['link' => $profile_link, 'data' => $prof_data]);
|
||||||
|
|
||||||
|
|
|
@ -1086,6 +1086,7 @@ class Post
|
||||||
'$edbold' => DI::l10n()->t('Bold'),
|
'$edbold' => DI::l10n()->t('Bold'),
|
||||||
'$editalic' => DI::l10n()->t('Italic'),
|
'$editalic' => DI::l10n()->t('Italic'),
|
||||||
'$eduline' => DI::l10n()->t('Underline'),
|
'$eduline' => DI::l10n()->t('Underline'),
|
||||||
|
'$contentwarn' => DI::l10n()->t('Content Warning'),
|
||||||
'$edquote' => DI::l10n()->t('Quote'),
|
'$edquote' => DI::l10n()->t('Quote'),
|
||||||
'$edemojis' => DI::l10n()->t('Add emojis'),
|
'$edemojis' => DI::l10n()->t('Add emojis'),
|
||||||
'$edcode' => DI::l10n()->t('Code'),
|
'$edcode' => DI::l10n()->t('Code'),
|
||||||
|
|
|
@ -267,7 +267,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -281,7 +281,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ class Diaspora
|
||||||
|
|
||||||
if (!$base) {
|
if (!$base) {
|
||||||
Logger::notice('unable to locate salmon data in xml');
|
Logger::notice('unable to locate salmon data in xml');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -444,14 +444,11 @@ class Diaspora
|
||||||
$encoding = $base->encoding;
|
$encoding = $base->encoding;
|
||||||
$alg = $base->alg;
|
$alg = $base->alg;
|
||||||
|
|
||||||
|
|
||||||
$signed_data = $data . '.' . Strings::base64UrlEncode($type) . '.' . Strings::base64UrlEncode($encoding) . '.' . Strings::base64UrlEncode($alg);
|
$signed_data = $data . '.' . Strings::base64UrlEncode($type) . '.' . Strings::base64UrlEncode($encoding) . '.' . Strings::base64UrlEncode($alg);
|
||||||
|
|
||||||
|
|
||||||
// decode the data
|
// decode the data
|
||||||
$data = Strings::base64UrlDecode($data);
|
$data = Strings::base64UrlDecode($data);
|
||||||
|
|
||||||
|
|
||||||
if ($public) {
|
if ($public) {
|
||||||
$inner_decrypted = $data;
|
$inner_decrypted = $data;
|
||||||
} else {
|
} else {
|
||||||
|
@ -467,14 +464,14 @@ class Diaspora
|
||||||
$key = self::key($author);
|
$key = self::key($author);
|
||||||
if (!$key) {
|
if (!$key) {
|
||||||
Logger::notice('Could not retrieve author key.');
|
Logger::notice('Could not retrieve author key.');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
|
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
|
||||||
|
|
||||||
if (!$verify) {
|
if (!$verify) {
|
||||||
Logger::notice('Message did not verify. Discarding.');
|
Logger::notice('Message did not verify. Discarding.');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::info('Message verified.');
|
Logger::info('Message verified.');
|
||||||
|
@ -499,8 +496,7 @@ class Diaspora
|
||||||
*/
|
*/
|
||||||
public static function dispatchPublic(array $msg, int $direction)
|
public static function dispatchPublic(array $msg, int $direction)
|
||||||
{
|
{
|
||||||
$enabled = intval(DI::config()->get('system', 'diaspora_enabled'));
|
if (!DI::config()->get('system', 'diaspora_enabled')) {
|
||||||
if (!$enabled) {
|
|
||||||
Logger::notice('Diaspora is disabled');
|
Logger::notice('Diaspora is disabled');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -940,7 +936,7 @@ class Diaspora
|
||||||
{
|
{
|
||||||
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
||||||
if (DBA::isResult($item)) {
|
if (DBA::isResult($item)) {
|
||||||
Logger::notice('Message ' . $guid . ' already exists for user ' . $uid);
|
Logger::notice('Message already exists.', ['uid' => $uid, 'guid' => $guid, 'id' => $item['id']]);
|
||||||
return $item['id'];
|
return $item['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -951,6 +947,7 @@ class Diaspora
|
||||||
* Checks for links to posts in a message
|
* Checks for links to posts in a message
|
||||||
*
|
*
|
||||||
* @param array $item The item array
|
* @param array $item The item array
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function fetchGuid(array $item)
|
private static function fetchGuid(array $item)
|
||||||
|
@ -2569,19 +2566,21 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @param int $uriid
|
* @param int $uriid
|
||||||
* @param object $photo
|
* @param object $photo
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function storePhotoAsMedia(int $uriid, $photo)
|
private static function storePhotoAsMedia(int $uriid, $photo)
|
||||||
{
|
{
|
||||||
// @TODO Need to find object type, roland@f.haeder.net
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
Logger::debug('photo=' . get_class($photo));
|
Logger::debug('photo=' . get_class($photo));
|
||||||
$data = [];
|
$data = [
|
||||||
$data['uri-id'] = $uriid;
|
'uri-id' => $uriid,
|
||||||
$data['type'] = Post\Media::IMAGE;
|
'type' => Post\Media::IMAGE,
|
||||||
$data['url'] = XML::unescape($photo->remote_photo_path) . XML::unescape($photo->remote_photo_name);
|
'url' => XML::unescape($photo->remote_photo_path) . XML::unescape($photo->remote_photo_name),
|
||||||
$data['height'] = (int)XML::unescape($photo->height ?? 0);
|
'height' => (int)XML::unescape($photo->height ?? 0),
|
||||||
$data['width'] = (int)XML::unescape($photo->width ?? 0);
|
'width' => (int)XML::unescape($photo->width ?? 0),
|
||||||
$data['description'] = XML::unescape($photo->text ?? '');
|
'description' => XML::unescape($photo->text ?? ''),
|
||||||
|
];
|
||||||
|
|
||||||
Post\Media::insert($data);
|
Post\Media::insert($data);
|
||||||
}
|
}
|
||||||
|
@ -2653,7 +2652,25 @@ class Diaspora
|
||||||
|
|
||||||
$raw_body = $body = Markdown::toBBCode($text);
|
$raw_body = $body = Markdown::toBBCode($text);
|
||||||
|
|
||||||
$datarray = [];
|
$datarray = [
|
||||||
|
'guid' => $guid,
|
||||||
|
'uri-id' => ItemURI::insert(['uri' => $guid, 'guid' => $guid]),
|
||||||
|
'uid' => $importer['uid'],
|
||||||
|
'contact-id' => $contact['id'],
|
||||||
|
'network' => Protocol::DIASPORA,
|
||||||
|
'author-link' => $contact['url'],
|
||||||
|
'author-id' => Contact::getIdForURL($contact['url'], 0),
|
||||||
|
'verb' => Activity::POST,
|
||||||
|
'gravity' => Item::GRAVITY_PARENT,
|
||||||
|
'protocol' => Conversation::PARCEL_DIASPORA,
|
||||||
|
'source' => $xml,
|
||||||
|
'body' => self::replacePeopleGuid($body, $contact['url']),
|
||||||
|
'raw-body' => self::replacePeopleGuid($raw_body, $contact['url']),
|
||||||
|
'private' => (($public == 'false') ? Item::PRIVATE : Item::PUBLIC),
|
||||||
|
// Default is note (aka. comment), later below is being checked the real type
|
||||||
|
'object-type' => Activity\ObjectType::NOTE,
|
||||||
|
'post-type' => Item::PT_NOTE,
|
||||||
|
];
|
||||||
|
|
||||||
$datarray['guid'] = $guid;
|
$datarray['guid'] = $guid;
|
||||||
$datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
|
$datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
|
||||||
|
@ -2668,11 +2685,7 @@ class Diaspora
|
||||||
$datarray['object-type'] = Activity\ObjectType::IMAGE;
|
$datarray['object-type'] = Activity\ObjectType::IMAGE;
|
||||||
$datarray['post-type'] = Item::PT_IMAGE;
|
$datarray['post-type'] = Item::PT_IMAGE;
|
||||||
} elseif ($data->poll) {
|
} elseif ($data->poll) {
|
||||||
$datarray['object-type'] = Activity\ObjectType::NOTE;
|
|
||||||
$datarray['post-type'] = Item::PT_POLL;
|
$datarray['post-type'] = Item::PT_POLL;
|
||||||
} else {
|
|
||||||
$datarray['object-type'] = Activity\ObjectType::NOTE;
|
|
||||||
$datarray['post-type'] = Item::PT_NOTE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @todo enable support for polls
|
/// @todo enable support for polls
|
||||||
|
@ -2684,27 +2697,6 @@ class Diaspora
|
||||||
|
|
||||||
/// @todo enable support for events
|
/// @todo enable support for events
|
||||||
|
|
||||||
$datarray['uid'] = $importer['uid'];
|
|
||||||
$datarray['contact-id'] = $contact['id'];
|
|
||||||
$datarray['network'] = Protocol::DIASPORA;
|
|
||||||
|
|
||||||
$datarray['author-link'] = $contact['url'];
|
|
||||||
$datarray['author-id'] = Contact::getIdForURL($contact['url'], 0);
|
|
||||||
|
|
||||||
$datarray['owner-link'] = $datarray['author-link'];
|
|
||||||
$datarray['owner-id'] = $datarray['author-id'];
|
|
||||||
|
|
||||||
$datarray['verb'] = Activity::POST;
|
|
||||||
$datarray['gravity'] = Item::GRAVITY_PARENT;
|
|
||||||
|
|
||||||
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
|
|
||||||
$datarray['source'] = $xml;
|
|
||||||
|
|
||||||
$datarray = self::setDirection($datarray, $direction);
|
|
||||||
|
|
||||||
$datarray['body'] = self::replacePeopleGuid($body, $contact['url']);
|
|
||||||
$datarray['raw-body'] = self::replacePeopleGuid($raw_body, $contact['url']);
|
|
||||||
|
|
||||||
self::storeMentions($datarray['uri-id'], $text);
|
self::storeMentions($datarray['uri-id'], $text);
|
||||||
Tag::storeRawTagsFromBody($datarray['uri-id'], $datarray['body']);
|
Tag::storeRawTagsFromBody($datarray['uri-id'], $datarray['body']);
|
||||||
|
|
||||||
|
@ -2718,7 +2710,6 @@ class Diaspora
|
||||||
}
|
}
|
||||||
|
|
||||||
$datarray['plink'] = self::plink($author, $guid);
|
$datarray['plink'] = self::plink($author, $guid);
|
||||||
$datarray['private'] = (($public == 'false') ? Item::PRIVATE : Item::PUBLIC);
|
|
||||||
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
|
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
|
||||||
|
|
||||||
if (isset($address['address'])) {
|
if (isset($address['address'])) {
|
||||||
|
@ -2839,7 +2830,7 @@ class Diaspora
|
||||||
public static function buildMagicEnvelope(string $msg, array $user): string
|
public static function buildMagicEnvelope(string $msg, array $user): string
|
||||||
{
|
{
|
||||||
$b64url_data = Strings::base64UrlEncode($msg);
|
$b64url_data = Strings::base64UrlEncode($msg);
|
||||||
$data = str_replace(["\n", "\r", " ", "\t"], ['', '', '', ''], $b64url_data);
|
$data = str_replace(["\n", "\r", ' ', "\t"], ['', '', '', ''], $b64url_data);
|
||||||
|
|
||||||
$key_id = Strings::base64UrlEncode(self::myHandle($user));
|
$key_id = Strings::base64UrlEncode(self::myHandle($user));
|
||||||
$type = 'application/xml';
|
$type = 'application/xml';
|
||||||
|
|
|
@ -385,12 +385,14 @@ class OStatus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = [];
|
// Initial header elements
|
||||||
$header['uid'] = $importer['uid'];
|
$header = [
|
||||||
$header['network'] = Protocol::OSTATUS;
|
'uid' => $importer['uid'],
|
||||||
$header['wall'] = 0;
|
'network' => Protocol::OSTATUS,
|
||||||
$header['origin'] = 0;
|
'wall' => 0,
|
||||||
$header['gravity'] = Item::GRAVITY_COMMENT;
|
'origin' => 0,
|
||||||
|
'gravity' => Item::GRAVITY_COMMENT,
|
||||||
|
];
|
||||||
|
|
||||||
if (!is_object($doc->firstChild) || empty($doc->firstChild->tagName)) {
|
if (!is_object($doc->firstChild) || empty($doc->firstChild->tagName)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -32,12 +32,12 @@ use PragmaRX\Random\Random;
|
||||||
*/
|
*/
|
||||||
class AppSpecificPassword
|
class AppSpecificPassword
|
||||||
{
|
{
|
||||||
public static function countForUser($uid)
|
public static function countForUser(int $uid)
|
||||||
{
|
{
|
||||||
return DBA::count('2fa_app_specific_password', ['uid' => $uid]);
|
return DBA::count('2fa_app_specific_password', ['uid' => $uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function checkDuplicateForUser($uid, $description)
|
public static function checkDuplicateForUser(int $uid, string $description): bool
|
||||||
{
|
{
|
||||||
return DBA::exists('2fa_app_specific_password', ['uid' => $uid, 'description' => $description]);
|
return DBA::exists('2fa_app_specific_password', ['uid' => $uid, 'description' => $description]);
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ class AppSpecificPassword
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function authenticateUser($uid, $plaintextPassword)
|
public static function authenticateUser(int $uid, string $plaintextPassword): bool
|
||||||
{
|
{
|
||||||
$appSpecificPasswords = self::getListForUser($uid);
|
$appSpecificPasswords = self::getListForUser($uid);
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ class AppSpecificPassword
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getListForUser($uid)
|
public static function getListForUser(int $uid): array
|
||||||
{
|
{
|
||||||
$appSpecificPasswordsStmt = DBA::select('2fa_app_specific_password', ['id', 'description', 'hashed_password', 'last_used'], ['uid' => $uid]);
|
$appSpecificPasswordsStmt = DBA::select('2fa_app_specific_password', ['id', 'description', 'hashed_password', 'last_used'], ['uid' => $uid]);
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ class AppSpecificPassword
|
||||||
* @return array The new app-specific password data structure with the plaintext password added
|
* @return array The new app-specific password data structure with the plaintext password added
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function generateForUser(int $uid, $description)
|
public static function generateForUser(int $uid, string $description): array
|
||||||
{
|
{
|
||||||
$Random = (new Random())->size(40);
|
$Random = (new Random())->size(40);
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ class AppSpecificPassword
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function update($appSpecificPasswordId, $fields)
|
private static function update(int $appSpecificPasswordId, array $fields)
|
||||||
{
|
{
|
||||||
return DBA::update('2fa_app_specific_password', $fields, ['id' => $appSpecificPasswordId]);
|
return DBA::update('2fa_app_specific_password', $fields, ['id' => $appSpecificPasswordId]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,11 @@ class RecoveryCode
|
||||||
* Returns the number of code the provided users can still use to replace a TOTP code
|
* Returns the number of code the provided users can still use to replace a TOTP code
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
*
|
||||||
* @return int
|
* @return int
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function countValidForUser($uid)
|
public static function countValidForUser(int $uid): int
|
||||||
{
|
{
|
||||||
return DBA::count('2fa_recovery_codes', ['uid' => $uid, 'used' => null]);
|
return DBA::count('2fa_recovery_codes', ['uid' => $uid, 'used' => null]);
|
||||||
}
|
}
|
||||||
|
@ -48,10 +49,11 @@ class RecoveryCode
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
* @param string $code
|
* @param string $code
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function existsForUser($uid, $code)
|
public static function existsForUser(int $uid, string $code): bool
|
||||||
{
|
{
|
||||||
return DBA::exists('2fa_recovery_codes', ['uid' => $uid, 'code' => $code, 'used' => null]);
|
return DBA::exists('2fa_recovery_codes', ['uid' => $uid, 'code' => $code, 'used' => null]);
|
||||||
}
|
}
|
||||||
|
@ -60,10 +62,11 @@ class RecoveryCode
|
||||||
* Returns a complete list of all recovery codes for the provided user, including the used status
|
* Returns a complete list of all recovery codes for the provided user, including the used status
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getListForUser($uid)
|
public static function getListForUser(int $uid): array
|
||||||
{
|
{
|
||||||
$codesStmt = DBA::select('2fa_recovery_codes', ['code', 'used'], ['uid' => $uid]);
|
$codesStmt = DBA::select('2fa_recovery_codes', ['code', 'used'], ['uid' => $uid]);
|
||||||
|
|
||||||
|
@ -76,10 +79,11 @@ class RecoveryCode
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
* @param string $code
|
* @param string $code
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function markUsedForUser($uid, $code)
|
public static function markUsedForUser(int $uid, string $code): bool
|
||||||
{
|
{
|
||||||
DBA::update('2fa_recovery_codes', ['used' => DateTimeFormat::utcNow()], ['uid' => $uid, 'code' => $code, 'used' => null]);
|
DBA::update('2fa_recovery_codes', ['used' => DateTimeFormat::utcNow()], ['uid' => $uid, 'code' => $code, 'used' => null]);
|
||||||
|
|
||||||
|
@ -91,9 +95,11 @@ class RecoveryCode
|
||||||
* Generates 12 codes constituted of 2 blocks of 6 characters separated by a dash.
|
* Generates 12 codes constituted of 2 blocks of 6 characters separated by a dash.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function generateForUser($uid)
|
public static function generateForUser(int $uid)
|
||||||
{
|
{
|
||||||
$Random = (new Random())->pattern('[a-z0-9]');
|
$Random = (new Random())->pattern('[a-z0-9]');
|
||||||
|
|
||||||
|
@ -120,9 +126,11 @@ class RecoveryCode
|
||||||
* Deletes all the recovery codes for the provided user.
|
* Deletes all the recovery codes for the provided user.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function deleteForUser($uid)
|
public static function deleteForUser(int $uid)
|
||||||
{
|
{
|
||||||
DBA::delete('2fa_recovery_codes', ['uid' => $uid]);
|
DBA::delete('2fa_recovery_codes', ['uid' => $uid]);
|
||||||
}
|
}
|
||||||
|
@ -131,9 +139,11 @@ class RecoveryCode
|
||||||
* Replaces the existing recovery codes for the provided user by a freshly generated set.
|
* Replaces the existing recovery codes for the provided user by a freshly generated set.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function regenerateForUser($uid)
|
public static function regenerateForUser(int $uid)
|
||||||
{
|
{
|
||||||
self::deleteForUser($uid);
|
self::deleteForUser($uid);
|
||||||
self::generateForUser($uid);
|
self::generateForUser($uid);
|
||||||
|
|
|
@ -143,6 +143,7 @@ class TrustedBrowser
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $local_user
|
* @param int $local_user
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function removeAllForUser(int $local_user): bool
|
public function removeAllForUser(int $local_user): bool
|
||||||
|
|
|
@ -124,8 +124,8 @@ G1vVmRgkLDqhc4+r3wDz3qy6JpV7tg==
|
||||||
-----END PRIVATE KEY-----',
|
-----END PRIVATE KEY-----',
|
||||||
'keyId' => 'acct:admin@friendica.local',
|
'keyId' => 'acct:admin@friendica.local',
|
||||||
'header' => [
|
'header' => [
|
||||||
'Accept' => ['application/x-dfrn+json', 'application/x-zot+json'],
|
'Accept' => 'application/x-dfrn+json, application/x-zot+json',
|
||||||
'X-Open-Web-Auth' => ['1dde649b855fd1aae542a91c4edd8c3a7a4c59d8eaf3136cdee05dfc16a30bac'],
|
'X-Open-Web-Auth' => '1dde649b855fd1aae542a91c4edd8c3a7a4c59d8eaf3136cdee05dfc16a30bac'
|
||||||
],
|
],
|
||||||
'signature' => 'Signature keyId="acct:admin@friendica.local",algorithm="rsa-sha512",headers="accept x-open-web-auth",signature="cb09/wdmRdFhrQUczL0lR6LTkVh8qb/vYh70DFCW40QrzvuUYHzJ+GqqJW6tcCb2rXP4t+aobWKfZ4wFMBtVbejAiCgF01pzEBJfDevdyu7khlfKo+Gtw1CGk4/0so1QmqASeHdlG3ID3GnmuovqZn2v5f5D+1UAJ6Pu6mtAXrGRntoEM/oqYBAsRrMtDSDAE4tnOSDu2YfVJJLfyUX1ZWjUK0ejZXZ0YTDJwU8PqRcRX17NhBaDq82dEHlfhD7I/aOclwVbfKIi5Ud619XCxPq0sAAYso17MhUm40oBCJVze2x4pswJhv9IFYohtR5G/fKkz2eosu3xeRflvGicS4JdclhTRgCGWDy10DV76FiXiS5N2clLXreHItWEXlZKZx6m9zAZoEX92VRnc4BY4jDsRR89Pl88hELaxiNipviyHS7XYZTRnkLM+nvtOcxkHSCbEs7oGw+AX+pLHoU5otNOqy+ZbXQ1cUvFOBYZmYdX3DiWaLfBKraakPkslJuU3yJu95X1qYmQTpOZDR4Ma/yf5fmWJh5D9ywnXxxd6RaupoO6HTtIl6gmsfcsyZNi5hRbbgPI3BiQwGYVGF6qzJpEOMzEyHyAuFeanhicc8b+P+DCwXni5sjM7ntKwShbCBP80KHSdoumORin3/PYgHCmHZVv71N0HNlPZnyVzZw="',
|
'signature' => 'Signature keyId="acct:admin@friendica.local",algorithm="rsa-sha512",headers="accept x-open-web-auth",signature="cb09/wdmRdFhrQUczL0lR6LTkVh8qb/vYh70DFCW40QrzvuUYHzJ+GqqJW6tcCb2rXP4t+aobWKfZ4wFMBtVbejAiCgF01pzEBJfDevdyu7khlfKo+Gtw1CGk4/0so1QmqASeHdlG3ID3GnmuovqZn2v5f5D+1UAJ6Pu6mtAXrGRntoEM/oqYBAsRrMtDSDAE4tnOSDu2YfVJJLfyUX1ZWjUK0ejZXZ0YTDJwU8PqRcRX17NhBaDq82dEHlfhD7I/aOclwVbfKIi5Ud619XCxPq0sAAYso17MhUm40oBCJVze2x4pswJhv9IFYohtR5G/fKkz2eosu3xeRflvGicS4JdclhTRgCGWDy10DV76FiXiS5N2clLXreHItWEXlZKZx6m9zAZoEX92VRnc4BY4jDsRR89Pl88hELaxiNipviyHS7XYZTRnkLM+nvtOcxkHSCbEs7oGw+AX+pLHoU5otNOqy+ZbXQ1cUvFOBYZmYdX3DiWaLfBKraakPkslJuU3yJu95X1qYmQTpOZDR4Ma/yf5fmWJh5D9ywnXxxd6RaupoO6HTtIl6gmsfcsyZNi5hRbbgPI3BiQwGYVGF6qzJpEOMzEyHyAuFeanhicc8b+P+DCwXni5sjM7ntKwShbCBP80KHSdoumORin3/PYgHCmHZVv71N0HNlPZnyVzZw="',
|
||||||
]
|
]
|
||||||
|
|
|
@ -260,7 +260,7 @@ aStates[233]="|Tuvalu";
|
||||||
aStates[234]="|Adjumani|Apac|Arua|Bugiri|Bundibugyo|Bushenyi|Busia|Gulu|Hoima|Iganga|Jinja|Kabale|Kabarole|Kalangala|Kampala|Kamuli|Kapchorwa|Kasese|Katakwi|Kibale|Kiboga|Kisoro|Kitgum|Kotido|Kumi|Lira|Luwero|Masaka|Masindi|Mbale|Mbarara|Moroto|Moyo|Mpigi|Mubende|Mukono|Nakasongola|Nebbi|Ntungamo|Pallisa|Rakai|Rukungiri|Sembabule|Soroti|Tororo";
|
aStates[234]="|Adjumani|Apac|Arua|Bugiri|Bundibugyo|Bushenyi|Busia|Gulu|Hoima|Iganga|Jinja|Kabale|Kabarole|Kalangala|Kampala|Kamuli|Kapchorwa|Kasese|Katakwi|Kibale|Kiboga|Kisoro|Kitgum|Kotido|Kumi|Lira|Luwero|Masaka|Masindi|Mbale|Mbarara|Moroto|Moyo|Mpigi|Mubende|Mukono|Nakasongola|Nebbi|Ntungamo|Pallisa|Rakai|Rukungiri|Sembabule|Soroti|Tororo";
|
||||||
aStates[235]="|Avtonomna Respublika Krym (Simferopol')|Cherkas'ka (Cherkasy)|Chernihivs'ka (Chernihiv)|Chernivets'ka (Chernivtsi)|Dnipropetrovs'ka (Dnipropetrovs'k)|Donets'ka (Donets'k)|Ivano-Frankivs'ka (Ivano-Frankivs'k)|Kharkivs'ka (Kharkiv)|Khersons'ka (Kherson)|Khmel'nyts'ka (Khmel'nyts'kyy)|Kirovohrads'ka (Kirovohrad)|Kyyiv|Kyyivs'ka (Kiev)|L'vivs'ka (L'viv)|Luhans'ka (Luhans'k)|Mykolayivs'ka (Mykolayiv)|Odes'ka (Odesa)|Poltavs'ka (Poltava)|Rivnens'ka (Rivne)|Sevastopol'|Sums'ka (Sumy)|Ternopil's'ka (Ternopil')|Vinnyts'ka (Vinnytsya)|Volyns'ka (Luts'k)|Zakarpats'ka (Uzhhorod)|Zaporiz'ka (Zaporizhzhya)|Zhytomyrs'ka (Zhytomyr)"
|
aStates[235]="|Avtonomna Respublika Krym (Simferopol')|Cherkas'ka (Cherkasy)|Chernihivs'ka (Chernihiv)|Chernivets'ka (Chernivtsi)|Dnipropetrovs'ka (Dnipropetrovs'k)|Donets'ka (Donets'k)|Ivano-Frankivs'ka (Ivano-Frankivs'k)|Kharkivs'ka (Kharkiv)|Khersons'ka (Kherson)|Khmel'nyts'ka (Khmel'nyts'kyy)|Kirovohrads'ka (Kirovohrad)|Kyyiv|Kyyivs'ka (Kiev)|L'vivs'ka (L'viv)|Luhans'ka (Luhans'k)|Mykolayivs'ka (Mykolayiv)|Odes'ka (Odesa)|Poltavs'ka (Poltava)|Rivnens'ka (Rivne)|Sevastopol'|Sums'ka (Sumy)|Ternopil's'ka (Ternopil')|Vinnyts'ka (Vinnytsya)|Volyns'ka (Luts'k)|Zakarpats'ka (Uzhhorod)|Zaporiz'ka (Zaporizhzhya)|Zhytomyrs'ka (Zhytomyr)"
|
||||||
aStates[236]="|'Ajman|Abu Zaby (Abu Dhabi)|Al Fujayrah|Ash Shariqah (Sharjah)|Dubayy (Dubai)|Ra's al Khaymah|Umm al Qaywayn";
|
aStates[236]="|'Ajman|Abu Zaby (Abu Dhabi)|Al Fujayrah|Ash Shariqah (Sharjah)|Dubayy (Dubai)|Ra's al Khaymah|Umm al Qaywayn";
|
||||||
aStates[237]="|Aberdeen|Aberdeenshire|Anglesey|Angus|Antrim|Argyl|Armagh|Avon|Ayrshire|Banffshire|Bedfordshire|Belfast|Berwickshire|Brecknockshire|Bristol|Buckinghamshire|Bute|Caernarfonshire|Cardiganshire|Caithness|Cambridgeshire|Carmarthenshire|Chesire|Clackmannashire|Cleveland|Clwyd|Cornwall|Cromartyshire|Cumberland|Cumbria|Denbighshire|Derbyshire|Devon|Dfyed|Dorset|Down|Dumfriesshire|Dunbartonshire|Dundee|Durham|East Lothian|East Suffolk|Derry|East Sussex|Edinburgh|Essex|Fermanagh|Fife|Flintshire|Glasgow|Glamorgan|Gloucestershire|Greater London|Greater Manchester|Gwent|Gwynedd|Hampshire|Hereford and Worcester|Herefordshire|Inverness-shire|Hertfordshire|Humberside|Huntingdon and Peterborough|Huntingdonshire|Isle of Ely|Isle of Wight|Kent|Kincardineshire|Kincross-shire|Kirkcudbrightshire|Lanarkshire|Lancashire|Leicestershire|Lincolnshire|London|Londonderry|Merionethshire|Merseyside|Middlesex|Mid Glamorgan|Midlothian|Monmouthshire|Montgomeryshire|Moray|Nairnshire|Norfolk|Northamptonshire|Northumberland|North Humberside|North Yorkshire|Nottinghamshire|Orkney|Oxfordshire|Peeblesshire|Pembrokeshire|Perthshire|Powys|Radnorshire|Renfrewshire|Ross And Cromarty|Ross-shire|Roxburghshire|Selkirkshire|Shetland|Stirlingshire|Sutherland|Soke of Peterborough|Rutland|Shropshire|Somerset|South Glamorgan|South Humberside|South Yorkshire|Staffordshite|Suffolk|Surrey|Sussex|Tyne and Wear|Tyrone|Warwickshire|West Glamorgan|West Lothian|West Midlands|Westmorland|West Suffolk|West Sussex|West Yorkshire|Wigtownshire|Wiltshire|Worcestershire|Yorkshire";
|
aStates[237]="|Aberdeen|Aberdeenshire|Anglesey|Angus|Antrim|Argyl|Armagh|Avon|Ayrshire|Banffshire|Bedfordshire|Belfast|Berwickshire|Brecknockshire|Bristol|Buckinghamshire|Bute|Caernarfonshire|Cardiganshire|Caithness|Cambridgeshire|Carmarthenshire|Cheshire|Clackmannashire|Cleveland|Clwyd|Cornwall|Cromartyshire|Cumberland|Cumbria|Denbighshire|Derbyshire|Devon|Dfyed|Dorset|Down|Dumfriesshire|Dunbartonshire|Dundee|Durham|East Lothian|East Suffolk|Derry|East Sussex|Edinburgh|Essex|Fermanagh|Fife|Flintshire|Glasgow|Glamorgan|Gloucestershire|Greater London|Greater Manchester|Gwent|Gwynedd|Hampshire|Hereford and Worcester|Herefordshire|Inverness-shire|Hertfordshire|Humberside|Huntingdon and Peterborough|Huntingdonshire|Isle of Ely|Isle of Wight|Kent|Kincardineshire|Kincross-shire|Kirkcudbrightshire|Lanarkshire|Lancashire|Leicestershire|Lincolnshire|London|Londonderry|Merionethshire|Merseyside|Middlesex|Mid Glamorgan|Midlothian|Monmouthshire|Montgomeryshire|Moray|Nairnshire|Norfolk|Northamptonshire|Northumberland|North Humberside|North Yorkshire|Nottinghamshire|Orkney|Oxfordshire|Peeblesshire|Pembrokeshire|Perthshire|Powys|Radnorshire|Renfrewshire|Ross And Cromarty|Ross-shire|Roxburghshire|Selkirkshire|Shetland|Stirlingshire|Sutherland|Soke of Peterborough|Rutland|Shropshire|Somerset|South Glamorgan|South Humberside|South Yorkshire|Staffordshite|Suffolk|Surrey|Sussex|Tyne and Wear|Tyrone|Warwickshire|West Glamorgan|West Lothian|West Midlands|Westmorland|West Suffolk|West Sussex|West Yorkshire|Wigtownshire|Wiltshire|Worcestershire|Yorkshire";
|
||||||
aStates[238]="|Artigas|Canelones|Cerro Largo|Colonia|Durazno|Flores|Florida|Lavalleja|Maldonado|Montevideo|Paysandu|Rio Negro|Rivera|Rocha|Salto|San Jose|Soriano|Tacuarembo|Treinta y Tres";
|
aStates[238]="|Artigas|Canelones|Cerro Largo|Colonia|Durazno|Flores|Florida|Lavalleja|Maldonado|Montevideo|Paysandu|Rio Negro|Rivera|Rocha|Salto|San Jose|Soriano|Tacuarembo|Treinta y Tres";
|
||||||
aStates[239]="|Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|District of Columbia|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming";
|
aStates[239]="|Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|District of Columbia|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming";
|
||||||
aStates[240]="|Andijon Wiloyati|Bukhoro Wiloyati|Farghona Wiloyati|Jizzakh Wiloyati|Khorazm Wiloyati (Urganch)|Namangan Wiloyati|Nawoiy Wiloyati|Qashqadaryo Wiloyati (Qarshi)|Qoraqalpoghiston (Nukus)|Samarqand Wiloyati|Sirdaryo Wiloyati (Guliston)|Surkhondaryo Wiloyati (Termiz)|Toshkent Shahri|Toshkent Wiloyati";
|
aStates[240]="|Andijon Wiloyati|Bukhoro Wiloyati|Farghona Wiloyati|Jizzakh Wiloyati|Khorazm Wiloyati (Urganch)|Namangan Wiloyati|Nawoiy Wiloyati|Qashqadaryo Wiloyati (Qarshi)|Qoraqalpoghiston (Nukus)|Samarqand Wiloyati|Sirdaryo Wiloyati (Guliston)|Surkhondaryo Wiloyati (Termiz)|Toshkent Shahri|Toshkent Wiloyati";
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 2023.09-dev\n"
|
"Project-Id-Version: 2023.09-dev\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-06-18 17:33+0000\n"
|
"POT-Creation-Date: 2023-06-18 17:38+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -292,8 +292,8 @@ msgid "Insert web link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/message.php:201 mod/message.php:357 mod/photos.php:1301
|
#: mod/message.php:201 mod/message.php:357 mod/photos.php:1301
|
||||||
#: src/Content/Conversation.php:391 src/Content/Conversation.php:741
|
#: src/Content/Conversation.php:392 src/Content/Conversation.php:742
|
||||||
#: src/Module/Item/Compose.php:205 src/Module/Post/Edit.php:145
|
#: src/Module/Item/Compose.php:206 src/Module/Post/Edit.php:145
|
||||||
#: src/Module/Profile/UnkMail.php:154 src/Object/Post.php:568
|
#: src/Module/Profile/UnkMail.php:154 src/Object/Post.php:568
|
||||||
msgid "Please wait"
|
msgid "Please wait"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -475,7 +475,7 @@ msgstr ""
|
||||||
msgid "Do not show a status post for this upload"
|
msgid "Do not show a status post for this upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/photos.php:736 mod/photos.php:1097 src/Content/Conversation.php:393
|
#: mod/photos.php:736 mod/photos.php:1097 src/Content/Conversation.php:394
|
||||||
#: src/Module/Calendar/Event/Form.php:253 src/Module/Post/Edit.php:183
|
#: src/Module/Calendar/Event/Form.php:253 src/Module/Post/Edit.php:183
|
||||||
msgid "Permissions"
|
msgid "Permissions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -488,7 +488,7 @@ msgstr ""
|
||||||
msgid "Delete Album"
|
msgid "Delete Album"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/photos.php:803 mod/photos.php:903 src/Content/Conversation.php:409
|
#: mod/photos.php:803 mod/photos.php:903 src/Content/Conversation.php:410
|
||||||
#: src/Module/Contact/Follow.php:173 src/Module/Contact/Revoke.php:109
|
#: src/Module/Contact/Follow.php:173 src/Module/Contact/Revoke.php:109
|
||||||
#: src/Module/Contact/Unfollow.php:126
|
#: src/Module/Contact/Unfollow.php:126
|
||||||
#: src/Module/Media/Attachment/Browser.php:77
|
#: src/Module/Media/Attachment/Browser.php:77
|
||||||
|
@ -606,9 +606,9 @@ msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/photos.php:1143 mod/photos.php:1199 mod/photos.php:1279
|
#: mod/photos.php:1143 mod/photos.php:1199 mod/photos.php:1279
|
||||||
#: src/Content/Conversation.php:406 src/Module/Calendar/Event/Form.php:248
|
#: src/Content/Conversation.php:407 src/Module/Calendar/Event/Form.php:248
|
||||||
#: src/Module/Item/Compose.php:200 src/Module/Post/Edit.php:165
|
#: src/Module/Item/Compose.php:201 src/Module/Post/Edit.php:165
|
||||||
#: src/Object/Post.php:1096
|
#: src/Object/Post.php:1097
|
||||||
msgid "Preview"
|
msgid "Preview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -617,11 +617,11 @@ msgstr ""
|
||||||
msgid "Loading..."
|
msgid "Loading..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/photos.php:1236 src/Content/Conversation.php:657 src/Object/Post.php:262
|
#: mod/photos.php:1236 src/Content/Conversation.php:658 src/Object/Post.php:262
|
||||||
msgid "Select"
|
msgid "Select"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/photos.php:1237 src/Content/Conversation.php:658
|
#: mod/photos.php:1237 src/Content/Conversation.php:659
|
||||||
#: src/Module/Moderation/Users/Active.php:136
|
#: src/Module/Moderation/Users/Active.php:136
|
||||||
#: src/Module/Moderation/Users/Blocked.php:136
|
#: src/Module/Moderation/Users/Blocked.php:136
|
||||||
#: src/Module/Moderation/Users/Index.php:151
|
#: src/Module/Moderation/Users/Index.php:151
|
||||||
|
@ -1220,8 +1220,8 @@ msgstr[1] ""
|
||||||
msgid "Visible to <strong>everybody</strong>"
|
msgid "Visible to <strong>everybody</strong>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:330 src/Module/Item/Compose.php:199
|
#: src/Content/Conversation.php:330 src/Module/Item/Compose.php:200
|
||||||
#: src/Object/Post.php:1095
|
#: src/Object/Post.php:1096
|
||||||
msgid "Please enter a image/video/audio/webpage URL:"
|
msgid "Please enter a image/video/audio/webpage URL:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1281,206 +1281,211 @@ msgid "Underline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:368 src/Module/Item/Compose.php:193
|
#: src/Content/Conversation.php:368 src/Module/Item/Compose.php:193
|
||||||
#: src/Module/Post/Edit.php:174 src/Object/Post.php:1089
|
#: src/Module/Post/Edit.php:174 src/Object/Post.php:1090
|
||||||
msgid "Quote"
|
msgid "Quote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:369 src/Module/Item/Compose.php:194
|
#: src/Content/Conversation.php:369 src/Module/Item/Compose.php:194
|
||||||
#: src/Module/Post/Edit.php:175 src/Object/Post.php:1090
|
#: src/Module/Post/Edit.php:175 src/Object/Post.php:1091
|
||||||
msgid "Add emojis"
|
msgid "Add emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:370 src/Module/Item/Compose.php:195
|
#: src/Content/Conversation.php:370 src/Module/Item/Compose.php:195
|
||||||
#: src/Module/Post/Edit.php:176 src/Object/Post.php:1091
|
#: src/Object/Post.php:1089
|
||||||
msgid "Code"
|
msgid "Content Warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:371 src/Module/Item/Compose.php:196
|
#: src/Content/Conversation.php:371 src/Module/Item/Compose.php:196
|
||||||
#: src/Object/Post.php:1092
|
#: src/Module/Post/Edit.php:176 src/Object/Post.php:1092
|
||||||
msgid "Image"
|
msgid "Code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:372 src/Module/Item/Compose.php:197
|
#: src/Content/Conversation.php:372 src/Module/Item/Compose.php:197
|
||||||
#: src/Module/Post/Edit.php:177 src/Object/Post.php:1093
|
#: src/Object/Post.php:1093
|
||||||
msgid "Link"
|
msgid "Image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:373 src/Module/Item/Compose.php:198
|
#: src/Content/Conversation.php:373 src/Module/Item/Compose.php:198
|
||||||
#: src/Module/Post/Edit.php:178 src/Object/Post.php:1094
|
#: src/Module/Post/Edit.php:177 src/Object/Post.php:1094
|
||||||
|
msgid "Link"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Content/Conversation.php:374 src/Module/Item/Compose.php:199
|
||||||
|
#: src/Module/Post/Edit.php:178 src/Object/Post.php:1095
|
||||||
msgid "Link or Media"
|
msgid "Link or Media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:374
|
#: src/Content/Conversation.php:375
|
||||||
msgid "Video"
|
msgid "Video"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:375 src/Module/Item/Compose.php:201
|
#: src/Content/Conversation.php:376 src/Module/Item/Compose.php:202
|
||||||
#: src/Module/Post/Edit.php:141
|
#: src/Module/Post/Edit.php:141
|
||||||
msgid "Set your location"
|
msgid "Set your location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:376 src/Module/Post/Edit.php:142
|
#: src/Content/Conversation.php:377 src/Module/Post/Edit.php:142
|
||||||
msgid "set location"
|
msgid "set location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:377 src/Module/Post/Edit.php:143
|
#: src/Content/Conversation.php:378 src/Module/Post/Edit.php:143
|
||||||
msgid "Clear browser location"
|
msgid "Clear browser location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:378 src/Module/Post/Edit.php:144
|
#: src/Content/Conversation.php:379 src/Module/Post/Edit.php:144
|
||||||
msgid "clear location"
|
msgid "clear location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:380 src/Module/Item/Compose.php:206
|
#: src/Content/Conversation.php:381 src/Module/Item/Compose.php:207
|
||||||
#: src/Module/Post/Edit.php:157
|
#: src/Module/Post/Edit.php:157
|
||||||
msgid "Set title"
|
msgid "Set title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:382 src/Module/Item/Compose.php:207
|
#: src/Content/Conversation.php:383 src/Module/Item/Compose.php:208
|
||||||
#: src/Module/Post/Edit.php:159
|
#: src/Module/Post/Edit.php:159
|
||||||
msgid "Categories (comma-separated list)"
|
msgid "Categories (comma-separated list)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:387 src/Module/Item/Compose.php:223
|
#: src/Content/Conversation.php:388 src/Module/Item/Compose.php:224
|
||||||
msgid "Scheduled at"
|
msgid "Scheduled at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:392 src/Module/Post/Edit.php:146
|
#: src/Content/Conversation.php:393 src/Module/Post/Edit.php:146
|
||||||
msgid "Permission settings"
|
msgid "Permission settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:402 src/Module/Post/Edit.php:155
|
#: src/Content/Conversation.php:403 src/Module/Post/Edit.php:155
|
||||||
msgid "Public post"
|
msgid "Public post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:416 src/Content/Widget/VCard.php:120
|
#: src/Content/Conversation.php:417 src/Content/Widget/VCard.php:120
|
||||||
#: src/Model/Profile.php:469 src/Module/Admin/Logs/View.php:92
|
#: src/Model/Profile.php:469 src/Module/Admin/Logs/View.php:92
|
||||||
#: src/Module/Post/Edit.php:181
|
#: src/Module/Post/Edit.php:181
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:417 src/Module/Post/Edit.php:182
|
#: src/Content/Conversation.php:418 src/Module/Post/Edit.php:182
|
||||||
#: src/Module/Settings/TwoFactor/Trusted.php:140
|
#: src/Module/Settings/TwoFactor/Trusted.php:140
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:419 src/Module/Post/Edit.php:185
|
#: src/Content/Conversation.php:420 src/Module/Post/Edit.php:185
|
||||||
msgid "Open Compose page"
|
msgid "Open Compose page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:685 src/Object/Post.php:248
|
#: src/Content/Conversation.php:686 src/Object/Post.php:248
|
||||||
msgid "Pinned item"
|
msgid "Pinned item"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:701 src/Object/Post.php:513
|
#: src/Content/Conversation.php:702 src/Object/Post.php:513
|
||||||
#: src/Object/Post.php:514
|
#: src/Object/Post.php:514
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "View %s's profile @ %s"
|
msgid "View %s's profile @ %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:714 src/Object/Post.php:501
|
#: src/Content/Conversation.php:715 src/Object/Post.php:501
|
||||||
msgid "Categories:"
|
msgid "Categories:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:715 src/Object/Post.php:502
|
#: src/Content/Conversation.php:716 src/Object/Post.php:502
|
||||||
msgid "Filed under:"
|
msgid "Filed under:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:723 src/Object/Post.php:527
|
#: src/Content/Conversation.php:724 src/Object/Post.php:527
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s from %s"
|
msgid "%s from %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:739
|
#: src/Content/Conversation.php:740
|
||||||
msgid "View in context"
|
msgid "View in context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:804
|
#: src/Content/Conversation.php:805
|
||||||
msgid "remove"
|
msgid "remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:808
|
#: src/Content/Conversation.php:809
|
||||||
msgid "Delete Selected Items"
|
msgid "Delete Selected Items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:874 src/Content/Conversation.php:877
|
#: src/Content/Conversation.php:875 src/Content/Conversation.php:878
|
||||||
#: src/Content/Conversation.php:880 src/Content/Conversation.php:883
|
#: src/Content/Conversation.php:881 src/Content/Conversation.php:884
|
||||||
#: src/Content/Conversation.php:886
|
#: src/Content/Conversation.php:887
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You had been addressed (%s)."
|
msgid "You had been addressed (%s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:889
|
#: src/Content/Conversation.php:890
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You are following %s."
|
msgid "You are following %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:892
|
#: src/Content/Conversation.php:893
|
||||||
msgid "You subscribed to one or more tags in this post."
|
msgid "You subscribed to one or more tags in this post."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:911
|
#: src/Content/Conversation.php:912
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s reshared this."
|
msgid "%s reshared this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:913
|
#: src/Content/Conversation.php:914
|
||||||
msgid "Reshared"
|
msgid "Reshared"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:913
|
#: src/Content/Conversation.php:914
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Reshared by %s <%s>"
|
msgid "Reshared by %s <%s>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:916
|
#: src/Content/Conversation.php:917
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is participating in this thread."
|
msgid "%s is participating in this thread."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:919
|
#: src/Content/Conversation.php:920
|
||||||
msgid "Stored for general reasons"
|
msgid "Stored for general reasons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:922
|
#: src/Content/Conversation.php:923
|
||||||
msgid "Global post"
|
msgid "Global post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:925
|
#: src/Content/Conversation.php:926
|
||||||
msgid "Sent via an relay server"
|
msgid "Sent via an relay server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:925
|
#: src/Content/Conversation.php:926
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Sent via the relay server %s <%s>"
|
msgid "Sent via the relay server %s <%s>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:928
|
#: src/Content/Conversation.php:929
|
||||||
msgid "Fetched"
|
msgid "Fetched"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:928
|
#: src/Content/Conversation.php:929
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Fetched because of %s <%s>"
|
msgid "Fetched because of %s <%s>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:931
|
#: src/Content/Conversation.php:932
|
||||||
msgid "Stored because of a child post to complete this thread."
|
msgid "Stored because of a child post to complete this thread."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:934
|
#: src/Content/Conversation.php:935
|
||||||
msgid "Local delivery"
|
msgid "Local delivery"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:937
|
#: src/Content/Conversation.php:938
|
||||||
msgid "Stored because of your activity (like, comment, star, ...)"
|
msgid "Stored because of your activity (like, comment, star, ...)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:940
|
#: src/Content/Conversation.php:941
|
||||||
msgid "Distributed"
|
msgid "Distributed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Conversation.php:943
|
#: src/Content/Conversation.php:944
|
||||||
msgid "Pushed to us"
|
msgid "Pushed to us"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1597,7 +1602,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/GroupManager.php:152 src/Content/Nav.php:276
|
#: src/Content/GroupManager.php:152 src/Content/Nav.php:276
|
||||||
#: src/Content/Text/HTML.php:880 src/Content/Widget.php:538
|
#: src/Content/Text/HTML.php:880 src/Content/Widget.php:541
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1605,12 +1610,12 @@ msgstr ""
|
||||||
msgid "External link to group"
|
msgid "External link to group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/GroupManager.php:158 src/Content/Widget.php:514
|
#: src/Content/GroupManager.php:158 src/Content/Widget.php:516
|
||||||
msgid "show less"
|
msgid "show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/GroupManager.php:159 src/Content/Widget.php:414
|
#: src/Content/GroupManager.php:159 src/Content/Widget.php:414
|
||||||
#: src/Content/Widget.php:515
|
#: src/Content/Widget.php:517
|
||||||
msgid "show more"
|
msgid "show more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2185,31 +2190,31 @@ msgid_plural "%d contacts in common"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:508
|
#: src/Content/Widget.php:510
|
||||||
msgid "Archives"
|
msgid "Archives"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:516
|
#: src/Content/Widget.php:518
|
||||||
msgid "On this date"
|
msgid "On this date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:535
|
#: src/Content/Widget.php:538
|
||||||
msgid "Persons"
|
msgid "Persons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:536
|
#: src/Content/Widget.php:539
|
||||||
msgid "Organisations"
|
msgid "Organisations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:537 src/Model/Contact.php:1676
|
#: src/Content/Widget.php:540 src/Model/Contact.php:1676
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:543 src/Module/Settings/Account.php:453
|
#: src/Content/Widget.php:546 src/Module/Settings/Account.php:453
|
||||||
msgid "Account Types"
|
msgid "Account Types"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:545 src/Module/Moderation/BaseUsers.php:69
|
#: src/Content/Widget.php:548 src/Module/Moderation/BaseUsers.php:69
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -7247,21 +7252,21 @@ msgstr ""
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Item/Compose.php:202
|
#: src/Module/Item/Compose.php:203
|
||||||
msgid "Clear the location"
|
msgid "Clear the location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Item/Compose.php:203
|
#: src/Module/Item/Compose.php:204
|
||||||
msgid "Location services are unavailable on your device"
|
msgid "Location services are unavailable on your device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Item/Compose.php:204
|
#: src/Module/Item/Compose.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Location services are disabled. Please check the website's permissions on "
|
"Location services are disabled. Please check the website's permissions on "
|
||||||
"your device"
|
"your device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Item/Compose.php:210
|
#: src/Module/Item/Compose.php:211
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can make this page always open when you use the New Post button in the "
|
"You can make this page always open when you use the New Post button in the "
|
||||||
"<a href=\"/settings/display\">Theme Customization settings</a>."
|
"<a href=\"/settings/display\">Theme Customization settings</a>."
|
||||||
|
@ -8363,19 +8368,19 @@ msgstr ""
|
||||||
#: src/Module/Profile/Conversations.php:106
|
#: src/Module/Profile/Conversations.php:106
|
||||||
#: src/Module/Profile/Conversations.php:109 src/Module/Profile/Profile.php:351
|
#: src/Module/Profile/Conversations.php:109 src/Module/Profile/Profile.php:351
|
||||||
#: src/Module/Profile/Profile.php:354 src/Protocol/Feed.php:1090
|
#: src/Module/Profile/Profile.php:354 src/Protocol/Feed.php:1090
|
||||||
#: src/Protocol/OStatus.php:1007
|
#: src/Protocol/OStatus.php:1009
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s's timeline"
|
msgid "%s's timeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Profile/Conversations.php:107 src/Module/Profile/Profile.php:352
|
#: src/Module/Profile/Conversations.php:107 src/Module/Profile/Profile.php:352
|
||||||
#: src/Protocol/Feed.php:1094 src/Protocol/OStatus.php:1012
|
#: src/Protocol/Feed.php:1094 src/Protocol/OStatus.php:1014
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s's posts"
|
msgid "%s's posts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Profile/Conversations.php:108 src/Module/Profile/Profile.php:353
|
#: src/Module/Profile/Conversations.php:108 src/Module/Profile/Profile.php:353
|
||||||
#: src/Protocol/Feed.php:1097 src/Protocol/OStatus.php:1016
|
#: src/Protocol/Feed.php:1097 src/Protocol/OStatus.php:1018
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s's comments"
|
msgid "%s's comments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -11510,21 +11515,21 @@ msgstr ""
|
||||||
msgid "(no subject)"
|
msgid "(no subject)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Protocol/OStatus.php:1388
|
#: src/Protocol/OStatus.php:1390
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is now following %s."
|
msgid "%s is now following %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Protocol/OStatus.php:1389
|
#: src/Protocol/OStatus.php:1391
|
||||||
msgid "following"
|
msgid "following"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Protocol/OStatus.php:1392
|
#: src/Protocol/OStatus.php:1394
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s stopped following %s."
|
msgid "%s stopped following %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Protocol/OStatus.php:1393
|
#: src/Protocol/OStatus.php:1395
|
||||||
msgid "stopped following"
|
msgid "stopped following"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,9 @@
|
||||||
<button id="button_emojipicker" type="button" class="btn btn-sm template-icon emojis" aria-label="{{$l10n.edemojis}}" title="{{$l10n.edemojis}}" tabindex="14">
|
<button id="button_emojipicker" type="button" class="btn btn-sm template-icon emojis" aria-label="{{$l10n.edemojis}}" title="{{$l10n.edemojis}}" tabindex="14">
|
||||||
<i class="fa fa-smile-o"></i>
|
<i class="fa fa-smile-o"></i>
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" class="btn btn-sm template-icon bb-url" aria-label="{{$l10n.contentwarn}}" title="{{$l10n.contentwarn}}" onclick="insertFormatting('abstract',{{$id}});" tabindex="9">
|
||||||
|
<i class="fa fa-eye"></i>
|
||||||
|
</button>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<div id="dropzone-{{$id}}" class="dropzone" style="overflow:scroll">
|
<div id="dropzone-{{$id}}" class="dropzone" style="overflow:scroll">
|
||||||
|
|
|
@ -33,7 +33,7 @@ function showHideDates() {
|
||||||
<ul class="datebrowse-ul">
|
<ul class="datebrowse-ul">
|
||||||
{{if $y|cat:$thisday >= $cutoffday}}
|
{{if $y|cat:$thisday >= $cutoffday}}
|
||||||
<li class="tool">
|
<li class="tool">
|
||||||
<a class="datebrowse-link" href="{{$url}}/{{$y|cat:$thisday}}/{{$y|cat:$thisday}}">{{$onthisdate}}</a>
|
<a class="datebrowse-link" href="{{$url}}/{{$y|cat:$nextday}}/{{$y|cat:$thisday}}">{{$onthisdate}}</a>
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{foreach $arr as $d}}
|
{{foreach $arr as $d}}
|
||||||
|
|
|
@ -39,6 +39,9 @@
|
||||||
<button type="button" class="btn btn-sm template-icon emojis" style="cursor: pointer;" aria-label="{{$edemojis}}" title="{{$edemojis}}">
|
<button type="button" class="btn btn-sm template-icon emojis" style="cursor: pointer;" aria-label="{{$edemojis}}" title="{{$edemojis}}">
|
||||||
<i class="fa fa-smile-o"></i>
|
<i class="fa fa-smile-o"></i>
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" class="btn btn-sm template-icon bold" style="cursor: pointer;" aria-label="{{$contentwarn}}" title="{{$contentwarn}}" onclick="insertFormatting('abstract',{{$id}});">
|
||||||
|
<i class="fa fa-eye"></i>
|
||||||
|
</button>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<div id="dropzone-{{$id}}" class="dropzone">
|
<div id="dropzone-{{$id}}" class="dropzone">
|
||||||
|
|
|
@ -51,8 +51,6 @@
|
||||||
type="text/css" media="screen" />
|
type="text/css" media="screen" />
|
||||||
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{$smarty.const.FRIENDICA_VERSION}}"
|
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{$smarty.const.FRIENDICA_VERSION}}"
|
||||||
type="text/css" media="screen" />
|
type="text/css" media="screen" />
|
||||||
<link rel="stylesheet" href="view/js/button/frio.css?v={{$smarty.const.FRIENDICA_VERSION}}"
|
|
||||||
type="text/css" media="screen" />
|
|
||||||
|
|
||||||
{{* own css files *}}
|
{{* own css files *}}
|
||||||
<link rel="stylesheet" href="view/theme/frio/css/hovercard.css?v={{$smarty.const.FRIENDICA_VERSION}}" type="text/css"
|
<link rel="stylesheet" href="view/theme/frio/css/hovercard.css?v={{$smarty.const.FRIENDICA_VERSION}}" type="text/css"
|
||||||
|
|
|
@ -112,6 +112,7 @@
|
||||||
<li role="presentation"><button type="button" class="btn-link icon" style="cursor: pointer;" aria-label="{{$edurl}}" title="{{$edurl}}" onclick="insertFormattingToPost('url');"><i class="fa fa-link"></i></button></li>
|
<li role="presentation"><button type="button" class="btn-link icon" style="cursor: pointer;" aria-label="{{$edurl}}" title="{{$edurl}}" onclick="insertFormattingToPost('url');"><i class="fa fa-link"></i></button></li>
|
||||||
<li role="presentation"><button type="button" class="btn-link" id="profile-attach" ondragenter="return linkDropper(event);" ondragover="return linkDropper(event);" ondrop="linkDrop(event);" onclick="jotGetLink();" title="{{$edattach}}"><i class="fa fa-paperclip"></i></button></li>
|
<li role="presentation"><button type="button" class="btn-link" id="profile-attach" ondragenter="return linkDropper(event);" ondragover="return linkDropper(event);" ondrop="linkDrop(event);" onclick="jotGetLink();" title="{{$edattach}}"><i class="fa fa-paperclip"></i></button></li>
|
||||||
<li role="presentation"><button type="button" class="btn-link" id="profile-location" onclick="jotGetLocation();" title="{{$setloc}}"><i class="fa fa-map-marker" aria-hidden="true"></i></button></li>
|
<li role="presentation"><button type="button" class="btn-link" id="profile-location" onclick="jotGetLocation();" title="{{$setloc}}"><i class="fa fa-map-marker" aria-hidden="true"></i></button></li>
|
||||||
|
<li role="presentation"><button type="button" class="hidden-xs btn-link icon underline" style="cursor: pointer;" aria-label="{{$contentwarn}}" title="{{$contentwarn}}" onclick="insertFormattingToPost('abstract');"><i class="fa fa-eye"></i></button></li>
|
||||||
<!-- TODO: waiting for a better placement
|
<!-- TODO: waiting for a better placement
|
||||||
<li><button type="button" class="btn-link" id="profile-nolocation" onclick="jotClearLocation();" title="{{$noloc}}">{{$shortnoloc}}</button></li>
|
<li><button type="button" class="btn-link" id="profile-nolocation" onclick="jotClearLocation();" title="{{$noloc}}">{{$shortnoloc}}</button></li>
|
||||||
-->
|
-->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user