=60) {
$second = $length%60;
if ($second>0 && $second<10) {
$result = '0'.$second.' '.$MSG_SECONDS;}
else if ($second>0) {
$result = $second.' '.$MSG_SECONDS;
}
$length = floor($length/60);
if ($length >= 60) {
$minute = $length%60;
if ($minute==0) {
if ($result != '') {
$result = '00'.' '.$MSG_MINUTES.' '.$result;
}
}
else if ($minute>0 && $minute<10) {
if ($result != '') {
$result = '0'.$minute.' '.$MSG_MINUTES.' '.$result;}
}
else {
$result = $minute.' '.$MSG_MINUTES.' '.$result;
}
$length = floor($length/60);
if ($length >= 24) {
$hour = $length%24;
if ($hour==0) {
if ($result != '') {
$result = '00'.' '.$MSG_HOURS.' '.$result;
}
}
else if ($hour>0 && $hour<10) {
if($result != '') {
$result = '0'.$hour.' '.$MSG_HOURS.' '.$result;
}
}
else {
$result = $hour.' '.$MSG_HOURS.' '.$result;
}
$length = floor($length / 24);
$result = $length .$MSG_DAYS.' '.$result;
}
else {
$result = $length.' '.$MSG_HOURS.' '.$result;
}
}
else {
$result = $length.' '.$MSG_MINUTES.' '.$result;
}
}
else {
$result = $length.' '.$MSG_SECONDS;
}
return $result;
}
function status_admin_can_delete($result) {
return $result >= 4 && !in_array($result, array(12, 15, 16, 17), true);
}
function build_status_admin_actions($solution_id, $postkey, $return_url, $can_delete, $rejudge_text, $delete_text) {
$solution_id = intval($solution_id);
$postkey = htmlspecialchars($postkey, ENT_QUOTES, 'UTF-8');
$return_url = htmlspecialchars($return_url, ENT_QUOTES, 'UTF-8');
$rejudge_text = htmlspecialchars($rejudge_text, ENT_QUOTES, 'UTF-8');
$delete_text = htmlspecialchars($delete_text, ENT_QUOTES, 'UTF-8');
$rejudge_confirm = htmlspecialchars("确认重判提交 #".$solution_id." 吗?", ENT_QUOTES, 'UTF-8');
$delete_confirm = htmlspecialchars("确认删除提交 #".$solution_id." 吗?此操作不可恢复。", ENT_QUOTES, 'UTF-8');
$html = "
";
$html .= "";
if ($can_delete) {
$html .= "";
}
else {
$html .= "".$delete_text."";
}
$html .= "
";
return $html;
}
require_once("./include/my_func.inc.php");
if (isset($OJ_LANG)) {
require_once("./lang/$OJ_LANG.php");
}
require_once("./include/const.inc.php");
$status_admin_actions_enabled = isset($_SESSION[$OJ_NAME.'_'.'administrator']) && $OJ_TEMPLATE=="syzoj";
$status_admin_postkey = "";
$status_admin_return_url = "/status.php";
if ($status_admin_actions_enabled && isset($_SESSION[$OJ_NAME.'_'.'user_id'])) {
$status_admin_postkey = strtoupper(substr(md5($_SESSION[$OJ_NAME.'_'.'user_id'].rand(0,9999999)),0,10));
$_SESSION[$OJ_NAME.'_'.'postkey'] = $status_admin_postkey;
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!="") {
$status_admin_return_url = $_SERVER['REQUEST_URI'];
}
}
$str2 = "";
$lock = false;
$lock_time = date("Y-m-d H:i:s",time());
$sql = "WHERE problem_id>0 ";
if (isset($_GET['cid'])) {
$cid = intval($_GET['cid']);
$sql = $sql." AND `contest_id`='$cid' and num>=0 ";
$str2 = $str2."&cid=$cid";
$sql_lock = "SELECT * FROM `contest` WHERE `contest_id`=?";
$view_cid = $cid;
$result = pdo_query($sql_lock,$cid);
$rows_cnt = count($result);
$start_time = 0;
$end_time = 0;
if ($rows_cnt>0) {
$row = $result[0];
$title = $row['title'];
$start_time = strtotime($row['start_time']);
$end_time = strtotime($row['end_time']);
$view_description = $row['description'];
$view_title = $row['title'];
$view_start_time = $row['start_time'];
$view_end_time = $row['end_time'];
$noip = (time()<$end_time) && (stripos($title,$OJ_NOIP_KEYWORD)!==false);
if(isset($_SESSION[$OJ_NAME.'_'."administrator"])||
isset($_SESSION[$OJ_NAME.'_'."m$cid"])||
isset($_SESSION[$OJ_NAME.'_'."source_browser"])||
isset($_SESSION[$OJ_NAME.'_'."contest_creator"])
) $noip=false;
if($noip){
$view_errors = " $MSG_NOIP_WARNING 返回比赛
";
$refererUrl = parse_url($_SERVER['HTTP_REFERER']);
if($refererUrl['path']=="/submitpage.php")
$view_errors="提交成功!
返回比赛";
require("template/".$OJ_TEMPLATE."/error.php");
exit(0);
}
}
$lock_time = $end_time-($end_time-$start_time)*$OJ_RANK_LOCK_PERCENT;
//$lock_time=date("Y-m-d H:i:s",$lock_time);
$time_sql = "";
//echo $lock.'-'.date("Y-m-d H:i:s",$lock);
if (time()>$lock_time && time()<$end_time) {
//$lock_time=date("Y-m-d H:i:s",$lock_time);
//echo $time_sql;
$lock = true;
}
else {
$lock = false;
}
//require_once("contest-header.php");
}
else {
//require_once("oj-header.php");
if(isset($_SESSION[$OJ_NAME.'_'.'administrator']) // 管理员
||isset($_SESSION[$OJ_NAME.'_'.'source_browser']) //代码审查员
||(isset($_SESSION[$OJ_NAME.'_'.'user_id'])&&(isset($_GET['user_id'])&&$_GET['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id'])) // 普通用户查询自己的
){
if(isset($_SESSION[$OJ_NAME.'_'.'source_browser'])){
$sql="WHERE problem_id>0 "; // 默认只有管理员可以在练习状态看所有人的比赛提交,其他人只能在特意查询时查到自己的比赛提交
}else if ($_SESSION[$OJ_NAME.'_'.'user_id']!="guest"){
$sql="WHERE (contest_id=0 or contest_id is null) "; // 如果希望所有人能在练习状态直接查看自己的比赛提交,这里改成 where problem_id>0
}
}else{
$sql="WHERE solution.user_id not in ($OJ_RANK_HIDDEN) and problem_id>0 and (contest_id=0 or contest_id is null) "; // 如果希望所有人能在练习状态直接查看别人的比赛提交,这里改成 where problem_id>0
}
}
$start_first = true;
$order_str = " ORDER BY `solution_id` DESC ";
// check the top arg
if (isset($_GET['top'])) {
$top = strval(intval($_GET['top']));
if ($top!=-1)
$sql = $sql."AND `solution_id`<='".$top."' ";
}
// check the problem arg
$problem_id = "";
if (isset($_GET['problem_id']) && $_GET['problem_id']!="") {
if (isset($_GET['cid'])) {
$problem_id = htmlentities($_GET['problem_id'],ENT_QUOTES,'UTF-8');
$num = array_search($problem_id,$PID);
$problem_id = $PID[$num];
$sql = $sql."AND `num`='".$num."' ";
$str2 = $str2."&problem_id=".trim($problem_id);
}
else {
$problem_id = strval(intval($_GET['problem_id']));
if ($problem_id!='0') {
$sql = $sql."AND `problem_id`='".$problem_id."' ";
$str2 = $str2."&problem_id=".trim($problem_id);
}
else
$problem_id = "";
}
}
$param=array();
// check the user_id arg
$user_id = "";
if ((isset($OJ_ON_SITE_CONTEST_ID)&&$OJ_ON_SITE_CONTEST_ID>0&&!isset($_SESSION[$OJ_NAME.'_'.'administrator']))
|| ( isset($OJ_PUBLIC_STATUS) && !$OJ_PUBLIC_STATUS )
) {
if(!isset($_SESSION[$OJ_NAME.'_'.'user_id']))
$_GET['user_id']='Guest';
else if (!isset($_SESSION[$OJ_NAME.'_'.'source_browser']))
$_GET['user_id'] = $_SESSION[$OJ_NAME.'_'.'user_id'];
}
if (isset($_GET['user_id'])) {
$user_id = trim($_GET['user_id']);
if ( $user_id!="" ) {
$sql = $sql."AND solution.user_id=? ";
if ($str2!="")
$str2 = $str2."&";
$str2 = $str2."&user_id=".htmlentities(urlencode($user_id),ENT_QUOTES);
array_push($param,$user_id);
}
else{
$user_id = "";
}
}
if (isset($_GET['language'])){
$language = intval($_GET['language']);
if ($language>count($language_ext) || $language<0)
$language = -1;
if ($language!=-1) {
$sql = $sql."AND solution.`language`=? ";
$str2 = $str2."&language=".$language;
array_push($param,$language);
}
}else{
$language = -1;
}
if (isset($_GET['jresult'])){
$result = intval($_GET['jresult']);
if ($result!=-1 && !$lock) {
$sql = $sql."AND `result`=? ";
$str2 = $str2."&jresult=".$result;
array_push($param,$result);
}
}else{
$result = -1;
}
$showsim = isset($_GET['showsim']) ? intval($_GET['showsim']) : 0;
if ($OJ_SIM&$showsim>0) {
$fields="solution.*,users.nick,users.group_name,users.starred,sim.*";
}else{
$fields="solution.*,users.nick,users.group_name,users.starred";
}
if(isset($_GET['school'])&&trim($_GET['school'])!="" || isset($_GET['school'])&&trim($_GET['school'])!="" ){
$sql0="select $fields from solution solution inner join users users on solution.user_id=users.user_id";
if(isset($_GET['school'])&&trim($_GET['school'])!=""){
$school=trim($_GET['school']);
$sql.=" and users.school=? ";
array_push($param,trim($_GET['school']));
$str2 = $str2."&school=".htmlentities(trim($_GET['school']),ENT_QUOTES);
}
if(isset($_GET['group_name'])&&trim($_GET['group_name'])!=""){
$group_name=trim($_GET['group_name']);
$sql.=" and users.group_name=? ";
array_push($param,trim($_GET['group_name']));
$str2 = $str2."&group_name=".htmlentities(trim($_GET['group_name']),ENT_QUOTES);
}
}else{
$sql0="select $fields from solution inner join users on solution.user_id=users.user_id";
}
if ($OJ_SIM&$showsim>0) {
//$old=$sql;
$sql = $sql0." left join `sim` sim on solution.solution_id=sim.s_id ".$sql;
if ($showsim>0) {
$sql .= " and sim.sim>=$showsim";
$str2 .= "&showsim=$showsim";
}
//$sql=$sql.$order_str." LIMIT 20";
}
else {
$sql = $sql0." ".$sql;
}
//echo $sql;
//exit();
$sql = $sql.$order_str." LIMIT 50";
//echo $sql;
if (!empty($param)) {
$result = pdo_query($sql,$param);
}else{
$result = pdo_query($sql);
}
if (!empty($result))
$rows_cnt = count($result);
else
$rows_cnt = 0;
$top = $bottom=-1;
$cnt = 0;
if ($start_first) {
$row_start = 0;
$row_add = 1;
}
else {
$row_start = $rows_cnt-1;
$row_add = -1;
}
$view_status = Array();
$last = 0;
$avg_delay=0;
$total_count=0;
$need_refresh_remote=false;
for ($i=0; $i<$rows_cnt; $i++) {
$row = $result[$i];
//$view_status[$i]=$row;
if ($i==0 && $row['result']<4)
$last = $row['solution_id'];
if ($top==-1)
$top = $row['solution_id'];
$bottom = $row['solution_id'];
$flag = (!is_running(intval($row['contest_id'])))
|| isset($_SESSION[$OJ_NAME.'_'.'source_browser'])
|| isset($_SESSION[$OJ_NAME.'_'.'administrator'])
|| (isset($_SESSION[$OJ_NAME.'_'.'user_id'])&&!strcmp($row['user_id'],$_SESSION[$OJ_NAME.'_'.'user_id']));
$cnt = 1-$cnt;
$view_status[$i][0] = $row['solution_id'];
if ($row['contest_id']>0) {
if (isset($_SESSION[$OJ_NAME.'_'.'administrator']))
$view_status[$i][1] = "".$row['user_id']."";
else
$view_status[$i][1] = "".$row['user_id']."";
}
else {
if (isset($_SESSION[$OJ_NAME.'_'.'administrator']))
$view_status[$i][1] = "".$row['user_id']."";
else
$view_status[$i][1] = "".$row['user_id']."";
}
if(isset($row['starred']) && $row['starred'] >0 ) {
$view_status[$i][1]="⭐".$view_status[$i][1]."⭐"; //people who starred us ,we star them
}
$view_status[$i]['nick']=$row['nick'];
if ($row['contest_id']>0) {
if (isset($end_time) && time() < $end_time) {
$view_status[$i][2] = "";
}
else {
$view_status[$i][2] = "";
if (isset($cid)) {
//check the problem will be use remained contest/exam
$tpid = intval($row['problem_id']);
$sql = "SELECT `problem_id` FROM `problem` WHERE `problem_id`=? AND `problem_id` IN (
SELECT `problem_id` FROM `contest_problem` WHERE `contest_id` IN (
SELECT `contest_id` FROM `contest` WHERE (`defunct`='N' AND now()<`end_time`)
)
)";
$tresult = pdo_query($sql, $tpid);
if (intval($tresult) != 0) //if the problem will be use remaind contes/exam
$view_status[$i][2] .= $PID[$row['num']]; //hide link
else
$view_status[$i][2] .= "
".$PID[$row['num']]."";
}
else {
$view_status[$i][2] .= "
".$row['problem_id']."";
}
$view_status[$i][2] .= "
";
}
}
else {
$view_status[$i][2] = "";
}
switch($row['result']) {
case 4:
$MSG_Tips = $MSG_HELP_AC; break;
case 5:
$MSG_Tips = $MSG_HELP_PE; break;
case 6:
$MSG_Tips = $MSG_HELP_WA; break;
case 7:
$MSG_Tips = $MSG_HELP_TLE; break;
case 8:
$MSG_Tips = $MSG_HELP_MLE; break;
case 9:
$MSG_Tips = $MSG_HELP_OLE; break;
case 10:
$MSG_Tips = $MSG_HELP_RE; break;
case 11:
$MSG_Tips = $MSG_HELP_CE; break;
default:
$MSG_Tips = "";
}
if($row['result'] > 15){
$need_refresh_remote=true;
}
$AC_RATE = floatval($row['pass_rate']*100);
if (isset($OJ_MARK) && $OJ_MARK!="mark") {
if($OJ_MARK=="percent"&&$row['result']>4){
$mark = (100-$AC_RATE)."%";
}else{
$mark="";
}
}
else {
if($AC_RATE > 99||$row['result']==4)
$mark = "";
else
$mark = " ".$MSG_MARK.$AC_RATE;
}
if ((!isset($_SESSION[$OJ_NAME.'_'.'user_id']) || $row['user_id']!=$_SESSION[$OJ_NAME.'_'.'user_id']) && !isset($_SESSION[$OJ_NAME.'_'.'source_browser']))
$mark = "";
$view_status[$i][3] = "";
if (intval($row['result'])==11 && ((isset($_SESSION[$OJ_NAME.'_'.'user_id']) && $row['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id']) || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) {
$view_status[$i][3] .= "".$MSG_Compile_Error."";
}
else if ((((intval($row['result'])==8 || intval($row['result'])==7 || intval($row['result'])==5 || intval($row['result'])==6) && ($OJ_SHOW_DIFF || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) || $row['result']==10 || $row['result']==13) && ((isset($_SESSION[$OJ_NAME.'_'.'user_id']) && $row['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id']) || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) {
$view_status[$i][3] .= "".$judge_result[$row['result']].$mark."";
}
else {
if (!$lock || $lock_time>$row['in_date'] || $row['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id']) {
if ($OJ_SIM && $row['sim']>80 && $row['sim_s_id']!=$row['s_id']) {
$view_status[$i][3] .= "*".$judge_result[$row['result']];
if ($row['result']!=4 && isset($row['pass_rate']) && $row['pass_rate']!=1)
$view_status[$i][3] .= $mark."";
else
$view_status[$i][3] .= "";
if( isset($_SESSION[$OJ_NAME.'_'.'source_browser'])) {
$view_status[$i][3] .= "".$row['sim_s_id']."(".$row['sim']."%)";
}
else {
$view_status[$i][3] .= "".$row['sim_s_id']."";
}
if (isset($_GET['showsim']) && isset($row['sim_s_id'])) {
$view_status[$i][3] .= "";
}
}
else {
$view_status[$i][3] .= "".$judge_result[$row['result']].$mark."";
}
}
else {
$view_status[$i][3] = "----";
}
}
if (isset($_SESSION[$OJ_NAME.'_'.'http_judge'])) {
$view_status[$i][3] .= "";
}
if ($flag) {
if ($row['result']>=4) {
$view_status[$i][4] = "".$row['memory']." KiB
";
$view_status[$i][5] = "".$row['time']." ms
";
//echo "=========".$row['memory']."========";
}
else {
$view_status[$i][4] = "---";
$view_status[$i][5] = "---";
}
//echo $row['result'];
if (!(isset($_SESSION[$OJ_NAME.'_'.'user_id']) && strtolower($row['user_id'])==strtolower($_SESSION[$OJ_NAME.'_'.'user_id'])
|| isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) {
$view_status[$i][6] = $language_name[$row['language']];
}
else {
if( (isset($end_time) && time() < $end_time)
||(isset($_SESSION[$OJ_NAME.'_'.'user_id']) && strtolower($row['user_id'])==strtolower($_SESSION[$OJ_NAME.'_'.'user_id']))
||isset($_SESSION[$OJ_NAME.'_'.'source_browser'])
)
$view_status[$i][6] = "".$language_name[$row['language']]."";
else
$view_status[$i][6] = $language_name[$row['language']];
if( (!(isset($OJ_OLD_FASHINED) && $OJ_OLD_FASHINED )) && $OJ_TEMPLATE=="syzoj" && $OJ_AUTO_SHOW_OFF ) {
$edit_link="problem.php";
}else {
$edit_link="submitpage.php";
}
if ($row["problem_id"]>0) {
if ($row['contest_id']>0) {
if (isset($end_time)&&time()<$end_time || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))
$view_status[$i][6] .= "/Edit";
else
$view_status[$i][6] .= "";
}
else {
$view_status[$i][6] .= "/Edit";
}
}
}
$view_status[$i][7] = $row['code_length']." bytes";
}
else {
$view_status[$i][4] = "----";
$view_status[$i][5] = "----";
$view_status[$i][6] = "----";
$view_status[$i][7] = "----";
}
$used=(strtotime($row['judgetime'])-strtotime($row['in_date']));
if($used>0){
$avg_delay+=floatval($used);
$total_count++;
}
if (isset($_SESSION[$OJ_NAME.'_'.'administrator'])) {
$view_status[$i][8] = substr($row['in_date'],5)."[".$used."]";
$view_status[$i][9] = $row['judger'];
if ($status_admin_actions_enabled) {
$view_status[$i][10] = build_status_admin_actions(
$row['solution_id'],
$status_admin_postkey,
$status_admin_return_url,
status_admin_can_delete(intval($row['result'])),
$MSG_REJUDGE,
$MSG_DELETE
);
}
}
else
$view_status[$i][8]= $row['in_date'];
}
if($total_count>0) $avg_delay/= $total_count;
?>
$remote_delay)){
touch("remote.php");
?>