- <?php
- /** Diáklista feltöltése
- * @package koliportal
- * @todo csv2array() használata
- */
-
- /** Egy felhasználó adatainak ellenőrzése
- *
- * Ellenrőzi a feltöltött CSV fájl egy sorát.
- *
- * @todo Lehetne azt is ellenőrizni, hogy van-e már ilyen username.
- * @param array $arr A rekord mezői tömbben
- * @return mixed true: ha minden megfelelő, egyébként hibaüzenet
- */
- function check_student_row($arr)
- {
- $barr = get_buildings_list();
-
- if (!isset($barr[$arr["bid"]]))
- {
- return "Nem létező épületazonosító";
- }
-
- if (strlen($arr["realname"]) < 3)
- {
- return "Rövid név!";
- }
- if (strlen($arr["username"]) < 3)
- {
- return "Rövid felhasználónév!";
- }
- if (strlen($arr["password"]) < 3)
- {
- return "Rövid jelszó!";
- }
- if ($arr["sex"] != 'M' && $arr["sex"] != 'F')
- {
- return "Hibás nem";
- }
-
- $allowed_uts["UT_ASTUDENT"] = true;
- $allowed_uts["UT_OSTUDENT"] = true;
- if (!isset($allowed_uts[$arr["ut"]]))
- {
- return "Érvénytelen felhasználó kategória!";
- }
-
- $allowed_yesno["N"] = $allowed_yesno["Y"] = true;
- if (!isset($allowed_yesno[$arr["disabled"]]))
- {
- return "Érvénytelen aktív/inaktív oszlop!";
- }
-
-
- return true;
-
- }
-
-
- $sql_i = array();
-
- if (count($_POST) > 0)
- {
- debug_echo("post OK");
- if (isset($_FILES["dlist"]) &&
- is_uploaded_file($_FILES["dlist"]["tmp_name"]))
- {
-
- $f = fopen($_FILES["dlist"]["tmp_name"], 'r');
- if ($f === false)
- {
- myerr("Fájlmegnyitási hiba a szerveren.");
- }
-
- while (!feof ($f))
- {
- $line = fgets($f, 1024);
- if ($line === false)
- break;
-
- $line = addslashes(trim($line));
-
- if (strlen($line) > 2)
- {
- $ff = explode(";", $line);
- $sid = $arr["sid"] = $ff[0];
- $realname = $arr["realname"] = trim($ff[1]);
- $username = $arr["username"] = trim($ff[2]);
- $email = $arr["email"] = trim($ff[3]);
- $password = $arr["password"] = trim($ff[4]);
- $sex = $arr["sex"] = substr($ff[5], 0, 1);
- $ut = $arr["ut"] = $ff[6];
- $bid = $arr["bid"] = $ff[7];
- $disabled = $arr["disabled"] = $ff[8];
- $av = $arr["av"] = $ff[9];
-
-
- $err = check_student_row($arr);
-
- if (is_student_exist($sid))
- {
- /* automatikusan kezeljük az MD5 és a sima jelszavakat */
- if (strlen($password) != 32) {
- $pwfield = "MD5(CONCAT('$password', '$username'))";
- } else {
- $pwfield = "'$password'";
- }
-
- $li = $sql_i[] = "UPDATE users SET realname = '$realname',
- username = '$username', email = '$email', password = $pwfield, sex = '$sex',
- ut = '$ut', bid = '$bid', disabled = '$disabled', av = '$av' WHERE sid = '$sid' AND username = '$username'";
-
- if ($ut == 'UT_OSTUDENT' || ($bid != get_student_bid($sid)) || ($sex != get_student_st($sid)))
- {
- // ha átállítjuk öregdiákra, akkor ne legyen benne egy szobában sem!
- $sql_i[] = "DELETE FROM room_conn_student WHERE sid = '$sid'";
- /* QQQ: sex is ide tartozna? azt sem lehet módosítani? */
- }
- } else {
- if (strlen($password) != 32) {
- $pwfield = "MD5(CONCAT('$password', '$username'))";
- } else {
- $pwfield = "'$password'";
- }
- $li = $sql_i[] = "INSERT INTO users (realname, username, email, password, sex, ut, bid, disabled, av)
- VALUES ('$realname', '$username', '$email', $pwfield, '$sex', '$ut', '$bid', '$disabled', '$av')";
- }
- if (true !== $err)
- {
- printf("%s<br />Hiba: %s", $li, $err);
- die();
- }
- }
- }
- fclose($f);
-
- } else {
- myerr("Tölts fel normális fájlt!");
- }
-
- } else {
- ?>
-
- <?php
- }
-
- ?>
- <h2>Diáklista feltöltése</h2>
-
- <p id="dlist_upload_form">
- <form enctype="multipart/form-data" id="diaklista_upload" method="post" action="<?= $_SERVER["PHP_SELF"] ?>?action=<?= $action ?>">
- Diáklista:
- <input type="file" id="dlist" name="dlist" /><br />
- <input type="submit" value="feltölt" />
- <input type="hidden" id="p" name="p" value="p" />
- </form>
- </p>
-
- <?php
- show_errors($errs);
- ?>
-
- <p>
- <?php
-
- if (count($sql_i) > 0)
- {
- t_start();
- // $sql_d = "DELETE FROM users WHERE ut = 'UT_ASTUDENT'";
- // echo $sql_d;
- // mysql_query($sql_d, $database)
- // or myerr("Az adatbázis kiürítése nem sikerült.");
-
- reset($sql_i);
- $c = 0;
- while (list(, $i) = each($sql_i))
- {
- //echo $i . "\n";
- mysql_query($i, $database)
- or myerr(ERROR_DB, $i);
- $c++;
- }
- t_commit();
- printf("%d rekord sikeresen feltöltve.", $c);
-
- }
- ?>
-
- </p>