ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/ebihara/prj_tuning_2_5/webapp/lib/db/message.php @ 583

Last change on this file since 583 was 583, checked in by ebihara, 14 years ago

メッセージボックスのごみ箱リストの表示件数を変数$page_sizeで指定するように。

File size: 18.6 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * メッセージIDからメッセージ情報取得
9 */
10function db_message_c_message4c_message_id($c_message_id)
11{
12    $sql = 'SELECT * FROM c_message WHERE c_message_id = ?';
13    $params = array(intval($c_message_id));
14    $c_message = db_get_row($sql, $params);
15
16    $c_member_from = db_common_c_member4c_member_id_LIGHT($c_message['c_member_id_from']);
17    $c_member_to = db_common_c_member4c_member_id_LIGHT($c_message['c_member_id_to']);
18
19    $c_message['c_member_image_filename_from'] = $c_member_from['image_filename'];
20    $c_message['c_member_nickname_from'] = $c_member_from['nickname'];
21    $c_message['c_member_image_filename_to'] = $c_member_to['image_filename'];
22    $c_message['c_member_nickname_to'] = $c_member_to['nickname'];
23
24    return $c_message;
25}
26
27/**
28 * 未読メッセージの数を数える
29 *
30 * @return  num_message_not_is_read
31 */
32function db_message_count_c_message_not_is_read4c_member_to_id($c_member_id_to)
33{
34    $sql = 'SELECT COUNT(*) FROM c_message WHERE c_member_id_to = ?' .
35            ' AND is_read = 0 AND is_send = 1';
36    $params = array(intval($c_member_id_to));
37    return db_get_one($sql, $params);
38}
39
40/**
41 * メッセージ取得
42 */
43function db_message_c_message4c_message_id2($c_message_id, $u)
44{
45    $c_message = db_message_c_message4c_message_id($c_message_id);
46
47    if ($c_message['c_member_id_to'] == $u) {
48        // 受信メッセージ
49        $c_message['is_received'] = true;
50        $c_message['image_filename_disp'] = $c_message['c_member_image_filename_from'];
51    } elseif ($c_message['c_member_id_from'] == $u) {
52        // 送信メッセージ
53        $c_message['is_received'] = false;
54        $c_message['image_filename_disp'] = $c_message['c_member_image_filename_to'];
55    }
56    return $c_message;
57}
58
59/**
60 * 受信メッセージリストを取得
61 */
62function db_message_c_message_received_list4c_member_id4range($c_member_id, $page, $page_size)
63{
64    $sql = "SELECT * FROM c_message";
65    $where = "c_member_id_to = ?".
66            " AND is_deleted_to = 0" .
67            " AND is_send = 1";
68    $sql .= " WHERE $where";
69    $sql .= " ORDER BY r_datetime DESC";
70    $params = array(intval($c_member_id));
71    $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
72
73    foreach ($c_message_list as $key => $value) {
74        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
75        $c_message_list[$key]['nickname'] = $c_member['nickname'];
76        $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
77    }
78
79    $sql = "SELECT COUNT(*) FROM c_message WHERE $where";
80    $total_num = db_get_one($sql, $params);
81
82    if ($total_num != 0) {
83        $total_page_num =  ceil($total_num / $page_size);
84        if ($page >= $total_page_num) {
85            $next = false;
86        } else {
87            $next = true;
88        }
89        if ($page <= 1) {
90            $prev = false;
91        } else {
92            $prev = true;
93        }
94    }
95    return array($c_message_list , $prev , $next);
96}
97
98/**
99 * 送信メッセージリストを取得
100 */
101function db_message_c_message_sent_list4c_member_id4range($c_member_id, $page, $page_size)
102{
103    $sql = "SELECT * FROM c_message";
104    $where = "c_member_id_from = ?" .
105            " AND is_deleted_from = 0" .
106            " AND is_send = 1";
107    $sql .= " WHERE $where";
108    $sql .= " ORDER BY r_datetime DESC";
109    $params = array(intval($c_member_id));
110    $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
111
112    foreach ($c_message_list as $key => $value) {
113        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
114        $c_message_list[$key]['nickname'] = $c_member['nickname'];
115        $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
116    }
117
118    $sql =  "SELECT COUNT(*) FROM c_message WHERE $where";
119    $total_num = db_get_one($sql, $params);
120
121    if ($total_num != 0) {
122        $total_page_num =  ceil($total_num / $page_size);
123        if ($page >= $total_page_num) {
124            $next = false;
125        } else {
126            $next = true;
127        }
128        if ($page <= 1) {
129            $prev = false;
130        } else {
131            $prev = true;
132        }
133    }
134
135    return array($c_message_list , $prev , $next);
136}
137
138/**
139 * 下書き保存メッセージリストを取得
140 */
141function db_message_c_message_save_list4c_member_id4range($c_member_id, $page, $page_size)
142{
143    $sql = "SELECT * FROM c_message";
144    $where = "c_member_id_from = ?".
145            " AND is_send = 0" .
146            " AND is_deleted_from = 0";
147    $sql .= " WHERE $where";
148    $sql .= " ORDER BY r_datetime DESC";
149    $params = array(intval($c_member_id));
150    $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
151
152    foreach ($c_message_list as $key => $value) {
153        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
154        $c_message_list[$key]['nickname'] = $c_member['nickname'];
155        $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
156    }
157
158    $sql = "SELECT COUNT(*) FROM c_message WHERE $where";
159    $total_num = db_get_one($sql, $params);
160
161    if ($total_num != 0) {
162        $total_page_num =  ceil($total_num / $page_size);
163        if ($page >= $total_page_num) {
164            $next = false;
165        } else {
166            $next = true;
167        }
168        if ($page <= 1) {
169            $prev = false;
170        } else {
171            $prev = true;
172        }
173    }
174
175    return array($c_message_list, $prev, $next);
176}
177
178/**
179 * ごみ箱メッセージリストを取得
180 */
181function db_message_c_message_trash_list4c_member_id4range($c_member_id, $page, $page_size)
182{
183    $where_from = "c_member_id_from = ?" .
184            " AND is_deleted_from = 1" .
185            " AND is_kanzen_sakujo_from = 0";
186
187    $sql = 'SELECT * FROM c_message WHERE '. $where_from . ' ORDER BY r_datetime DESC';
188    $sql_num = 'SELECT COUNT(*) FROM c_message WHERE '. $where_from;
189    $params = array(intval($c_member_id));
190    $c_message_list_from = db_get_all_page($sql, 1, ($page_size * ($page + 1)), $params);
191    $c_message_num_from = db_get_one($sql_num, $params);
192
193    $where_to = "c_member_id_to = ?" .
194            " AND is_deleted_to = 1" .
195            " AND is_kanzen_sakujo_to = 0";
196
197    $sql = 'SELECT * FROM c_message WHERE '. $where_to . ' ORDER BY r_datetime DESC';
198    $sql_num = 'SELECT COUNT(*) FROM c_message WHERE '. $where_to;
199    $c_message_list_to = db_get_all_page($sql, 1, ($page_size * ($page + 1)), $params);
200    $c_message_num_to = db_get_one($sql_num, $params);
201
202    $c_message_list = array_merge($c_message_list_from, $c_message_list_to);
203
204    foreach ($c_message_list as $key => $row) {
205       $c_message_id[$key] = intval($row['c_message_id']);
206    }
207    array_multisort($c_message_id, SORT_DESC, $c_message_list);
208    $c_message_list = array_slice($c_message_list, ($page_size * ($page - 1) + 1), $page_size);
209
210    $total_num = $c_message_num_from + $c_message_num_to;
211
212    if ($total_num != 0) {
213        $total_page_num =  ceil($total_num / $page_size);
214        if ($page >= $total_page_num) {
215            $next = false;
216        } else {
217            $next = true;
218        }
219        if ($page <= 1) {
220            $prev = false;
221        } else {
222            $prev = true;
223        }
224    }
225
226    foreach ($c_message_list as $key => $value) {
227        if ($value['c_member_id_to'] == $c_member_id) {
228            $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
229        } else {
230            $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
231        }
232        $c_message_list[$key]['nickname'] = $c_member['nickname'];
233        $c_message_list[$key]['image_filename'] = $c_member['image_filename'];
234    }
235
236    return array($c_message_list, $prev, $next);
237}
238
239/**
240 * 未読メッセージ数を取得
241 *
242 * @param int $c_member_id
243 * @return int 未読メッセージ数
244 */
245function db_message_c_message_received_unread_all_count4c_member_id($c_member_id)
246{
247    $sql = 'SELECT COUNT(*) FROM c_message WHERE c_member_id_to = ?' .
248            ' AND is_read = 0 AND is_send = 1';
249    $params = array(intval($c_member_id));
250    return db_get_one($sql, $params);
251}
252
253function db_message_c_message_received_list4c_member_id4range2($c_member_id, $page_size, $page)
254{
255    $sql = "SELECT * FROM c_message";
256    $sql .= " WHERE c_member_id_to = ?".
257            " AND is_deleted_to = 0" .
258            " AND is_send = 1";
259    $sql .= " ORDER BY r_datetime DESC";
260    $params = array(intval($c_member_id));
261    $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
262
263    foreach ($c_message_list as $key => $value) {
264        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_from']);
265        $c_message_list[$key]['nickname'] = $c_member['nickname'];
266    }
267
268    $sql = "SELECT COUNT(*) FROM c_message" .
269            " WHERE c_member_id_to = ?".
270            " AND is_deleted_to = 0" .
271            " AND is_send = 1";
272    $total_num = db_get_one($sql, $params);
273
274    if ($total_num != 0) {
275        $total_page_num = ceil($total_num / $page_size);
276        if ($page >= $total_page_num) {
277            $next = false;
278        } else {
279            $next = true;
280        }
281        if ($page <= 1) {
282            $prev = false;
283        } else {
284            $prev = true;
285        }
286    }
287
288    return array($c_message_list, $prev, $next, $total_num);
289}
290
291function db_message_c_message_sent_list4c_member_id4range2($c_member_id, $page_size, $page)
292{
293    $sql = "SELECT * FROM c_message";
294    $sql .= " WHERE c_member_id_from = ?".
295            " AND is_deleted_from = 0" .
296            " AND is_send = 1";
297    $sql .= " ORDER BY r_datetime DESC";
298    $params = array(intval($c_member_id));
299    $c_message_list = db_get_all_page($sql, $page, $page_size, $params);
300
301    foreach ($c_message_list as $key => $value) {
302        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
303        $c_message_list[$key]['nickname'] = $c_member['nickname'];
304    }
305
306    $sql = "SELECT COUNT(*) FROM c_message" .
307            " WHERE c_member_id_from = ?".
308            " AND is_deleted_from = 0" .
309            " AND is_send = 1";
310    $total_num = db_get_one($sql, $params);
311
312    if ($total_num != 0) {
313        $total_page_num =  ceil($total_num / $page_size);
314        if ($page >= $total_page_num) {
315            $next = false;
316        } else {
317            $next = true;
318        }
319        if ($page <= 1) {
320            $prev = false;
321        } else {
322            $prev = true;
323        }
324    }
325
326    return array($c_message_list, $prev, $next, $total_num);
327}
328
329/**
330 * 返信側にある返信元メッセージIDを取得
331 */
332function db_message_hensinmoto_id($hensin_c_message_id)
333{
334    $sql = 'SELECT hensinmoto_c_message_id FROM c_message WHERE c_message_id = ?';
335    $params = array(intval($hensin_c_message_id));
336    return db_get_one($sql, $params);
337}
338
339/*** write ***/
340
341/**
342 * メッセージ作成
343 *
344 * @param   int $c_member_id_from
345 * @param   int $c_member_id_to
346 * @param   string  $subject
347 * @param   string  $body
348 * @return  int $insert_id
349 */
350function db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body)
351{
352    $data = array(
353        'c_member_id_from' => intval($c_member_id_from),
354        'c_member_id_to'   => intval($c_member_id_to),
355        'subject'          => $subject,
356        'body'             => $body,
357        'r_datetime'       => db_now(),
358        'is_send'          => 1,
359    );
360    return db_insert('c_message', $data);
361}
362
363/**
364 * 承認メッセージ作成
365 *
366 * @param   int $c_member_id_from
367 * @param   int $c_member_id_to
368 * @param   string  $subject
369 * @param   string  $body
370 * @return  int $insert_id
371 */
372function db_message_insert_c_message_syoudaku($c_member_id_from, $c_member_id_to, $subject, $body)
373{
374    $data = array(
375        'c_member_id_from' => intval($c_member_id_from),
376        'c_member_id_to'   => intval($c_member_id_to),
377        'subject'          => $subject,
378        'body'             => $body,
379        'r_datetime'       => db_now(),
380        'is_send'          => 1,
381        'is_syoudaku'      => 1,
382        'is_read'          => 1,
383    );
384    return db_insert('c_message', $data);
385}
386
387/**
388 * メッセージを下書き保存する
389 */
390function db_message_insert_message_to_is_save($c_member_id_to,$c_member_id_from,$subject,$body,$jyusin_message_id)
391{
392    $data = array(
393        'c_member_id_from' => intval($c_member_id_from),
394        'c_member_id_to'   => intval($c_member_id_to),
395        'subject'          => $subject,
396        'body'             => $body,
397        'r_datetime'       => db_now(),
398        'is_send'          => 0,
399        'hensinmoto_c_message_id' => intval($jyusin_message_id),
400    );
401    return db_insert('c_message', $data);
402}
403
404/**
405 * メッセージをゴミ箱へ移動
406 * 受信メッセージの場合は既読にする
407 *
408 * @param   int $c_message_id
409 * @param   int $c_member_id
410 * @return  bool  削除が成功したかどうか
411 */
412function db_message_delete_c_message4c_message_id($c_message_id, $c_member_id)
413{
414    $message = db_message_c_message4c_message_id($c_message_id);
415    $where = 'c_message_id = '.intval($c_message_id);
416
417    if ($message['c_member_id_to'] == $c_member_id) {
418        // 受信メッセージ
419        $data = array(
420            'is_deleted_to' => 1,
421            'is_read' => 1,
422        );
423        db_update('c_message', $data, $where);
424        return true;
425    } elseif ($message['c_member_id_from'] == $c_member_id) {
426        // 送信メッセージ
427        $data = array(
428            'is_deleted_from' => 1,
429        );
430        db_update('c_message', $data, $where);
431        return true;
432    }
433
434    return false;
435}
436
437/**
438 * メッセージをごみ箱から元に戻す
439 */
440function db_message_move_message($c_message_id, $c_member_id)
441{
442    // 受信メッセージだった場合
443    $data = array('is_deleted_from' => 0);
444    $where = array(
445        'c_message_id' => intval($c_message_id),
446        'c_member_id_from' => intval($c_member_id),
447    );
448    db_update('c_message', $data, $where);
449
450    // 送信メッセージだった場合
451    // 下書きメッセージだった場合
452    $data = array('is_deleted_to' => 0);
453    $where = array(
454        'c_message_id' => intval($c_message_id),
455        'c_member_id_to' => intval($c_member_id),
456    );
457    db_update('c_message', $data, $where);
458}
459
460/**
461 * メッセージをごみ箱から削除
462 */
463function db_message_delete_c_message_from_trash($c_message_id)
464{
465    $data = array('is_kanzen_sakujo_from' => 1);
466    $where = 'c_message_id = '.intval($c_message_id);
467    db_update('c_message', $data, $where);
468}
469
470function db_message_delete_c_message_to_trash($c_message_id)
471{
472    $data = array('is_kanzen_sakujo_to' => 1);
473    $where = 'c_message_id = '.intval($c_message_id);
474    db_update('c_message', $data, $where);
475}
476
477/**
478 * 返信側に受信メッセージIDを渡す
479 */
480function db_message_update_is_hensinmoto_c_message_id($jyusin_c_message_id, $hensin_c_message_id)
481{
482    $data = array('hensinmoto_c_message_id' => intval($jyusin_c_message_id));
483    $where = array('c_message_id' => intval($hensin_c_message_id));
484    return db_update('c_message', $data, $where);
485}
486
487/**
488 * 返信済みにする
489 */
490function db_message_update_is_hensin($c_message_id)
491{
492    $data = array('is_hensin' => 1);
493    $where = array('c_message_id' => intval($c_message_id));
494    db_update('c_message', $data, $where);
495}
496
497/**
498 * メッセージを既読にする
499 */
500function db_message_update_c_message_is_read4c_message_id($c_message_id, $c_member_id)
501{
502    $data = array('is_read' => 1);
503    $where = array(
504        'c_message_id' => intval($c_message_id),
505        'c_member_id_to' => intval($c_member_id),
506    );
507    return db_update('c_message', $data, $where);
508}
509
510/**
511 * メッセージの下書きを更新
512 */
513function db_message_update_message_to_is_save($c_message_id, $subject, $body, $is_send = 0)
514{
515    $data = array(
516        'subject'    => $subject,
517        'body'       => $body,
518        'r_datetime' => db_now(),
519        'is_send'    => (bool)$is_send,
520    );
521    $where = array('c_message_id' => intval($c_message_id));
522    db_update('c_message', $data, $where);
523}
524
525//---
526
527//◆メッセージ受信メール
528function db_message_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
529{
530    //メッセージ
531    $c_message_id = db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
532
533    do_common_send_message_mail_send($c_member_id_to, $c_member_id_from);
534    do_common_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
535
536    return $c_message_id;
537}
538
539//◆承認依頼メッセージ受信メール
540function db_message_send_message_syoudaku($c_member_id_from, $c_member_id_to, $subject, $body)
541{
542    //メッセージ
543    db_message_insert_c_message_syoudaku($c_member_id_from, $c_member_id_to, $subject, $body);
544
545    do_common_send_message_syoudaku_mail_send($c_member_id_to, $c_member_id_from);
546}
547
548// コミュニティ紹介
549function db_message_send_message_syoukai_commu($c_member_id_from, $c_member_id_to, $subject, $body)
550{
551    //メッセージ
552    db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
553
554    do_common_send_message_syoukai_commu_mail_send($c_member_id_to, $c_member_id_from);
555}
556
557// メンバー紹介
558function db_message_send_message_syoukai_member($c_member_id_from, $c_member_id_to, $subject, $body)
559{
560    //メッセージ
561    db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
562
563    do_common_send_message_syoukai_member_mail_send($c_member_id_to, $c_member_id_from);
564}
565
566//イベント紹介
567function db_message_send_message_event_invite($c_member_id_from, $c_member_id_to, $subject, $body)
568{
569    //メッセージ
570    db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
571
572    do_common_send_message_event_invite_mail_send($c_member_id_to, $c_member_id_from);
573}
574
575//イベントメッセージ
576function db_message_send_message_event_message($c_member_id_from, $c_member_id_to, $subject, $body)
577{
578    //メッセージ
579    db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
580
581    do_common_send_message_event_message_mail_send($c_member_id_to, $c_member_id_from);
582}
583
584function db_message_update_c_message($c_message_id, $subject, $body, $image_filename_1 = '', $image_filename_2 = '', $image_filename_3 = '')
585{
586    $data = array(
587        'subject' => $subject,
588        'body' => $body,
589    );
590    if ($image_filename_1) $data['image_filename_1'] = $image_filename_1;
591    if ($image_filename_2) $data['image_filename_2'] = $image_filename_2;
592    if ($image_filename_3) $data['image_filename_3'] = $image_filename_3;
593
594    $where = array(
595        'c_message_id' => intval($c_message_id),
596    );
597    return db_update('c_message', $data, $where);
598}
599
600?>
Note: See TracBrowser for help on using the repository browser.