protected function Compilation()
{
$css = new \Stdclass();
$css->displayTitles = true;
$css->titles = array('Version', 'Count', 'Fraction', 'Files', 'Errors');
$css->readOrder = $css->titles;
$total = $this->datastore->querySingle('SELECT value FROM hash WHERE key = "files"');
$info = array();
foreach ($this->config->other_php_versions as $suffix) {
$res = $this->datastore->querySingle('SELECT name FROM sqlite_master WHERE type="table" AND name="compilation' . $suffix . '"');
if (!$res) {
continue;
// Table was not created
}
$res = $this->datastore->query('SELECT file FROM compilation' . $suffix);
$files = array();
while ($row = $res->fetchArray(\SQLITE3_ASSOC)) {
$files[] = $row['file'];
}
$version = $suffix[0] . '.' . substr($suffix, 1);
if (empty($files)) {
$files = 'No compilation error found.';
$errors = 'N/A';
$total_error = 'None';
} else {
$res = $this->datastore->query('SELECT error FROM compilation' . $suffix);
$readErrors = array();
while ($row = $res->fetchArray(\SQLITE3_ASSOC)) {
$readErrors[] = $row['error'];
}
$errors = array_count_values($readErrors);
$errors = array_keys($errors);
$errors = array_keys(array_count_values($errors));
$total_error = count($files) . ' (' . number_format(count($files) / $total * 100, 0) . '%)';
$files = array_keys(array_count_values($files));
}
$array = array('version' => $version, 'total' => $total, 'total_error' => $total_error, 'files' => $files, 'errors' => $errors);
$info[] = $array;
}
return $this->formatCompilationTable($info, $css);
}