Просмотр файла pages/mail.php

Размер файла: 9.91Kb
  1. <?php
  2. include '../engine/includes/start.php';
  3. if (!$user_id)
  4. Core::stop('/index.php');
  5. /*
  6. * By Denis27
  7. */
  8.  
  9. switch ($act)
  10. {
  11. case 'ajax':
  12. header('Content-Type: text/xml');
  13. ?>
  14. <response>
  15. <new_mail><?=$sql->query('SELECT sum(`unread`) FROM `mail_contacts` WHERE `user_id` = ' . $user_id)->result()?></new_mail>
  16. </response>
  17. <?
  18. exit;
  19. break;
  20. /*
  21. ---------------------------------
  22. Переписка с пользователем
  23. ---------------------------------
  24. */
  25. case 'mail':
  26. if (!$id)
  27. Core::stop('?');
  28. Core::get(array('page.class', 'text.class'), 'classes');
  29. if ($sql->query('SELECT COUNT(*) FROM `user` WHERE `id` = '.$id)->result() > 0)
  30. {
  31. $contact = $sql->query("SELECT `id`, `nick`, `date_reg`, `date_last`, `pol`, `group_access` FROM `user` WHERE `id` = ".$id." LIMIT 1")->fetch();
  32. $sql->query('UPDATE `mail_contacts` SET `unread` = 0 WHERE `user_id` = '.$user_id.' AND `id_cont` = '.$id);
  33. $user['date_last'] = time() + 300;
  34. $set['title'] = 'Переписка с ' . $contact['nick'];
  35. include incDir . 'head.php';
  36. /* Отправка сообщения */
  37. if (isset($_POST['add_mail'])) {
  38. $text = my_esc($_POST['text'], 'true');
  39. if (empty($_POST['text']) || mb_strlen($_POST['text'], 'UTF-8') <= 1) {
  40. Core::msg_show('Сообщение слишком короткое');
  41. } elseif (mb_strlen($_POST['text'], 'UTF-8') > 1024) {
  42. Core::msg_show('Сообщение превышает 1024 символа');
  43. } elseif ($id == $user_id) {
  44. Core::msg_show('Нельзя отправлять сообщения самому себе');
  45. } else {
  46. $sql->query("INSERT INTO `mail` (`author`, `user`, `time`, `text`) VALUES ('$user_id', '$id', '$time', '$text')");
  47.  
  48. if ($sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '$user_id' AND `id_cont` = '$id'")->result() == 0)
  49. $sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `outbox`) VALUES (' . $user_id . ', ' . $id . ', "1")');
  50. else
  51. $sql->query('UPDATE `mail_contacts` SET `outbox` = `outbox`+1 WHERE `user_id` = ' . $user_id . ' AND `id_cont` = '. $id);
  52.  
  53. if ($sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '". $id ."' AND `id_cont` = '" . $user_id . "'")->result() == 0)
  54. $sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `inbox`, `unread`) VALUES (' . $id . ', ' . $user_id . ', "1", "1")');
  55. else
  56. $sql->query('UPDATE `mail_contacts` SET `inbox` = `inbox`+1, `unread` = `unread`+1 WHERE `user_id` = ' . $id . ' AND `id_cont` = '. $user_id);
  57.  
  58. Core::msg_show('Сообщение успешно отправлено', 'msg');
  59. unset($text);
  60. }
  61. }
  62. $js_form = 'form';
  63. $js_elem = 'text';
  64. include incDir . 'JsToolBar.php';
  65. ?>
  66. <form name="form" action="?act=<?=$act . '&amp;id=' .$id?>" method="POST">
  67. Сообщение:<br />
  68. <textarea name="text"><? echo !empty($text) ? $text : null ?></textarea><br />
  69. <input type="submit" name="add_mail"/>
  70. </form>
  71. <?
  72. $count = $sql->query("SELECT COUNT(*) FROM `mail` WHERE `author` = '$user_id' AND `user` = '$id' OR `author` = '$id' AND `user` = '$user_id'")->result();
  73.  
  74. if ($count > 0) {
  75. $sql->query('UPDATE `mail` SET `no` = "1" WHERE `author` = ' . $id . ' AND `user` = ' . $user_id);
  76. $page = new page($count, $set['p_str']);
  77. $i = 1;
  78. $sql->query("SELECT * FROM `mail` WHERE `author` = '$user_id' AND `user` = '$id' OR `author` = '$id' AND `user` = '$user_id' order by `id` DESC LIMIT " . $page->limit());
  79. while ($mail = $sql->fetch())
  80. {
  81. echo
  82. '<div class="'.($i++ % 2 ? 'p_m' : 'p_t').'">' .
  83. Core::user_show($mail['author'] == $id ? $contact : $user,
  84. array('post' => text::output($mail['text']), 'status' => $mail['time'], 'is_time' => true)) .
  85. (empty($mail['no']) ?'<span style="color:#FF0000;float:right;">Не прочитанно</span>' : null) .
  86. '</div>';
  87. }
  88. $page->display('?act=mail&amp;id=' . $id . '&amp;');
  89. unset($text, $contact, $page, $mail, $count);
  90. $sql->free();
  91. } else
  92. Core::msg_show('Переписка пуста');
  93. } else
  94. Core::msg_show('Пользователь не найден');
  95. echo '<a href="?"><div class="menu_razd">Список контактов</div></a>';
  96. break;
  97.  
  98.  
  99.  
  100.  
  101. /*
  102. ---------------------------------
  103. Написание сообщения
  104. ---------------------------------
  105. */
  106. case 'add_mail':
  107. $set['title'] = 'Написать сообщение';
  108. include H.'engine/includes/head.php';
  109. if (isset($_POST['add'])) {
  110. $_SESSION['login_mail'] = my_esc($_POST['login'], 'true');
  111. $_SESSION['text_mail'] = my_esc($_POST['text'], 'true');
  112. $login_mail = my_esc($_POST['login'],'true');
  113. $text = my_esc($_POST['text'], 'true');
  114. if (empty($_POST['login'])) {
  115. Core::msg_show('Вы не ввели логин пользователя');
  116. } elseif (empty($_POST['text']) || mb_strlen($_POST['text'], 'UTF-8') <= 1) {
  117. Core::msg_show('Сообщение слишком короткое');
  118. } elseif (mb_strlen($_POST['text'], 'UTF-8') > 1024) {
  119. Core::msg_show('Сообщение превышает 1024 символа');
  120. } elseif ($_POST['login'] == $user['nick']) {
  121. Core::msg_show('Нельзя отправлять сообщения самому себе');
  122. } elseif ($sql->query("SELECT COUNT(*) FROM `user` WHERE `nick` = '$login_mail'")->result() > 0) {
  123. $sql->query("SELECT `id` FROM `user` WHERE `nick` = '$login_mail'");
  124. $users = $sql->fetch();
  125. /* Отправляем сообщение */
  126. $sql->query("INSERT INTO `mail` (`author`, `user`, `time`, `text`) VALUES ('$user_id', '" . $users['id'] . "', '$time', '$text')");
  127. /* Добавляем пользователя в контакты, если его нету и обновляем счетчики */
  128. if ($sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '$user_id' AND `id_cont` = '" . $users['id'] . "'")->result() == 0)
  129. $sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `outbox`) VALUES (' . $user_id . ', ' . $users['id'] .', "1")');
  130. else
  131. $sql->query('UPDATE `mail_contacts` SET `outbox` = `outbox`+1 WHERE `user_id` = ' . $user_id . ' AND `id_cont` = '. $users['id']);
  132.  
  133. if ($sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '". $users['id'] ."' AND `id_cont` = '" . $user_id . "'")->result() == 0)
  134. $sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `inbox`, `unread`) VALUES (' . $users['id'] . ', ' . $user_id . ', "1", "1")');
  135. else
  136. $sql->query('UPDATE `mail_contacts` SET `inbox` = `inbox`+1, `unread` = `unread`+1 WHERE `user_id` = ' . $users['id'] . ' AND `id_cont` = '. $user_id);
  137.  
  138. UnSET($_SESSION['login_mail'], $_SESSION['text_mail']);
  139. $_SESSION['add_mail'] = true;
  140. Core::stop('?');
  141. } else
  142. Core::msg_show('Пользователь с логином <b>' . $login_mail . '</b> не найден');
  143. }
  144. $js_form = 'form';
  145. $js_elem = 'text';
  146. ?>
  147. <form action="" name="form" method="POST">
  148. Введите логин пользователя:<br />
  149. <input type="text" name="login" value="<? echo empty($_SESSION['login_mail']) ? '' : $_SESSION['login_mail']; ?>" /><br />
  150. Сообщение:<br />
  151. <? include incDir . 'JsToolBar.php';?>
  152. <textarea name="text"><? echo empty($_SESSION['text_mail']) ? '' : $_SESSION['text_mail']; ?></textarea><br />
  153. <input type="submit" name="add"/>
  154. </form>
  155. <a href="?"><div class="menu_razd">Список контактов</div></a>
  156. <?
  157. break;
  158.  
  159.  
  160.  
  161.  
  162.  
  163. /*
  164. ---------------------------------
  165. Вывод контактов
  166. ---------------------------------
  167. */
  168. default:
  169. $set['title'] = 'Контакты';
  170. include H.'engine/includes/head.php';
  171. Core::get('page.class', 'classes');
  172. if (isset($_SESSION['add_mail'])) {
  173. Core::msg_show('Сообщение успешно отправлено', 'msg');
  174. UnSET($_SESSION['add_mail']);
  175. }
  176. echo '<div class="fmenu"><a href="?act=add_mail">Написать сообщение</a></div>';
  177. $count = $sql->query('SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = ' . $user_id)->result();
  178. if ($count > 0) {
  179. $k_post = $count;
  180. $page = new page($k_post, $set['p_str']);
  181. $query = $sql->query('SELECT `mail_contacts`.*, `user`.`nick`,`user`.`pol`, `user`.`id`, `user`.`group_access`, `user`.`date_last` FROM `mail_contacts` LEFT JOIN `user` ON `mail_contacts`.`id_cont` = `user`.`id` WHERE `mail_contacts`.`user_id` = ' . $user_id . ' order by `mail_contacts`.`unread` DESC LIMIT ' . $page->limit());
  182. while ($cont = $sql->fetch())
  183. {
  184. echo '
  185. <a href="?act=mail&amp;id=' . $cont['id'] . '">
  186. <div class="link">'. Core::user_icon($cont) .' ' . $cont['nick'] . '
  187. (' . $cont['inbox'] . '/' . $cont['outbox'] . ')' .
  188. (empty($cont['unread']) ? '' : '<b>+' . $cont['unread'] . '</b>') .
  189. '</div></a>';
  190. }
  191. $page->display('?');
  192. } else
  193. Core::msg_show('Контактов нет');
  194. }
  195.  
  196. echo '
  197. <div class="menu_razd">См. также</div>
  198. <div class="link"><a href="/pages/menu.php">Кабинет</a></div>
  199. <div class="link"><a href="/">Главная</a></div>';
  200. include H.'engine/includes/foot.php';