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

Source for file page.wishlist-edit.php

Documentation is available at page.wishlist-edit.php

  1. <?php
  2. /** Kívánságlista-felület
  3. * @package koliportal
  4. * @author Karakó Miklós <palacsint_X_freemail.hu>
  5. * @copyright Copyright &copy; 2005, Karakó Miklós
  6. */
  7. $newuser = '';
  8. /* FIXME: pref értékének fixálása módosításkor mondjuk tömb alapján!
  9. diák törlésekor wishes.wsid stb pref értékének fixálása! */
  10. /* lekérdezi a wishes.pref maximális értékét a $sid userhez */
  11. /** Egy hallgató kivánságlistájának számosságának lekérdezése
  12. *
  13. * Lekérdezi az adatbázisból egy hallgató kívánságlistjának számosságát,
  14. * pontosabban wishes tábla pref értékének maximumát azon rekordok közül,
  15. * amelyek az adott hallgatóhoz tartoznak.
  16. *
  17. * @param int $sid A hallgató azonosítója (users.sid)
  18. * @return int A wishes.pref maximális értéke, üres eredménytábla esetén 0.
  19. */
  20. function get_max_pref($sid)
  21. {
  22. global $database;
  23. $sql_q = "SELECT max(pref) AS maxpref FROM wishes WHERE sid = '$sid'";
  24. $res = mysql_query($sql_q, $database)
  25. or myerr(ERROR_DB, $sql_q);
  26. if (($num = mysql_num_rows($res)) === false)
  27. {
  28. myerr(ERROR_DB, $sql_q);
  29. }
  30. if ($num == 0)
  31. {
  32. $ret = 0;
  33. } else {
  34. $arr = mysql_fetch_assoc($res)
  35. or myerr(ERROR_DB, $sql_q);
  36. $ret = $arr["maxpref"];
  37. }
  38. return $ret;
  39. }
  40.  
  41. if (isset($_POST) && (count($_POST) > 0))
  42. {
  43. /* új hallgatót kell felvenni */
  44. if (isset($_POST["new"]) && isset($_POST["newuser"]))
  45. {
  46. $newuser = addslashes($_POST["newuser"]);
  47. if ($_SESSION["username"] == $newuser)
  48. {
  49. $errc++;
  50. $errs[] = "Saját magaddal nem lehetsz egy szobában!";
  51. // FUN FIXME!
  52. }
  53. /* létezik-e a megadott diák? */
  54. if ($errc == 0)
  55. {
  56. $sql_q = "SELECT * FROM users WHERE ut = 'UT_ASTUDENT' AND username = '$newuser'";
  57. $sql_res = mysql_query($sql_q, $database)
  58. or myerr("Adatbázis hiba!");
  59. if (mysql_num_rows($sql_res) !== 1)
  60. {
  61. $errc++;
  62. $errs[] = "A megadott felhasználónév nem szerepel az adatbázisban!";
  63. }
  64. }
  65. /* benne van-e már a listában a diák? */
  66. if ($errc == 0)
  67. {
  68. $newarr = mysql_fetch_assoc($sql_res)
  69. or myerr("Adatbázis hiba.");
  70. $wish_wsid = $newarr["sid"];
  71. $sql_q = "SELECT * FROM wishes WHERE sid = '" . $_SESSION["sid"] . "' AND
  72. wsid = '$wish_wsid'";
  73. $sql_res = mysql_query($sql_q, $database)
  74. or myerr("Adatbázis hiba!");
  75. if (mysql_num_rows($sql_res) === 1)
  76. {
  77. $errc++;
  78. $errs[] = "A megadott ($newuser) diák már szerepel a listában!";
  79. }
  80. }
  81. /* a hallgatóval azonos épületben van-e a diák? */
  82. if (0 === $errc)
  83. {
  84. if ($newarr["bid"] != $_SESSION["bid"])
  85. {
  86. $errc++;
  87. $errs[] = "A megadott ($newuser) diák nem egy épületben van veled!";
  88. }
  89. }
  90. /* maximum MAXPREF ember lehet a listán, ha több van nem
  91. engedjük a felvételt */
  92. if ($errc == 0)
  93. {
  94. $maxpref = get_max_pref($_SESSION["sid"]);
  95. if ($maxpref > MAXPREF)
  96. {
  97. $errs[] = "A lista megtelt, új diák felvétele nem lehetséges!";
  98. $errc++;
  99. }
  100. /*
  101. $mp_q = "SELECT max(pref) as maxpref FROM wishes WHERE sid = '" . $_SESSION["sid"] . "'";
  102. $mp_res = mysql_query($mp_q, $database)
  103. or myerr(ERROR_DB);
  104. $mp_arr = mysql_fetch_assoc($mp_res)
  105. or myerr(ERROR_DB);
  106. $maxpref = $mp_arr["maxpref"] + 1;
  107. if ($maxpref > MAXPREF)
  108. {
  109. $errs[] = "A lista megtelt, új diák felvétele nem lehetséges!";
  110. $errc++;
  111. }*/
  112. }
  113. /* felvétel a listába */
  114. if ($errc == 0)
  115. {
  116. $maxpref++;
  117. $sql_i = "INSERT INTO wishes (sid, wsid, pref) VALUES
  118. ('" . $_SESSION["sid"] . "', '$wish_wsid', '$maxpref')";
  119. $sql_res = mysql_query($sql_i, $database)
  120. or myerr(ERROR_DB);
  121. if (mysql_affected_rows($database) === 1)
  122. {
  123. $errc++;
  124. $errs[] = "A felvétel sikeres!";
  125. }
  126. }
  127. /* felvétel a listába */
  128. } /* új hallgató felvétele a listába */
  129. }
  130. elseif (isset($_GET["delazon"]))
  131. {
  132. $delete_ok = false;
  133. /* FIXME: át kell sorszámozni a többit a wishes tablaban! */
  134. /* FIXME: tranzakciokezeles! */
  135. $delazon = addslashes($_GET["delazon"]);
  136. if (!is_numeric($delazon))
  137. {
  138. myerr(ERROR_HACK);
  139. }
  140.  
  141. /* wishes.pref lekérdezése */
  142. if ($errc == 0)
  143. {
  144. $sql_q = "SELECT * FROM wishes WHERE sid = '" . $_SESSION["sid"] . "' AND
  145. wsid = '$delazon'";
  146. $sql_res = mysql_query($sql_q, $database)
  147. or myerr(ERROR_DB);
  148. if (mysql_num_rows($sql_res) !== 1)
  149. {
  150. $errc++;
  151. $errs[] = "Nem létezik a törlendő diák!";
  152. }
  153. }
  154. /* wishes.pref eltárolása */
  155. /* START TRANSACTION */
  156. if ($errc === 0)
  157. {
  158. $parr = mysql_fetch_assoc($sql_res)
  159. or myerr(ERROR_DB);
  160. $del_pref = $parr["pref"];
  161. t_start();
  162. }
  163. /* töröljük a listából */
  164. if ($errc == 0)
  165. {
  166. $sql_q = "DELETE FROM wishes WHERE sid = '" . $_SESSION["sid"] . "' AND
  167. wsid = '$delazon'";
  168. $sql_res = mysql_query($sql_q, $database)
  169. or myerr(ERROR_DB);
  170. if (($afrows = mysql_affected_rows($database)) === -1)
  171. {
  172. myerr(ERROR_DB);
  173. }
  174. if ($afrows === 0)
  175. {
  176. $errs[] = "A megadott diák nem szerepel a listában!";
  177. $errc++;
  178. }
  179. if ($afrows === 1)
  180. {
  181. $errs[] = "A törlés sikeres!";
  182. $delete_ok = true;
  183. }
  184. }
  185. /* sorszámok átírása */
  186. if (($errc === 0) && ($delete_ok))
  187. {
  188. $sql_q = "UPDATE wishes SET pref = pref - 1
  189. WHERE sid = '" . $_SESSION["sid"] . "'
  190. AND pref > '$del_pref'";
  191. $sql_res = mysql_query($sql_q, $database)
  192. or myerr(ERROR_DB);
  193. if (mysql_affected_rows($database) === -1)
  194. {
  195. $errc++;
  196. $errs[] = "A törlés sikertelen!";
  197. }
  198. }
  199. /* tranzakció lezárása/eldobása */
  200. if ($errc === 0)
  201. {
  202. t_commit();
  203. }
  204. else
  205. {
  206. /* rollback! */
  207. t_rollback();
  208. }
  209. }
  210. elseif (isset($_GET["felazon"]) && is_numeric($_GET["felazon"]))
  211. {
  212. /* FIXME: meg kellene vizsgálni, hogy létezi-e ilyen pref érték a listában */
  213. $azon = addslashes($_GET["felazon"]);
  214. if (($azon <= 1) || ($azon > MAXPREF) || ($azon > get_max_pref($_SESSION["sid"])))
  215. {
  216. myerr(ERROR_HACK);
  217. }
  218.  
  219. t_start();
  220.  
  221. $sql_csere = array();
  222. $sql_csere[1] = "UPDATE wishes SET pref = pref + 1 WHERE
  223. sid = '" . $_SESSION["sid"] . "' AND pref >= '$azon' - 1;";
  224. $sql_csere[2] = "UPDATE wishes SET pref = pref - 2 WHERE
  225. sid = '" . $_SESSION["sid"] . "' AND pref = '$azon' + 1;";
  226. $sql_csere[3] = "UPDATE wishes SET pref = pref - 1 WHERE
  227. sid = '" . $_SESSION["sid"] . "' AND pref > '$azon';";
  228. for ($i = 1; $i <= 3; $i++)
  229. {
  230. mysql_query($sql_csere[$i], $database)
  231. or myerr(ERROR_DB);
  232. }
  233.  
  234. t_commit();
  235.  
  236. }
  237. elseif (isset($_GET["leazon"]) && is_numeric($_GET["leazon"]))
  238. {
  239. /* le, tehát növel a "leazon" pref értékét 1-el */
  240. /* FIXME: ha az utolsó a listában, akkor nem kellene engedni */
  241. $azon = addslashes($_GET["leazon"]);
  242. if (($azon >= MAXPREF) || ($azon >= get_max_pref($_SESSION["sid"])))
  243. {
  244. myerr(ERROR_HACK);
  245. }
  246.  
  247. t_start();
  248. // FIXME: update .wsid alapján!
  249. $sql_csere = array();
  250. $sql_csere[1] = "UPDATE wishes SET pref = pref + 1 WHERE
  251. sid = '" . $_SESSION["sid"] . "' AND pref >= '$azon';";
  252. $sql_csere[2] = "UPDATE wishes SET pref = pref - 2 WHERE
  253. sid = '" . $_SESSION["sid"] . "' AND pref = '$azon' + 2;";
  254. $sql_csere[3] = "UPDATE wishes SET pref = pref - 1 WHERE
  255. sid = '" . $_SESSION["sid"] . "' AND pref > '$azon' + 1;";
  256. for ($i = 1; $i <= 3; $i++)
  257. {
  258. mysql_query($sql_csere[$i], $database)
  259. or myerr(ERROR_DB);
  260. }
  261. t_commit();
  262. }
  263. ?>
  264.  
  265. <?php
  266. show_errors($errs);
  267. $sql_q = "SELECT * FROM wishes, users
  268. WHERE wishes.sid = '" . $_SESSION["sid"] . "'
  269. AND wishes.wsid = users.sid
  270. AND users.ut = 'UT_ASTUDENT'
  271. ORDER BY wishes.pref";
  272. debug_echo($sql_q, DEBUG_SQL);
  273. ?>
  274. <form id="addlist" action="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>" method="post">
  275. <table id="szobatarsjeloltek">
  276. <tr>
  277. <th colspan="3">Szobatársjelöltek</th>
  278. </tr>
  279. <tr>
  280. <th>sr.</th>
  281. <th>Név (login)</th>
  282. <th>műveletek</th>
  283. </tr>
  284. <?php
  285.  
  286. $sql_res = mysql_query($sql_q, $database);
  287. if ($sql_res === false)
  288. {
  289. myerr("Adatbázis hiba!");
  290. }
  291.  
  292. $rnum = mysql_num_rows($sql_res);
  293. if ($rnum === false) { myerr(ERROR_DB); }
  294. $i = 0;
  295. $rnum--;
  296. while ($arr = mysql_fetch_assoc($sql_res))
  297. {
  298. /* FIXME: az elsőnél nem kell a fel, az utolsónál meg a le */
  299. ?>
  300. <tr>
  301. <td class="sr"><?= $arr["pref"] ?></td>
  302. <td><?= $arr["realname"] ?> (<?= $arr["username"] ?>)</td>
  303. <td><a href="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>&amp;delazon=<?= $arr["sid"] ?>">törlés</a>,
  304. <?php
  305. if ($i > 0) {
  306. ?>
  307. <a href="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>&amp;felazon=<?= $arr["pref"] ?>">fel</a>,
  308. <?php
  309. }
  310. if ($i < $rnum) {
  311. ?>
  312. <a href="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>&amp;leazon=<?= $arr["pref"] ?>">le</a>
  313. <?php
  314. }
  315. $i++;
  316. ?>
  317. </td>
  318. </tr>
  319. <?php
  320. }
  321. // FIXME: ez se jelentjen meg, ha már túl sokan vannak
  322.  
  323. ?>
  324. <tr>
  325. <th colspan="3">Új hallgató hozzáadása
  326.  
  327. </th>
  328. </tr>
  329. <tr>
  330. <td>username:</td>
  331. <td><input type="text" size="20" id="newuser" name="newuser" value="<?= $newuser ?>"/></td>
  332. <td><input type="submit" id="new" name="new" value="felvesz" /></td>
  333. </tr>
  334.  
  335. </table>
  336. </form>

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