]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Tos.php
Changes:
[friendica.git] / src / Module / Tos.php
index 53ef9492059e59a5e9fec1fab8d6a998a8105888..417f503b8fa20d3a846cfd5e4c73ef6b3d1e6847 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2024, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -27,6 +27,7 @@ use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Content\Text\BBCode;
+use Friendica\Model\User;
 use Friendica\Util\Profiler;
 use Psr\Log\LoggerInterface;
 
@@ -48,15 +49,15 @@ class Tos extends BaseModule
         * be properties of the class, however cannot be set directly as the property
         * cannot depend on a function result when declaring the variable.
         **/
-       public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, IManageConfigValues $config, array $server, array $parameters = [])
+       public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IManageConfigValues $config, array $server, array $parameters = [])
        {
-               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $server, $parameters);
+               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
 
                $this->config  = $config;
 
                $this->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.');
                $this->privacy_distribute = $this->t('This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.');
-               $this->privacy_delete     = $this->t('At any point in time a logged in user can export their account data from the <a href="%1$s/settings/userexport">account settings</a>. If the user wants to delete their account they can do so at <a href="%1$s/removeme">%1$s/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', $this->baseUrl);
+               $this->privacy_delete     = $this->t('At any point in time a logged in user can export their account data from the <a href="%1$s/settings/userexport">account settings</a>. If the user wants to delete their account they can do so at <a href="%1$s/settings/removeme">%1$s/settings/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', $this->baseUrl);
                // In some cases we don't need every single one of the above separate, but all in one block.
                // So here is an array to look over
                $this->privacy_complete = [$this->t('Privacy Statement'), $this->privacy_operate,
@@ -77,20 +78,35 @@ class Tos extends BaseModule
         */
        protected function content(array $request = []): string
        {
-               if (strlen($this->config->get('system', 'singleuser'))) {
+               if ($this->config->get('system', 'singleuser')) {
                        $this->baseUrl->redirect('profile/' . $this->config->get('system', 'singleuser'));
                }
 
                $tpl = Renderer::getMarkupTemplate('tos.tpl');
                if ($this->config->get('system', 'tosdisplay')) {
+                       $lines = trim($this->config->get('system', 'tosrules') ?: '');
+                       if ($lines) {
+                               $rules = "[ol]";
+                               foreach (explode("\n", $lines) as $line) {
+                                       if (trim($line)) {
+                                               $rules .= "\n[*]" . trim($line);
+                                       }
+                               }
+                               $rules .= "\n[/ol]\n";
+                       } else {
+                               $rules = '';
+                       }
+
                        return Renderer::replaceMacros($tpl, [
                                '$title'                => $this->t('Terms of Service'),
-                               '$tostext'              => BBCode::convert($this->config->get('system', 'tostext')),
+                               '$tostext'              => BBCode::convertForUriId(User::getSystemUriId(), $this->config->get('system', 'tostext')),
+                               '$rulestitle'           => $this->t('Rules'),
+                               '$rules'                => BBCode::convertForUriId(User::getSystemUriId(), $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.'),
                                '$privacy_distribute'   => $this->t('This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'),
-                               '$privacy_delete'       => $this->t('At any point in time a logged in user can export their account data from the <a href="%1$s/settings/userexport">account settings</a>. If the user wants to delete their account they can do so at <a href="%1$s/removeme">%1$s/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', $this->baseUrl)
+                               '$privacy_delete'       => $this->t('At any point in time a logged in user can export their account data from the <a href="%1$s/settings/userexport">account settings</a>. If the user wants to delete their account they can do so at <a href="%1$s/settings/removeme">%1$s/settings/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', $this->baseUrl)
                        ]);
                } else {
                        return '';