/task/function.inc.php

https://github.com/pronix/carumba · PHP · 219 lines · 153 code · 19 blank · 47 comment · 39 complexity · b059d87dd60f5263e41b5cc8a977ded8 MD5 · raw file

  1. <?php
  2. /**
  3. * Âûáèðàåò ïàðàìåòð $var èç cookie èëè âîçâðàùàåò false
  4. *
  5. * @param mixed $var
  6. * @return mixed
  7. */
  8. function _cookie($var) {
  9. if (isset($_COOKIE[$var])) {
  10. return $_COOKIE[$var];
  11. } else {
  12. return false;
  13. }
  14. }
  15. /**
  16. * Âåðíåò îòîáðàæåíèå ìàññèâà
  17. *
  18. * @param array $array
  19. * @return string
  20. */
  21. function get_ar(&$array) {
  22. ob_start();
  23. ob_clean();
  24. print_r($array);
  25. $msg = ob_get_contents();
  26. $msg = str_replace(' ', '&nbsp;', $msg);
  27. $msg = nl2br($msg);
  28. ob_end_clean();
  29. return $msg;
  30. }
  31. /**
  32. * Èç ñòðîêè ìàññèâà, îáðàçîâàííîãî èç URL îïðåäåëÿåò ïàðàìåòðû,
  33. * êîòîðûå îïðåäåëÿþò îòîáðàæàåìóþ ñòðàíèöó
  34. *
  35. * @param array $aPar
  36. * @return array
  37. */
  38. function get_page_info_from_path($aPar)
  39. {
  40. global $aImportant;
  41. if (in_array($aPar[2], $aImportant)) {
  42. $aUImp = array_flip($aImportant);
  43. $aTopic['imp'] = $aUImp[$aPar[2]];
  44. $aTopic['name'] = $aPar[2];
  45. } else {
  46. $aTopic['imp'] = 0;
  47. $aTopic['name'] = 'hot';
  48. }
  49. if (is_numeric($aPar[3]) ) {
  50. $aTopic['id'] = $aPar[3];
  51. $page_param_key = 4;
  52. } else {
  53. $aTopic['id'] = 0;
  54. $page_param_key = 3;
  55. }
  56. if (preg_match('|page(\d+)|', $aPar[$page_param_key], $m )) {
  57. $aTopic['page'] = $m[1];
  58. } else {
  59. $aTopic['page'] = 1;
  60. }
  61. return $aTopic;
  62. }
  63. /**
  64. * Âåðíåò ìàññèâ äëÿ øàáëîíà ìåíþ
  65. *
  66. * @return unknown
  67. */
  68. function get_menu()
  69. {
  70. global $aImportant, $menu_count;
  71. $menu_count = array(0,0,0,0);
  72. $res = mysql_query('SELECT important, COUNT(`important`) as count FROM `task` WHERE sid=0 GROUP BY `important`');
  73. if ($res && mysql_num_rows($res)) {
  74. while ($data = mysql_fetch_assoc($res)) {
  75. $menu_count[$data['important']] = $data['count'];
  76. }
  77. } else {
  78. trigger_error('error select menu', E_USER_ERROR);
  79. }
  80. $last_date = time() - 86400*7;
  81. $menu_new = array(0,0,0,0);
  82. $res = mysql_query('SELECT important, COUNT(`important`) as count FROM `task` WHERE date > '.$last_date.' GROUP BY `important`');
  83. if ($res && mysql_num_rows($res)) {
  84. while ($data = mysql_fetch_assoc($res)) {
  85. $menu_new[$data['important']] = $data['count'];
  86. }
  87. }
  88. $namedImp = array('Ñðî÷íûå', 'Òåêó÷êà', 'Èäåè', 'Çàêðûòûå');
  89. // òàêîé ïåðåáîð äëÿ òîãî, ÷òîáû óñòàíîâèòü âñå èíäåêñû â ìàññèâå
  90. $out = array();
  91. for ($i = 0; $i <= 3; $i++) {
  92. $menu_count[$i] = $menu_count[$i] ? $menu_count[$i] : 0;
  93. $menu_new[$i] = $menu_new[$i] ? $menu_new[$i] : 0;
  94. $out[] = array('url' => $aImportant[$i], 'name' => $namedImp[$i], 'count' => $menu_count[$i], 'newcount' => $menu_new[$i]);
  95. }
  96. return $out;
  97. }
  98. /**
  99. * Âåðíåò HTML-êîä ñ íîìåðàìè ñòðàíèö
  100. *
  101. * Ïàðàìåòð $url äîëæåí çàêàí÷èâàòüñÿ íà ñëýøåì '/'
  102. *
  103. * @param integer $page
  104. * @param integer $perPage
  105. * @param integer $count
  106. * @param string $url
  107. * @return string
  108. */
  109. function get_page_line($page, $perPage, $count, $url)
  110. {
  111. $pageCount = ceil($count/$perPage);
  112. if ($pageCount > 1) {
  113. $ret = 'Ñòðàíèöû: ';
  114. $pages = array();
  115. for ($i = 1; $i <= $pageCount; $i++) {
  116. if ($i != $page) {
  117. $pages[] = '<a href="'.$url.'page'.$i.'">'.$i.'</a>';
  118. } else {
  119. $pages[] = ''.$i;
  120. }
  121. }
  122. return $ret.implode(' - ', $pages);
  123. } else {
  124. return '';
  125. }
  126. }
  127. /**
  128. *  ñîîòâåòñòâèè ñ ïàðàìåòðàìè, ïîëó÷åííûìè èç ôîðì ïðîèçâîäèò äåéñòâèÿ íàä òàáëèöåé task
  129. *
  130. * addtopic - äîáàâèòü ñîîáùåíèå â òîïèê
  131. * addreply - äîáàâèòü îòâåò â òîïèê
  132. *
  133. */
  134. function do_action()
  135. {
  136. global $aTopic, $userID;
  137. switch ($_POST['action']) {
  138. case 'addtopic':
  139. // äîáàâèòü òîïèê
  140. $selecto = (isset($_POST['selecto']) && is_numeric($_POST['selecto'])) ? $_POST['selecto'] : $aTopic['imp'];
  141. $inputo = (isset($_POST['inputo'])) ? $_POST['inputo'] : '';
  142. $inputo = trim($inputo) ? $inputo : 'untitled';
  143. $textarea = (isset($_POST['textarea'])) ? $_POST['textarea'] : '';
  144. $inputo = mysql_escape_string($inputo);
  145. $textarea = mysql_escape_string($textarea);
  146. $now = time();
  147. mysql_query("INSERT INTO `task` ( `id` , `sid` , `date` , `title` , `message` , `important` , `userID` )
  148. VALUES (
  149. '', '0', '$now', '$inputo', '$textarea', '$selecto', '$userID')");
  150. break;
  151. case 'addreply':
  152. // äîáàâèòü îòâåò â òîïèê
  153. $textarea = (isset($_POST['textarea'])) ? $_POST['textarea'] : '';
  154. $textarea = mysql_escape_string($textarea);
  155. $sid = (isset($_POST['sid']) && is_numeric($_POST['sid'])) ? $_POST['sid'] : 0;
  156. $now = time();
  157. mysql_query("INSERT INTO `task` ( `id` , `sid` , `date` , `title` , `message` , `important` , `userID` )
  158. VALUES (
  159. '', '{$aTopic['id']}', '$now', '', '$textarea', '{$aTopic['imp']}', '$userID')");
  160. break;
  161. case 'select_state':
  162. // èçìåíèòü âàæíîñòü òîïèêà
  163. $id = (isset($_POST['id']) && is_numeric($_POST['id'])) ? $_POST['id'] : -1;
  164. $select = (isset($_POST['select']) && is_numeric($_POST['select'])) ? $_POST['select'] : -1;
  165. if ($id!=-1 && $select!=-1) {
  166. mysql_query("UPDATE task SET important = '$select' WHERE id = '$id' LIMIT 1");
  167. }
  168. break;
  169. case 'save_reply':
  170. // ñîõðàíèòü èçìåíåíèÿ
  171. $id = (isset($_POST['id']) && is_numeric($_POST['id'])) ? $_POST['id'] : -1;
  172. $textarea = isset($_POST['textarea']) ? mysql_escape_string($_POST['textarea']) : '';
  173. if ($id != -1) {
  174. mysql_query("UPDATE task SET message = '$textarea' WHERE id='$id' LIMIT 1");
  175. }
  176. break;
  177. }
  178. switch ($_GET['action']) {
  179. case 'delete':
  180. if (isset($_GET['id']) && is_numeric($_GET['id'])) {
  181. $id = $_GET['id'];
  182. $res = mysql_query("SELECT COUNT(id) FROM task WHERE sid='$id'");
  183. if ($res) {
  184. list($count) = mysql_fetch_array($res);
  185. }
  186. if ($count) {
  187. mysql_query("DELETE FROM task WHERE sid='$id' LIMIT $count");
  188. }
  189. mysql_query("DELETE FROM task WHERE id='$id' LIMIT 1");
  190. if (!$count) {
  191. header('location: '.$_SERVER['HTTP_REFERER']);
  192. } else {
  193. header('location: /task/'.$aTopic['name']);
  194. }
  195. exit();
  196. }
  197. break;
  198. }
  199. }
  200. ?>