mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-22 08:58:42 +00:00
fix(uoj/1/app/libs): fix no preview of text files in problem_data_manage
When managing data, there will be a preview of test data or validator binary file. But in PHP7 the prefiew of test data text file or problem.conf text file is not shown. After my test it is caused by file_get_contents() when passing offset with -1. It is strange that the manual on php.net in Chinese the default of $offset is -1, but in English the default of $offset is 0. Use -1 will get nothing, 0 instead is fine. The commit also change uojFilePreview() that can also be used as viewing binary file. For backwards compatibility, we just set text as the default file type and no need to specify.
This commit is contained in:
parent
58e70164ba
commit
c1294121d3
@ -65,7 +65,7 @@ EOD;
|
|||||||
if (strStartWith($mimetype, 'text/')) {
|
if (strStartWith($mimetype, 'text/')) {
|
||||||
echo htmlspecialchars(uojFilePreview($file_full_name, $output_limit));
|
echo htmlspecialchars(uojFilePreview($file_full_name, $output_limit));
|
||||||
} else {
|
} else {
|
||||||
echo htmlspecialchars(strOmit(shell_exec('xxd -g 4 -l 5000 ' . escapeshellarg($file_full_name) . ' | head -c ' . ($output_limit + 4)), $output_limit));
|
echo htmlspecialchars(uojFilePreview($file_full_name, $output_limit, 'binary'));
|
||||||
}
|
}
|
||||||
echo "\n</pre>";
|
echo "\n</pre>";
|
||||||
}
|
}
|
||||||
|
@ -24,8 +24,13 @@ function uojHandleAtSign($str, $uri) {
|
|||||||
return array($res, $referrers_list);
|
return array($res, $referrers_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
function uojFilePreview($file_name, $output_limit) {
|
function uojFilePreview($file_name, $output_limit, $file_type = 'text') {
|
||||||
return strOmit(file_get_contents($file_name, false, null, -1, $output_limit + 4), $output_limit);
|
switch ($file_type) {
|
||||||
|
case 'text':
|
||||||
|
return strOmit(file_get_contents($file_name, false, null, 0, $output_limit + 4), $output_limit);
|
||||||
|
default:
|
||||||
|
return strOmit(shell_exec('xxd -g 4 -l 5000 ' . escapeshellarg($file_name) . ' | head -c ' . ($output_limit + 4)), $output_limit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uojIncludeView($name, $view_params = array()) {
|
function uojIncludeView($name, $view_params = array()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user