Пример #1
0
 function WT_ResetStatus()
 {
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     db_update('tester_solutions', array('status' => 0), '`status`=1');
 }
Пример #2
0
 function WT_GetProblem()
 {
     global $lid;
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if ($lid == '') {
         return;
     }
     $q = db_select('tester_problems', array('*'), '(`uploaded`=FALSE) AND (`lid`=' . $lid . ')', 'ORDER BY `id` LIMIT 1');
     if (db_affected() <= 0) {
         return;
     }
     $r = db_row($q);
     $s = unserialize($r['settings']);
     $arr = array();
     $arr['ID'] = $r['id'];
     if (isset($s['filename'])) {
         $arr['FILENAME'] = $s['filename'];
     }
     if (preg_match('/[0-9]+/', $s['checker'])) {
         $arr['CHECKER'] = $s['checker'];
     }
     print db_pack($arr);
 }
Пример #3
0
 function WT_GetTaskList()
 {
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     $q = db_query('SELECT `ts`.`id`, `ts`.`lid` ' . 'FROM `tester_solutions` AS `ts`, ' . '`tester_problems` AS `tp` ' . 'WHERE (`ts`.`status`=0) AND ' . '(`ts`.`problem_id`=`tp`.`id`) AND ' . '(`tp`.`uploaded`=2) ORDER BY `timestamp` LIMIT 15');
     while ($r = db_row($q)) {
         println($r['id'] . '@' . $r['lid']);
     }
 }
Пример #4
0
 function WT_GetChecker()
 {
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     $r = db_row(db_select('tester_checkers', array('*'), '`uploaded`=FALSE', 'LIMIT 1'));
     if ($r) {
         $s = unserialize($r['settings']);
         $arr = array('ID' => $r['id'], 'SRC' => $s['src'], 'COMPILERID' => $s['compiler_id']);
         print db_pack($arr);
     }
 }
Пример #5
0
 function WT_DeleteTask()
 {
     global $id, $lid;
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if (!isset($id) || !isset($lid)) {
         print 'Void filename for WT_DeleteTask';
         return;
     }
     db_update('tester_solutions', array('status' => 1), "`id`={$id} AND `lid`={$lid}");
 }
Пример #6
0
 function WT_PutChecker()
 {
     global $id, $err, $desc;
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if ($id == '') {
         print 'Void filename for WT_PutChecker()';
         return;
     }
     $data = db_row_value('tester_checkers', "`id`={$id}");
     $s = unserialize($data['settings']);
     $s['ERR'] = $err;
     $s['DESC'] = $desc;
     db_update('tester_checkers', array('uploaded' => 'TRUE', 'settings' => db_string(serialize($s))), "`id`={$id}");
 }
Пример #7
0
 function WT_PutSolution()
 {
     global $id, $lid, $ERRORS, $POINTS, $XPFS;
     $optional_params = array('REPORT');
     $update_params = array('COMPILER_MESSAGES', 'TESTS');
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if (!isset($id) || !isset($lid)) {
         print 'Void filename for WT_PutSOlution';
         return;
     }
     $r = db_row_value('tester_solutions', "`id`={$id} AND `lid`={$lid}");
     $p = unserialize($r['parameters']);
     for ($i = 0; $i < count($update_params); $i++) {
         if (isset($_POST[$update_params[$i]])) {
             $p[$update_params[$i]] = stripslashes($_POST[$update_params[$i]]);
         }
     }
     if ($POINTS == '') {
         $POINTS = 0;
     }
     $n = count($optional_params);
     for ($i = 0; $i < $n; $i++) {
         $p[$optional_params[$i]] = stripslashes($GLOBALS[$optional_params[$i]]);
     }
     unset($p['force_status']);
     $data = array();
     if (isset($_POST['SOLUTION_OUTPUT'])) {
         $data['outputs'] = stripslashes($_POST['SOLUTION_OUTPUT']);
     }
     if (isset($_POST['CHECKER_OUTPUT'])) {
         $data['checker_outputs'] = stripslashes($_POST['CHECKER_OUTPUT']);
     }
     if (count($data) > 0) {
         $path = '/tester/testing/';
         $XPFS->CreateDirWithParents($path);
         $XPFS->removeItem($path . '/' . $id);
         $XPFS->createFile($path, $id, 0, db_pack($data));
     }
     db_update('tester_solutions', array('status' => 2, 'points' => $POINTS, 'errors' => db_string($ERRORS), 'parameters' => db_string(serialize($p))), "`id`={$id} AND `lid`={$lid}");
 }
Пример #8
0
 function WT_PutProblem()
 {
     global $id, $lid, $err, $desc;
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if ($id == '') {
         print 'Void filename for WT_PutProblem()';
         return;
     }
     if ($lid == '') {
         print 'Void library identifier for WT_PutProblem()';
         return;
     }
     $data = db_row_value('tester_problems', "(`id`={$id}) AND (`lid`={$lid})");
     $s = unserialize($data['settings']);
     $s['ERR'] = $err;
     $s['DESC'] = $desc;
     unset($s['filename']);
     db_update('tester_problems', array('uploaded' => $err != 'OK' ? 1 : 2, 'settings' => db_string(serialize($s))), "(`id`={$id}) AND (`lid`={$lid})");
 }
Пример #9
0
 function WT_GetTask()
 {
     global $id, $lid;
     if (!WT_IPC_CheckLogin()) {
         return;
     }
     if (!isset($id) || !isset($lid)) {
         print 'Void filename for WT_GetTask()';
         return;
     }
     $solution = db_row(db_select('tester_solutions', array('*'), "`id`={$id}"));
     if ($solution['id'] == '') {
         return;
     }
     $contest = db_row(db_select('tester_contests', array('*'), '`id`=' . $solution['contest_id'] . ' AND `lid`=' . $lid));
     $problem = db_row(db_select('tester_problems', array('*'), '`id`=' . $solution['problem_id'] . ' AND `lid`=' . $lid));
     $contest['settings'] = unserialize($contest['settings']);
     $solution['parameters'] = unserialize($solution['parameters']);
     $arr = array();
     // Solution's based settings
     $arr['PROBLEMID'] = $solution['problem_id'];
     $arr['COMPILERID'] = $solution['parameters']['compiler_id'];
     $arr['SOURCE'] = $solution['parameters']['src'];
     if ($contest['settings']['rules'] == 0) {
         $arr['ACM'] = 'TRUE';
     } else {
         $arr['ACM'] = 'FALSE';
     }
     // Problem's passed settings
     $prpars = unserialize($problem['settings']);
     $arr['TIMELIMIT'] = $prpars['timelimit'];
     $arr['MEMORYLIMIT'] = $prpars['memorylimit'];
     $arr['INPUTFILE'] = $prpars['input'];
     $arr['OUTPUTFILE'] = $prpars['output'];
     $arr['TESTS'] = $prpars['tests'];
     $arr['BONUS'] = $prpars['bonus'];
     print db_pack($arr);
 }