- <?php
- /** A fórum témáit megjelenító kódok
- * @package koliportal
- * @author Karakó Miklós <palacsint_X_freemail.hu>
- * @copyright Copyright © 2005, Karakó Miklós
- */
-
- if (isset($_POST["newtopic"]) && isset($_POST["title"]))
- {
- $errc = 0;
- $title = trim($_POST["title"]);
-
- if (false === check_login())
- {
- forum_msg("Csak bejelentkezett felhasználó hozhat létre új témát!", FORUM_ERR);
- $errc++;
- }
-
-
- if ((0 === $errc) && (strlen($title) < 4))
- {
- forum_msg("Rövid a megadott témanév!", FORUM_ERR);
- $errc++;
- }
-
- if (0 === $errc)
- {
- $sql_q = "SELECT tid FROM topics WHERE title LIKE '$title'";
- $sql_res = mysql_query($sql_q, $database);
- if ((false === $sql_res))
- {
- forum_msg("Az új téma létrehozása nem sikerült!", FORUM_ERR);
- mylog(sprintf("forum - newtopic: %s", mysql_error()));
- $errc++;
- }
- }
-
- if (0 === $errc)
- {
- $arr = mysql_fetch_assoc($sql_res);
- if ((false !== $arr) && (is_numeric($arr["tid"])))
- {
- forum_msg(sprintf('Már létezik <i><a href="%s?page=%s&tid=%d">%s</a></i> címmel egy téma.',
- $_SERVER["PHP_SELF"], $page, $arr["tid"], stripslashes($title)), FORUM_MSG);
- $errc++;
- }
- unset($arr); // később nehogy galibát okozzon
- }
-
-
-
- if (0 === $errc)
- {
- $uid = $_SESSION["sid"];
- if (!is_numeric($uid))
- {
- forum_msg("Belső hiba!", FORUM_ERR);
- // FIXME: ezt vhogy általánossá kellene tenni
- }
- $title = addslashes($title);
- $sql_i = "INSERT INTO topics (title, cuid, ct)
- VALUES ('$title', '$uid', CURRENT_TIMESTAMP)";
- $sql_res = mysql_query($sql_i, $database);
-
- if ((false === $sql_res))
- {
- forum_msg("Az új téma létrehozása nem sikerült!", FORUM_ERR);
- mylog(sprintf("forum - newtopic: %s", mysql_error()));
- $errc++;
- }
- }
-
- if ((0 === $errc) && (1 !== mysql_affected_rows($database)))
- {
- forum_msg("Az új téma létrehozása nem sikerült!", FORUM_ERR);
- mysqlog(sprintf("forum - newtopic2: %s", mysql_error()));
- $errc++;
- }
-
- if (0 === $errc)
- {
- forum_msg("Az új téma sikeresen létrehozva.", FORUM_MSG);
- }
-
- }
-
- ?>
-
- <p><a href="<?= SERVER_ROOT ?>forum-rss.php">rss feed</a>
-
- </p>
- <form action="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>" id="nt_form" method="post">
-
- <table id="topics">
- <tr>
- <th>téma</th>
- <th>hozzászólások</th>
- <th>utolsó hozzászóló</th>
- <th>utolsó hozzászólás</th>
- <th>létrehozva</th>
- <th>létrehozta</th>
-
- </tr>
-
-
- <?php
- // FIXME:
- //
- /*
- SELECT DISTINCT t1.title, t1.tid,
- CASE WHEN p1.dt is NULL THEN t1.ct ELSE p1.dt END AS lastmsg,
- CASE WHEN p1.postid is NULL THEN t1.cuid ELSE p1.uid END AS lastuid
- FROM topics AS t1
- LEFT OUTER JOIN posts AS p1
- ON (p1.tid = t1.tid)
- ORDER BY lastmsg DESC;
- */
-
- /*
- LEFT JOIN-al hozzácsapjuk minden topichoz az utolsó hozzászólását
- az ord_lastmsg segít sorrendezni az eredménytáblát, értéke:
- - ha van hozzászólás az adott topichoz, akkor az utolsó hozzászólás ideje
- - ha nincs hozzászólás, akkor a topic létrehozásának ideje (CASE)
- */
- $sql_q = "
- SELECT DISTINCT t1.title, t1.tid, p1.dt AS lastmsg, p1.uid AS lastuid,
- t1.ct AS ct, t1.cuid AS cuid,
- (SELECT count(*) FROM posts AS p4temp WHERE p4temp.tid = t1.tid) AS msgcount,
- CASE WHEN p1.dt is NULL THEN t1.ct ELSE p1.dt END AS ord_lastmsg
-
-
- FROM topics AS t1
- LEFT OUTER JOIN posts AS p1
- ON (p1.tid = t1.tid
- AND p1.postid = (SELECT max(p3temp.postid) FROM posts AS p3temp WHERE p3temp.tid = t1.tid)
- )
- ORDER BY ord_lastmsg DESC
-
- ";
-
-
- //$sql_q = "SELECT * FROM topics ORDER BY lastmsg DESC LIMIT 20";
- $t_res = mysql_query($sql_q, $database)
- or myerr(ERROR_DB, $sql_q); // FIXME: hibakezelés
-
- while ($t_arr = mysql_fetch_assoc($t_res))
- {
- $last_st_name = get_student_name($t_arr["lastuid"]);
- if ('nem' == $last_st_name) $last_st_name = '';
- ?>
- <tr>
- <td><a href="<?= $_SERVER["PHP_SELF"] ?>?page=<?= $page ?>&tid=<?= $t_arr["tid"] ?>"><?= $t_arr["title"] ?></a></td>
- <td><?= $t_arr["msgcount"] ?></td>
- <td><?= $last_st_name ?></td>
- <td><?= $t_arr["lastmsg"] ?></td>
- <td><?= $t_arr["ct"] ?></td>
- <td><?= get_student_name($t_arr["cuid"]) ?></td>
- </tr>
-
- <?php
-
- }
- if (true === check_login())
- {
- ?>
-
-
-
- <tr>
- <th colspan="3">Új téma: <input type="text" name="title" value="" /></th>
-
- <th><input type="submit" value="Létrehoz" /></th>
- <th colspan="2">
- <input type="hidden" name="newtopic" value="newtopic" />
-
- </th>
- </tr>
-
-
- <?php
- }
- ?>
- </table>
-
- </form>