', $match[1]) : '';
// Hämta alla underorganisationer till vald organisation
$where = $_GET['org'] ? sprintf('FIND_IN_SET("%s", d1.path) = 2', $org) : 'd1.luNumber = d1.path';
$result = db_query(sprintf('
SELECT d1.luNumber, d1.name, d2.luNumber children
FROM departments d1
LEFT JOIN departments d2 ON FIND_IN_SET(d1.luNumber, d2.path) = 2
WHERE %s
AND NOT d1.isEmpty
GROUP BY d1.luNumber
ORDER BY name
', $where));
// Gå igenom underorganisationer och hämta statistik för dem
while ($row = mysql_fetch_assoc($result)) {
$subDepartmentRows .= examine($row['luNumber'], sprintf($row['children'] ? '%2$s' : '%2$s', $row['luNumber'], $row['name']), $cats + $subCats + $otherCats);
}
// Skapa förklaringar
$explainations .= sprintf('
%s',
$department['name'],
$org,
sprintf($tableHeadFormat, $upLevel, 'Organisation'),
$departmentRow,
sprintf($tableHeadFormat, $department['name'], 'Underorganisationer'),
$subDepartmentRows,
'Antalet är inläggningar i LUCAT, så en person som finns på flera olika organisationer i LUCAT räknas alltså flera gånger och därför kan det bli en högre totalsumma i översikten än antalet anställda på LU. De första procenttalen avser LUCAT-inläggningar som har kategoriserats, medan de röda procenttalen i sista kolumnen är det kategoriseringsarbete som återstår att göra. Klicka på de blå organisationsnamnen för att komma nedåt i organisationshierarkin, dvs. för att se fakulteter, sektioner, institutioner, avdelningar osv. Informationen från Primula och LUCAT uppdateras varje natt i den här översikten.',
$explainations
);
// Observera att personer som är inlagda i LUCAT flera gånger (dvs. vid olika organisationer) räknas flera gånger. Det är därför antalet i sammanställningen blir större antalet personer.
// Hämta statistik för en organisation
function examine($org, $name, $cats) {
// Hämta antalet i olika kategorierer för organisationen med allt under i hela hierarkin (om ingen vald så hämta allt)
$where = $org ? sprintf('FIND_IN_SET("%s", path)', $org) : '1';
$result = db_query(sprintf('
SELECT category, COUNT(*) number
FROM departments
INNER JOIN categories USING (luNumber)
WHERE %s
AND onlyLucat
AND category
GROUP BY category
', $where));
while ($row = mysql_fetch_assoc($result)) {
if ($row['category'] == 20) {
$investigate = $row['number'];
} elseif (in_array($row['category'], array(4, 5))) {
$noSubCats += $row['number'];
} else {
$categories[$row['category']] = $row['number'];
if ($row['category'] >= 40 && $row['category'] < 50) {
$categories[5] += $row['number'];
} elseif ($row['category'] == 7 || $row['category'] >= 50 && $row['category'] < 70) {
$categories[4] += $row['number'];
}
}
}
// Gå igenom kategorierna och skapa en tabellcellerna
foreach (array_keys($cats) as $cat) {
$categoriesRow .= $categories[$cat] ? sprintf('
%d st
', $categories[$cat]) : '
';
}
// Hämta summan av alla i Primula och alla utanför Primula för organisationen med allt under i hela hierarkin (om ingen vald så hämta allt)
$result = db_query(sprintf('
SELECT SUM(nbrPrimula) nbrPrimula, SUM(nbrLucat) nbrLucat
FROM departments
WHERE %s
', $where));
$row = mysql_fetch_assoc($result);
// Antal kategoriserade: absolut antal
$sum = intval(array_sum((array) $categories)) - $categories[4] - $categories[5];
// Uppdatera antalet utanför Primula om antalet kategoriserade och under utredning blir för stort
$row['nbrLucat'] = max($row['nbrLucat'], $sum + $noSubCats + $investigate);
// Antal kategoriserade: relativt utanför Primula
$frac = $sum / $row['nbrLucat'];
// Skapa en tabellrad
return sprintf('