Merge branch 'develop' into mastodon-instance-v2-implementation
This commit is contained in:
commit
41b5ec0262
150 changed files with 1165 additions and 1527 deletions
|
|
@ -36,7 +36,6 @@ return [
|
||||||
'sitename' => 'Friendica Social Network',
|
'sitename' => 'Friendica Social Network',
|
||||||
'register_policy' => \Friendica\Module\Register::OPEN,
|
'register_policy' => \Friendica\Module\Register::OPEN,
|
||||||
'register_text' => '',
|
'register_text' => '',
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
],
|
],
|
||||||
'system' => [
|
'system' => [
|
||||||
'default_timezone' => 'UTC',
|
'default_timezone' => 'UTC',
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
-- ------------------------------------------
|
-- ------------------------------------------
|
||||||
-- Friendica 2023.03-dev (Giant Rhubarb)
|
-- Friendica 2023.03-dev (Giant Rhubarb)
|
||||||
-- DB_UPDATE_VERSION 1514
|
-- DB_UPDATE_VERSION 1516
|
||||||
-- ------------------------------------------
|
-- ------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
25
doc/database/db_config.md
Normal file
25
doc/database/db_config.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
Table config
|
||||||
|
===========
|
||||||
|
|
||||||
|
main configuration storage
|
||||||
|
|
||||||
|
Fields
|
||||||
|
------
|
||||||
|
|
||||||
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
|
| ----- | ------------------------- | ------------- | ---- | --- | ------- | -------------- |
|
||||||
|
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
|
| cat | The category of the entry | varbinary(50) | NO | | | |
|
||||||
|
| k | The key of the entry | varbinary(50) | NO | | | |
|
||||||
|
| v | | mediumtext | YES | | NULL | |
|
||||||
|
|
||||||
|
Indexes
|
||||||
|
------------
|
||||||
|
|
||||||
|
| Name | Fields |
|
||||||
|
| ------- | -------------- |
|
||||||
|
| PRIMARY | id |
|
||||||
|
| cat_k | UNIQUE, cat, k |
|
||||||
|
|
||||||
|
|
||||||
|
Return to [database documentation](help/database)
|
||||||
|
|
@ -48,5 +48,6 @@ $a->runFrontend(
|
||||||
$dice->create(\Friendica\Content\Nav::class),
|
$dice->create(\Friendica\Content\Nav::class),
|
||||||
$dice->create(Friendica\Module\Special\HTTPException::class),
|
$dice->create(Friendica\Module\Special\HTTPException::class),
|
||||||
new \Friendica\Util\HTTPInputData($_SERVER),
|
new \Friendica\Util\HTTPInputData($_SERVER),
|
||||||
$start_time
|
$start_time,
|
||||||
|
$_SERVER
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,6 @@ function message_init(App $a)
|
||||||
|
|
||||||
$head_tpl = Renderer::getMarkupTemplate('message-head.tpl');
|
$head_tpl = Renderer::getMarkupTemplate('message-head.tpl');
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros($head_tpl, [
|
DI::page()['htmlhead'] .= Renderer::replaceMacros($head_tpl, [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$base' => $base
|
'$base' => $base
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -178,7 +177,6 @@ function message_content(App $a)
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
|
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$nickname' => $a->getLoggedInUserNickname(),
|
'$nickname' => $a->getLoggedInUserNickname(),
|
||||||
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
|
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
|
||||||
]);
|
]);
|
||||||
|
|
@ -284,7 +282,6 @@ function message_content(App $a)
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
|
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$nickname' => $a->getLoggedInUserNickname(),
|
'$nickname' => $a->getLoggedInUserNickname(),
|
||||||
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
|
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ return [
|
||||||
// ****************************************************************
|
// ****************************************************************
|
||||||
|
|
||||||
'config' => [
|
'config' => [
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'admin_email' => 'admin@friendica.local',
|
'admin_email' => 'admin@friendica.local',
|
||||||
'sitename' => 'Friendica Social Network',
|
'sitename' => 'Friendica Social Network',
|
||||||
'register_policy' => \Friendica\Module\Register::OPEN,
|
'register_policy' => \Friendica\Module\Register::OPEN,
|
||||||
|
|
@ -44,9 +43,7 @@ return [
|
||||||
'system' => [
|
'system' => [
|
||||||
'default_timezone' => 'UTC',
|
'default_timezone' => 'UTC',
|
||||||
'language' => 'en',
|
'language' => 'en',
|
||||||
'ssl_policy' => \Friendica\App\BaseURL::SSL_POLICY_SELFSIGN,
|
|
||||||
'url' => 'https://friendica.local',
|
'url' => 'https://friendica.local',
|
||||||
'urlpath' => '',
|
|
||||||
// don't start unexpected worker.php processes during test!
|
// don't start unexpected worker.php processes during test!
|
||||||
'worker_dont_fork' => true,
|
'worker_dont_fork' => true,
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ return [
|
||||||
// ****************************************************************
|
// ****************************************************************
|
||||||
|
|
||||||
'config' => [
|
'config' => [
|
||||||
'hostname' => '192.168.56.10',
|
|
||||||
'admin_email' => 'admin@friendica.local',
|
'admin_email' => 'admin@friendica.local',
|
||||||
'sitename' => 'Friendica Social Network',
|
'sitename' => 'Friendica Social Network',
|
||||||
'register_policy' => \Friendica\Module\Register::OPEN,
|
'register_policy' => \Friendica\Module\Register::OPEN,
|
||||||
|
|
@ -39,8 +38,6 @@ return [
|
||||||
'default_timezone' => 'UTC',
|
'default_timezone' => 'UTC',
|
||||||
'language' => 'en',
|
'language' => 'en',
|
||||||
'basepath' => '/vagrant',
|
'basepath' => '/vagrant',
|
||||||
'ssl_policy' => \Friendica\App\BaseURL::SSL_POLICY_SELFSIGN,
|
|
||||||
'url' => 'https://192.168.56.10',
|
'url' => 'https://192.168.56.10',
|
||||||
'urlpath' => '',
|
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
11
src/App.php
11
src/App.php
|
|
@ -555,11 +555,12 @@ class App
|
||||||
* @param ModuleHTTPException $httpException The possible HTTP Exception container
|
* @param ModuleHTTPException $httpException The possible HTTP Exception container
|
||||||
* @param HTTPInputData $httpInput A library for processing PHP input streams
|
* @param HTTPInputData $httpInput A library for processing PHP input streams
|
||||||
* @param float $start_time The start time of the overall script execution
|
* @param float $start_time The start time of the overall script execution
|
||||||
|
* @param array $server The $_SERVER array
|
||||||
*
|
*
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, Nav $nav, ModuleHTTPException $httpException, HTTPInputData $httpInput, float $start_time)
|
public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, Nav $nav, ModuleHTTPException $httpException, HTTPInputData $httpInput, float $start_time, array $server)
|
||||||
{
|
{
|
||||||
$this->profiler->set($start_time, 'start');
|
$this->profiler->set($start_time, 'start');
|
||||||
$this->profiler->set(microtime(true), 'classinit');
|
$this->profiler->set(microtime(true), 'classinit');
|
||||||
|
|
@ -575,10 +576,12 @@ class App
|
||||||
|
|
||||||
if (!$this->mode->isInstall()) {
|
if (!$this->mode->isInstall()) {
|
||||||
// Force SSL redirection
|
// Force SSL redirection
|
||||||
if ($this->baseURL->checkRedirectHttps()) {
|
if ($this->config->get('system', 'force_ssl') &&
|
||||||
System::externalRedirect($this->baseURL->get() . '/' . $this->args->getQueryString());
|
(empty($server['HTTPS']) || $server['HTTPS'] === 'off') &&
|
||||||
|
!empty($server['REQUEST_METHOD']) &&
|
||||||
|
$server['REQUEST_METHOD'] === 'GET') {
|
||||||
|
System::externalRedirect($this->baseURL . '/' . $this->args->getQueryString());
|
||||||
}
|
}
|
||||||
|
|
||||||
Core\Hook::callAll('init_1');
|
Core\Hook::callAll('init_1');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,284 +23,64 @@ namespace Friendica\App;
|
||||||
|
|
||||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\Util\Network;
|
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
|
use GuzzleHttp\Psr7\ServerRequest;
|
||||||
|
use GuzzleHttp\Psr7\Uri;
|
||||||
|
use Psr\Http\Message\UriInterface;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class which checks and contains the basic
|
* A class which checks and contains the basic
|
||||||
* environment for the BaseURL (url, urlpath, ssl_policy, hostname, scheme)
|
* environment for the BaseURL (url, urlpath, ssl_policy, hostname, scheme)
|
||||||
*/
|
*/
|
||||||
class BaseURL
|
class BaseURL extends Uri implements UriInterface
|
||||||
{
|
{
|
||||||
/**
|
public function __construct(IManageConfigValues $config, LoggerInterface $logger, array $server = [])
|
||||||
* No SSL necessary
|
|
||||||
*/
|
|
||||||
const SSL_POLICY_NONE = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SSL is necessary
|
|
||||||
*/
|
|
||||||
const SSL_POLICY_FULL = 1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SSL is optional, but preferred
|
|
||||||
*/
|
|
||||||
const SSL_POLICY_SELFSIGN = 2;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define the Default SSL scheme
|
|
||||||
*/
|
|
||||||
const DEFAULT_SSL_SCHEME = self::SSL_POLICY_SELFSIGN;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Friendica Config
|
|
||||||
*
|
|
||||||
* @var IManageConfigValues
|
|
||||||
*/
|
|
||||||
private $config;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The server side variables
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $server;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The hostname of the Base URL
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $hostname;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The SSL_POLICY of the Base URL
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
private $sslPolicy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The URL sub-path of the Base URL
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $urlPath;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The full URL
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The current scheme of this call
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $scheme;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the hostname of this node
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getHostname(): string
|
|
||||||
{
|
{
|
||||||
return $this->hostname;
|
$url = $config->get('system', 'url');
|
||||||
|
if (empty($url)) {
|
||||||
|
$logger->critical('Invalid config - Missing system.url');
|
||||||
|
$url = ServerRequest::getUriFromGlobals()
|
||||||
|
->withQuery('')
|
||||||
|
->withPath($this->determineURLPath($server));
|
||||||
|
}
|
||||||
|
|
||||||
|
parent::__construct($url);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current scheme of this call
|
* Figure out if we are running at the top of a domain or in a subdirectory
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getScheme(): string
|
private function determineURLPath(array $server): string
|
||||||
{
|
{
|
||||||
return $this->scheme;
|
/* Relative script path to the web server root
|
||||||
}
|
* Not all of those $_SERVER properties can be present, so we do by inverse priority order
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the SSL policy of this node
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function getSSLPolicy(): int
|
$relativeScriptPath =
|
||||||
{
|
($server['REDIRECT_URL'] ?? '') ?:
|
||||||
return $this->sslPolicy;
|
($server['REDIRECT_URI'] ?? '') ?:
|
||||||
}
|
($server['REDIRECT_SCRIPT_URL'] ?? '') ?:
|
||||||
|
($server['SCRIPT_URL'] ?? '') ?:
|
||||||
|
$server['REQUEST_URI'] ?? '';
|
||||||
|
|
||||||
/**
|
/* $relativeScriptPath gives /relative/path/to/friendica/module/parameter
|
||||||
* Returns the sub-path of this URL
|
* QUERY_STRING gives pagename=module/parameter
|
||||||
*
|
*
|
||||||
* @return string
|
* To get /relative/path/to/friendica we perform dirname() for as many levels as there are slashes in the QUERY_STRING
|
||||||
*/
|
*/
|
||||||
public function getUrlPath(): string
|
if (!empty($relativeScriptPath)) {
|
||||||
{
|
// Module
|
||||||
return $this->urlPath;
|
if (!empty($server['QUERY_STRING'])) {
|
||||||
}
|
return trim(dirname($relativeScriptPath, substr_count(trim($server['QUERY_STRING'], '/'), '/') + 1), '/');
|
||||||
|
} else {
|
||||||
/**
|
// Root page
|
||||||
* Returns the full URL of this call
|
$scriptPathParts = explode('?', $relativeScriptPath, 2);
|
||||||
*
|
return trim($scriptPathParts[0], '/');
|
||||||
* Note: $ssl parameter value doesn't directly correlate with the resulting protocol
|
|
||||||
*
|
|
||||||
* @param bool $ssl True, if ssl should get used
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function get(bool $ssl = false): string
|
|
||||||
{
|
|
||||||
if ($this->sslPolicy === self::SSL_POLICY_SELFSIGN && $ssl) {
|
|
||||||
return Network::switchScheme($this->url);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->url;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save current parts of the base Url
|
|
||||||
*
|
|
||||||
* @param string? $hostname
|
|
||||||
* @param int? $sslPolicy
|
|
||||||
* @param string? $urlPath
|
|
||||||
*
|
|
||||||
* @return bool true, if successful
|
|
||||||
* @TODO Find proper types
|
|
||||||
*/
|
|
||||||
public function save($hostname = null, $sslPolicy = null, $urlPath = null): bool
|
|
||||||
{
|
|
||||||
$currUrl = $this->url;
|
|
||||||
|
|
||||||
$configTransaction = $this->config->beginTransaction();
|
|
||||||
|
|
||||||
if (!empty($hostname) && $hostname !== $this->hostname) {
|
|
||||||
$configTransaction->set('config', 'hostname', $hostname);
|
|
||||||
$this->hostname = $hostname;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($sslPolicy) && $sslPolicy !== $this->sslPolicy) {
|
|
||||||
$configTransaction->set('system', 'ssl_policy', $sslPolicy);
|
|
||||||
$this->sslPolicy = $sslPolicy;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($urlPath) && $urlPath !== $this->urlPath) {
|
|
||||||
$configTransaction->set('system', 'urlpath', $urlPath);
|
|
||||||
$this->urlPath = $urlPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->determineBaseUrl();
|
|
||||||
if ($this->url !== $currUrl) {
|
|
||||||
$configTransaction->set('system', 'url', $this->url);
|
|
||||||
}
|
|
||||||
|
|
||||||
$configTransaction->commit();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save the current url as base URL
|
|
||||||
*
|
|
||||||
* @param string $url
|
|
||||||
*
|
|
||||||
* @return bool true, if the save was successful
|
|
||||||
*/
|
|
||||||
public function saveByURL(string $url): bool
|
|
||||||
{
|
|
||||||
$parsed = @parse_url($url);
|
|
||||||
|
|
||||||
if (empty($parsed) || empty($parsed['host'])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$hostname = $parsed['host'];
|
|
||||||
if (!empty($hostname) && !empty($parsed['port'])) {
|
|
||||||
$hostname .= ':' . $parsed['port'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$urlPath = null;
|
|
||||||
if (!empty($parsed['path'])) {
|
|
||||||
$urlPath = trim($parsed['path'], '\\/');
|
|
||||||
}
|
|
||||||
|
|
||||||
$sslPolicy = null;
|
|
||||||
if (!empty($parsed['scheme'])) {
|
|
||||||
if ($parsed['scheme'] == 'https') {
|
|
||||||
$sslPolicy = BaseURL::SSL_POLICY_FULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->save($hostname, $sslPolicy, $urlPath);
|
return '';
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks, if a redirect to the HTTPS site would be necessary
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function checkRedirectHttps()
|
|
||||||
{
|
|
||||||
return $this->config->get('system', 'force_ssl') &&
|
|
||||||
($this->getScheme() == "http") &&
|
|
||||||
intval($this->getSSLPolicy()) == BaseURL::SSL_POLICY_FULL &&
|
|
||||||
strpos($this->get(), 'https://') === 0 &&
|
|
||||||
!empty($this->server['REQUEST_METHOD']) &&
|
|
||||||
$this->server['REQUEST_METHOD'] === 'GET';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param IManageConfigValues $config The Friendica IConfiguration
|
|
||||||
* @param array $server The $_SERVER array
|
|
||||||
*/
|
|
||||||
public function __construct(IManageConfigValues $config, array $server)
|
|
||||||
{
|
|
||||||
$this->config = $config;
|
|
||||||
$this->server = $server;
|
|
||||||
$this->hostname = $this->config->get('config', 'hostname');
|
|
||||||
$this->urlPath = $this->config->get('system', 'urlpath') ?? '';
|
|
||||||
$this->sslPolicy = $this->config->get('system', 'ssl_policy') ?? static::DEFAULT_SSL_SCHEME;
|
|
||||||
$this->url = $this->config->get('system', 'url');
|
|
||||||
|
|
||||||
if (empty($this->hostname) || empty($this->url)) {
|
|
||||||
throw new \Exception('Invalid config - Missing system.url or config.hostname');
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->determineSchema();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine the full URL based on all parts
|
|
||||||
*/
|
|
||||||
private function determineBaseUrl()
|
|
||||||
{
|
|
||||||
$scheme = 'http';
|
|
||||||
|
|
||||||
if ($this->sslPolicy == self::SSL_POLICY_FULL) {
|
|
||||||
$scheme = 'https';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->url = $scheme . '://' . $this->hostname . (!empty($this->urlPath) ? '/' . $this->urlPath : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine the scheme of the current used link
|
|
||||||
*/
|
|
||||||
private function determineSchema()
|
|
||||||
{
|
|
||||||
$this->scheme = 'http';
|
|
||||||
|
|
||||||
if (!empty($this->server['HTTPS']) ||
|
|
||||||
!empty($this->server['HTTP_FORWARDED']) && preg_match('/proto=https/', $this->server['HTTP_FORWARDED']) ||
|
|
||||||
!empty($this->server['HTTP_X_FORWARDED_PROTO']) && $this->server['HTTP_X_FORWARDED_PROTO'] == 'https' ||
|
|
||||||
!empty($this->server['HTTP_X_FORWARDED_SSL']) && $this->server['HTTP_X_FORWARDED_SSL'] == 'on' ||
|
|
||||||
!empty($this->server['FRONT_END_HTTPS']) && $this->server['FRONT_END_HTTPS'] == 'on' ||
|
|
||||||
!empty($this->server['SERVER_PORT']) && (intval($this->server['SERVER_PORT']) == 443) // XXX: reasonable assumption, but isn't this hardcoding too much?
|
|
||||||
) {
|
|
||||||
$this->scheme = 'https';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -314,11 +94,11 @@ class BaseURL
|
||||||
{
|
{
|
||||||
// Remove the hostname from the url if it is an internal link
|
// Remove the hostname from the url if it is an internal link
|
||||||
$nurl = Strings::normaliseLink($origURL);
|
$nurl = Strings::normaliseLink($origURL);
|
||||||
$base = Strings::normaliseLink($this->get());
|
$base = Strings::normaliseLink($this->__toString());
|
||||||
$url = str_replace($base . '/', '', $nurl);
|
$url = str_replace($base . '/', '', $nurl);
|
||||||
|
|
||||||
// if it is an external link return the orignal value
|
// if it is an external link return the original value
|
||||||
if ($url == Strings::normaliseLink($origURL)) {
|
if ($url === $nurl) {
|
||||||
return $origURL;
|
return $origURL;
|
||||||
} else {
|
} else {
|
||||||
return $url;
|
return $url;
|
||||||
|
|
@ -344,15 +124,7 @@ class BaseURL
|
||||||
throw new HTTPException\InternalServerErrorException("$toUrl is not a relative path, please use System::externalRedirectTo");
|
throw new HTTPException\InternalServerErrorException("$toUrl is not a relative path, please use System::externalRedirectTo");
|
||||||
}
|
}
|
||||||
|
|
||||||
$redirectTo = $this->get($ssl) . '/' . ltrim($toUrl, '/');
|
$redirectTo = $this->__toString() . '/' . ltrim($toUrl, '/');
|
||||||
System::externalRedirect($redirectTo);
|
System::externalRedirect($redirectTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the base url as string
|
|
||||||
*/
|
|
||||||
public function __toString(): string
|
|
||||||
{
|
|
||||||
return (string) $this->get();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -523,7 +523,7 @@ class Page implements ArrayAccess
|
||||||
header("X-Friendica-Version: " . App::VERSION);
|
header("X-Friendica-Version: " . App::VERSION);
|
||||||
header("Content-type: text/html; charset=utf-8");
|
header("Content-type: text/html; charset=utf-8");
|
||||||
|
|
||||||
if ($config->get('system', 'hsts') && ($baseURL->getSSLPolicy() == BaseURL::SSL_POLICY_FULL)) {
|
if ($config->get('system', 'hsts') && ($baseURL->getScheme() === 'https')) {
|
||||||
header("Strict-Transport-Security: max-age=31536000");
|
header("Strict-Transport-Security: max-age=31536000");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,8 +199,7 @@ HELP;
|
||||||
$this->out('The Friendica URL has to be set during CLI installation.');
|
$this->out('The Friendica URL has to be set during CLI installation.');
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
$baseUrl = new BaseURL($this->config, []);
|
$configCache->set('system', 'url', $url);
|
||||||
$baseUrl->saveByURL($url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$installer->createConfig($configCache);
|
$installer->createConfig($configCache);
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ HELP;
|
||||||
|
|
||||||
$fields = ['id', 'avatar', 'photo', 'thumb', 'micro', 'uri-id', 'url', 'avatar', 'network'];
|
$fields = ['id', 'avatar', 'photo', 'thumb', 'micro', 'uri-id', 'url', 'avatar', 'network'];
|
||||||
$condition = ["NOT `self` AND `avatar` != ? AND `photo` LIKE ? AND `uid` = ? AND `uri-id` != ? AND NOT `uri-id` IS NULL AND NOT `network` IN (?, ?)",
|
$condition = ["NOT `self` AND `avatar` != ? AND `photo` LIKE ? AND `uid` = ? AND `uri-id` != ? AND NOT `uri-id` IS NULL AND NOT `network` IN (?, ?)",
|
||||||
'', $this->baseUrl->get() . '/photo/%', 0, 0, Protocol::MAIL, Protocol::FEED];
|
'', $this->baseUrl . '/photo/%', 0, 0, Protocol::MAIL, Protocol::FEED];
|
||||||
|
|
||||||
$count = 0;
|
$count = 0;
|
||||||
$total = $this->dba->count('contact', $condition);
|
$total = $this->dba->count('contact', $condition);
|
||||||
|
|
|
||||||
|
|
@ -92,9 +92,9 @@ HELP;
|
||||||
throw new \InvalidArgumentException('Can not parse new base URL. Must have at least <scheme>://<domain>');
|
throw new \InvalidArgumentException('Can not parse new base URL. Must have at least <scheme>://<domain>');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->out(sprintf('Relocation started from %s to %s. Could take a while to complete.', $this->baseUrl->get(true), $this->getArgument(0)));
|
$this->out(sprintf('Relocation started from %s to %s. Could take a while to complete.', $this->baseUrl, $this->getArgument(0)));
|
||||||
|
|
||||||
$old_url = $this->baseUrl->get(true);
|
$old_url = $this->baseUrl;
|
||||||
|
|
||||||
// Generate host names for relocation the addresses in the format user@address.tld
|
// Generate host names for relocation the addresses in the format user@address.tld
|
||||||
$new_host = str_replace('http://', '@', Strings::normaliseLink($new_url));
|
$new_host = str_replace('http://', '@', Strings::normaliseLink($new_url));
|
||||||
|
|
@ -179,7 +179,6 @@ HELP;
|
||||||
// update config
|
// update config
|
||||||
$this->out('Updating config values');
|
$this->out('Updating config values');
|
||||||
$this->config->set('system', 'url', $new_url);
|
$this->config->set('system', 'url', $new_url);
|
||||||
$this->baseUrl->saveByURL($new_url);
|
|
||||||
|
|
||||||
$this->database->commit();
|
$this->database->commit();
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
|
|
|
||||||
|
|
@ -314,7 +314,7 @@ class Conversation
|
||||||
$tpl = Renderer::getMarkupTemplate('jot-header.tpl');
|
$tpl = Renderer::getMarkupTemplate('jot-header.tpl');
|
||||||
$this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
$this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||||
'$newpost' => 'true',
|
'$newpost' => 'true',
|
||||||
'$baseurl' => $this->baseURL->get(true),
|
'$baseurl' => $this->baseURL,
|
||||||
'$geotag' => $geotag,
|
'$geotag' => $geotag,
|
||||||
'$nickname' => $x['nickname'],
|
'$nickname' => $x['nickname'],
|
||||||
'$ispublic' => $this->l10n->t('Visible to <strong>everybody</strong>'),
|
'$ispublic' => $this->l10n->t('Visible to <strong>everybody</strong>'),
|
||||||
|
|
@ -385,7 +385,7 @@ class Conversation
|
||||||
'$posttype' => $notes_cid ? ItemModel::PT_PERSONAL_NOTE : ItemModel::PT_ARTICLE,
|
'$posttype' => $notes_cid ? ItemModel::PT_PERSONAL_NOTE : ItemModel::PT_ARTICLE,
|
||||||
'$content' => $x['content'] ?? '',
|
'$content' => $x['content'] ?? '',
|
||||||
'$post_id' => $x['post_id'] ?? '',
|
'$post_id' => $x['post_id'] ?? '',
|
||||||
'$baseurl' => $this->baseURL->get(true),
|
'$baseurl' => $this->baseURL,
|
||||||
'$defloc' => $x['default_location'],
|
'$defloc' => $x['default_location'],
|
||||||
'$visitor' => $x['visitor'],
|
'$visitor' => $x['visitor'],
|
||||||
'$pvisit' => $notes_cid ? 'none' : $x['visitor'],
|
'$pvisit' => $notes_cid ? 'none' : $x['visitor'],
|
||||||
|
|
@ -446,8 +446,6 @@ class Conversation
|
||||||
$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css'));
|
$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css'));
|
||||||
$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css'));
|
$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css'));
|
||||||
|
|
||||||
$ssl_state = (bool)$this->session->getLocalUserId();
|
|
||||||
|
|
||||||
$live_update_div = '';
|
$live_update_div = '';
|
||||||
|
|
||||||
$blocklist = $this->getBlocklist();
|
$blocklist = $this->getBlocklist();
|
||||||
|
|
@ -784,7 +782,7 @@ class Conversation
|
||||||
}
|
}
|
||||||
|
|
||||||
$o = Renderer::replaceMacros($page_template, [
|
$o = Renderer::replaceMacros($page_template, [
|
||||||
'$baseurl' => $this->baseURL->get($ssl_state),
|
'$baseurl' => $this->baseURL,
|
||||||
'$return_path' => $this->args->getQueryString(),
|
'$return_path' => $this->args->getQueryString(),
|
||||||
'$live_update' => $live_update_div,
|
'$live_update' => $live_update_div,
|
||||||
'$remove' => $this->l10n->t('remove'),
|
'$remove' => $this->l10n->t('remove'),
|
||||||
|
|
|
||||||
|
|
@ -903,7 +903,7 @@ class Item
|
||||||
if ($post['attach']) {
|
if ($post['attach']) {
|
||||||
$post['attach'] .= ',';
|
$post['attach'] .= ',';
|
||||||
}
|
}
|
||||||
$post['attach'] .= Post\Media::getAttachElement($this->baseURL->get() . '/attach/' . $attachment['id'],
|
$post['attach'] .= Post\Media::getAttachElement($this->baseURL . '/attach/' . $attachment['id'],
|
||||||
$attachment['filesize'], $attachment['filetype'], $attachment['filename'] ?? '');
|
$attachment['filesize'], $attachment['filetype'], $attachment['filename'] ?? '');
|
||||||
|
|
||||||
$fields = ['allow_cid' => $post['allow_cid'], 'allow_gid' => $post['allow_gid'],
|
$fields = ['allow_cid' => $post['allow_cid'], 'allow_gid' => $post['allow_gid'],
|
||||||
|
|
|
||||||
|
|
@ -184,8 +184,6 @@ class Nav
|
||||||
*/
|
*/
|
||||||
private function getInfo(): array
|
private function getInfo(): array
|
||||||
{
|
{
|
||||||
$ssl_state = (bool) $this->session->getLocalUserId();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Our network is distributed, and as you visit friends some
|
* Our network is distributed, and as you visit friends some
|
||||||
* sites look exactly the same - it isn't always easy to know where you are.
|
* sites look exactly the same - it isn't always easy to know where you are.
|
||||||
|
|
@ -194,7 +192,7 @@ class Nav
|
||||||
|
|
||||||
$myident = !empty($this->session->getLocalUserNickname()) ? $this->session->getLocalUserNickname() . '@' : '';
|
$myident = !empty($this->session->getLocalUserNickname()) ? $this->session->getLocalUserNickname() . '@' : '';
|
||||||
|
|
||||||
$sitelocation = $myident . substr($this->baseUrl->get($ssl_state), strpos($this->baseUrl->get($ssl_state), '//') + 2);
|
$sitelocation = $myident . substr($this->baseUrl, strpos($this->baseUrl, '//') + 2);
|
||||||
|
|
||||||
$nav = [
|
$nav = [
|
||||||
'admin' => null,
|
'admin' => null,
|
||||||
|
|
|
||||||
|
|
@ -1274,7 +1274,7 @@ class BBCode
|
||||||
private static function cleanPictureLinksCallback(array $match): string
|
private static function cleanPictureLinksCallback(array $match): string
|
||||||
{
|
{
|
||||||
// When the picture link is the own photo path then we can avoid fetching the link
|
// When the picture link is the own photo path then we can avoid fetching the link
|
||||||
$own_photo_url = preg_quote(Strings::normaliseLink(DI::baseUrl()->get()) . '/photos/');
|
$own_photo_url = preg_quote(Strings::normaliseLink(DI::baseUrl()) . '/photos/');
|
||||||
if (preg_match('|' . $own_photo_url . '.*?/image/|', Strings::normaliseLink($match[1]))) {
|
if (preg_match('|' . $own_photo_url . '.*?/image/|', Strings::normaliseLink($match[1]))) {
|
||||||
if (!empty($match[3])) {
|
if (!empty($match[3])) {
|
||||||
$text = '[img=' . str_replace('-1.', '-0.', $match[2]) . ']' . $match[3] . '[/img]';
|
$text = '[img=' . str_replace('-1.', '-0.', $match[2]) . ']' . $match[3] . '[/img]';
|
||||||
|
|
@ -2099,8 +2099,8 @@ class BBCode
|
||||||
|
|
||||||
// Default iframe allowed domains/path
|
// Default iframe allowed domains/path
|
||||||
$allowedIframeDomains = [
|
$allowedIframeDomains = [
|
||||||
DI::baseUrl()->getHostname()
|
DI::baseUrl()->getHost()
|
||||||
. (DI::baseUrl()->getUrlPath() ? '/' . DI::baseUrl()->getUrlPath() : '')
|
. (DI::baseUrl()->getPath() ? '/' . DI::baseUrl()->getPath() : '')
|
||||||
. '/oembed/', # The path part has to change with the source in Content\Oembed::iframe
|
. '/oembed/', # The path part has to change with the source in Content\Oembed::iframe
|
||||||
'www.youtube.com/embed/',
|
'www.youtube.com/embed/',
|
||||||
'player.vimeo.com/video/',
|
'player.vimeo.com/video/',
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ class Cache
|
||||||
|
|
||||||
public function __construct(BaseURL $baseURL, IManageConfigValues $config, Database $dba, Profiler $profiler, LoggerInterface $logger)
|
public function __construct(BaseURL $baseURL, IManageConfigValues $config, Database $dba, Profiler $profiler, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
$this->hostname = $baseURL->getHostname();
|
$this->hostname = $baseURL->getHost();
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->dba = $dba;
|
$this->dba = $dba;
|
||||||
$this->profiler = $profiler;
|
$this->profiler = $profiler;
|
||||||
|
|
|
||||||
|
|
@ -61,15 +61,13 @@ class DatabaseConfig implements IManageConfigValues
|
||||||
|
|
||||||
foreach ($setCache->getAll() as $category => $data) {
|
foreach ($setCache->getAll() as $category => $data) {
|
||||||
foreach ($data as $key => $value) {
|
foreach ($data as $key => $value) {
|
||||||
$this->cache->set($category, $key, $value, Cache::SOURCE_DATA);
|
$this->set($category, $key, $value);
|
||||||
$this->database->insert('config', ['cat' => $category, 'k' => $key, 'v' => serialize($value)], Database::INSERT_UPDATE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($delCache->getAll() as $category => $keys) {
|
foreach ($delCache->getAll() as $category => $keys) {
|
||||||
foreach ($keys as $key => $value) {
|
foreach ($keys as $key => $value) {
|
||||||
$this->cache->delete($category, $key);
|
$this->delete($category, $key);
|
||||||
$this->database->delete('config', ['cat' => $category, 'k' => $key]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,6 +83,10 @@ class DatabaseConfig implements IManageConfigValues
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
public function set(string $cat, string $key, $value): bool
|
public function set(string $cat, string $key, $value): bool
|
||||||
{
|
{
|
||||||
|
// In case someone or something already serialized a config entry, unserialize it first
|
||||||
|
// We serialize values just once
|
||||||
|
$value = SerializeUtil::maybeUnserialize($value);
|
||||||
|
|
||||||
$this->cache->set($cat, $key, $value, Cache::SOURCE_DATA);
|
$this->cache->set($cat, $key, $value, Cache::SOURCE_DATA);
|
||||||
return $this->database->insert('config', ['cat' => $cat, 'k' => $key, 'v' => serialize($value)], Database::INSERT_UPDATE);
|
return $this->database->insert('config', ['cat' => $cat, 'k' => $key, 'v' => serialize($value)], Database::INSERT_UPDATE);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,10 +28,24 @@ namespace Friendica\Core\Config\Util;
|
||||||
*/
|
*/
|
||||||
class SerializeUtil
|
class SerializeUtil
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Checks if the value needs to get unserialized and returns the unserialized value
|
||||||
|
*
|
||||||
|
* @param mixed $value A possibly serialized value
|
||||||
|
*
|
||||||
|
* @return mixed The unserialized value
|
||||||
|
*/
|
||||||
public static function maybeUnserialize($value)
|
public static function maybeUnserialize($value)
|
||||||
{
|
{
|
||||||
if (static::isSerialized($value)) {
|
// This checks for possible multiple serialized values
|
||||||
return @unserialize(trim($value));
|
while (static::isSerialized($value)) {
|
||||||
|
$oldValue = $value;
|
||||||
|
$value = @unserialize($value);
|
||||||
|
|
||||||
|
// If there's no change after the unserialize call, break the loop (avoid endless loops)
|
||||||
|
if ($oldValue === $value) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ class Installer
|
||||||
{
|
{
|
||||||
$basepath = $configCache->get('system', 'basepath');
|
$basepath = $configCache->get('system', 'basepath');
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('local.config.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/local.config.tpl');
|
||||||
$txt = Renderer::replaceMacros($tpl, [
|
$txt = Renderer::replaceMacros($tpl, [
|
||||||
'$dbhost' => $configCache->get('database', 'hostname'),
|
'$dbhost' => $configCache->get('database', 'hostname'),
|
||||||
'$dbuser' => $configCache->get('database', 'username'),
|
'$dbuser' => $configCache->get('database', 'username'),
|
||||||
|
|
@ -167,11 +167,8 @@ class Installer
|
||||||
|
|
||||||
'$phpath' => $configCache->get('config', 'php_path'),
|
'$phpath' => $configCache->get('config', 'php_path'),
|
||||||
'$adminmail' => $configCache->get('config', 'admin_email'),
|
'$adminmail' => $configCache->get('config', 'admin_email'),
|
||||||
'$hostname' => $configCache->get('config', 'hostname'),
|
|
||||||
|
|
||||||
'$urlpath' => $configCache->get('system', 'urlpath'),
|
'$system_url' => $configCache->get('system', 'url'),
|
||||||
'$baseurl' => $configCache->get('system', 'url'),
|
|
||||||
'$sslpolicy' => $configCache->get('system', 'ssl_policy'),
|
|
||||||
'$basepath' => $basepath,
|
'$basepath' => $basepath,
|
||||||
'$timezone' => $configCache->get('system', 'default_timezone'),
|
'$timezone' => $configCache->get('system', 'default_timezone'),
|
||||||
'$language' => $configCache->get('system', 'language'),
|
'$language' => $configCache->get('system', 'language'),
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class Renderer
|
||||||
DI::profiler()->startRecording('rendering');
|
DI::profiler()->startRecording('rendering');
|
||||||
|
|
||||||
// pass $baseurl to all templates if it isn't set
|
// pass $baseurl to all templates if it isn't set
|
||||||
$vars = array_merge(['$baseurl' => DI::baseUrl()->get(), '$APP' => DI::app()], $vars);
|
$vars = array_merge(['$baseurl' => DI::baseUrl(), '$APP' => DI::app()], $vars);
|
||||||
|
|
||||||
$t = self::getTemplateEngine();
|
$t = self::getTemplateEngine();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class Native extends AbstractSession implements IHandleSessions
|
||||||
ini_set('session.use_only_cookies', 1);
|
ini_set('session.use_only_cookies', 1);
|
||||||
ini_set('session.cookie_httponly', (int)Cookie::HTTPONLY);
|
ini_set('session.cookie_httponly', (int)Cookie::HTTPONLY);
|
||||||
|
|
||||||
if ($baseURL->getSSLPolicy() == App\BaseURL::SSL_POLICY_FULL) {
|
if ($baseURL->getScheme() === 'https') {
|
||||||
ini_set('session.cookie_secure', 1);
|
ini_set('session.cookie_secure', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -401,7 +401,7 @@ class System
|
||||||
if (is_bool($prefix) && !$prefix) {
|
if (is_bool($prefix) && !$prefix) {
|
||||||
$prefix = '';
|
$prefix = '';
|
||||||
} elseif (empty($prefix)) {
|
} elseif (empty($prefix)) {
|
||||||
$prefix = hash('crc32', DI::baseUrl()->getHostname());
|
$prefix = hash('crc32', DI::baseUrl()->getHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
while (strlen($prefix) < ($size - 13)) {
|
while (strlen($prefix) < ($size - 13)) {
|
||||||
|
|
@ -604,7 +604,7 @@ class System
|
||||||
$temppath = BasePath::getRealPath($temppath);
|
$temppath = BasePath::getRealPath($temppath);
|
||||||
|
|
||||||
// To avoid any interferences with other systems we create our own directory
|
// To avoid any interferences with other systems we create our own directory
|
||||||
$new_temppath = $temppath . "/" . DI::baseUrl()->getHostname();
|
$new_temppath = $temppath . "/" . DI::baseUrl()->getHost();
|
||||||
if (!is_dir($new_temppath)) {
|
if (!is_dir($new_temppath)) {
|
||||||
/// @TODO There is a mkdir()+chmod() upwards, maybe generalize this (+ configurable) into a function/method?
|
/// @TODO There is a mkdir()+chmod() upwards, maybe generalize this (+ configurable) into a function/method?
|
||||||
mkdir($new_temppath);
|
mkdir($new_temppath);
|
||||||
|
|
|
||||||
|
|
@ -126,10 +126,7 @@ abstract class DI
|
||||||
return self::$dice->create(App\Arguments::class);
|
return self::$dice->create(App\Arguments::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static function baseUrl(): App\BaseURL
|
||||||
* @return App\BaseURL
|
|
||||||
*/
|
|
||||||
public static function baseUrl()
|
|
||||||
{
|
{
|
||||||
return self::$dice->create(App\BaseURL::class);
|
return self::$dice->create(App\BaseURL::class);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class Photo extends BaseFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($photos as $id => $photo) {
|
foreach ($photos as $id => $photo) {
|
||||||
$link = $this->baseUrl->get() . '/photo/' . $data['resource-id'] . '-' . $photo['scale'] . Images::getExtensionByMimeType($data['type']);
|
$link = $this->baseUrl . '/photo/' . $data['resource-id'] . '-' . $photo['scale'] . Images::getExtensionByMimeType($data['type']);
|
||||||
if ($type == 'xml') {
|
if ($type == 'xml') {
|
||||||
$data['links'][$photo['scale'] . ':link']['@attributes'] = [
|
$data['links'][$photo['scale'] . ':link']['@attributes'] = [
|
||||||
'type' => $data['type'],
|
'type' => $data['type'],
|
||||||
|
|
|
||||||
|
|
@ -570,7 +570,7 @@ class Contact
|
||||||
{
|
{
|
||||||
if (!parse_url($url, PHP_URL_SCHEME)) {
|
if (!parse_url($url, PHP_URL_SCHEME)) {
|
||||||
$addr_parts = explode('@', $url);
|
$addr_parts = explode('@', $url);
|
||||||
return (count($addr_parts) == 2) && ($addr_parts[1] == DI::baseUrl()->getHostname());
|
return (count($addr_parts) == 2) && ($addr_parts[1] == DI::baseUrl()->getHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl());
|
return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl());
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@ class Item
|
||||||
if ($notify) {
|
if ($notify) {
|
||||||
// We have to avoid duplicates. So we create the GUID in form of a hash of the plink or uri.
|
// We have to avoid duplicates. So we create the GUID in form of a hash of the plink or uri.
|
||||||
// We add the hash of our own host because our host is the original creator of the post.
|
// We add the hash of our own host because our host is the original creator of the post.
|
||||||
$prefix_host = DI::baseUrl()->getHostname();
|
$prefix_host = DI::baseUrl()->getHost();
|
||||||
} else {
|
} else {
|
||||||
$prefix_host = '';
|
$prefix_host = '';
|
||||||
|
|
||||||
|
|
@ -1715,7 +1715,7 @@ class Item
|
||||||
if (!empty($item['event-id'])) {
|
if (!empty($item['event-id'])) {
|
||||||
$event_post = Post::selectFirst(['event-id'], ['uri-id' => $item['uri-id'], 'uid' => $uid]);
|
$event_post = Post::selectFirst(['event-id'], ['uri-id' => $item['uri-id'], 'uid' => $uid]);
|
||||||
if (!empty($event_post['event-id'])) {
|
if (!empty($event_post['event-id'])) {
|
||||||
$event = DBA::selectFirst('event', ['edited', 'start', 'finish', 'summary', 'desc', 'location', 'nofinish', 'adjust'], ['id' => $item['event-id']]);
|
$event = DBA::selectFirst('event', ['edited', 'start', 'finish', 'summary', 'desc', 'location', 'nofinish'], ['id' => $item['event-id']]);
|
||||||
if (!empty($event)) {
|
if (!empty($event)) {
|
||||||
// We aren't using "Event::store" here, since we don't want to trigger any further action
|
// We aren't using "Event::store" here, since we don't want to trigger any further action
|
||||||
$ret = DBA::update('event', $event, ['id' => $event_post['event-id']]);
|
$ret = DBA::update('event', $event, ['id' => $event_post['event-id']]);
|
||||||
|
|
@ -2048,7 +2048,7 @@ class Item
|
||||||
$guid = System::createUUID();
|
$guid = System::createUUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
return DI::baseUrl()->get() . '/objects/' . $guid;
|
return DI::baseUrl() . '/objects/' . $guid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2288,7 +2288,7 @@ class Item
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent to forward already forwarded posts
|
// Prevent to forward already forwarded posts
|
||||||
if ($datarray['app'] == DI::baseUrl()->getHostname()) {
|
if ($datarray['app'] == DI::baseUrl()->getHost()) {
|
||||||
Logger::info('Already forwarded (second test)');
|
Logger::info('Already forwarded (second test)');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ class Nodeinfo
|
||||||
return [
|
return [
|
||||||
'name' => $administrator['username'] ?? null,
|
'name' => $administrator['username'] ?? null,
|
||||||
'contact' => $administrator['email'] ?? null,
|
'contact' => $administrator['email'] ?? null,
|
||||||
'account' => $administrator['nickname'] ?? '' ? DI::baseUrl()->get() . '/profile/' . $administrator['nickname'] : null,
|
'account' => $administrator['nickname'] ?? '' ? DI::baseUrl() . '/profile/' . $administrator['nickname'] : null,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -918,7 +918,7 @@ class Photo
|
||||||
*/
|
*/
|
||||||
public static function getResourceData(string $name): array
|
public static function getResourceData(string $name): array
|
||||||
{
|
{
|
||||||
$base = DI::baseUrl()->get();
|
$base = DI::baseUrl();
|
||||||
|
|
||||||
$guid = str_replace([Strings::normaliseLink($base), '/photo/'], '', Strings::normaliseLink($name));
|
$guid = str_replace([Strings::normaliseLink($base), '/photo/'], '', Strings::normaliseLink($name));
|
||||||
|
|
||||||
|
|
@ -982,7 +982,7 @@ class Photo
|
||||||
*/
|
*/
|
||||||
public static function isLocalPage(string $name): bool
|
public static function isLocalPage(string $name): bool
|
||||||
{
|
{
|
||||||
$base = DI::baseUrl()->get();
|
$base = DI::baseUrl();
|
||||||
|
|
||||||
$guid = str_replace(Strings::normaliseLink($base), '', Strings::normaliseLink($name));
|
$guid = str_replace(Strings::normaliseLink($base), '', Strings::normaliseLink($name));
|
||||||
$guid = preg_replace("=/photos/.*/image/(.*)=ism", '$1', $guid);
|
$guid = preg_replace("=/photos/.*/image/(.*)=ism", '$1', $guid);
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ class Profile
|
||||||
if (!$local_user_is_self) {
|
if (!$local_user_is_self) {
|
||||||
if (!$visitor_is_authenticated) {
|
if (!$visitor_is_authenticated) {
|
||||||
// Remote follow is only available for local profiles
|
// Remote follow is only available for local profiles
|
||||||
if (!empty($profile['nickname']) && strpos($profile_url, DI::baseUrl()->get()) === 0) {
|
if (!empty($profile['nickname']) && strpos($profile_url, DI::baseUrl()) === 0) {
|
||||||
$follow_link = 'profile/' . $profile['nickname'] . '/remote_follow';
|
$follow_link = 'profile/' . $profile['nickname'] . '/remote_follow';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -756,13 +756,13 @@ class Profile
|
||||||
$query = rtrim(str_replace($addr_request, '', DI::args()->getQueryString()), '?&');
|
$query = rtrim(str_replace($addr_request, '', DI::args()->getQueryString()), '?&');
|
||||||
|
|
||||||
// The other instance needs to know where to redirect.
|
// The other instance needs to know where to redirect.
|
||||||
$dest = urlencode(DI::baseUrl()->get() . '/' . $query);
|
$dest = urlencode(DI::baseUrl() . '/' . $query);
|
||||||
|
|
||||||
// We need to extract the basebath from the profile url
|
// We need to extract the basebath from the profile url
|
||||||
// to redirect the visitors '/magic' module.
|
// to redirect the visitors '/magic' module.
|
||||||
$basepath = Contact::getBasepath($contact['url']);
|
$basepath = Contact::getBasepath($contact['url']);
|
||||||
|
|
||||||
if ($basepath != DI::baseUrl()->get() && !strstr($dest, '/magic')) {
|
if ($basepath != DI::baseUrl() && !strstr($dest, '/magic')) {
|
||||||
$magic_path = $basepath . '/magic' . '?owa=1&dest=' . $dest . '&' . $addr_request;
|
$magic_path = $basepath . '/magic' . '?owa=1&dest=' . $dest . '&' . $addr_request;
|
||||||
|
|
||||||
// We have to check if the remote server does understand /magic without invoking something
|
// We have to check if the remote server does understand /magic without invoking something
|
||||||
|
|
@ -870,7 +870,7 @@ class Profile
|
||||||
|
|
||||||
$a->setContactId($arr['visitor']['id']);
|
$a->setContactId($arr['visitor']['id']);
|
||||||
|
|
||||||
DI::sysmsg()->addInfo(DI::l10n()->t('OpenWebAuth: %1$s welcomes %2$s', DI::baseUrl()->getHostname(), $visitor['name']));
|
DI::sysmsg()->addInfo(DI::l10n()->t('OpenWebAuth: %1$s welcomes %2$s', DI::baseUrl()->getHost(), $visitor['name']));
|
||||||
|
|
||||||
Logger::info('OpenWebAuth: auth success from ' . $visitor['addr']);
|
Logger::info('OpenWebAuth: auth success from ' . $visitor['addr']);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -534,8 +534,11 @@ class Tag
|
||||||
|
|
||||||
$searchpath = DI::baseUrl() . '/search?tag=';
|
$searchpath = DI::baseUrl() . '/search?tag=';
|
||||||
|
|
||||||
$taglist = DBA::select('tag-view', ['type', 'name', 'url', 'cid'],
|
$taglist = DBA::select(
|
||||||
['uri-id' => $item['uri-id'], 'type' => [self::HASHTAG, self::MENTION, self::EXCLUSIVE_MENTION, self::IMPLICIT_MENTION]]);
|
'tag-view',
|
||||||
|
['type', 'name', 'url', 'cid'],
|
||||||
|
['uri-id' => $item['uri-id'], 'type' => [self::HASHTAG, self::MENTION, self::EXCLUSIVE_MENTION, self::IMPLICIT_MENTION]]
|
||||||
|
);
|
||||||
while ($tag = DBA::fetch($taglist)) {
|
while ($tag = DBA::fetch($taglist)) {
|
||||||
if ($tag['url'] == '') {
|
if ($tag['url'] == '') {
|
||||||
$tag['url'] = $searchpath . rawurlencode($tag['name']);
|
$tag['url'] = $searchpath . rawurlencode($tag['name']);
|
||||||
|
|
@ -544,7 +547,7 @@ class Tag
|
||||||
$orig_tag = $tag['url'];
|
$orig_tag = $tag['url'];
|
||||||
|
|
||||||
$prefix = self::TAG_CHARACTER[$tag['type']];
|
$prefix = self::TAG_CHARACTER[$tag['type']];
|
||||||
switch($tag['type']) {
|
switch ($tag['type']) {
|
||||||
case self::HASHTAG:
|
case self::HASHTAG:
|
||||||
if ($orig_tag != $tag['url']) {
|
if ($orig_tag != $tag['url']) {
|
||||||
$item['body'] = str_replace($orig_tag, $tag['url'], $item['body']);
|
$item['body'] = str_replace($orig_tag, $tag['url'], $item['body']);
|
||||||
|
|
@ -639,17 +642,17 @@ class Tag
|
||||||
*
|
*
|
||||||
* @param int $period Period in hours to consider posts
|
* @param int $period Period in hours to consider posts
|
||||||
* @param int $limit Number of returned tags
|
* @param int $limit Number of returned tags
|
||||||
|
* @param int $offset Page offset in results
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getGlobalTrendingHashtags(int $period, $limit = 10): array
|
public static function getGlobalTrendingHashtags(int $period, int $limit = 10, int $offset = 0): array
|
||||||
{
|
{
|
||||||
$tags = DI::cache()->get('global_trending_tags-' . $period . '-' . $limit);
|
$tags = DI::cache()->get("global_trending_tags-$period");
|
||||||
if (!empty($tags)) {
|
if (empty($tags)) {
|
||||||
return $tags;
|
$tags = self::setGlobalTrendingHashtags($period, 1000);
|
||||||
} else {
|
|
||||||
return self::setGlobalTrendingHashtags($period, $limit);
|
|
||||||
}
|
}
|
||||||
|
return array_slice($tags, $offset, $limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -665,7 +668,9 @@ class Tag
|
||||||
}
|
}
|
||||||
|
|
||||||
$blocked = explode(',', $blocked_txt);
|
$blocked = explode(',', $blocked_txt);
|
||||||
array_walk($blocked, function(&$value) { $value = "'" . DBA::escape(trim($value)) . "'";});
|
array_walk($blocked, function (&$value) {
|
||||||
|
$value = "'" . DBA::escape(trim($value)) . "'";
|
||||||
|
});
|
||||||
return ' AND NOT `name` IN (' . implode(',', $blocked) . ')';
|
return ' AND NOT `name` IN (' . implode(',', $blocked) . ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -683,8 +688,11 @@ class Tag
|
||||||
* Get a uri-id that is at least X hours old.
|
* Get a uri-id that is at least X hours old.
|
||||||
* We use the uri-id in the query for the hash tags since this is much faster
|
* We use the uri-id in the query for the hash tags since this is much faster
|
||||||
*/
|
*/
|
||||||
$post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < ?", 0, DateTimeFormat::utc('now - ' . $period . ' hour')],
|
$post = Post::selectFirstThread(
|
||||||
['order' => ['received' => true]]);
|
['uri-id'],
|
||||||
|
["`uid` = ? AND `received` < ?", 0, DateTimeFormat::utc('now - ' . $period . ' hour')],
|
||||||
|
['order' => ['received' => true]]
|
||||||
|
);
|
||||||
|
|
||||||
if (empty($post['uri-id'])) {
|
if (empty($post['uri-id'])) {
|
||||||
return [];
|
return [];
|
||||||
|
|
@ -692,17 +700,20 @@ class Tag
|
||||||
|
|
||||||
$block_sql = self::getBlockedSQL();
|
$block_sql = self::getBlockedSQL();
|
||||||
|
|
||||||
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
$tagsStmt = DBA::p(
|
||||||
|
"SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
||||||
FROM `tag-search-view`
|
FROM `tag-search-view`
|
||||||
WHERE `private` = ? AND `uid` = ? AND `uri-id` > ? $block_sql
|
WHERE `private` = ? AND `uid` = ? AND `uri-id` > ? $block_sql
|
||||||
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
||||||
Item::PUBLIC, 0, $post['uri-id'],
|
Item::PUBLIC,
|
||||||
|
0,
|
||||||
|
$post['uri-id'],
|
||||||
$limit
|
$limit
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBA::isResult($tagsStmt)) {
|
if (DBA::isResult($tagsStmt)) {
|
||||||
$tags = DBA::toArray($tagsStmt);
|
$tags = DBA::toArray($tagsStmt);
|
||||||
DI::cache()->set('global_trending_tags-' . $period . '-' . $limit, $tags, Duration::DAY);
|
DI::cache()->set("global_trending_tags-$period", $tags, Duration::HOUR);
|
||||||
return $tags;
|
return $tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -714,17 +725,17 @@ class Tag
|
||||||
*
|
*
|
||||||
* @param int $period Period in hours to consider posts
|
* @param int $period Period in hours to consider posts
|
||||||
* @param int $limit Number of returned tags
|
* @param int $limit Number of returned tags
|
||||||
|
* @param int $offset Page offset in results
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getLocalTrendingHashtags(int $period, $limit = 10): array
|
public static function getLocalTrendingHashtags(int $period, $limit = 10, int $offset = 0): array
|
||||||
{
|
{
|
||||||
$tags = DI::cache()->get('local_trending_tags-' . $period . '-' . $limit);
|
$tags = DI::cache()->get("local_trending_tags-$period");
|
||||||
if (!empty($tags)) {
|
if (empty($tags)) {
|
||||||
return $tags;
|
$tags = self::setLocalTrendingHashtags($period, 1000);
|
||||||
} else {
|
|
||||||
return self::setLocalTrendingHashtags($period, $limit);
|
|
||||||
}
|
}
|
||||||
|
return array_slice($tags, $offset, $limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -739,25 +750,30 @@ class Tag
|
||||||
{
|
{
|
||||||
// Get a uri-id that is at least X hours old.
|
// Get a uri-id that is at least X hours old.
|
||||||
// We use the uri-id in the query for the hash tags since this is much faster
|
// We use the uri-id in the query for the hash tags since this is much faster
|
||||||
$post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < ?", 0, DateTimeFormat::utc('now - ' . $period . ' hour')],
|
$post = Post::selectFirstThread(
|
||||||
['order' => ['received' => true]]);
|
['uri-id'],
|
||||||
|
["`uid` = ? AND `received` < ?", 0, DateTimeFormat::utc('now - ' . $period . ' hour')],
|
||||||
|
['order' => ['received' => true]]
|
||||||
|
);
|
||||||
if (empty($post['uri-id'])) {
|
if (empty($post['uri-id'])) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$block_sql = self::getBlockedSQL();
|
$block_sql = self::getBlockedSQL();
|
||||||
|
|
||||||
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
$tagsStmt = DBA::p(
|
||||||
|
"SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
||||||
FROM `tag-search-view`
|
FROM `tag-search-view`
|
||||||
WHERE `private` = ? AND `wall` AND `origin` AND `uri-id` > ? $block_sql
|
WHERE `private` = ? AND `wall` AND `origin` AND `uri-id` > ? $block_sql
|
||||||
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
||||||
Item::PUBLIC, $post['uri-id'],
|
Item::PUBLIC,
|
||||||
|
$post['uri-id'],
|
||||||
$limit
|
$limit
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBA::isResult($tagsStmt)) {
|
if (DBA::isResult($tagsStmt)) {
|
||||||
$tags = DBA::toArray($tagsStmt);
|
$tags = DBA::toArray($tagsStmt);
|
||||||
DI::cache()->set('local_trending_tags-' . $period . '-' . $limit, $tags, Duration::DAY);
|
DI::cache()->set("local_trending_tags-$period", $tags, Duration::HOUR);
|
||||||
return $tags;
|
return $tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ class User
|
||||||
$system['region'] = '';
|
$system['region'] = '';
|
||||||
$system['postal-code'] = '';
|
$system['postal-code'] = '';
|
||||||
$system['country-name'] = '';
|
$system['country-name'] = '';
|
||||||
$system['homepage'] = DI::baseUrl()->get();
|
$system['homepage'] = DI::baseUrl();
|
||||||
$system['dob'] = '0000-00-00';
|
$system['dob'] = '0000-00-00';
|
||||||
|
|
||||||
// Ensure that the user contains data
|
// Ensure that the user contains data
|
||||||
|
|
@ -219,7 +219,7 @@ class User
|
||||||
'self' => true,
|
'self' => true,
|
||||||
'network' => Protocol::ACTIVITYPUB,
|
'network' => Protocol::ACTIVITYPUB,
|
||||||
'name' => 'System Account',
|
'name' => 'System Account',
|
||||||
'addr' => $system_actor_name . '@' . DI::baseUrl()->getHostname(),
|
'addr' => $system_actor_name . '@' . DI::baseUrl()->getHost(),
|
||||||
'nick' => $system_actor_name,
|
'nick' => $system_actor_name,
|
||||||
'url' => DI::baseUrl() . '/friendica',
|
'url' => DI::baseUrl() . '/friendica',
|
||||||
'pubkey' => $keys['pubkey'],
|
'pubkey' => $keys['pubkey'],
|
||||||
|
|
@ -1023,7 +1023,7 @@ class User
|
||||||
$_SESSION['register'] = 1;
|
$_SESSION['register'] = 1;
|
||||||
$_SESSION['openid'] = $openid_url;
|
$_SESSION['openid'] = $openid_url;
|
||||||
|
|
||||||
$openid = new LightOpenID(DI::baseUrl()->getHostname());
|
$openid = new LightOpenID(DI::baseUrl()->getHost());
|
||||||
$openid->identity = $openid_url;
|
$openid->identity = $openid_url;
|
||||||
$openid->returnUrl = DI::baseUrl() . '/openid';
|
$openid->returnUrl = DI::baseUrl() . '/openid';
|
||||||
$openid->required = ['namePerson/friendly', 'contact/email', 'namePerson'];
|
$openid->required = ['namePerson/friendly', 'contact/email', 'namePerson'];
|
||||||
|
|
@ -1360,7 +1360,7 @@ class User
|
||||||
$l10n,
|
$l10n,
|
||||||
$user,
|
$user,
|
||||||
DI::config()->get('config', 'sitename'),
|
DI::config()->get('config', 'sitename'),
|
||||||
DI::baseUrl()->get(),
|
DI::baseUrl(),
|
||||||
($register['password'] ?? '') ?: 'Sent in a previous email'
|
($register['password'] ?? '') ?: 'Sent in a previous email'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -1457,7 +1457,7 @@ class User
|
||||||
Thank you and welcome to %4$s.'));
|
Thank you and welcome to %4$s.'));
|
||||||
|
|
||||||
$preamble = sprintf($preamble, $user['username'], DI::config()->get('config', 'sitename'));
|
$preamble = sprintf($preamble, $user['username'], DI::config()->get('config', 'sitename'));
|
||||||
$body = sprintf($body, DI::baseUrl()->get(), $user['nickname'], $result['password'], DI::config()->get('config', 'sitename'));
|
$body = sprintf($body, DI::baseUrl(), $user['nickname'], $result['password'], DI::config()->get('config', 'sitename'));
|
||||||
|
|
||||||
$email = DI::emailer()
|
$email = DI::emailer()
|
||||||
->newSystemMail()
|
->newSystemMail()
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class Cookie
|
||||||
*/
|
*/
|
||||||
public function __construct(App\Request $request, IManageConfigValues $config, App\BaseURL $baseURL, array $COOKIE = [])
|
public function __construct(App\Request $request, IManageConfigValues $config, App\BaseURL $baseURL, array $COOKIE = [])
|
||||||
{
|
{
|
||||||
$this->sslEnabled = $baseURL->getSSLPolicy() === App\BaseURL::SSL_POLICY_FULL;
|
$this->sslEnabled = $baseURL->getScheme() === 'https';
|
||||||
$this->sitePrivateKey = $config->get('system', 'site_prvkey');
|
$this->sitePrivateKey = $config->get('system', 'site_prvkey');
|
||||||
|
|
||||||
$authCookieDays = $config->get('system', 'auth_cookie_lifetime',
|
$authCookieDays = $config->get('system', 'auth_cookie_lifetime',
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class Objects extends BaseModule
|
||||||
Logger::info('Provided GUID found.', ['guid' => $this->parameters['guid'], 'uri-id' => $itemuri['id']]);
|
Logger::info('Provided GUID found.', ['guid' => $this->parameters['guid'], 'uri-id' => $itemuri['id']]);
|
||||||
} else {
|
} else {
|
||||||
// The item URI does not always contain the GUID. This means that we have to search the URL instead
|
// The item URI does not always contain the GUID. This means that we have to search the URL instead
|
||||||
$url = DI::baseUrl()->get() . '/' . DI::args()->getQueryString();
|
$url = DI::baseUrl() . '/' . DI::args()->getQueryString();
|
||||||
$nurl = Strings::normaliseLink($url);
|
$nurl = Strings::normaliseLink($url);
|
||||||
$ssl_url = str_replace('http://', 'https://', $nurl);
|
$ssl_url = str_replace('http://', 'https://', $nurl);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,6 @@ class Details extends BaseAdmin
|
||||||
'$page' => DI::l10n()->t('Addons'),
|
'$page' => DI::l10n()->t('Addons'),
|
||||||
'$toggle' => DI::l10n()->t('Toggle'),
|
'$toggle' => DI::l10n()->t('Toggle'),
|
||||||
'$settings' => DI::l10n()->t('Settings'),
|
'$settings' => DI::l10n()->t('Settings'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
|
|
||||||
'$addon' => $addon,
|
'$addon' => $addon,
|
||||||
'$status' => $status,
|
'$status' => $status,
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ class Index extends BaseAdmin
|
||||||
'$page' => DI::l10n()->t('Addons'),
|
'$page' => DI::l10n()->t('Addons'),
|
||||||
'$submit' => DI::l10n()->t('Save Settings'),
|
'$submit' => DI::l10n()->t('Save Settings'),
|
||||||
'$reload' => DI::l10n()->t('Reload active addons'),
|
'$reload' => DI::l10n()->t('Reload active addons'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$function' => 'addons',
|
'$function' => 'addons',
|
||||||
'$addons' => $addons,
|
'$addons' => $addons,
|
||||||
'$pcount' => count($addons),
|
'$pcount' => count($addons),
|
||||||
|
|
|
||||||
|
|
@ -102,13 +102,11 @@ class DBSync extends BaseAdmin
|
||||||
|
|
||||||
if (!count($failed)) {
|
if (!count($failed)) {
|
||||||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/structure_check.tpl'), [
|
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/structure_check.tpl'), [
|
||||||
'$base' => DI::baseUrl()->get(true),
|
|
||||||
'$banner' => DI::l10n()->t('No failed updates.'),
|
'$banner' => DI::l10n()->t('No failed updates.'),
|
||||||
'$check' => DI::l10n()->t('Check database structure'),
|
'$check' => DI::l10n()->t('Check database structure'),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/failed_updates.tpl'), [
|
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/failed_updates.tpl'), [
|
||||||
'$base' => DI::baseUrl()->get(true),
|
|
||||||
'$banner' => DI::l10n()->t('Failed Updates'),
|
'$banner' => DI::l10n()->t('Failed Updates'),
|
||||||
'$desc' => DI::l10n()->t('This does not include updates prior to 1139, which did not return a status.'),
|
'$desc' => DI::l10n()->t('This does not include updates prior to 1139, which did not return a status.'),
|
||||||
'$mark' => DI::l10n()->t("Mark success \x28if update was manually applied\x29"),
|
'$mark' => DI::l10n()->t("Mark success \x28if update was manually applied\x29"),
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,6 @@ class Features extends BaseAdmin
|
||||||
$tpl = Renderer::getMarkupTemplate('admin/features.tpl');
|
$tpl = Renderer::getMarkupTemplate('admin/features.tpl');
|
||||||
$o = Renderer::replaceMacros($tpl, [
|
$o = Renderer::replaceMacros($tpl, [
|
||||||
'$form_security_token' => self::getFormSecurityToken("admin_manage_features"),
|
'$form_security_token' => self::getFormSecurityToken("admin_manage_features"),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$title' => DI::l10n()->t('Manage Additional Features'),
|
'$title' => DI::l10n()->t('Manage Additional Features'),
|
||||||
'$features' => $features,
|
'$features' => $features,
|
||||||
'$submit' => DI::l10n()->t('Save Settings'),
|
'$submit' => DI::l10n()->t('Save Settings'),
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,6 @@ class Settings extends BaseAdmin
|
||||||
'$page' => DI::l10n()->t('Logs'),
|
'$page' => DI::l10n()->t('Logs'),
|
||||||
'$submit' => DI::l10n()->t('Save Settings'),
|
'$submit' => DI::l10n()->t('Save Settings'),
|
||||||
'$clear' => DI::l10n()->t('Clear'),
|
'$clear' => DI::l10n()->t('Clear'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$logname' => DI::config()->get('system', 'logfile'),
|
'$logname' => DI::config()->get('system', 'logfile'),
|
||||||
// see /help/smarty3-templates#1_1 on any Friendica node
|
// see /help/smarty3-templates#1_1 on any Friendica node
|
||||||
'$debugging' => ['debugging', DI::l10n()->t("Enable Debugging"), DI::config()->get('system', 'debugging'), ""],
|
'$debugging' => ['debugging', DI::l10n()->t("Enable Debugging"), DI::config()->get('system', 'debugging'), ""],
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,6 @@ class View extends BaseAdmin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Renderer::replaceMacros($t, [
|
return Renderer::replaceMacros($t, [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$title' => DI::l10n()->t('Administration'),
|
'$title' => DI::l10n()->t('Administration'),
|
||||||
'$page' => DI::l10n()->t('View Logs'),
|
'$page' => DI::l10n()->t('View Logs'),
|
||||||
'$l10n' => [
|
'$l10n' => [
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,6 @@ class Site extends BaseAdmin
|
||||||
$mail_enabled = !empty($_POST['mail_enabled']);
|
$mail_enabled = !empty($_POST['mail_enabled']);
|
||||||
$ostatus_enabled = !empty($_POST['ostatus_enabled']);
|
$ostatus_enabled = !empty($_POST['ostatus_enabled']);
|
||||||
$diaspora_enabled = !empty($_POST['diaspora_enabled']);
|
$diaspora_enabled = !empty($_POST['diaspora_enabled']);
|
||||||
$ssl_policy = (!empty($_POST['ssl_policy']) ? intval($_POST['ssl_policy']) : 0);
|
|
||||||
$force_ssl = !empty($_POST['force_ssl']);
|
$force_ssl = !empty($_POST['force_ssl']);
|
||||||
$show_help = !empty($_POST['show_help']);
|
$show_help = !empty($_POST['show_help']);
|
||||||
$dbclean = !empty($_POST['dbclean']);
|
$dbclean = !empty($_POST['dbclean']);
|
||||||
|
|
@ -152,49 +151,10 @@ class Site extends BaseAdmin
|
||||||
Worker::add(Worker::PRIORITY_LOW, 'Directory');
|
Worker::add(Worker::PRIORITY_LOW, 'Directory');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DI::baseUrl()->getUrlPath() != "") {
|
if (DI::baseUrl()->getPath() != "") {
|
||||||
$diaspora_enabled = false;
|
$diaspora_enabled = false;
|
||||||
}
|
}
|
||||||
if ($ssl_policy != intval(DI::config()->get('system', 'ssl_policy'))) {
|
|
||||||
if ($ssl_policy == App\BaseURL::SSL_POLICY_FULL) {
|
|
||||||
DBA::e("UPDATE `contact` SET
|
|
||||||
`url` = REPLACE(`url` , 'http:' , 'https:'),
|
|
||||||
`photo` = REPLACE(`photo` , 'http:' , 'https:'),
|
|
||||||
`thumb` = REPLACE(`thumb` , 'http:' , 'https:'),
|
|
||||||
`micro` = REPLACE(`micro` , 'http:' , 'https:'),
|
|
||||||
`request` = REPLACE(`request`, 'http:' , 'https:'),
|
|
||||||
`notify` = REPLACE(`notify` , 'http:' , 'https:'),
|
|
||||||
`poll` = REPLACE(`poll` , 'http:' , 'https:'),
|
|
||||||
`confirm` = REPLACE(`confirm`, 'http:' , 'https:'),
|
|
||||||
`poco` = REPLACE(`poco` , 'http:' , 'https:')
|
|
||||||
WHERE `self` = 1"
|
|
||||||
);
|
|
||||||
DBA::e("UPDATE `profile` SET
|
|
||||||
`photo` = REPLACE(`photo` , 'http:' , 'https:'),
|
|
||||||
`thumb` = REPLACE(`thumb` , 'http:' , 'https:')
|
|
||||||
WHERE 1 "
|
|
||||||
);
|
|
||||||
} elseif ($ssl_policy == App\BaseURL::SSL_POLICY_SELFSIGN) {
|
|
||||||
DBA::e("UPDATE `contact` SET
|
|
||||||
`url` = REPLACE(`url` , 'https:' , 'http:'),
|
|
||||||
`photo` = REPLACE(`photo` , 'https:' , 'http:'),
|
|
||||||
`thumb` = REPLACE(`thumb` , 'https:' , 'http:'),
|
|
||||||
`micro` = REPLACE(`micro` , 'https:' , 'http:'),
|
|
||||||
`request` = REPLACE(`request`, 'https:' , 'http:'),
|
|
||||||
`notify` = REPLACE(`notify` , 'https:' , 'http:'),
|
|
||||||
`poll` = REPLACE(`poll` , 'https:' , 'http:'),
|
|
||||||
`confirm` = REPLACE(`confirm`, 'https:' , 'http:'),
|
|
||||||
`poco` = REPLACE(`poco` , 'https:' , 'http:')
|
|
||||||
WHERE `self` = 1"
|
|
||||||
);
|
|
||||||
DBA::e("UPDATE `profile` SET
|
|
||||||
`photo` = REPLACE(`photo` , 'https:' , 'http:'),
|
|
||||||
`thumb` = REPLACE(`thumb` , 'https:' , 'http:')
|
|
||||||
WHERE 1 "
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$transactionConfig->set('system', 'ssl_policy' , $ssl_policy);
|
|
||||||
$transactionConfig->set('system', 'maxloadavg' , $maxloadavg);
|
$transactionConfig->set('system', 'maxloadavg' , $maxloadavg);
|
||||||
$transactionConfig->set('system', 'min_memory' , $min_memory);
|
$transactionConfig->set('system', 'min_memory' , $min_memory);
|
||||||
$transactionConfig->set('system', 'optimize_tables' , $optimize_tables);
|
$transactionConfig->set('system', 'optimize_tables' , $optimize_tables);
|
||||||
|
|
@ -408,12 +368,6 @@ class Site extends BaseAdmin
|
||||||
Register::OPEN => DI::l10n()->t('Open')
|
Register::OPEN => DI::l10n()->t('Open')
|
||||||
];
|
];
|
||||||
|
|
||||||
$ssl_choices = [
|
|
||||||
App\BaseURL::SSL_POLICY_NONE => DI::l10n()->t('No SSL policy, links will track page SSL state'),
|
|
||||||
App\BaseURL::SSL_POLICY_FULL => DI::l10n()->t('Force all links to use SSL'),
|
|
||||||
App\BaseURL::SSL_POLICY_SELFSIGN => DI::l10n()->t('Self-signed certificate, use SSL for local links only (discouraged)')
|
|
||||||
];
|
|
||||||
|
|
||||||
$check_git_version_choices = [
|
$check_git_version_choices = [
|
||||||
'none' => DI::l10n()->t('Don\'t check'),
|
'none' => DI::l10n()->t('Don\'t check'),
|
||||||
'stable' => DI::l10n()->t('check the stable version'),
|
'stable' => DI::l10n()->t('check the stable version'),
|
||||||
|
|
@ -428,7 +382,7 @@ class Site extends BaseAdmin
|
||||||
// ContactRelation::DISCOVERY_ALL => DI::l10n()->t('All'),
|
// ContactRelation::DISCOVERY_ALL => DI::l10n()->t('All'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$diaspora_able = (DI::baseUrl()->getUrlPath() == '');
|
$diaspora_able = (DI::baseUrl()->getPath() == '');
|
||||||
|
|
||||||
$t = Renderer::getMarkupTemplate('admin/site.tpl');
|
$t = Renderer::getMarkupTemplate('admin/site.tpl');
|
||||||
return Renderer::replaceMacros($t, [
|
return Renderer::replaceMacros($t, [
|
||||||
|
|
@ -452,7 +406,6 @@ class Site extends BaseAdmin
|
||||||
'$relocate' => DI::l10n()->t('Relocate Node'),
|
'$relocate' => DI::l10n()->t('Relocate Node'),
|
||||||
'$relocate_msg' => DI::l10n()->t('Relocating your node enables you to change the DNS domain of this node and keep all the existing users and posts. This process takes a while and can only be started from the relocate console command like this:'),
|
'$relocate_msg' => DI::l10n()->t('Relocating your node enables you to change the DNS domain of this node and keep all the existing users and posts. This process takes a while and can only be started from the relocate console command like this:'),
|
||||||
'$relocate_cmd' => DI::l10n()->t('(Friendica directory)# bin/console relocate https://newdomain.com'),
|
'$relocate_cmd' => DI::l10n()->t('(Friendica directory)# bin/console relocate https://newdomain.com'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
|
|
||||||
// name, label, value, help string, extra data...
|
// name, label, value, help string, extra data...
|
||||||
'$sitename' => ['sitename', DI::l10n()->t('Site name'), DI::config()->get('config', 'sitename'), ''],
|
'$sitename' => ['sitename', DI::l10n()->t('Site name'), DI::config()->get('config', 'sitename'), ''],
|
||||||
|
|
@ -464,9 +417,8 @@ class Site extends BaseAdmin
|
||||||
'$touch_icon' => ['touch_icon', DI::l10n()->t('Touch icon'), DI::config()->get('system', 'touch_icon'), DI::l10n()->t('Link to an icon that will be used for tablets and mobiles.')],
|
'$touch_icon' => ['touch_icon', DI::l10n()->t('Touch icon'), DI::config()->get('system', 'touch_icon'), DI::l10n()->t('Link to an icon that will be used for tablets and mobiles.')],
|
||||||
'$additional_info' => ['additional_info', DI::l10n()->t('Additional Info'), $additional_info, DI::l10n()->t('For public servers: you can add additional information here that will be listed at %s/servers.', Search::getGlobalDirectory())],
|
'$additional_info' => ['additional_info', DI::l10n()->t('Additional Info'), $additional_info, DI::l10n()->t('For public servers: you can add additional information here that will be listed at %s/servers.', Search::getGlobalDirectory())],
|
||||||
'$language' => ['language', DI::l10n()->t('System language'), DI::config()->get('system', 'language'), '', $lang_choices],
|
'$language' => ['language', DI::l10n()->t('System language'), DI::config()->get('system', 'language'), '', $lang_choices],
|
||||||
'$theme' => ['theme', DI::l10n()->t('System theme'), DI::config()->get('system', 'theme'), DI::l10n()->t('Default system theme - may be over-ridden by user profiles - <a href="%s" id="cnftheme">Change default theme settings</a>', DI::baseUrl()->get(true) . '/admin/themes'), $theme_choices],
|
'$theme' => ['theme', DI::l10n()->t('System theme'), DI::config()->get('system', 'theme'), DI::l10n()->t('Default system theme - may be over-ridden by user profiles - <a href="%s" id="cnftheme">Change default theme settings</a>', DI::baseUrl() . '/admin/themes'), $theme_choices],
|
||||||
'$theme_mobile' => ['theme_mobile', DI::l10n()->t('Mobile system theme'), DI::config()->get('system', 'mobile-theme', '---'), DI::l10n()->t('Theme for mobile devices'), $theme_choices_mobile],
|
'$theme_mobile' => ['theme_mobile', DI::l10n()->t('Mobile system theme'), DI::config()->get('system', 'mobile-theme', '---'), DI::l10n()->t('Theme for mobile devices'), $theme_choices_mobile],
|
||||||
'$ssl_policy' => ['ssl_policy', DI::l10n()->t('SSL link policy'), DI::config()->get('system', 'ssl_policy'), DI::l10n()->t('Determines whether generated links should be forced to use SSL'), $ssl_choices],
|
|
||||||
'$force_ssl' => ['force_ssl', DI::l10n()->t('Force SSL'), DI::config()->get('system', 'force_ssl'), DI::l10n()->t('Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops.')],
|
'$force_ssl' => ['force_ssl', DI::l10n()->t('Force SSL'), DI::config()->get('system', 'force_ssl'), DI::l10n()->t('Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops.')],
|
||||||
'$show_help' => ['show_help', DI::l10n()->t('Show help entry from navigation menu'), !DI::config()->get('system', 'hide_help'), DI::l10n()->t('Displays the menu entry for the Help pages from the navigation menu. It is always accessible by calling /help directly.')],
|
'$show_help' => ['show_help', DI::l10n()->t('Show help entry from navigation menu'), !DI::config()->get('system', 'hide_help'), DI::l10n()->t('Displays the menu entry for the Help pages from the navigation menu. It is always accessible by calling /help directly.')],
|
||||||
'$singleuser' => ['singleuser', DI::l10n()->t('Single user instance'), DI::config()->get('system', 'singleuser', '---'), DI::l10n()->t('Make this instance multi-user or single-user for the named user'), $user_names],
|
'$singleuser' => ['singleuser', DI::l10n()->t('Single user instance'), DI::config()->get('system', 'singleuser', '---'), DI::l10n()->t('Make this instance multi-user or single-user for the named user'), $user_names],
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,6 @@ class Storage extends BaseAdmin
|
||||||
'$use' => DI::l10n()->t('Use storage backend'),
|
'$use' => DI::l10n()->t('Use storage backend'),
|
||||||
'$save_reload' => DI::l10n()->t('Save & Reload'),
|
'$save_reload' => DI::l10n()->t('Save & Reload'),
|
||||||
'$noconfig' => DI::l10n()->t('This backend doesn\'t have custom settings'),
|
'$noconfig' => DI::l10n()->t('This backend doesn\'t have custom settings'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$form_security_token' => self::getFormSecurityToken("admin_storage"),
|
'$form_security_token' => self::getFormSecurityToken("admin_storage"),
|
||||||
'$storagebackend' => $current_storage_backend instanceof ICanWriteToStorage ? $current_storage_backend::getName() : DI::l10n()->t('Database (legacy)'),
|
'$storagebackend' => $current_storage_backend instanceof ICanWriteToStorage ? $current_storage_backend::getName() : DI::l10n()->t('Database (legacy)'),
|
||||||
'$availablestorageforms' => $available_storage_forms,
|
'$availablestorageforms' => $available_storage_forms,
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,10 @@ class Summary extends BaseAdmin
|
||||||
$warningtext[] = DI::l10n()->t('The last update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear. (Some of the errors are possibly inside the logfile.)');
|
$warningtext[] = DI::l10n()->t('The last update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear. (Some of the errors are possibly inside the logfile.)');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty(DI::config()->get('system', 'url'))) {
|
||||||
|
$warningtext[] = DI::l10n()->t('The system.url entry is missing. This is a low level setting and can lead to unexpected behavior. Please add a valid entry as soon as possible in the config file or per console command!');
|
||||||
|
}
|
||||||
|
|
||||||
$last_worker_call = DI::keyValue()->get('last_worker_execution');
|
$last_worker_call = DI::keyValue()->get('last_worker_execution');
|
||||||
if (!$last_worker_call) {
|
if (!$last_worker_call) {
|
||||||
$warningtext[] = DI::l10n()->t('The worker was never executed. Please check your database structure!');
|
$warningtext[] = DI::l10n()->t('The worker was never executed. Please check your database structure!');
|
||||||
|
|
@ -107,18 +111,18 @@ class Summary extends BaseAdmin
|
||||||
|
|
||||||
// Legacy config file warning
|
// Legacy config file warning
|
||||||
if (file_exists('.htconfig.php')) {
|
if (file_exists('.htconfig.php')) {
|
||||||
$warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl()->get() . '/help/Config');
|
$warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl() . '/help/Config');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_exists('config/local.ini.php')) {
|
if (file_exists('config/local.ini.php')) {
|
||||||
$warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl()->get() . '/help/Config');
|
$warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl() . '/help/Config');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check server vitality
|
// Check server vitality
|
||||||
if (!self::checkSelfHostMeta()) {
|
if (!self::checkSelfHostMeta()) {
|
||||||
$well_known = DI::baseUrl()->get() . Probe::HOST_META;
|
$well_known = DI::baseUrl() . Probe::HOST_META;
|
||||||
$warningtext[] = DI::l10n()->t('<a href="%s">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href="%s">the installation page</a> for help.',
|
$warningtext[] = DI::l10n()->t('<a href="%s">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href="%s">the installation page</a> for help.',
|
||||||
$well_known, $well_known, DI::baseUrl()->get() . '/help/Install');
|
$well_known, $well_known, DI::baseUrl() . '/help/Install');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check logfile permission
|
// Check logfile permission
|
||||||
|
|
@ -229,7 +233,7 @@ class Summary extends BaseAdmin
|
||||||
private static function checkSelfHostMeta()
|
private static function checkSelfHostMeta()
|
||||||
{
|
{
|
||||||
// Fetch the host-meta to check if this really is a vital server
|
// Fetch the host-meta to check if this really is a vital server
|
||||||
return DI::httpClient()->get(DI::baseUrl()->get() . Probe::HOST_META, HttpClientAccept::XRD_XML)->isSuccess();
|
return DI::httpClient()->get(DI::baseUrl() . Probe::HOST_META, HttpClientAccept::XRD_XML)->isSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class Details extends BaseAdmin
|
||||||
require_once "view/theme/$theme/config.php";
|
require_once "view/theme/$theme/config.php";
|
||||||
|
|
||||||
if (function_exists('theme_admin')) {
|
if (function_exists('theme_admin')) {
|
||||||
$admin_form = '<iframe onload="resizeIframe(this);" src="' . DI::baseUrl()->get(true) . '/admin/themes/' . $theme . '/embed?mode=minimal" width="100%" height="600px" frameborder="no"></iframe>';
|
$admin_form = '<iframe onload="resizeIframe(this);" src="' . DI::baseUrl() . '/admin/themes/' . $theme . '/embed?mode=minimal" width="100%" height="600px" frameborder="no"></iframe>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -91,7 +91,6 @@ class Details extends BaseAdmin
|
||||||
'$page' => DI::l10n()->t('Themes'),
|
'$page' => DI::l10n()->t('Themes'),
|
||||||
'$toggle' => DI::l10n()->t('Toggle'),
|
'$toggle' => DI::l10n()->t('Toggle'),
|
||||||
'$settings' => DI::l10n()->t('Settings'),
|
'$settings' => DI::l10n()->t('Settings'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$addon' => $theme,
|
'$addon' => $theme,
|
||||||
'$status' => $status,
|
'$status' => $status,
|
||||||
'$action' => $action,
|
'$action' => $action,
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class Embed extends BaseAdmin
|
||||||
|
|
||||||
$t = Renderer::getMarkupTemplate('admin/addons/embed.tpl');
|
$t = Renderer::getMarkupTemplate('admin/addons/embed.tpl');
|
||||||
return Renderer::replaceMacros($t, [
|
return Renderer::replaceMacros($t, [
|
||||||
'$action' => DI::baseUrl()->get(true) . '/admin/themes/' . $theme . '/embed?mode=minimal',
|
'$action' => 'admin/themes/' . $theme . '/embed?mode=minimal',
|
||||||
'$form' => $admin_form,
|
'$form' => $admin_form,
|
||||||
'$form_security_token' => self::getFormSecurityToken("admin_theme_settings"),
|
'$form_security_token' => self::getFormSecurityToken("admin_theme_settings"),
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,6 @@ class Index extends BaseAdmin
|
||||||
'$page' => DI::l10n()->t('Themes'),
|
'$page' => DI::l10n()->t('Themes'),
|
||||||
'$submit' => DI::l10n()->t('Save Settings'),
|
'$submit' => DI::l10n()->t('Save Settings'),
|
||||||
'$reload' => DI::l10n()->t('Reload active themes'),
|
'$reload' => DI::l10n()->t('Reload active themes'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$function' => 'themes',
|
'$function' => 'themes',
|
||||||
'$addons' => $addons,
|
'$addons' => $addons,
|
||||||
'$pcount' => count($themes),
|
'$pcount' => count($themes),
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,9 @@ class Config extends BaseApi
|
||||||
$config = [
|
$config = [
|
||||||
'site' => [
|
'site' => [
|
||||||
'name' => DI::config()->get('config', 'sitename'),
|
'name' => DI::config()->get('config', 'sitename'),
|
||||||
'server' => DI::baseUrl()->getHostname(),
|
'server' => DI::baseUrl()->getHost(),
|
||||||
'theme' => DI::config()->get('system', 'theme'),
|
'theme' => DI::config()->get('system', 'theme'),
|
||||||
'path' => DI::baseUrl()->getUrlPath(),
|
'path' => DI::baseUrl()->getPath(),
|
||||||
'logo' => DI::baseUrl() . '/images/friendica-64.png',
|
'logo' => DI::baseUrl() . '/images/friendica-64.png',
|
||||||
'fancy' => true,
|
'fancy' => true,
|
||||||
'language' => DI::config()->get('system', 'language'),
|
'language' => DI::config()->get('system', 'language'),
|
||||||
|
|
@ -52,7 +52,7 @@ class Config extends BaseApi
|
||||||
'private' => (bool)DI::config()->get('system', 'block_public'),
|
'private' => (bool)DI::config()->get('system', 'block_public'),
|
||||||
'textlimit' => (string) DI::config()->get('config', 'api_import_size', DI::config()->get('config', 'max_import_size')),
|
'textlimit' => (string) DI::config()->get('config', 'api_import_size', DI::config()->get('config', 'max_import_size')),
|
||||||
'sslserver' => null,
|
'sslserver' => null,
|
||||||
'ssl' => DI::config()->get('system', 'ssl_policy') == App\BaseURL::SSL_POLICY_FULL ? 'always' : '0',
|
'ssl' => DI::baseUrl()->getScheme() === 'https' ? 'always' : '0',
|
||||||
'friendica' => [
|
'friendica' => [
|
||||||
'FRIENDICA_PLATFORM' => App::PLATFORM,
|
'FRIENDICA_PLATFORM' => App::PLATFORM,
|
||||||
'FRIENDICA_VERSION' => App::VERSION,
|
'FRIENDICA_VERSION' => App::VERSION,
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ class Statuses extends BaseApi
|
||||||
'visibility' => '', // Visibility of the posted status. One of: "public", "unlisted", "private" or "direct".
|
'visibility' => '', // Visibility of the posted status. One of: "public", "unlisted", "private" or "direct".
|
||||||
'scheduled_at' => '', // ISO 8601 Datetime at which to schedule a status. Providing this paramter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future.
|
'scheduled_at' => '', // ISO 8601 Datetime at which to schedule a status. Providing this paramter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future.
|
||||||
'language' => '', // ISO 639 language code for this status.
|
'language' => '', // ISO 639 language code for this status.
|
||||||
|
'friendica' => [], // Friendica extensions to the standard Mastodon API spec
|
||||||
], $request);
|
], $request);
|
||||||
|
|
||||||
$owner = User::getOwnerDataById($uid);
|
$owner = User::getOwnerDataById($uid);
|
||||||
|
|
@ -208,8 +209,10 @@ class Statuses extends BaseApi
|
||||||
$item['quote-uri-id'] = $request['quote_id'];
|
$item['quote-uri-id'] = $request['quote_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$item['title'] = $request['friendica']['title'] ?? '';
|
||||||
|
|
||||||
if (!empty($request['spoiler_text'])) {
|
if (!empty($request['spoiler_text'])) {
|
||||||
if (!$request['in_reply_to_id'] && DI::pConfig()->get($uid, 'system', 'api_spoiler_title', true)) {
|
if (!isset($request['friendica']['title']) && !$request['in_reply_to_id'] && DI::pConfig()->get($uid, 'system', 'api_spoiler_title', true)) {
|
||||||
$item['title'] = $request['spoiler_text'];
|
$item['title'] = $request['spoiler_text'];
|
||||||
} else {
|
} else {
|
||||||
$item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body'];
|
$item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body'];
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,13 @@ class Direct extends BaseApi
|
||||||
$params['order'] = ['uri-id'];
|
$params['order'] = ['uri-id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($uid)) {
|
||||||
|
$condition = DBA::mergeConditions(
|
||||||
|
$condition,
|
||||||
|
["NOT `parent-author-id` IN (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND (`blocked` OR `ignored`) AND `cid` = `parent-author-id`)", $uid]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$mails = DBA::select('mail', ['id', 'uri-id'], $condition, $params);
|
$mails = DBA::select('mail', ['id', 'uri-id'], $condition, $params);
|
||||||
|
|
||||||
$statuses = [];
|
$statuses = [];
|
||||||
|
|
|
||||||
|
|
@ -90,11 +90,6 @@ class PublicTimeline extends BaseApi
|
||||||
$condition = DBA::mergeConditions($condition, ['gravity' => Item::GRAVITY_PARENT]);
|
$condition = DBA::mergeConditions($condition, ['gravity' => Item::GRAVITY_PARENT]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($uid)) {
|
|
||||||
$condition = DBA::mergeConditions($condition,
|
|
||||||
["NOT `parent-author-id` IN (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND (`blocked` OR `ignored`) AND `cid` = `parent-author-id`)", $uid]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$items = Post::selectPostsForUser($uid, ['uri-id'], $condition, $params);
|
$items = Post::selectPostsForUser($uid, ['uri-id'], $condition, $params);
|
||||||
|
|
||||||
$display_quotes = self::appSupportsQuotes();
|
$display_quotes = self::appSupportsQuotes();
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,13 @@ class Tag extends BaseApi
|
||||||
$params['order'] = ['uri-id'];
|
$params['order'] = ['uri-id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($uid)) {
|
||||||
|
$condition = DBA::mergeConditions(
|
||||||
|
$condition,
|
||||||
|
["NOT `parent-author-id` IN (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND (`blocked` OR `ignored`) AND `cid` = `parent-author-id`)", $uid]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$items = DBA::select('tag-search-view', ['uri-id'], $condition, $params);
|
$items = DBA::select('tag-search-view', ['uri-id'], $condition, $params);
|
||||||
|
|
||||||
$display_quotes = self::appSupportsQuotes();
|
$display_quotes = self::appSupportsQuotes();
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ class Links extends BaseApi
|
||||||
{
|
{
|
||||||
$request = $this->getRequest([
|
$request = $this->getRequest([
|
||||||
'limit' => 10, // Maximum number of results to return. Defaults to 10.
|
'limit' => 10, // Maximum number of results to return. Defaults to 10.
|
||||||
|
'offset' => 0, // Offset in set, Defaults to 0.
|
||||||
], $request);
|
], $request);
|
||||||
|
|
||||||
$condition = ["EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-thread-view`.`uri-id` AND `type` = ? AND NOT `name` IS NULL AND NOT `description` IS NULL) AND NOT `private` AND `commented` > ? AND `created` > ?",
|
$condition = ["EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-thread-view`.`uri-id` AND `type` = ? AND NOT `name` IS NULL AND NOT `description` IS NULL) AND NOT `private` AND `commented` > ? AND `created` > ?",
|
||||||
|
|
@ -48,13 +49,17 @@ class Links extends BaseApi
|
||||||
$condition = DBA::mergeConditions($condition, ['network' => Protocol::FEDERATED]);
|
$condition = DBA::mergeConditions($condition, ['network' => Protocol::FEDERATED]);
|
||||||
|
|
||||||
$trending = [];
|
$trending = [];
|
||||||
$statuses = Post::selectPostThread(['uri-id', 'total-comments', 'total-actors'], $condition, ['limit' => $request['limit'], 'order' => ['total-actors' => true]]);
|
$statuses = Post::selectPostThread(['uri-id', 'total-comments', 'total-actors'], $condition, ['limit' => [$request['offset'], $request['limit']], 'offset' => $request['offset'], 'order' => ['total-actors' => true]]);
|
||||||
while ($status = Post::fetch($statuses)) {
|
while ($status = Post::fetch($statuses)) {
|
||||||
$history = [['day' => (string)time(), 'uses' => (string)$status['total-comments'], 'accounts' => (string)$status['total-actors']]];
|
$history = [['day' => (string)time(), 'uses' => (string)$status['total-comments'], 'accounts' => (string)$status['total-actors']]];
|
||||||
$trending[] = DI::mstdnCard()->createFromUriId($status['uri-id'], $history)->toArray();
|
$trending[] = DI::mstdnCard()->createFromUriId($status['uri-id'], $history)->toArray();
|
||||||
}
|
}
|
||||||
DBA::close($statuses);
|
DBA::close($statuses);
|
||||||
|
|
||||||
|
if (!empty($trending)) {
|
||||||
|
self::setLinkHeaderByOffsetLimit($request['offset'], $request['limit']);
|
||||||
|
}
|
||||||
|
|
||||||
System::jsonExit($trending);
|
System::jsonExit($trending);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ class Statuses extends BaseApi
|
||||||
|
|
||||||
$request = $this->getRequest([
|
$request = $this->getRequest([
|
||||||
'limit' => 10, // Maximum number of results to return. Defaults to 10.
|
'limit' => 10, // Maximum number of results to return. Defaults to 10.
|
||||||
|
'offset' => 0, // Offset in set, Defaults to 0.
|
||||||
], $request);
|
], $request);
|
||||||
|
|
||||||
$condition = ["NOT `private` AND `commented` > ? AND `created` > ?", DateTimeFormat::utc('now -1 day'), DateTimeFormat::utc('now -1 week')];
|
$condition = ["NOT `private` AND `commented` > ? AND `created` > ?", DateTimeFormat::utc('now -1 day'), DateTimeFormat::utc('now -1 week')];
|
||||||
|
|
@ -52,7 +53,7 @@ class Statuses extends BaseApi
|
||||||
$display_quotes = self::appSupportsQuotes();
|
$display_quotes = self::appSupportsQuotes();
|
||||||
|
|
||||||
$trending = [];
|
$trending = [];
|
||||||
$statuses = Post::selectPostThread(['uri-id'], $condition, ['limit' => $request['limit'], 'order' => ['total-actors' => true]]);
|
$statuses = Post::selectPostThread(['uri-id'], $condition, ['limit' => [$request['offset'], $request['limit']], 'order' => ['total-actors' => true]]);
|
||||||
while ($status = Post::fetch($statuses)) {
|
while ($status = Post::fetch($statuses)) {
|
||||||
try {
|
try {
|
||||||
$trending[] = DI::mstdnStatus()->createFromUriId($status['uri-id'], $uid, $display_quotes);
|
$trending[] = DI::mstdnStatus()->createFromUriId($status['uri-id'], $uid, $display_quotes);
|
||||||
|
|
@ -62,6 +63,10 @@ class Statuses extends BaseApi
|
||||||
}
|
}
|
||||||
DBA::close($statuses);
|
DBA::close($statuses);
|
||||||
|
|
||||||
|
if (!empty($trending)) {
|
||||||
|
self::setLinkHeaderByOffsetLimit($request['offset'], $request['limit']);
|
||||||
|
}
|
||||||
|
|
||||||
System::jsonExit($trending);
|
System::jsonExit($trending);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,18 @@ class Tags extends BaseApi
|
||||||
protected function rawContent(array $request = [])
|
protected function rawContent(array $request = [])
|
||||||
{
|
{
|
||||||
$request = $this->getRequest([
|
$request = $this->getRequest([
|
||||||
'limit' => 20, // Maximum number of results to return. Defaults to 10.
|
'limit' => 20, // Maximum number of results to return. Defaults to 20.
|
||||||
|
'offset' => 0, // Offset in set. Defaults to 0.
|
||||||
|
'friendica_local' => false, // Whether to return local tag trends instead of global, defaults to false
|
||||||
], $request);
|
], $request);
|
||||||
|
|
||||||
$trending = [];
|
$trending = [];
|
||||||
$tags = Tag::getGlobalTrendingHashtags(24, 20);
|
if ($request['friendica_local']) {
|
||||||
|
$tags = Tag::getLocalTrendingHashtags(24, $request['limit'], $request['offset']);
|
||||||
|
} else {
|
||||||
|
$tags = Tag::getGlobalTrendingHashtags(24, $request['limit'], $request['offset']);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
$tag['name'] = $tag['term'];
|
$tag['name'] = $tag['term'];
|
||||||
$history = [['day' => (string)time(), 'uses' => (string)$tag['score'], 'accounts' => (string)$tag['authors']]];
|
$history = [['day' => (string)time(), 'uses' => (string)$tag['score'], 'accounts' => (string)$tag['authors']]];
|
||||||
|
|
@ -49,6 +56,10 @@ class Tags extends BaseApi
|
||||||
$trending[] = $hashtag->toArray();
|
$trending[] = $hashtag->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
System::jsonExit(array_slice($trending, 0, $request['limit']));
|
if (!empty($trending)) {
|
||||||
|
self::setLinkHeaderByOffsetLimit($request['offset'], $request['limit']);
|
||||||
|
}
|
||||||
|
|
||||||
|
System::jsonExit($trending);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ abstract class ContactEndpoint extends BaseApi
|
||||||
if (!$screen_name) {
|
if (!$screen_name) {
|
||||||
$contact = Contact::getById($contact_id, ['nick', 'url']);
|
$contact = Contact::getById($contact_id, ['nick', 'url']);
|
||||||
// We don't have the followers of remote accounts so we check for locality
|
// We don't have the followers of remote accounts so we check for locality
|
||||||
if (empty($contact) || !Strings::startsWith($contact['url'], DI::baseUrl()->get())) {
|
if (empty($contact) || !Strings::startsWith($contact['url'], DI::baseUrl())) {
|
||||||
throw new HTTPException\NotFoundException(DI::l10n()->t('Contact not found'));
|
throw new HTTPException\NotFoundException(DI::l10n()->t('Contact not found'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,34 @@ class BaseApi extends BaseModule
|
||||||
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
|
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the "link" header with "next" and "prev" links for an offset/limit type call
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected static function getOffsetAndLimitLinkHeader(int $offset, int $limit): string
|
||||||
|
{
|
||||||
|
$request = self::$request;
|
||||||
|
|
||||||
|
unset($request['offset']);
|
||||||
|
$request['limit'] = $limit;
|
||||||
|
|
||||||
|
$prev_request = $next_request = $request;
|
||||||
|
|
||||||
|
$prev_request['offset'] = $offset - $limit;
|
||||||
|
$next_request['offset'] = $offset + $limit;
|
||||||
|
|
||||||
|
$command = DI::baseUrl() . '/' . DI::args()->getCommand();
|
||||||
|
|
||||||
|
$prev = $command . '?' . http_build_query($prev_request);
|
||||||
|
$next = $command . '?' . http_build_query($next_request);
|
||||||
|
|
||||||
|
if ($prev_request['offset'] >= 0) {
|
||||||
|
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
|
||||||
|
} else {
|
||||||
|
return 'Link: <' . $next . '>; rel="next"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the "link" header with "next" and "prev" links
|
* Set the "link" header with "next" and "prev" links
|
||||||
* @return void
|
* @return void
|
||||||
|
|
@ -180,6 +208,18 @@ class BaseApi extends BaseModule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the "link" header with "next" and "prev" links
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected static function setLinkHeaderByOffsetLimit(int $offset, int $limit)
|
||||||
|
{
|
||||||
|
$header = self::getOffsetAndLimitLinkHeader($offset, $limit);
|
||||||
|
if (!empty($header)) {
|
||||||
|
header($header);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the app is known to support quoted posts
|
* Check if the app is known to support quoted posts
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class Download extends \Friendica\BaseModule
|
||||||
|
|
||||||
header('Content-Type: text/csv');
|
header('Content-Type: text/csv');
|
||||||
header('Content-Transfer-Encoding: Binary');
|
header('Content-Transfer-Encoding: Binary');
|
||||||
header('Content-disposition: attachment; filename="' . $this->baseUrl->getHostname() . '_domain_blocklist_' . substr($hash, 0, 6) . '.csv"');
|
header('Content-disposition: attachment; filename="' . $this->baseUrl->getHost() . '_domain_blocklist_' . substr($hash, 0, 6) . '.csv"');
|
||||||
header("Etag: $etag");
|
header("Etag: $etag");
|
||||||
|
|
||||||
$this->blocklist->exportToFile('php://output');
|
$this->blocklist->exportToFile('php://output');
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class Bookmarklet extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
$referer = Strings::normaliseLink($_SERVER['HTTP_REFERER'] ?? '');
|
$referer = Strings::normaliseLink($_SERVER['HTTP_REFERER'] ?? '');
|
||||||
$page = Strings::normaliseLink(DI::baseUrl()->get() . "/bookmarklet");
|
$page = Strings::normaliseLink(DI::baseUrl() . "/bookmarklet");
|
||||||
|
|
||||||
if (!strstr($referer, $page)) {
|
if (!strstr($referer, $page)) {
|
||||||
if (empty($_REQUEST["url"])) {
|
if (empty($_REQUEST["url"])) {
|
||||||
|
|
|
||||||
|
|
@ -220,7 +220,6 @@ class Contact extends BaseModule
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('contacts-head.tpl');
|
$tpl = Renderer::getMarkupTemplate('contacts-head.tpl');
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$o = '';
|
$o = '';
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,6 @@ class Profile extends BaseModule
|
||||||
$_SESSION['return_path'] = $this->args->getQueryString();
|
$_SESSION['return_path'] = $this->args->getQueryString();
|
||||||
|
|
||||||
$this->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_head.tpl'), [
|
$this->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_head.tpl'), [
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
switch ($localRelationship->rel) {
|
switch ($localRelationship->rel) {
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ class Redir extends \Friendica\BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->session->getRemoteUserId()) {
|
if ($this->session->getRemoteUserId()) {
|
||||||
$host = substr($this->baseUrl->getUrlPath() . ($this->baseUrl->getUrlPath() ? '/' . $this->baseUrl->getUrlPath() : ''), strpos($this->baseUrl->getUrlPath(), '://') + 3);
|
$host = substr($this->baseUrl->getPath() . ($this->baseUrl->getPath() ? '/' . $this->baseUrl->getPath() : ''), strpos($this->baseUrl->getPath(), '://') + 3);
|
||||||
$remotehost = substr($contact['addr'], strpos($contact['addr'], '@') + 1);
|
$remotehost = substr($contact['addr'], strpos($contact['addr'], '@') + 1);
|
||||||
|
|
||||||
// On a local instance we have to check if the local user has already authenticated
|
// On a local instance we have to check if the local user has already authenticated
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ class Localtime extends BaseModule
|
||||||
$output .= '<p>' . DI::l10n()->t('Converted localtime: %s', self::$mod_localtime) . '</p>';
|
$output .= '<p>' . DI::l10n()->t('Converted localtime: %s', self::$mod_localtime) . '</p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$output .= '<form action ="' . DI::baseUrl()->get() . '/localtime?time=' . $time . '" method="post" >';
|
$output .= '<form action ="localtime?time=' . $time . '" method="post">';
|
||||||
$output .= '<p>' . DI::l10n()->t('Please select your timezone:') . '</p>';
|
$output .= '<p>' . DI::l10n()->t('Please select your timezone:') . '</p>';
|
||||||
$output .= Temporal::getTimezoneSelect(($_REQUEST['timezone'] ?? '') ?: Installer::DEFAULT_TZ);
|
$output .= Temporal::getTimezoneSelect(($_REQUEST['timezone'] ?? '') ?: Installer::DEFAULT_TZ);
|
||||||
$output .= '<input type="submit" name="submit" value="' . DI::l10n()->t('Submit') . '" /></form>';
|
$output .= '<input type="submit" name="submit" value="' . DI::l10n()->t('Submit') . '" /></form>';
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ class Fetch extends BaseModule
|
||||||
}
|
}
|
||||||
$host = $parts["scheme"] . "://" . $parts["host"];
|
$host = $parts["scheme"] . "://" . $parts["host"];
|
||||||
|
|
||||||
if (Strings::normaliseLink($host) != Strings::normaliseLink(DI::baseUrl()->get())) {
|
if (Strings::normaliseLink($host) != Strings::normaliseLink(DI::baseUrl())) {
|
||||||
$location = $host . "/fetch/" . DI::args()->getArgv()[1] . "/" . urlencode($guid);
|
$location = $host . "/fetch/" . DI::args()->getArgv()[1] . "/" . urlencode($guid);
|
||||||
System::externalRedirect($location, 301);
|
System::externalRedirect($location, 301);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ class Friendica extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
$tos = ($config->get('system', 'tosdisplay')) ?
|
$tos = ($config->get('system', 'tosdisplay')) ?
|
||||||
DI::l10n()->t('Read about the <a href="%1$s/tos">Terms of Service</a> of this node.', DI::baseUrl()->get()) :
|
DI::l10n()->t('Read about the <a href="%1$s/tos">Terms of Service</a> of this node.', DI::baseUrl()) :
|
||||||
'';
|
'';
|
||||||
|
|
||||||
$blockList = $config->get('system', 'blocklist');
|
$blockList = $config->get('system', 'blocklist');
|
||||||
|
|
@ -99,7 +99,7 @@ class Friendica extends BaseModule
|
||||||
return Renderer::replaceMacros($tpl, [
|
return Renderer::replaceMacros($tpl, [
|
||||||
'about' => DI::l10n()->t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
|
'about' => DI::l10n()->t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
|
||||||
'<strong>' . App::VERSION . '</strong>',
|
'<strong>' . App::VERSION . '</strong>',
|
||||||
DI::baseUrl()->get(),
|
DI::baseUrl(),
|
||||||
'<strong>' . $config->get('system', 'build') . '/' . DB_UPDATE_VERSION . '</strong>',
|
'<strong>' . $config->get('system', 'build') . '/' . DB_UPDATE_VERSION . '</strong>',
|
||||||
'<strong>' . $keyValue->get('post_update_version') . '/' . PostUpdate::VERSION . '</strong>'),
|
'<strong>' . $keyValue->get('post_update_version') . '/' . PostUpdate::VERSION . '</strong>'),
|
||||||
'friendica' => DI::l10n()->t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.'),
|
'friendica' => DI::l10n()->t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.'),
|
||||||
|
|
@ -151,7 +151,7 @@ class Friendica extends BaseModule
|
||||||
if (!empty($administrator)) {
|
if (!empty($administrator)) {
|
||||||
$admin = [
|
$admin = [
|
||||||
'name' => $administrator['username'],
|
'name' => $administrator['username'],
|
||||||
'profile' => DI::baseUrl()->get() . '/profile/' . $administrator['nickname'],
|
'profile' => DI::baseUrl() . '/profile/' . $administrator['nickname'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -172,7 +172,7 @@ class Friendica extends BaseModule
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'version' => App::VERSION,
|
'version' => App::VERSION,
|
||||||
'url' => DI::baseUrl()->get(),
|
'url' => DI::baseUrl(),
|
||||||
'addons' => $visible_addons,
|
'addons' => $visible_addons,
|
||||||
'locked_features' => $locked_features,
|
'locked_features' => $locked_features,
|
||||||
'explicit_content' => intval($config->get('system', 'explicit_content', 0)),
|
'explicit_content' => intval($config->get('system', 'explicit_content', 0)),
|
||||||
|
|
@ -182,7 +182,7 @@ class Friendica extends BaseModule
|
||||||
'site_name' => $config->get('config', 'sitename'),
|
'site_name' => $config->get('config', 'sitename'),
|
||||||
'platform' => strtolower(App::PLATFORM),
|
'platform' => strtolower(App::PLATFORM),
|
||||||
'info' => $config->get('config', 'info'),
|
'info' => $config->get('config', 'info'),
|
||||||
'no_scrape_url' => DI::baseUrl()->get() . '/noscrape',
|
'no_scrape_url' => DI::baseUrl() . '/noscrape',
|
||||||
];
|
];
|
||||||
|
|
||||||
System::jsonExit($data);
|
System::jsonExit($data);
|
||||||
|
|
|
||||||
|
|
@ -66,15 +66,15 @@ class HCard extends BaseModule
|
||||||
|
|
||||||
$baseUrl = DI::baseUrl();
|
$baseUrl = DI::baseUrl();
|
||||||
|
|
||||||
$uri = urlencode('acct:' . $profile['nickname'] . '@' . $baseUrl->getHostname() . ($baseUrl->getUrlPath() ? '/' . $baseUrl->getUrlPath() : ''));
|
$uri = urlencode('acct:' . $profile['nickname'] . '@' . $baseUrl->getHost() . ($baseUrl->getPath() ? '/' . $baseUrl->getPath() : ''));
|
||||||
|
|
||||||
$page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
|
$page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
|
||||||
$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $baseUrl->get() . '/dfrn_poll/' . $nickname . '" />' . "\r\n";
|
$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $baseUrl . '/dfrn_poll/' . $nickname . '" />' . "\r\n";
|
||||||
$page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $baseUrl->get() . '/xrd/?uri=' . $uri . '" />' . "\r\n";
|
$page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $baseUrl . '/xrd/?uri=' . $uri . '" />' . "\r\n";
|
||||||
header('Link: <' . $baseUrl->get() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
|
header('Link: <' . $baseUrl . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
|
||||||
|
|
||||||
foreach (['request', 'confirm', 'notify', 'poll'] as $dfrn) {
|
foreach (['request', 'confirm', 'notify', 'poll'] as $dfrn) {
|
||||||
$page['htmlhead'] .= "<link rel=\"dfrn-{$dfrn}\" href=\"" . $baseUrl->get() . "/dfrn_{$dfrn}/{$nickname}\" />\r\n";
|
$page['htmlhead'] .= "<link rel=\"dfrn-{$dfrn}\" href=\"" . $baseUrl . "/dfrn_{$dfrn}/{$nickname}\" />\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$block = (DI::config()->get('system', 'block_public') && !DI::userSession()->isAuthenticated());
|
$block = (DI::config()->get('system', 'block_public') && !DI::userSession()->isAuthenticated());
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ class Help extends BaseModule
|
||||||
|
|
||||||
$idNum[$level] ++;
|
$idNum[$level] ++;
|
||||||
|
|
||||||
$href = DI::baseUrl()->get() . "/help/{$filename}#{$anchor}";
|
$href = "help/{$filename}#{$anchor}";
|
||||||
$toc .= "<li><a href=\"{$href}\">" . strip_tags($line) . "</a></li>";
|
$toc .= "<li><a href=\"{$href}\">" . strip_tags($line) . "</a></li>";
|
||||||
$id = implode("_", array_slice($idNum, 1, $level));
|
$id = implode("_", array_slice($idNum, 1, $level));
|
||||||
$line = "<a name=\"{$id}\"></a>" . $line;
|
$line = "<a name=\"{$id}\"></a>" . $line;
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ class Home extends BaseModule
|
||||||
$customHome = $homeFilePath;
|
$customHome = $homeFilePath;
|
||||||
|
|
||||||
if (file_exists($cssFilePath)) {
|
if (file_exists($cssFilePath)) {
|
||||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/home.css' . '" media="all" />';
|
DI::page()->registerStylesheet('home.css', 'all');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ use Friendica\Util\BasePath;
|
||||||
use Friendica\Util\Profiler;
|
use Friendica\Util\Profiler;
|
||||||
use Friendica\Util\Temporal;
|
use Friendica\Util\Temporal;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
use GuzzleHttp\Psr7\Uri;
|
||||||
|
|
||||||
class Install extends BaseModule
|
class Install extends BaseModule
|
||||||
{
|
{
|
||||||
|
|
@ -73,7 +74,7 @@ class Install extends BaseModule
|
||||||
/** @var App\Mode */
|
/** @var App\Mode */
|
||||||
protected $mode;
|
protected $mode;
|
||||||
|
|
||||||
public function __construct(App $app, App\Mode $mode, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, Core\Installer $installer, array $server, array $parameters = [])
|
public function __construct(App $app, BasePath $basePath, App\Mode $mode, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, Core\Installer $installer, array $server, array $parameters = [])
|
||||||
{
|
{
|
||||||
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
|
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
|
||||||
|
|
||||||
|
|
@ -94,12 +95,11 @@ class Install extends BaseModule
|
||||||
|
|
||||||
// get basic installation information and save them to the config cache
|
// get basic installation information and save them to the config cache
|
||||||
$configCache = $this->app->getConfigCache();
|
$configCache = $this->app->getConfigCache();
|
||||||
$basePath = new BasePath($this->app->getBasePath());
|
|
||||||
$this->installer->setUpCache($configCache, $basePath->getPath());
|
$this->installer->setUpCache($configCache, $basePath->getPath());
|
||||||
|
|
||||||
// We overwrite current theme css, because during install we may not have a working mod_rewrite
|
// We overwrite current theme css, because during install we may not have a working mod_rewrite
|
||||||
// so we may not have a css at all. Here we set a static css file for the install procedure pages
|
// so we may not have a css at all. Here we set a static css file for the install procedure pages
|
||||||
Renderer::$theme['stylesheet'] = $this->baseUrl->get() . '/view/install/style.css';
|
Renderer::$theme['stylesheet'] = $this->baseUrl . '/view/install/style.css';
|
||||||
|
|
||||||
$this->currentWizardStep = ($_POST['pass'] ?? '') ?: self::SYSTEM_CHECK;
|
$this->currentWizardStep = ($_POST['pass'] ?? '') ?: self::SYSTEM_CHECK;
|
||||||
}
|
}
|
||||||
|
|
@ -117,19 +117,15 @@ class Install extends BaseModule
|
||||||
case self::DATABASE_CONFIG:
|
case self::DATABASE_CONFIG:
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
||||||
|
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'hostname');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'ssl_policy');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'urlpath');
|
$this->checkSetting($configCache, $_POST, 'system', 'url');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case self::SITE_SETTINGS:
|
case self::SITE_SETTINGS:
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
||||||
|
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'hostname');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'ssl_policy');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'urlpath');
|
$this->checkSetting($configCache, $_POST, 'system', 'url');
|
||||||
|
|
||||||
$this->checkSetting($configCache, $_POST, 'database', 'hostname', Core\Installer::DEFAULT_HOST);
|
$this->checkSetting($configCache, $_POST, 'database', 'hostname', Core\Installer::DEFAULT_HOST);
|
||||||
$this->checkSetting($configCache, $_POST, 'database', 'username', '');
|
$this->checkSetting($configCache, $_POST, 'database', 'username', '');
|
||||||
|
|
@ -146,10 +142,8 @@ class Install extends BaseModule
|
||||||
case self::FINISHED:
|
case self::FINISHED:
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
$this->checkSetting($configCache, $_POST, 'config', 'php_path');
|
||||||
|
|
||||||
$this->checkSetting($configCache, $_POST, 'config', 'hostname');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'ssl_policy');
|
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
$this->checkSetting($configCache, $_POST, 'system', 'basepath');
|
||||||
$this->checkSetting($configCache, $_POST, 'system', 'urlpath');
|
$this->checkSetting($configCache, $_POST, 'system', 'url');
|
||||||
|
|
||||||
$this->checkSetting($configCache, $_POST, 'database', 'hostname', Core\Installer::DEFAULT_HOST);
|
$this->checkSetting($configCache, $_POST, 'database', 'hostname', Core\Installer::DEFAULT_HOST);
|
||||||
$this->checkSetting($configCache, $_POST, 'database', 'username', '');
|
$this->checkSetting($configCache, $_POST, 'database', 'username', '');
|
||||||
|
|
@ -198,9 +192,9 @@ class Install extends BaseModule
|
||||||
case self::SYSTEM_CHECK:
|
case self::SYSTEM_CHECK:
|
||||||
$php_path = $configCache->get('config', 'php_path');
|
$php_path = $configCache->get('config', 'php_path');
|
||||||
|
|
||||||
$status = $this->installer->checkEnvironment($this->baseUrl->get(), $php_path);
|
$status = $this->installer->checkEnvironment($this->baseUrl, $php_path);
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('install_checks.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/01_checks.tpl');
|
||||||
$output .= Renderer::replaceMacros($tpl, [
|
$output .= Renderer::replaceMacros($tpl, [
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$pass' => $this->t('System check'),
|
'$pass' => $this->t('System check'),
|
||||||
|
|
@ -218,43 +212,31 @@ class Install extends BaseModule
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case self::BASE_CONFIG:
|
case self::BASE_CONFIG:
|
||||||
$ssl_choices = [
|
$baseUrl = $configCache->get('system', 'url') ?
|
||||||
App\BaseURL::SSL_POLICY_NONE => $this->t("No SSL policy, links will track page SSL state"),
|
new Uri($configCache->get('system', 'url')) :
|
||||||
App\BaseURL::SSL_POLICY_FULL => $this->t("Force all links to use SSL"),
|
$this->baseUrl;
|
||||||
App\BaseURL::SSL_POLICY_SELFSIGN => $this->t("Self-signed certificate, use SSL for local links only \x28discouraged\x29")
|
|
||||||
];
|
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('install_base.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/02_base_config.tpl');
|
||||||
$output .= Renderer::replaceMacros($tpl, [
|
$output .= Renderer::replaceMacros($tpl, [
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$pass' => $this->t('Base settings'),
|
'$pass' => $this->t('Base settings'),
|
||||||
'$ssl_policy' => ['system-ssl_policy',
|
|
||||||
$this->t("SSL link policy"),
|
|
||||||
$configCache->get('system', 'ssl_policy'),
|
|
||||||
$this->t("Determines whether generated links should be forced to use SSL"),
|
|
||||||
$ssl_choices],
|
|
||||||
'$hostname' => ['config-hostname',
|
|
||||||
$this->t('Host name'),
|
|
||||||
$configCache->get('config', 'hostname'),
|
|
||||||
$this->t('Overwrite this field in case the determinated hostname isn\'t right, otherweise leave it as is.'),
|
|
||||||
$this->t('Required')],
|
|
||||||
'$basepath' => ['system-basepath',
|
'$basepath' => ['system-basepath',
|
||||||
$this->t("Base path to installation"),
|
$this->t("Base path to installation"),
|
||||||
$configCache->get('system', 'basepath'),
|
$configCache->get('system', 'basepath'),
|
||||||
$this->t("If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."),
|
$this->t("If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."),
|
||||||
$this->t('Required')],
|
$this->t('Required')],
|
||||||
'$urlpath' => ['system-urlpath',
|
'$system_url' => ['system-url',
|
||||||
$this->t('Sub path of the URL'),
|
$this->t('The Friendica system URL'),
|
||||||
$configCache->get('system', 'urlpath'),
|
(string)$baseUrl,
|
||||||
$this->t('Overwrite this field in case the sub path determination isn\'t right, otherwise leave it as is. Leaving this field blank means the installation is at the base URL without sub path.'),
|
$this->t("Overwrite this field in case the system URL determination isn't right, otherwise leave it as is."),
|
||||||
''],
|
$this->t('Required')],
|
||||||
'$php_path' => $configCache->get('config', 'php_path'),
|
'$php_path' => $configCache->get('config', 'php_path'),
|
||||||
'$submit' => $this->t('Submit'),
|
'$submit' => $this->t('Submit'),
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case self::DATABASE_CONFIG:
|
case self::DATABASE_CONFIG:
|
||||||
$tpl = Renderer::getMarkupTemplate('install_db.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/03_database_config.tpl');
|
||||||
$output .= Renderer::replaceMacros($tpl, [
|
$output .= Renderer::replaceMacros($tpl, [
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$pass' => $this->t('Database connection'),
|
'$pass' => $this->t('Database connection'),
|
||||||
|
|
@ -264,10 +246,8 @@ class Install extends BaseModule
|
||||||
'$required' => $this->t('Required'),
|
'$required' => $this->t('Required'),
|
||||||
'$requirement_not_satisfied' => $this->t('Requirement not satisfied'),
|
'$requirement_not_satisfied' => $this->t('Requirement not satisfied'),
|
||||||
'$checks' => $this->installer->getChecks(),
|
'$checks' => $this->installer->getChecks(),
|
||||||
'$hostname' => $configCache->get('config', 'hostname'),
|
|
||||||
'$ssl_policy' => $configCache->get('system', 'ssl_policy'),
|
|
||||||
'$basepath' => $configCache->get('system', 'basepath'),
|
'$basepath' => $configCache->get('system', 'basepath'),
|
||||||
'$urlpath' => $configCache->get('system', 'urlpath'),
|
'$system_url' => $configCache->get('system', 'url'),
|
||||||
'$dbhost' => ['database-hostname',
|
'$dbhost' => ['database-hostname',
|
||||||
$this->t('Database Server Name'),
|
$this->t('Database Server Name'),
|
||||||
$configCache->get('database', 'hostname'),
|
$configCache->get('database', 'hostname'),
|
||||||
|
|
@ -299,16 +279,14 @@ class Install extends BaseModule
|
||||||
/* Installed langs */
|
/* Installed langs */
|
||||||
$lang_choices = $this->l10n->getAvailableLanguages();
|
$lang_choices = $this->l10n->getAvailableLanguages();
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('install_settings.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/04_site_settings.tpl');
|
||||||
$output .= Renderer::replaceMacros($tpl, [
|
$output .= Renderer::replaceMacros($tpl, [
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$required' => $this->t('Required'),
|
'$required' => $this->t('Required'),
|
||||||
'$checks' => $this->installer->getChecks(),
|
'$checks' => $this->installer->getChecks(),
|
||||||
'$pass' => $this->t('Site settings'),
|
'$pass' => $this->t('Site settings'),
|
||||||
'$hostname' => $configCache->get('config', 'hostname'),
|
|
||||||
'$ssl_policy' => $configCache->get('system', 'ssl_policy'),
|
|
||||||
'$basepath' => $configCache->get('system', 'basepath'),
|
'$basepath' => $configCache->get('system', 'basepath'),
|
||||||
'$urlpath' => $configCache->get('system', 'urlpath'),
|
'$system_url' => $configCache->get('system', 'url'),
|
||||||
'$dbhost' => $configCache->get('database', 'hostname'),
|
'$dbhost' => $configCache->get('database', 'hostname'),
|
||||||
'$dbuser' => $configCache->get('database', 'username'),
|
'$dbuser' => $configCache->get('database', 'username'),
|
||||||
'$dbpass' => $configCache->get('database', 'password'),
|
'$dbpass' => $configCache->get('database', 'password'),
|
||||||
|
|
@ -341,7 +319,7 @@ class Install extends BaseModule
|
||||||
$db_return_text .= $txt;
|
$db_return_text .= $txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('install_finished.tpl');
|
$tpl = Renderer::getMarkupTemplate('install/05_finished.tpl');
|
||||||
$output .= Renderer::replaceMacros($tpl, [
|
$output .= Renderer::replaceMacros($tpl, [
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$required' => $this->t('Required'),
|
'$required' => $this->t('Required'),
|
||||||
|
|
@ -365,7 +343,7 @@ class Install extends BaseModule
|
||||||
*/
|
*/
|
||||||
private function whatNext(): string
|
private function whatNext(): string
|
||||||
{
|
{
|
||||||
$baseurl = $this->baseUrl->get();
|
$baseurl = $this->baseUrl;
|
||||||
return
|
return
|
||||||
$this->t('<h1>What next</h1>')
|
$this->t('<h1>What next</h1>')
|
||||||
. "<p>" . $this->t('IMPORTANT: You will need to [manually] setup a scheduled task for the worker.')
|
. "<p>" . $this->t('IMPORTANT: You will need to [manually] setup a scheduled task for the worker.')
|
||||||
|
|
|
||||||
|
|
@ -149,14 +149,14 @@ class Invite extends BaseModule
|
||||||
if ($config->get('config', 'register_policy') === Register::CLOSED) {
|
if ($config->get('config', 'register_policy') === Register::CLOSED) {
|
||||||
$linkTxt = DI::l10n()->t('Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks.', $dirLocation . '/servers');
|
$linkTxt = DI::l10n()->t('Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks.', $dirLocation . '/servers');
|
||||||
} else {
|
} else {
|
||||||
$linkTxt = DI::l10n()->t('To accept this invitation, please visit and register at %s or any other public Friendica website.', DI::baseUrl()->get())
|
$linkTxt = DI::l10n()->t('To accept this invitation, please visit and register at %s or any other public Friendica website.', DI::baseUrl())
|
||||||
. "\r\n" . "\r\n" . DI::l10n()->t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join.', $dirLocation . '/servers');
|
. "\r\n" . "\r\n" . DI::l10n()->t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join.', $dirLocation . '/servers');
|
||||||
}
|
}
|
||||||
} else { // there is no global directory URL defined
|
} else { // there is no global directory URL defined
|
||||||
if ($config->get('config', 'register_policy') === Register::CLOSED) {
|
if ($config->get('config', 'register_policy') === Register::CLOSED) {
|
||||||
return DI::l10n()->t('Our apologies. This system is not currently configured to connect with other public sites or invite members.');
|
return DI::l10n()->t('Our apologies. This system is not currently configured to connect with other public sites or invite members.');
|
||||||
} else {
|
} else {
|
||||||
$linkTxt = DI::l10n()->t('To accept this invitation, please visit and register at %s.', DI::baseUrl()->get()
|
$linkTxt = DI::l10n()->t('To accept this invitation, please visit and register at %s.', DI::baseUrl()
|
||||||
. "\r\n" . "\r\n" . DI::l10n()->t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks.'));
|
. "\r\n" . "\r\n" . DI::l10n()->t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -172,7 +172,7 @@ class Invite extends BaseModule
|
||||||
DI::l10n()->t('You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web.') . "\r\n" . "\r\n"
|
DI::l10n()->t('You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web.') . "\r\n" . "\r\n"
|
||||||
. $linkTxt
|
. $linkTxt
|
||||||
. "\r\n" . "\r\n" . (($inviteOnly) ? DI::l10n()->t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') . DI::l10n()->t('Once you have registered, please connect with me via my profile page at:')
|
. "\r\n" . "\r\n" . (($inviteOnly) ? DI::l10n()->t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') . DI::l10n()->t('Once you have registered, please connect with me via my profile page at:')
|
||||||
. "\r\n" . "\r\n" . DI::baseUrl()->get() . '/profile/' . $app->getLoggedInUserNickname()
|
. "\r\n" . "\r\n" . DI::baseUrl() . '/profile/' . $app->getLoggedInUserNickname()
|
||||||
. "\r\n" . "\r\n" . DI::l10n()->t('For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca') . "\r\n" . "\r\n",
|
. "\r\n" . "\r\n" . DI::l10n()->t('For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca') . "\r\n" . "\r\n",
|
||||||
],
|
],
|
||||||
'$submit' => DI::l10n()->t('Submit')
|
'$submit' => DI::l10n()->t('Submit')
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class Magic extends BaseModule
|
||||||
$contact = $this->dba->selectFirst('contact', ['id', 'nurl', 'url'], ['id' => $cid]);
|
$contact = $this->dba->selectFirst('contact', ['id', 'nurl', 'url'], ['id' => $cid]);
|
||||||
|
|
||||||
// Redirect if the contact is already authenticated on this site.
|
// Redirect if the contact is already authenticated on this site.
|
||||||
if ($this->app->getContactId() && strpos($contact['nurl'], Strings::normaliseLink($this->baseUrl->get())) !== false) {
|
if ($this->app->getContactId() && strpos($contact['nurl'], Strings::normaliseLink($this->baseUrl)) !== false) {
|
||||||
$this->logger->info('Contact is already authenticated');
|
$this->logger->info('Contact is already authenticated');
|
||||||
System::externalRedirect($dest);
|
System::externalRedirect($dest);
|
||||||
}
|
}
|
||||||
|
|
@ -113,7 +113,7 @@ class Magic extends BaseModule
|
||||||
$header = HTTPSignature::createSig(
|
$header = HTTPSignature::createSig(
|
||||||
$header,
|
$header,
|
||||||
$user['prvkey'],
|
$user['prvkey'],
|
||||||
'acct:' . $user['nickname'] . '@' . $this->baseUrl->getHostname() . ($this->baseUrl->getUrlPath() ? '/' . $this->baseUrl->getUrlPath() : '')
|
'acct:' . $user['nickname'] . '@' . $this->baseUrl->getHost() . ($this->baseUrl->getPath() ? '/' . $this->baseUrl->getPath() : '')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Try to get an authentication token from the other instance.
|
// Try to get an authentication token from the other instance.
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class Manifest extends BaseModule
|
||||||
|
|
||||||
$manifest = [
|
$manifest = [
|
||||||
'name' => $config->get('config', 'sitename', 'Friendica'),
|
'name' => $config->get('config', 'sitename', 'Friendica'),
|
||||||
'start_url' => DI::baseUrl()->get(),
|
'start_url' => DI::baseUrl(),
|
||||||
'display' => 'standalone',
|
'display' => 'standalone',
|
||||||
'description' => $config->get('config', 'info', DI::l10n()->t('A Decentralized Social Network')),
|
'description' => $config->get('config', 'info', DI::l10n()->t('A Decentralized Social Network')),
|
||||||
'short_name' => 'Friendica',
|
'short_name' => 'Friendica',
|
||||||
|
|
@ -74,12 +74,12 @@ class Manifest extends BaseModule
|
||||||
if($touch_icon){
|
if($touch_icon){
|
||||||
$manifest['icons'] = [
|
$manifest['icons'] = [
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/' . $touch_icon,
|
'src' => DI::baseUrl() . '/' . $touch_icon,
|
||||||
'sizes' => '192x192',
|
'sizes' => '192x192',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/' . $touch_icon,
|
'src' => DI::baseUrl() . '/' . $touch_icon,
|
||||||
'sizes' => '512x512',
|
'sizes' => '512x512',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
],
|
],
|
||||||
|
|
@ -87,37 +87,37 @@ class Manifest extends BaseModule
|
||||||
} else {
|
} else {
|
||||||
$manifest['icons'] = [
|
$manifest['icons'] = [
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica.svg',
|
'src' => DI::baseUrl() . '/images/friendica.svg',
|
||||||
'sizes' => 'any',
|
'sizes' => 'any',
|
||||||
'type' => 'image/svg+xml',
|
'type' => 'image/svg+xml',
|
||||||
'purpose' => 'any',
|
'purpose' => 'any',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica-192.png',
|
'src' => DI::baseUrl() . '/images/friendica-192.png',
|
||||||
'sizes' => '192x192',
|
'sizes' => '192x192',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
'purpose' => 'any',
|
'purpose' => 'any',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica-512.png',
|
'src' => DI::baseUrl() . '/images/friendica-512.png',
|
||||||
'sizes' => '512x512',
|
'sizes' => '512x512',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
'purpose' => 'any',
|
'purpose' => 'any',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica-maskable.svg',
|
'src' => DI::baseUrl() . '/images/friendica-maskable.svg',
|
||||||
'sizes' => 'any',
|
'sizes' => 'any',
|
||||||
'type' => 'image/svg+xml',
|
'type' => 'image/svg+xml',
|
||||||
'purpose' => 'maskable',
|
'purpose' => 'maskable',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica-maskable-192.png',
|
'src' => DI::baseUrl() . '/images/friendica-maskable-192.png',
|
||||||
'sizes' => '192x192',
|
'sizes' => '192x192',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
'purpose' => 'maskable',
|
'purpose' => 'maskable',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'src' => DI::baseUrl()->get() . '/images/friendica-maskable-512.png',
|
'src' => DI::baseUrl() . '/images/friendica-maskable-512.png',
|
||||||
'sizes' => '512x512',
|
'sizes' => '512x512',
|
||||||
'type' => 'image/png',
|
'type' => 'image/png',
|
||||||
'purpose' => 'maskable',
|
'purpose' => 'maskable',
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ class Contact extends BaseModeration
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_contactblock'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_contactblock'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
'$baseurl' => $this->baseUrl,
|
||||||
|
|
||||||
'$contacts' => $contacts,
|
'$contacts' => $contacts,
|
||||||
'$total_contacts' => $this->tt('%s total blocked contact', '%s total blocked contacts', $total),
|
'$total_contacts' => $this->tt('%s total blocked contact', '%s total blocked contacts', $total),
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ class Add extends BaseModeration
|
||||||
'$newreason' => ['reason', $this->t('Block reason'), $request['reason'] ?? '', $this->t('The reason why you blocked this server domain pattern. This reason will be shown publicly in the server information page.'), $this->t('Required'), '', ''],
|
'$newreason' => ['reason', $this->t('Block reason'), $request['reason'] ?? '', $this->t('The reason why you blocked this server domain pattern. This reason will be shown publicly in the server information page.'), $this->t('Required'), '', ''],
|
||||||
'$pattern' => $pattern,
|
'$pattern' => $pattern,
|
||||||
'$gservers' => $gservers,
|
'$gservers' => $gservers,
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
'$baseurl' => $this->baseUrl,
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_add')
|
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_add')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ class Import extends \Friendica\Module\BaseModeration
|
||||||
'$mode_append' => ['mode', $this->t('Append'), 'append', $this->t('Imports patterns from the file that weren\'t already existing in the current blocklist.'), 'checked="checked"'],
|
'$mode_append' => ['mode', $this->t('Append'), 'append', $this->t('Imports patterns from the file that weren\'t already existing in the current blocklist.'), 'checked="checked"'],
|
||||||
'$mode_replace' => ['mode', $this->t('Replace'), 'replace', $this->t('Replaces the current blocklist by the imported patterns.')],
|
'$mode_replace' => ['mode', $this->t('Replace'), 'replace', $this->t('Replaces the current blocklist by the imported patterns.')],
|
||||||
'$blocklist' => $this->blocklist,
|
'$blocklist' => $this->blocklist,
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
'$baseurl' => $this->baseUrl,
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_import')
|
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_import')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ class Index extends BaseModeration
|
||||||
'$listfile' => ['listfile', $this->t('Server domain pattern blocklist CSV file'), '', '', $this->t('Required'), '', 'file'],
|
'$listfile' => ['listfile', $this->t('Server domain pattern blocklist CSV file'), '', '', $this->t('Required'), '', 'file'],
|
||||||
'$newdomain' => ['pattern', $this->t('Server Domain Pattern'), '', $this->t('The domain pattern of the new server to add to the blocklist. Do not include the protocol.'), $this->t('Required'), '', ''],
|
'$newdomain' => ['pattern', $this->t('Server Domain Pattern'), '', $this->t('The domain pattern of the new server to add to the blocklist. Do not include the protocol.'), $this->t('Required'), '', ''],
|
||||||
'$entries' => $blocklistform,
|
'$entries' => $blocklistform,
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
'$baseurl' => $this->baseUrl,
|
||||||
|
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist'),
|
||||||
'$form_security_token_import' => self::getFormSecurityToken('moderation_blocklist_import'),
|
'$form_security_token_import' => self::getFormSecurityToken('moderation_blocklist_import'),
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ class Active extends BaseUsers
|
||||||
{
|
{
|
||||||
$this->checkModerationAccess();
|
$this->checkModerationAccess();
|
||||||
|
|
||||||
self::checkFormSecurityTokenRedirectOnError($this->baseUrl->get(true), 'moderation_users_active');
|
self::checkFormSecurityTokenRedirectOnError($this->baseUrl, 'moderation_users_active');
|
||||||
|
|
||||||
$users = $request['user'] ?? [];
|
$users = $request['user'] ?? [];
|
||||||
|
|
||||||
|
|
@ -150,7 +150,7 @@ class Active extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_users_active'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_users_active'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
'$baseurl' => $this->baseUrl,
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$users' => $users,
|
'$users' => $users,
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,6 @@ class Blocked extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_users_blocked'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_users_blocked'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$users' => $users,
|
'$users' => $users,
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,6 @@ class Create extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('admin_users_create'),
|
'$form_security_token' => self::getFormSecurityToken('admin_users_create'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$newusername' => ['new_user_name', $this->t('Name'), '', $this->t('Name of the new user.')],
|
'$newusername' => ['new_user_name', $this->t('Name'), '', $this->t('Name of the new user.')],
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,6 @@ class Deleted extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_users_deleted'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_users_deleted'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$users' => $users,
|
'$users' => $users,
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ class Index extends BaseUsers
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case 'delete':
|
case 'delete':
|
||||||
if ($this->session->getLocalUserId() != $uid) {
|
if ($this->session->getLocalUserId() != $uid) {
|
||||||
self::checkFormSecurityTokenRedirectOnError($this->baseUrl->get(true), 'moderation_users', 't');
|
self::checkFormSecurityTokenRedirectOnError($this->baseUrl, 'moderation_users', 't');
|
||||||
// delete user
|
// delete user
|
||||||
User::remove($uid);
|
User::remove($uid);
|
||||||
|
|
||||||
|
|
@ -168,7 +168,6 @@ class Index extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('moderation_users'),
|
'$form_security_token' => self::getFormSecurityToken('moderation_users'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$users' => $users,
|
'$users' => $users,
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,6 @@ class Pending extends BaseUsers
|
||||||
'$form_security_token' => self::getFormSecurityToken('admin_users_pending'),
|
'$form_security_token' => self::getFormSecurityToken('admin_users_pending'),
|
||||||
|
|
||||||
// values //
|
// values //
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$query_string' => $this->args->getQueryString(),
|
'$query_string' => $this->args->getQueryString(),
|
||||||
|
|
||||||
'$pending' => $pending,
|
'$pending' => $pending,
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,6 @@ class NodeInfo210 extends BaseModule
|
||||||
$nodeinfo = [
|
$nodeinfo = [
|
||||||
'version' => '1.0',
|
'version' => '1.0',
|
||||||
'server' => [
|
'server' => [
|
||||||
'baseUrl' => $this->baseUrl->get(),
|
|
||||||
'name' => $this->config->get('config', 'sitename'),
|
'name' => $this->config->get('config', 'sitename'),
|
||||||
'software' => 'friendica',
|
'software' => 'friendica',
|
||||||
'version' => App::VERSION . '-' . DB_UPDATE_VERSION,
|
'version' => App::VERSION . '-' . DB_UPDATE_VERSION,
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,7 @@ class Ping extends BaseModule
|
||||||
$registration['url'],
|
$registration['url'],
|
||||||
$this->l10n->t('{0} requested registration'),
|
$this->l10n->t('{0} requested registration'),
|
||||||
new \DateTime($registration['created'], new \DateTimeZone('UTC')),
|
new \DateTime($registration['created'], new \DateTimeZone('UTC')),
|
||||||
new Uri($this->baseUrl->get(true) . '/moderation/users/pending')
|
new Uri($this->baseUrl . '/moderation/users/pending')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -253,7 +253,7 @@ class Ping extends BaseModule
|
||||||
$registrations[0]['url'],
|
$registrations[0]['url'],
|
||||||
$this->l10n->t('{0} and %d others requested registration', count($registrations) - 1),
|
$this->l10n->t('{0} and %d others requested registration', count($registrations) - 1),
|
||||||
new \DateTime($registrations[0]['created'], new \DateTimeZone('UTC')),
|
new \DateTime($registrations[0]['created'], new \DateTimeZone('UTC')),
|
||||||
new Uri($this->baseUrl->get(true) . '/moderation/users/pending')
|
new Uri($this->baseUrl . '/moderation/users/pending')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ class OpenSearch extends BaseModule
|
||||||
*/
|
*/
|
||||||
protected function rawContent(array $request = [])
|
protected function rawContent(array $request = [])
|
||||||
{
|
{
|
||||||
$hostname = DI::baseUrl()->getHostname();
|
$hostname = DI::baseUrl()->getHost();
|
||||||
$baseUrl = DI::baseUrl()->get();
|
$baseUrl = DI::baseUrl();
|
||||||
|
|
||||||
/** @var DOMDocument $xml */
|
/** @var DOMDocument $xml */
|
||||||
XML::fromArray([
|
XML::fromArray([
|
||||||
|
|
|
||||||
|
|
@ -352,7 +352,7 @@ class Profile extends BaseProfile
|
||||||
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/" title="' . $this->t('%s\'s posts', $profile['name']) . '"/>' . "\n";
|
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/" title="' . $this->t('%s\'s posts', $profile['name']) . '"/>' . "\n";
|
||||||
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/comments" title="' . $this->t('%s\'s comments', $profile['name']) . '"/>' . "\n";
|
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/comments" title="' . $this->t('%s\'s comments', $profile['name']) . '"/>' . "\n";
|
||||||
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/activity" title="' . $this->t('%s\'s timeline', $profile['name']) . '"/>' . "\n";
|
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/activity" title="' . $this->t('%s\'s timeline', $profile['name']) . '"/>' . "\n";
|
||||||
$uri = urlencode('acct:' . $profile['nickname'] . '@' . $this->baseUrl->getHostname() . ($this->baseUrl->getUrlPath() ? '/' . $this->baseUrl->getUrlPath() : ''));
|
$uri = urlencode('acct:' . $profile['nickname'] . '@' . $this->baseUrl->getHost() . ($this->baseUrl->getPath() ? '/' . $this->baseUrl->getPath() : ''));
|
||||||
$htmlhead .= '<link rel="lrdd" type="application/xrd+xml" href="' . $this->baseUrl . '/xrd/?uri=' . $uri . '" />' . "\n";
|
$htmlhead .= '<link rel="lrdd" type="application/xrd+xml" href="' . $this->baseUrl . '/xrd/?uri=' . $uri . '" />' . "\n";
|
||||||
header('Link: <' . $this->baseUrl . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
|
header('Link: <' . $this->baseUrl . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,6 @@ class Schedule extends BaseProfile
|
||||||
$tpl = Renderer::getMarkupTemplate('profile/schedule.tpl');
|
$tpl = Renderer::getMarkupTemplate('profile/schedule.tpl');
|
||||||
$o .= Renderer::replaceMacros($tpl, [
|
$o .= Renderer::replaceMacros($tpl, [
|
||||||
'$form_security_token' => BaseModule::getFormSecurityToken("profile_schedule"),
|
'$form_security_token' => BaseModule::getFormSecurityToken("profile_schedule"),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$title' => DI::l10n()->t('Scheduled Posts'),
|
'$title' => DI::l10n()->t('Scheduled Posts'),
|
||||||
'$nickname' => $this->parameters['nickname'] ?? '',
|
'$nickname' => $this->parameters['nickname'] ?? '',
|
||||||
'$scheduled_at' => DI::l10n()->t('Scheduled'),
|
'$scheduled_at' => DI::l10n()->t('Scheduled'),
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,6 @@ class UnkMail extends \Friendica\BaseModule
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('profile/unkmail-header.tpl');
|
$tpl = Renderer::getMarkupTemplate('profile/unkmail-header.tpl');
|
||||||
$this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
$this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$nickname' => $user['nickname'],
|
'$nickname' => $user['nickname'],
|
||||||
'$linkurl' => $this->l10n->t('Please enter a link URL:')
|
'$linkurl' => $this->l10n->t('Please enter a link URL:')
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ class ReallySimpleDiscovery extends BaseModule
|
||||||
'@attributes' => [
|
'@attributes' => [
|
||||||
'name' => 'Twitter',
|
'name' => 'Twitter',
|
||||||
'preferred' => 'true',
|
'preferred' => 'true',
|
||||||
'apiLink' => DI::baseUrl()->get(),
|
'apiLink' => DI::baseUrl(),
|
||||||
'blogID' => '',
|
'blogID' => '',
|
||||||
],
|
],
|
||||||
'settings' => [
|
'settings' => [
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ class Register extends BaseModule
|
||||||
'$ask_password' => $ask_password,
|
'$ask_password' => $ask_password,
|
||||||
'$password1' => ['password1', DI::l10n()->t('New Password:'), '', DI::l10n()->t('Leave empty for an auto generated password.')],
|
'$password1' => ['password1', DI::l10n()->t('New Password:'), '', DI::l10n()->t('Leave empty for an auto generated password.')],
|
||||||
'$password2' => ['confirm', DI::l10n()->t('Confirm:'), '', ''],
|
'$password2' => ['confirm', DI::l10n()->t('Confirm:'), '', ''],
|
||||||
'$nickdesc' => DI::l10n()->t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be "<strong>nickname@%s</strong>".', DI::baseUrl()->getHostname()),
|
'$nickdesc' => DI::l10n()->t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be "<strong>nickname@%s</strong>".', DI::baseUrl()->getHost()),
|
||||||
'$nicklabel' => DI::l10n()->t('Choose a nickname: '),
|
'$nicklabel' => DI::l10n()->t('Choose a nickname: '),
|
||||||
'$photo' => $photo,
|
'$photo' => $photo,
|
||||||
'$publish' => $profile_publish,
|
'$publish' => $profile_publish,
|
||||||
|
|
@ -169,7 +169,7 @@ class Register extends BaseModule
|
||||||
'$username' => $username,
|
'$username' => $username,
|
||||||
'$email' => $email,
|
'$email' => $email,
|
||||||
'$nickname' => $nickname,
|
'$nickname' => $nickname,
|
||||||
'$sitename' => DI::baseUrl()->getHostname(),
|
'$sitename' => DI::baseUrl()->getHost(),
|
||||||
'$importh' => DI::l10n()->t('Import'),
|
'$importh' => DI::l10n()->t('Import'),
|
||||||
'$importt' => DI::l10n()->t('Import your profile to this friendica instance'),
|
'$importt' => DI::l10n()->t('Import your profile to this friendica instance'),
|
||||||
'$showtoslink' => DI::config()->get('system', 'tosdisplay'),
|
'$showtoslink' => DI::config()->get('system', 'tosdisplay'),
|
||||||
|
|
@ -298,7 +298,7 @@ class Register extends BaseModule
|
||||||
|
|
||||||
$user = $result['user'];
|
$user = $result['user'];
|
||||||
|
|
||||||
$base_url = DI::baseUrl()->get();
|
$base_url = DI::baseUrl();
|
||||||
|
|
||||||
if ($netpublish && intval(DI::config()->get('config', 'register_policy')) !== self::APPROVE) {
|
if ($netpublish && intval(DI::config()->get('config', 'register_policy')) !== self::APPROVE) {
|
||||||
$url = $base_url . '/profile/' . $user['nickname'];
|
$url = $base_url . '/profile/' . $user['nickname'];
|
||||||
|
|
@ -404,11 +404,11 @@ class Register extends BaseModule
|
||||||
'type' => Model\Notification\Type::SYSTEM,
|
'type' => Model\Notification\Type::SYSTEM,
|
||||||
'event' => $event,
|
'event' => $event,
|
||||||
'uid' => $admin['uid'],
|
'uid' => $admin['uid'],
|
||||||
'link' => DI::baseUrl()->get(true) . '/moderation/users/',
|
'link' => DI::baseUrl() . '/moderation/users/',
|
||||||
'source_name' => $user['username'],
|
'source_name' => $user['username'],
|
||||||
'source_mail' => $user['email'],
|
'source_mail' => $user['email'],
|
||||||
'source_nick' => $user['nickname'],
|
'source_nick' => $user['nickname'],
|
||||||
'source_link' => DI::baseUrl()->get(true) . '/moderation/users/',
|
'source_link' => DI::baseUrl() . '/moderation/users/',
|
||||||
'source_photo' => User::getAvatarUrl($user, Proxy::SIZE_THUMB),
|
'source_photo' => User::getAvatarUrl($user, Proxy::SIZE_THUMB),
|
||||||
'show_in_notification_page' => false
|
'show_in_notification_page' => false
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,6 @@ class Login extends BaseModule
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros(
|
DI::page()['htmlhead'] .= Renderer::replaceMacros(
|
||||||
Renderer::getMarkupTemplate('login_head.tpl'),
|
Renderer::getMarkupTemplate('login_head.tpl'),
|
||||||
[
|
[
|
||||||
'$baseurl' => DI::baseUrl()->get(true)
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -154,7 +153,7 @@ class Login extends BaseModule
|
||||||
$o = Renderer::replaceMacros(
|
$o = Renderer::replaceMacros(
|
||||||
$tpl,
|
$tpl,
|
||||||
[
|
[
|
||||||
'$dest_url' => DI::baseUrl()->get(true) . '/login',
|
'$dest_url' => DI::baseUrl() . '/login',
|
||||||
'$logout' => DI::l10n()->t('Logout'),
|
'$logout' => DI::l10n()->t('Logout'),
|
||||||
'$login' => DI::l10n()->t('Login'),
|
'$login' => DI::l10n()->t('Login'),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ class OpenID extends BaseModule
|
||||||
|
|
||||||
if (!empty($_GET['openid_mode']) && !empty($session->get('openid'))) {
|
if (!empty($_GET['openid_mode']) && !empty($session->get('openid'))) {
|
||||||
|
|
||||||
$openid = new LightOpenID(DI::baseUrl()->getHostname());
|
$openid = new LightOpenID(DI::baseUrl()->getHost());
|
||||||
|
|
||||||
$l10n = DI::l10n();
|
$l10n = DI::l10n();
|
||||||
|
|
||||||
|
|
@ -82,7 +82,7 @@ class OpenID extends BaseModule
|
||||||
$session->set('openid_identity', $authId);
|
$session->set('openid_identity', $authId);
|
||||||
|
|
||||||
// Detect the server URL
|
// Detect the server URL
|
||||||
$open_id_obj = new LightOpenID(DI::baseUrl()->getHostname());
|
$open_id_obj = new LightOpenID(DI::baseUrl()->getHost());
|
||||||
$open_id_obj->identity = $authId;
|
$open_id_obj->identity = $authId;
|
||||||
$session->set('openid_server', $open_id_obj->discover($open_id_obj->identity));
|
$session->set('openid_server', $open_id_obj->discover($open_id_obj->identity));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,6 @@ class PasswordTooLong extends \Friendica\BaseModule
|
||||||
'submit' => $this->l10n->t('Update Password'),
|
'submit' => $this->l10n->t('Update Password'),
|
||||||
],
|
],
|
||||||
|
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$form_security_token' => self::getFormSecurityToken('security/password_too_long'),
|
'$form_security_token' => self::getFormSecurityToken('security/password_too_long'),
|
||||||
'$return_url' => $request['return_url'] ?? '',
|
'$return_url' => $request['return_url'] ?? '',
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -555,10 +555,9 @@ class Account extends BaseSettings
|
||||||
$tpl = Renderer::getMarkupTemplate('settings/account.tpl');
|
$tpl = Renderer::getMarkupTemplate('settings/account.tpl');
|
||||||
$o = Renderer::replaceMacros($tpl, [
|
$o = Renderer::replaceMacros($tpl, [
|
||||||
'$ptitle' => DI::l10n()->t('Account Settings'),
|
'$ptitle' => DI::l10n()->t('Account Settings'),
|
||||||
'$desc' => DI::l10n()->t("Your Identity Address is <strong>'%s'</strong> or '%s'.", $nickname . '@' . DI::baseUrl()->getHostname() . DI::baseUrl()->getUrlPath(), DI::baseUrl() . '/profile/' . $nickname),
|
'$desc' => DI::l10n()->t("Your Identity Address is <strong>'%s'</strong> or '%s'.", $nickname . '@' . DI::baseUrl()->getHost() . DI::baseUrl()->getPath(), DI::baseUrl() . '/profile/' . $nickname),
|
||||||
|
|
||||||
'$submit' => DI::l10n()->t('Save Settings'),
|
'$submit' => DI::l10n()->t('Save Settings'),
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
'$uid' => DI::userSession()->getLocalUserId(),
|
'$uid' => DI::userSession()->getLocalUserId(),
|
||||||
'$form_security_token' => self::getFormSecurityToken('settings'),
|
'$form_security_token' => self::getFormSecurityToken('settings'),
|
||||||
'$open' => $this->parameters['open'] ?? 'password',
|
'$open' => $this->parameters['open'] ?? 'password',
|
||||||
|
|
|
||||||
|
|
@ -252,7 +252,6 @@ class Display extends BaseSettings
|
||||||
'$calendar_title' => $this->t('Calendar'),
|
'$calendar_title' => $this->t('Calendar'),
|
||||||
|
|
||||||
'$form_security_token' => self::getFormSecurityToken('settings_display'),
|
'$form_security_token' => self::getFormSecurityToken('settings_display'),
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$uid' => $uid,
|
'$uid' => $uid,
|
||||||
|
|
||||||
'$theme' => ['theme', $this->t('Display Theme:'), $theme_selected, '', $themes, true],
|
'$theme' => ['theme', $this->t('Display Theme:'), $theme_selected, '', $themes, true],
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ class OAuth extends BaseSettings
|
||||||
$tpl = Renderer::getMarkupTemplate('settings/oauth.tpl');
|
$tpl = Renderer::getMarkupTemplate('settings/oauth.tpl');
|
||||||
return Renderer::replaceMacros($tpl, [
|
return Renderer::replaceMacros($tpl, [
|
||||||
'$form_security_token' => BaseSettings::getFormSecurityToken('settings_oauth'),
|
'$form_security_token' => BaseSettings::getFormSecurityToken('settings_oauth'),
|
||||||
'$baseurl' => $this->baseUrl->get(true),
|
|
||||||
'$title' => $this->t('Connected Apps'),
|
'$title' => $this->t('Connected Apps'),
|
||||||
'$name' => $this->t('Name'),
|
'$name' => $this->t('Name'),
|
||||||
'$website' => $this->t('Home Page'),
|
'$website' => $this->t('Home Page'),
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,6 @@ class Index extends BaseSettings
|
||||||
];
|
];
|
||||||
|
|
||||||
DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('settings/profile/index_head.tpl'), [
|
DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('settings/profile/index_head.tpl'), [
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$personal_account = ($profile['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
|
$personal_account = ($profile['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
|
||||||
|
|
@ -241,7 +240,7 @@ class Index extends BaseSettings
|
||||||
|
|
||||||
'$lbl_profile_photo' => DI::l10n()->t('Upload Profile Photo'),
|
'$lbl_profile_photo' => DI::l10n()->t('Upload Profile Photo'),
|
||||||
|
|
||||||
'$baseurl' => DI::baseUrl()->get(true),
|
'$baseurl' => DI::baseUrl(),
|
||||||
'$nickname' => $profile['nickname'],
|
'$nickname' => $profile['nickname'],
|
||||||
'$name' => ['name', DI::l10n()->t('Display name:'), $profile['name']],
|
'$name' => ['name', DI::l10n()->t('Display name:'), $profile['name']],
|
||||||
'$about' => ['about', DI::l10n()->t('Description:'), $profile['about']],
|
'$about' => ['about', DI::l10n()->t('Description:'), $profile['about']],
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,14 @@ class HostMeta extends BaseModule
|
||||||
$config->set('system', 'site_pubkey', $res['pubkey']);
|
$config->set('system', 'site_pubkey', $res['pubkey']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$domain = DI::baseUrl()->get();
|
$domain = DI::baseUrl();
|
||||||
|
|
||||||
XML::fromArray([
|
XML::fromArray([
|
||||||
'XRD' => [
|
'XRD' => [
|
||||||
'@attributes' => [
|
'@attributes' => [
|
||||||
'xmlns' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0',
|
'xmlns' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0',
|
||||||
],
|
],
|
||||||
'hm:Host' => DI::baseUrl()->getHostname(),
|
'hm:Host' => DI::baseUrl()->getHost(),
|
||||||
'1:link' => [
|
'1:link' => [
|
||||||
'@attributes' => [
|
'@attributes' => [
|
||||||
'rel' => 'lrdd',
|
'rel' => 'lrdd',
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ class NodeInfo extends BaseModule
|
||||||
$nodeinfo = [
|
$nodeinfo = [
|
||||||
'links' => [
|
'links' => [
|
||||||
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/1.0',
|
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/1.0',
|
||||||
'href' => DI::baseUrl()->get() . '/nodeinfo/1.0'],
|
'href' => DI::baseUrl() . '/nodeinfo/1.0'],
|
||||||
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0',
|
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0',
|
||||||
'href' => DI::baseUrl()->get() . '/nodeinfo/2.0'],
|
'href' => DI::baseUrl() . '/nodeinfo/2.0'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,17 +64,17 @@ class XSocialRelay extends BaseModule
|
||||||
'tags' => $tagList,
|
'tags' => $tagList,
|
||||||
'protocols' => [
|
'protocols' => [
|
||||||
'activitypub' => [
|
'activitypub' => [
|
||||||
'actor' => DI::baseUrl()->get() . '/friendica',
|
'actor' => DI::baseUrl() . '/friendica',
|
||||||
'receive' => DI::baseUrl()->get() . '/inbox'
|
'receive' => DI::baseUrl() . '/inbox'
|
||||||
],
|
],
|
||||||
'dfrn' => [
|
'dfrn' => [
|
||||||
'receive' => DI::baseUrl()->get() . '/dfrn_notify'
|
'receive' => DI::baseUrl() . '/dfrn_notify'
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
if (DI::config()->get("system", "diaspora_enabled")) {
|
if (DI::config()->get("system", "diaspora_enabled")) {
|
||||||
$relay['protocols']['diaspora'] = ['receive' => DI::baseUrl()->get() . '/receive/public'];
|
$relay['protocols']['diaspora'] = ['receive' => DI::baseUrl() . '/receive/public'];
|
||||||
}
|
}
|
||||||
|
|
||||||
System::jsonExit($relay);
|
System::jsonExit($relay);
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class Xrd extends BaseModule
|
||||||
|
|
||||||
private function printSystemJSON(array $owner)
|
private function printSystemJSON(array $owner)
|
||||||
{
|
{
|
||||||
$baseURL = $this->baseUrl->get();
|
$baseURL = $this->baseUrl;
|
||||||
$json = [
|
$json = [
|
||||||
'subject' => 'acct:' . $owner['addr'],
|
'subject' => 'acct:' . $owner['addr'],
|
||||||
'aliases' => [$owner['url']],
|
'aliases' => [$owner['url']],
|
||||||
|
|
@ -151,7 +151,7 @@ class Xrd extends BaseModule
|
||||||
|
|
||||||
private function printJSON(string $alias, array $owner, array $avatar)
|
private function printJSON(string $alias, array $owner, array $avatar)
|
||||||
{
|
{
|
||||||
$baseURL = $this->baseUrl->get();
|
$baseURL = $this->baseUrl;
|
||||||
|
|
||||||
$json = [
|
$json = [
|
||||||
'subject' => 'acct:' . $owner['addr'],
|
'subject' => 'acct:' . $owner['addr'],
|
||||||
|
|
@ -228,7 +228,7 @@ class Xrd extends BaseModule
|
||||||
|
|
||||||
private function printXML(string $alias, array $owner, array $avatar)
|
private function printXML(string $alias, array $owner, array $avatar)
|
||||||
{
|
{
|
||||||
$baseURL = $this->baseUrl->get();
|
$baseURL = $this->baseUrl;
|
||||||
|
|
||||||
$xmlString = XML::fromArray([
|
$xmlString = XML::fromArray([
|
||||||
'XRD' => [
|
'XRD' => [
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ class FormattedNavNotification extends BaseFactory
|
||||||
self::$contacts[$notification->actorId]['url'],
|
self::$contacts[$notification->actorId]['url'],
|
||||||
$message['notification'],
|
$message['notification'],
|
||||||
$notification->created,
|
$notification->created,
|
||||||
new Uri($this->baseUrl->get() . '/notification/' . $notification->id),
|
new Uri($this->baseUrl . '/notification/' . $notification->id),
|
||||||
$notification->seen,
|
$notification->seen,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -168,7 +168,7 @@ class FormattedNavNotification extends BaseFactory
|
||||||
self::$contacts[$intro->cid]['url'],
|
self::$contacts[$intro->cid]['url'],
|
||||||
$msg,
|
$msg,
|
||||||
$intro->datetime,
|
$intro->datetime,
|
||||||
new Uri($this->baseUrl->get() . '/notifications/intros/' . $intro->id)
|
new Uri($this->baseUrl . '/notifications/intros/' . $intro->id)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class FormattedNotify extends BaseFactory
|
||||||
case Activity::LIKE:
|
case Activity::LIKE:
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'like',
|
'like',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s liked %s's post", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
$this->l10n->t("%s liked %s's post", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
||||||
|
|
@ -102,7 +102,7 @@ class FormattedNotify extends BaseFactory
|
||||||
case Activity::DISLIKE:
|
case Activity::DISLIKE:
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'dislike',
|
'dislike',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s disliked %s's post", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
$this->l10n->t("%s disliked %s's post", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
||||||
|
|
@ -114,7 +114,7 @@ class FormattedNotify extends BaseFactory
|
||||||
case Activity::ATTEND:
|
case Activity::ATTEND:
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'attend',
|
'attend',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s is attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
$this->l10n->t("%s is attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
||||||
|
|
@ -126,7 +126,7 @@ class FormattedNotify extends BaseFactory
|
||||||
case Activity::ATTENDNO:
|
case Activity::ATTENDNO:
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'attendno',
|
'attendno',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s is not attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
$this->l10n->t("%s is not attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
||||||
|
|
@ -138,7 +138,7 @@ class FormattedNotify extends BaseFactory
|
||||||
case Activity::ATTENDMAYBE:
|
case Activity::ATTENDMAYBE:
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'attendmaybe',
|
'attendmaybe',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s may attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
$this->l10n->t("%s may attending %s's event", $formattedItem['author-name'], $formattedItem['parent-author-name']),
|
||||||
|
|
@ -168,7 +168,7 @@ class FormattedNotify extends BaseFactory
|
||||||
|
|
||||||
return new ValueObject\FormattedNotify(
|
return new ValueObject\FormattedNotify(
|
||||||
'friend',
|
'friend',
|
||||||
$this->baseUrl->get(true) . '/display/' . $formattedItem['parent-guid'],
|
$this->baseUrl . '/display/' . $formattedItem['parent-guid'],
|
||||||
$formattedItem['author-avatar'],
|
$formattedItem['author-avatar'],
|
||||||
$formattedItem['author-link'],
|
$formattedItem['author-link'],
|
||||||
$this->l10n->t("%s is now friends with %s", $formattedItem['author-name'], $formattedItem['fname']),
|
$this->l10n->t("%s is now friends with %s", $formattedItem['author-name'], $formattedItem['fname']),
|
||||||
|
|
@ -219,7 +219,7 @@ class FormattedNotify extends BaseFactory
|
||||||
foreach ($Notifies as $Notify) {
|
foreach ($Notifies as $Notify) {
|
||||||
$formattedNotifications[] = new ValueObject\FormattedNotify(
|
$formattedNotifications[] = new ValueObject\FormattedNotify(
|
||||||
'notification',
|
'notification',
|
||||||
$this->baseUrl->get(true) . '/notify/' . $Notify->id,
|
$this->baseUrl . '/notify/' . $Notify->id,
|
||||||
Contact::getAvatarUrlForUrl($Notify->url, $Notify->uid, Proxy::SIZE_MICRO),
|
Contact::getAvatarUrlForUrl($Notify->url, $Notify->uid, Proxy::SIZE_MICRO),
|
||||||
$Notify->url,
|
$Notify->url,
|
||||||
strip_tags(BBCode::toPlaintext($Notify->msg)),
|
strip_tags(BBCode::toPlaintext($Notify->msg)),
|
||||||
|
|
@ -369,7 +369,7 @@ class FormattedNotify extends BaseFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['label'] = (($item['gravity'] == Item::GRAVITY_PARENT) ? 'post' : 'comment');
|
$item['label'] = (($item['gravity'] == Item::GRAVITY_PARENT) ? 'post' : 'comment');
|
||||||
$item['link'] = $this->baseUrl->get(true) . '/display/' . $item['parent-guid'];
|
$item['link'] = $this->baseUrl . '/display/' . $item['parent-guid'];
|
||||||
$item['image'] = $item['author-avatar'];
|
$item['image'] = $item['author-avatar'];
|
||||||
$item['url'] = $item['author-link'];
|
$item['url'] = $item['author-link'];
|
||||||
$item['when'] = DateTimeFormat::local($item['created'], 'r');
|
$item['when'] = DateTimeFormat::local($item['created'], 'r');
|
||||||
|
|
|
||||||
|
|
@ -125,8 +125,8 @@ class Introduction extends BaseFactory
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$return_addr = bin2hex($this->nick . '@' .
|
$return_addr = bin2hex($this->nick . '@' .
|
||||||
$this->baseUrl->getHostname() .
|
$this->baseUrl->getHost() .
|
||||||
(($this->baseUrl->getUrlPath()) ? '/' . $this->baseUrl->getUrlPath() : ''));
|
(($this->baseUrl->getPath()) ? '/' . $this->baseUrl->getPath() : ''));
|
||||||
|
|
||||||
$formattedIntroductions[] = new ValueObject\Introduction([
|
$formattedIntroductions[] = new ValueObject\Introduction([
|
||||||
'label' => 'friend_suggestion',
|
'label' => 'friend_suggestion',
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ class Notify extends BaseRepository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$siteurl = $this->baseUrl->get(true);
|
$siteurl = $this->baseUrl;
|
||||||
$sitename = $this->config->get('config', 'sitename');
|
$sitename = $this->config->get('config', 'sitename');
|
||||||
|
|
||||||
// with $params['show_in_notification_page'] == false, the notification isn't inserted into
|
// with $params['show_in_notification_page'] == false, the notification isn't inserted into
|
||||||
|
|
@ -539,7 +539,7 @@ class Notify extends BaseRepository
|
||||||
|
|
||||||
$nickname = $user['nickname'];
|
$nickname = $user['nickname'];
|
||||||
|
|
||||||
$hostname = $this->baseUrl->getHostname();
|
$hostname = $this->baseUrl->getHost();
|
||||||
if (strpos($hostname, ':')) {
|
if (strpos($hostname, ':')) {
|
||||||
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
||||||
}
|
}
|
||||||
|
|
@ -590,7 +590,7 @@ class Notify extends BaseRepository
|
||||||
$Notify->updateMsgFromPreamble($epreamble);
|
$Notify->updateMsgFromPreamble($epreamble);
|
||||||
$Notify = $this->save($Notify);
|
$Notify = $this->save($Notify);
|
||||||
|
|
||||||
$itemlink = $this->baseUrl->get() . '/notify/' . $Notify->id;
|
$itemlink = $this->baseUrl . '/notify/' . $Notify->id;
|
||||||
$notify_id = $Notify->id;
|
$notify_id = $Notify->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -747,7 +747,7 @@ class Notify extends BaseRepository
|
||||||
|
|
||||||
$params['item'] = $item;
|
$params['item'] = $item;
|
||||||
$params['parent'] = $item['parent'];
|
$params['parent'] = $item['parent'];
|
||||||
$params['link'] = $this->baseUrl->get() . '/display/' . urlencode($item['guid']);
|
$params['link'] = $this->baseUrl . '/display/' . urlencode($item['guid']);
|
||||||
|
|
||||||
$subjectPrefix = $l10n->t('[Friendica:Notify]');
|
$subjectPrefix = $l10n->t('[Friendica:Notify]');
|
||||||
|
|
||||||
|
|
@ -807,7 +807,7 @@ class Notify extends BaseRepository
|
||||||
$epreamble = $msg['rich'];
|
$epreamble = $msg['rich'];
|
||||||
|
|
||||||
$sitename = $this->config->get('config', 'sitename');
|
$sitename = $this->config->get('config', 'sitename');
|
||||||
$siteurl = $this->baseUrl->get(true);
|
$siteurl = $this->baseUrl;
|
||||||
|
|
||||||
$sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
|
$sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
|
||||||
$tsitelink = sprintf($sitelink, $siteurl);
|
$tsitelink = sprintf($sitelink, $siteurl);
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class HttpClient extends BaseFactory
|
||||||
App::CODENAME . "' " .
|
App::CODENAME . "' " .
|
||||||
App::VERSION . '-' .
|
App::VERSION . '-' .
|
||||||
DB_UPDATE_VERSION . '; ' .
|
DB_UPDATE_VERSION . '; ' .
|
||||||
$this->baseUrl->get();
|
$this->baseUrl;
|
||||||
|
|
||||||
$guzzle = new GuzzleHttp\Client([
|
$guzzle = new GuzzleHttp\Client([
|
||||||
RequestOptions::ALLOW_REDIRECTS => [
|
RequestOptions::ALLOW_REDIRECTS => [
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ class Probe
|
||||||
*/
|
*/
|
||||||
private static function ownHost(string $host): bool
|
private static function ownHost(string $host): bool
|
||||||
{
|
{
|
||||||
$own_host = DI::baseUrl()->getHostname();
|
$own_host = DI::baseUrl()->getHost();
|
||||||
|
|
||||||
$parts = parse_url($host);
|
$parts = parse_url($host);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class Account extends BaseDataTransferObject
|
||||||
$this->id = (string)$account['pid'];
|
$this->id = (string)$account['pid'];
|
||||||
$this->username = $account['nick'];
|
$this->username = $account['nick'];
|
||||||
$this->acct =
|
$this->acct =
|
||||||
strpos($account['url'], $baseUrl->get() . '/') === 0 ?
|
strpos($account['url'], $baseUrl . '/') === 0 ?
|
||||||
$account['nick'] :
|
$account['nick'] :
|
||||||
$account['addr'];
|
$account['addr'];
|
||||||
$this->display_name = $account['name'];
|
$this->display_name = $account['name'];
|
||||||
|
|
|
||||||
|
|
@ -84,14 +84,14 @@ class Instance extends BaseDataTransferObject
|
||||||
{
|
{
|
||||||
$register_policy = intval($config->get('config', 'register_policy'));
|
$register_policy = intval($config->get('config', 'register_policy'));
|
||||||
|
|
||||||
$this->uri = $baseUrl->get();
|
$this->uri = $baseUrl;
|
||||||
$this->title = $config->get('config', 'sitename');
|
$this->title = $config->get('config', 'sitename');
|
||||||
$this->short_description = $this->description = $config->get('config', 'info');
|
$this->short_description = $this->description = $config->get('config', 'info');
|
||||||
$this->email = implode(',', User::getAdminEmailList());
|
$this->email = implode(',', User::getAdminEmailList());
|
||||||
$this->version = '2.8.0 (compatible; Friendica ' . App::VERSION . ')';
|
$this->version = '2.8.0 (compatible; Friendica ' . App::VERSION . ')';
|
||||||
$this->urls = null; // Not supported
|
$this->urls = null; // Not supported
|
||||||
$this->stats = new Stats($config, $database);
|
$this->stats = new Stats($config, $database);
|
||||||
$this->thumbnail = $baseUrl->get() . 'images/friendica-banner.jpg';
|
$this->thumbnail = $baseUrl . 'images/friendica-banner.jpg';
|
||||||
$this->languages = [$config->get('system', 'language')];
|
$this->languages = [$config->get('system', 'language')];
|
||||||
$this->max_toot_chars = (int)$config->get('config', 'api_import_size', $config->get('config', 'max_import_size'));
|
$this->max_toot_chars = (int)$config->get('config', 'api_import_size', $config->get('config', 'max_import_size'));
|
||||||
$this->registrations = ($register_policy != Register::CLOSED);
|
$this->registrations = ($register_policy != Register::CLOSED);
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class Mention extends BaseDataTransferObject
|
||||||
|
|
||||||
if (!empty($contact)) {
|
if (!empty($contact)) {
|
||||||
$this->acct =
|
$this->acct =
|
||||||
strpos($contact['url'], $baseUrl->get() . '/') === 0 ?
|
strpos($contact['url'], $baseUrl . '/') === 0 ?
|
||||||
$contact['nick'] :
|
$contact['nick'] :
|
||||||
$contact['addr'];
|
$contact['addr'];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ use Friendica\BaseDataTransferObject;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
use Friendica\Object\Api\Mastodon\Status\Counts;
|
use Friendica\Object\Api\Mastodon\Status\Counts;
|
||||||
|
use Friendica\Object\Api\Mastodon\Status\FriendicaExtension;
|
||||||
use Friendica\Object\Api\Mastodon\Status\UserAttributes;
|
use Friendica\Object\Api\Mastodon\Status\UserAttributes;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
|
|
||||||
|
|
@ -95,6 +96,8 @@ class Status extends BaseDataTransferObject
|
||||||
protected $card = null;
|
protected $card = null;
|
||||||
/** @var Poll|null */
|
/** @var Poll|null */
|
||||||
protected $poll = null;
|
protected $poll = null;
|
||||||
|
/** @var FriendicaExtension */
|
||||||
|
protected $friendica;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a status record from an item record.
|
* Creates a status record from an item record.
|
||||||
|
|
@ -148,6 +151,7 @@ class Status extends BaseDataTransferObject
|
||||||
$this->emojis = [];
|
$this->emojis = [];
|
||||||
$this->card = $card->toArray() ?: null;
|
$this->card = $card->toArray() ?: null;
|
||||||
$this->poll = $poll;
|
$this->poll = $poll;
|
||||||
|
$this->friendica = new FriendicaExtension($item['title']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
48
src/Object/Api/Mastodon/Status/FriendicaExtension.php
Normal file
48
src/Object/Api/Mastodon/Status/FriendicaExtension.php
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2010-2023, 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Friendica\Object\Api\Mastodon\Status;
|
||||||
|
|
||||||
|
use Friendica\BaseDataTransferObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class FriendicaExtension
|
||||||
|
*
|
||||||
|
* Additional fields on Mastodon Statuses for storing Friendica specific data
|
||||||
|
*
|
||||||
|
* @see https://docs.joinmastodon.org/entities/status
|
||||||
|
*/
|
||||||
|
class FriendicaExtension extends BaseDataTransferObject
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
protected $title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a status count object
|
||||||
|
*
|
||||||
|
* @param string $title
|
||||||
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function __construct(string $title)
|
||||||
|
{
|
||||||
|
$this->title = $title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -169,7 +169,21 @@ final class Activity
|
||||||
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-read
|
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-read
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const READ = ActivityNamespace::ACTIVITY2 . 'read';
|
const READ = ActivityNamespace::ACTIVITY2 . 'Read';
|
||||||
|
/**
|
||||||
|
* Indicates that the actor has listened to the object.
|
||||||
|
*
|
||||||
|
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-listen
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const LISTEN = ActivityNamespace::ACTIVITY2 . 'Listen';
|
||||||
|
/**
|
||||||
|
* Indicates that the actor has viewed the object.
|
||||||
|
*
|
||||||
|
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-view
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const VIEW = ActivityNamespace::ACTIVITY2 . 'View';
|
||||||
|
|
||||||
const O_UNFOLLOW = ActivityNamespace::OSTATUS . '/unfollow';
|
const O_UNFOLLOW = ActivityNamespace::OSTATUS . '/unfollow';
|
||||||
const O_UNFAVOURITE = ActivityNamespace::OSTATUS . '/unfavorite';
|
const O_UNFAVOURITE = ActivityNamespace::OSTATUS . '/unfavorite';
|
||||||
|
|
@ -181,13 +195,6 @@ final class Activity
|
||||||
*/
|
*/
|
||||||
const EMOJIREACT = ActivityNamespace::LITEPUB . '/emojireact';
|
const EMOJIREACT = ActivityNamespace::LITEPUB . '/emojireact';
|
||||||
|
|
||||||
/**
|
|
||||||
* View notification from Peertube
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
const VIEW = ActivityNamespace::PEERTUBE . '/view';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* likes (etc.) can apply to other things besides posts. Check if they are post children,
|
* likes (etc.) can apply to other things besides posts. Check if they are post children,
|
||||||
* in which case we handle them specially
|
* in which case we handle them specially
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@ class Receiver
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type == 'as:View') {
|
if (!DI::config()->get('system', 'process_view') && ($type == 'as:View')) {
|
||||||
Logger::info('View activities are ignored.', ['signer' => $signer, 'http_signer' => $http_signer]);
|
Logger::info('View activities are ignored.', ['signer' => $signer, 'http_signer' => $http_signer]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -330,7 +330,7 @@ class Transmitter
|
||||||
return [
|
return [
|
||||||
'type' => 'Service',
|
'type' => 'Service',
|
||||||
'name' => App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION,
|
'name' => App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION,
|
||||||
'url' => DI::baseUrl()->get()
|
'url' => DI::baseUrl()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ class Delivery
|
||||||
// if $parent['wall'] == 1 we will already have the parent message in our array
|
// if $parent['wall'] == 1 we will already have the parent message in our array
|
||||||
// and we will relay the whole lot.
|
// and we will relay the whole lot.
|
||||||
|
|
||||||
$localhost = DI::baseUrl()->getHostname();
|
$localhost = DI::baseUrl()->getHost();
|
||||||
if (strpos($localhost, ':')) {
|
if (strpos($localhost, ':')) {
|
||||||
$localhost = substr($localhost, 0, strpos($localhost, ':'));
|
$localhost = substr($localhost, 0, strpos($localhost, ':'));
|
||||||
}
|
}
|
||||||
|
|
@ -556,7 +556,7 @@ class Delivery
|
||||||
$headers = 'From: ' . Email::encodeHeader($local_user['username'],'UTF-8') . ' <' . $local_user['email'] . '>' . "\n";
|
$headers = 'From: ' . Email::encodeHeader($local_user['username'],'UTF-8') . ' <' . $local_user['email'] . '>' . "\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$sender = DI::config()->get('config', 'sender_email', 'noreply@' . DI::baseUrl()->getHostname());
|
$sender = DI::config()->get('config', 'sender_email', 'noreply@' . DI::baseUrl()->getHost());
|
||||||
$headers = 'From: '. Email::encodeHeader($local_user['username'], 'UTF-8') . ' <' . $sender . '>' . "\n";
|
$headers = 'From: '. Email::encodeHeader($local_user['username'], 'UTF-8') . ' <' . $sender . '>' . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -629,7 +629,7 @@ class Feed
|
||||||
// Distributed items should have a well-formatted URI.
|
// Distributed items should have a well-formatted URI.
|
||||||
// Additionally, we have to avoid conflicts with identical URI between imported feeds and these items.
|
// Additionally, we have to avoid conflicts with identical URI between imported feeds and these items.
|
||||||
if ($notify) {
|
if ($notify) {
|
||||||
$item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
|
$item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHost());
|
||||||
$item['uri'] = Item::newURI($item['guid']);
|
$item['uri'] = Item::newURI($item['guid']);
|
||||||
unset($item['plink']);
|
unset($item['plink']);
|
||||||
unset($item['thr-parent']);
|
unset($item['thr-parent']);
|
||||||
|
|
|
||||||
|
|
@ -1395,7 +1395,7 @@ class OStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['uri'] = $item['parent-uri'] = $item['thr-parent']
|
$item['uri'] = $item['parent-uri'] = $item['thr-parent']
|
||||||
= 'tag:' . DI::baseUrl()->getHostname().
|
= 'tag:' . DI::baseUrl()->getHost() .
|
||||||
','.date('Y-m-d').':'.$action.':'.$owner['uid'].
|
','.date('Y-m-d').':'.$action.':'.$owner['uid'].
|
||||||
':person:'.$connect_id.':'.$item['created'];
|
':person:'.$connect_id.':'.$item['created'];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,11 +230,11 @@ class Authentication
|
||||||
|
|
||||||
// Otherwise it's probably an openid.
|
// Otherwise it's probably an openid.
|
||||||
try {
|
try {
|
||||||
$openid = new LightOpenID($this->baseUrl->getHostname());
|
$openid = new LightOpenID($this->baseUrl->getHost());
|
||||||
$openid->identity = $openid_url;
|
$openid->identity = $openid_url;
|
||||||
$this->session->set('openid', $openid_url);
|
$this->session->set('openid', $openid_url);
|
||||||
$this->session->set('remember', $remember);
|
$this->session->set('remember', $remember);
|
||||||
$openid->returnUrl = $this->baseUrl->get(true) . '/openid';
|
$openid->returnUrl = $this->baseUrl . '/openid';
|
||||||
$openid->optional = ['namePerson/friendly', 'contact/email', 'namePerson', 'namePerson/first', 'media/image/aspect11', 'media/image/default'];
|
$openid->optional = ['namePerson/friendly', 'contact/email', 'namePerson', 'namePerson/first', 'media/image/aspect11', 'media/image/default'];
|
||||||
System::externalRedirect($openid->authUrl());
|
System::externalRedirect($openid->authUrl());
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|
@ -329,8 +329,8 @@ class Authentication
|
||||||
'mobile-theme' => $this->pConfig->get($user_record['uid'], 'system', 'mobile_theme'),
|
'mobile-theme' => $this->pConfig->get($user_record['uid'], 'system', 'mobile_theme'),
|
||||||
'authenticated' => 1,
|
'authenticated' => 1,
|
||||||
'page_flags' => $user_record['page-flags'],
|
'page_flags' => $user_record['page-flags'],
|
||||||
'my_url' => $this->baseUrl->get() . '/profile/' . $user_record['nickname'],
|
'my_url' => $this->baseUrl . '/profile/' . $user_record['nickname'],
|
||||||
'my_address' => $user_record['nickname'] . '@' . substr($this->baseUrl->get(), strpos($this->baseUrl->get(), '://') + 3),
|
'my_address' => $user_record['nickname'] . '@' . substr($this->baseUrl, strpos($this->baseUrl, '://') + 3),
|
||||||
'addr' => $this->remoteAddress,
|
'addr' => $this->remoteAddress,
|
||||||
'nickname' => $user_record['nickname'],
|
'nickname' => $user_record['nickname'],
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ class ExAuth
|
||||||
$sUser = str_replace(['%20', '(a)'], [' ', '@'], $aCommand[1]);
|
$sUser = str_replace(['%20', '(a)'], [' ', '@'], $aCommand[1]);
|
||||||
|
|
||||||
// Does the hostname match? So we try directly
|
// Does the hostname match? So we try directly
|
||||||
if ($this->baseURL->getHostname() == $aCommand[2]) {
|
if ($this->baseURL->getHost() == $aCommand[2]) {
|
||||||
$this->writeLog(LOG_INFO, 'internal user check for ' . $sUser . '@' . $aCommand[2]);
|
$this->writeLog(LOG_INFO, 'internal user check for ' . $sUser . '@' . $aCommand[2]);
|
||||||
$found = $this->dba->exists('user', ['nickname' => $sUser]);
|
$found = $this->dba->exists('user', ['nickname' => $sUser]);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -282,7 +282,7 @@ class ExAuth
|
||||||
|
|
||||||
$Error = false;
|
$Error = false;
|
||||||
// Does the hostname match? So we try directly
|
// Does the hostname match? So we try directly
|
||||||
if ($this->baseURL->getHostname() == $aCommand[2]) {
|
if ($this->baseURL->getHost() == $aCommand[2]) {
|
||||||
try {
|
try {
|
||||||
$this->writeLog(LOG_INFO, 'internal auth for ' . $sUser . '@' . $aCommand[2]);
|
$this->writeLog(LOG_INFO, 'internal auth for ' . $sUser . '@' . $aCommand[2]);
|
||||||
User::getIdFromPasswordAuthentication($sUser, $aCommand[3], true);
|
User::getIdFromPasswordAuthentication($sUser, $aCommand[3], true);
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ abstract class MailBuilder
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
|
|
||||||
$hostname = $baseUrl->getHostname();
|
$hostname = $baseUrl->getHost();
|
||||||
if (strpos($hostname, ':')) {
|
if (strpos($hostname, ':')) {
|
||||||
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
||||||
}
|
}
|
||||||
|
|
@ -83,7 +83,7 @@ abstract class MailBuilder
|
||||||
'X-Friendica-Platform' => [App::PLATFORM],
|
'X-Friendica-Platform' => [App::PLATFORM],
|
||||||
'X-Friendica-Version' => [App::VERSION],
|
'X-Friendica-Version' => [App::VERSION],
|
||||||
'List-ID' => ['<notification.' . $hostname . '>'],
|
'List-ID' => ['<notification.' . $hostname . '>'],
|
||||||
'List-Archive' => ['<' . $baseUrl->get() . '/notifications/system>'],
|
'List-Archive' => ['<' . $baseUrl . '/notifications/system>'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,7 +262,7 @@ abstract class MailBuilder
|
||||||
'$htmlversion' => $msgHtml,
|
'$htmlversion' => $msgHtml,
|
||||||
'$sitename' => $this->config->get('config', 'sitename'),
|
'$sitename' => $this->config->get('config', 'sitename'),
|
||||||
'$banner' => $this->config->get('system', 'email_banner',
|
'$banner' => $this->config->get('system', 'email_banner',
|
||||||
$this->baseUrl->get(true) . DIRECTORY_SEPARATOR . self::DEFAULT_EMAIL_BANNER),
|
$this->baseUrl . DIRECTORY_SEPARATOR . self::DEFAULT_EMAIL_BANNER),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ class Emailer
|
||||||
|
|
||||||
$this->siteEmailAddress = $this->config->get('config', 'sender_email');
|
$this->siteEmailAddress = $this->config->get('config', 'sender_email');
|
||||||
if (empty($this->siteEmailAddress)) {
|
if (empty($this->siteEmailAddress)) {
|
||||||
$hostname = $this->baseUrl->getHostname();
|
$hostname = $this->baseUrl->getHost();
|
||||||
if (strpos($hostname, ':')) {
|
if (strpos($hostname, ':')) {
|
||||||
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
$hostname = substr($hostname, 0, strpos($hostname, ':'));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ class NodeInfo
|
||||||
Logger::info('start');
|
Logger::info('start');
|
||||||
ModelNodeInfo::update();
|
ModelNodeInfo::update();
|
||||||
// Now trying to register
|
// Now trying to register
|
||||||
$url = 'http://the-federation.info/register/' . DI::baseUrl()->getHostname();
|
$url = 'http://the-federation.info/register/' . DI::baseUrl()->getHost();
|
||||||
Logger::debug('Check registering url', ['url' => $url]);
|
Logger::debug('Check registering url', ['url' => $url]);
|
||||||
$ret = DI::httpClient()->fetch($url, HttpClientAccept::HTML);
|
$ret = DI::httpClient()->fetch($url, HttpClientAccept::HTML);
|
||||||
Logger::debug('Check registering answer', ['answer' => $ret]);
|
Logger::debug('Check registering answer', ['answer' => $ret]);
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ class Notifier
|
||||||
// if $parent['wall'] == 1 we will already have the parent message in our array
|
// if $parent['wall'] == 1 we will already have the parent message in our array
|
||||||
// and we will relay the whole lot.
|
// and we will relay the whole lot.
|
||||||
|
|
||||||
$localhost = str_replace('www.','', DI::baseUrl()->getHostname());
|
$localhost = str_replace('www.','', DI::baseUrl()->getHost());
|
||||||
if (strpos($localhost,':')) {
|
if (strpos($localhost,':')) {
|
||||||
$localhost = substr($localhost,0,strpos($localhost,':'));
|
$localhost = substr($localhost,0,strpos($localhost,':'));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,32 @@ class OptimizeTables
|
||||||
DBA::e("OPTIMIZE TABLE `parsed_url`");
|
DBA::e("OPTIMIZE TABLE `parsed_url`");
|
||||||
DBA::e("OPTIMIZE TABLE `session`");
|
DBA::e("OPTIMIZE TABLE `session`");
|
||||||
|
|
||||||
|
if (DI::config()->get('system', 'optimize_all_tables')) {
|
||||||
|
DBA::e("OPTIMIZE TABLE `apcontact`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `contact`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `contact-relation`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `conversation`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `diaspora-contact`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `diaspora-interaction`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `fcontact`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `gserver`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `gserver-tag`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `inbox-status`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `item-uri`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `notification`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `notify`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `photo`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-content`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-delivery-data`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-link`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-thread`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-thread-user`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `post-user`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `storage`");
|
||||||
|
DBA::e("OPTIMIZE TABLE `tag`");
|
||||||
|
}
|
||||||
|
|
||||||
Logger::info('Optimize end');
|
Logger::info('Optimize end');
|
||||||
|
|
||||||
DI::lock()->release('optimize_tables');
|
DI::lock()->release('optimize_tables');
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ class PushSubscription
|
||||||
|
|
||||||
$auth = [
|
$auth = [
|
||||||
'VAPID' => [
|
'VAPID' => [
|
||||||
'subject' => DI::baseUrl()->getHostname(),
|
'subject' => DI::baseUrl()->getHost(),
|
||||||
'publicKey' => ModelSubscription::getPublicVapidKey(),
|
'publicKey' => ModelSubscription::getPublicVapidKey(),
|
||||||
'privateKey' => ModelSubscription::getPrivateVapidKey(),
|
'privateKey' => ModelSubscription::getPrivateVapidKey(),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
|
||||||
if (!defined('DB_UPDATE_VERSION')) {
|
if (!defined('DB_UPDATE_VERSION')) {
|
||||||
define('DB_UPDATE_VERSION', 1514);
|
define('DB_UPDATE_VERSION', 1516);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
|
||||||
|
|
@ -487,6 +487,10 @@ return [
|
||||||
// Don't show smilies.
|
// Don't show smilies.
|
||||||
'no_smilies' => false,
|
'no_smilies' => false,
|
||||||
|
|
||||||
|
// optimize_all_tables (Boolean)
|
||||||
|
// Optimizes all tables instead of only tables like workerqueue or the cache
|
||||||
|
'optimize_all_tables' => false,
|
||||||
|
|
||||||
// paranoia (Boolean)
|
// paranoia (Boolean)
|
||||||
// Log out users if their IP address changed.
|
// Log out users if their IP address changed.
|
||||||
'paranoia' => false,
|
'paranoia' => false,
|
||||||
|
|
@ -503,6 +507,10 @@ return [
|
||||||
// Sets the ImageMagick compression level for PNG images. Values range from 0 (uncompressed) to 9 (most compressed).
|
// Sets the ImageMagick compression level for PNG images. Values range from 0 (uncompressed) to 9 (most compressed).
|
||||||
'png_quality' => 8,
|
'png_quality' => 8,
|
||||||
|
|
||||||
|
// process_view (Boolean)
|
||||||
|
// Process the "View" activity that is used by Peertube. View activities are displayed, when "emoji_activities" are enabled.
|
||||||
|
'process_view' => false,
|
||||||
|
|
||||||
// profiler (Boolean)
|
// profiler (Boolean)
|
||||||
// Enable internal timings to help optimize code. Needed for "rendertime" addon.
|
// Enable internal timings to help optimize code. Needed for "rendertime" addon.
|
||||||
'profiler' => false,
|
'profiler' => false,
|
||||||
|
|
|
||||||
191
tests/src/App/BaseURLTest.php
Normal file
191
tests/src/App/BaseURLTest.php
Normal file
|
|
@ -0,0 +1,191 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2010-2023, 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\App;
|
||||||
|
|
||||||
|
use Friendica\App\BaseURL;
|
||||||
|
use Friendica\Core\Config\Model\ReadOnlyFileConfig;
|
||||||
|
use Friendica\Core\Config\ValueObject\Cache;
|
||||||
|
use Friendica\Network\HTTPException\InternalServerErrorException;
|
||||||
|
use Friendica\Test\MockedTest;
|
||||||
|
use Psr\Log\NullLogger;
|
||||||
|
|
||||||
|
class BaseURLTest extends MockedTest
|
||||||
|
{
|
||||||
|
public function dataSystemUrl(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'default' => [
|
||||||
|
'input' => ['system' => ['url' => 'https://friendica.local',],],
|
||||||
|
'server' => [],
|
||||||
|
'assertion' => 'https://friendica.local',
|
||||||
|
],
|
||||||
|
'subPath' => [
|
||||||
|
'input' => ['system' => ['url' => 'https://friendica.local/subpath',],],
|
||||||
|
'server' => [],
|
||||||
|
'assertion' => 'https://friendica.local/subpath',
|
||||||
|
],
|
||||||
|
'empty' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [],
|
||||||
|
'assertion' => 'http://localhost',
|
||||||
|
],
|
||||||
|
'serverArrayStandard' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/test/it?with=query',
|
||||||
|
'QUERY_STRING' => 'pagename=test/it',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server',
|
||||||
|
],
|
||||||
|
'serverArraySubPath' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/test/it/now?with=query',
|
||||||
|
'QUERY_STRING' => 'pagename=it/now',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server/test',
|
||||||
|
],
|
||||||
|
'serverArraySubPath2' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/test/it/now?with=query',
|
||||||
|
'QUERY_STRING' => 'pagename=now',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server/test/it',
|
||||||
|
],
|
||||||
|
'serverArraySubPath3' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/test/it/now?with=query',
|
||||||
|
'QUERY_STRING' => 'pagename=test/it/now',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server',
|
||||||
|
],
|
||||||
|
'serverArrayWithoutQueryString1' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/test/it/now?with=query',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server/test/it/now',
|
||||||
|
],
|
||||||
|
'serverArrayWithoutQueryString2' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server',
|
||||||
|
],
|
||||||
|
'serverArrayWithoutQueryString3' => [
|
||||||
|
'input' => [],
|
||||||
|
'server' => [
|
||||||
|
'HTTPS' => 'on',
|
||||||
|
'HTTP_HOST' => 'friendica.server',
|
||||||
|
'REQUEST_URI' => '/',
|
||||||
|
],
|
||||||
|
'assertion' => 'https://friendica.server',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataSystemUrl
|
||||||
|
*/
|
||||||
|
public function testDetermine(array $input, array $server, string $assertion)
|
||||||
|
{
|
||||||
|
$origServerGlobal = $_SERVER;
|
||||||
|
|
||||||
|
$_SERVER = array_merge_recursive($_SERVER, $server);
|
||||||
|
$config = new ReadOnlyFileConfig(new Cache($input));
|
||||||
|
|
||||||
|
$baseUrl = new BaseURL($config, new NullLogger(), $server);
|
||||||
|
|
||||||
|
self::assertEquals($assertion, (string)$baseUrl);
|
||||||
|
|
||||||
|
$_SERVER = $origServerGlobal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataRemove(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'same' => [
|
||||||
|
'base' => ['system' => ['url' => 'https://friendica.local',],],
|
||||||
|
'origUrl' => 'https://friendica.local/test/picture.png',
|
||||||
|
'assertion' => 'test/picture.png',
|
||||||
|
],
|
||||||
|
'other' => [
|
||||||
|
'base' => ['system' => ['url' => 'https://friendica.local',],],
|
||||||
|
'origUrl' => 'https://friendica.other/test/picture.png',
|
||||||
|
'assertion' => 'https://friendica.other/test/picture.png',
|
||||||
|
],
|
||||||
|
'samSubPath' => [
|
||||||
|
'base' => ['system' => ['url' => 'https://friendica.local/test',],],
|
||||||
|
'origUrl' => 'https://friendica.local/test/picture.png',
|
||||||
|
'assertion' => 'picture.png',
|
||||||
|
],
|
||||||
|
'otherSubPath' => [
|
||||||
|
'base' => ['system' => ['url' => 'https://friendica.local/test',],],
|
||||||
|
'origUrl' => 'https://friendica.other/test/picture.png',
|
||||||
|
'assertion' => 'https://friendica.other/test/picture.png',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataRemove
|
||||||
|
*/
|
||||||
|
public function testRemove(array $base, string $origUrl, string $assertion)
|
||||||
|
{
|
||||||
|
$config = new ReadOnlyFileConfig(new Cache($base));
|
||||||
|
$baseUrl = new BaseURL($config, new NullLogger());
|
||||||
|
|
||||||
|
self::assertEquals($assertion, $baseUrl->remove($origUrl));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that redirect to external domains fails
|
||||||
|
*/
|
||||||
|
public function testRedirectException()
|
||||||
|
{
|
||||||
|
self::expectException(InternalServerErrorException::class);
|
||||||
|
self::expectErrorMessage('https://friendica.other is not a relative path, please use System::externalRedirect');
|
||||||
|
|
||||||
|
$config = new ReadOnlyFileConfig(new Cache([
|
||||||
|
'system' => [
|
||||||
|
'url' => 'https://friendica.local',
|
||||||
|
]
|
||||||
|
]));
|
||||||
|
$baseUrl = new BaseURL($config, new NullLogger());
|
||||||
|
$baseUrl->redirect('https://friendica.other');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -34,13 +34,11 @@ class BBCodeTest extends FixtureTest
|
||||||
DI::config()->set('system', 'remove_multiplicated_lines', false);
|
DI::config()->set('system', 'remove_multiplicated_lines', false);
|
||||||
DI::config()->set('system', 'no_oembed', false);
|
DI::config()->set('system', 'no_oembed', false);
|
||||||
DI::config()->set('system', 'allowed_link_protocols', []);
|
DI::config()->set('system', 'allowed_link_protocols', []);
|
||||||
DI::config()->set('system', 'url', 'friendica.local');
|
DI::config()->set('system', 'url', 'https://friendica.local');
|
||||||
DI::config()->set('system', 'no_smilies', false);
|
DI::config()->set('system', 'no_smilies', false);
|
||||||
DI::config()->set('system', 'big_emojis', false);
|
DI::config()->set('system', 'big_emojis', false);
|
||||||
DI::config()->set('system', 'allowed_oembed', '');
|
DI::config()->set('system', 'allowed_oembed', '');
|
||||||
|
|
||||||
DI::baseUrl()->save('friendica.local', DI::baseUrl()::SSL_POLICY_FULL, '');
|
|
||||||
|
|
||||||
$config = \HTMLPurifier_HTML5Config::createDefault();
|
$config = \HTMLPurifier_HTML5Config::createDefault();
|
||||||
$config->set('HTML.Doctype', 'HTML5');
|
$config->set('HTML.Doctype', 'HTML5');
|
||||||
$config->set('Attr.AllowedRel', [
|
$config->set('Attr.AllowedRel', [
|
||||||
|
|
|
||||||
|
|
@ -537,4 +537,33 @@ class ConfigTest extends DatabaseTest
|
||||||
|
|
||||||
self::assertEquals($assertion, $config->get($category));
|
self::assertEquals($assertion, $config->get($category));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function dataSerialized(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'default' => [
|
||||||
|
'value' => ['test' => ['array']],
|
||||||
|
'assertion' => ['test' => ['array']],
|
||||||
|
],
|
||||||
|
'issue-12803' => [
|
||||||
|
'value' => 's:48:"s:40:"s:32:"https://punkrock-underground.com";";";',
|
||||||
|
'assertion' => 'https://punkrock-underground.com',
|
||||||
|
],
|
||||||
|
'double-serialized-array' => [
|
||||||
|
'value' => 's:53:"a:1:{s:9:"testArray";a:1:{s:4:"with";s:7:"entries";}}";',
|
||||||
|
'assertion' => ['testArray' => ['with' => 'entries']],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataSerialized
|
||||||
|
*/
|
||||||
|
public function testSerializedValues($value, $assertion)
|
||||||
|
{
|
||||||
|
$config = $this->getInstance();
|
||||||
|
|
||||||
|
$config->set('test', 'it', $value);
|
||||||
|
self:self::assertEquals($assertion, $config->get('test', 'it'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ class SystemTest extends TestCase
|
||||||
private function useBaseUrl()
|
private function useBaseUrl()
|
||||||
{
|
{
|
||||||
$baseUrl = \Mockery::mock(BaseURL::class);
|
$baseUrl = \Mockery::mock(BaseURL::class);
|
||||||
$baseUrl->shouldReceive('getHostname')->andReturn('friendica.local')->once();
|
$baseUrl->shouldReceive('getHost')->andReturn('friendica.local')->once();
|
||||||
$dice = \Mockery::mock(Dice::class);
|
$dice = \Mockery::mock(Dice::class);
|
||||||
$dice->shouldReceive('create')->with(BaseURL::class)->andReturn($baseUrl);
|
$dice->shouldReceive('create')->with(BaseURL::class)->andReturn($baseUrl);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ class CookieTest extends MockedTest
|
||||||
*/
|
*/
|
||||||
public function testInstance()
|
public function testInstance()
|
||||||
{
|
{
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn('1235')->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn('1235')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
@ -127,7 +127,7 @@ class CookieTest extends MockedTest
|
||||||
*/
|
*/
|
||||||
public function testGet(array $cookieData, bool $hasValues, $uid, $hash, $ip)
|
public function testGet(array $cookieData, bool $hasValues, $uid, $hash, $ip)
|
||||||
{
|
{
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn('1235')->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn('1235')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
@ -188,7 +188,7 @@ class CookieTest extends MockedTest
|
||||||
*/
|
*/
|
||||||
public function testCheck(string $serverPrivateKey, string $userPrivateKey, string $password, string $assertHash, bool $assertTrue)
|
public function testCheck(string $serverPrivateKey, string $userPrivateKey, string $password, string $assertHash, bool $assertTrue)
|
||||||
{
|
{
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverPrivateKey)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverPrivateKey)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn('7')->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
@ -248,7 +248,7 @@ class CookieTest extends MockedTest
|
||||||
*/
|
*/
|
||||||
public function testSet($serverKey, $uid, $password, $privateKey, $assertHash, $remoteIp, $serverArray)
|
public function testSet($serverKey, $uid, $password, $privateKey, $assertHash, $remoteIp, $serverArray)
|
||||||
{
|
{
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
@ -275,7 +275,7 @@ class CookieTest extends MockedTest
|
||||||
*/
|
*/
|
||||||
public function testDoubleSet($serverKey, $uid, $password, $privateKey, $assertHash, $remoteIp, $serverArray)
|
public function testDoubleSet($serverKey, $uid, $password, $privateKey, $assertHash, $remoteIp, $serverArray)
|
||||||
{
|
{
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
@ -301,7 +301,7 @@ class CookieTest extends MockedTest
|
||||||
Cookie::NAME => 'test'
|
Cookie::NAME => 'test'
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->baseUrl->shouldReceive('getSSLPolicy')->andReturn(true)->once();
|
$this->baseUrl->shouldReceive('getScheme')->andReturn('https')->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn(24)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn(24)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,9 @@
|
||||||
|
|
||||||
namespace Friendica\Test\src\Module\Api\GnuSocial\GnuSocial;
|
namespace Friendica\Test\src\Module\Api\GnuSocial\GnuSocial;
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
|
||||||
use Friendica\App\Router;
|
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Module\Api\GNUSocial\GNUSocial\Config;
|
use Friendica\Module\Api\GNUSocial\GNUSocial\Config;
|
||||||
use Friendica\Test\src\Module\Api\ApiTest;
|
use Friendica\Test\src\Module\Api\ApiTest;
|
||||||
use Friendica\Test\Util\VFSTrait;
|
|
||||||
|
|
||||||
class ConfigTest extends ApiTest
|
class ConfigTest extends ApiTest
|
||||||
{
|
{
|
||||||
|
|
@ -35,13 +32,11 @@ class ConfigTest extends ApiTest
|
||||||
*/
|
*/
|
||||||
public function testApiStatusnetConfig()
|
public function testApiStatusnetConfig()
|
||||||
{
|
{
|
||||||
DI::config()->set('system', 'ssl_policy', BaseURL::SSL_POLICY_FULL);
|
|
||||||
|
|
||||||
$response = (new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
|
$response = (new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
|
||||||
->run($this->httpExceptionMock);
|
->run($this->httpExceptionMock);
|
||||||
$json = $this->toJson($response);
|
$json = $this->toJson($response);
|
||||||
|
|
||||||
self::assertEquals(DI::config()->get('config', 'hostname'), $json->site->server);
|
self::assertEquals(DI::baseUrl()->getHost(), $json->site->server);
|
||||||
self::assertEquals(DI::config()->get('system', 'theme'), $json->site->theme);
|
self::assertEquals(DI::config()->get('system', 'theme'), $json->site->theme);
|
||||||
self::assertEquals(DI::baseUrl() . '/images/friendica-64.png', $json->site->logo);
|
self::assertEquals(DI::baseUrl() . '/images/friendica-64.png', $json->site->logo);
|
||||||
self::assertTrue($json->site->fancy);
|
self::assertTrue($json->site->fancy);
|
||||||
|
|
|
||||||
|
|
@ -1,473 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2023, 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/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Friendica\Test\src\Util;
|
|
||||||
|
|
||||||
use Friendica\App\BaseURL;
|
|
||||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
|
||||||
use Friendica\Core\Config\Model\DatabaseConfig;
|
|
||||||
use Friendica\Core\Config\Model\ReadOnlyFileConfig;
|
|
||||||
use Friendica\Core\Config\Util\ConfigFileManager;
|
|
||||||
use Friendica\Core\Config\ValueObject\Cache;
|
|
||||||
use Friendica\Test\DatabaseTest;
|
|
||||||
use Friendica\Test\Util\CreateDatabaseTrait;
|
|
||||||
use Friendica\Test\Util\VFSTrait;
|
|
||||||
|
|
||||||
class BaseURLTest extends DatabaseTest
|
|
||||||
{
|
|
||||||
use VFSTrait;
|
|
||||||
use CreateDatabaseTrait;
|
|
||||||
|
|
||||||
protected function setUp(): void
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
|
|
||||||
$this->setUpVfsDir();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dataDefault()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'null' => [
|
|
||||||
'server' => [],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => '',
|
|
||||||
'urlPath' => '',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://',
|
|
||||||
'scheme' => 'http',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'WithSubDirectory' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'REDIRECT_URI' => 'test/module/more',
|
|
||||||
'QUERY_STRING' => 'module/more',
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.local/test',
|
|
||||||
'scheme' => 'http',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'server' => [],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'http://friendica.local/test',
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'http://friendica.local/test',
|
|
||||||
'scheme' => 'http',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'WithHttpsScheme' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'REDIRECT_URI' => 'test/module/more',
|
|
||||||
'QUERY_STRING' => 'module/more',
|
|
||||||
'HTTPS' => true,
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local/test',
|
|
||||||
'scheme' => 'https',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'WithoutQueryString' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'REDIRECT_URI' => 'test/more',
|
|
||||||
'HTTPS' => true,
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test/more',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local/test/more',
|
|
||||||
'scheme' => 'https',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'WithPort' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'SERVER_PORT' => '1234',
|
|
||||||
'REDIRECT_URI' => 'test/more',
|
|
||||||
'HTTPS' => true,
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local:1234',
|
|
||||||
'urlPath' => 'test/more',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local:1234/test/more',
|
|
||||||
'scheme' => 'https',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'With443Port' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'SERVER_PORT' => '443',
|
|
||||||
'REDIRECT_URI' => 'test/more',
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test/more',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local/test/more',
|
|
||||||
'scheme' => 'https',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'With80Port' => [
|
|
||||||
'server' => [
|
|
||||||
'SERVER_NAME' => 'friendica.local',
|
|
||||||
'SERVER_PORT' => '80',
|
|
||||||
'REDIRECT_URI' => 'test/more',
|
|
||||||
],
|
|
||||||
'input' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
'url' => null,
|
|
||||||
],
|
|
||||||
'assert' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'test/more',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.local/test/more',
|
|
||||||
'scheme' => 'http',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dataSave()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'no_change' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'path',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'path',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
],
|
|
||||||
'url' => 'https://friendica.local/path',
|
|
||||||
],
|
|
||||||
'default' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.old',
|
|
||||||
'urlPath' => 'is/old/path',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => 'new/path',
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
],
|
|
||||||
'url' => 'https://friendica.local/new/path',
|
|
||||||
],
|
|
||||||
'null' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.old',
|
|
||||||
'urlPath' => 'is/old/path',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
],
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
],
|
|
||||||
'changeHostname' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.old',
|
|
||||||
'urlPath' => 'is/old/path',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => 'friendica.local',
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => null,
|
|
||||||
],
|
|
||||||
'url' => 'http://friendica.local/is/old/path',
|
|
||||||
],
|
|
||||||
'changeUrlPath' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.old',
|
|
||||||
'urlPath' => 'is/old/path',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => 'new/path',
|
|
||||||
'sslPolicy' => null,
|
|
||||||
],
|
|
||||||
'url' => 'http://friendica.old/new/path',
|
|
||||||
],
|
|
||||||
'changeSSLPolicy' => [
|
|
||||||
'input' => [
|
|
||||||
'hostname' => 'friendica.old',
|
|
||||||
'urlPath' => 'is/old/path',
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'http://friendica.old/is/old/path',
|
|
||||||
'force_ssl' => true,
|
|
||||||
],
|
|
||||||
'save' => [
|
|
||||||
'hostname' => null,
|
|
||||||
'urlPath' => null,
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
],
|
|
||||||
'url' => 'https://friendica.old/is/old/path',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the save() method
|
|
||||||
* @dataProvider dataSave
|
|
||||||
*/
|
|
||||||
public function testSave($input, $save, $url)
|
|
||||||
{
|
|
||||||
$config = new DatabaseConfig($this->getDbInstance(), new Cache([
|
|
||||||
'config' => [
|
|
||||||
'hostname' => $input['hostname'] ?? null,
|
|
||||||
],
|
|
||||||
'system' => [
|
|
||||||
'urlpath' => $input['urlPath'] ?? null,
|
|
||||||
'ssl_policy' => $input['sslPolicy'] ?? null,
|
|
||||||
'url' => $input['url'] ?? null,
|
|
||||||
'force_ssl' => $input['force_ssl'] ?? null,
|
|
||||||
],
|
|
||||||
]));
|
|
||||||
|
|
||||||
$baseUrl = new BaseURL($config, []);
|
|
||||||
|
|
||||||
$baseUrl->save($save['hostname'], $save['sslPolicy'], $save['urlPath']);
|
|
||||||
|
|
||||||
self::assertEquals($url, $baseUrl->get());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the saveByUrl() method
|
|
||||||
* @dataProvider dataSave
|
|
||||||
*
|
|
||||||
* @param $input
|
|
||||||
* @param $save
|
|
||||||
* @param $url
|
|
||||||
*/
|
|
||||||
public function testSaveByUrl($input, $save, $url)
|
|
||||||
{
|
|
||||||
$config = new DatabaseConfig($this->getDbInstance(), new Cache([
|
|
||||||
'config' => [
|
|
||||||
'hostname' => $input['hostname'] ?? null,
|
|
||||||
],
|
|
||||||
'system' => [
|
|
||||||
'urlpath' => $input['urlPath'] ?? null,
|
|
||||||
'ssl_policy' => $input['sslPolicy'] ?? null,
|
|
||||||
'url' => $input['url'] ?? null,
|
|
||||||
'force_ssl' => $input['force_ssl'] ?? null,
|
|
||||||
],
|
|
||||||
]));
|
|
||||||
|
|
||||||
$baseUrl = new BaseURL($config, []);
|
|
||||||
|
|
||||||
$baseUrl->saveByURL($url);
|
|
||||||
|
|
||||||
self::assertEquals($url, $baseUrl->get());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dataGetBaseUrl()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'default' => [
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'ssl' => false,
|
|
||||||
'url' => 'http://friendica.local/new/test',
|
|
||||||
'assert' => 'http://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
'DefaultWithSSL' => [
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'ssl' => true,
|
|
||||||
'url' => 'http://friendica.local/new/test',
|
|
||||||
'assert' => 'https://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
'SSLFullWithSSL' => [
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'ssl' => true,
|
|
||||||
'url' => 'http://friendica.local/new/test',
|
|
||||||
'assert' => 'http://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
'SSLFullWithoutSSL' => [
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'ssl' => false,
|
|
||||||
'url' => 'https://friendica.local/new/test',
|
|
||||||
'assert' => 'https://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
'NoSSLWithSSL' => [
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_NONE,
|
|
||||||
'ssl' => true,
|
|
||||||
'url' => 'http://friendica.local/new/test',
|
|
||||||
'assert' => 'http://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
'NoSSLWithoutSSL' => [
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_NONE,
|
|
||||||
'ssl' => false,
|
|
||||||
'url' => 'http://friendica.local/new/test',
|
|
||||||
'assert' => 'http://friendica.local/new/test',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the get() method
|
|
||||||
* @dataProvider dataGetBaseUrl
|
|
||||||
*/
|
|
||||||
public function testGetURL($sslPolicy, $ssl, $url, $assert)
|
|
||||||
{
|
|
||||||
$configMock = \Mockery::mock(IManageConfigValues::class);
|
|
||||||
$configMock->shouldReceive('get')->with('config', 'hostname')->andReturn('friendica.local');
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'urlpath')->andReturn('new/test');
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'ssl_policy')->andReturn($sslPolicy);
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'url')->andReturn($url);
|
|
||||||
|
|
||||||
$baseUrl = new BaseURL($configMock, []);
|
|
||||||
|
|
||||||
self::assertEquals($assert, $baseUrl->get($ssl));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dataCheckRedirectHTTPS()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'default' => [
|
|
||||||
'server' => [
|
|
||||||
'REQUEST_METHOD' => 'GET',
|
|
||||||
'HTTPS' => true,
|
|
||||||
],
|
|
||||||
'forceSSL' => false,
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'https://friendica.local',
|
|
||||||
'redirect' => false,
|
|
||||||
],
|
|
||||||
'forceSSL' => [
|
|
||||||
'server' => [
|
|
||||||
'REQUEST_METHOD' => 'GET',
|
|
||||||
],
|
|
||||||
'forceSSL' => true,
|
|
||||||
'sslPolicy' => BaseURL::DEFAULT_SSL_SCHEME,
|
|
||||||
'url' => 'https://friendica.local',
|
|
||||||
'redirect' => false,
|
|
||||||
],
|
|
||||||
'forceSSLWithSSLPolicy' => [
|
|
||||||
'server' => [],
|
|
||||||
'forceSSL' => true,
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local',
|
|
||||||
'redirect' => false,
|
|
||||||
],
|
|
||||||
'forceSSLWithSSLPolicyAndGet' => [
|
|
||||||
'server' => [
|
|
||||||
'REQUEST_METHOD' => 'GET',
|
|
||||||
],
|
|
||||||
'forceSSL' => true,
|
|
||||||
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
|
|
||||||
'url' => 'https://friendica.local',
|
|
||||||
'redirect' => true,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the checkRedirectHTTPS() method
|
|
||||||
* @dataProvider dataCheckRedirectHTTPS
|
|
||||||
*/
|
|
||||||
public function testCheckRedirectHTTPS($server, $forceSSL, $sslPolicy, $url, $redirect)
|
|
||||||
{
|
|
||||||
$configMock = \Mockery::mock(IManageConfigValues::class);
|
|
||||||
$configMock->shouldReceive('get')->with('config', 'hostname')->andReturn('friendica.local');
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'urlpath')->andReturn('new/test');
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'ssl_policy')->andReturn($sslPolicy);
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'url')->andReturn($url);
|
|
||||||
$configMock->shouldReceive('get')->with('system', 'force_ssl')->andReturn($forceSSL);
|
|
||||||
|
|
||||||
$baseUrl = new BaseURL($configMock, $server);
|
|
||||||
|
|
||||||
self::assertEquals($redirect, $baseUrl->checkRedirectHttps());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -68,8 +68,8 @@ class EMailerTest extends MockedTest
|
||||||
$this->pConfig = \Mockery::mock(IManagePersonalConfigValues::class);
|
$this->pConfig = \Mockery::mock(IManagePersonalConfigValues::class);
|
||||||
$this->l10n = \Mockery::mock(L10n::class);
|
$this->l10n = \Mockery::mock(L10n::class);
|
||||||
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
||||||
$this->baseUrl->shouldReceive('getHostname')->andReturn('friendica.local');
|
$this->baseUrl->shouldReceive('getHost')->andReturn('friendica.local');
|
||||||
$this->baseUrl->shouldReceive('get')->andReturn('http://friendica.local');
|
$this->baseUrl->shouldReceive('__toString')->andReturn('http://friendica.local');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown(): void
|
protected function tearDown(): void
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,8 @@ class MailBuilderTest extends MockedTest
|
||||||
$this->config = \Mockery::mock(IManageConfigValues::class);
|
$this->config = \Mockery::mock(IManageConfigValues::class);
|
||||||
$this->l10n = \Mockery::mock(L10n::class);
|
$this->l10n = \Mockery::mock(L10n::class);
|
||||||
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
||||||
$this->baseUrl->shouldReceive('getHostname')->andReturn('friendica.local');
|
$this->baseUrl->shouldReceive('getHost')->andReturn('friendica.local');
|
||||||
$this->baseUrl->shouldReceive('get')->andReturn('http://friendica.local');
|
$this->baseUrl->shouldReceive('__toString')->andReturn('http://friendica.local');
|
||||||
|
|
||||||
$this->defaultHeaders = [];
|
$this->defaultHeaders = [];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,8 @@ class SystemMailBuilderTest extends MockedTest
|
||||||
return $msg;
|
return $msg;
|
||||||
});
|
});
|
||||||
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
$this->baseUrl = \Mockery::mock(BaseURL::class);
|
||||||
$this->baseUrl->shouldReceive('getHostname')->andReturn('friendica.local');
|
$this->baseUrl->shouldReceive('getHost')->andReturn('friendica.local');
|
||||||
$this->baseUrl->shouldReceive('get')->andReturn('http://friendica.local');
|
$this->baseUrl->shouldReceive('__toString')->andReturn('http://friendica.local');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
28
update.php
28
update.php
|
|
@ -59,6 +59,7 @@ use Friendica\Model\Photo;
|
||||||
use Friendica\Model\Post;
|
use Friendica\Model\Post;
|
||||||
use Friendica\Model\Profile;
|
use Friendica\Model\Profile;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
|
use Friendica\Protocol\Activity;
|
||||||
use Friendica\Protocol\Delivery;
|
use Friendica\Protocol\Delivery;
|
||||||
use Friendica\Security\PermissionSet\Repository\PermissionSet;
|
use Friendica\Security\PermissionSet\Repository\PermissionSet;
|
||||||
|
|
||||||
|
|
@ -1287,3 +1288,30 @@ function update_1514()
|
||||||
|
|
||||||
return Update::SUCCESS;
|
return Update::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1515()
|
||||||
|
{
|
||||||
|
DBA::update('verb', ['name' => Activity::READ], ['name' => 'https://www.w3.org/ns/activitystreams#read']);
|
||||||
|
DBA::update('verb', ['name' => Activity::VIEW], ['name' => 'https://joinpeertube.org/view']);
|
||||||
|
return Update::SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_1516()
|
||||||
|
{
|
||||||
|
// Fixes https://github.com/friendica/friendica/issues/12803
|
||||||
|
// de-serialize multiple serialized values
|
||||||
|
$configTrans = DI::config()->beginTransaction();
|
||||||
|
$configArray = DI::config()->getCache()->getDataBySource(Cache::SOURCE_DATA);
|
||||||
|
|
||||||
|
foreach ($configArray as $category => $keyValues) {
|
||||||
|
if (is_array($keyValues)) {
|
||||||
|
foreach ($keyValues as $key => $value) {
|
||||||
|
$configTrans->set($category, $key, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$configTrans->commit();
|
||||||
|
|
||||||
|
return Update::SUCCESS;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 2023.03-dev\n"
|
"Project-Id-Version: 2023.03-dev\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-18 06:38+0000\n"
|
"POT-Creation-Date: 2023-02-18 20:49+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"
|
||||||
|
|
@ -307,8 +307,8 @@ msgstr ""
|
||||||
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
|
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
|
||||||
#: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
|
#: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
|
||||||
#: src/Module/Delegation.php:147 src/Module/FriendSuggest.php:145
|
#: src/Module/Delegation.php:147 src/Module/FriendSuggest.php:145
|
||||||
#: src/Module/Install.php:252 src/Module/Install.php:294
|
#: src/Module/Install.php:234 src/Module/Install.php:274
|
||||||
#: src/Module/Install.php:331 src/Module/Invite.php:178
|
#: src/Module/Install.php:309 src/Module/Invite.php:178
|
||||||
#: src/Module/Item/Compose.php:189 src/Module/Moderation/Item/Source.php:79
|
#: src/Module/Item/Compose.php:189 src/Module/Moderation/Item/Source.php:79
|
||||||
#: src/Module/Profile/Profile.php:274 src/Module/Profile/UnkMail.php:156
|
#: src/Module/Profile/Profile.php:274 src/Module/Profile/UnkMail.php:156
|
||||||
#: src/Module/Settings/Profile/Index.php:231 src/Object/Post.php:1058
|
#: src/Module/Settings/Profile/Index.php:231 src/Object/Post.php:1058
|
||||||
|
|
@ -653,7 +653,7 @@ msgstr ""
|
||||||
msgid "No system theme config value set."
|
msgid "No system theme config value set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/App.php:573
|
#: src/App.php:574
|
||||||
msgid "Apologies but the website is unavailable at the moment."
|
msgid "Apologies but the website is unavailable at the moment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -1504,20 +1504,20 @@ msgid ""
|
||||||
"Contact birthday events are private to you."
|
"Contact birthday events are private to you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/ForumManager.php:157 src/Content/Nav.php:278
|
#: src/Content/ForumManager.php:151 src/Content/Nav.php:278
|
||||||
#: src/Content/Text/HTML.php:905 src/Content/Widget.php:524
|
#: src/Content/Text/HTML.php:905 src/Content/Widget.php:524
|
||||||
msgid "Forums"
|
msgid "Forums"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/ForumManager.php:159
|
#: src/Content/ForumManager.php:153
|
||||||
msgid "External link to forum"
|
msgid "External link to forum"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/ForumManager.php:162 src/Content/Widget.php:503
|
#: src/Content/ForumManager.php:156 src/Content/Widget.php:503
|
||||||
msgid "show less"
|
msgid "show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/ForumManager.php:163 src/Content/Widget.php:405
|
#: src/Content/ForumManager.php:157 src/Content/Widget.php:405
|
||||||
#: src/Content/Widget.php:504
|
#: src/Content/Widget.php:504
|
||||||
msgid "show more"
|
msgid "show more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2245,29 +2245,29 @@ msgstr ""
|
||||||
msgid "Connectors"
|
msgid "Connectors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:183
|
#: src/Core/Installer.php:180
|
||||||
msgid ""
|
msgid ""
|
||||||
"The database configuration file \"config/local.config.php\" could not be "
|
"The database configuration file \"config/local.config.php\" could not be "
|
||||||
"written. Please use the enclosed text to create a configuration file in your "
|
"written. Please use the enclosed text to create a configuration file in your "
|
||||||
"web server root."
|
"web server root."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:200
|
#: src/Core/Installer.php:197
|
||||||
msgid ""
|
msgid ""
|
||||||
"You may need to import the file \"database.sql\" manually using phpmyadmin "
|
"You may need to import the file \"database.sql\" manually using phpmyadmin "
|
||||||
"or mysql."
|
"or mysql."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:201 src/Module/Install.php:213
|
#: src/Core/Installer.php:198 src/Module/Install.php:207
|
||||||
#: src/Module/Install.php:372
|
#: src/Module/Install.php:350
|
||||||
msgid "Please see the file \"doc/INSTALL.md\"."
|
msgid "Please see the file \"doc/INSTALL.md\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:262
|
#: src/Core/Installer.php:259
|
||||||
msgid "Could not find a command line version of PHP in the web server PATH."
|
msgid "Could not find a command line version of PHP in the web server PATH."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:263
|
#: src/Core/Installer.php:260
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you don't have a command line version of PHP installed on your server, "
|
"If you don't have a command line version of PHP installed on your server, "
|
||||||
"you will not be able to run the background processing. See <a href='https://"
|
"you will not be able to run the background processing. See <a href='https://"
|
||||||
|
|
@ -2275,291 +2275,291 @@ msgid ""
|
||||||
"worker'>'Setup the worker'</a>"
|
"worker'>'Setup the worker'</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:268
|
#: src/Core/Installer.php:265
|
||||||
msgid "PHP executable path"
|
msgid "PHP executable path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:268
|
#: src/Core/Installer.php:265
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enter full path to php executable. You can leave this blank to continue the "
|
"Enter full path to php executable. You can leave this blank to continue the "
|
||||||
"installation."
|
"installation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:273
|
#: src/Core/Installer.php:270
|
||||||
msgid "Command line PHP"
|
msgid "Command line PHP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:282
|
#: src/Core/Installer.php:279
|
||||||
msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
|
msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:283
|
#: src/Core/Installer.php:280
|
||||||
msgid "Found PHP version: "
|
msgid "Found PHP version: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:285
|
#: src/Core/Installer.php:282
|
||||||
msgid "PHP cli binary"
|
msgid "PHP cli binary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:298
|
#: src/Core/Installer.php:295
|
||||||
msgid ""
|
msgid ""
|
||||||
"The command line version of PHP on your system does not have "
|
"The command line version of PHP on your system does not have "
|
||||||
"\"register_argc_argv\" enabled."
|
"\"register_argc_argv\" enabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:299
|
#: src/Core/Installer.php:296
|
||||||
msgid "This is required for message delivery to work."
|
msgid "This is required for message delivery to work."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:304
|
#: src/Core/Installer.php:301
|
||||||
msgid "PHP register_argc_argv"
|
msgid "PHP register_argc_argv"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:336
|
#: src/Core/Installer.php:333
|
||||||
msgid ""
|
msgid ""
|
||||||
"Error: the \"openssl_pkey_new\" function on this system is not able to "
|
"Error: the \"openssl_pkey_new\" function on this system is not able to "
|
||||||
"generate encryption keys"
|
"generate encryption keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:337
|
#: src/Core/Installer.php:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
|
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
|
||||||
"installation.php\"."
|
"installation.php\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:340
|
#: src/Core/Installer.php:337
|
||||||
msgid "Generate encryption keys"
|
msgid "Generate encryption keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:392
|
#: src/Core/Installer.php:389
|
||||||
msgid ""
|
msgid ""
|
||||||
"Error: Apache webserver mod-rewrite module is required but not installed."
|
"Error: Apache webserver mod-rewrite module is required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:397
|
#: src/Core/Installer.php:394
|
||||||
msgid "Apache mod_rewrite module"
|
msgid "Apache mod_rewrite module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:403
|
#: src/Core/Installer.php:400
|
||||||
msgid "Error: PDO or MySQLi PHP module required but not installed."
|
msgid "Error: PDO or MySQLi PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:408
|
#: src/Core/Installer.php:405
|
||||||
msgid "Error: The MySQL driver for PDO is not installed."
|
msgid "Error: The MySQL driver for PDO is not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:412
|
#: src/Core/Installer.php:409
|
||||||
msgid "PDO or MySQLi PHP module"
|
msgid "PDO or MySQLi PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:420
|
#: src/Core/Installer.php:417
|
||||||
msgid "Error, XML PHP module required but not installed."
|
msgid "Error, XML PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:424
|
#: src/Core/Installer.php:421
|
||||||
msgid "XML PHP module"
|
msgid "XML PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:427
|
#: src/Core/Installer.php:424
|
||||||
msgid "libCurl PHP module"
|
msgid "libCurl PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:428
|
#: src/Core/Installer.php:425
|
||||||
msgid "Error: libCURL PHP module required but not installed."
|
msgid "Error: libCURL PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:434
|
#: src/Core/Installer.php:431
|
||||||
msgid "GD graphics PHP module"
|
msgid "GD graphics PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:435
|
#: src/Core/Installer.php:432
|
||||||
msgid ""
|
msgid ""
|
||||||
"Error: GD graphics PHP module with JPEG support required but not installed."
|
"Error: GD graphics PHP module with JPEG support required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:441
|
#: src/Core/Installer.php:438
|
||||||
msgid "OpenSSL PHP module"
|
msgid "OpenSSL PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:442
|
#: src/Core/Installer.php:439
|
||||||
msgid "Error: openssl PHP module required but not installed."
|
msgid "Error: openssl PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:448
|
#: src/Core/Installer.php:445
|
||||||
msgid "mb_string PHP module"
|
msgid "mb_string PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:449
|
#: src/Core/Installer.php:446
|
||||||
msgid "Error: mb_string PHP module required but not installed."
|
msgid "Error: mb_string PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:455
|
#: src/Core/Installer.php:452
|
||||||
msgid "iconv PHP module"
|
msgid "iconv PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:456
|
#: src/Core/Installer.php:453
|
||||||
msgid "Error: iconv PHP module required but not installed."
|
msgid "Error: iconv PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:462
|
#: src/Core/Installer.php:459
|
||||||
msgid "POSIX PHP module"
|
msgid "POSIX PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:463
|
#: src/Core/Installer.php:460
|
||||||
msgid "Error: POSIX PHP module required but not installed."
|
msgid "Error: POSIX PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:469
|
#: src/Core/Installer.php:466
|
||||||
msgid "Program execution functions"
|
msgid "Program execution functions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:470
|
#: src/Core/Installer.php:467
|
||||||
msgid ""
|
msgid ""
|
||||||
"Error: Program execution functions (proc_open) required but not enabled."
|
"Error: Program execution functions (proc_open) required but not enabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:476
|
#: src/Core/Installer.php:473
|
||||||
msgid "JSON PHP module"
|
msgid "JSON PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:477
|
#: src/Core/Installer.php:474
|
||||||
msgid "Error: JSON PHP module required but not installed."
|
msgid "Error: JSON PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:483
|
#: src/Core/Installer.php:480
|
||||||
msgid "File Information PHP module"
|
msgid "File Information PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:484
|
#: src/Core/Installer.php:481
|
||||||
msgid "Error: File Information PHP module required but not installed."
|
msgid "Error: File Information PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:490
|
#: src/Core/Installer.php:487
|
||||||
msgid "GNU Multiple Precision PHP module"
|
msgid "GNU Multiple Precision PHP module"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:491
|
#: src/Core/Installer.php:488
|
||||||
msgid "Error: GNU Multiple Precision PHP module required but not installed."
|
msgid "Error: GNU Multiple Precision PHP module required but not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:514
|
#: src/Core/Installer.php:511
|
||||||
msgid ""
|
msgid ""
|
||||||
"The web installer needs to be able to create a file called \"local.config.php"
|
"The web installer needs to be able to create a file called \"local.config.php"
|
||||||
"\" in the \"config\" folder of your web server and it is unable to do so."
|
"\" in the \"config\" folder of your web server and it is unable to do so."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:515
|
#: src/Core/Installer.php:512
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is most often a permission setting, as the web server may not be able "
|
"This is most often a permission setting, as the web server may not be able "
|
||||||
"to write files in your folder - even if you can."
|
"to write files in your folder - even if you can."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:516
|
#: src/Core/Installer.php:513
|
||||||
msgid ""
|
msgid ""
|
||||||
"At the end of this procedure, we will give you a text to save in a file "
|
"At the end of this procedure, we will give you a text to save in a file "
|
||||||
"named local.config.php in your Friendica \"config\" folder."
|
"named local.config.php in your Friendica \"config\" folder."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:517
|
#: src/Core/Installer.php:514
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can alternatively skip this procedure and perform a manual installation. "
|
"You can alternatively skip this procedure and perform a manual installation. "
|
||||||
"Please see the file \"doc/INSTALL.md\" for instructions."
|
"Please see the file \"doc/INSTALL.md\" for instructions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:520
|
#: src/Core/Installer.php:517
|
||||||
msgid "config/local.config.php is writable"
|
msgid "config/local.config.php is writable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:540
|
#: src/Core/Installer.php:537
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
|
"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
|
||||||
"compiles templates to PHP to speed up rendering."
|
"compiles templates to PHP to speed up rendering."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:541
|
#: src/Core/Installer.php:538
|
||||||
msgid ""
|
msgid ""
|
||||||
"In order to store these compiled templates, the web server needs to have "
|
"In order to store these compiled templates, the web server needs to have "
|
||||||
"write access to the directory view/smarty3/ under the Friendica top level "
|
"write access to the directory view/smarty3/ under the Friendica top level "
|
||||||
"folder."
|
"folder."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:542
|
#: src/Core/Installer.php:539
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please ensure that the user that your web server runs as (e.g. www-data) has "
|
"Please ensure that the user that your web server runs as (e.g. www-data) has "
|
||||||
"write access to this folder."
|
"write access to this folder."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:543
|
#: src/Core/Installer.php:540
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: as a security measure, you should give the web server write access to "
|
"Note: as a security measure, you should give the web server write access to "
|
||||||
"view/smarty3/ only--not the template files (.tpl) that it contains."
|
"view/smarty3/ only--not the template files (.tpl) that it contains."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:546
|
#: src/Core/Installer.php:543
|
||||||
msgid "view/smarty3 is writable"
|
msgid "view/smarty3 is writable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:574
|
#: src/Core/Installer.php:571
|
||||||
msgid ""
|
msgid ""
|
||||||
"Url rewrite in .htaccess seems not working. Make sure you copied .htaccess-"
|
"Url rewrite in .htaccess seems not working. Make sure you copied .htaccess-"
|
||||||
"dist to .htaccess."
|
"dist to .htaccess."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:575
|
#: src/Core/Installer.php:572
|
||||||
msgid ""
|
msgid ""
|
||||||
"In some circumstances (like running inside containers), you can skip this "
|
"In some circumstances (like running inside containers), you can skip this "
|
||||||
"error."
|
"error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:577
|
#: src/Core/Installer.php:574
|
||||||
msgid "Error message from Curl when fetching"
|
msgid "Error message from Curl when fetching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:583
|
#: src/Core/Installer.php:580
|
||||||
msgid "Url rewrite is working"
|
msgid "Url rewrite is working"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:612
|
#: src/Core/Installer.php:609
|
||||||
msgid ""
|
msgid ""
|
||||||
"The detection of TLS to secure the communication between the browser and the "
|
"The detection of TLS to secure the communication between the browser and the "
|
||||||
"new Friendica server failed."
|
"new Friendica server failed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:613
|
#: src/Core/Installer.php:610
|
||||||
msgid ""
|
msgid ""
|
||||||
"It is highly encouraged to use Friendica only over a secure connection as "
|
"It is highly encouraged to use Friendica only over a secure connection as "
|
||||||
"sensitive information like passwords will be transmitted."
|
"sensitive information like passwords will be transmitted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:614
|
#: src/Core/Installer.php:611
|
||||||
msgid "Please ensure that the connection to the server is secure."
|
msgid "Please ensure that the connection to the server is secure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:615
|
#: src/Core/Installer.php:612
|
||||||
msgid "No TLS detected"
|
msgid "No TLS detected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:617
|
#: src/Core/Installer.php:614
|
||||||
msgid "TLS detected"
|
msgid "TLS detected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:644
|
#: src/Core/Installer.php:641
|
||||||
msgid "ImageMagick PHP extension is not installed"
|
msgid "ImageMagick PHP extension is not installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:646
|
#: src/Core/Installer.php:643
|
||||||
msgid "ImageMagick PHP extension is installed"
|
msgid "ImageMagick PHP extension is installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:648
|
#: src/Core/Installer.php:645
|
||||||
msgid "ImageMagick supports GIF"
|
msgid "ImageMagick supports GIF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:670
|
#: src/Core/Installer.php:667
|
||||||
msgid "Database already in use."
|
msgid "Database already in use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/Installer.php:675
|
#: src/Core/Installer.php:672
|
||||||
msgid "Could not connect to database."
|
msgid "Could not connect to database."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -3296,7 +3296,7 @@ msgstr ""
|
||||||
msgid "Title/Description:"
|
msgid "Title/Description:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Profile.php:1023 src/Module/Admin/Summary.php:217
|
#: src/Model/Profile.php:1023 src/Module/Admin/Summary.php:221
|
||||||
#: src/Module/Moderation/Summary.php:77
|
#: src/Module/Moderation/Summary.php:77
|
||||||
msgid "Summary"
|
msgid "Summary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -3622,8 +3622,8 @@ msgstr ""
|
||||||
#: src/Module/Admin/Addons/Details.php:111 src/Module/Admin/Addons/Index.php:67
|
#: src/Module/Admin/Addons/Details.php:111 src/Module/Admin/Addons/Index.php:67
|
||||||
#: src/Module/Admin/Federation.php:207 src/Module/Admin/Logs/Settings.php:79
|
#: src/Module/Admin/Federation.php:207 src/Module/Admin/Logs/Settings.php:79
|
||||||
#: src/Module/Admin/Logs/View.php:84 src/Module/Admin/Queue.php:72
|
#: src/Module/Admin/Logs/View.php:84 src/Module/Admin/Queue.php:72
|
||||||
#: src/Module/Admin/Site.php:435 src/Module/Admin/Storage.php:138
|
#: src/Module/Admin/Site.php:389 src/Module/Admin/Storage.php:138
|
||||||
#: src/Module/Admin/Summary.php:216 src/Module/Admin/Themes/Details.php:90
|
#: src/Module/Admin/Summary.php:220 src/Module/Admin/Themes/Details.php:90
|
||||||
#: src/Module/Admin/Themes/Index.php:111 src/Module/Admin/Tos.php:77
|
#: src/Module/Admin/Themes/Index.php:111 src/Module/Admin/Tos.php:77
|
||||||
#: src/Module/Moderation/Users/Create.php:61
|
#: src/Module/Moderation/Users/Create.php:61
|
||||||
#: src/Module/Moderation/Users/Pending.php:96
|
#: src/Module/Moderation/Users/Pending.php:96
|
||||||
|
|
@ -3660,7 +3660,7 @@ msgid "Addon %s failed to install."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
|
#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
|
||||||
#: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:438
|
#: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:392
|
||||||
#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:86
|
#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:86
|
||||||
#: src/Module/Settings/Account.php:560 src/Module/Settings/Addons.php:78
|
#: src/Module/Settings/Account.php:560 src/Module/Settings/Addons.php:78
|
||||||
#: src/Module/Settings/Connectors.php:158
|
#: src/Module/Settings/Connectors.php:158
|
||||||
|
|
@ -4012,289 +4012,269 @@ msgstr ""
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:247
|
#: src/Module/Admin/Site.php:207
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is no valid input for maximum image size"
|
msgid "%s is no valid input for maximum image size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:344 src/Module/Settings/Display.php:169
|
#: src/Module/Admin/Site.php:304 src/Module/Settings/Display.php:169
|
||||||
msgid "No special theme for mobile devices"
|
msgid "No special theme for mobile devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:361 src/Module/Settings/Display.php:179
|
#: src/Module/Admin/Site.php:321 src/Module/Settings/Display.php:179
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s - (Experimental)"
|
msgid "%s - (Experimental)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:373
|
#: src/Module/Admin/Site.php:333
|
||||||
msgid "No community page"
|
msgid "No community page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:374
|
#: src/Module/Admin/Site.php:334
|
||||||
msgid "No community page for visitors"
|
msgid "No community page for visitors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:375
|
#: src/Module/Admin/Site.php:335
|
||||||
msgid "Public postings from users of this site"
|
msgid "Public postings from users of this site"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:376
|
#: src/Module/Admin/Site.php:336
|
||||||
msgid "Public postings from the federated network"
|
msgid "Public postings from the federated network"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:377
|
#: src/Module/Admin/Site.php:337
|
||||||
msgid "Public postings from local users and the federated network"
|
msgid "Public postings from local users and the federated network"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:383
|
#: src/Module/Admin/Site.php:343
|
||||||
msgid "Multi user instance"
|
msgid "Multi user instance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:406
|
#: src/Module/Admin/Site.php:366
|
||||||
msgid "Closed"
|
msgid "Closed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:407
|
#: src/Module/Admin/Site.php:367
|
||||||
msgid "Requires approval"
|
msgid "Requires approval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:408
|
#: src/Module/Admin/Site.php:368
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:412 src/Module/Install.php:222
|
#: src/Module/Admin/Site.php:372
|
||||||
msgid "No SSL policy, links will track page SSL state"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:413 src/Module/Install.php:223
|
|
||||||
msgid "Force all links to use SSL"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:414 src/Module/Install.php:224
|
|
||||||
msgid "Self-signed certificate, use SSL for local links only (discouraged)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:418
|
|
||||||
msgid "Don't check"
|
msgid "Don't check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:419
|
#: src/Module/Admin/Site.php:373
|
||||||
msgid "check the stable version"
|
msgid "check the stable version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:420
|
#: src/Module/Admin/Site.php:374
|
||||||
msgid "check the development version"
|
msgid "check the development version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:424
|
#: src/Module/Admin/Site.php:378
|
||||||
msgid "none"
|
msgid "none"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:425
|
#: src/Module/Admin/Site.php:379
|
||||||
msgid "Local contacts"
|
msgid "Local contacts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:426
|
#: src/Module/Admin/Site.php:380
|
||||||
msgid "Interactors"
|
msgid "Interactors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:436 src/Module/BaseAdmin.php:90
|
#: src/Module/Admin/Site.php:390 src/Module/BaseAdmin.php:90
|
||||||
msgid "Site"
|
msgid "Site"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:437
|
#: src/Module/Admin/Site.php:391
|
||||||
msgid "General Information"
|
msgid "General Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:439
|
#: src/Module/Admin/Site.php:393
|
||||||
msgid "Republish users to directory"
|
msgid "Republish users to directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:440 src/Module/Register.php:152
|
#: src/Module/Admin/Site.php:394 src/Module/Register.php:152
|
||||||
msgid "Registration"
|
msgid "Registration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:441
|
#: src/Module/Admin/Site.php:395
|
||||||
msgid "File upload"
|
msgid "File upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:442
|
#: src/Module/Admin/Site.php:396
|
||||||
msgid "Policies"
|
msgid "Policies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:443 src/Module/Calendar/Event/Form.php:252
|
#: src/Module/Admin/Site.php:397 src/Module/Calendar/Event/Form.php:252
|
||||||
#: src/Module/Contact.php:517 src/Module/Profile/Profile.php:276
|
#: src/Module/Contact.php:517 src/Module/Profile/Profile.php:276
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:444
|
#: src/Module/Admin/Site.php:398
|
||||||
msgid "Auto Discovered Contact Directory"
|
msgid "Auto Discovered Contact Directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:445
|
#: src/Module/Admin/Site.php:399
|
||||||
msgid "Performance"
|
msgid "Performance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:446
|
#: src/Module/Admin/Site.php:400
|
||||||
msgid "Worker"
|
msgid "Worker"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:447
|
#: src/Module/Admin/Site.php:401
|
||||||
msgid "Message Relay"
|
msgid "Message Relay"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:448
|
#: src/Module/Admin/Site.php:402
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use the command \"console relay\" in the command line to add or remove "
|
"Use the command \"console relay\" in the command line to add or remove "
|
||||||
"relays."
|
"relays."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:449
|
#: src/Module/Admin/Site.php:403
|
||||||
msgid "The system is not subscribed to any relays at the moment."
|
msgid "The system is not subscribed to any relays at the moment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:450
|
#: src/Module/Admin/Site.php:404
|
||||||
msgid "The system is currently subscribed to the following relays:"
|
msgid "The system is currently subscribed to the following relays:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:452
|
#: src/Module/Admin/Site.php:406
|
||||||
msgid "Relocate Node"
|
msgid "Relocate Node"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:453
|
#: src/Module/Admin/Site.php:407
|
||||||
msgid ""
|
msgid ""
|
||||||
"Relocating your node enables you to change the DNS domain of this node and "
|
"Relocating your node enables you to change the DNS domain of this node and "
|
||||||
"keep all the existing users and posts. This process takes a while and can "
|
"keep all the existing users and posts. This process takes a while and can "
|
||||||
"only be started from the relocate console command like this:"
|
"only be started from the relocate console command like this:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:454
|
#: src/Module/Admin/Site.php:408
|
||||||
msgid "(Friendica directory)# bin/console relocate https://newdomain.com"
|
msgid "(Friendica directory)# bin/console relocate https://newdomain.com"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:458
|
#: src/Module/Admin/Site.php:412
|
||||||
msgid "Site name"
|
msgid "Site name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:459
|
#: src/Module/Admin/Site.php:413
|
||||||
msgid "Sender Email"
|
msgid "Sender Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:459
|
#: src/Module/Admin/Site.php:413
|
||||||
msgid ""
|
msgid ""
|
||||||
"The email address your server shall use to send notification emails from."
|
"The email address your server shall use to send notification emails from."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:460
|
#: src/Module/Admin/Site.php:414
|
||||||
msgid "Name of the system actor"
|
msgid "Name of the system actor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:460
|
#: src/Module/Admin/Site.php:414
|
||||||
msgid ""
|
msgid ""
|
||||||
"Name of the internal system account that is used to perform ActivityPub "
|
"Name of the internal system account that is used to perform ActivityPub "
|
||||||
"requests. This must be an unused username. If set, this can't be changed "
|
"requests. This must be an unused username. If set, this can't be changed "
|
||||||
"again."
|
"again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:461
|
#: src/Module/Admin/Site.php:415
|
||||||
msgid "Banner/Logo"
|
msgid "Banner/Logo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:462
|
#: src/Module/Admin/Site.php:416
|
||||||
msgid "Email Banner/Logo"
|
msgid "Email Banner/Logo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:463
|
#: src/Module/Admin/Site.php:417
|
||||||
msgid "Shortcut icon"
|
msgid "Shortcut icon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:463
|
#: src/Module/Admin/Site.php:417
|
||||||
msgid "Link to an icon that will be used for browsers."
|
msgid "Link to an icon that will be used for browsers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:464
|
#: src/Module/Admin/Site.php:418
|
||||||
msgid "Touch icon"
|
msgid "Touch icon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:464
|
#: src/Module/Admin/Site.php:418
|
||||||
msgid "Link to an icon that will be used for tablets and mobiles."
|
msgid "Link to an icon that will be used for tablets and mobiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:465
|
#: src/Module/Admin/Site.php:419
|
||||||
msgid "Additional Info"
|
msgid "Additional Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:465
|
#: src/Module/Admin/Site.php:419
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"For public servers: you can add additional information here that will be "
|
"For public servers: you can add additional information here that will be "
|
||||||
"listed at %s/servers."
|
"listed at %s/servers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:466
|
#: src/Module/Admin/Site.php:420
|
||||||
msgid "System language"
|
msgid "System language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:467
|
#: src/Module/Admin/Site.php:421
|
||||||
msgid "System theme"
|
msgid "System theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:467
|
#: src/Module/Admin/Site.php:421
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Default system theme - may be over-ridden by user profiles - <a href=\"%s\" "
|
"Default system theme - may be over-ridden by user profiles - <a href=\"%s\" "
|
||||||
"id=\"cnftheme\">Change default theme settings</a>"
|
"id=\"cnftheme\">Change default theme settings</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:468
|
#: src/Module/Admin/Site.php:422
|
||||||
msgid "Mobile system theme"
|
msgid "Mobile system theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:468
|
#: src/Module/Admin/Site.php:422
|
||||||
msgid "Theme for mobile devices"
|
msgid "Theme for mobile devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:469 src/Module/Install.php:232
|
#: src/Module/Admin/Site.php:423
|
||||||
msgid "SSL link policy"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:469 src/Module/Install.php:234
|
|
||||||
msgid "Determines whether generated links should be forced to use SSL"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:470
|
|
||||||
msgid "Force SSL"
|
msgid "Force SSL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:470
|
#: src/Module/Admin/Site.php:423
|
||||||
msgid ""
|
msgid ""
|
||||||
"Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
|
"Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
|
||||||
"to endless loops."
|
"to endless loops."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:471
|
#: src/Module/Admin/Site.php:424
|
||||||
msgid "Show help entry from navigation menu"
|
msgid "Show help entry from navigation menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:471
|
#: src/Module/Admin/Site.php:424
|
||||||
msgid ""
|
msgid ""
|
||||||
"Displays the menu entry for the Help pages from the navigation menu. It is "
|
"Displays the menu entry for the Help pages from the navigation menu. It is "
|
||||||
"always accessible by calling /help directly."
|
"always accessible by calling /help directly."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:472
|
#: src/Module/Admin/Site.php:425
|
||||||
msgid "Single user instance"
|
msgid "Single user instance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:472
|
#: src/Module/Admin/Site.php:425
|
||||||
msgid "Make this instance multi-user or single-user for the named user"
|
msgid "Make this instance multi-user or single-user for the named user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:474
|
#: src/Module/Admin/Site.php:427
|
||||||
msgid "Maximum image size"
|
msgid "Maximum image size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:474
|
#: src/Module/Admin/Site.php:427
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Maximum size in bytes of uploaded images. Default is 0, which means no "
|
"Maximum size in bytes of uploaded images. Default is 0, which means no "
|
||||||
|
|
@ -4306,192 +4286,192 @@ msgid ""
|
||||||
"to %s (%s byte)"
|
"to %s (%s byte)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:478
|
#: src/Module/Admin/Site.php:431
|
||||||
msgid "Maximum image length"
|
msgid "Maximum image length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:478
|
#: src/Module/Admin/Site.php:431
|
||||||
msgid ""
|
msgid ""
|
||||||
"Maximum length in pixels of the longest side of uploaded images. Default is "
|
"Maximum length in pixels of the longest side of uploaded images. Default is "
|
||||||
"-1, which means no limits."
|
"-1, which means no limits."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:479
|
#: src/Module/Admin/Site.php:432
|
||||||
msgid "JPEG image quality"
|
msgid "JPEG image quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:479
|
#: src/Module/Admin/Site.php:432
|
||||||
msgid ""
|
msgid ""
|
||||||
"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
|
"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
|
||||||
"100, which is full quality."
|
"100, which is full quality."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:481
|
#: src/Module/Admin/Site.php:434
|
||||||
msgid "Register policy"
|
msgid "Register policy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:482
|
#: src/Module/Admin/Site.php:435
|
||||||
msgid "Maximum Daily Registrations"
|
msgid "Maximum Daily Registrations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:482
|
#: src/Module/Admin/Site.php:435
|
||||||
msgid ""
|
msgid ""
|
||||||
"If registration is permitted above, this sets the maximum number of new user "
|
"If registration is permitted above, this sets the maximum number of new user "
|
||||||
"registrations to accept per day. If register is set to closed, this setting "
|
"registrations to accept per day. If register is set to closed, this setting "
|
||||||
"has no effect."
|
"has no effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:483
|
#: src/Module/Admin/Site.php:436
|
||||||
msgid "Register text"
|
msgid "Register text"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:483
|
#: src/Module/Admin/Site.php:436
|
||||||
msgid ""
|
msgid ""
|
||||||
"Will be displayed prominently on the registration page. You can use BBCode "
|
"Will be displayed prominently on the registration page. You can use BBCode "
|
||||||
"here."
|
"here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:484
|
#: src/Module/Admin/Site.php:437
|
||||||
msgid "Forbidden Nicknames"
|
msgid "Forbidden Nicknames"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:484
|
#: src/Module/Admin/Site.php:437
|
||||||
msgid ""
|
msgid ""
|
||||||
"Comma separated list of nicknames that are forbidden from registration. "
|
"Comma separated list of nicknames that are forbidden from registration. "
|
||||||
"Preset is a list of role names according RFC 2142."
|
"Preset is a list of role names according RFC 2142."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:485
|
#: src/Module/Admin/Site.php:438
|
||||||
msgid "Accounts abandoned after x days"
|
msgid "Accounts abandoned after x days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:485
|
#: src/Module/Admin/Site.php:438
|
||||||
msgid ""
|
msgid ""
|
||||||
"Will not waste system resources polling external sites for abandonded "
|
"Will not waste system resources polling external sites for abandonded "
|
||||||
"accounts. Enter 0 for no time limit."
|
"accounts. Enter 0 for no time limit."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:486
|
#: src/Module/Admin/Site.php:439
|
||||||
msgid "Allowed friend domains"
|
msgid "Allowed friend domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:486
|
#: src/Module/Admin/Site.php:439
|
||||||
msgid ""
|
msgid ""
|
||||||
"Comma separated list of domains which are allowed to establish friendships "
|
"Comma separated list of domains which are allowed to establish friendships "
|
||||||
"with this site. Wildcards are accepted. Empty to allow any domains"
|
"with this site. Wildcards are accepted. Empty to allow any domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:487
|
#: src/Module/Admin/Site.php:440
|
||||||
msgid "Allowed email domains"
|
msgid "Allowed email domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:487
|
#: src/Module/Admin/Site.php:440
|
||||||
msgid ""
|
msgid ""
|
||||||
"Comma separated list of domains which are allowed in email addresses for "
|
"Comma separated list of domains which are allowed in email addresses for "
|
||||||
"registrations to this site. Wildcards are accepted. Empty to allow any "
|
"registrations to this site. Wildcards are accepted. Empty to allow any "
|
||||||
"domains"
|
"domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:488
|
#: src/Module/Admin/Site.php:441
|
||||||
msgid "No OEmbed rich content"
|
msgid "No OEmbed rich content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:488
|
#: src/Module/Admin/Site.php:441
|
||||||
msgid ""
|
msgid ""
|
||||||
"Don't show the rich content (e.g. embedded PDF), except from the domains "
|
"Don't show the rich content (e.g. embedded PDF), except from the domains "
|
||||||
"listed below."
|
"listed below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:489
|
#: src/Module/Admin/Site.php:442
|
||||||
msgid "Trusted third-party domains"
|
msgid "Trusted third-party domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:489
|
#: src/Module/Admin/Site.php:442
|
||||||
msgid ""
|
msgid ""
|
||||||
"Comma separated list of domains from which content is allowed to be embedded "
|
"Comma separated list of domains from which content is allowed to be embedded "
|
||||||
"in posts like with OEmbed. All sub-domains of the listed domains are allowed "
|
"in posts like with OEmbed. All sub-domains of the listed domains are allowed "
|
||||||
"as well."
|
"as well."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:490
|
#: src/Module/Admin/Site.php:443
|
||||||
msgid "Block public"
|
msgid "Block public"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:490
|
#: src/Module/Admin/Site.php:443
|
||||||
msgid ""
|
msgid ""
|
||||||
"Check to block public access to all otherwise public personal pages on this "
|
"Check to block public access to all otherwise public personal pages on this "
|
||||||
"site unless you are currently logged in."
|
"site unless you are currently logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:491
|
#: src/Module/Admin/Site.php:444
|
||||||
msgid "Force publish"
|
msgid "Force publish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:491
|
#: src/Module/Admin/Site.php:444
|
||||||
msgid ""
|
msgid ""
|
||||||
"Check to force all profiles on this site to be listed in the site directory."
|
"Check to force all profiles on this site to be listed in the site directory."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:491
|
#: src/Module/Admin/Site.php:444
|
||||||
msgid "Enabling this may violate privacy laws like the GDPR"
|
msgid "Enabling this may violate privacy laws like the GDPR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:492
|
#: src/Module/Admin/Site.php:445
|
||||||
msgid "Global directory URL"
|
msgid "Global directory URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:492
|
#: src/Module/Admin/Site.php:445
|
||||||
msgid ""
|
msgid ""
|
||||||
"URL to the global directory. If this is not set, the global directory is "
|
"URL to the global directory. If this is not set, the global directory is "
|
||||||
"completely unavailable to the application."
|
"completely unavailable to the application."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:493
|
#: src/Module/Admin/Site.php:446
|
||||||
msgid "Private posts by default for new users"
|
msgid "Private posts by default for new users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:493
|
#: src/Module/Admin/Site.php:446
|
||||||
msgid ""
|
msgid ""
|
||||||
"Set default post permissions for all new members to the default privacy "
|
"Set default post permissions for all new members to the default privacy "
|
||||||
"group rather than public."
|
"group rather than public."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:494
|
#: src/Module/Admin/Site.php:447
|
||||||
msgid "Don't include post content in email notifications"
|
msgid "Don't include post content in email notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:494
|
#: src/Module/Admin/Site.php:447
|
||||||
msgid ""
|
msgid ""
|
||||||
"Don't include the content of a post/comment/private message/etc. in the "
|
"Don't include the content of a post/comment/private message/etc. in the "
|
||||||
"email notifications that are sent out from this site, as a privacy measure."
|
"email notifications that are sent out from this site, as a privacy measure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:495
|
#: src/Module/Admin/Site.php:448
|
||||||
msgid "Disallow public access to addons listed in the apps menu."
|
msgid "Disallow public access to addons listed in the apps menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:495
|
#: src/Module/Admin/Site.php:448
|
||||||
msgid ""
|
msgid ""
|
||||||
"Checking this box will restrict addons listed in the apps menu to members "
|
"Checking this box will restrict addons listed in the apps menu to members "
|
||||||
"only."
|
"only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:496
|
#: src/Module/Admin/Site.php:449
|
||||||
msgid "Don't embed private images in posts"
|
msgid "Don't embed private images in posts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:496
|
#: src/Module/Admin/Site.php:449
|
||||||
msgid ""
|
msgid ""
|
||||||
"Don't replace locally-hosted private photos in posts with an embedded copy "
|
"Don't replace locally-hosted private photos in posts with an embedded copy "
|
||||||
"of the image. This means that contacts who receive posts containing private "
|
"of the image. This means that contacts who receive posts containing private "
|
||||||
"photos will have to authenticate and load each image, which may take a while."
|
"photos will have to authenticate and load each image, which may take a while."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:497
|
#: src/Module/Admin/Site.php:450
|
||||||
msgid "Explicit Content"
|
msgid "Explicit Content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:497
|
#: src/Module/Admin/Site.php:450
|
||||||
msgid ""
|
msgid ""
|
||||||
"Set this to announce that your node is used mostly for explicit content that "
|
"Set this to announce that your node is used mostly for explicit content that "
|
||||||
"might not be suited for minors. This information will be published in the "
|
"might not be suited for minors. This information will be published in the "
|
||||||
|
|
@ -4500,267 +4480,267 @@ msgid ""
|
||||||
"will be shown at the user registration page."
|
"will be shown at the user registration page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:498
|
#: src/Module/Admin/Site.php:451
|
||||||
msgid "Proxify external content"
|
msgid "Proxify external content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:498
|
#: src/Module/Admin/Site.php:451
|
||||||
msgid ""
|
msgid ""
|
||||||
"Route external content via the proxy functionality. This is used for example "
|
"Route external content via the proxy functionality. This is used for example "
|
||||||
"for some OEmbed accesses and in some other rare cases."
|
"for some OEmbed accesses and in some other rare cases."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:499
|
#: src/Module/Admin/Site.php:452
|
||||||
msgid "Cache contact avatars"
|
msgid "Cache contact avatars"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:499
|
#: src/Module/Admin/Site.php:452
|
||||||
msgid ""
|
msgid ""
|
||||||
"Locally store the avatar pictures of the contacts. This uses a lot of "
|
"Locally store the avatar pictures of the contacts. This uses a lot of "
|
||||||
"storage space but it increases the performance."
|
"storage space but it increases the performance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:500
|
#: src/Module/Admin/Site.php:453
|
||||||
msgid "Allow Users to set remote_self"
|
msgid "Allow Users to set remote_self"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:500
|
#: src/Module/Admin/Site.php:453
|
||||||
msgid ""
|
msgid ""
|
||||||
"With checking this, every user is allowed to mark every contact as a "
|
"With checking this, every user is allowed to mark every contact as a "
|
||||||
"remote_self in the repair contact dialog. Setting this flag on a contact "
|
"remote_self in the repair contact dialog. Setting this flag on a contact "
|
||||||
"causes mirroring every posting of that contact in the users stream."
|
"causes mirroring every posting of that contact in the users stream."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:501
|
#: src/Module/Admin/Site.php:454
|
||||||
msgid "Enable multiple registrations"
|
msgid "Enable multiple registrations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:501
|
#: src/Module/Admin/Site.php:454
|
||||||
msgid "Enable users to register additional accounts for use as pages."
|
msgid "Enable users to register additional accounts for use as pages."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:502
|
#: src/Module/Admin/Site.php:455
|
||||||
msgid "Enable OpenID"
|
msgid "Enable OpenID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:502
|
#: src/Module/Admin/Site.php:455
|
||||||
msgid "Enable OpenID support for registration and logins."
|
msgid "Enable OpenID support for registration and logins."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:503
|
#: src/Module/Admin/Site.php:456
|
||||||
msgid "Enable Fullname check"
|
msgid "Enable Fullname check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:503
|
#: src/Module/Admin/Site.php:456
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enable check to only allow users to register with a space between the first "
|
"Enable check to only allow users to register with a space between the first "
|
||||||
"name and the last name in their full name."
|
"name and the last name in their full name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:504
|
#: src/Module/Admin/Site.php:457
|
||||||
msgid "Email administrators on new registration"
|
msgid "Email administrators on new registration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:504
|
#: src/Module/Admin/Site.php:457
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled and the system is set to an open registration, an email for each "
|
"If enabled and the system is set to an open registration, an email for each "
|
||||||
"new registration is sent to the administrators."
|
"new registration is sent to the administrators."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:505
|
#: src/Module/Admin/Site.php:458
|
||||||
msgid "Community pages for visitors"
|
msgid "Community pages for visitors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:505
|
#: src/Module/Admin/Site.php:458
|
||||||
msgid ""
|
msgid ""
|
||||||
"Which community pages should be available for visitors. Local users always "
|
"Which community pages should be available for visitors. Local users always "
|
||||||
"see both pages."
|
"see both pages."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:506
|
#: src/Module/Admin/Site.php:459
|
||||||
msgid "Posts per user on community page"
|
msgid "Posts per user on community page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:506
|
#: src/Module/Admin/Site.php:459
|
||||||
msgid ""
|
msgid ""
|
||||||
"The maximum number of posts per user on the community page. (Not valid for "
|
"The maximum number of posts per user on the community page. (Not valid for "
|
||||||
"\"Global Community\")"
|
"\"Global Community\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:508
|
#: src/Module/Admin/Site.php:461
|
||||||
msgid "Enable Mail support"
|
msgid "Enable Mail support"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:508
|
#: src/Module/Admin/Site.php:461
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enable built-in mail support to poll IMAP folders and to reply via mail."
|
"Enable built-in mail support to poll IMAP folders and to reply via mail."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:509
|
#: src/Module/Admin/Site.php:462
|
||||||
msgid ""
|
msgid ""
|
||||||
"Mail support can't be enabled because the PHP IMAP module is not installed."
|
"Mail support can't be enabled because the PHP IMAP module is not installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:510
|
#: src/Module/Admin/Site.php:463
|
||||||
msgid "Enable OStatus support"
|
msgid "Enable OStatus support"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:510
|
#: src/Module/Admin/Site.php:463
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
|
"Enable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
|
||||||
"communications in OStatus are public."
|
"communications in OStatus are public."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:512
|
#: src/Module/Admin/Site.php:465
|
||||||
msgid ""
|
msgid ""
|
||||||
"Diaspora support can't be enabled because Friendica was installed into a sub "
|
"Diaspora support can't be enabled because Friendica was installed into a sub "
|
||||||
"directory."
|
"directory."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:513
|
#: src/Module/Admin/Site.php:466
|
||||||
msgid "Enable Diaspora support"
|
msgid "Enable Diaspora support"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:513
|
#: src/Module/Admin/Site.php:466
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enable built-in Diaspora network compatibility for communicating with "
|
"Enable built-in Diaspora network compatibility for communicating with "
|
||||||
"diaspora servers."
|
"diaspora servers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:514
|
#: src/Module/Admin/Site.php:467
|
||||||
msgid "Verify SSL"
|
msgid "Verify SSL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:514
|
#: src/Module/Admin/Site.php:467
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you wish, you can turn on strict certificate checking. This will mean you "
|
"If you wish, you can turn on strict certificate checking. This will mean you "
|
||||||
"cannot connect (at all) to self-signed SSL sites."
|
"cannot connect (at all) to self-signed SSL sites."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:515
|
#: src/Module/Admin/Site.php:468
|
||||||
msgid "Proxy user"
|
msgid "Proxy user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:515
|
#: src/Module/Admin/Site.php:468
|
||||||
msgid "User name for the proxy server."
|
msgid "User name for the proxy server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:516
|
#: src/Module/Admin/Site.php:469
|
||||||
msgid "Proxy URL"
|
msgid "Proxy URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:516
|
#: src/Module/Admin/Site.php:469
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to use a proxy server that Friendica should use to connect to "
|
"If you want to use a proxy server that Friendica should use to connect to "
|
||||||
"the network, put the URL of the proxy here."
|
"the network, put the URL of the proxy here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:517
|
#: src/Module/Admin/Site.php:470
|
||||||
msgid "Network timeout"
|
msgid "Network timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:517
|
#: src/Module/Admin/Site.php:470
|
||||||
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
|
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:518
|
#: src/Module/Admin/Site.php:471
|
||||||
msgid "Maximum Load Average"
|
msgid "Maximum Load Average"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:518
|
#: src/Module/Admin/Site.php:471
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Maximum system load before delivery and poll processes are deferred - "
|
"Maximum system load before delivery and poll processes are deferred - "
|
||||||
"default %d."
|
"default %d."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:519
|
#: src/Module/Admin/Site.php:472
|
||||||
msgid "Minimal Memory"
|
msgid "Minimal Memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:519
|
#: src/Module/Admin/Site.php:472
|
||||||
msgid ""
|
msgid ""
|
||||||
"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
|
"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
|
||||||
"default 0 (deactivated)."
|
"default 0 (deactivated)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:520
|
#: src/Module/Admin/Site.php:473
|
||||||
msgid "Periodically optimize tables"
|
msgid "Periodically optimize tables"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:520
|
#: src/Module/Admin/Site.php:473
|
||||||
msgid "Periodically optimize tables like the cache and the workerqueue"
|
msgid "Periodically optimize tables like the cache and the workerqueue"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:522
|
#: src/Module/Admin/Site.php:475
|
||||||
msgid "Discover followers/followings from contacts"
|
msgid "Discover followers/followings from contacts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:522
|
#: src/Module/Admin/Site.php:475
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, contacts are checked for their followers and following contacts."
|
"If enabled, contacts are checked for their followers and following contacts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:523
|
#: src/Module/Admin/Site.php:476
|
||||||
msgid "None - deactivated"
|
msgid "None - deactivated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:524
|
#: src/Module/Admin/Site.php:477
|
||||||
msgid ""
|
msgid ""
|
||||||
"Local contacts - contacts of our local contacts are discovered for their "
|
"Local contacts - contacts of our local contacts are discovered for their "
|
||||||
"followers/followings."
|
"followers/followings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:525
|
#: src/Module/Admin/Site.php:478
|
||||||
msgid ""
|
msgid ""
|
||||||
"Interactors - contacts of our local contacts and contacts who interacted on "
|
"Interactors - contacts of our local contacts and contacts who interacted on "
|
||||||
"locally visible postings are discovered for their followers/followings."
|
"locally visible postings are discovered for their followers/followings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:527
|
#: src/Module/Admin/Site.php:480
|
||||||
msgid "Synchronize the contacts with the directory server"
|
msgid "Synchronize the contacts with the directory server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:527
|
#: src/Module/Admin/Site.php:480
|
||||||
msgid ""
|
msgid ""
|
||||||
"if enabled, the system will check periodically for new contacts on the "
|
"if enabled, the system will check periodically for new contacts on the "
|
||||||
"defined directory server."
|
"defined directory server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:529
|
#: src/Module/Admin/Site.php:482
|
||||||
msgid "Days between requery"
|
msgid "Days between requery"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:529
|
#: src/Module/Admin/Site.php:482
|
||||||
msgid "Number of days after which a server is requeried for his contacts."
|
msgid "Number of days after which a server is requeried for his contacts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:530
|
#: src/Module/Admin/Site.php:483
|
||||||
msgid "Discover contacts from other servers"
|
msgid "Discover contacts from other servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:530
|
#: src/Module/Admin/Site.php:483
|
||||||
msgid ""
|
msgid ""
|
||||||
"Periodically query other servers for contacts. The system queries Friendica, "
|
"Periodically query other servers for contacts. The system queries Friendica, "
|
||||||
"Mastodon and Hubzilla servers."
|
"Mastodon and Hubzilla servers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:531
|
#: src/Module/Admin/Site.php:484
|
||||||
msgid "Search the local directory"
|
msgid "Search the local directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:531
|
#: src/Module/Admin/Site.php:484
|
||||||
msgid ""
|
msgid ""
|
||||||
"Search the local directory instead of the global directory. When searching "
|
"Search the local directory instead of the global directory. When searching "
|
||||||
"locally, every search will be executed on the global directory in the "
|
"locally, every search will be executed on the global directory in the "
|
||||||
"background. This improves the search results when the search is repeated."
|
"background. This improves the search results when the search is repeated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:533
|
#: src/Module/Admin/Site.php:486
|
||||||
msgid "Publish server information"
|
msgid "Publish server information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:533
|
#: src/Module/Admin/Site.php:486
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, general server and usage data will be published. The data "
|
"If enabled, general server and usage data will be published. The data "
|
||||||
"contains the name and version of the server, number of users with public "
|
"contains the name and version of the server, number of users with public "
|
||||||
|
|
@ -4768,50 +4748,50 @@ msgid ""
|
||||||
"href=\"http://the-federation.info/\">the-federation.info</a> for details."
|
"href=\"http://the-federation.info/\">the-federation.info</a> for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:535
|
#: src/Module/Admin/Site.php:488
|
||||||
msgid "Check upstream version"
|
msgid "Check upstream version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:535
|
#: src/Module/Admin/Site.php:488
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enables checking for new Friendica versions at github. If there is a new "
|
"Enables checking for new Friendica versions at github. If there is a new "
|
||||||
"version, you will be informed in the admin panel overview."
|
"version, you will be informed in the admin panel overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:536
|
#: src/Module/Admin/Site.php:489
|
||||||
msgid "Suppress Tags"
|
msgid "Suppress Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:536
|
#: src/Module/Admin/Site.php:489
|
||||||
msgid "Suppress showing a list of hashtags at the end of the posting."
|
msgid "Suppress showing a list of hashtags at the end of the posting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:537
|
#: src/Module/Admin/Site.php:490
|
||||||
msgid "Clean database"
|
msgid "Clean database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:537
|
#: src/Module/Admin/Site.php:490
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove old remote items, orphaned database records and old content from some "
|
"Remove old remote items, orphaned database records and old content from some "
|
||||||
"other helper tables."
|
"other helper tables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:538
|
#: src/Module/Admin/Site.php:491
|
||||||
msgid "Lifespan of remote items"
|
msgid "Lifespan of remote items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:538
|
#: src/Module/Admin/Site.php:491
|
||||||
msgid ""
|
msgid ""
|
||||||
"When the database cleanup is enabled, this defines the days after which "
|
"When the database cleanup is enabled, this defines the days after which "
|
||||||
"remote items will be deleted. Own items, and marked or filed items are "
|
"remote items will be deleted. Own items, and marked or filed items are "
|
||||||
"always kept. 0 disables this behaviour."
|
"always kept. 0 disables this behaviour."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:539
|
#: src/Module/Admin/Site.php:492
|
||||||
msgid "Lifespan of unclaimed items"
|
msgid "Lifespan of unclaimed items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:539
|
#: src/Module/Admin/Site.php:492
|
||||||
msgid ""
|
msgid ""
|
||||||
"When the database cleanup is enabled, this defines the days after which "
|
"When the database cleanup is enabled, this defines the days after which "
|
||||||
"unclaimed remote items (mostly content from the relay) will be deleted. "
|
"unclaimed remote items (mostly content from the relay) will be deleted. "
|
||||||
|
|
@ -4819,144 +4799,144 @@ msgid ""
|
||||||
"items if set to 0."
|
"items if set to 0."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:540
|
#: src/Module/Admin/Site.php:493
|
||||||
msgid "Lifespan of raw conversation data"
|
msgid "Lifespan of raw conversation data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:540
|
#: src/Module/Admin/Site.php:493
|
||||||
msgid ""
|
msgid ""
|
||||||
"The conversation data is used for ActivityPub and OStatus, as well as for "
|
"The conversation data is used for ActivityPub and OStatus, as well as for "
|
||||||
"debug purposes. It should be safe to remove it after 14 days, default is 90 "
|
"debug purposes. It should be safe to remove it after 14 days, default is 90 "
|
||||||
"days."
|
"days."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:541
|
#: src/Module/Admin/Site.php:494
|
||||||
msgid "Maximum numbers of comments per post"
|
msgid "Maximum numbers of comments per post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:541
|
#: src/Module/Admin/Site.php:494
|
||||||
msgid "How much comments should be shown for each post? Default value is 100."
|
msgid "How much comments should be shown for each post? Default value is 100."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:542
|
#: src/Module/Admin/Site.php:495
|
||||||
msgid "Maximum numbers of comments per post on the display page"
|
msgid "Maximum numbers of comments per post on the display page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:542
|
#: src/Module/Admin/Site.php:495
|
||||||
msgid ""
|
msgid ""
|
||||||
"How many comments should be shown on the single view for each post? Default "
|
"How many comments should be shown on the single view for each post? Default "
|
||||||
"value is 1000."
|
"value is 1000."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:543
|
#: src/Module/Admin/Site.php:496
|
||||||
msgid "Temp path"
|
msgid "Temp path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:543
|
#: src/Module/Admin/Site.php:496
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you have a restricted system where the webserver can't access the system "
|
"If you have a restricted system where the webserver can't access the system "
|
||||||
"temp path, enter another path here."
|
"temp path, enter another path here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:544
|
#: src/Module/Admin/Site.php:497
|
||||||
msgid "Only search in tags"
|
msgid "Only search in tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:544
|
#: src/Module/Admin/Site.php:497
|
||||||
msgid "On large systems the text search can slow down the system extremely."
|
msgid "On large systems the text search can slow down the system extremely."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:545
|
#: src/Module/Admin/Site.php:498
|
||||||
msgid "Generate counts per contact group when calculating network count"
|
msgid "Generate counts per contact group when calculating network count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:545
|
#: src/Module/Admin/Site.php:498
|
||||||
msgid ""
|
msgid ""
|
||||||
"On systems with users that heavily use contact groups the query can be very "
|
"On systems with users that heavily use contact groups the query can be very "
|
||||||
"expensive."
|
"expensive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:547
|
#: src/Module/Admin/Site.php:500
|
||||||
msgid "Maximum number of parallel workers"
|
msgid "Maximum number of parallel workers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:547
|
#: src/Module/Admin/Site.php:500
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"On shared hosters set this to %d. On larger systems, values of %d are great. "
|
"On shared hosters set this to %d. On larger systems, values of %d are great. "
|
||||||
"Default value is %d."
|
"Default value is %d."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:548
|
#: src/Module/Admin/Site.php:501
|
||||||
msgid "Enable fastlane"
|
msgid "Enable fastlane"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:548
|
#: src/Module/Admin/Site.php:501
|
||||||
msgid ""
|
msgid ""
|
||||||
"When enabed, the fastlane mechanism starts an additional worker if processes "
|
"When enabed, the fastlane mechanism starts an additional worker if processes "
|
||||||
"with higher priority are blocked by processes of lower priority."
|
"with higher priority are blocked by processes of lower priority."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:550
|
#: src/Module/Admin/Site.php:503
|
||||||
msgid "Direct relay transfer"
|
msgid "Direct relay transfer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:550
|
#: src/Module/Admin/Site.php:503
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enables the direct transfer to other servers without using the relay servers"
|
"Enables the direct transfer to other servers without using the relay servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:551
|
#: src/Module/Admin/Site.php:504
|
||||||
msgid "Relay scope"
|
msgid "Relay scope"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:551
|
#: src/Module/Admin/Site.php:504
|
||||||
msgid ""
|
msgid ""
|
||||||
"Can be \"all\" or \"tags\". \"all\" means that every public post should be "
|
"Can be \"all\" or \"tags\". \"all\" means that every public post should be "
|
||||||
"received. \"tags\" means that only posts with selected tags should be "
|
"received. \"tags\" means that only posts with selected tags should be "
|
||||||
"received."
|
"received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:551 src/Module/Contact/Profile.php:287
|
#: src/Module/Admin/Site.php:504 src/Module/Contact/Profile.php:287
|
||||||
#: src/Module/Settings/TwoFactor/Index.php:125
|
#: src/Module/Settings/TwoFactor/Index.php:125
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:551
|
#: src/Module/Admin/Site.php:504
|
||||||
msgid "all"
|
msgid "all"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:551
|
#: src/Module/Admin/Site.php:504
|
||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:552
|
#: src/Module/Admin/Site.php:505
|
||||||
msgid "Server tags"
|
msgid "Server tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:552
|
#: src/Module/Admin/Site.php:505
|
||||||
msgid "Comma separated list of tags for the \"tags\" subscription."
|
msgid "Comma separated list of tags for the \"tags\" subscription."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:553
|
#: src/Module/Admin/Site.php:506
|
||||||
msgid "Deny Server tags"
|
msgid "Deny Server tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:553
|
#: src/Module/Admin/Site.php:506
|
||||||
msgid "Comma separated list of tags that are rejected."
|
msgid "Comma separated list of tags that are rejected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:554
|
#: src/Module/Admin/Site.php:507
|
||||||
msgid "Allow user tags"
|
msgid "Allow user tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:554
|
#: src/Module/Admin/Site.php:507
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, the tags from the saved searches will used for the \"tags\" "
|
"If enabled, the tags from the saved searches will used for the \"tags\" "
|
||||||
"subscription in addition to the \"relay_server_tags\"."
|
"subscription in addition to the \"relay_server_tags\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:557
|
#: src/Module/Admin/Site.php:510
|
||||||
msgid "Start Relocation"
|
msgid "Start Relocation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -5062,18 +5042,25 @@ msgid ""
|
||||||
"(Some of the errors are possibly inside the logfile.)"
|
"(Some of the errors are possibly inside the logfile.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:103
|
#: src/Module/Admin/Summary.php:102
|
||||||
|
msgid ""
|
||||||
|
"The system.url entry is missing. This is a low level setting and can lead to "
|
||||||
|
"unexpected behavior. Please add a valid entry as soon as possible in the "
|
||||||
|
"config file or per console command!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Module/Admin/Summary.php:107
|
||||||
msgid "The worker was never executed. Please check your database structure!"
|
msgid "The worker was never executed. Please check your database structure!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:105
|
#: src/Module/Admin/Summary.php:109
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The last worker execution was on %s UTC. This is older than one hour. Please "
|
"The last worker execution was on %s UTC. This is older than one hour. Please "
|
||||||
"check your crontab settings."
|
"check your crontab settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:110
|
#: src/Module/Admin/Summary.php:114
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica's configuration now is stored in config/local.config.php, please "
|
"Friendica's configuration now is stored in config/local.config.php, please "
|
||||||
|
|
@ -5082,7 +5069,7 @@ msgid ""
|
||||||
"with the transition."
|
"with the transition."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:114
|
#: src/Module/Admin/Summary.php:118
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica's configuration now is stored in config/local.config.php, please "
|
"Friendica's configuration now is stored in config/local.config.php, please "
|
||||||
|
|
@ -5091,7 +5078,7 @@ msgid ""
|
||||||
"with the transition."
|
"with the transition."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:120
|
#: src/Module/Admin/Summary.php:124
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
|
"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
|
||||||
|
|
@ -5099,50 +5086,50 @@ msgid ""
|
||||||
"href=\"%s\">the installation page</a> for help."
|
"href=\"%s\">the installation page</a> for help."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:138
|
#: src/Module/Admin/Summary.php:142
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The logfile '%s' is not usable. No logging possible (error: '%s')"
|
msgid "The logfile '%s' is not usable. No logging possible (error: '%s')"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:152
|
#: src/Module/Admin/Summary.php:156
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The debug logfile '%s' is not usable. No logging possible (error: '%s')"
|
msgid "The debug logfile '%s' is not usable. No logging possible (error: '%s')"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:168
|
#: src/Module/Admin/Summary.php:172
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica's system.basepath was updated from '%s' to '%s'. Please remove the "
|
"Friendica's system.basepath was updated from '%s' to '%s'. Please remove the "
|
||||||
"system.basepath from your db to avoid differences."
|
"system.basepath from your db to avoid differences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:176
|
#: src/Module/Admin/Summary.php:180
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica's current system.basepath '%s' is wrong and the config file '%s' "
|
"Friendica's current system.basepath '%s' is wrong and the config file '%s' "
|
||||||
"isn't used."
|
"isn't used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:184
|
#: src/Module/Admin/Summary.php:188
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Friendica's current system.basepath '%s' is not equal to the config file "
|
"Friendica's current system.basepath '%s' is not equal to the config file "
|
||||||
"'%s'. Please fix your configuration."
|
"'%s'. Please fix your configuration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:195
|
#: src/Module/Admin/Summary.php:199
|
||||||
msgid "Message queues"
|
msgid "Message queues"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:201
|
#: src/Module/Admin/Summary.php:205
|
||||||
msgid "Server Settings"
|
msgid "Server Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:219
|
#: src/Module/Admin/Summary.php:223
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Summary.php:223
|
#: src/Module/Admin/Summary.php:227
|
||||||
msgid "Active addons"
|
msgid "Active addons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -5528,12 +5515,12 @@ msgstr ""
|
||||||
|
|
||||||
#: src/Module/Calendar/Event/Form.php:209
|
#: src/Module/Calendar/Event/Form.php:209
|
||||||
#: src/Module/Calendar/Event/Form.php:237 src/Module/Debug/Probe.php:59
|
#: src/Module/Calendar/Event/Form.php:237 src/Module/Debug/Probe.php:59
|
||||||
#: src/Module/Install.php:207 src/Module/Install.php:240
|
#: src/Module/Install.php:201 src/Module/Install.php:227
|
||||||
#: src/Module/Install.php:245 src/Module/Install.php:264
|
#: src/Module/Install.php:232 src/Module/Install.php:246
|
||||||
#: src/Module/Install.php:275 src/Module/Install.php:280
|
#: src/Module/Install.php:255 src/Module/Install.php:260
|
||||||
#: src/Module/Install.php:286 src/Module/Install.php:291
|
#: src/Module/Install.php:266 src/Module/Install.php:271
|
||||||
#: src/Module/Install.php:305 src/Module/Install.php:320
|
#: src/Module/Install.php:285 src/Module/Install.php:298
|
||||||
#: src/Module/Install.php:347
|
#: src/Module/Install.php:325
|
||||||
#: src/Module/Moderation/Blocklist/Server/Add.php:136
|
#: src/Module/Moderation/Blocklist/Server/Add.php:136
|
||||||
#: src/Module/Moderation/Blocklist/Server/Add.php:138
|
#: src/Module/Moderation/Blocklist/Server/Add.php:138
|
||||||
#: src/Module/Moderation/Blocklist/Server/Import.php:129
|
#: src/Module/Moderation/Blocklist/Server/Import.php:129
|
||||||
|
|
@ -6846,159 +6833,148 @@ msgstr ""
|
||||||
msgid "Welcome to %s"
|
msgid "Welcome to %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:195
|
#: src/Module/Install.php:189
|
||||||
msgid "Friendica Communications Server - Setup"
|
msgid "Friendica Communications Server - Setup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:206
|
#: src/Module/Install.php:200
|
||||||
msgid "System check"
|
msgid "System check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:208 src/Module/Install.php:265
|
#: src/Module/Install.php:202 src/Module/Install.php:247
|
||||||
#: src/Module/Install.php:348
|
#: src/Module/Install.php:326
|
||||||
msgid "Requirement not satisfied"
|
msgid "Requirement not satisfied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:209
|
#: src/Module/Install.php:203
|
||||||
msgid "Optional requirement not satisfied"
|
msgid "Optional requirement not satisfied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:210
|
#: src/Module/Install.php:204
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:214
|
#: src/Module/Install.php:208
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:215
|
#: src/Module/Install.php:209
|
||||||
msgid "Check again"
|
msgid "Check again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:230
|
#: src/Module/Install.php:222
|
||||||
msgid "Base settings"
|
msgid "Base settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:237
|
#: src/Module/Install.php:224
|
||||||
msgid "Host name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Install.php:239
|
|
||||||
msgid ""
|
|
||||||
"Overwrite this field in case the determinated hostname isn't right, "
|
|
||||||
"otherweise leave it as is."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Module/Install.php:242
|
|
||||||
msgid "Base path to installation"
|
msgid "Base path to installation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:244
|
#: src/Module/Install.php:226
|
||||||
msgid ""
|
msgid ""
|
||||||
"If the system cannot detect the correct path to your installation, enter the "
|
"If the system cannot detect the correct path to your installation, enter the "
|
||||||
"correct path here. This setting should only be set if you are using a "
|
"correct path here. This setting should only be set if you are using a "
|
||||||
"restricted system and symbolic links to your webroot."
|
"restricted system and symbolic links to your webroot."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:247
|
#: src/Module/Install.php:229
|
||||||
msgid "Sub path of the URL"
|
msgid "The Friendica system URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:249
|
#: src/Module/Install.php:231
|
||||||
msgid ""
|
msgid ""
|
||||||
"Overwrite this field in case the sub path determination isn't right, "
|
"Overwrite this field in case the system URL determination isn't right, "
|
||||||
"otherwise leave it as is. Leaving this field blank means the installation is "
|
"otherwise leave it as is."
|
||||||
"at the base URL without sub path."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:260
|
#: src/Module/Install.php:242
|
||||||
msgid "Database connection"
|
msgid "Database connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:261
|
#: src/Module/Install.php:243
|
||||||
msgid ""
|
msgid ""
|
||||||
"In order to install Friendica we need to know how to connect to your "
|
"In order to install Friendica we need to know how to connect to your "
|
||||||
"database."
|
"database."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:262
|
#: src/Module/Install.php:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please contact your hosting provider or site administrator if you have "
|
"Please contact your hosting provider or site administrator if you have "
|
||||||
"questions about these settings."
|
"questions about these settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:263
|
#: src/Module/Install.php:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"The database you specify below should already exist. If it does not, please "
|
"The database you specify below should already exist. If it does not, please "
|
||||||
"create it before continuing."
|
"create it before continuing."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:272
|
#: src/Module/Install.php:252
|
||||||
msgid "Database Server Name"
|
msgid "Database Server Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:277
|
#: src/Module/Install.php:257
|
||||||
msgid "Database Login Name"
|
msgid "Database Login Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:283
|
#: src/Module/Install.php:263
|
||||||
msgid "Database Login Password"
|
msgid "Database Login Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:285
|
#: src/Module/Install.php:265
|
||||||
msgid "For security reasons the password must not be empty"
|
msgid "For security reasons the password must not be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:288
|
#: src/Module/Install.php:268
|
||||||
msgid "Database Name"
|
msgid "Database Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:292 src/Module/Install.php:322
|
#: src/Module/Install.php:272 src/Module/Install.php:300
|
||||||
msgid "Please select a default timezone for your website"
|
msgid "Please select a default timezone for your website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:307
|
#: src/Module/Install.php:287
|
||||||
msgid "Site settings"
|
msgid "Site settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:317
|
#: src/Module/Install.php:295
|
||||||
msgid "Site administrator email address"
|
msgid "Site administrator email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:319
|
#: src/Module/Install.php:297
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your account email address must match this in order to use the web admin "
|
"Your account email address must match this in order to use the web admin "
|
||||||
"panel."
|
"panel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:326
|
#: src/Module/Install.php:304
|
||||||
msgid "System Language:"
|
msgid "System Language:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:328
|
#: src/Module/Install.php:306
|
||||||
msgid ""
|
msgid ""
|
||||||
"Set the default language for your Friendica installation interface and to "
|
"Set the default language for your Friendica installation interface and to "
|
||||||
"send emails."
|
"send emails."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:340
|
#: src/Module/Install.php:318
|
||||||
msgid "Your Friendica site database has been installed."
|
msgid "Your Friendica site database has been installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:350
|
#: src/Module/Install.php:328
|
||||||
msgid "Installation finished"
|
msgid "Installation finished"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:370
|
#: src/Module/Install.php:348
|
||||||
msgid "<h1>What next</h1>"
|
msgid "<h1>What next</h1>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:371
|
#: src/Module/Install.php:349
|
||||||
msgid ""
|
msgid ""
|
||||||
"IMPORTANT: You will need to [manually] setup a scheduled task for the worker."
|
"IMPORTANT: You will need to [manually] setup a scheduled task for the worker."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Install.php:374
|
#: src/Module/Install.php:352
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
|
"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,7 @@
|
||||||
{{include file="field_select.tpl" field=$language}}
|
{{include file="field_select.tpl" field=$language}}
|
||||||
{{include file="field_select.tpl" field=$theme}}
|
{{include file="field_select.tpl" field=$theme}}
|
||||||
{{include file="field_select.tpl" field=$theme_mobile}}
|
{{include file="field_select.tpl" field=$theme_mobile}}
|
||||||
{{include file="field_select.tpl" field=$ssl_policy}}
|
{{include file="field_checkbox.tpl" field=$force_ssl}}
|
||||||
{{if $ssl_policy.2 == 1}}{{include file="field_checkbox.tpl" field=$force_ssl}}{{/if}}
|
|
||||||
{{include file="field_checkbox.tpl" field=$show_help}}
|
{{include file="field_checkbox.tpl" field=$show_help}}
|
||||||
{{include file="field_select.tpl" field=$singleuser}}
|
{{include file="field_select.tpl" field=$singleuser}}
|
||||||
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div>
|
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div>
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,14 @@
|
||||||
{{$info_03}}
|
{{$info_03}}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<form id="install-form" action="{{$baseurl}}/install" method="post">
|
<form id="install-form" action="{{$baseurl}}/index.php?pagename=install" method="post">
|
||||||
|
|
||||||
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
||||||
<input type="hidden" name="pass" value="3" />
|
<input type="hidden" name="pass" value="3" />
|
||||||
|
|
||||||
{{include file="field_select.tpl" field=$ssl_policy}}
|
|
||||||
<br />
|
|
||||||
{{include file="field_input.tpl" field=$hostname}}
|
|
||||||
<br />
|
|
||||||
{{include file="field_input.tpl" field=$basepath}}
|
{{include file="field_input.tpl" field=$basepath}}
|
||||||
<br />
|
<br />
|
||||||
{{include file="field_input.tpl" field=$urlpath}}
|
{{include file="field_input.tpl" field=$system_url}}
|
||||||
|
|
||||||
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
|
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
|
||||||
|
|
||||||
|
|
@ -19,13 +19,11 @@
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<form id="install-form" action="{{$baseurl}}/install" method="post">
|
<form id="install-form" action="{{$baseurl}}/index.php?pagename=install" method="post">
|
||||||
|
|
||||||
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
||||||
<input type="hidden" name="config-hostname" value="{{$hostname}}" />
|
|
||||||
<input type="hidden" name="system-ssl_policy" value="{{$ssl_policy}}" />
|
|
||||||
<input type="hidden" name="system-basepath" value="{{$basepath}}" />
|
<input type="hidden" name="system-basepath" value="{{$basepath}}" />
|
||||||
<input type="hidden" name="system-urlpath" value="{{$urlpath}}" />
|
<input type="hidden" name="system-url" value="{{$system_url}}" />
|
||||||
<input type="hidden" name="pass" value="4" />
|
<input type="hidden" name="pass" value="4" />
|
||||||
|
|
||||||
{{include file="field_input.tpl" field=$dbhost}}
|
{{include file="field_input.tpl" field=$dbhost}}
|
||||||
|
|
@ -4,13 +4,11 @@
|
||||||
<h2>{{$pass}}</h2>
|
<h2>{{$pass}}</h2>
|
||||||
|
|
||||||
|
|
||||||
<form id="install-form" action="{{$baseurl}}/install" method="post">
|
<form id="install-form" action="{{$baseurl}}/index.php?pagename=install" method="post">
|
||||||
|
|
||||||
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
<input type="hidden" name="config-php_path" value="{{$php_path}}" />
|
||||||
<input type="hidden" name="config-hostname" value="{{$hostname}}" />
|
|
||||||
<input type="hidden" name="system-ssl_policy" value="{{$ssl_policy}}" />
|
|
||||||
<input type="hidden" name="system-basepath" value="{{$basepath}}" />
|
<input type="hidden" name="system-basepath" value="{{$basepath}}" />
|
||||||
<input type="hidden" name="system-urlpath" value="{{$urlpath}}" />
|
<input type="hidden" name="system-url" value="{{$system_url}}" />
|
||||||
<input type="hidden" name="database-hostname" value="{{$dbhost}}" />
|
<input type="hidden" name="database-hostname" value="{{$dbhost}}" />
|
||||||
<input type="hidden" name="database-username" value="{{$dbuser}}" />
|
<input type="hidden" name="database-username" value="{{$dbuser}}" />
|
||||||
<input type="hidden" name="database-password" value="{{$dbpass}}" />
|
<input type="hidden" name="database-password" value="{{$dbpass}}" />
|
||||||
|
|
@ -24,14 +24,11 @@ return [
|
||||||
'php_path' => '{{$phpath|escape:'quotes' nofilter}}',
|
'php_path' => '{{$phpath|escape:'quotes' nofilter}}',
|
||||||
'admin_email' => '{{$adminmail|escape:'quotes' nofilter}}',
|
'admin_email' => '{{$adminmail|escape:'quotes' nofilter}}',
|
||||||
'sitename' => 'Friendica Social Network',
|
'sitename' => 'Friendica Social Network',
|
||||||
'hostname' => '{{$hostname|escape:'quotes' nofilter}}',
|
|
||||||
'register_policy' => \Friendica\Module\Register::OPEN,
|
'register_policy' => \Friendica\Module\Register::OPEN,
|
||||||
'max_import_size' => 200000,
|
'max_import_size' => 200000,
|
||||||
],
|
],
|
||||||
'system' => [
|
'system' => [
|
||||||
'urlpath' => '{{$urlpath|escape:'quotes' nofilter}}',
|
'url' => '{{$system_url|escape:'quotes' nofilter}}',
|
||||||
'url' => '{{$baseurl|escape:'quotes' nofilter}}',
|
|
||||||
'ssl_policy' => {{$sslpolicy|escape:'quotes' nofilter}},
|
|
||||||
'basepath' => '{{$basepath|escape:'quotes' nofilter}}',
|
'basepath' => '{{$basepath|escape:'quotes' nofilter}}',
|
||||||
'default_timezone' => '{{$timezone|escape:'quotes' nofilter}}',
|
'default_timezone' => '{{$timezone|escape:'quotes' nofilter}}',
|
||||||
'language' => '{{$language|escape:'quotes' nofilter}}',
|
'language' => '{{$language|escape:'quotes' nofilter}}',
|
||||||
|
|
@ -35,7 +35,7 @@ if (!isset($minimal)) {
|
||||||
$minimal = false;
|
$minimal = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$basepath = DI::baseUrl()->getUrlPath() ? "/" . DI::baseUrl()->getUrlPath() . "/" : "/";
|
$basepath = DI::baseUrl()->getPath() ? "/" . DI::baseUrl()->getPath() . "/" : "/";
|
||||||
$frio = "view/theme/frio";
|
$frio = "view/theme/frio";
|
||||||
$view_mode_class = (DI::mode()->isMobile() || DI::mode()->isMobile()) ? 'mobile-view' : 'desktop-view';
|
$view_mode_class = (DI::mode()->isMobile() || DI::mode()->isMobile()) ? 'mobile-view' : 'desktop-view';
|
||||||
$is_singleuser = DI::config()->get('system', 'singleuser');
|
$is_singleuser = DI::config()->get('system', 'singleuser');
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,7 @@
|
||||||
{{include file="field_select.tpl" field=$language}}
|
{{include file="field_select.tpl" field=$language}}
|
||||||
{{include file="field_select.tpl" field=$theme}}
|
{{include file="field_select.tpl" field=$theme}}
|
||||||
{{include file="field_select.tpl" field=$theme_mobile}}
|
{{include file="field_select.tpl" field=$theme_mobile}}
|
||||||
{{include file="field_select.tpl" field=$ssl_policy}}
|
{{include file="field_checkbox.tpl" field=$force_ssl}}
|
||||||
{{if $ssl_policy.2 == 1}}{{include file="field_checkbox.tpl" field=$force_ssl}}{{/if}}
|
|
||||||
{{include file="field_checkbox.tpl" field=$show_help}}
|
{{include file="field_checkbox.tpl" field=$show_help}}
|
||||||
{{include file="field_select.tpl" field=$singleuser}}
|
{{include file="field_select.tpl" field=$singleuser}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,26 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2010-2023, 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/>.
|
||||||
|
*
|
||||||
|
* Name: smoothly
|
||||||
|
*
|
||||||
|
* BEWARE: currently UNSUPPORTED
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Name: Smoothly
|
* Name: Smoothly
|
||||||
|
|
@ -23,7 +45,7 @@ function smoothly_init(App $a) {
|
||||||
|
|
||||||
$cssFile = null;
|
$cssFile = null;
|
||||||
$ssl_state = false;
|
$ssl_state = false;
|
||||||
$baseurl = DI::baseUrl()->get($ssl_state);
|
$baseurl = DI::baseUrl();
|
||||||
DI::page()['htmlhead'] .= <<< EOT
|
DI::page()['htmlhead'] .= <<< EOT
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -90,7 +112,7 @@ if (! function_exists('_js_in_foot')) {
|
||||||
/** @purpose insert stuff in bottom of page
|
/** @purpose insert stuff in bottom of page
|
||||||
*/
|
*/
|
||||||
$ssl_state = false;
|
$ssl_state = false;
|
||||||
$baseurl = DI::baseUrl()->get($ssl_state);
|
$baseurl = DI::baseUrl();
|
||||||
$bottom['$baseurl'] = $baseurl;
|
$bottom['$baseurl'] = $baseurl;
|
||||||
$tpl = Renderer::getMarkupTemplate('bottom.tpl');
|
$tpl = Renderer::getMarkupTemplate('bottom.tpl');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue