/** * edit * @param array $data_config * @return void */ public static function edit($data_config) { $prob_id = $data_config['id']; $data_config = self::format($data_config); $data_config['version'] = time(); $data_config = BFL_XML::Array2XML($data_config); $prob_meta = new MDL_Problem_Meta($prob_id); $prob_meta->setVar('data_config', $data_config); $prob_meta->setVar('verified', 0); }
public static function verify($data_config) { $verify_result['testdata_path'] = MDL_Config::getInstance()->getVar('judger_testdata') . $data_config['name'] . '/'; $verify_result['overall'] = ''; if (!file_exists($verify_result['testdata_path'])) { //testdata_path not exist $verify_result['overall'] = 'testdata_path'; return $verify_result; } $hash_code = ''; $verify_result['checker'] = true; if ($data_config['checker']['type'] == 'custom') { $checker_file = $verify_result['testdata_path'] . $data_config['checker']['custom']['source']; if (file_exists($checker_file)) { $hash_code .= sha1_file($checker_file, true); } else { $verify_result['checker'] = false; $verify_result['overall'] = 'checker'; } } $success = true; $case_id = 0; foreach ($data_config['case'] as $item) { $input_file = $verify_result['testdata_path'] . $item['input']; $output_file = $verify_result['testdata_path'] . $item['output']; if (file_exists($input_file)) { $verify_result['case'][$case_id]['input'] = true; $hash_code .= sha1_file($input_file, true); } else { $verify_result['case'][$case_id]['input'] = false; $success = false; } if (file_exists($output_file)) { $verify_result['case'][$case_id]['output'] = true; $hash_code .= sha1_file($output_file, true); } else { $verify_result['case'][$case_id]['output'] = false; $success = false; } ++$case_id; } $hash_code = sha1($hash_code); if (!$success) { $verify_result['overall'] = 'case'; } else { $verify_result['hash_code'] = $hash_code; $problem_meta = new MDL_Problem_Meta($data_config['id']); $problem_meta->setVar('verified', 1); } return $verify_result; }
/** * edit * @param array $problem * @return void */ public static function edit($problem) { self::verify($problem); $db = BFL_Database::getInstance(); $meta = array('`prob_name` = :prob_name', '`prob_title` = :prob_title', '`prob_content` = :prob_content'); $stmt = $db->update(DB_TABLE_PROB, $meta, 'where `prob_id`=:prob_id '); $stmt->bindParam(':prob_id', $problem['prob_id']); $stmt->bindParam(':prob_name', $problem['prob_name']); $stmt->bindParam(':prob_title', $problem['prob_title']); $stmt->bindParam(':prob_content', $problem['prob_content']); $stmt->execute(); $prob_meta = new MDL_Problem_Meta($problem['prob_id']); $prob_meta->setVar('display', $problem['display']); }