PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/my.mail.php

https://bitbucket.org/DESURE/dcms
PHP | 161 lines | 123 code | 36 blank | 2 comment | 32 complexity | 50df9704c1992bfbc386b1186abb7d16 MD5 | raw file
  1. <?php
  2. include_once 'sys/inc/start.php';
  3. $doc = new document(1);
  4. $doc->title = __('??? ?????');
  5. if (isset($_GET ['id'])) {
  6. $id_kont = (int) $_GET ['id'];
  7. $ank = new user($id_kont);
  8. if (!$ank->group && !mysql_result(mysql_query("SELECT COUNT(*) FROM `mail` WHERE `id_user` = '{$user->id}' AND `id_sender` = '$id_kont'"), 0)) {
  9. $doc->err(__('???????????? ?? ??????'));
  10. $doc->ret(__('? ?????'), '?');
  11. exit();
  12. }
  13. $can_write = true;
  14. if (!$user->is_writeable) {
  15. $doc->msg(__('?????? ?????????'), 'write_denied');
  16. $can_write = false;
  17. }
  18. $accept_send = $ank->id && $ank->group && $ank->id != $user->id && $can_write;
  19. if ($ank->mail_only_friends && !$ank->is_friend($user)) {
  20. $accept_send = false;
  21. $doc->err(__('?????? ????????? ????? ?????? ??????'));
  22. if ($user->group > $ank->group) {
  23. $accept_send = true;
  24. $doc->msg(__('??? ?????? ????????? ???????? ????????? ??????? ???????????? ???????? ?? ????????????? ???????????'));
  25. }
  26. } elseif ($ank->id && $user->mail_only_friends && !$user->is_friend($ank) && $user->group >= $ank->group) {
  27. $doc->err(__('???????????? ?? ?????? ??? ????????'));
  28. }
  29. if ($accept_send && isset($_POST ['post']) && isset($_POST ['mess'])) {
  30. $mess = (string) $_POST ['mess'];
  31. text::nickSearch($mess); // ????? ? ?????????????? @nick
  32. $mess = text::input_text($mess);
  33. if ($user->group <= $ank->group && !$ank->is_friend($user) && (empty($_POST ['captcha']) || empty($_POST ['captcha_session']) || !captcha::check($_POST ['captcha'], $_POST ['captcha_session'])))
  34. $doc->err(__('??????????? ????? ??????? ???????'));
  35. elseif (!$mess)
  36. $doc->err(__('????????? ?????'));
  37. else {
  38. $ank->mess($mess, $user->id);
  39. $doc->msg(__('????????? ??????? ??????????'));
  40. header('Refresh: 1; url=?id=' . $id_kont);
  41. exit();
  42. }
  43. $doc->ret(__('? ??????????'), '?id=' . $id_kont);
  44. }
  45. $doc->title = __('????????? ? "%s"', $ank->login);
  46. if ($accept_send) {
  47. $smarty = new design ();
  48. $smarty->assign('method', 'post');
  49. $smarty->assign('action', "/my.mail.php?id=$id_kont&amp;" . passgen());
  50. $elements = array();
  51. $elements [] = array('type' => 'textarea', 'title' => __('?????????'), 'br' => 1, 'info' => array('name' => 'mess'));
  52. if ($user->group <= $ank->group && !$ank->is_friend($user))
  53. $elements [] = array('type' => 'captcha', 'session' => captcha::gen(), 'br' => 1);
  54. $elements [] = array('type' => 'submit', 'br' => 0, 'info' => array('name' => 'post', 'value' => __('?????????'))); // ??????
  55. $elements [] = array('type' => 'submit', 'br' => 0, 'info' => array('name' => 'refresh', 'value' => __('????????'))); // ??????
  56. $smarty->assign('el', $elements);
  57. $smarty->display('input.form.tpl');
  58. }
  59. $pages = new pages ();
  60. $pages->posts = mysql_result(mysql_query("SELECT COUNT(*) FROM `mail` WHERE (`id_user` = '{$user->id}' AND `id_sender` = '$id_kont') OR (`id_user` = '$id_kont' AND `id_sender` = '{$user->id}')"), 0); // ?????????? ?????
  61. $pages->this_page(); // ???????? ??????? ????????
  62. $q = mysql_query("SELECT * FROM `mail`
  63. WHERE (`id_user` = '{$user->id}' AND `id_sender` = '$id_kont')
  64. OR (`id_user` = '$id_kont' AND `id_sender` = '{$user->id}')
  65. ORDER BY `id` DESC
  66. LIMIT $pages->limit");
  67. // ??????? ? ????????? ?????
  68. mysql_query("UPDATE `mail` SET `is_read` = '1' WHERE `id_user` = '{$user->id}' AND `id_sender` = '$id_kont'");
  69. // echo mysql_info();
  70. if (preg_match('#Changed: ([0-9]+)#i', mysql_info(), $ch)) {
  71. if ($ch [1]) {
  72. $user->mail_new_count = $user->mail_new_count - $ch [1];
  73. }
  74. }
  75. $listing = new listing();
  76. while ($mail = mysql_fetch_assoc($q)) {
  77. $ank2 = new user((int) $mail ['id_sender']);
  78. $post = $listing->post();
  79. $post->title = $ank2->nick();
  80. $post->url = '/profile.view.php?id=' . $ank2->id;
  81. $post->icon($ank2->icon());
  82. $post->content = output_text($mail ['mess']);
  83. $post->hightlight = !$mail ['is_read'];
  84. $post->time = vremja($mail ['time']);
  85. }
  86. $listing->display(__('????????? ???????????'));
  87. $pages->display('?id=' . $ank->id . '&amp;'); // ????? ???????
  88. $doc->ret(__('??? ?????????'), '/my.mail.php');
  89. $doc->ret(__('?????? ????'), '/menu.user.php');
  90. exit();
  91. }
  92. $user->mail_new_count = mysql_result(mysql_query("SELECT COUNT(*) FROM `mail` WHERE `id_user` = '$user->id' AND `is_read` = '0'"), 0);
  93. if (isset($_GET ['only_unreaded'])) {
  94. $sql_add = " AND `is_read` = '0'";
  95. } else {
  96. $sql_add = '';
  97. }
  98. $pages = new pages ();
  99. $pages->posts = mysql_result(mysql_query("SELECT COUNT(DISTINCT(`id_sender`)) FROM `mail` WHERE `id_user` = '{$user->id}'$sql_add"), 0); // ?????????? ?????????? ?????????????
  100. $pages->this_page(); // ???????? ??????? ????????
  101. $q = mysql_query("SELECT `users`.`id`,
  102. `mail`.`id_sender`,
  103. MAX(`mail`.`time`) AS `time`,
  104. MIN(`mail`.`is_read`) AS `is_read`,
  105. COUNT(`mail`.`id`) AS `count`
  106. FROM `mail`
  107. LEFT JOIN `users` ON `mail`.`id_sender` = `users`.`id`
  108. WHERE `mail`.`id_user` = '{$user->id}'$sql_add
  109. GROUP BY `mail`.`id_sender`
  110. ORDER BY `time` DESC
  111. LIMIT $pages->limit");
  112. $listing = new listing();
  113. while ($mail = mysql_fetch_assoc($q)) {
  114. $ank = new user((int) $mail ['id_sender']);
  115. $post = $listing->post();
  116. $post->icon($ank->icon());
  117. $post->url = '?id=' . $ank->id;
  118. $post->title = $ank->nick();
  119. $post->counter = $sql_add ? '+' . $mail['count'] : $mail['count'];
  120. $post->hightlight = !$mail ['is_read'];
  121. }
  122. $listing->display(__('????? ???????????'));
  123. $pages->display('?');
  124. $doc->ret(__('?????? ????'), '/menu.user.php');
  125. ?>