## 题目描述 在此处填写题目描述。 ## 输入格式 在此处约定输入数据的格式。 ## 输出格式 在此处说明输入数据的格式要求。 ## 输入输出样例 ### 样例输入 #1 ```text 样例 1 的输入内容 ``` ### 样例输出 #1 ```text 样例 1 的输出内容 ``` ### 样例解释 #1 样例 1 的解释与说明。 ### 样例 #2 见右侧「附件下载」中的 `ex_data2.in/out`。 ## 数据范围与约定 - 对于 $50\%$ 的数据,[满足条件(替换此处)]。 - 对于 $100\%$ 的数据,[满足条件(替换此处)]。 如有,在此处填写其他于题意或数据相关的说明。 EOD; $new_problem_form = new UOJBs4Form('new_problem'); $new_problem_form->handle = function () use ($default_statement) { DB::insert([ "insert into problems", "(title, uploader, is_hidden, submission_requirement, extra_config)", "values", DB::tuple(["New Problem", Auth::id(), 1, "{}", "{}"]) ]); $id = DB::insert_id(); DB::insert([ "insert into problems_contents", "(id, statement, statement_md)", "values", DB::tuple([ $id, HTML::purifier()->purify(HTML::parsedown()->text($default_statement)), $default_statement, ]) ]); dataNewProblem($id); }; $new_problem_form->submit_button_config['align'] = 'right'; $new_problem_form->submit_button_config['class_str'] = 'btn btn-primary'; $new_problem_form->submit_button_config['text'] = UOJLocale::get('problems::add new'); $new_problem_form->submit_button_config['smart_confirm'] = ''; $new_problem_form->runAtServer(); } function getProblemTR($info) { $problem = new UOJProblem($info); $html = HTML::tag_begin('tr', ['class' => 'text-center']); $html .= HTML::tag('td', ['class' => $info['submission_id'] ? 'table-success' : ''], "#{$info['id']}"); $html .= HTML::tag_begin('td', ['class' => 'text-start']); $html .= $problem->getLink(['with' => 'none']); if ($problem->isUserOwnProblem(Auth::user())) { $html .= ' ' . UOJLocale::get('problems::my problem') . ' '; } if ($info['is_hidden']) { $html .= ' ' . UOJLocale::get('hidden') . ' '; } if (isset($_COOKIE['show_tags_mode'])) { foreach ($problem->queryTags() as $tag) { $html .= ' ' . '' . HTML::escape($tag) . '' . ' '; } } $html .= HTML::tag_end('td'); if (isset($_COOKIE['show_submit_mode'])) { $perc = $info['submit_num'] > 0 ? round(100 * $info['ac_num'] / $info['submit_num']) : 0; $html .= HTML::tag( 'td', [], HTML::tag( 'div', [ 'class' => 'progress', 'data-bs-toggle' => 'tooltip', 'data-bs-title' => "{$info['ac_num']} / {$info['submit_num']}", 'data-bs-placement' => 'bottom', ], HTML::tag('div', [ 'class' => 'progress-bar bg-success', 'role' => 'progressbar', 'aria-valuenow' => $perc, 'aria-valuemin' => 0, 'aria-valuemax' => 100, 'style' => "width: {$perc}%; min-width: 20px;", ], "{$perc}%") ) ); } $html .= HTML::tag('td', [], $problem->getDifficultyHTML()); $html .= HTML::tag('td', [], ClickZans::getCntBlock($problem->info['zan'])); $html .= HTML::tag_end('tr'); return $html; } $cond = []; $search_tag = UOJRequest::get('tag', 'is_string', null); $search_content = UOJRequest::get('search', 'is_string', ''); $search_is_effective = false; $cur_tab = UOJRequest::get('tab', 'is_string', 'all'); if ($cur_tab == 'template') { $search_tag = "模板题"; } if (is_string($search_tag)) { $cond[] = [ DB::rawvalue($search_tag), "in", DB::rawbracket([ "select tag from problems_tags", "where", ["problems_tags.problem_id" => DB::raw("problems.id")] ]) ]; } if ($search_content !== '') { foreach (explode(' ', $search_content) as $key) { if (strlen($key) > 0) { $cond[] = DB::lor([ [DB::instr(DB::raw('title'), $key), '>', 0], DB::exists([ "select tag from problems_tags", "where", [ [DB::instr(DB::raw('tag'), $key), '>', 0], "problems_tags.problem_id" => DB::raw("problems.id") ] ]), "id" => $key, ]); $search_is_effective = true; } } } if (isset($_GET['is_hidden'])) { $cond['problems.is_hidden'] = true; } if (Auth::check() && isset($_GET['my'])) { $cond['problems.uploader'] = Auth::id(); } if (isset($_GET['min_difficulty']) && $_GET['min_difficulty']) { $cond[] = ['problems.difficulty', '>=', $_GET['min_difficulty']]; } if (isset($_GET['max_difficulty']) && $_GET['max_difficulty']) { $cond[] = ['problems.difficulty', '<=', $_GET['max_difficulty']]; } if (empty($cond)) { $cond = '1'; } $header = ''; $header .= 'ID'; $header .= '' . UOJLocale::get('problems::problem') . ''; if (isset($_COOKIE['show_submit_mode'])) { $header .= '' . UOJLocale::get('problems::ac ratio') . ''; } $header .= '' . UOJLocale::get('problems::difficulty') . ''; $header .= '' . UOJLocale::get('appraisal') . ''; $header .= ''; $tabs_info = array( 'all' => array( 'name' => UOJLocale::get('problems::all problems'), 'url' => "/problems" ), 'template' => array( 'name' => UOJLocale::get('problems::template problems'), 'url' => "/problems/template" ) ); $pag = new Paginator([ 'col_names' => ['*'], 'table_name' => [ "problems left join best_ac_submissions", "on", [ "best_ac_submissions.submitter" => Auth::id(), "problems.id" => DB::raw("best_ac_submissions.problem_id") ], ], 'cond' => $cond, 'tail' => "order by id asc", 'page_len' => 40, 'post_filter' => function ($problem) { return (new UOJProblem($problem))->userCanView(Auth::user()); } ]); // if ($search_is_effective) { // $search_summary = [ // 'count_in_cur_page' => $pag->countInCurPage(), // 'first_a_few' => [] // ]; // foreach ($pag->get(5) as $info) { // $problem = new UOJProblem($info); // $search_summary['first_a_few'][] = [ // 'type' => 'problem', // 'id' => $problem->info['id'], // 'title' => $problem->getTitle() // ]; // } // DB::insert([ // "insert into search_requests", // "(created_at, remote_addr, type, cache_id, q, content, result)", // "values", DB::tuple([DB::now(), UOJContext::remoteAddr(), 'search', 0, $search_content, UOJContext::requestURI(), json_encode($search_summary)]) // ]); // } ?>

printHTML(); ?>
/>
/>
pagination() ?>
get(), [ 'table_attr' => [ 'class' => ['table', 'uoj-table', 'mb-0'], ], 'tr' => function ($row, $idx) { return getProblemTR($row); } ]); ?>
pagination() ?>