コード例 #1
0
ファイル: get_problem.php プロジェクト: Nazg-Gul/gate
 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);
 }
コード例 #2
0
ファイル: get_checker.php プロジェクト: Nazg-Gul/gate
 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);
     }
 }
コード例 #3
0
ファイル: put_solution.php プロジェクト: Nazg-Gul/gate
 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}");
 }
コード例 #4
0
ファイル: wt.php プロジェクト: Nazg-Gul/gate
 function CreateSettings()
 {
     global $XPFS;
     $cfg = db_unpack($XPFS->readFile('/tester/wt.cfg'));
     if ($cfg['initialized']) {
         return;
     }
     manage_settings_create('Имя хоста основного сервера WebTester', 'WebTester', 'WT_server_host', 'CSCText');
     manage_settings_create('IPC-порт основного сервера WebTester', 'WebTester', 'WT_server_port', 'CSCNumber');
     manage_settings_create('Логин на основной сервер WebTester', 'WebTester', 'WT_server_login', 'CSCText');
     manage_settings_create('Пароль на основной сервер WebTester', 'WebTester', 'WT_server_pass', 'CSCPassword');
     manage_setting_use('WT_server_host');
     manage_setting_use('WT_server_port');
     manage_setting_use('WT_server_login');
     manage_setting_use('WT_server_pass');
     $cfg['initialized'] = 1;
     $XPFS->createDirectory('/', 'tester');
     $XPFS->createFile('/tester', 'wt.cfg');
     $XPFS->writeBlock('/tester/wt.cfg', db_pack($cfg));
 }
コード例 #5
0
ファイル: get_task.php プロジェクト: Nazg-Gul/gate
 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);
 }