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()) {
case 'site':
$o = admin_page_site($a);
break;
- case 'users':
- $o = admin_page_users($a);
- break;
case 'themes':
$o = admin_page_themes($a);
break;
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
$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);
});
}
--- /dev/null
+<?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
'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
</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}}
</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}}
</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}}