';
// Sök fram vald organisation, om ingen så skriv "Hela universitetet"
if ($org) {
$department = mysql_fetch_assoc(db_query(sprintf('SELECT luNumber, name, path FROM departments WHERE luNumber = "%s"', $org)));
} else {
$department['name'] = 'Hela universitetet';
}
// Hämta statistik för vald organisation
$departmentRow = examine($department['luNumber'], $department['name']);
// Skapa tillbaka-länk
preg_match('/[0-9]+,([0-9]+)/', $department['path'], $match);
$upLevel = $org ? sprintf('
', $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']));
}
// Skapa förklaringar
$explainations .= sprintf('
',
$department['name'],
$org,
sprintf($tableHeadFormat, $upLevel, 'Organisation'),
$departmentRow,
sprintf($tableHeadFormat, $department['name'], 'Underorganisationer'),
$subDepartmentRows,
'Det är personerna under "ja" som ska migreras till nya Lucat och som behöver tilldelas verksamhetsroller. Av dessa finns de färdigbehandlade personerna under "Tilldelade" (för att de har fått "roller" eller "inga"). Resterande personer är "obehandlade" och återstår att göra. 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 olika individer på LU. 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.'
);
// Hämta statistik för en organisation
function examine($org, $name) {
// Hämta antalet personer i migreringskategorier 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 COUNT(*) number
FROM departments
INNER JOIN categories USING (luNumber)
WHERE %s
AND onlyLucat
AND category NOT IN (0, 1, 4, 5, 10, 20, 30)
', $where));
$categories = mysql_fetch_assoc($result);
// 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));
$nbr = mysql_fetch_assoc($result);
// Hämta antalet med verksamhetsroller totalt resp. antal ingen verksamhetsroll
$result = db_query(sprintf('
SELECT COUNT(roleid) number, SUM(NOT roleid) nonRoles
FROM departments
INNER JOIN roles USING (luNumber)
WHERE %s
AND migrate
', $where));
$roles = mysql_fetch_assoc($result);
// Antal personer som ska migreras
$migrates = $nbr['nbrPrimula'] + $categories['number'];
// Extra säkerhetsåtgärd så att kvoten aldrig blir större än 100 %
$migrates = max($migrates, $roles['number']);
// Antal obehandlade personer
$untreated = $migrates - $roles['number'];
// Skapa en tabellrad
return sprintf('