From e24d9c587c0b1478085703a15c233dabfaa3f280 Mon Sep 17 00:00:00 2001 From: Baoshuo Date: Mon, 26 Sep 2022 11:26:17 +0800 Subject: [PATCH] refactor: split group manage page --- web/app/controllers/group.php | 214 +------------------------ web/app/controllers/group_manage.php | 226 +++++++++++++++++++++++++++ web/app/route.php | 2 +- 3 files changed, 235 insertions(+), 207 deletions(-) create mode 100644 web/app/controllers/group_manage.php diff --git a/web/app/controllers/group.php b/web/app/controllers/group.php index f71c23d..b017664 100644 --- a/web/app/controllers/group.php +++ b/web/app/controllers/group.php @@ -12,188 +12,8 @@ } $group_id = $_GET['id']; - $group = queryGroup($group_id); - - if (isSuperUser($myUser)) { - $group_editor = new UOJBlogEditor(); - $group_editor->name = 'group'; - $group_editor->blog_url = null; - $group_editor->cur_data = array( - 'title' => $group['title'], - 'tags' => array(), - 'is_hidden' => $group['is_hidden'] - ); - $group_editor->label_text = array_merge($group_editor->label_text, array( - 'view blog' => '保存小组信息', - 'blog visibility' => '小组可见性' - )); - $group_editor->show_editor = false; - $group_editor->show_tags = false; - - $group_editor->save = function($data) { - global $group_id, $group; - DB::update("update `groups` set title = '".DB::escape($data['title'])."' where id = {$group_id}"); - - if ($data['is_hidden'] != $group['is_hidden'] ) { - DB::update("update `groups` set is_hidden = {$data['is_hidden']} where id = {$group_id}"); - } - }; - $group_editor->runAtServer(); - - $add_new_user_form = new UOJForm('add_new_user'); - $add_new_user_form->addInput('new_username', 'text', '用户名', '', - function ($x) { - global $group_id; - - if (!validateUsername($x)) { - return '用户名不合法'; - } - $user = queryUser($x); - if (!$user) { - return '用户不存在'; - } - - if (queryUserInGroup($group_id, $x)) { - return '该用户已经在小组中'; - } - - return ''; - }, - null - ); - $add_new_user_form->submit_button_config['align'] = 'compressed'; - $add_new_user_form->submit_button_config['text'] = '添加到小组'; - $add_new_user_form->handle = function() { - global $group_id, $myUser; - $username = $_POST['new_username']; - - DB::insert("insert into groups_users (group_id, username) values ({$group_id}, '{$username}')"); - }; - $add_new_user_form->runAtServer(); - - $delete_user_form = new UOJForm('delete_user'); - $delete_user_form->addInput('del_username', 'text', '用户名', '', - function ($x) { - global $group_id; - - if (!validateUsername($x)) { - return '用户名不合法'; - } - if (!queryUserInGroup($group_id, $x)) { - return '该用户不在小组中'; - } - - return ''; - }, - null - ); - $delete_user_form->submit_button_config['align'] = 'compressed'; - $delete_user_form->submit_button_config['text'] = '从小组中删除'; - $delete_user_form->handle = function() { - global $group_id, $myUser; - $username = $_POST['del_username']; - - DB::query("delete from groups_users where username='{$username}' and group_id={$group_id}"); - }; - $delete_user_form->runAtServer(); - - $add_new_assignment_form = new UOJForm('add_new_assignment'); - $add_new_assignment_form->addInput('new_assignment_list_id', 'text', '题单 ID', '', - function ($x) { - global $group_id; - - if (!validateUInt($x)) { - return '题单 ID 不合法'; - } - $list = queryProblemList($x); - if (!$list) { - return '题单不存在'; - } - if ($list['is_hidden'] != 0) { - return '题单是隐藏的'; - } - - if (queryAssignmentByGroupListID($group_id, $x)) { - return '该题单已经在作业中'; - } - - return ''; - }, - null - ); - - $default_ddl = new DateTime(); - $default_ddl->setTime(17, 0, 0); - $default_ddl->add(new DateInterval("P7D")); - - $add_new_assignment_form->addInput('new_assignment_deadline', 'text', '截止时间', $default_ddl->format('Y-m-d H:i'), - function ($x) { - $ddl = DateTime::createFromFormat('Y-m-d H:i', $x); - if (!$ddl) { - return '截止时间格式不正确,请以类似 "2020-10-1 17:00" 的格式输入'; - } - - return ''; - }, - null - ); - - $add_new_assignment_form->submit_button_config['align'] = 'compressed'; - $add_new_assignment_form->submit_button_config['text'] = '添加作业'; - $add_new_assignment_form->handle = function() { - global $group_id, $myUser; - $list_id = $_POST['new_assignment_list_id']; - $ddl = DateTime::createFromFormat('Y-m-d H:i', $_POST['new_assignment_deadline']); - $ddl_str = $ddl->format('Y-m-d H:i:s'); - - DB::insert("insert into assignments (group_id, list_id, create_time, deadline) values ({$group_id}, '{$list_id}', now(), '{$ddl_str}')"); - }; - $add_new_assignment_form->runAtServer(); - - $remove_assignment_form = new UOJForm('remove_assignment'); - $remove_assignment_form->addInput('remove_assignment_list_id', 'text', '题单 ID', '', - function ($x) { - global $group_id; - - if (!validateUInt($x)) { - return '题单 ID 不合法'; - } - if (!queryAssignmentByGroupListID($group_id, $x)) { - return '该题单不在作业中'; - } - - return ''; - }, - null - ); - - $remove_assignment_form->submit_button_config['align'] = 'compressed'; - $remove_assignment_form->submit_button_config['text'] = '删除作业'; - $remove_assignment_form->handle = function() { - global $group_id, $myUser; - $list_id = $_POST['remove_assignment_list_id']; - - DB::query("delete from assignments where list_id='{$list_id}' and group_id={$group_id}"); - }; - $remove_assignment_form->runAtServer(); - - $announcement_form = new UOJForm('announcement_form'); - $announcement_form->addVTextArea('announcement_content', '公告', $group['announcement'], - function ($x) { - return ''; - }, - null - ); - $announcement_form->submit_button_config['align'] = 'compressed'; - $announcement_form->submit_button_config['text'] = '更新公告'; - $announcement_form->handle = function() { - global $group_id, $myUser; - - $content = $_POST['announcement_content']; - $esc_content = DB::escape($content); - DB::query("update groups set announcement = '{$esc_content}' where id = {$group_id}"); - }; - $announcement_form->runAtServer(); + if (!validateUInt($group_id) || !($group = queryGroup($group_id))) { + become404Page(); } ?> @@ -202,6 +22,12 @@

(小组 ID: )

+ + + +
@@ -270,28 +96,4 @@
- -
编辑小组信息
-
- printHTML(); ?> -
- -
编辑小组公告
-
- printHTML(); ?> -
- -
添加用户到小组
-printHTML(); ?> - -
从小组中删除用户
-printHTML(); ?> - -
为小组添加作业
-printHTML(); ?> - -
删除小组的作业
-printHTML(); ?> - - diff --git a/web/app/controllers/group_manage.php b/web/app/controllers/group_manage.php new file mode 100644 index 0000000..3273a9b --- /dev/null +++ b/web/app/controllers/group_manage.php @@ -0,0 +1,226 @@ +name = 'group'; + $group_editor->blog_url = null; + $group_editor->cur_data = array( + 'title' => $group['title'], + 'tags' => array(), + 'is_hidden' => $group['is_hidden'] + ); + $group_editor->label_text = array_merge($group_editor->label_text, array( + 'view blog' => '保存小组信息', + 'blog visibility' => '小组可见性' + )); + $group_editor->show_editor = false; + $group_editor->show_tags = false; + + $group_editor->save = function($data) { + global $group_id, $group; + DB::update("update `groups` set title = '".DB::escape($data['title'])."' where id = {$group_id}"); + + if ($data['is_hidden'] != $group['is_hidden'] ) { + DB::update("update `groups` set is_hidden = {$data['is_hidden']} where id = {$group_id}"); + } + }; + $group_editor->runAtServer(); + + $add_new_user_form = new UOJForm('add_new_user'); + $add_new_user_form->addInput('new_username', 'text', '用户名', '', + function ($x) { + global $group_id; + + if (!validateUsername($x)) { + return '用户名不合法'; + } + $user = queryUser($x); + if (!$user) { + return '用户不存在'; + } + + if (queryUserInGroup($group_id, $x)) { + return '该用户已经在小组中'; + } + + return ''; + }, + null + ); + $add_new_user_form->submit_button_config['align'] = 'compressed'; + $add_new_user_form->submit_button_config['text'] = '添加到小组'; + $add_new_user_form->handle = function() { + global $group_id, $myUser; + $username = $_POST['new_username']; + + DB::insert("insert into groups_users (group_id, username) values ({$group_id}, '{$username}')"); + }; + $add_new_user_form->runAtServer(); + + + $delete_user_form = new UOJForm('delete_user'); + $delete_user_form->addInput('del_username', 'text', '用户名', '', + function ($x) { + global $group_id; + + if (!validateUsername($x)) { + return '用户名不合法'; + } + if (!queryUserInGroup($group_id, $x)) { + return '该用户不在小组中'; + } + + return ''; + }, + null + ); + $delete_user_form->submit_button_config['align'] = 'compressed'; + $delete_user_form->submit_button_config['text'] = '从小组中删除'; + $delete_user_form->handle = function() { + global $group_id, $myUser; + $username = $_POST['del_username']; + + DB::query("delete from groups_users where username='{$username}' and group_id={$group_id}"); + }; + $delete_user_form->runAtServer(); + + $add_new_assignment_form = new UOJForm('add_new_assignment'); + $add_new_assignment_form->addInput('new_assignment_list_id', 'text', '题单 ID', '', + function ($x) { + global $group_id; + + if (!validateUInt($x)) { + return '题单 ID 不合法'; + } + $list = queryProblemList($x); + if (!$list) { + return '题单不存在'; + } + if ($list['is_hidden'] != 0) { + return '题单是隐藏的'; + } + + if (queryAssignmentByGroupListID($group_id, $x)) { + return '该题单已经在作业中'; + } + + return ''; + }, + null + ); + + $default_ddl = new DateTime(); + $default_ddl->setTime(17, 0, 0); + $default_ddl->add(new DateInterval("P7D")); + + $add_new_assignment_form->addInput('new_assignment_deadline', 'text', '截止时间', $default_ddl->format('Y-m-d H:i'), + function ($x) { + $ddl = DateTime::createFromFormat('Y-m-d H:i', $x); + if (!$ddl) { + return '截止时间格式不正确,请以类似 "2020-10-1 17:00" 的格式输入'; + } + + return ''; + }, + null + ); + + + $remove_assignment_form = new UOJForm('remove_assignment'); + $remove_assignment_form->addInput('remove_assignment_list_id', 'text', '题单 ID', '', + function ($x) { + global $group_id; + + if (!validateUInt($x)) { + return '题单 ID 不合法'; + } + if (!queryAssignmentByGroupListID($group_id, $x)) { + return '该题单不在作业中'; + } + + return ''; + }, + null + ); + + $remove_assignment_form->submit_button_config['align'] = 'compressed'; + $remove_assignment_form->submit_button_config['text'] = '删除作业'; + $remove_assignment_form->handle = function() { + global $group_id, $myUser; + $list_id = $_POST['remove_assignment_list_id']; + + DB::query("delete from assignments where list_id='{$list_id}' and group_id={$group_id}"); + }; + $remove_assignment_form->runAtServer(); + + $announcement_form = new UOJForm('announcement_form'); + $announcement_form->addVTextArea('announcement_content', '公告', $group['announcement'], + function ($x) { + return ''; + }, + null + ); + $announcement_form->submit_button_config['text'] = '更新公告'; + $announcement_form->handle = function() { + global $group_id, $myUser; + + $content = $_POST['announcement_content']; + $esc_content = DB::escape($content); + DB::query("update groups set announcement = '{$esc_content}' where id = {$group_id}"); + }; + $announcement_form->runAtServer(); + ?> + + + +

+ (#)管理 +

+ + + +
+ +
编辑小组信息
+
+ printHTML(); ?> +
+ +
编辑小组公告
+printHTML(); ?> + +
添加用户到小组
+printHTML(); ?> + +
从小组中删除用户
+printHTML(); ?> + +
为小组添加作业
+printHTML(); ?> + +
删除小组的作业
+printHTML(); ?> + + diff --git a/web/app/route.php b/web/app/route.php index 1042ab5..74bd405 100644 --- a/web/app/route.php +++ b/web/app/route.php @@ -46,6 +46,7 @@ Route::group([ Route::any('/groups', '/groups.php'); Route::any('/group/{id}', '/group.php'); + Route::any('/group/{id}/manage', '/group_manage.php'); Route::any('/assignment/{id}', '/assignment.php'); @@ -68,7 +69,6 @@ Route::group([ Route::any('/forgot-password', '/forgot_pw.php'); Route::any('/reset-password', '/reset_pw.php'); Route::any('/user/profile/{username}', '/user_info.php'); - Route::any('/user/self_reviews/{username}', '/user_self_reviews.php'); Route::any('/user/modify-profile', '/change_user_info.php'); Route::any('/user/msg', '/user_msg.php'); Route::any('/user/system-msg', '/user_system_msg.php');