]> git.mxchange.org Git - friendica.git/commitdiff
Added /tos module
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Mon, 2 Apr 2018 16:40:30 +0000 (18:40 +0200)
committerTobias Diekershoff <tobias.diekershoff@gmx.net>
Mon, 2 Apr 2018 16:40:30 +0000 (18:40 +0200)
mod/admin.php
mod/friendica.php
mod/register.php
mod/tos.php [new file with mode: 0644]
view/templates/admin/tos.tpl [new file with mode: 0644]
view/templates/tos.tpl [new file with mode: 0644]

index c76cb49e92a07f8e3d58d0b42d562a1bbd2234ab..7dc736ab485a37bfa54c8776ec485971273dcd7c 100644 (file)
@@ -109,6 +109,9 @@ function admin_post(App $a)
                                }
                                $return_path = 'admin/themes/' . $theme;
                                break;
+                       case 'tos':
+                               admin_page_tos_post($a);
+                               break;
                        case 'features':
                                admin_page_features_post($a);
                                break;
@@ -181,7 +184,8 @@ function admin_content(App $a)
                        'users'        => ["admin/users/"       , L10n::t("Users")                , "users"],
                        'addons'       => ["admin/addons/"      , L10n::t("Addons")               , "addons"],
                        'themes'       => ["admin/themes/"      , L10n::t("Themes")               , "themes"],
-                       'features'     => ["admin/features/"    , L10n::t("Additional features")  , "features"] ]],
+                       'features'     => ["admin/features/"    , L10n::t("Additional features")  , "features"],
+                       'tos'          => ["admin/tos/"         , L10n::t("Terms of Service")     , "tos"] ]],
                'database' => [ L10n::t('Database'), [
                        'dbsync'       => ["admin/dbsync/"      , L10n::t('DB updates')           , "dbsync"],
                        'queue'        => ["admin/queue/"       , L10n::t('Inspect Queue')        , "queue"], ]],
@@ -265,6 +269,9 @@ function admin_content(App $a)
                        case 'deleteitem':
                                $o = admin_page_deleteitem($a);
                                break;
+                       case 'tos':
+                               $o = admin_page_tos($a);
+                               break;
                        default:
                                notice(L10n::t("Item not found."));
                }
@@ -281,6 +288,50 @@ function admin_content(App $a)
        }
 }
 
+/**
+ * @brief Subpage to define the display of a Terms of Usage page.
+ *
+ * @param App $a
+ * @return string
+ */
+function admin_page_tos(App $a)
+{
+       $t = get_markup_template('admin/tos.tpl');
+       return replace_macros($t, [
+               '$title' => L10n::t('Administration'),
+               '$page' => L10n::t('Terms of Service'),
+               '$displaytos' => ['displaytos', L10n::t('Display Terms of Service'), Config::get('system', 'tosdisplay'), L10n::t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')],
+               '$displayprivstatement' => ['displayprivstatement', L10n::t('Display Privacy Statement'), Config::get('system','tosprivstatement'), L10n::t('Show some informations regarding the needed information to operate the node according e.g. to <a href="%s" target="_blank">EU-GDPR</a>.','https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')],
+               '$tostext' => ['tostext', L10n::t('The Terms of Usage'), Config::get('system', 'tostext'), L10n::t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')],
+               '$form_security_token' => get_form_security_token("admin_tos"),
+               '$submit' => L10n::t('Save Settings'),
+       ]);
+}
+/**
+ * @brief Process send data from Admin TOS Page
+ *
+ * @param App $a
+ */
+function admin_page_tos_post(App $a)
+{
+       check_form_security_token_redirectOnErr('/admin/tos', 'admin_tos');
+
+       if (!x($_POST, "page_tos")) {
+               return;
+       }
+
+       $displaytos = ((x($_POST, 'displaytos')) ? True : False);
+       $displayprivstatement = ((x($_POST, 'displayprivstatement')) ? True : False);
+       $tostext = ((x($_POST, 'tostext')) ? strip_tags(trim($_POST['tostext'])) : '');
+
+       Config::set('system', 'tosdisplay', $displaytos);
+       Config::set('system', 'tosprivstatement', $displayprivstatement);
+       Config::set('system', 'tostext', $tostext);
+
+       goaway('admin/tos');
+
+       return; // NOTREACHED
+}
 /**
  * @brief Subpage to modify the server wide block list via the admin panel.
  *
@@ -1547,6 +1598,8 @@ function admin_page_users_post(App $a)
                        If you are new and do not know anybody here, they may help
                        you to make some new and interesting friends.
 
+                       If you ever want to delete your account, you can do so at %1$s/removeme
+
                        Thank you and welcome to %4$s.'));
 
                $preamble = sprintf($preamble, $user['username'], $a->config['sitename']);
index 14363ea4dd033623e6b0dced8bf72140ebd4c12e..43e518359842dee094aad794fc567d2a87954bdc 100644 (file)
@@ -116,6 +116,11 @@ function friendica_content(App $a)
        } else {
                $o .= '<p>' . L10n::t('No installed addons/apps') . '</p>' . PHP_EOL;
        }
+       
+       if (Config::get('system', 'tosdisplay'))
+       {
+               $o .= '<p>'.L10n::t('Read about the <a href="%1$s/tos">Terms of Service</a> of this node.', System::baseurl()).'</p>';
+       }
 
        $blocklist = Config::get('system', 'blocklist');
        if (count($blocklist)) {
index 512364dcfd10dc488df8bae62ef5fdc687965306..9de7a0ca3800a7c4d7cdc8d78882cbcc2ca49514 100644 (file)
@@ -284,6 +284,9 @@ function register_content(App $a)
                '$sitename'  => $a->get_hostname(),
                '$importh'   => L10n::t('Import'),
                '$importt'   => L10n::t('Import your profile to this friendica instance'),
+               '$showtoslink' => Config::get('system', 'tosdisplay'),
+               '$tostext'   => L10n::t('Terms of Service'),
+               '$baseurl'   => System::baseurl(),
                '$form_security_token' => get_form_security_token("register")
        ]);
        return $o;
diff --git a/mod/tos.php b/mod/tos.php
new file mode 100644 (file)
index 0000000..4ce8a8f
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+/**
+ * @file mod/tos.php
+ */
+use Friendica\App;
+use Friendica\Core\Addon;
+use Friendica\Core\Config;
+use Friendica\Core\L10n;
+use Friendica\Core\System;
+use Friendica\Module\Login;
+use Friendica\Content\Text\BBCode;
+
+function tos_init(App $a) {
+
+       $ret = [];
+       Addon::callHooks('tos_init',$ret);
+
+       if (strlen(Config::get('system','singleuser'))) {
+               goaway(System::baseUrl()."/profile/" . Config::get('system','singleuser'));
+       }
+
+}
+
+function tos_content(App $a) {
+       $tpl = get_markup_template('tos.tpl');
+       if (Config::get('system', 'tosdisplay'))
+       {
+       return replace_macros($tpl, [
+               '$title' => L10n::t('Terms of Service'),
+               '$tostext' => BBCode::convert(Config::get('system', 'tostext')),
+               '$displayprivstatement' => Config::get('system', 'tosprivstatement'),
+               '$privstatementtitle' => L10n::t('Privacy Statement'),
+               '$privoperate' => L10n::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), a 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 nodes user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'),
+               '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the <a href="%1$s/settings/uexport">account settings</a>. If the user wants to delete their account they can do so at <a href="%1$s">%1$s</a>. The deletion of the account will be permanent.', System::baseurl().'/removeme')
+       ]);
+       } else {
+               return;
+       }
+
+       return $o;
+
+}
diff --git a/view/templates/admin/tos.tpl b/view/templates/admin/tos.tpl
new file mode 100644 (file)
index 0000000..79465e7
--- /dev/null
@@ -0,0 +1,12 @@
+<div id="adminpage">
+       <h1>{{$title}} - {{$page}}</h1>
+  <p>{{$intro}}</p>
+       <form action="{{$baseurl}}/admin/tos" method="post">
+    <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+  {{include file="field_checkbox.tpl" field=$displaytos}}
+  {{include file="field_checkbox.tpl" field=$displayprivstatement}}
+  {{include file="field_textarea.tpl" field=$tostext}}
+       <div class="submit"><input type="submit" name="page_tos" value="{{$submit|escape:'html'}}" /></div>
+       </form>
+</div>
+
diff --git a/view/templates/tos.tpl b/view/templates/tos.tpl
new file mode 100644 (file)
index 0000000..0f3d3c2
--- /dev/null
@@ -0,0 +1,10 @@
+<h1>{{$title}}</h1>
+
+{{$tostext}}
+
+{{if $displayprivstatement}}
+<h2>{{$privstatementtitle}}</h2>
+<p>{{$privoperate}}</p>
+<p>{{$privdelete}}</p>
+{{/if}}
+