Skip to content

Commit

Permalink
🌿 Merge pull request #55 from belivipro9x99/indev
Browse files Browse the repository at this point in the history
🌿 merge branch indev into master
  • Loading branch information
Belikhun authored Mar 24, 2020
2 parents f47e22c + 2568ce8 commit a78daba
Show file tree
Hide file tree
Showing 164 changed files with 4,560 additions and 4,145 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
data/logs.json
data/avatar/*
!data/avatar/avt.default
!data/avatar/*.php
.cache

# Byte-compiled / optimized / DLL files
Expand Down
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,28 @@

## Thay đổi trong v0.6.0

### rev3

* **Bug:** Sửa lỗi client spam request lấy danh sách đề bài khi tắt **Công khai đề bài** (ed1462987ca43a4dacdbd5fe48e739df754737d7)
* **Bug:** Sửa lỗi xung đột cache của `/api/rank` khi có đề bài bị tắt và tài khoản admin đang gửi request tới API này (8eb6a2e0a1649f45a3bbb95ac0819424a0ed6fd1)
* **Bug:** Sửa lỗi container của wrapper bị lệch khi hiển thị thời gian kì thi (#54)
* **Bug:** Sửa lỗi màu chữ của các input bị tối khi ở chế độ ban đêm (#53)
* **Bug:** Sửa lỗi chữ của panel bị trống hiển thị lệch về bên trái (#52)
* **Thay đổi:** Đổi font `Exo` thành `Nunito` (0c73b0239801080ade3ad876b766b64d205e0361)
* **Thay đổi:** Sắp xếp lại bố cục thư mục (bff1e668a7716cd70c0f2e03056a48ca22a67550 và 6537b2573bd98e97a04566456b1831fdd6f360da)
* **Thêm:** Cảnh báo người dùng khi thời gian so với máy chủ bị lệch (10c5a244138b5709559c006dfb7d75f10746510b)
* **Thêm:** Thêm tính năng bật/tắt công khai đề bài cho khách (aa14b655a47f95cdc468551eb975ab16438dab48)
* Sửa một số lỗi khác và thêm một số chức năng nhỏ

### rev2

* **Bug:** Sửa lỗi cửa sổ danh sách đề bài không hiển thị thanh trượt khi đề bài tràn ra ngoài cửa số (a3bd9e6e2358dc3850fc82abf4ecb0f122622397)
* **Bug:** Sửa lỗi `undefined index` ở một số API khi dùng **PHP/7.4** (22f60e20861b38e64e3a5e0a69144ebd35412775)
* **Bug:** Sửa lỗi không thể bật tắt cài đặt **Mở Đề Bài trong hộp thoại** (d961a4cb9b249a6579a48f297ff9a2560a6b0c94)
* **Thay đổi:** Thay đổi font của tiêu đề cửa sổ (0c73b0239801080ade3ad876b766b64d205e0361)

### rev1

* **Bug:** Sửa lỗi module `sounds` không tương thích với trình duyệt khác không chạy nhân `chromium` (1ca99107554bd5d59bf21eae07c179461a906f3f)
* **Bug:** Sửa lỗi request không được gửi lại sau khi hết `ratelimited` (f78e98f8f5ba43258544a423789fe4d771169c22)
* **Thêm:** Thêm tính năng đăng kí tài khoản! (a27eafd40de8fedbff0f9c1245c1e47bc7c2183f)
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ An **beautiful** and **easy-to-use** Web Interface for **[Themis](https://dsapbl
[![license](https://img.shields.io/badge/license-MIT-orange.svg?longCache=true&style=for-the-badge)](https://github.com/belivipro9x99/themis-web-interface/blob/master/LICENSE)
[![status](https://img.shields.io/badge/status-near_stable-blue.svg?longCache=true&style=for-the-badge)]()
[![Travis CI Build Status](https://img.shields.io/travis/belivipro9x99/themis-web-interface.svg?style=for-the-badge)](https://travis-ci.org/belivipro9x99/themis-web-interface)

[![codefactor](https://www.codefactor.io/repository/github/belivipro9x99/themis-web-interface/badge/master?style=for-the-badge)](https://www.codefactor.io/repository/github/belivipro9x99/themis-web-interface)
[![codefactor](https://www.codefactor.io/repository/github/belivipro9x99/themis-web-interface/badge/indev?style=for-the-badge)](https://www.codefactor.io/repository/github/belivipro9x99/themis-web-interface/overview/indev)

[![Travis CI Build Status](https://img.shields.io/travis/belivipro9x99/themis-web-interface/master.svg?label=master&style=for-the-badge)](https://travis-ci.org/belivipro9x99/themis-web-interface)
[![Travis CI Build Status](https://img.shields.io/travis/belivipro9x99/themis-web-interface/indev.svg?label=indev&style=for-the-badge)](https://travis-ci.org/belivipro9x99/themis-web-interface)
Expand Down Expand Up @@ -129,7 +131,7 @@ Không có dữ liệu nào liên quan đến đề bài bị lộ trước kì

---

Không còn phải đau mắt nhìn từng dòng của tệp nhật ký nữa! *Themis Web Interface* hiển thị toàn bộ thông tin của tệp nhật ký dưới dạng **Dao diện người dùng** dễ đọc và đầy đủ.
Không còn phải đau mắt nhìn từng dòng của tệp nhật ký nữa! *Themis Web Interface* hiển thị toàn bộ thông tin của tệp nhật ký dưới dạng **Giao diện người dùng** dễ đọc và đầy đủ.

</div>

Expand Down Expand Up @@ -237,6 +239,8 @@ Hướng dẫn cài đặt, sử dụng và nâng cấp hiện có trong [Wiki](

## API Document

> **⚠ Lưu ý:** Thông tin API trong Wiki chưa được cập nhật cho phiên bản mới nhất! Một số thông tin có thể bị sai lệch với phiên bản hiện tại
Toàn bộ **Tài liệu** đều có ở trong [Wiki:API](https://github.com/belivipro9x99/themis-web-interface-reloaded/wiki/Getting-Started-with-API) của dự án.

## Screenshot
Expand Down
12 changes: 6 additions & 6 deletions account.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
<link rel="stylesheet" type="text/css" media="screen" href="/assets/css/menu.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/css/accountPage.css?v=<?php print VERSION; ?>" />
<!-- Fonts -->
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/calibri.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/exo.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/opensans.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/material-font.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/consolas.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/fontawesome.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/calibri/calibri.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/nunito/nunito.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/opensans/opensans.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/materialicons/materialicons.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/consolas/consolas.css?v=<?php print VERSION; ?>" />
<link rel="stylesheet" type="text/css" media="screen" href="/assets/fonts/fontawesome/fontawesome.css?v=<?php print VERSION; ?>" />
</head>

<body id="container">
Expand Down
2 changes: 1 addition & 1 deletion api/account/add.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
2 changes: 1 addition & 1 deletion api/account/edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
2 changes: 1 addition & 1 deletion api/account/get.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
2 changes: 1 addition & 1 deletion api/account/remove.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
2 changes: 1 addition & 1 deletion api/avatar.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
define("PAGE_TYPE", "NORMAL");
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";

stop(7, "Unknown request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
stop(7, "Unexpected request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
break;
}
5 changes: 3 additions & 2 deletions api/code.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@
44 file not found
45 file exist

// 10x: info IGNORED
// 10x: info (IGNORED)
101 not in contest mode
102 modified nothing
103 contest not started
104 contest ended
105 contest not ended
106 disconnected
107 disabled
108 not published
108 not published
109 problems unpublicized
3 changes: 2 additions & 1 deletion api/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
if ($_SERVER["REQUEST_METHOD"] === "GET")
stop(0, "Thành công!", 200, $rawConfig);

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down Expand Up @@ -105,6 +105,7 @@ function setting(String $key, &$target, $type) {
setting("viewRankHideDisabled" , $rawConfig["viewRankHideDisabled"] , $TYPE_BOOL );
setting("viewLog" , $rawConfig["viewLog"] , $TYPE_BOOL );
setting("viewLogOther" , $rawConfig["viewLogOther"] , $TYPE_BOOL );
setting("publicProblems" , $rawConfig["publicProblems"] , $TYPE_BOOL );
setting("clientConfig_sounds" , $rawConfig["clientConfig"]["sounds"] , $TYPE_BOOL );
setting("clientConfig_nightmode" , $rawConfig["clientConfig"]["nightmode"] , $TYPE_BOOL );
setting("clientConfig_showMs" , $rawConfig["clientConfig"]["showMs"] , $TYPE_BOOL );
Expand Down
2 changes: 1 addition & 1 deletion api/contest/logs.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logParser.php";
Expand Down
2 changes: 1 addition & 1 deletion api/contest/problems/add.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
12 changes: 8 additions & 4 deletions api/contest/problems/attachment.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
case "GET":
// SET PAGE TYPE
define("PAGE_TYPE", "NORMAL");

require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";

$id = reqQuery("id");

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLoggedIn() && $config["publicProblems"] !== true)
stop(109, "Vui lòng đăng nhập để xem đề bài!", 403);

contest_timeRequire([CONTEST_STARTED], false, false);

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/problems/problem.php";
Expand All @@ -31,6 +33,8 @@
if (problemDisabled($id) && $_SESSION["id"] !== "admin")
stop(25, "Đề $id đã bị tắt", 403, Array( "id" => $id ));

require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";

if (problemGetAttachment($id, !getQuery("embed", false)) === PROBLEM_OKAY)
writeLog("INFO", "Đã tải tệp đính kèm của bài \"". $_GET["id"] ."\"");
else
Expand All @@ -42,7 +46,7 @@
// SET PAGE TYPE
define("PAGE_TYPE", "API");

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

$id = preg_replace("/[.\/\\\\]/m", "", reqHeader("id"));
Expand Down Expand Up @@ -75,6 +79,6 @@
// SET PAGE TYPE
define("PAGE_TYPE", "NORMAL");

stop(7, "Unknown request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
stop(7, "Unexpected request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
break;
}
2 changes: 1 addition & 1 deletion api/contest/problems/edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
4 changes: 4 additions & 0 deletions api/contest/problems/get.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
$id = reqQuery("id");

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLoggedIn() && $config["publicProblems"] !== true)
stop(109, "Vui lòng đăng nhập để xem đề bài!", 403, Array());

contest_timeRequire([CONTEST_STARTED], false);

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/problems/problem.php";
Expand Down
8 changes: 6 additions & 2 deletions api/contest/problems/image.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ function showImage(string $path) {
$id = preg_replace("/[.\/\\\\]/m", "", reqQuery("id"));

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLoggedIn() && $config["publicProblems"] !== true)
stop(109, "Vui lòng đăng nhập để xem đề bài!", 403);

contest_timeRequire([CONTEST_STARTED], false, false);

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/problems/problem.php";
Expand All @@ -48,7 +52,7 @@ function showImage(string $path) {
// SET PAGE TYPE
define("PAGE_TYPE", "API");

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

$id = preg_replace("/[.\/\\\\]/m", "", reqHeader("id"));
Expand Down Expand Up @@ -81,6 +85,6 @@ function showImage(string $path) {
// SET PAGE TYPE
define("PAGE_TYPE", "NORMAL");

stop(7, "Unknown request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
stop(7, "Unexpected request method: ". $requestMethod, 405, Array( "method" => $requestMethod ));
break;
}
3 changes: 3 additions & 0 deletions api/contest/problems/list.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLoggedIn() && $config["publicProblems"] !== true)
stop(109, "Vui lòng đăng nhập để xem đề bài!", 403, Array());

contest_timeRequire([CONTEST_STARTED], false);

require_once $_SERVER["DOCUMENT_ROOT"] ."/data/problems/problem.php";
Expand Down
2 changes: 1 addition & 1 deletion api/contest/problems/remove.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/belibrary.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
28 changes: 19 additions & 9 deletions api/contest/rank.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/cache.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if ($export && !isLogedIn())
if ($export && !isLoggedIn())
stop(11, "Bạn chưa đăng nhập!", 401);

if ($export && $_SESSION["id"] !== "admin")
Expand All @@ -41,12 +41,12 @@
));

if (!$export) {
$cache = new cache("api.contest.rank");
$cache = new cache("api.contest.rank.". md5($_SESSION["username"] . $_SESSION["id"]));
$cache -> setAge($config["cache"]["contestRank"]);

if ($cache -> validate()) {
$returnData = $cache -> getData();
stop(0, "Thành công!", 200, $returnData, true);
stop(0, "Thành công!", 200, $returnData, $returnData["overall"]);
}
}

Expand All @@ -55,10 +55,13 @@

$logDir = glob($config["logDir"] ."/*.log");
$res = Array();
$_list_ = Array();
$list = Array();
$nameList = Array();
$total = Array();
$overall = 0;

foreach ($logDir as $i => $log) {
foreach ($logDir as $log) {
$data = ((new logParser($log, LOGPARSER_MODE_MINIMAL)) -> parse())["header"];
$filename = $data["file"]["logFilename"];
$user = $data["user"];
Expand All @@ -68,7 +71,7 @@
continue;

if ($config["viewRankTask"] === true || $_SESSION["id"] === "admin") {
$list[$i] = $data["problem"];
$_list_[$data["problem"]] = null;
$res[$user]["status"][$data["problem"]] = $data["status"];
$res[$user]["point"][$data["problem"]] = $data["point"];
$res[$user]["logFile"][$data["problem"]] = ($config["viewLog"] === true || $_SESSION["id"] === "admin") ? $filename : null;
Expand All @@ -89,8 +92,8 @@
$res[$user]["total"] += $data["point"];
}

$nlr = arrayRemDub($list);
$list = ((count($nlr) > 0) ? $nlr : Array());
foreach ($_list_ as $key => $value)
array_push($list, $key);

// Sort data by lastSubmit
usort($res, function($a, $b) {
Expand All @@ -114,6 +117,11 @@
return ($a > $b) ? -1 : 1;
});

foreach ($res as $value) {
$total[$value["username"]] = $value["total"];
$overall += $total[$value["username"]];
}

if ($export) {
$data = Array();
$header = Array("#", "username", "name", "total");
Expand Down Expand Up @@ -145,9 +153,11 @@
$returnData = Array (
"list" => $list,
"nameList" => $nameList,
"rank" => $res
"total" => $total,
"rank" => $res,
"overall" => $overall
);

$cache -> save($returnData);
stop(0, "Thành công!", 200, $returnData, true);
stop(0, "Thành công!", 200, $returnData, $returnData["overall"]);
}
2 changes: 1 addition & 1 deletion api/contest/upload.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập.", 401);

checkToken();
Expand Down
2 changes: 1 addition & 1 deletion api/edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
require_once $_SERVER["DOCUMENT_ROOT"] ."/lib/logs.php";
require_once $_SERVER["DOCUMENT_ROOT"] ."/data/config.php";

if (!isLogedIn())
if (!isLoggedIn())
stop(11, "Bạn chưa đăng nhập!", 401);

$username = $_SESSION["username"];
Expand Down
Loading

0 comments on commit a78daba

Please sign in to comment.