/webapp/lib/db/read/message.php

https://github.com/usagi-project/mynets1 · PHP · 459 lines · 347 code · 52 blank · 60 comment · 71 complexity · 1245cb6f70f46478732f88f10302455e MD5 · raw file

  1. <?php
  2. /* ========================================================================
  3. *
  4. * @license This source file is subject to version 3.01 of the PHP license,
  5. * that is available at http://www.php.net/license/3_01.txt
  6. * If you did not receive a copy of the PHP license and are unable
  7. * to obtain it through the world-wide-web, please send a note to
  8. * license@php.net so we can mail you a copy immediately.
  9. *
  10. * @category Application of MyNETS
  11. * @project OpenPNE UsagiProject 2006-2007
  12. * @package MyNETS
  13. * @author UsagiProject <info@usagi-project.org>
  14. * @copyright 2006-2007 UsagiProject <author member ad http://usagi-project.org/member.html>
  15. * @version MyNETS,v 1.0.0
  16. * @since File available since Release 1.0.0 Nighty
  17. * @chengelog [2007/02/17] Ver1.1.0Nighty package
  18. * ========================================================================
  19. */
  20. /**
  21. * OpenPNE
  22. * @copyright 2005-2006 OpenPNE Project
  23. * @link http://www.tejimaya.com/openpne.shtml
  24. *
  25. */
  26. /**
  27. * メッセージIDからメッセージ情報取得
  28. */
  29. if (! function_exists('_db_c_message4c_message_id'))
  30. {
  31. function _db_c_message4c_message_id($c_message_id)
  32. {
  33. $sql = 'SELECT * FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE c_message_id = ?';
  34. $params = array(intval($c_message_id));
  35. $c_message = db_get_row($sql, $params);
  36. $c_member_from = db_common_c_member4c_member_id_LIGHT($c_message['c_member_id_from']);
  37. $c_member_to = db_common_c_member4c_member_id_LIGHT($c_message['c_member_id_to']);
  38. $c_message['c_member_image_filename_from'] = $c_member_from['image_filename'];
  39. $c_message['c_member_nickname_from'] = $c_member_from['nickname'];
  40. $c_message['c_member_image_filename_to'] = $c_member_to['image_filename'];
  41. $c_message['c_member_nickname_to'] = $c_member_to['nickname'];
  42. return $c_message;
  43. }
  44. }
  45. /**
  46. * 未読メッセージの数を数える
  47. *
  48. * @return num_message_not_is_read
  49. */
  50. if (! function_exists('p_h_message_count_c_message_not_is_read4c_member_to_id'))
  51. {
  52. function p_h_message_count_c_message_not_is_read4c_member_to_id($c_member_id_to)
  53. {
  54. $sql = 'SELECT COUNT(*) FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE c_member_id_to = ?' .
  55. ' AND is_read = 0 AND is_send = 1';
  56. $params = array(intval($c_member_id_to));
  57. return db_get_one($sql, $params);
  58. }
  59. }
  60. /**
  61. * メッセージ取得
  62. */
  63. if (! function_exists('p_h_message_c_message4c_message_id'))
  64. {
  65. function p_h_message_c_message4c_message_id($c_message_id, $u)
  66. {
  67. $c_message = _db_c_message4c_message_id($c_message_id);
  68. if ($c_message['c_member_id_to'] == $u) {
  69. // 受信メッセージ
  70. $c_message['is_received'] = true;
  71. $c_message['image_filename_disp'] = $c_message['c_member_image_filename_from'];
  72. } elseif ($c_message['c_member_id_from'] == $u) {
  73. // 送信メッセージ
  74. $c_message['is_received'] = false;
  75. $c_message['image_filename_disp'] = $c_message['c_member_image_filename_to'];
  76. }
  77. return $c_message;
  78. }
  79. }
  80. /**
  81. * 受信メッセージリストを取得
  82. */
  83. if (! function_exists('p_h_message_box_c_message_received_list4c_member_id4range'))
  84. {
  85. function p_h_message_box_c_message_received_list4c_member_id4range($c_member_id, $page, $page_size)
  86. {
  87. $sql = "SELECT * FROM " . MYNETS_PREFIX_NAME . "c_message";
  88. $where = "c_member_id_to = ?".
  89. " AND is_deleted_to = 0" .
  90. " AND is_send = 1";
  91. $sql .= " WHERE $where";
  92. $sql .= " ORDER BY r_datetime DESC";
  93. $params = array(intval($c_member_id));
  94. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  95. foreach ($c_message_list as $key => $value) {
  96. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
  97. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  98. $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
  99. }
  100. $sql = "SELECT COUNT(*) FROM " . MYNETS_PREFIX_NAME . "c_message WHERE $where";
  101. $total_num = db_get_one($sql, $params);
  102. if ($total_num != 0) {
  103. $total_page_num = ceil($total_num / $page_size);
  104. if ($page >= $total_page_num) {
  105. $next = false;
  106. } else {
  107. $next = true;
  108. }
  109. if ($page <= 1) {
  110. $prev = false;
  111. } else {
  112. $prev = true;
  113. }
  114. }
  115. return array($c_message_list , $prev , $next, $total_num);
  116. }
  117. }
  118. /**
  119. * 送信メッセージリストを取得
  120. */
  121. if (! function_exists('p_h_message_box_c_message_sent_list4c_member_id4range'))
  122. {
  123. function p_h_message_box_c_message_sent_list4c_member_id4range($c_member_id, $page, $page_size)
  124. {
  125. $sql = "SELECT * FROM " . MYNETS_PREFIX_NAME . "c_message";
  126. $where = "c_member_id_from = ?" .
  127. " AND is_deleted_from = 0" .
  128. " AND is_send = 1";
  129. $sql .= " WHERE $where";
  130. $sql .= " ORDER BY r_datetime DESC";
  131. $params = array(intval($c_member_id));
  132. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  133. foreach ($c_message_list as $key => $value) {
  134. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  135. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  136. $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
  137. }
  138. $sql = "SELECT COUNT(*) FROM " . MYNETS_PREFIX_NAME . "c_message WHERE $where";
  139. $total_num = db_get_one($sql, $params);
  140. if ($total_num != 0) {
  141. $total_page_num = ceil($total_num / $page_size);
  142. if ($page >= $total_page_num) {
  143. $next = false;
  144. } else {
  145. $next = true;
  146. }
  147. if ($page <= 1) {
  148. $prev = false;
  149. } else {
  150. $prev = true;
  151. }
  152. }
  153. return array($c_message_list , $prev , $next, $total_num);
  154. }
  155. }
  156. /**
  157. * 下書き保存メッセージリストを取得
  158. */
  159. if (! function_exists('p_h_message_box_c_message_save_list4c_member_id4range'))
  160. {
  161. function p_h_message_box_c_message_save_list4c_member_id4range($c_member_id, $page, $page_size)
  162. {
  163. $sql = "SELECT * FROM " . MYNETS_PREFIX_NAME . "c_message";
  164. $where = "c_member_id_from = ?".
  165. " AND is_send = 0" .
  166. " AND is_deleted_from = 0";
  167. $sql .= " WHERE $where";
  168. $sql .= " ORDER BY r_datetime DESC";
  169. $params = array(intval($c_member_id));
  170. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  171. foreach ($c_message_list as $key => $value) {
  172. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  173. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  174. $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
  175. }
  176. $sql = "SELECT COUNT(*) FROM " . MYNETS_PREFIX_NAME . "c_message WHERE $where";
  177. $total_num = db_get_one($sql, $params);
  178. if ($total_num != 0) {
  179. $total_page_num = ceil($total_num / $page_size);
  180. if ($page >= $total_page_num) {
  181. $next = false;
  182. } else {
  183. $next = true;
  184. }
  185. if ($page <= 1) {
  186. $prev = false;
  187. } else {
  188. $prev = true;
  189. }
  190. }
  191. return array($c_message_list, $prev, $next, $total_num);
  192. }
  193. }
  194. /**
  195. * ごみ箱メッセージリストを取得
  196. */
  197. if (! function_exists('p_h_message_box_c_message_trash_list4c_member_id4range'))
  198. {
  199. function p_h_message_box_c_message_trash_list4c_member_id4range($c_member_id, $page, $page_size)
  200. {
  201. $where = "(" .
  202. "c_member_id_from = ?" .
  203. " AND is_deleted_from = 1" .
  204. " AND is_kanzen_sakujo_from = 0" .
  205. ") OR (" .
  206. "c_member_id_to = ?" .
  207. " AND is_deleted_to = 1" .
  208. " AND is_kanzen_sakujo_to = 0" .
  209. " AND is_send = 1" .
  210. ")";
  211. $sql = 'SELECT * FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE '. $where . ' ORDER BY r_datetime DESC';
  212. $params = array(intval($c_member_id), intval($c_member_id));
  213. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  214. $sql = 'SELECT COUNT(*) FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE ' . $where;
  215. $total_num = db_get_one($sql, $params);
  216. if ($total_num != 0) {
  217. $total_page_num = ceil($total_num / $page_size);
  218. if ($page >= $total_page_num) {
  219. $next = false;
  220. } else {
  221. $next = true;
  222. }
  223. if ($page <= 1) {
  224. $prev = false;
  225. } else {
  226. $prev = true;
  227. }
  228. }
  229. foreach ($c_message_list as $key => $value) {
  230. if ($value['c_member_id_to'] == $c_member_id) {
  231. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
  232. } else {
  233. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  234. }
  235. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  236. $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
  237. }
  238. return array($c_message_list, $prev, $next, $total_num);
  239. }
  240. }
  241. /**
  242. * 未読メッセージ数を取得
  243. *
  244. * @param int $c_member_id
  245. * @return int 未読メッセージ数
  246. */
  247. if (! function_exists('k_p_h_home_c_message_received_unread_all_count4c_member_id'))
  248. {
  249. function k_p_h_home_c_message_received_unread_all_count4c_member_id($c_member_id)
  250. {
  251. $sql = 'SELECT COUNT(*) FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE c_member_id_to = ?' .
  252. ' AND is_read = 0 AND is_send = 1';
  253. $params = array(intval($c_member_id));
  254. return db_get_one($sql, $params);
  255. }
  256. }
  257. if (! function_exists('k_p_h_message_box_c_message_received_list4c_member_id4range'))
  258. {
  259. function k_p_h_message_box_c_message_received_list4c_member_id4range($c_member_id, $page_size, $page)
  260. {
  261. $sql = "SELECT * FROM " . MYNETS_PREFIX_NAME . "c_message";
  262. $sql .= " WHERE c_member_id_to = ?".
  263. " AND is_deleted_to = 0" .
  264. " AND is_send = 1";
  265. $sql .= " ORDER BY r_datetime DESC";
  266. $params = array(intval($c_member_id));
  267. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  268. foreach ($c_message_list as $key => $value) {
  269. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
  270. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  271. }
  272. $sql = "SELECT COUNT(*) FROM " . MYNETS_PREFIX_NAME . "c_message" .
  273. " WHERE c_member_id_to = ?".
  274. " AND is_deleted_to = 0" .
  275. " AND is_send = 1";
  276. $total_num = db_get_one($sql, $params);
  277. if ($total_num != 0) {
  278. $total_page_num = ceil($total_num / $page_size);
  279. if ($page >= $total_page_num) {
  280. $next = false;
  281. } else {
  282. $next = true;
  283. }
  284. if ($page <= 1) {
  285. $prev = false;
  286. } else {
  287. $prev = true;
  288. }
  289. }
  290. return array($c_message_list, $prev, $next, $total_num);
  291. }
  292. }
  293. if (! function_exists('k_p_h_message_box_c_message_sent_list4c_member_id4range'))
  294. {
  295. function k_p_h_message_box_c_message_sent_list4c_member_id4range($c_member_id, $page_size, $page)
  296. {
  297. $sql = "SELECT * FROM " . MYNETS_PREFIX_NAME . "c_message";
  298. $sql .= " WHERE c_member_id_from = ?".
  299. " AND is_deleted_from = 0" .
  300. " AND is_send = 1";
  301. $sql .= " ORDER BY r_datetime DESC";
  302. $params = array(intval($c_member_id));
  303. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  304. foreach ($c_message_list as $key => $value) {
  305. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  306. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  307. }
  308. $sql = "SELECT COUNT(*) FROM " . MYNETS_PREFIX_NAME . "c_message" .
  309. " WHERE c_member_id_from = ?".
  310. " AND is_deleted_from = 0" .
  311. " AND is_send = 1";
  312. $total_num = db_get_one($sql, $params);
  313. if ($total_num != 0) {
  314. $total_page_num = ceil($total_num / $page_size);
  315. if ($page >= $total_page_num) {
  316. $next = false;
  317. } else {
  318. $next = true;
  319. }
  320. if ($page <= 1) {
  321. $prev = false;
  322. } else {
  323. $prev = true;
  324. }
  325. }
  326. return array($c_message_list, $prev, $next, $total_num);
  327. }
  328. }
  329. /**
  330. * 返信側にある返信元メッセージIDを取得
  331. */
  332. if (! function_exists('do_get_hensinmoto_id'))
  333. {
  334. function do_get_hensinmoto_id($hensin_c_message_id)
  335. {
  336. $sql = 'SELECT hensinmoto_c_message_id FROM ' . MYNETS_PREFIX_NAME . 'c_message WHERE c_message_id = ?';
  337. $params = array(intval($hensin_c_message_id));
  338. return db_get_one($sql, $params);
  339. }
  340. }
  341. //メッセージを検索
  342. if (! function_exists('db_message_search_c_message'))
  343. {
  344. function db_message_search_c_message($c_member_id, $page, $page_size, $keyword, $box, $target_c_member_id = null)
  345. {
  346. $params = array();
  347. $params[] = intval($c_member_id);
  348. if ($box == 'inbox' || !$box) {
  349. $where = "c_member_id_to = ?".
  350. " AND is_deleted_to = 0" .
  351. " AND is_send = 1";
  352. if ($target_c_member_id) {
  353. $where .= " AND c_member_id_from = ?";
  354. $params[] = intval($target_c_member_id);
  355. }
  356. } elseif ($box == 'outbox') {
  357. $where = "c_member_id_from = ?".
  358. " AND is_deleted_from = 0" .
  359. " AND is_send = 1";
  360. if ($target_c_member_id) {
  361. $where .= " AND c_member_id_to = ?";
  362. $params[] = intval($target_c_member_id);
  363. }
  364. }
  365. if ($keyword) {
  366. //全角空白を半角に統一
  367. $keyword = str_replace(' ', ' ', $keyword);
  368. $keyword_list = explode(' ', $keyword);
  369. foreach ($keyword_list as $word) {
  370. $word = check_search_word($word);
  371. $where .= ' AND (subject LIKE ? OR body LIKE ?)';
  372. $params[] = '%'.$word.'%';
  373. $params[] = '%'.$word.'%';
  374. }
  375. }
  376. $sql = "SELECT * FROM c_message";
  377. $sql .= " WHERE $where";
  378. $sql .= " ORDER BY r_datetime DESC";
  379. $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
  380. foreach ($c_message_list as $key => $value) {
  381. if ($box == 'inbox' || !$box) {
  382. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
  383. } else {
  384. $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  385. }
  386. $c_message_list[$key]['nickname'] = $c_member['nickname'];
  387. $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
  388. }
  389. $sql = "SELECT COUNT(*) FROM c_message WHERE $where";
  390. $total_num = db_get_one($sql, $params);
  391. if ($total_num != 0) {
  392. $total_page_num = ceil($total_num / $page_size);
  393. if ($page >= $total_page_num) {
  394. $next = false;
  395. } else {
  396. $next = true;
  397. }
  398. if ($page <= 1) {
  399. $prev = false;
  400. } else {
  401. $prev = true;
  402. }
  403. }
  404. return array($c_message_list , $prev , $next, $total_num);
  405. }
  406. }
  407. ?>