PageRenderTime 53ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/traffa/klotterplank.php

https://github.com/Rambutan/hamsterpaj
PHP | 298 lines | 256 code | 29 blank | 13 comment | 50 complexity | 956d7c8ac2083cd61e8167b0cd77d4b2 MD5 | raw file
  1. <?php
  2. /*
  3. Gästbok kodad av Schneaker 2004-08-13. Använder tabellen "guestbook". Målet var väl främst att bredda c0ke i snabbhet, tydlighet, lättlästhet och radantal.
  4. $_GET['sendAnswer'] = Ett svar skickas, variabeln innehåller ID-nummret på det inlägg som skall besvaras
  5. $_GET['answer'] = Visar dialogen för att besvara ett inlägg, variabeln håller inläggets ID-nummer
  6. $_GET['hide'] = Döljer ett inlägg, variabeln håller ID-nummret på inlägget som skall döljas.
  7. $_GET['edit'] = Visar dialogen för att redigera inlägg, variabeln håller ID-nummret på inlägget som skall redigeras.
  8. $_GET['ip'] = Visar alla inlägg från detta IP-nummer
  9. $_GET['userid'] = Visar alla inlägg från detta userid
  10. */
  11. // header('location: /traffa/klotterplanket.php');
  12. $text_colors=array('black','red','orange','pink','green','blue','purple','brown');
  13. $entries='50';
  14. require('../include/core/common.php');
  15. $ui_options['menu_path'] = array('traeffa', 'gamla_klotterplanket');
  16. ui_top($ui_options);
  17. function makeQuery($mode, $criteria){
  18. $query = 'SELECT ';
  19. $query .= 'klotterplank.id, klotterplank.text, klotterplank.userid, ';
  20. $query .= 'klotterplank.timestamp, login.username, userinfo.birthday, userinfo.image, userinfo.gender, userinfo.zip_code, zip_codes.spot AS geo_location ';
  21. $query .= 'FROM ';
  22. $query .= 'klotterplank, login, userinfo, zip_codes ';
  23. $query .= 'WHERE userinfo.userid = klotterplank.userid AND login.id = klotterplank.userid AND zip_codes.zip_code = userinfo.zip_code ';
  24. if($mode == 'ip')
  25. {
  26. $query .= 'AND klotterplank.ip = "' . $criteria . '" ';
  27. }
  28. elseif($mode == 'userid'){
  29. $query .= 'AND klotterplank.userid = ' . $criteria . ' ';
  30. }
  31. $query .= 'ORDER BY klotterplank.id DESC ';
  32. global $entries;
  33. if($mode == 'normal'){
  34. $query .= 'LIMIT '.$entries;
  35. }
  36. return $query;
  37. }
  38. function viewPosts($mode = 'normal', $criteria = NULL){//Visar alla inlägg
  39. $query = makeQuery($mode, $criteria);
  40. $result = mysql_query($query) or die('Ett fel har upstått:<br/>' . mysql_error());
  41. $genderlabels['P'] = 'Pojke';
  42. $genderlabels['F'] = 'Flicka';
  43. while($data = mysql_fetch_assoc($result)){
  44. $userage = date_get_age($data['birthday']);
  45. if($data['gender'] == 'P')
  46. {
  47. $divbg = 'blue_faded_div';
  48. }
  49. elseif($data['gender'] == 'F')
  50. {
  51. $divbg = 'pink_faded_div';
  52. }
  53. else
  54. {
  55. $divbg = 'grey_faded_div';
  56. }
  57. if (isset($_SESSION['login']['username'])) {
  58. if (preg_match("/".$_SESSION['login']['username']."/i",$data['text'])) {
  59. $divbg = 'orange_faded_div';
  60. }
  61. elseif ($_SESSION['login']['username'] == $data['username']) {
  62. $divbg = 'green_faded_div';
  63. }
  64. }
  65. echo '<div class="'.$divbg.'" style="repeat-x; margin-top: 10px; border: 1px solid #CCCCCC;">' . "\n";
  66. echo '<table class="body" style="width: 100%;"><tr><td style="vertical-align: top; width: 75px;">' . "\n";
  67. if($data['image'] == 1 || $data['image'] == 2)
  68. {
  69. echo insert_avatar($data['userid']);
  70. }
  71. else
  72. {
  73. echo '<img src="http://images.hamsterpaj.net/images/noimage.png" style="width: 75px; height: 75px; border: 1px solid #cccccc;" alt="Ingen visningsbild"/>' . "\n";
  74. }
  75. echo '</td><td style="vertical-align: top;">';
  76. echo fix_time($data['timestamp']) . ' (inlägg #' . $data['id'] . ') <a style="text-decoration:none;" href="javascript:#;" onclick="javascript:document.gbform.message.value=document.gbform.message.value+\''.$data['username'].' : \';document.gbform.message.focus();">[^]</a><br/>' . "\n";
  77. echo '<a href="' . $hp_url . '/traffa/profile.php?id=' . $data['userid'] . '">' . "\n";
  78. echo '<b>' . $data['username'] . '</b></a> ' . "\n";
  79. echo birthdaycake($data['birthday']) . ' ' . "\n";
  80. echo $genderlabels[$data['gender']];
  81. if($userage > 1)
  82. {
  83. echo ' ' . $userage . 'år' . "\n";
  84. }
  85. if(strlen($data['geo_location']) > 1)
  86. {
  87. echo ' från ' . htmlentities($data['geo_location']) . "\n";
  88. }
  89. echo '<br/>' . "\n";
  90. echo setsmilies($data['text']) . "\n";
  91. echo '</td></tr></table>' . "\n";
  92. echo '</div>' . "\n";
  93. }//while-satsen för att skriva ut inlägg
  94. }//Funktionsasvlutet
  95. function spamFilter($message,$ip,$nick) {//Returnerar TRUE om testet klarades, annars skriver funktionen ut felmeddelande
  96. $message = strtolower($message);
  97. if($_SESSION['login']['userlevel'] >= 5){ //Ingen spamcheck för userlevel 3+
  98. return TRUE;
  99. }
  100. if(strlen($message) < 2)
  101. {
  102. jscript_alert('Lite mer än sådär får du allt skriva...');
  103. return FALSE;
  104. }
  105. $content_check_retval = content_check($message);
  106. if($content_check_retval != 1)
  107. {
  108. jscript_alert($content_check_retval);
  109. return FALSE;
  110. }
  111. if(strlen($message) > 4000)
  112. {
  113. jscript_alert('Försök fatta dig lite kortare, det är trots allt ett klotterplank. Använd forumet om du vill diskutera!');
  114. return FALSE;
  115. }
  116. $query = 'SELECT COUNT(id) AS total FROM klotterplank WHERE userid = ' . $_SESSION['login']['id'] . ' AND timestamp > UNIX_TIMESTAMP() - 60';
  117. $result = mysql_query($query);
  118. $data = mysql_fetch_assoc($result);
  119. if($data['total'] > 0){
  120. jscript_alert('Max ett inlägg per minut, ge dig till tåls litegranna');
  121. return FALSE;
  122. }
  123. return TRUE;
  124. }
  125. function drawKlotterplankPostForm($message = NULL) {
  126. echo '<div class="grey_faded_div">' . "\n";
  127. echo '<h2>Klotterplanket - skriv nytt inlägg</h2>' . "\n";
  128. if ($_SESSION['klotterplank']['lastpost'] > time()-60) {
  129. echo '<script language="javascript">' . "\n";
  130. echo 'function fixtime(input){' . "\n";
  131. echo 'minutes = Math.round((input / 60) + 0.5) - 1;' . "\n";
  132. echo 'seconds = input - (minutes * 60);' . "\n";
  133. echo 'minutes = minutes + "";' . "\n";
  134. echo 'if(minutes.length < 2){' . "\n";
  135. echo 'minutes = "0" + minutes;' . "\n";
  136. echo '}' . "\n";
  137. echo 'seconds = seconds + "";' . "\n";
  138. echo 'if(seconds.length < 2){' . "\n";
  139. echo 'seconds = "0" + seconds;' . "\n";
  140. echo '}' . "\n";
  141. echo 'returnval = minutes + ":" + seconds;' . "\n";
  142. echo 'return returnval;' . "\n";
  143. echo '}' . "\n";
  144. echo 'function testtime(){' . "\n";
  145. echo 'if(input >= 0) {';
  146. echo 'document.forms.timeleft.counter.value = \'Tid kvar innan du kan posta igen: \' + fixtime(input);' . "\n";
  147. echo 'input = input - 1;' . "\n";
  148. echo 'setTimeout("testtime()", 1000);' . "\n";
  149. echo '}';
  150. echo 'else {';
  151. echo 'location.href="';
  152. echo $_SERVER['PHP_SELF'];
  153. if (isset($_GET['reload']))
  154. {
  155. echo '?reload='.$_GET['reload'];
  156. }
  157. echo '";';
  158. echo '}' . "\n";
  159. echo '}' . "\n";
  160. echo '</script>' . "\n";
  161. echo '<form name="timeleft">' . "\n";
  162. echo '<input type="text" name="counter" class="subtitle" style="border: none; width: 500px;" disabled="true" />' . "\n";
  163. echo '</form>' . "\n";
  164. $timeleft = $_SESSION['klotterplank']['lastpost'] - time() + 60;
  165. echo '<script language="javascript">' . "\n";
  166. echo 'var input = ' . $timeleft . ';' . "\n";
  167. echo 'testtime();' . "\n";
  168. echo '</script>' . "\n";
  169. }
  170. else {
  171. echo '<form name="gbform" action="' . $_SERVER['PHP_SELF'];
  172. if (isset($_GET['reload'])) {
  173. echo '?reload='.$_GET['reload'];
  174. }
  175. echo '" method="post">' . "\n";
  176. echo '<textarea tabindex="1" name="message" onkeypress="textCounter(this,5000);" class="textbox" style="width: 530px; height: 90px;">' . $message . '</textarea><br />' . "\n";
  177. echo '<input type="submit" value="Skicka" name="sendGB" class="button" style="width: 530px;" tabindex="2" />' . "\n";
  178. echo '<fieldset style="width: 500px;"><legend><b>Infoga smilies</b></legend>' . "\n";
  179. echo listSmilies('document.gbform.message');
  180. echo '</fieldset>' . "\n";
  181. echo '</form>' . "\n";
  182. }
  183. echo '</div>' . "\n";
  184. }
  185. function postToDatabase(){//skickar in ett vanligt GB-inlägg till databasen
  186. $message = wordwrap($_POST['message'], 59, "\n", 1);
  187. if ($_SESSION['login']['userlevel'] < 5) {
  188. $message = nl2br($message);
  189. }
  190. else {
  191. $message = nl2br($message);
  192. }
  193. $query = 'INSERT INTO klotterplank (userid, timestamp, text) VALUES ';
  194. $query .= '("' . $_SESSION['login']['id'] . '", UNIX_TIMESTAMP(), "' . $message . '")';
  195. mysql_query($query) or die('Det uppstod ett fel när inlägget skrevs till databasen. Försök igen senare<br/>' . mysql_error());
  196. global $entries;
  197. $query = 'DELETE FROM klotterplank WHERE id = ' . intval(mysql_insert_id() - $entries) . ' LIMIT 1';
  198. mysql_query($query) or die(report_sql_error($query));
  199. if ($_SESSION['login']['userlevel'] < 5) {
  200. $_SESSION['klotterplank']['lastpost'] = time();
  201. }
  202. else {
  203. $_SESSION['klotterplank']['lastpost'] = 1;
  204. }
  205. event_log_log('old_klotterplank_post');
  206. }
  207. /*
  208. HÄR SLUTAR FUNKTIONERNA OCH KODEN SOM KÖRS DIREKT BÖRJAR HÄR!
  209. */
  210. echo rounded_corners_top(array('color' => 'orange'));
  211. echo '.<h1>Eyy, detta är gamla klotterplanket...</h1>...gå till <a href="http://www.hamsterpaj.net/traffa/klotterplanket.php">det nya klotterplanket</a> istället!';
  212. echo rounded_corners_bottom(array('color' => 'orange'));
  213. if (isset($_GET['reload']) && $_GET['reload']!="0") {
  214. if ($_GET['reload']!="10" && $_GET['reload']!="30" && $_GET['reload']!="60") { echo 'ogiltigt'; die; }
  215. echo '<script language="JavaScript" type="text/JavaScript">'."\n";
  216. echo '<!--//'."\n";
  217. echo 'function goReload() {'."\n";
  218. echo 'location.href="';
  219. echo $_SERVER['PHP_SELF'];
  220. echo '?reload='.$_GET['reload'];
  221. echo '&random='.rand(1000000,9999999);
  222. if (isset($_GET['stick']) or isset($_POST['stick'])) {
  223. echo '&stick=y';
  224. }
  225. echo '";'."\n";
  226. echo '}'."\n";
  227. echo 'setTimeout("goReload()", '.$_GET['reload'].'000)'."\n";
  228. echo '//--></script>';
  229. }
  230. echo '<form name="autoupdate" method="get" action="'.$_SERVER['PHP_SELF'].'"><select name="reload" onchange="autoupdate.submit();"><option value="0">-- Automatisk uppdatering --</option>';
  231. echo '<option value="10"';
  232. if (isset($_GET['reload']) && $_GET['reload']=="10") { echo ' selected'; }
  233. echo '>var 10:e sekund</option>';
  234. echo '<option value="30"';
  235. if (isset($_GET['reload']) && $_GET['reload']=="30") { echo ' selected'; }
  236. echo '>var 30:e sekund</option>';
  237. echo '<option value="60"';
  238. if (isset($_GET['reload']) && $_GET['reload']=="60") { echo ' selected'; }
  239. echo '>varje minut</option>';
  240. echo '<option value="0"';
  241. if (isset($_GET['reload']) && $_GET['reload']=="0") { echo ' selected'; }
  242. echo '>- Pausa -</option>';
  243. echo '</select>';
  244. if (isset($_POST['stick']) or isset($_GET['stick']))
  245. {
  246. echo '<input type="hidden" name="stick" value="yes">';
  247. }
  248. if (isset($_POST['color']) or isset($_GET['color']))
  249. {
  250. $this_color=@$_POST['color'].@$_GET['color'];
  251. echo '<input type="hidden" name="color" value="' . $this_color . '">';
  252. }
  253. echo '</form>';
  254. if(isset($_POST['sendGB']) && isset($_SESSION['login']['id'])){ //sendGB är namnet på [Skicka]-knappen
  255. if(spamFilter($_POST['message'],$_SERVER['REMOTE_ADDR'],$_POST['name'])){
  256. postToDatabase();
  257. drawKlotterplankPostForm();
  258. }
  259. else{
  260. drawKlotterplankPostForm($_POST['message']);
  261. }
  262. }
  263. elseif($_SESSION['login']['id'] > 0)
  264. {
  265. drawKlotterplankPostForm();
  266. }
  267. viewPosts('normal');
  268. ui_bottom();
  269. ?>