- <?php
- /** Szobabeosztás vezérlése
- *
- * A szobabeosztást vezérlő programrészlet.
- *
- * @package koliportal
- */
- /*
- - páros szobák (nem1 != nem2) és első hely
- -
- JOIN-nal mellérakni a neveket
-
- FIXME: csak diákokat lehessen beosztani a szobákba
- */
-
- /** függvények behúzása */
- (dirname(__FILE__) . "/../lib/lib.assign.php");
- /** függvények behúzása */
- (dirname(__FILE__) . "/inc_tabla_func.php");
-
- /** Időbélyeges szövegmegjelenítés
- *
- * Fejlesztői funkció, amely a naplózásban segít.
- *
- * @param string $text a kiírandó szöveg
- */
- function show_log($text)
- {
- $out = '<p class="log"><span class="logdt">[';
- $out .= strftime("%Y-%m-%d %H:%M:%S");
- $out .= ']</span> ';
- $out .= $text;
- $out .= "</p>\n";
-
- echo $out;
-
- }
- /** hr tag kiírása
- *
- * Elválasztásra szolgál.
- */
- function show_line()
- {
- $out = '<hr width="75%" align="left">';
- echo $out;
- }
-
- /* lekérdezés a páros szobákhoz, különböző neműek és egymást
- jelölték be első helyen */
-
- /* FIXME: minden épületnél ellenőrizni helyek és a diákok számát */
- /* FIXME: ágykombinációk kialakítása, hogy pontosan beférjenek a userek */
-
- /* FIXME: szoba típusa sql-be, mert pl jászon vannak olyan szobák, ahova
- csak lányok kerülhetnek, illetve fordítva */
-
-
- $blist = get_buildings_list();
-
- /* ha kaptunk paramétert $_GET -ben */
- if (isset($_GET["bid"]) && is_numeric($_GET["bid"]) && isset($blist[$_GET["bid"]]))
- {
- $bid = (int)($_GET["bid"]);
- $barr = $blist[$bid];
- show_log(sprintf("Szobabeosztás kezdése, épület: %s (%s)", $barr["bsname"], $barr["bname"]));
- //debug_echo(sprintf("%s épület start!", $barr["bsname"]), DEBUG_H1);
-
- foreach ( array(ST_HETEROGEN, ST_FEMALE, ST_MALE) as $st)
- {
- show_log(sprintf("szobatípus: %s (%s)", $st, get_stname($st)));
- $students = get_student_list($bid, $st);
- show_log("\tTalálat: " . count($students) . " fő");
-
- if (1 > count($students)) {
- //debug_echo("Nincsenek $st hallgatók.");
- show_log(sprintf("Nincsenek %s típusú szobát kérő hallgatók.", $st));
- } else {
- $rooms = get_roomlist($bid, $st);
- $rooms = strip_extra_rooms($rooms, $st, count($students));
-
- //debug_echo("roomlist $st ok");
- show_log(sprintf("szobalista lekérdezve: %d db (space: %d) OK", count($rooms), sum_room_space($rooms)));
- if (1 > count($rooms)) {
- //debug_echo(sprintf("Nincsenek %s típusú szobák.", $st));
- show_log(sprintf("nincsenek %s típusú szobák", $st));
- } else {
- show_log(sprintf("hallgatók beosztása a szobákba"));
- assign_students_to_rooms($rooms, $students, $st);
- }
- }
- }
-
- /* megmaradt diákok bepakolása szobákba */
- //debug_echo("megmaradt diákok bepakolása szobákba", DEBUG_H2);
-
- show_log("Az előzőekből kimaradt hallgatók beosztása");
-
- foreach ( array(ST_FEMALE, ST_MALE) as $st)
- {
- //debug_echo("megmaradt $st beosztás", DEBUG_H1);
- show_log("Megmaradt $st hallgatók beosztása");
-
- $students = collect_unassigned_students($bid, $st);
- show_log(sprintf("Megmaradt $st hallgatók: %d fő", count($students)));
- //debug_echo("Megmarad diákok: " . count($students));
- if (count($students) > 0)
- {
- $rooms = get_roomlist($bid, $st);
- assign_unassigned_students_to_rooms($rooms, $students);
- }
- }
- } // $blist if
-
- ?>