56 lines
1.8 KiB
PHP
56 lines
1.8 KiB
PHP
<?php
|
|
|
|
require_once('../include/json-header.php');
|
|
require_once('../include/manifest-generator.php');
|
|
require_once('../include/report-processor.php');
|
|
|
|
function main($post_data) {
|
|
set_exit_detail('failureStored', false);
|
|
|
|
$maintenance_mode = config('maintenanceMode');
|
|
if ($maintenance_mode && !config('maintenanceDirectory'))
|
|
exit_with_error('MaintenanceDirectoryNotSet');
|
|
|
|
$db = new Database;
|
|
if (!$maintenance_mode && !$db->connect())
|
|
exit_with_error('DatabaseConnectionFailure');
|
|
|
|
// Convert all floating points to strings to avoid parsing them in PHP.
|
|
// FIXME: Do this conversion in the submission scripts themselves.
|
|
$parsed_json = json_decode(preg_replace('/(?<=[\s,\[])(\d+(\.\d+)?)(\s*[,\]])/', '"$1"$3', $post_data), true);
|
|
if (!$parsed_json)
|
|
exit_with_error('FailedToParseJSON');
|
|
|
|
set_exit_detail('processedRuns', 0);
|
|
foreach ($parsed_json as $i => $report) {
|
|
if (!$maintenance_mode) {
|
|
$processor = new ReportProcessor($db);
|
|
$processor->process($report);
|
|
}
|
|
set_exit_detail('processedRuns', $i + 1);
|
|
}
|
|
|
|
if ($maintenance_mode) {
|
|
$files = scandir(config_path('maintenanceDirectory', ''));
|
|
$i = 0;
|
|
$filename = '';
|
|
do {
|
|
$i++;
|
|
$filename = "$i.json";
|
|
} while (in_array($filename, $files));
|
|
file_put_contents(config_path('maintenanceDirectory', $filename), $post_data, LOCK_EX);
|
|
} else {
|
|
$generator = new ManifestGenerator($db);
|
|
if (!$generator->generate())
|
|
exit_with_error('FailedToGenerateManifest');
|
|
else if (!$generator->store())
|
|
exit_with_error('FailedToStoreManifest');
|
|
}
|
|
|
|
exit_with_success();
|
|
}
|
|
|
|
main(file_get_contents('php://input'));
|
|
|
|
?>
|