- <?php
- /** Szobalista feltöltésére szolgáló felület kódja
- * @package koliportal
- */
- $sql_i = array();
-
-
- /** Egy szoba adatainak ellenőrzése
- *
- * Ellenrőzi a feltöltött CSV fájl egy sorát.
- *
- * @todo Az épületazonosító érvényességének ellenőrzése mehetne egy
- * függvénybe, ahol staticban tárolódna a $barr - gyorsabb lenne -
- * vagy már ilyen a get_buildings_list() is?
- *
- * @param array $arr A rekord mezői tömbben
- * @return mixed true: ha minden megfelelő, egyébként hibaüzenet
- */
- function check_room_row($arr)
- {
- /* a "roomid" -t ennél jobban nem kell ellenőrizni,
- mert új szobánál akár hiányozhat is */
- if (!isset($arr["roomid"]))
- {
- return "Nincs roomid mező";
- }
- if (!isset($arr["rnum"]) || (strlen($arr["rnum"]) < 2))
- {
- return "Hiányzó szobaszám!";
- }
-
- if (!isset($arr["space"]) || !is_numeric($arr["space"]))
- {
- return "Hiányzó vagy érvénytelen a férőhelyek száma";
- }
-
- /** */
- $barr = get_buildings_list();
- if (!isset($barr[$arr["bid"]]))
- {
- return "Nem létező épületazonosító";
- }
-
- $allowed_rtypes["ST_HOMOGEN"] = true;
- $allowed_rtypes["ST_MALE"] = true;
- $allowed_rtypes["ST_FEMALE"] = true;
- $allowed_rtypes["ST_HETEROGEN"] = true;
- if (!isset($allowed_rtypes[$arr["rtype"]]))
- {
- return "Érvénytelen szobakategória!";
- }
-
- return true;
- }
-
-
- if (count($_POST) > 0)
- {
- debug_echo("post OK");
- if (isset($_FILES["szlist"]) &&
- is_uploaded_file($_FILES["szlist"]["tmp_name"]))
- {
-
- $f = fopen($_FILES["szlist"]["tmp_name"], 'r');
- if ($f === false)
- {
- myerr("Fájlmegnyitási hiba a szerveren.");
- }
-
- while (!feof ($f))
- {
- $line = fgets($f, 1024);
- if ($line === false)
- break;
-
- $arr = csv2array($line, $CSV_ROOMLIST_FSEQ);
- $chk = check_room_row($arr);
- if (true !== $chk)
- {
- $errs[] = $chk;
- $errc++;
- $sql_i = array();
- break;
- }
-
- /* módosításnál csak a név és az épület változhat, ha mást
- is akar módosítani, akkor ajánlatos előbb törölni.
- pl.: ha megváltozik a férőhelyek száma, csökken, akkor oda
- a konzisztencia a room_conn_student táblával */
- if (is_room_exist($arr["roomid"]))
- {
- $sql_i[] = sprintf("UPDATE rooms SET rnum = '%s',
- rname = '%s', bid = '%d' WHERE roomid = '%d'", $arr["rnum"], $arr["rname"],
- $arr["bid"], $arr["roomid"]);
- } else {
- $sql_i[] = sprintf("INSERT INTO rooms (rnum, rname, bid, space, rtype)
- VALUES ('%s', '%s', '%d', '%d', '%s')",
- $arr["rnum"], $arr["rname"], $arr["bid"], $arr["space"], $arr["rtype"]);
- }
- }
- fclose($f);
-
- } else {
- myerr("Töltsön fel helyes fájlt!");
- }
-
- } else {
- /* nincs semmi tennivalónk? */
- ?>
-
- <?php
- }
-
- ?>
- <h2>Szobalista feltöltése</h2>
-
- <p id="szobalist_upload_form">
- <form enctype="multipart/form-data" id="szobalista_upload" method="post" action="<?= $_SERVER["PHP_SELF"] ?>?action=<?= $action ?>">
- Szobalista:
- <input type="file" id="szlist" name="szlist" /><br />
- <input type="submit" value="feltölt" />
- <input type="hidden" id="sz" name="sz" value="sz" />
- </form>
- </p>
-
- <?php
- show_errors($errs);
- ?>
-
- <p>
- <?php
- if (count($sql_i) > 0)
- {
- $c = 0;
- $sql_d = "DELETE FROM rooms";
- //mysql_query($sql_d, $database)
- //or myerr("Az adatbázis kiürítése nem sikerült.");
-
- reset($sql_i);
- while (list(, $i) = each($sql_i))
- {
- //echo $i . "\n";
- mysql_query($i, $database)
- or myerr("Adatfeltöltési hiba! ($i)");
- $c++;
- }
- printf("%d rekord sikeresen feltöltve/módosítva.", $c);
- }
- ?>
- </p>