diff options
35 files changed, 253 insertions, 73 deletions
diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 39b4769fd..05e7475e7 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -118,7 +118,6 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Request::bad(_t('feedback.user.updated.error', $username), array('c' => 'user', 'a' => 'manage')); } - } } @@ -194,6 +193,23 @@ class FreshRSS_user_Controller extends Minz_ActionController { } } + public function purgeAction() { + if (!FreshRSS_Auth::hasAccess('admin')) { + Minz_Error::error(403); + } + + if (Minz_Request::isPost()) { + $username = Minz_Request::param('username'); + + if (!FreshRSS_UserDAO::exists($username)) { + Minz_Error::error(404); + } + + $feedDAO = FreshRSS_Factory::createFeedDao($username); + $feedDAO->purge(); + } + } + /** * This action displays the user management page. */ @@ -204,18 +220,22 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_View::prependTitle(_t('admin.user.title') . ' · '); + if (Minz_Request::isPost()) { + $action = Minz_Request::param('action'); + if ('delete' === $action) { + $this->deleteAction(); + } elseif ('update' === $action) { + $this->updateAction(); + } elseif ('purge' === $action) { + $this->purgeAction(); + } + } + $this->view->show_email_field = FreshRSS_Context::$system_conf->force_email_validation; $this->view->current_user = Minz_Request::param('u'); - $this->view->nb_articles = 0; - $this->view->size_user = 0; - if ($this->view->current_user) { - // Get information about the current user. - $entryDAO = FreshRSS_Factory::createEntryDao($this->view->current_user); - $this->view->nb_articles = $entryDAO->count(); - - $databaseDAO = FreshRSS_Factory::createDatabaseDAO($this->view->current_user); - $this->view->size_user = $databaseDAO->size(); + foreach (listUsers() as $user) { + $this->view->users[$user] = $this->retrieveUserDetails($user); } } @@ -542,4 +562,30 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Request::forward($redirect_url, true); } + + public function detailsAction() { + if (!FreshRSS_Auth::hasAccess('admin')) { + Minz_Error::error(403); + } + + $username = Minz_Request::param('username'); + if (!FreshRSS_UserDAO::exists($username)) { + Minz_Error::error(404); + } + + $this->view->username = $username; + $this->view->details = $this->retrieveUserDetails($username); + } + + private function retrieveUserDetails($username) { + $feedDAO = FreshRSS_Factory::createFeedDao($username); + $entryDAO = FreshRSS_Factory::createEntryDao($username); + $databaseDAO = FreshRSS_Factory::createDatabaseDAO($username); + + return array( + 'feed_count' => $feedDAO->count(), + 'article_count' => $entryDAO->count(), + 'database_size' => $databaseDAO->size(), + ); + } } diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php index 2bff50d52..417b37773 100644 --- a/app/Models/FeedDAO.php +++ b/app/Models/FeedDAO.php @@ -421,6 +421,29 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable { return $affected; } + public function purge() { + $sql = 'DELETE FROM `_entry`'; + $stm = $this->pdo->prepare($sql); + $this->pdo->beginTransaction(); + if (!($stm && $stm->execute())) { + $info = $stm == null ? $this->pdo->errorInfo() : $stm->errorInfo(); + Minz_Log::error('SQL error truncate: ' . $info[2]); + $this->pdo->rollBack(); + return false; + } + + $sql = 'UPDATE `_feed` SET `cache_nbEntries` = 0, `cache_nbUnreads` = 0'; + $stm = $this->pdo->prepare($sql); + if (!($stm && $stm->execute())) { + $info = $stm == null ? $this->pdo->errorInfo() : $stm->errorInfo(); + Minz_Log::error('SQL error truncate: ' . $info[2]); + $this->pdo->rollBack(); + return false; + } + + $this->pdo->commit(); + } + public static function daoToFeed($listDAO, $catID = null) { $list = array(); @@ -481,4 +504,14 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable { $stm->execute(array(':new_value' => -3600, ':old_value' => -1)); } } + + public function count() { + $sql = 'SELECT COUNT(e.id) AS count FROM `_feed` e'; + $stm = $this->pdo->query($sql); + if ($stm == false) { + return false; + } + $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0); + return isset($res[0]) ? $res[0] : 0; + } } diff --git a/app/Models/FeedDAOSQLite.php b/app/Models/FeedDAOSQLite.php index 0f685867a..397b69941 100644 --- a/app/Models/FeedDAOSQLite.php +++ b/app/Models/FeedDAOSQLite.php @@ -13,5 +13,4 @@ class FreshRSS_FeedDAOSQLite extends FreshRSS_FeedDAO { } return false; } - } diff --git a/app/i18n/cz/admin.php b/app/i18n/cz/admin.php index a2a509560..aa7f5003a 100644 --- a/app/i18n/cz/admin.php +++ b/app/i18n/cz/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s článků (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Vytvořit nového uživatele', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Jazyk', + 'list' => 'User list', // TODO - Translation 'number' => 'Zatím je vytvořen %d účet', 'numbers' => 'Zatím je vytvořeno %d účtů', 'password_form' => 'Heslo<br /><small>(pro přihlášení webovým formulářem)</small>', diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index de1456187..3772c90be 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Spravovat', 'mark_favorite' => 'Označit jako oblíbené', 'mark_read' => 'Označit jako přečtené', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Odstranit', 'see_website' => 'Navštívit WWW stránku', 'submit' => 'Odeslat', diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php index f7ddac2d3..4450ce28f 100644 --- a/app/i18n/de/admin.php +++ b/app/i18n/de/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s Artikel (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Neuen Benutzer erstellen', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Lösche Benutzer', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Sprache', + 'list' => 'User list', // TODO - Translation 'number' => 'Es wurde bis jetzt %d Account erstellt', 'numbers' => 'Es wurden bis jetzt %d Accounts erstellt', 'password_form' => 'Passwort<br /><small>(für die Anmeldemethode per Webformular)</small>', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index 977b0a52f..f095b760f 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Verwalten', 'mark_favorite' => 'Als Favorit markieren', 'mark_read' => 'Als gelesen markieren', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Entfernen', 'see_website' => 'Webseite ansehen', 'submit' => 'Abschicken', diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index c5ab183e8..152c70337 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'article_count' => 'Articles', + 'back_to_manage' => '← Return to user list', 'create' => 'Create new user', + 'database_size' => 'Database size', 'delete_users' => 'Delete user', + 'feed_count' => 'Feeds', 'language' => 'Language', + 'list' => 'User list', 'number' => 'There is %d account created', 'numbers' => 'There are %d accounts created', 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index fc1bd587a..c77950c9f 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Manage', 'mark_favorite' => 'Mark as favourite', 'mark_read' => 'Mark as read', + 'purge' => 'Purge', 'remove' => 'Remove', 'see_website' => 'See website', 'submit' => 'Submit', diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php index 1af3bdcb2..a31702c70 100755 --- a/app/i18n/es/admin.php +++ b/app/i18n/es/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Crear nuevo usuario', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Idioma', + 'list' => 'User list', // TODO - Translation 'number' => 'Hay %d cuenta creada', 'numbers' => 'Hay %d cuentas creadas', 'password_form' => 'Contraseña<br /><small>(para el método de identificación por formulario web)</small>', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 538ddc8fe..5a1b9ae56 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Administrar', 'mark_favorite' => 'Marcar como favorita', 'mark_read' => 'Marcar como leído', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Borrar', 'see_website' => 'Ver web', 'submit' => 'Enviar', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 6002617fc..bdf7ba7b7 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'article_count' => 'Articles', + 'back_to_manage' => '← Revenir à la liste des utilisateurs', 'create' => 'Créer un nouvel utilisateur', + 'database_size' => 'Volumétrie', 'delete_users' => 'Supprimer un utilisateur', + 'feed_count' => 'Flux', 'language' => 'Langue', + 'list' => 'Liste des utilisateurs', 'number' => '%d compte a déjà été créé', 'numbers' => '%d comptes ont déjà été créés', 'password_form' => 'Mot de passe<br /><small>(pour connexion par formulaire)</small>', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index a6875dd05..551b614a3 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Gérer', 'mark_favorite' => 'Mettre en favori', 'mark_read' => 'Marquer comme lu', + 'purge' => 'Purger', 'remove' => 'Supprimer', 'see_website' => 'Voir le site', 'submit' => 'Valider', diff --git a/app/i18n/he/admin.php b/app/i18n/he/admin.php index 759b74e2a..73a040aad 100644 --- a/app/i18n/he/admin.php +++ b/app/i18n/he/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articles (%s)', //TODO - Translation + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', 'create' => 'יצירת משתמש חדש', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'שפה', + 'list' => 'User list', // TODO - Translation 'number' => 'There is %d account created', //TODO - Translation 'numbers' => 'There are %d accounts created', //TODO - Translation 'password_form' => 'סיסמה<br /><small>(לשימוש בטפוס ההרשמה)</small>', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 34e6d77de..3e882e2b2 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'ניהול', 'mark_read' => 'סימון כנקרא', 'mark_favorite' => 'סימון כמועדף', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remove', //TODO - Translation 'see_website' => 'ראו אתר', 'submit' => 'אישור', diff --git a/app/i18n/it/admin.php b/app/i18n/it/admin.php index 8bb6c7bfe..768cb8eb5 100644 --- a/app/i18n/it/admin.php +++ b/app/i18n/it/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articoli (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Crea nuovo utente', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Lingua', + 'list' => 'User list', // TODO - Translation 'number' => ' %d profilo utente creato', 'numbers' => 'Sono presenti %d profili utente', 'password_form' => 'Password<br /><small>(per il login classico)</small>', diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 50d4b4e6c..c74d386df 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Gestisci', 'mark_favorite' => 'Segna come preferito', 'mark_read' => 'Segna come letto', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Rimuovi', 'see_website' => 'Vai al sito', 'submit' => 'Conferma', diff --git a/app/i18n/kr/admin.php b/app/i18n/kr/admin.php index 4a8e425d5..044c8a273 100644 --- a/app/i18n/kr/admin.php +++ b/app/i18n/kr/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s 개의 글 (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => '새 사용자 생성', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => '사용자 삭제', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => '언어', + 'list' => 'User list', // TODO - Translation 'number' => '%d 개의 계정이 생성되었습니다', 'numbers' => '%d 개의 계정이 생성되었습니다', 'password_form' => '암호<br /><small>(웹폼 로그인 방식 사용시)</small>', diff --git a/app/i18n/kr/gen.php b/app/i18n/kr/gen.php index fdc95d431..b6a975606 100644 --- a/app/i18n/kr/gen.php +++ b/app/i18n/kr/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => '관리', 'mark_favorite' => '즐겨찾기에 등록', 'mark_read' => '읽음으로 표시', + 'purge' => 'Purge', // TODO - Translation 'remove' => '삭제', 'see_website' => '웹사이트 열기', 'submit' => '설정 저장', diff --git a/app/i18n/nl/admin.php b/app/i18n/nl/admin.php index 1083c630b..41fa5ff68 100644 --- a/app/i18n/nl/admin.php +++ b/app/i18n/nl/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s artikelen (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Creëer nieuwe gebruiker', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Verwijder gebruiker', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Taal', + 'list' => 'User list', // TODO - Translation 'number' => 'Er is %d accounts gemaakt', 'numbers' => 'Er zijn %d accounts gemaakt', 'password_form' => 'Wachtwoord<br /><small>(voor de Web-formulier loginmethode)</small>', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index fdbb866fc..d276e72a9 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Beheren', 'mark_favorite' => 'Markeer als favoriet', 'mark_read' => 'Markeer als gelezen', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Verwijder', 'see_website' => 'Bekijk website', 'submit' => 'Opslaan', diff --git a/app/i18n/oc/admin.php b/app/i18n/oc/admin.php index 1fb8d5c3a..a0d49faaa 100644 --- a/app/i18n/oc/admin.php +++ b/app/i18n/oc/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Crear un nòu utilizaire', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Suprimir un utilizaire', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Lenga', + 'list' => 'User list', // TODO - Translation 'number' => '%d compte ja creat', 'numbers' => '%d comptes ja creats', 'password_form' => 'Senhal <br /><small>(ex. : per la connexion via formulari)</small>', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index a5bd003c2..a2054a16a 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Gerir', 'mark_favorite' => 'Ajustar als favorits', 'mark_read' => 'Marcar coma legit', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Levar', 'see_website' => 'Veire lo site', 'submit' => 'Mandar', diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php index cef6694c2..6a51ca2e7 100644 --- a/app/i18n/pt-br/admin.php +++ b/app/i18n/pt-br/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s artigos (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Criar novo usuário', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Idioma', + 'list' => 'User list', // TODO - Translation 'number' => 'Há %d conta criada', 'numbers' => 'Há %d contas criadas', 'password_form' => 'Senha<br /><small>(para o login pelo método do formulário)</small>', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index 0e7f367ee..c14499f00 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Gerenciar', 'mark_favorite' => 'Marcar como favorito', 'mark_read' => 'Marcar como lido', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remover', 'see_website' => 'Ver o site', 'submit' => 'Enviar', diff --git a/app/i18n/ru/admin.php b/app/i18n/ru/admin.php index adf091df9..2b93a0099 100644 --- a/app/i18n/ru/admin.php +++ b/app/i18n/ru/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s статей (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Создать нового пользователя', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Язык', + 'list' => 'User list', // TODO - Translation 'number' => 'На данный момент создан %d аккаунт', 'numbers' => 'На данный момент аккаунтов создано: %d', 'password_form' => 'Пароль<br /><small>(для входа через Веб-форму)</small>', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 5200a7005..b8647bec3 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Manage', //TODO - Translation 'mark_favorite' => 'Mark as favourite', //TODO - Translation 'mark_read' => 'Mark as read', //TODO - Translation + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remove', //TODO - Translation 'see_website' => 'See website', //TODO - Translation 'submit' => 'Submit', //TODO - Translation diff --git a/app/i18n/sk/admin.php b/app/i18n/sk/admin.php index 347204f37..209641a70 100644 --- a/app/i18n/sk/admin.php +++ b/app/i18n/sk/admin.php @@ -182,9 +182,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s článkov (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => 'Vytvoriť nového používateľa', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Zmazať používateľa', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => 'Jazyk', + 'list' => 'User list', // TODO - Translation 'number' => 'Je vytvorený používateľ: %d', 'numbers' => 'Je vytvorených používateľov: %d', 'password_form' => 'Heslo<br /><small>(pre spôsob prihlásenia cez webový formulár)</small>', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index 7303ffa9f..b9c1d5155 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -15,6 +15,7 @@ return array( 'manage' => 'Spravovať', 'mark_favorite' => 'Označiť ako obľúbené', 'mark_read' => 'Označiť ako prečítané', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Odstrániť', 'see_website' => 'Zobraziť webovú stránku', 'submit' => 'Poslať', diff --git a/app/i18n/tr/admin.php b/app/i18n/tr/admin.php index 2c7d0fd6d..b399358c4 100644 --- a/app/i18n/tr/admin.php +++ b/app/i18n/tr/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s makale (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation + 'database_size' => 'Database size', // TODO - Translation 'create' => 'Yeni kullanıcı oluştur', + 'feed_count' => 'Feeds', //TODO - Translation 'delete_users' => 'Delete user', //TODO - Translation 'language' => 'Dil', + 'list' => 'User list', // TODO - Translation 'number' => 'Oluşturulmuş %d hesap var', 'numbers' => 'Oluşturulmuş %d hesap var', 'password_form' => 'Şifre<br /><small>(Tarayıcı girişi için)</small>', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index ccc5b9ee6..8f138d482 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => 'Yönet', 'mark_favorite' => 'Favoriye ekle', 'mark_read' => 'Okundu olarak işaretle', + 'purge' => 'Purge', // TODO - Translation 'remove' => 'Sil', 'see_website' => 'Siteyi gör', 'submit' => 'Onayla', diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php index cdc8449a3..a663d31fe 100644 --- a/app/i18n/zh-cn/admin.php +++ b/app/i18n/zh-cn/admin.php @@ -183,9 +183,14 @@ return array( ), 'user' => array( 'articles_and_size' => '%s 篇文章 (%s)', + 'article_count' => 'Articles', // TODO - Translation + 'back_to_manage' => '← Return to user list', // TODO - Translation 'create' => '创建新用户', + 'database_size' => 'Database size', // TODO - Translation 'delete_users' => '删除用户', + 'feed_count' => 'Feeds', //TODO - Translation 'language' => '语言', + 'list' => 'User list', // TODO - Translation 'number' => '已有 %d 个用户', 'numbers' => '已有 %d 个用户', 'password_form' => '密码<br /><small>(用于 Web-form 登录方式)</small>', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 31817260e..5009e9183 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -16,6 +16,7 @@ return array( 'manage' => '管理', 'mark_favorite' => '加入收藏', 'mark_read' => '设为已读', + 'purge' => 'Purge', // TODO - Translation 'remove' => '删除', 'see_website' => '查看网站', 'submit' => '提交', diff --git a/app/views/user/details.phtml b/app/views/user/details.phtml new file mode 100644 index 000000000..2e37be872 --- /dev/null +++ b/app/views/user/details.phtml @@ -0,0 +1,51 @@ +<?php $this->partial('aside_configure'); ?> + +<div class="post"> + <a href="<?= _url('user', 'manage'); ?>"><?= _t('admin.user.back_to_manage'); ?></a> + + <legend><?= $this->username; ?></legend> + <form method="post" action="<?= _url('user', 'manage', 'username', $this->username); ?>"> + <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken(); ?>" /> + + <div class="form-group"> + <label class="group-name"><?= _t('admin.user.feed_count') ?></label> + <div class="group-controls"> + <?= format_number($this->details['feed_count']) ?> + </div> + </div> + + <div class="form-group"> + <label class="group-name"><?= _t('admin.user.article_count') ?></label> + <div class="group-controls"> + <?= format_number($this->details['article_count']) ?> + </div> + </div> + + <div class="form-group"> + <label class="group-name"><?= _t('admin.user.database_size') ?></label> + <div class="group-controls"> + <?= format_bytes($this->details['database_size']) ?> + </div> + </div> + + <div class="form-group"> + <label class="group-name" for="newPasswordPlain"><?= _t('admin.user.password_form') ?></label> + <div class="group-controls"> + <div class="stick"> + <input type="password" id="newPasswordPlain" name="newPasswordPlain" autocomplete="new-password" pattern=".{7,}" <?= cryptAvailable() ? '' : 'disabled="disabled" ' ?>/> + <a class="btn toggle-password" data-toggle="password-<?= $this->username; ?>"><?= _i('key') ?></a> + </div> + <?= _i('help'); ?> <?= _t('admin.user.password_format') ?> + </div> + </div> + + <div class="form-group form-actions"> + <noscript><b><?= _t('gen.js.should_be_activated'); ?></b></noscript> + <div class="group-controls"> + <button type="submit" class="btn btn-important" name="action" value="update"><?= _t('gen.action.update') ?></button> + <button type="submit" class="btn btn-attention confirm" name="action" value="purge"><?= _t('gen.action.purge') ?></button> + <button type="submit" class="btn btn-attention confirm" name="action" value="delete"><?= _t('gen.action.remove') ?></button> + <div> + </div> + </form> +</div> diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml index 93d1008b5..e5d5717fa 100644 --- a/app/views/user/manage.phtml +++ b/app/views/user/manage.phtml @@ -57,66 +57,27 @@ </div> </form> - <form method="post" action="<?= _url('user', 'update') ?>"> - <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" /> - <legend><?= _t('admin.user.update_users') ?></legend> - - <div class="form-group"> - <label class="group-name" for="current_user"><?= _t('admin.user.selected') ?></label> - <div class="group-controls"> - <select id="current_user" name="username"> - <option selected="selected"> </option> - <?php foreach (listUsers() as $username) { ?> - <option value="<?= $username ?>"><?= $username ?></option> - <?php } ?> - </select> - </div> - </div> - - <div class="form-group"> - <label class="group-name" for="newPasswordPlain"><?= _t('admin.user.password_form') ?></label> - <div class="group-controls"> - <div class="stick"> - <input type="password" id="newPasswordPlain" name="newPasswordPlain" autocomplete="new-password" pattern=".{7,}" <?= cryptAvailable() ? '' : 'disabled="disabled" ' ?>/> - <a class="btn toggle-password" data-toggle="newPasswordPlain"><?= _i('key') ?></a> - </div> - <?= _i('help') ?> <?= _t('conf.profile.password_format') ?> - <noscript><b><?= _t('gen.js.should_be_activated') ?></b></noscript> - </div> - </div> - - <div class="form-group form-actions"> - <div class="group-controls"> - <button type="submit" class="btn btn-important"><?= _t('gen.action.update') ?></button> - <button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button> - </div> - </div> - </form> - - <form method="post" action="<?= _url('user', 'delete') ?>"> - <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" /> - <legend><?= _t('admin.user.delete_users') ?></legend> - - <div class="form-group"> - <label class="group-name" for="user-list"><?= _t('admin.user.selected') ?></label> - <div class="group-controls"> - <select id="user-list" class="select-change" name="username"> - <option selected="selected"> </option> - <?php foreach (listUsers() as $username) { ?> - <option data-url="<?= _url('user', 'manage', 'u', $username) ?>" <?= $this->current_user === $username ? 'selected="selected"' : '' ?> value="<?= $username ?>"><?= $username ?></option> - <?php } ?> - </select> - - <p><?php echo _t('admin.user.articles_and_size', - format_number($this->nb_articles), - format_bytes($this->size_user)); ?></p> - </div> - </div> - - <div class="form-group form-actions"> - <div class="group-controls"> - <button type="submit" class="btn btn-attention confirm"><?= _t('gen.action.remove') ?></button> - </div> - </div> - </form> + <legend><?= _t('admin.user.list'); ?></legend> + <table id="user-list"> + <thead> + <tr> + <th><?= _t('admin.user.username') ?></th> + <th><?= _t('admin.user.feed_count') ?></th> + <th><?= _t('admin.user.article_count') ?></th> + <th><?= _t('admin.user.database_size') ?></th> + <th> </th> + </tr> + </thead> + <tbody> + <?php foreach ($this->users as $username => $values) : ?> + <tr> + <td><?= $username ?></td> + <td><?= format_number($values['feed_count']) ?></td> + <td><?= format_number($values['article_count']) ?></td> + <td><?= format_bytes($values['database_size']) ?></td> + <td><a href="<?= _url('user', 'details', 'username', $username) ?>">Details</a></td> + </tr> + <?php endforeach ?> + </tbody> + </table> </div> |
