%sMigrering?TilldeladeObehandlade%sjanejrolleringaproc.antalproc.'; // 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('
[upp en nivå]
', $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('

Kategorier

Underkategorier

Övrigt

Okategoriserade

', $catsExplainations, $subCatsExplainations, $otherCatsExplainations, '
  • okat. – Okategoriserade
  • utred. – Behöver utredas
  • under. – Saknar underkategorier
  • ' ); // Skapa tabellen $content .= sprintf('

    %s

    [Nytt: Visa saknade personers namn]   [Visa personkategorisering]   [Logga ut]

    %s%s%s%s

    %s

    ', $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('%s%s%s%s%s%s%s%s', $name . ' ' . $abc, $migrates ? $migrates . ' st' : '', $nbr['nbrLucat'] - $categories['number'] ? ($nbr['nbrLucat'] - $categories['number']) . ' st' : '', $roles['number'] - $roles['nonRoles'] ? ($roles['number'] - $roles['nonRoles']) . ' st' : '', $roles['nonRoles'] ? $roles['nonRoles'] . ' st' : '', $migrates ? round(($roles['number'] / $migrates) * 100) . ' %' : '', $untreated ? $untreated . ' st' : '', $untreated ? round($untreated / $migrates * 100) . ' %' : '', !$untreated ? 'green' : '' ); } // Koppla ifrån databasen db_close(); // HTML-sida $formatSida = ' %1$s

    %1$s

    %3$s '; // jQuery-kod $jquery = ' $("[colspan], :nth-child(1), :nth-child(3), :nth-child(6), :nth-child(8)", "table.statistics tr").addClass("last"); $("p.info").width($("table.statistics").width()); '; // Skriv ut allt echo sprintf($formatSida, 'IAM – verksamhetsroller', $jquery, $content . $simulateForms); ?>