mirror of
https://github.com/friendica/friendica
synced 2025-05-09 01:44:10 +02:00
Merge pull request #12322 from annando/api-rules
API: Central way to fetch the system rules
This commit is contained in:
commit
22e2578b23
9 changed files with 172 additions and 123 deletions
|
@ -21,6 +21,8 @@
|
|||
|
||||
namespace Friendica\Core;
|
||||
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Content\Text\HTML;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
use Friendica\DI;
|
||||
use Friendica\Module\Response;
|
||||
|
@ -660,4 +662,30 @@ class System
|
|||
// Reaching this point means that the operating system is configured badly.
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the system rules
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getRules(): array
|
||||
{
|
||||
$rules = [];
|
||||
$id = 0;
|
||||
|
||||
if (DI::config()->get('system', 'tosdisplay')) {
|
||||
$rulelist = DI::config()->get('system', 'tosrules') ?: DI::config()->get('system', 'tostext');
|
||||
$html = BBCode::convert($rulelist, false, BBCode::EXTERNAL);
|
||||
|
||||
$msg = HTML::toPlaintext($html, 0, true);
|
||||
foreach (explode("\n", $msg) as $line) {
|
||||
$line = trim($line);
|
||||
if ($line) {
|
||||
$rules[] = ['id' => (string)++$id, 'text' => $line];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,11 +57,13 @@ class Tos extends BaseAdmin
|
|||
|
||||
$displaytos = !empty($_POST['displaytos']);
|
||||
$displayprivstatement = !empty($_POST['displayprivstatement']);
|
||||
$tostext = (!empty($_POST['tostext']) ? strip_tags(trim($_POST['tostext'])) : '');
|
||||
$tostext = (!empty($_POST['tostext']) ? strip_tags(trim($_POST['tostext'])) : '');
|
||||
$tosrules = (!empty($_POST['tosrules']) ? strip_tags(trim($_POST['tosrules'])) : '');
|
||||
|
||||
$this->config->set('system', 'tosdisplay', $displaytos);
|
||||
$this->config->set('system', 'tosprivstatement', $displayprivstatement);
|
||||
$this->config->set('system', 'tostext', $tostext);
|
||||
$this->config->set('system', 'tosrules', $tosrules);
|
||||
|
||||
$this->baseUrl->redirect('admin/tos');
|
||||
}
|
||||
|
@ -79,6 +81,7 @@ class Tos extends BaseAdmin
|
|||
'$preview' => $this->t('Privacy Statement Preview'),
|
||||
'$privtext' => $this->tos->privacy_complete,
|
||||
'$tostext' => ['tostext', $this->t('The Terms of Service'), $this->config->get('system', 'tostext'), $this->t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')],
|
||||
'$tosrules' => ['tosrules', $this->t('The rules'), $this->config->get('system', 'tosrules'), $this->t('Enter your system rules here. Each line represents one rule.')],
|
||||
'$form_security_token' => self::getFormSecurityToken('admin_tos'),
|
||||
'$submit' => $this->t('Save Settings'),
|
||||
]);
|
||||
|
|
|
@ -59,6 +59,6 @@ class Instance extends BaseApi
|
|||
*/
|
||||
protected function rawContent(array $request = [])
|
||||
{
|
||||
System::jsonExit(new InstanceEntity($this->config, $this->baseUrl, $this->database));
|
||||
System::jsonExit(new InstanceEntity($this->config, $this->baseUrl, $this->database, System::getRules()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,21 +38,6 @@ class Rules extends BaseApi
|
|||
*/
|
||||
protected function rawContent(array $request = [])
|
||||
{
|
||||
$rules = [];
|
||||
$id = 0;
|
||||
|
||||
if (DI::config()->get('system', 'tosdisplay')) {
|
||||
$html = BBCode::convert(DI::config()->get('system', 'tostext'), false, BBCode::EXTERNAL);
|
||||
|
||||
$msg = HTML::toPlaintext($html, 0, true);
|
||||
foreach (explode("\n", $msg) as $line) {
|
||||
$line = trim($line);
|
||||
if ($line) {
|
||||
$rules[] = ['id' => (string)++$id, 'text' => $line];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System::jsonExit($rules);
|
||||
System::jsonExit(System::getRules());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,9 +83,22 @@ class Tos extends BaseModule
|
|||
|
||||
$tpl = Renderer::getMarkupTemplate('tos.tpl');
|
||||
if ($this->config->get('system', 'tosdisplay')) {
|
||||
$lines = $this->config->get('system', 'tosrules');
|
||||
if (!empty($lines)) {
|
||||
$rules = "[list=1]";
|
||||
foreach (explode("\n", $lines) as $line) {
|
||||
$rules .= "\n[*]" . $line;
|
||||
}
|
||||
$rules .= "\n[/list]\n";
|
||||
} else {
|
||||
$rules = '';
|
||||
}
|
||||
|
||||
return Renderer::replaceMacros($tpl, [
|
||||
'$title' => $this->t('Terms of Service'),
|
||||
'$tostext' => BBCode::convert($this->config->get('system', 'tostext')),
|
||||
'$rulestitle' => $this->t('Rules'),
|
||||
'$rules' => BBCode::convert($rules),
|
||||
'$displayprivstatement' => $this->config->get('system', 'tosprivstatement'),
|
||||
'$privstatementtitle' => $this->t('Privacy Statement'),
|
||||
'$privacy_operate' => $this->t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'),
|
||||
|
|
|
@ -75,11 +75,12 @@ class Instance extends BaseDataTransferObject
|
|||
* @param IManageConfigValues $config
|
||||
* @param BaseURL $baseUrl
|
||||
* @param Database $database
|
||||
* @param array $rules
|
||||
* @throws HTTPException\InternalServerErrorException
|
||||
* @throws HTTPException\NotFoundException
|
||||
* @throws \ImagickException
|
||||
*/
|
||||
public function __construct(IManageConfigValues $config, BaseURL $baseUrl, Database $database)
|
||||
public function __construct(IManageConfigValues $config, BaseURL $baseUrl, Database $database, array $rules = [])
|
||||
{
|
||||
$register_policy = intval($config->get('config', 'register_policy'));
|
||||
|
||||
|
@ -97,6 +98,7 @@ class Instance extends BaseDataTransferObject
|
|||
$this->approval_required = ($register_policy == Register::APPROVE);
|
||||
$this->invites_enabled = false;
|
||||
$this->contact_account = [];
|
||||
$this->rules = $rules;
|
||||
|
||||
$administrator = User::getFirstAdmin(['nickname']);
|
||||
if ($administrator) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue