]> git.mxchange.org Git - friendica.git/commitdiff
Move admin/users to src/Module
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 21 Apr 2019 23:14:31 +0000 (19:14 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Thu, 2 May 2019 13:52:45 +0000 (09:52 -0400)
- Add Module\Admin\Users class
- Add route for admin/users[/{action}/{uid}]
- Add users admin aside menu entry
- Remove admin_page_users and admin_page_users_post from mod/admin.php

mod/admin.php
src/App/Router.php
src/Module/Admin/Users.php [new file with mode: 0644]
src/Module/BaseAdminModule.php
view/templates/admin/users.tpl
view/theme/frio/templates/admin/users.tpl
view/theme/quattro/templates/admin/users.tpl

index 22fd5adf3e0479832a420281b0ae3daa7cc53583..d6b447c793f88204bdb0e645b728adef6f4b1ce7 100644 (file)
@@ -87,9 +87,6 @@ function admin_post(App $a)
                        case 'site':
                                admin_page_site_post($a);
                                break;
-                       case 'users':
-                               admin_page_users_post($a);
-                               break;
                        case 'themes':
                                if ($a->argc < 2) {
                                        if ($a->isAjax()) {
@@ -228,9 +225,6 @@ function admin_content(App $a)
                        case 'site':
                                $o = admin_page_site($a);
                                break;
-                       case 'users':
-                               $o = admin_page_users($a);
-                               break;
                        case 'themes':
                                $o = admin_page_themes($a);
                                break;
@@ -1337,312 +1331,6 @@ function admin_page_dbsync(App $a)
        return $o;
 }
 
-/**
- * @brief Process data send by Users admin page
- *
- * @param App $a
- * @throws \Friendica\Network\HTTPException\InternalServerErrorException
- */
-function admin_page_users_post(App $a)
-{
-       $pending     = defaults($_POST, 'pending'          , []);
-       $users       = defaults($_POST, 'user'             , []);
-       $nu_name     = defaults($_POST, 'new_user_name'    , '');
-       $nu_nickname = defaults($_POST, 'new_user_nickname', '');
-       $nu_email    = defaults($_POST, 'new_user_email'   , '');
-       $nu_language = Config::get('system', 'language');
-
-       BaseModule::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users');
-
-       if (!($nu_name === "") && !($nu_email === "") && !($nu_nickname === "")) {
-               try {
-                       $result = User::create([
-                               'username' => $nu_name,
-                               'email' => $nu_email,
-                               'nickname' => $nu_nickname,
-                               'verified' => 1,
-                               'language' => $nu_language
-                       ]);
-               } catch (Exception $ex) {
-                       notice($ex->getMessage());
-                       return;
-               }
-
-               $user = $result['user'];
-               $preamble = Strings::deindent(L10n::t('
-                       Dear %1$s,
-                               the administrator of %2$s has set up an account for you.'));
-               $body = Strings::deindent(L10n::t('
-                       The login details are as follows:
-
-                       Site Location:  %1$s
-                       Login Name:             %2$s
-                       Password:               %3$s
-
-                       You may change your password from your account "Settings" page after logging
-                       in.
-
-                       Please take a few moments to review the other account settings on that page.
-
-                       You may also wish to add some basic information to your default profile
-                       ' . "\x28" . 'on the "Profiles" page' . "\x29" . ' so that other people can easily find you.
-
-                       We recommend setting your full name, adding a profile photo,
-                       adding some profile "keywords" ' . "\x28" . 'very useful in making new friends' . "\x29" . ' - and
-                       perhaps what country you live in; if you do not wish to be more specific
-                       than that.
-
-                       We fully respect your right to privacy, and none of these items are necessary.
-                       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'], Config::get('config', 'sitename'));
-               $body = sprintf($body, System::baseUrl(), $user['nickname'], $result['password'], Config::get('config', 'sitename'));
-
-               notification([
-                       'type'     => SYSTEM_EMAIL,
-                       'language' => $user['language'],
-                       'to_name'  => $user['username'],
-                       'to_email' => $user['email'],
-                       'uid'      => $user['uid'],
-                       'subject'  => L10n::t('Registration details for %s', Config::get('config', 'sitename')),
-                       'preamble' => $preamble,
-                       'body'     => $body]);
-       }
-
-       if (!empty($_POST['page_users_block'])) {
-               foreach ($users as $uid) {
-                       q("UPDATE `user` SET `blocked` = 1-`blocked` WHERE `uid` = %s", intval($uid)
-                       );
-               }
-               notice(L10n::tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)));
-       }
-       if (!empty($_POST['page_users_delete'])) {
-               foreach ($users as $uid) {
-                       if (local_user() != $uid) {
-                               User::remove($uid);
-                       } else {
-                               notice(L10n::t('You can\'t remove yourself'));
-                       }
-               }
-               notice(L10n::tt("%s user deleted", "%s users deleted", count($users)));
-       }
-
-       if (!empty($_POST['page_users_approve'])) {
-               require_once "mod/regmod.php";
-               foreach ($pending as $hash) {
-                       user_allow($hash);
-               }
-       }
-       if (!empty($_POST['page_users_deny'])) {
-               require_once "mod/regmod.php";
-               foreach ($pending as $hash) {
-                       user_deny($hash);
-               }
-       }
-       $a->internalRedirect('admin/users');
-       return; // NOTREACHED
-}
-
-/**
- * @brief Admin panel subpage for User management
- *
- * This function generates the admin panel page for user management of the
- * node. It offers functionality to add/block/delete users and offers some
- * statistics about the userbase.
- *
- * The returned string holds the HTML code of the page.
- *
- * @param App $a
- * @return string
- * @throws \Friendica\Network\HTTPException\InternalServerErrorException
- */
-function admin_page_users(App $a)
-{
-       if ($a->argc > 2) {
-               $uid = $a->argv[3];
-               $user = DBA::selectFirst('user', ['username', 'blocked'], ['uid' => $uid]);
-               if (!DBA::isResult($user)) {
-                       notice('User not found' . EOL);
-                       $a->internalRedirect('admin/users');
-                       return ''; // NOTREACHED
-               }
-               switch ($a->argv[2]) {
-                       case "delete":
-                               if (local_user() != $uid) {
-                                       BaseModule::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't');
-                                       // delete user
-                                       User::remove($uid);
-
-                                       notice(L10n::t("User '%s' deleted", $user['username']));
-                               } else {
-                                       notice(L10n::t('You can\'t remove yourself'));
-                               }
-                               break;
-                       case "block":
-                               BaseModule::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't');
-                               q("UPDATE `user` SET `blocked` = %d WHERE `uid` = %s",
-                                       intval(1 - $user['blocked']),
-                                       intval($uid)
-                               );
-                               notice(sprintf(($user['blocked'] ? L10n::t("User '%s' unblocked") : L10n::t("User '%s' blocked")), $user['username']) . EOL);
-                               break;
-               }
-               $a->internalRedirect('admin/users');
-               return ''; // NOTREACHED
-       }
-
-       /* get pending */
-       $pending = Register::getPending();
-
-       $pager = new Pager($a->query_string, 100);
-
-       /* ordering */
-       $valid_orders = [
-               'contact.name',
-               'user.email',
-               'user.register_date',
-               'user.login_date',
-               'lastitem_date',
-               'user.page-flags'
-       ];
-
-       $order = "contact.name";
-       $order_direction = "+";
-       if (!empty($_GET['o'])) {
-               $new_order = $_GET['o'];
-               if ($new_order[0] === "-") {
-                       $order_direction = "-";
-                       $new_order = substr($new_order, 1);
-               }
-
-               if (in_array($new_order, $valid_orders)) {
-                       $order = $new_order;
-               }
-       }
-       $sql_order = "`" . str_replace('.', '`.`', $order) . "`";
-       $sql_order_direction = ($order_direction === "+") ? "ASC" : "DESC";
-
-       $users = q("SELECT `user`.*, `contact`.`name`, `contact`.`url`, `contact`.`micro`, `user`.`account_expired`, `contact`.`last-item` AS `lastitem_date`
-                               FROM `user`
-                               INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self`
-                               WHERE `user`.`verified`
-                               ORDER BY $sql_order $sql_order_direction LIMIT %d, %d", $pager->getStart(), $pager->getItemsPerPage()
-       );
-
-       $adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email')));
-       $_setup_users = function ($e) use ($adminlist) {
-               $page_types = [
-                       User::PAGE_FLAGS_NORMAL    => L10n::t('Normal Account Page'),
-                       User::PAGE_FLAGS_SOAPBOX   => L10n::t('Soapbox Page'),
-                       User::PAGE_FLAGS_COMMUNITY => L10n::t('Public Forum'),
-                       User::PAGE_FLAGS_FREELOVE  => L10n::t('Automatic Friend Page'),
-                       User::PAGE_FLAGS_PRVGROUP  => L10n::t('Private Forum')
-               ];
-               $account_types = [
-                       User::ACCOUNT_TYPE_PERSON       => L10n::t('Personal Page'),
-                       User::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),
-                       User::ACCOUNT_TYPE_NEWS         => L10n::t('News Page'),
-                       User::ACCOUNT_TYPE_COMMUNITY    => L10n::t('Community Forum'),
-                       User::ACCOUNT_TYPE_RELAY        => L10n::t('Relay'),
-               ];
-
-               $e['page_flags_raw'] = $e['page-flags'];
-               $e['page-flags'] = $page_types[$e['page-flags']];
-
-               $e['account_type_raw'] = ($e['page_flags_raw'] == 0) ? $e['account-type'] : -1;
-               $e['account-type'] = ($e['page_flags_raw'] == 0) ? $account_types[$e['account-type']] : "";
-
-               $e['register_date'] = Temporal::getRelativeDate($e['register_date']);
-               $e['login_date'] = Temporal::getRelativeDate($e['login_date']);
-               $e['lastitem_date'] = Temporal::getRelativeDate($e['lastitem_date']);
-               $e['is_admin'] = in_array($e['email'], $adminlist);
-               $e['is_deletable'] = (intval($e['uid']) != local_user());
-               $e['deleted'] = ($e['account_removed'] ? Temporal::getRelativeDate($e['account_expires_on']) : False);
-
-               return $e;
-       };
-
-       $users = array_map($_setup_users, $users);
-
-
-       // Get rid of dashes in key names, Smarty3 can't handle them
-       // and extracting deleted users
-
-       $tmp_users = [];
-       $deleted = [];
-
-       while (count($users)) {
-               $new_user = [];
-               foreach (array_pop($users) as $k => $v) {
-                       $k = str_replace('-', '_', $k);
-                       $new_user[$k] = $v;
-               }
-               if ($new_user['deleted']) {
-                       array_push($deleted, $new_user);
-               } else {
-                       array_push($tmp_users, $new_user);
-               }
-       }
-       //Reversing the two array, and moving $tmp_users to $users
-       array_reverse($deleted);
-       while (count($tmp_users)) {
-               array_push($users, array_pop($tmp_users));
-       }
-
-       $th_users = array_map(null, [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Type')], $valid_orders);
-
-       $t = Renderer::getMarkupTemplate('admin/users.tpl');
-       $o = Renderer::replaceMacros($t, [
-               // strings //
-               '$title' => L10n::t('Administration'),
-               '$page' => L10n::t('Users'),
-               '$submit' => L10n::t('Add User'),
-               '$select_all' => L10n::t('select all'),
-               '$h_pending' => L10n::t('User registrations waiting for confirm'),
-               '$h_deleted' => L10n::t('User waiting for permanent deletion'),
-               '$th_pending' => [L10n::t('Request date'), L10n::t('Name'), L10n::t('Email')],
-               '$no_pending' => L10n::t('No registrations.'),
-               '$pendingnotetext' => L10n::t('Note from the user'),
-               '$approve' => L10n::t('Approve'),
-               '$deny' => L10n::t('Deny'),
-               '$delete' => L10n::t('Delete'),
-               '$block' => L10n::t('Block'),
-               '$blocked' => L10n::t('User blocked'),
-               '$unblock' => L10n::t('Unblock'),
-               '$siteadmin' => L10n::t('Site admin'),
-               '$accountexpired' => L10n::t('Account expired'),
-
-               '$h_users' => L10n::t('Users'),
-               '$h_newuser' => L10n::t('New User'),
-               '$th_deleted' => [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Permanent deletion')],
-               '$th_users' => $th_users,
-               '$order_users' => $order,
-               '$order_direction_users' => $order_direction,
-
-               '$confirm_delete_multi' => L10n::t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'),
-               '$confirm_delete' => L10n::t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'),
-
-               '$form_security_token' => BaseModule::getFormSecurityToken("admin_users"),
-
-               // values //
-               '$baseurl' => $a->getBaseURL(true),
-
-               '$pending' => $pending,
-               'deleted' => $deleted,
-               '$users' => $users,
-               '$newusername' => ['new_user_name', L10n::t("Name"), '', L10n::t("Name of the new user.")],
-               '$newusernickname' => ['new_user_nickname', L10n::t("Nickname"), '', L10n::t("Nickname of the new user.")],
-               '$newuseremail' => ['new_user_email', L10n::t("Email"), '', L10n::t("Email address of the new user."), '', '', 'email'],
-       ]);
-       $o .= $pager->renderFull(DBA::count('user'));
-       return $o;
-}
-
 /**
  * @param array  $themes
  * @param string $th
index 6c152eb8a0d93168a49698a0d1d305bf3d0ae45b..30f48f7c563f1e8673817ae12c82bea9f22fa1aa 100644 (file)
@@ -129,6 +129,8 @@ class Router
                        $collector->addRoute(['GET', 'POST'], '/themes'                 , Module\Admin\Themes\Index::class);
 
                        $collector->addRoute(['GET', 'POST'], '/tos'                    , Module\Admin\Tos::class);
+
+                       $collector->addRoute(['GET', 'POST'], '/users[/{action}/{uid}]' , Module\Admin\Users::class);
                });
        }
 
diff --git a/src/Module/Admin/Users.php b/src/Module/Admin/Users.php
new file mode 100644 (file)
index 0000000..85567fd
--- /dev/null
@@ -0,0 +1,319 @@
+<?php\r
+\r
+namespace Friendica\Module\Admin;\r
+\r
+use Friendica\Content\Pager;\r
+use Friendica\Core\Config;\r
+use Friendica\Core\L10n;\r
+use Friendica\Core\Renderer;\r
+use Friendica\Core\System;\r
+use Friendica\Database\DBA;\r
+use Friendica\Model\Register;\r
+use Friendica\Model\User;\r
+use Friendica\Module\BaseAdminModule;\r
+use Friendica\Util\Strings;\r
+use Friendica\Util\Temporal;\r
+\r
+class Users extends BaseAdminModule\r
+{\r
+       public static function post()\r
+       {\r
+               parent::post();\r
+\r
+               $a = self::getApp();\r
+\r
+               $pending     = defaults($_POST, 'pending'          , []);\r
+               $users       = defaults($_POST, 'user'             , []);\r
+               $nu_name     = defaults($_POST, 'new_user_name'    , '');\r
+               $nu_nickname = defaults($_POST, 'new_user_nickname', '');\r
+               $nu_email    = defaults($_POST, 'new_user_email'   , '');\r
+               $nu_language = Config::get('system', 'language');\r
+\r
+               parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users');\r
+\r
+               if ($nu_name !== '' && $nu_email !== '' && $nu_nickname !== '') {\r
+                       try {\r
+                               $result = User::create([\r
+                                       'username' => $nu_name,\r
+                                       'email' => $nu_email,\r
+                                       'nickname' => $nu_nickname,\r
+                                       'verified' => 1,\r
+                                       'language' => $nu_language\r
+                               ]);\r
+                       } catch (\Exception $ex) {\r
+                               notice($ex->getMessage());\r
+                               return;\r
+                       }\r
+\r
+                       $user = $result['user'];\r
+                       $preamble = Strings::deindent(L10n::t('\r
+                       Dear %1$s,\r
+                               the administrator of %2$s has set up an account for you.'));\r
+                       $body = Strings::deindent(L10n::t('\r
+                       The login details are as follows:\r
+\r
+                       Site Location:  %1$s\r
+                       Login Name:             %2$s\r
+                       Password:               %3$s\r
+\r
+                       You may change your password from your account "Settings" page after logging\r
+                       in.\r
+\r
+                       Please take a few moments to review the other account settings on that page.\r
+\r
+                       You may also wish to add some basic information to your default profile\r
+                       (on the "Profiles" page) so that other people can easily find you.\r
+\r
+                       We recommend setting your full name, adding a profile photo,\r
+                       adding some profile "keywords" (very useful in making new friends) - and\r
+                       perhaps what country you live in; if you do not wish to be more specific\r
+                       than that.\r
+\r
+                       We fully respect your right to privacy, and none of these items are necessary.\r
+                       If you are new and do not know anybody here, they may help\r
+                       you to make some new and interesting friends.\r
+\r
+                       If you ever want to delete your account, you can do so at %1$s/removeme\r
+\r
+                       Thank you and welcome to %4$s.'));\r
+\r
+                       $preamble = sprintf($preamble, $user['username'], Config::get('config', 'sitename'));\r
+                       $body = sprintf($body, System::baseUrl(), $user['nickname'], $result['password'], Config::get('config', 'sitename'));\r
+\r
+                       notification([\r
+                               'type'     => SYSTEM_EMAIL,\r
+                               'language' => $user['language'],\r
+                               'to_name'  => $user['username'],\r
+                               'to_email' => $user['email'],\r
+                               'uid'      => $user['uid'],\r
+                               'subject'  => L10n::t('Registration details for %s', Config::get('config', 'sitename')),\r
+                               'preamble' => $preamble,\r
+                               'body'     => $body]);\r
+               }\r
+\r
+               if (!empty($_POST['page_users_block'])) {\r
+                       DBA::update('user', ['blocked' => 1], ['uid' => $users]);\r
+                       notice(L10n::tt('%s user blocked', '%s users blocked', count($users)));\r
+               }\r
+\r
+               if (!empty($_POST['page_users_unblock'])) {\r
+                       DBA::update('user', ['blocked' => 0], ['uid' => $users]);\r
+                       notice(L10n::tt('%s user unblocked', '%s users unblocked', count($users)));\r
+               }\r
+\r
+               if (!empty($_POST['page_users_delete'])) {\r
+                       foreach ($users as $uid) {\r
+                               if (local_user() != $uid) {\r
+                                       User::remove($uid);\r
+                               } else {\r
+                                       notice(L10n::t('You can\'t remove yourself'));\r
+                               }\r
+                       }\r
+\r
+                       notice(L10n::tt('%s user deleted', '%s users deleted', count($users)));\r
+               }\r
+\r
+               if (!empty($_POST['page_users_approve'])) {\r
+                       require_once 'mod/regmod.php';\r
+                       foreach ($pending as $hash) {\r
+                               user_allow($hash);\r
+                       }\r
+               }\r
+\r
+               if (!empty($_POST['page_users_deny'])) {\r
+                       require_once 'mod/regmod.php';\r
+                       foreach ($pending as $hash) {\r
+                               user_deny($hash);\r
+                       }\r
+               }\r
+\r
+               $a->internalRedirect('admin/users');\r
+       }\r
+\r
+       public static function content()\r
+       {\r
+               parent::content();\r
+\r
+               $a = self::getApp();\r
+\r
+               if ($a->argc > 3) {\r
+                       // @TODO: Replace with parameter from router\r
+                       $action = $a->argv[2];\r
+                       $uid = $a->argv[3];\r
+                       $user = DBA::selectFirst('user', ['username', 'blocked'], ['uid' => $uid]);\r
+                       if (!DBA::isResult($user)) {\r
+                               notice('User not found' . EOL);\r
+                               $a->internalRedirect('admin/users');\r
+                               return ''; // NOTREACHED\r
+                       }\r
+\r
+                       switch ($action) {\r
+                               case 'delete':\r
+                                       if (local_user() != $uid) {\r
+                                               parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't');\r
+                                               // delete user\r
+                                               User::remove($uid);\r
+\r
+                                               notice(L10n::t('User "%s" deleted', $user['username']));\r
+                                       } else {\r
+                                               notice(L10n::t('You can\'t remove yourself'));\r
+                                       }\r
+                                       break;\r
+                               case 'block':\r
+                                       parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't');\r
+                                       DBA::update('user', ['blocked' => 1], ['uid' => $uid]);\r
+                                       notice(L10n::t('User "%s" blocked', $user['username']));\r
+                                       break;\r
+                               case 'unblock':\r
+                                       parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't');\r
+                                       DBA::update('user', ['blocked' => 0], ['uid' => $uid]);\r
+                                       notice(L10n::t('User "%s" unblocked', $user['username']));\r
+                                       break;\r
+                       }\r
+\r
+                       $a->internalRedirect('admin/users');\r
+               }\r
+\r
+               /* get pending */\r
+               $pending = Register::getPending();\r
+\r
+               $pager = new Pager($a->query_string, 100);\r
+\r
+               /* ordering */\r
+               $valid_orders = [\r
+                       'contact.name',\r
+                       'user.email',\r
+                       'user.register_date',\r
+                       'user.login_date',\r
+                       'lastitem_date',\r
+                       'user.page-flags'\r
+               ];\r
+\r
+               $order = 'contact.name';\r
+               $order_direction = '+';\r
+               if (!empty($_GET['o'])) {\r
+                       $new_order = $_GET['o'];\r
+                       if ($new_order[0] === '-') {\r
+                               $order_direction = '-';\r
+                               $new_order = substr($new_order, 1);\r
+                       }\r
+\r
+                       if (in_array($new_order, $valid_orders)) {\r
+                               $order = $new_order;\r
+                       }\r
+               }\r
+               $sql_order = '`' . str_replace('.', '`.`', $order) . '`';\r
+               $sql_order_direction = ($order_direction === '+') ? 'ASC' : 'DESC';\r
+\r
+               $usersStmt = DBA::p("SELECT `user`.*, `contact`.`name`, `contact`.`url`, `contact`.`micro`, `user`.`account_expired`, `contact`.`last-item` AS `lastitem_date`\r
+                               FROM `user`\r
+                               INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self`\r
+                               WHERE `user`.`verified`\r
+                               ORDER BY $sql_order $sql_order_direction LIMIT ?, ?", $pager->getStart(), $pager->getItemsPerPage()\r
+               );\r
+               $users = DBA::toArray($usersStmt);\r
+\r
+               $adminlist = explode(',', str_replace(' ', '', Config::get('config', 'admin_email')));\r
+               $_setup_users = function ($e) use ($adminlist) {\r
+                       $page_types = [\r
+                               User::PAGE_FLAGS_NORMAL    => L10n::t('Normal Account Page'),\r
+                               User::PAGE_FLAGS_SOAPBOX   => L10n::t('Soapbox Page'),\r
+                               User::PAGE_FLAGS_COMMUNITY => L10n::t('Public Forum'),\r
+                               User::PAGE_FLAGS_FREELOVE  => L10n::t('Automatic Friend Page'),\r
+                               User::PAGE_FLAGS_PRVGROUP  => L10n::t('Private Forum')\r
+                       ];\r
+                       $account_types = [\r
+                               User::ACCOUNT_TYPE_PERSON       => L10n::t('Personal Page'),\r
+                               User::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),\r
+                               User::ACCOUNT_TYPE_NEWS         => L10n::t('News Page'),\r
+                               User::ACCOUNT_TYPE_COMMUNITY    => L10n::t('Community Forum'),\r
+                               User::ACCOUNT_TYPE_RELAY        => L10n::t('Relay'),\r
+                       ];\r
+\r
+                       $e['page_flags_raw'] = $e['page-flags'];\r
+                       $e['page-flags'] = $page_types[$e['page-flags']];\r
+\r
+                       $e['account_type_raw'] = ($e['page_flags_raw'] == 0) ? $e['account-type'] : -1;\r
+                       $e['account-type'] = ($e['page_flags_raw'] == 0) ? $account_types[$e['account-type']] : '';\r
+\r
+                       $e['register_date'] = Temporal::getRelativeDate($e['register_date']);\r
+                       $e['login_date'] = Temporal::getRelativeDate($e['login_date']);\r
+                       $e['lastitem_date'] = Temporal::getRelativeDate($e['lastitem_date']);\r
+                       $e['is_admin'] = in_array($e['email'], $adminlist);\r
+                       $e['is_deletable'] = (intval($e['uid']) != local_user());\r
+                       $e['deleted'] = ($e['account_removed'] ? Temporal::getRelativeDate($e['account_expires_on']) : False);\r
+\r
+                       return $e;\r
+               };\r
+\r
+               $tmp_users = array_map($_setup_users, $users);\r
+\r
+               // Get rid of dashes in key names, Smarty3 can't handle them\r
+               // and extracting deleted users\r
+\r
+               $deleted = [];\r
+               $users = [];\r
+               foreach ($tmp_users as $user) {\r
+                       foreach ($user as $k => $v) {\r
+                               $newkey = str_replace('-', '_', $k);\r
+                               $user[$newkey] = $v;\r
+                       }\r
+\r
+                       if ($user['deleted']) {\r
+                               $deleted[] = $user;\r
+                       } else {\r
+                               $users[] = $user;\r
+                       }\r
+               }\r
+\r
+               $th_users = array_map(null, [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Type')], $valid_orders);\r
+\r
+               $t = Renderer::getMarkupTemplate('admin/users.tpl');\r
+               $o = Renderer::replaceMacros($t, [\r
+                       // strings //\r
+                       '$title' => L10n::t('Administration'),\r
+                       '$page' => L10n::t('Users'),\r
+                       '$submit' => L10n::t('Add User'),\r
+                       '$select_all' => L10n::t('select all'),\r
+                       '$h_pending' => L10n::t('User registrations waiting for confirm'),\r
+                       '$h_deleted' => L10n::t('User waiting for permanent deletion'),\r
+                       '$th_pending' => [L10n::t('Request date'), L10n::t('Name'), L10n::t('Email')],\r
+                       '$no_pending' => L10n::t('No registrations.'),\r
+                       '$pendingnotetext' => L10n::t('Note from the user'),\r
+                       '$approve' => L10n::t('Approve'),\r
+                       '$deny' => L10n::t('Deny'),\r
+                       '$delete' => L10n::t('Delete'),\r
+                       '$block' => L10n::t('Block'),\r
+                       '$blocked' => L10n::t('User blocked'),\r
+                       '$unblock' => L10n::t('Unblock'),\r
+                       '$siteadmin' => L10n::t('Site admin'),\r
+                       '$accountexpired' => L10n::t('Account expired'),\r
+\r
+                       '$h_users' => L10n::t('Users'),\r
+                       '$h_newuser' => L10n::t('New User'),\r
+                       '$th_deleted' => [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Permanent deletion')],\r
+                       '$th_users' => $th_users,\r
+                       '$order_users' => $order,\r
+                       '$order_direction_users' => $order_direction,\r
+\r
+                       '$confirm_delete_multi' => L10n::t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'),\r
+                       '$confirm_delete' => L10n::t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'),\r
+\r
+                       '$form_security_token' => parent::getFormSecurityToken('admin_users'),\r
+\r
+                       // values //\r
+                       '$baseurl' => $a->getBaseURL(true),\r
+\r
+                       '$pending' => $pending,\r
+                       'deleted' => $deleted,\r
+                       '$users' => $users,\r
+                       '$newusername' => ['new_user_name', L10n::t('Name'), '', L10n::t('Name of the new user.')],\r
+                       '$newusernickname' => ['new_user_nickname', L10n::t('Nickname'), '', L10n::t('Nickname of the new user.')],\r
+                       '$newuseremail' => ['new_user_email', L10n::t('Email'), '', L10n::t('Email address of the new user.'), '', '', 'email'],\r
+               ]);\r
+\r
+               $o .= $pager->renderFull(DBA::count('user'));\r
+\r
+               return $o;\r
+       }\r
+}
\ No newline at end of file
index 44ef39113fb4983ca5f83090c1fd59dba6c83f51..cf434537ec690c179a056d4f03758b51dce8d563 100644 (file)
@@ -53,6 +53,7 @@ abstract class BaseAdminModule extends BaseModule
                                'federation'   => ['admin/federation'  , L10n::t('Federation Statistics')   , 'federation']\r
                        ]],\r
                        'configuration' => [L10n::t('Configuration'), [\r
+                               'users'        => ['admin/users'       , L10n::t('Users')                   , 'users'],\r
                                'addons'       => ['admin/addons'      , L10n::t('Addons')                  , 'addons'],\r
                                'themes'       => ['admin/themes'      , L10n::t('Themes')                  , 'themes'],\r
                                'tos'          => ['admin/tos'         , L10n::t('Terms of Service')        , 'tos'],\r
index 88feb6136a22148ede0f58f902620df5ea74d8d7..6ca85fe7aaf0740f353b623ec8320a499c491a25 100644 (file)
                                </tbody>
                        </table>
                        <div class='selectall'><a href='#' onclick="return selectall('users_ckbx');">{{$select_all}}</a></div>
-                       <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}" /> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" /></div>
+                       <div class="submit">
+                               <input type="submit" name="page_users_block" value="{{$block}}" />
+                               <input type="submit" name="page_users_unblock" value="{{$unblock}}" />
+                               <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" />
+                       </div>
                {{else}}
                        NO USERS?!?
                {{/if}}
index 273eb81e68c65cabcb84cb7610d531ac07dd3e43..f2d407845b5b8dedd108fcf308acaed3e086caeb 100644 (file)
                                                                        </td>
                                                                        <td class="text-right">
                                                                                {{if $u.is_deletable}}
-                                                                               <a href="{{$baseurl}}/admin/users/block/{{$u.uid}}?t={{$form_security_token}}" class="admin-settings-action-link"title="{{if $u.blocked}}{{$unblock}}{{else}}{{$block}}{{/if}}">
-                                                                                       {{if $u.blocked == 0}}
-                                                                                       <i class="fa fa-ban" aria-hidden="true"></i>
-                                                                                       {{else}}
+                                                                                       {{if $u.blocked}}
+                                                                               <a href="{{$baseurl}}/admin/users/unblock/{{$u.uid}}?t={{$form_security_token}}" class="admin-settings-action-link" title="{{$unblock}}">
                                                                                        <i class="fa fa-circle-o" aria-hidden="true"></i>
-                                                                                       {{/if}}
                                                                                </a>
+                                                                                       {{else}}
+                                                                               <a href="{{$baseurl}}/admin/users/block/{{$u.uid}}?t={{$form_security_token}}" class="admin-settings-action-link" title="{{$block}}">
+                                                                                       <i class="fa fa-ban" aria-hidden="true"></i>
+                                                                               </a>
+                                                                                       {{/if}}
                                                                                <a href="{{$baseurl}}/admin/users/delete/{{$u.uid}}?t={{$form_security_token}}" class="admin-settings-action-link" title="{{$delete}}" onclick="return confirm_delete('{{$confirm_delete}}','{{$u.name}}')">
                                                                                        <i class="fa fa-trash" aria-hidden="true"></i>
                                                                                </a>
                                                        </div>
                                                        <div class="col-xs-9 admin-settings-footer-elements text-right">
                                                                <button type="submit" name="page_users_block" value="1" class="btn btn-warning">
-                                                                       <i class="fa fa-ban" aria-hidden="true"></i> {{$block}} / <i class="fa fa-circle-o" aria-hidden="true"></i> {{$unblock}}
+                                                                       <i class="fa fa-ban" aria-hidden="true"></i> {{$block}}
+                                                               </button>
+                                                               <button type="submit" name="page_users_unblock" value="1" class="btn btn-default">
+                                                                       <i class="fa fa-circle-o" aria-hidden="true"></i> {{$unblock}}
                                                                </button>
                                                                <button type="submit" name="page_users_delete" value="1" class="btn btn-danger" onclick="return confirm_delete('{{$confirm_delete_multi}}')">
                                                                        <i class="fa fa-trash" aria-hidden="true"></i> {{$delete}}
index ddb395db9cdcbff166e6c993822f2420109cbd0d..97875a0771849d96bb3bfa1e176125f9415f339e 100644 (file)
                                </tbody>
                        </table>
                        <div class='selectall'><a href='#' onclick="return selectall('users_ckbx');">{{$select_all}}</a></div>
-                       <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}" /> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" /></div>                                          
+                       <div class="submit">
+                               <input type="submit" name="page_users_block" value="{{$block}}" />
+                               <input type="submit" name="page_users_unblock" value="{{$unblock}}" />
+                               <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" />
+                       </div>
                {{else}}
                        NO USERS?!?
                {{/if}}