Merge remote-tracking branch 'upstream/develop' into channel-relay
This commit is contained in:
commit
23b247d1c3
|
@ -83,8 +83,9 @@ venv/
|
||||||
#Ignore temporary installed phpunit
|
#Ignore temporary installed phpunit
|
||||||
/bin/phpunit
|
/bin/phpunit
|
||||||
|
|
||||||
#Ignore cache file
|
#Ignore cache files
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
|
.php-cs-fixer.cache
|
||||||
|
|
||||||
#ignore avatar picture cache path
|
#ignore avatar picture cache path
|
||||||
/avatar
|
/avatar
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2010-2024, the Friendica project
|
||||||
|
*
|
||||||
|
* @license GNU AGPL version 3 or any later version
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$finder = PhpCsFixer\Finder::create()
|
||||||
|
->in(__DIR__)
|
||||||
|
->notPath('addon')
|
||||||
|
->notPath('bin/dev')
|
||||||
|
->notPath('config')
|
||||||
|
->notPath('doc')
|
||||||
|
->notPath('images')
|
||||||
|
->notPath('mods')
|
||||||
|
->notPath('spec')
|
||||||
|
->notPath('vendor')
|
||||||
|
->notPath('view/asset')
|
||||||
|
->notPath('lang')
|
||||||
|
->notPath('view/smarty3/compiled');
|
||||||
|
|
||||||
|
$config = new PhpCsFixer\Config();
|
||||||
|
return $config
|
||||||
|
->setRules([
|
||||||
|
'@PSR1' => true,
|
||||||
|
'@PSR2' => true,
|
||||||
|
'@PSR12' => true,
|
||||||
|
'align_multiline_comment' => true,
|
||||||
|
'array_indentation' => true,
|
||||||
|
'array_syntax' => [
|
||||||
|
'syntax' => 'short',
|
||||||
|
],
|
||||||
|
'binary_operator_spaces' => [
|
||||||
|
'default' => 'single_space',
|
||||||
|
'operators' => [
|
||||||
|
'=>' => 'align_single_space_minimal',
|
||||||
|
'=' => 'align_single_space_minimal',
|
||||||
|
'??' => 'align_single_space_minimal',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'blank_line_after_namespace' => true,
|
||||||
|
'braces' => [
|
||||||
|
'position_after_anonymous_constructs' => 'same',
|
||||||
|
'position_after_control_structures' => 'same',
|
||||||
|
'position_after_functions_and_oop_constructs' => 'next',
|
||||||
|
],
|
||||||
|
'elseif' => true,
|
||||||
|
'encoding' => true,
|
||||||
|
'full_opening_tag' => true,
|
||||||
|
'function_declaration' => [
|
||||||
|
'closure_function_spacing' => 'one',
|
||||||
|
],
|
||||||
|
'indentation_type' => true,
|
||||||
|
'line_ending' => true,
|
||||||
|
'list_syntax' => [
|
||||||
|
'syntax' => 'long',
|
||||||
|
],
|
||||||
|
'lowercase_keywords' => true,
|
||||||
|
'method_argument_space' => [],
|
||||||
|
'no_closing_tag' => true,
|
||||||
|
'no_spaces_after_function_name' => true,
|
||||||
|
'no_spaces_inside_parenthesis' => true,
|
||||||
|
'no_trailing_whitespace' => true,
|
||||||
|
'no_trailing_whitespace_in_comment' => true,
|
||||||
|
'no_unused_imports' => true,
|
||||||
|
'single_blank_line_at_eof' => true,
|
||||||
|
'single_class_element_per_statement' => true,
|
||||||
|
'single_import_per_statement' => true,
|
||||||
|
'single_line_after_imports' => true,
|
||||||
|
'switch_case_space' => true,
|
||||||
|
'ternary_operator_spaces' => false,
|
||||||
|
'visibility_required' => [
|
||||||
|
'elements' => ['property', 'method']
|
||||||
|
],
|
||||||
|
'new_with_braces' => true,
|
||||||
|
])
|
||||||
|
->setFinder($finder)
|
||||||
|
->setIndent("\t");
|
|
@ -6,6 +6,7 @@ require_once __DIR__ . '/bin/dev/php-cs-fixer/vendor/autoload.php';
|
||||||
|
|
||||||
$finder = PhpCsFixer\Finder::create()
|
$finder = PhpCsFixer\Finder::create()
|
||||||
->in(__DIR__)
|
->in(__DIR__)
|
||||||
|
->notPath('addon')
|
||||||
->notPath('bin/dev')
|
->notPath('bin/dev')
|
||||||
->notPath('config')
|
->notPath('config')
|
||||||
->notPath('doc')
|
->notPath('doc')
|
||||||
|
|
|
@ -135,7 +135,8 @@
|
||||||
"mockery/mockery": "^1.3",
|
"mockery/mockery": "^1.3",
|
||||||
"mikey179/vfsstream": "^1.6",
|
"mikey179/vfsstream": "^1.6",
|
||||||
"phpunit/phpunit": "^9",
|
"phpunit/phpunit": "^9",
|
||||||
"dms/phpunit-arraysubset-asserts": "^0.3.1"
|
"dms/phpunit-arraysubset-asserts": "^0.3.1",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.46"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "phpunit",
|
"test": "phpunit",
|
||||||
|
@ -149,6 +150,8 @@
|
||||||
"cs:fix": [
|
"cs:fix": [
|
||||||
"@cs:install",
|
"@cs:install",
|
||||||
"bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix"
|
"bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix"
|
||||||
]
|
],
|
||||||
|
"cs:check-v3": "vendor/bin/php-cs-fixer check --diff",
|
||||||
|
"cs:fix-v3": "vendor/bin/php-cs-fixer fix"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -215,14 +215,14 @@ function photos_post(App $a)
|
||||||
// get the list of photos we are about to delete
|
// get the list of photos we are about to delete
|
||||||
if ($visitor) {
|
if ($visitor) {
|
||||||
$r = DBA::toArray(DBA::p(
|
$r = DBA::toArray(DBA::p(
|
||||||
"SELECT distinct(`resource-id`) as `rid` FROM `photo` WHERE `contact-id` = ? AND `uid` = ? AND `album` = ?",
|
"SELECT distinct(`resource-id`) AS `rid` FROM `photo` WHERE `contact-id` = ? AND `uid` = ? AND `album` = ?",
|
||||||
$visitor,
|
$visitor,
|
||||||
$page_owner_uid,
|
$page_owner_uid,
|
||||||
$album
|
$album
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
$r = DBA::toArray(DBA::p(
|
$r = DBA::toArray(DBA::p(
|
||||||
"SELECT distinct(`resource-id`) as `rid` FROM `photo` WHERE `uid` = ? AND `album` = ?",
|
"SELECT distinct(`resource-id`) AS `rid` FROM `photo` WHERE `uid` = ? AND `album` = ?",
|
||||||
DI::userSession()->getLocalUserId(),
|
DI::userSession()->getLocalUserId(),
|
||||||
$album
|
$album
|
||||||
));
|
));
|
||||||
|
@ -762,7 +762,7 @@ function photos_content(App $a)
|
||||||
|
|
||||||
$total = 0;
|
$total = 0;
|
||||||
$r = DBA::toArray(DBA::p(
|
$r = DBA::toArray(DBA::p(
|
||||||
"SELECT `resource-id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = ? AND `album` = ?
|
"SELECT `resource-id`, MAX(`scale`) AS `scale` FROM `photo` WHERE `uid` = ? AND `album` = ?
|
||||||
AND `scale` <= 4 $sql_extra GROUP BY `resource-id`",
|
AND `scale` <= 4 $sql_extra GROUP BY `resource-id`",
|
||||||
$owner_uid,
|
$owner_uid,
|
||||||
$album
|
$album
|
||||||
|
@ -782,9 +782,9 @@ function photos_content(App $a)
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = DBA::toArray(DBA::p(
|
$r = DBA::toArray(DBA::p(
|
||||||
"SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`,
|
"SELECT `resource-id`, MIN(`id`) AS `id`, MIN(`filename`) AS `filename`,
|
||||||
ANY_VALUE(`type`) AS `type`, max(`scale`) AS `scale`, ANY_VALUE(`desc`) as `desc`,
|
MIN(`type`) AS `type`, MAX(`scale`) AS `scale`, MIN(`desc`) AS `desc`,
|
||||||
ANY_VALUE(`created`) as `created`
|
MIN(`created`) AS `created`
|
||||||
FROM `photo` WHERE `uid` = ? AND `album` = ?
|
FROM `photo` WHERE `uid` = ? AND `album` = ?
|
||||||
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT ? , ?",
|
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT ? , ?",
|
||||||
intval($owner_uid),
|
intval($owner_uid),
|
||||||
|
@ -1167,11 +1167,11 @@ function photos_content(App $a)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($conv_responses['like'][$link_item['uri']])) {
|
if (!empty($conv_responses['like'][$link_item['uri']])) {
|
||||||
$like = DI::conversation()->formatActivity($conv_responses['like'][$link_item['uri']]['links'], 'like', $link_item['id']);
|
$like = DI::conversation()->formatActivity($conv_responses['like'][$link_item['uri']]['links'], 'like', $link_item['id'], '', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($conv_responses['dislike'][$link_item['uri']])) {
|
if (!empty($conv_responses['dislike'][$link_item['uri']])) {
|
||||||
$dislike = DI::conversation()->formatActivity($conv_responses['dislike'][$link_item['uri']]['links'], 'dislike', $link_item['id']);
|
$dislike = DI::conversation()->formatActivity($conv_responses['dislike'][$link_item['uri']]['links'], 'dislike', $link_item['id'], '', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($can_post || Security::canWriteToUserWall($owner_uid))) {
|
if (($can_post || Security::canWriteToUserWall($owner_uid))) {
|
||||||
|
|
|
@ -132,22 +132,6 @@ class DBA
|
||||||
return DI::dba()->connected();
|
return DI::dba()->connected();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replaces ANY_VALUE() function by MIN() function,
|
|
||||||
* if the database server does not support ANY_VALUE().
|
|
||||||
*
|
|
||||||
* Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5).
|
|
||||||
* ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
|
|
||||||
* A standard fall-back is to use MIN().
|
|
||||||
*
|
|
||||||
* @param string $sql An SQL string without the values
|
|
||||||
* @return string The input SQL string modified if necessary.
|
|
||||||
*/
|
|
||||||
public static function anyValueFallback(string $sql): string
|
|
||||||
{
|
|
||||||
return DI::dba()->anyValueFallback($sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* beautifies the query - useful for "SHOW PROCESSLIST"
|
* beautifies the query - useful for "SHOW PROCESSLIST"
|
||||||
*
|
*
|
||||||
|
|
|
@ -439,28 +439,6 @@ class Database
|
||||||
return $connected;
|
return $connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replaces ANY_VALUE() function by MIN() function,
|
|
||||||
* if the database server does not support ANY_VALUE().
|
|
||||||
*
|
|
||||||
* Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5).
|
|
||||||
* ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
|
|
||||||
* A standard fall-back is to use MIN().
|
|
||||||
*
|
|
||||||
* @param string $sql An SQL string without the values
|
|
||||||
*
|
|
||||||
* @return string The input SQL string modified if necessary.
|
|
||||||
*/
|
|
||||||
public function anyValueFallback(string $sql): string
|
|
||||||
{
|
|
||||||
$server_info = $this->serverInfo();
|
|
||||||
if (version_compare($server_info, '5.7.5', '<') ||
|
|
||||||
(stripos($server_info, 'MariaDB') !== false)) {
|
|
||||||
$sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql);
|
|
||||||
}
|
|
||||||
return $sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces the ? placeholders with the parameters in the $args array
|
* Replaces the ? placeholders with the parameters in the $args array
|
||||||
*
|
*
|
||||||
|
@ -532,7 +510,6 @@ class Database
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = DBA::cleanQuery($sql);
|
$sql = DBA::cleanQuery($sql);
|
||||||
$sql = $this->anyValueFallback($sql);
|
|
||||||
|
|
||||||
$orig_sql = $sql;
|
$orig_sql = $sql;
|
||||||
|
|
||||||
|
@ -1440,7 +1417,7 @@ class Database
|
||||||
private function escapeFields(array $fields, array $options): array
|
private function escapeFields(array $fields, array $options): array
|
||||||
{
|
{
|
||||||
// In the case of a "GROUP BY" we have to add all the ORDER fields to the fieldlist.
|
// In the case of a "GROUP BY" we have to add all the ORDER fields to the fieldlist.
|
||||||
// This needs to done to apply the "ANY_VALUE(...)" treatment from below to them.
|
// This needs to done to apply the "MIN(...)" treatment from below to them.
|
||||||
// Otherwise MySQL would report errors.
|
// Otherwise MySQL would report errors.
|
||||||
if (!empty($options['group_by']) && !empty($options['order'])) {
|
if (!empty($options['group_by']) && !empty($options['order'])) {
|
||||||
foreach ($options['order'] as $key => $field) {
|
foreach ($options['order'] as $key => $field) {
|
||||||
|
@ -1461,7 +1438,7 @@ class Database
|
||||||
$value = DBA::quoteIdentifier($field);
|
$value = DBA::quoteIdentifier($field);
|
||||||
|
|
||||||
if (!empty($options['group_by']) && !in_array($field, $options['group_by'])) {
|
if (!empty($options['group_by']) && !in_array($field, $options['group_by'])) {
|
||||||
$value = 'ANY_VALUE(' . $value . ') AS ' . $value;
|
$value = 'MIN(' . $value . ') AS ' . $value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,6 @@ class Mail
|
||||||
*/
|
*/
|
||||||
public static function send(int $sender_uid, int $recipient = 0, string $body = '', string $subject = '', string $replyto = ''): int
|
public static function send(int $sender_uid, int $recipient = 0, string $body = '', string $subject = '', string $replyto = ''): int
|
||||||
{
|
{
|
||||||
$a = DI::app();
|
|
||||||
|
|
||||||
if (!$recipient) {
|
if (!$recipient) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -246,77 +244,4 @@ class Mail
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @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
|
|
||||||
* @return int
|
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
|
||||||
* @throws \ImagickException
|
|
||||||
*/
|
|
||||||
public static function sendWall(array $recipient = [], string $body = '', string $subject = '', string $replyto = ''): int
|
|
||||||
{
|
|
||||||
if (!$recipient) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strlen($subject)) {
|
|
||||||
$subject = DI::l10n()->t('[no subject]');
|
|
||||||
}
|
|
||||||
|
|
||||||
$guid = System::createUUID();
|
|
||||||
$uri = Item::newURI($guid);
|
|
||||||
|
|
||||||
$me = Contact::getByURL($replyto);
|
|
||||||
if (!$me['name']) {
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
$conv_guid = System::createUUID();
|
|
||||||
|
|
||||||
$recip_handle = $recipient['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3);
|
|
||||||
|
|
||||||
$sender_handle = $me['addr'];
|
|
||||||
|
|
||||||
$handles = $recip_handle . ';' . $sender_handle;
|
|
||||||
|
|
||||||
$convid = null;
|
|
||||||
$fields = ['uid' => $recipient['uid'], 'guid' => $conv_guid, 'creator' => $sender_handle,
|
|
||||||
'created' => DateTimeFormat::utcNow(), 'updated' => DateTimeFormat::utcNow(),
|
|
||||||
'subject' => $subject, 'recips' => $handles];
|
|
||||||
if (DBA::insert('conv', $fields)) {
|
|
||||||
$convid = DBA::lastInsertId();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$convid) {
|
|
||||||
Logger::warning('conversation not found.');
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
|
|
||||||
self::insert(
|
|
||||||
[
|
|
||||||
'uid' => $recipient['uid'],
|
|
||||||
'guid' => $guid,
|
|
||||||
'convid' => $convid,
|
|
||||||
'from-name' => $me['name'],
|
|
||||||
'from-photo' => $me['photo'],
|
|
||||||
'from-url' => $me['url'],
|
|
||||||
'contact-id' => 0,
|
|
||||||
'title' => $subject,
|
|
||||||
'body' => $body,
|
|
||||||
'seen' => 0,
|
|
||||||
'reply' => 0,
|
|
||||||
'replied' => 0,
|
|
||||||
'uri' => $uri,
|
|
||||||
'parent-uri' => $me['url'],
|
|
||||||
'created' => DateTimeFormat::utcNow(),
|
|
||||||
'unknown' => 1
|
|
||||||
],
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,8 +229,8 @@ class Photo
|
||||||
|
|
||||||
return DBA::toArray(
|
return DBA::toArray(
|
||||||
DBA::p(
|
DBA::p(
|
||||||
"SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
|
"SELECT `resource-id`, MIN(`id`) AS `id`, MIN(`filename`) AS `filename`, MIN(`type`) AS `type`,
|
||||||
min(`scale`) AS `hiq`, max(`scale`) AS `loq`, ANY_VALUE(`desc`) AS `desc`, ANY_VALUE(`created`) AS `created`
|
min(`scale`) AS `hiq`, max(`scale`) AS `loq`, MIN(`desc`) AS `desc`, MIN(`created`) AS `created`
|
||||||
FROM `photo` WHERE `uid` = ? AND NOT `photo-type` IN (?, ?) $sqlExtra
|
FROM `photo` WHERE `uid` = ? AND NOT `photo-type` IN (?, ?) $sqlExtra
|
||||||
GROUP BY `resource-id` $sqlExtra2",
|
GROUP BY `resource-id` $sqlExtra2",
|
||||||
$values
|
$values
|
||||||
|
@ -751,7 +751,7 @@ class Photo
|
||||||
if (!DI::config()->get('system', 'no_count', false)) {
|
if (!DI::config()->get('system', 'no_count', false)) {
|
||||||
/// @todo This query needs to be renewed. It is really slow
|
/// @todo This query needs to be renewed. It is really slow
|
||||||
// At this time we just store the data in the cache
|
// At this time we just store the data in the cache
|
||||||
$albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created`
|
$albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, MIN(`created`) AS `created`
|
||||||
FROM `photo`
|
FROM `photo`
|
||||||
WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra
|
WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra
|
||||||
GROUP BY `album` ORDER BY `created` DESC",
|
GROUP BY `album` ORDER BY `created` DESC",
|
||||||
|
@ -762,9 +762,10 @@ class Photo
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
// This query doesn't do the count and is much faster
|
// This query doesn't do the count and is much faster
|
||||||
$albums = DBA::toArray(DBA::p("SELECT DISTINCT(`album`), '' AS `total`
|
$albums = DBA::toArray(DBA::p("SELECT '' AS `total`, `album`, MIN(`created`) AS `created`
|
||||||
FROM `photo` USE INDEX (`uid_album_scale_created`)
|
FROM `photo` USE INDEX (`uid_album_scale_created`)
|
||||||
WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra",
|
WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra
|
||||||
|
GROUP BY `album` ORDER BY `created` DESC",
|
||||||
$uid,
|
$uid,
|
||||||
self::DEFAULT,
|
self::DEFAULT,
|
||||||
$banner_type,
|
$banner_type,
|
||||||
|
|
|
@ -874,7 +874,7 @@ class User
|
||||||
try {
|
try {
|
||||||
$passwordExposedChecker = new PasswordExposed\PasswordExposedChecker(null, $cache);
|
$passwordExposedChecker = new PasswordExposed\PasswordExposedChecker(null, $cache);
|
||||||
|
|
||||||
return $passwordExposedChecker->passwordExposed($password) === PasswordExposed\PasswordStatus::EXPOSED;
|
return $passwordExposedChecker->passwordExposed($password) === PasswordExposed\Enums\PasswordStatus::EXPOSED;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Logger::error('Password Exposed Exception: ' . $e->getMessage(), [
|
Logger::error('Password Exposed Exception: ' . $e->getMessage(), [
|
||||||
'code' => $e->getCode(),
|
'code' => $e->getCode(),
|
||||||
|
|
|
@ -97,7 +97,7 @@ class Federation extends BaseAdmin
|
||||||
SUM(IFNULL(`local-posts`, 0) + IFNULL(`local-comments`, 0)) AS `posts`,
|
SUM(IFNULL(`local-posts`, 0) + IFNULL(`local-comments`, 0)) AS `posts`,
|
||||||
SUM(IFNULL(`active-month-users`, `active-week-users`)) AS `month`,
|
SUM(IFNULL(`active-month-users`, `active-week-users`)) AS `month`,
|
||||||
SUM(IFNULL(`active-halfyear-users`, `active-week-users`)) AS `halfyear`, `platform`,
|
SUM(IFNULL(`active-halfyear-users`, `active-week-users`)) AS `halfyear`, `platform`,
|
||||||
ANY_VALUE(`network`) AS `network`, MAX(`version`) AS `version`
|
MIN(`network`) AS `network`, MAX(`version`) AS `version`
|
||||||
FROM `gserver` WHERE NOT `failed` AND `platform` != ? AND `detection-method` != ? AND NOT `network` IN (?, ?) GROUP BY `platform`",
|
FROM `gserver` WHERE NOT `failed` AND `platform` != ? AND `detection-method` != ? AND NOT `network` IN (?, ?) GROUP BY `platform`",
|
||||||
'', GServer::DETECT_MANUAL, Protocol::PHANTOM, Protocol::FEED);
|
'', GServer::DETECT_MANUAL, Protocol::PHANTOM, Protocol::FEED);
|
||||||
while ($gserver = DBA::fetch($gservers)) {
|
while ($gserver = DBA::fetch($gservers)) {
|
||||||
|
|
|
@ -322,12 +322,12 @@ class Photos extends \Friendica\Module\BaseProfile
|
||||||
$photos = $this->database->toArray($this->database->p(
|
$photos = $this->database->toArray($this->database->p(
|
||||||
"SELECT
|
"SELECT
|
||||||
`resource-id`,
|
`resource-id`,
|
||||||
ANY_VALUE(`id`) AS `id`,
|
MIN(`id`) AS `id`,
|
||||||
ANY_VALUE(`filename`) AS `filename`,
|
MIN(`filename`) AS `filename`,
|
||||||
ANY_VALUE(`type`) AS `type`,
|
MIN(`type`) AS `type`,
|
||||||
ANY_VALUE(`album`) AS `album`,
|
MIN(`album`) AS `album`,
|
||||||
max(`scale`) AS `scale`,
|
MAX(`scale`) AS `scale`,
|
||||||
ANY_VALUE(`created`) AS `created`
|
MIN(`created`) AS `created`
|
||||||
FROM `photo`
|
FROM `photo`
|
||||||
WHERE `uid` = ?
|
WHERE `uid` = ?
|
||||||
AND `photo-type` = ?
|
AND `photo-type` = ?
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 2024.03-dev\n"
|
"Project-Id-Version: 2024.03-dev\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-01-15 06:14+0000\n"
|
"POT-Creation-Date: 2024-01-15 19:41+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"
|
||||||
|
@ -1770,7 +1770,7 @@ msgstr ""
|
||||||
msgid "Create new group"
|
msgid "Create new group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Item.php:332 src/Model/Item.php:3234
|
#: src/Content/Item.php:332 src/Model/Item.php:3235
|
||||||
msgid "event"
|
msgid "event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1778,7 +1778,7 @@ msgstr ""
|
||||||
msgid "status"
|
msgid "status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Item.php:341 src/Model/Item.php:3236
|
#: src/Content/Item.php:341 src/Model/Item.php:3237
|
||||||
#: src/Module/Post/Tag/Add.php:123
|
#: src/Module/Post/Tag/Add.php:123
|
||||||
msgid "photo"
|
msgid "photo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2191,8 +2191,8 @@ msgid ""
|
||||||
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
|
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Text/BBCode.php:998 src/Model/Item.php:3967
|
#: src/Content/Text/BBCode.php:998 src/Model/Item.php:3968
|
||||||
#: src/Model/Item.php:3973 src/Model/Item.php:3974
|
#: src/Model/Item.php:3974 src/Model/Item.php:3975
|
||||||
msgid "Link to source"
|
msgid "Link to source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2855,167 +2855,167 @@ msgstr ""
|
||||||
msgid "Could not connect to database."
|
msgid "Could not connect to database."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:441 src/Model/Item.php:2278
|
#: src/Core/L10n.php:444 src/Model/Item.php:2279
|
||||||
msgid "Undetermined"
|
msgid "Undetermined"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:448
|
#: src/Core/L10n.php:451
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s (%s)"
|
msgid "%s (%s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:430
|
#: src/Core/L10n.php:499 src/Model/Event.php:430
|
||||||
#: src/Module/Settings/Display.php:284
|
#: src/Module/Settings/Display.php:284
|
||||||
msgid "Monday"
|
msgid "Monday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:431
|
#: src/Core/L10n.php:499 src/Model/Event.php:431
|
||||||
#: src/Module/Settings/Display.php:285
|
#: src/Module/Settings/Display.php:285
|
||||||
msgid "Tuesday"
|
msgid "Tuesday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:432
|
#: src/Core/L10n.php:499 src/Model/Event.php:432
|
||||||
#: src/Module/Settings/Display.php:286
|
#: src/Module/Settings/Display.php:286
|
||||||
msgid "Wednesday"
|
msgid "Wednesday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:433
|
#: src/Core/L10n.php:499 src/Model/Event.php:433
|
||||||
#: src/Module/Settings/Display.php:287
|
#: src/Module/Settings/Display.php:287
|
||||||
msgid "Thursday"
|
msgid "Thursday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:434
|
#: src/Core/L10n.php:499 src/Model/Event.php:434
|
||||||
#: src/Module/Settings/Display.php:288
|
#: src/Module/Settings/Display.php:288
|
||||||
msgid "Friday"
|
msgid "Friday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:435
|
#: src/Core/L10n.php:499 src/Model/Event.php:435
|
||||||
#: src/Module/Settings/Display.php:289
|
#: src/Module/Settings/Display.php:289
|
||||||
msgid "Saturday"
|
msgid "Saturday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:496 src/Model/Event.php:429
|
#: src/Core/L10n.php:499 src/Model/Event.php:429
|
||||||
#: src/Module/Settings/Display.php:283
|
#: src/Module/Settings/Display.php:283
|
||||||
msgid "Sunday"
|
msgid "Sunday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:450
|
#: src/Core/L10n.php:503 src/Model/Event.php:450
|
||||||
msgid "January"
|
msgid "January"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:451
|
#: src/Core/L10n.php:503 src/Model/Event.php:451
|
||||||
msgid "February"
|
msgid "February"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:452
|
#: src/Core/L10n.php:503 src/Model/Event.php:452
|
||||||
msgid "March"
|
msgid "March"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:453
|
#: src/Core/L10n.php:503 src/Model/Event.php:453
|
||||||
msgid "April"
|
msgid "April"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Core/L10n.php:519 src/Model/Event.php:441
|
#: src/Core/L10n.php:503 src/Core/L10n.php:522 src/Model/Event.php:441
|
||||||
msgid "May"
|
msgid "May"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:454
|
#: src/Core/L10n.php:503 src/Model/Event.php:454
|
||||||
msgid "June"
|
msgid "June"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:455
|
#: src/Core/L10n.php:503 src/Model/Event.php:455
|
||||||
msgid "July"
|
msgid "July"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:456
|
#: src/Core/L10n.php:503 src/Model/Event.php:456
|
||||||
msgid "August"
|
msgid "August"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:457
|
#: src/Core/L10n.php:503 src/Model/Event.php:457
|
||||||
msgid "September"
|
msgid "September"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:458
|
#: src/Core/L10n.php:503 src/Model/Event.php:458
|
||||||
msgid "October"
|
msgid "October"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:459
|
#: src/Core/L10n.php:503 src/Model/Event.php:459
|
||||||
msgid "November"
|
msgid "November"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:500 src/Model/Event.php:460
|
#: src/Core/L10n.php:503 src/Model/Event.php:460
|
||||||
msgid "December"
|
msgid "December"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:422
|
#: src/Core/L10n.php:518 src/Model/Event.php:422
|
||||||
msgid "Mon"
|
msgid "Mon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:423
|
#: src/Core/L10n.php:518 src/Model/Event.php:423
|
||||||
msgid "Tue"
|
msgid "Tue"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:424
|
#: src/Core/L10n.php:518 src/Model/Event.php:424
|
||||||
msgid "Wed"
|
msgid "Wed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:425
|
#: src/Core/L10n.php:518 src/Model/Event.php:425
|
||||||
msgid "Thu"
|
msgid "Thu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:426
|
#: src/Core/L10n.php:518 src/Model/Event.php:426
|
||||||
msgid "Fri"
|
msgid "Fri"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:427
|
#: src/Core/L10n.php:518 src/Model/Event.php:427
|
||||||
msgid "Sat"
|
msgid "Sat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:515 src/Model/Event.php:421
|
#: src/Core/L10n.php:518 src/Model/Event.php:421
|
||||||
msgid "Sun"
|
msgid "Sun"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:437
|
#: src/Core/L10n.php:522 src/Model/Event.php:437
|
||||||
msgid "Jan"
|
msgid "Jan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:438
|
#: src/Core/L10n.php:522 src/Model/Event.php:438
|
||||||
msgid "Feb"
|
msgid "Feb"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:439
|
#: src/Core/L10n.php:522 src/Model/Event.php:439
|
||||||
msgid "Mar"
|
msgid "Mar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:440
|
#: src/Core/L10n.php:522 src/Model/Event.php:440
|
||||||
msgid "Apr"
|
msgid "Apr"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:442
|
#: src/Core/L10n.php:522 src/Model/Event.php:442
|
||||||
msgid "Jun"
|
msgid "Jun"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:443
|
#: src/Core/L10n.php:522 src/Model/Event.php:443
|
||||||
msgid "Jul"
|
msgid "Jul"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:444
|
#: src/Core/L10n.php:522 src/Model/Event.php:444
|
||||||
msgid "Aug"
|
msgid "Aug"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519
|
#: src/Core/L10n.php:522
|
||||||
msgid "Sep"
|
msgid "Sep"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:446
|
#: src/Core/L10n.php:522 src/Model/Event.php:446
|
||||||
msgid "Oct"
|
msgid "Oct"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:447
|
#: src/Core/L10n.php:522 src/Model/Event.php:447
|
||||||
msgid "Nov"
|
msgid "Nov"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:519 src/Model/Event.php:448
|
#: src/Core/L10n.php:522 src/Model/Event.php:448
|
||||||
msgid "Dec"
|
msgid "Dec"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3413,99 +3413,99 @@ msgstr ""
|
||||||
msgid "Happy Birthday %s"
|
msgid "Happy Birthday %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2285
|
#: src/Model/Item.php:2286
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s (%s - %s): %s"
|
msgid "%s (%s - %s): %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2287
|
#: src/Model/Item.php:2288
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s (%s): %s"
|
msgid "%s (%s): %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2290
|
#: src/Model/Item.php:2291
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Detected languages in this post:\\n%s"
|
msgid "Detected languages in this post:\\n%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3238
|
#: src/Model/Item.php:3239
|
||||||
msgid "activity"
|
msgid "activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3240
|
#: src/Model/Item.php:3241
|
||||||
msgid "comment"
|
msgid "comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3243 src/Module/Post/Tag/Add.php:123
|
#: src/Model/Item.php:3244 src/Module/Post/Tag/Add.php:123
|
||||||
msgid "post"
|
msgid "post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3413
|
#: src/Model/Item.php:3414
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is blocked"
|
msgid "%s is blocked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3415
|
#: src/Model/Item.php:3416
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is ignored"
|
msgid "%s is ignored"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3417
|
#: src/Model/Item.php:3418
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Content from %s is collapsed"
|
msgid "Content from %s is collapsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3421
|
#: src/Model/Item.php:3422
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Content warning: %s"
|
msgid "Content warning: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3874
|
#: src/Model/Item.php:3875
|
||||||
msgid "bytes"
|
msgid "bytes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3905
|
#: src/Model/Item.php:3906
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%2$s (%3$d%%, %1$d vote)"
|
msgid "%2$s (%3$d%%, %1$d vote)"
|
||||||
msgid_plural "%2$s (%3$d%%, %1$d votes)"
|
msgid_plural "%2$s (%3$d%%, %1$d votes)"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3907
|
#: src/Model/Item.php:3908
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%2$s (%1$d vote)"
|
msgid "%2$s (%1$d vote)"
|
||||||
msgid_plural "%2$s (%1$d votes)"
|
msgid_plural "%2$s (%1$d votes)"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3912
|
#: src/Model/Item.php:3913
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d voter. Poll end: %s"
|
msgid "%d voter. Poll end: %s"
|
||||||
msgid_plural "%d voters. Poll end: %s"
|
msgid_plural "%d voters. Poll end: %s"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3914
|
#: src/Model/Item.php:3915
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d voter."
|
msgid "%d voter."
|
||||||
msgid_plural "%d voters."
|
msgid_plural "%d voters."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3916
|
#: src/Model/Item.php:3917
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Poll end: %s"
|
msgid "Poll end: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3950 src/Model/Item.php:3951
|
#: src/Model/Item.php:3951 src/Model/Item.php:3952
|
||||||
msgid "View on separate page"
|
msgid "View on separate page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Mail.php:137 src/Model/Mail.php:266
|
#: src/Model/Mail.php:135
|
||||||
msgid "[no subject]"
|
msgid "[no subject]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Photo.php:1190 src/Module/Media/Photo/Upload.php:170
|
#: src/Model/Photo.php:1191 src/Module/Media/Photo/Upload.php:170
|
||||||
msgid "Wall Photos"
|
msgid "Wall Photos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user