<?php
	requireLib('bootstrap5');
	requireLib('md5');
	requireLib('jquery.query');
	requirePHPLib('form');
	requirePHPLib('judger');

	define('SCRIPT_REFRESH_AS_GET', '<script>;window.location = window.location.origin + window.location.pathname + (window.location.search.length ? window.location.search + "&" : "?") + "_=" + (+new Date()) + window.location.hash;</script>');

	if (!isSuperUser($myUser)) {
		become403Page();
	}

	$cur_tab = isset($_GET['tab']) ? $_GET['tab'] : 'index';

	$tabs_info = [
		'index' => [
			'name' => '首页管理',
			'url' => "/super_manage/index",
		],
		'users' => [
			'name' => '用户管理',
			'url' => "/super_manage/users",
		],
		'submissions' => [
			'name' => '提交记录',
			'url' => "/super_manage/submissions",
		],
		'custom_test' => [
			'name' => '自定义测试',
			'url' => "/super_manage/custom_test",
		],
		'image_hosting' => [
			'name' => '图床管理',
			'url' => "/super_manage/image_hosting",
		],
	];
	
	if (!isset($tabs_info[$cur_tab])) {
		become404Page();
	}

	if ($cur_tab == 'index') {
		// ========== 公告 ==========
		if (isset($_POST['submit-delete_announcement']) && $_POST['submit-delete_announcement'] == 'delete_announcement') {
			crsf_defend();

			$blog_id = $_POST['blog_id'];

			if (!validateUInt($blog_id)) {
				die('<script>alert("移除失败:博客 ID 无效");</script>' . SCRIPT_REFRESH_AS_GET);
			}
			
			DB::delete("DELETE FROM important_blogs WHERE blog_id = {$blog_id}");

			die('<script>alert("移除成功!");</script>' . SCRIPT_REFRESH_AS_GET);
		}

		$announcements = DB::selectAll("SELECT blogs.id as id, blogs.title as title, blogs.poster as poster, user_info.realname as realname, blogs.post_time as post_time, important_blogs.level as level, blogs.is_hidden as is_hidden FROM important_blogs INNER JOIN blogs ON important_blogs.blog_id = blogs.id INNER JOIN user_info ON blogs.poster = user_info.username ORDER BY level DESC, important_blogs.blog_id DESC");

		$add_announcement_form = new UOJForm('add_announcement');
		$add_announcement_form->addInput('blog_id', 'text', '博客 ID', '',
			function($id, &$vdata) {
				if (!validateUInt($id)) {
					return '博客 ID 无效';
				}

				if (!queryBlog($id)) {
					return '博客不存在';
				}

				$vdata['blog_id'] = $id;

				return '';
			},
			null
		);
		$add_announcement_form->addInput('blog_level', 'text', '置顶级别', '0',
			function ($x, &$vdata) {
				if (!validateUInt($x)) {
					return '数字不合法';
				}

				if ($x > 3) {
					return '该级别不存在';
				}

				$vdata['level'] = $x;
				
				return '';
			},
			null
		);
		$add_announcement_form->handle = function(&$vdata) {
			$blog_id = $vdata['blog_id'];
			$blog_level = $vdata['level'];
			
			if (DB::selectFirst("select * from important_blogs where blog_id = {$blog_id}")) {
				DB::update("update important_blogs set level = {$blog_level} where blog_id = {$blog_id}");
			} else {
				DB::insert("insert into important_blogs (blog_id, level) values ({$blog_id}, {$blog_level})");
			}
		};
		$add_announcement_form->submit_button_config['align'] = 'compressed';
		$add_announcement_form->submit_button_config['text'] = '提交';
		$add_announcement_form->succ_href = '/super_manage/index#announcements';
		$add_announcement_form->runAtServer();

		// ========== 倒计时 ==========
		if (isset($_POST['submit-delete_countdown']) && $_POST['submit-delete_countdown'] == 'delete_countdown') {
			crsf_defend();

			$countdown_id = $_POST['countdown_id'];

			if (!validateUInt($countdown_id)) {
				die('<script>alert("删除失败:倒计时 ID 无效");</script>' . SCRIPT_REFRESH_AS_GET);
			}

			DB::delete("DELETE FROM countdowns WHERE id = {$countdown_id}");

			die('<script>alert("删除成功!");</script>' . SCRIPT_REFRESH_AS_GET);
		}

		$countdowns = DB::selectAll("SELECT id, title, endtime FROM countdowns ORDER BY endtime ASC");

		$add_countdown_form = new UOJForm('add_countdown');
		$add_countdown_form->addInput('countdown_title', 'text', '标题', '',
			function($title, &$vdata) {
				if ($title == '') {
					return '标题不能为空';
				}

				$vdata['title'] = $title;

				return '';
			},
			null
		);
		$add_countdown_form->addInput('countdown_endtime', 'text', '结束时间', date("Y-m-d H:i:s"),
			function($endtime, &$vdata) {
				try {
					$vdata['endtime'] = new DateTime($endtime);
				} catch (Exception $e) {
					return '无效时间格式';
				}

				return '';
			},
			null
		);
		$add_countdown_form->handle = function(&$vdata) {
			$esc_title = DB::escape($vdata['title']);
			$esc_endtime = DB::escape($vdata['endtime']->format('Y-m-d H:i:s'));

			DB::insert("INSERT INTO countdowns (title, endtime) VALUES ('{$esc_title}', '{$esc_endtime}')");
		};
		$add_countdown_form->submit_button_config['align'] = 'compressed';
		$add_countdown_form->submit_button_config['text'] = '添加';
		$add_countdown_form->succ_href = '/super_manage/index#countdowns';
		$add_countdown_form->runAtServer();

		// ========== 常用链接 ==========
		if (isset($_POST['submit-delete_link']) && $_POST['submit-delete_link'] == 'delete_link') {
			crsf_defend();

			$item_id = $_POST['item_id'];

			if (!validateUInt($item_id)) {
				die('<script>alert("删除失败:ID 无效");</script>' . SCRIPT_REFRESH_AS_GET);
			}

			DB::delete("DELETE FROM links WHERE id = {$item_id}");

			die('<script>alert("删除成功!");</script>' . SCRIPT_REFRESH_AS_GET);
		}

		$links = DB::selectAll("SELECT `id`, `title`, `url`, `level` FROM `friend_links` ORDER BY `level` DESC, `id` ASC");

		$add_link_form = new UOJForm('add_link');
		$add_link_form->addInput('link_title', 'text', '标题', '',
			function($title, &$vdata) {
				if ($title == '') {
					return '标题不能为空';
				}

				$vdata['title'] = $title;

				return '';
			},
			null
		);
		$add_link_form->addInput('link_url', 'text', '链接', '',
			function($url, &$vdata) {
				if (!validateURL($url)) {
					return '链接不合法';
				}

				$vdata['url'] = $url;

				return '';
			},
			null
		);
		$add_link_form->addInput('link_level', 'text', '权重', '10',
			function($level, &$vdata) {
				if (!validateUInt($level)) {
					return '数字不合法';
				}

				$vdata['level'] = $level;
				
				return '';
			},
			null
		);
		$add_link_form->handle = function(&$vdata) {
			$esc_title = DB::escape($vdata['title']);
			$esc_url = DB::escape($vdata['url']);
			$level = $vdata['level'];
			
			DB::insert("INSERT INTO friend_links (title, url, level) VALUES ('{$esc_title}', '{$esc_url}', {$level})");
		};
		$add_link_form->submit_button_config['align'] = 'compressed';
		$add_link_form->submit_button_config['text'] = '添加';
		$add_link_form->succ_href = '/super_manage/index#links';
		$add_link_form->runAtServer();
	} elseif ($cur_tab == 'users') {
		//
	}
	?>

<?php echoUOJPageHeader(UOJLocale::get('system manage')) ?>

<h1 class="h2">
	<?= UOJLocale::get('system manage') ?>
</h1>


<div class="row mt-4">
<!-- left col -->
<div class="col-md-3">

<div class="list-group">
	<?php foreach ($tabs_info as $id => $tab): ?>
	<a
		role="button"
		class="list-group-item list-group-item-action <?= $cur_tab == $id ? 'active' : '' ?>"
		href="<?= $tab['url'] ?>">
		<?= $tab['name'] ?>
	</a>
	<?php endforeach ?>
</div>

</div>
<!-- end left col -->

<!-- right col -->
<div class="col-md-9">
<?php if ($cur_tab == 'index'): ?>
<div class="card">
	<div class="card-header">
		<ul class="nav nav-tabs card-header-tabs" role="tablist">
			<li class="nav-item">
				<a class="nav-link active" href="#announcements" data-bs-toggle="tab" data-bs-target="#announcements">公告</a>
			</li>
			<li class="nav-item">
				<a class="nav-link" href="#countdowns" data-bs-toggle="tab" data-bs-target="#countdowns">倒计时</a>
			</li>
			<li class="nav-item">
				<a class="nav-link" href="#links" data-bs-toggle="tab" data-bs-target="#links">常用链接</a>
			</li>
		</ul>
	</div>
	<div class="card-body">
		<div class="tab-content">
			<!-- 公告 -->
			<div class="tab-pane active" id="announcements">
				<div id="announcements-list"></div>

				<script>
					var announcements = <?= json_encode($announcements) ?>;

					$('#announcements-list').long_table(
						announcements,
						1,
						'<tr>' +
							'<th style="width:3em">ID</th>' +
							'<th style="width:14em">标题</th>' +
							'<th style="width:8em">发布者</th>' +
							'<th style="width:8em">发布时间</th>' +
							'<th style="width:6em">置顶等级</th>' +
							'<th style="width:8em">操作</th>' +
						'</tr>',
						function(row) {
							var col_tr = '';

							col_tr += '<tr>';

							col_tr += '<td>' + row['id'] + '</td>';
							col_tr += '<td>' +
									(row['is_hidden'] ? '<span class="text-danger">[隐藏]</span> ' : '') +
									'<a class="text-decoration-none" href="/blogs/' + row['id'] + '">' +
										row['title'] +
									'</a>' +
								'</td>';
							col_tr += '<td>' + getUserLink(row['poster'], row['realname']) + '</td>';
							col_tr += '<td>' + row['post_time'] + '</td>';
							col_tr += '<td>' + row['level'] + '</td>';
							col_tr += '<td>' +
										'<a class="text-decoration-none d-inline-block align-middle" href="/post/' + row['id'] + '/write">编辑</a>' +
										'<form class="d-inline-block ms-2" method="POST" onsubmit=\'return confirm("你真的要移除这条公告吗?")\'>' +
											'<input type="hidden" name="_token" value="<?= crsf_token() ?>">' +
											'<input type="hidden" name="blog_id" value="' + row['id'] + '">' +
											'<button class="btn btn-link text-danger text-decoration-none p-0" type="submit" name="submit-delete_announcement" value="delete_announcement">移除</button>' +
										'</form>' +
									'</td>';

							col_tr += '</tr>';

							return col_tr;
						},
						{
							div_classes: ['table-responsive'],
							table_classes: ['table', 'align-middle'],
							page_len: 20,
						}
					);
				</script>

				<h5>添加/修改公告</h5>
				<?php $add_announcement_form->printHTML(); ?>
			</div>

			<!-- 倒计时 -->
			<div class="tab-pane" id="countdowns">
				<div id="countdowns-list"></div>

				<script>
					var countdowns = <?= json_encode($countdowns) ?>;

					$('#countdowns-list').long_table(
						countdowns,
						1,
						'<tr>' +
							'<th style="width:14em">标题</th>' +
							'<th style="width:8em">结束时间</th>' +
							'<th style="width:6em">操作</th>' +
						'</tr>',
						function(row) {
							var col_tr = '';

							col_tr += '<tr>';

							col_tr += '<td>' + row['title'] + '</td>';
							col_tr += '<td>' + row['endtime'] + '</td>';
							col_tr += '<td>' +
									'<form method="POST" onsubmit=\'return confirm("你真的要删除这个倒计时吗?")\'>' +
										'<input type="hidden" name="_token" value="<?= crsf_token() ?>">' +
										'<input type="hidden" name="countdown_id" value="' + row['id'] + '">' +
										'<button class="btn btn-link text-danger text-decoration-none p-0" type="submit" name="submit-delete_countdown" value="delete_countdown">删除</button>' +
									'</form>' +
								'</td>';

							col_tr += '</tr>';

							return col_tr;
						},
						{
							div_classes: ['table-responsive'],
							table_classes: ['table', 'align-middle'],
							page_len: 20,
						}
					);
				</script>

				<h5>添加倒计时</h5>
				<?php $add_countdown_form->printHTML(); ?>
			</div>

			<!-- 常用链接 -->
			<div class="tab-pane" id="links">
				<div id="links-list"></div>

				<script>
					var links = <?= json_encode($links) ?>;

					$('#links-list').long_table(
						links,
						1,
						'<tr>' +
							'<th style="width:18em">标题</th>' +
							'<th style="width:26em">链接</th>' +
							'<th style="width:14em">操作</th>' +
						'</tr>',
						function(row) {
							var col_tr = '';

							col_tr += '<tr>';

							col_tr += '<td>' + row['title'] + '</td>';
							col_tr += '<td>' + row['url'] + '</td>';
							col_tr += '<td>' +
									'<form method="POST" onsubmit=\'return confirm("你真的要删除这条链接吗?")\'>' +
										'<input type="hidden" name="_token" value="<?= crsf_token() ?>">' +
										'<input type="hidden" name="link_id" value="' + row['id'] + '">' +
										'<button class="btn btn-link text-danger text-decoration-none p-0" type="submit" name="submit-delete_link" value="delete_link">删除</button>' +
									'</form>' +
								'</td>';

							col_tr += '</tr>';

							return col_tr;
						},
						{
							div_classes: ['table-responsive'],
							table_classes: ['table', 'align-middle'],
							page_len: 20,
						}
					);
				</script>

				<h5>添加常用链接</h5>
				<?php $add_link_form->printHTML(); ?>
			</div>
		</div>
	</div>
</div>

<script>
$(document).ready(function() {
	// Javascript to enable link to tab
	var hash = location.hash.replace(/^#/, '');
	if (hash) {
		bootstrap.Tab.jQueryInterface.call($('.nav-tabs a[href="#' + hash + '"]'), 'show').blur();
	}

	// Change hash for page-reload
	$('.nav-tabs a').on('shown.bs.tab', function(e) {
		window.location.hash = e.target.hash;
	});
});
</script>
<?php elseif ($cur_tab == 'users'): ?>
<div class="card">
	<div class="card-header">
		<ul class="nav nav-tabs card-header-tabs">
			<li class="nav-item">
				<a class="nav-link active" href="#" data-bs-toggle="tab" data-bs-target="#">Active</a>
			</li>
			<li class="nav-item">
				<a class="nav-link" href="#" data-bs-toggle="tab" data-bs-target="#">2</a>
			</li>
		</ul>
	</div>
	<div class="card-body">
		<div class="tab-content">
			<div class="tab-pane" id="">1</div>
			<div class="tab-pane" id="">2</div>
		</div>
	</div>
</div>
<?php endif ?>
</div>
<!-- end right col -->
</div>

<?php echoUOJPageFooter() ?>