phpDocumentor koliportal
[ class tree: koliportal ] [ index: koliportal ] [ all elements ]

Source for file page.studentlist-upload.php

Documentation is available at page.studentlist-upload.php

  1. <?php
  2. /** Diáklista feltöltése
  3. * @package koliportal
  4. * @todo csv2array() használata
  5. */
  6. /** Egy felhasználó adatainak ellenőrzése
  7. *
  8. * Ellenrőzi a feltöltött CSV fájl egy sorát.
  9. *
  10. * @todo Lehetne azt is ellenőrizni, hogy van-e már ilyen username.
  11. * @param array $arr A rekord mezői tömbben
  12. * @return mixed true: ha minden megfelelő, egyébként hibaüzenet
  13. */
  14. function check_student_row($arr)
  15. {
  16. $barr = get_buildings_list();
  17. if (!isset($barr[$arr["bid"]]))
  18. {
  19. return "Nem létező épületazonosító";
  20. }
  21. if (strlen($arr["realname"]) < 3)
  22. {
  23. return "Rövid név!";
  24. }
  25. if (strlen($arr["username"]) < 3)
  26. {
  27. return "Rövid felhasználónév!";
  28. }
  29. if (strlen($arr["password"]) < 3)
  30. {
  31. return "Rövid jelszó!";
  32. }
  33. if ($arr["sex"] != 'M' && $arr["sex"] != 'F')
  34. {
  35. return "Hibás nem";
  36. }
  37.  
  38. $allowed_uts["UT_ASTUDENT"] = true;
  39. $allowed_uts["UT_OSTUDENT"] = true;
  40. if (!isset($allowed_uts[$arr["ut"]]))
  41. {
  42. return "Érvénytelen felhasználó kategória!";
  43. }
  44. $allowed_yesno["N"] = $allowed_yesno["Y"] = true;
  45. if (!isset($allowed_yesno[$arr["disabled"]]))
  46. {
  47. return "Érvénytelen aktív/inaktív oszlop!";
  48. }
  49. return true;
  50. }
  51. $sql_i = array();
  52.  
  53. if (count($_POST) > 0)
  54. {
  55. debug_echo("post OK");
  56. if (isset($_FILES["dlist"]) &&
  57. is_uploaded_file($_FILES["dlist"]["tmp_name"]))
  58. {
  59.  
  60. $f = fopen($_FILES["dlist"]["tmp_name"], 'r');
  61. if ($f === false)
  62. {
  63. myerr("Fájlmegnyitási hiba a szerveren.");
  64. }
  65. while (!feof ($f))
  66. {
  67. $line = fgets($f, 1024);
  68. if ($line === false)
  69. break;
  70. $line = addslashes(trim($line));
  71.  
  72. if (strlen($line) > 2)
  73. {
  74. $ff = explode(";", $line);
  75. $sid = $arr["sid"] = $ff[0];
  76. $realname = $arr["realname"] = trim($ff[1]);
  77. $username = $arr["username"] = trim($ff[2]);
  78. $email = $arr["email"] = trim($ff[3]);
  79. $password = $arr["password"] = trim($ff[4]);
  80. $sex = $arr["sex"] = substr($ff[5], 0, 1);
  81. $ut = $arr["ut"] = $ff[6];
  82. $bid = $arr["bid"] = $ff[7];
  83. $disabled = $arr["disabled"] = $ff[8];
  84. $av = $arr["av"] = $ff[9];
  85. $err = check_student_row($arr);
  86. if (is_student_exist($sid))
  87. {
  88. /* automatikusan kezeljük az MD5 és a sima jelszavakat */
  89. if (strlen($password) != 32) {
  90. $pwfield = "MD5(CONCAT('$password', '$username'))";
  91. } else {
  92. $pwfield = "'$password'";
  93. }
  94. $li = $sql_i[] = "UPDATE users SET realname = '$realname',
  95. username = '$username', email = '$email', password = $pwfield, sex = '$sex',
  96. ut = '$ut', bid = '$bid', disabled = '$disabled', av = '$av' WHERE sid = '$sid' AND username = '$username'";
  97.  
  98. if ($ut == 'UT_OSTUDENT' || ($bid != get_student_bid($sid)) || ($sex != get_student_st($sid)))
  99. {
  100. // ha átállítjuk öregdiákra, akkor ne legyen benne egy szobában sem!
  101. $sql_i[] = "DELETE FROM room_conn_student WHERE sid = '$sid'";
  102. /* QQQ: sex is ide tartozna? azt sem lehet módosítani? */
  103. }
  104. } else {
  105. if (strlen($password) != 32) {
  106. $pwfield = "MD5(CONCAT('$password', '$username'))";
  107. } else {
  108. $pwfield = "'$password'";
  109. }
  110. $li = $sql_i[] = "INSERT INTO users (realname, username, email, password, sex, ut, bid, disabled, av)
  111. VALUES ('$realname', '$username', '$email', $pwfield, '$sex', '$ut', '$bid', '$disabled', '$av')";
  112. }
  113. if (true !== $err)
  114. {
  115. printf("%s<br />Hiba: %s", $li, $err);
  116. die();
  117. }
  118. }
  119. }
  120. fclose($f);
  121. } else {
  122. myerr("Tölts fel normális fájlt!");
  123. }
  124. } else {
  125. ?>
  126.  
  127. <?php
  128. }
  129.  
  130. ?>
  131. <h2>Diáklista feltöltése</h2>
  132.  
  133. <p id="dlist_upload_form">
  134. <form enctype="multipart/form-data" id="diaklista_upload" method="post" action="<?= $_SERVER["PHP_SELF"] ?>?action=<?= $action ?>">
  135. Diáklista:
  136. <input type="file" id="dlist" name="dlist" /><br />
  137. <input type="submit" value="feltölt" />
  138. <input type="hidden" id="p" name="p" value="p" />
  139. </form>
  140. </p>
  141.  
  142. <?php
  143. show_errors($errs);
  144. ?>
  145. <p>
  146. <?php
  147.  
  148. if (count($sql_i) > 0)
  149. {
  150. t_start();
  151. // $sql_d = "DELETE FROM users WHERE ut = 'UT_ASTUDENT'";
  152. // echo $sql_d;
  153. // mysql_query($sql_d, $database)
  154. // or myerr("Az adatbázis kiürítése nem sikerült.");
  155. reset($sql_i);
  156. $c = 0;
  157. while (list(, $i) = each($sql_i))
  158. {
  159. //echo $i . "\n";
  160. mysql_query($i, $database)
  161. or myerr(ERROR_DB, $i);
  162. $c++;
  163. }
  164. t_commit();
  165. printf("%d rekord sikeresen feltöltve.", $c);
  166. }
  167. ?>
  168.  
  169. </p>

Documentation generated on Wed, 18 May 2005 19:24:46 +0200 by phpDocumentor 1.3.0RC3