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

source: OpenPNE/branches/tejima/prj_db_refine/webapp/lib/db/commu.php @ 485

Last change on this file since 485 was 485, checked in by kunitada, 16 years ago

commu

File size: 77.1 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//// c_commu
8
9/**
10 * コミュニティ情報をIDから取得
11 *
12 * @param  int $c_commu_id
13 * @return array コミュニティ情報
14 */
15function db_commu_c_commu4c_commu_id($c_commu_id)
16{
17    $sql = 'SELECT * FROM c_commu WHERE c_commu_id = ?';
18    $params = array(intval($c_commu_id));
19    if (!$c_commu = db_get_row($sql, $params)) return array();
20
21    $c_commu['c_commu_category'] =
22        db_commu_get_c_commu_category4id($c_commu['c_commu_category_id']);
23    $c_commu['c_member_admin'] =
24        db_common_c_member4c_member_id($c_commu['c_member_id_admin']);
25
26    return $c_commu;
27}
28
29/**
30 * コミュニティ情報を得る
31 */
32function db_commu_c_commu4c_commu_id2($c_commu_id)
33{
34    if ($c_commu = _db_c_commu4c_commu_id($c_commu_id)) {
35        $c_commu['member_count'] = _db_count_c_commu_member_list4c_commu_id($c_commu_id);
36    }
37    return $c_commu;
38}
39
40/**
41 * コミュニティ情報をIDから返す
42 */
43function db_commu_c_commu4c_commu_id_k($c_commu_id)
44{
45    if ($c_commu = _db_c_commu4c_commu_id($c_commu_id)) {
46        $c_commu['count_member'] = _db_count_c_commu_member_list4c_commu_id($c_commu_id);
47    }
48    return $c_commu;
49}
50
51function db_commu_is_commu4c_commu_name($c_commu_name)
52{
53    $sql = 'SELECT c_commu_id FROM c_commu WHERE name = ?';
54    $params = array($c_commu_name);
55    return (bool)db_get_one($sql, $params);
56}
57
58/**
59 * 登録時に強制参加させるコミュニティIDのリスト
60 */
61function db_commu_regist_join_list()
62{
63    $sql = 'SELECT c_commu_id FROM c_commu WHERE is_regist_join = 1';
64    return db_get_col($sql);
65}
66
67//// c_commu_member
68
69/**
70 * コミュニティの参加メンバー数を取得
71 *
72 * @param   int $c_commu_id
73 * @return  int 参加メンバー数
74 */
75function db_commu_count_c_commu_member_list4c_commu_id($c_commu_id)
76{
77    $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_commu_id = ?';
78    $params = array(intval($c_commu_id));
79    return db_get_one($sql, $params);
80}
81
82/**
83 * メンバーの参加コミュニティ数を取得
84 *
85 * @param int $c_member_id
86 * @return int 参加コミュニティ数
87 */
88function db_commu_count_c_commu4c_member_id($c_member_id)
89{
90    $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_member_id = ?';
91    $params = array(intval($c_member_id));
92    return db_get_one($sql, $params);
93}
94
95//// c_commu_topic
96
97//// c_commu_topic_comment
98
99/**
100 * max
101 */
102function db_commu_get_max_number4topic($c_commu_topic_id)
103{
104    $sql = 'SELECT MAX(number) FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
105    $params = array(intval($c_commu_topic_id));
106    return db_get_one($sql, $params);
107}
108
109/**
110 * 次の書き込み番号取得
111 *
112 * @param  int $c_commu_topic_id
113 * @return int 次の書き込み番号
114 */
115function _do_c_commu_topic_comment_number4c_commu_topic_id($c_commu_topic_id)
116{
117    return db_commu_get_max_number4topic($c_commu_topic_id) + 1;
118}
119
120//// 判定
121
122/**
123 * コミュニティのメンバーかどうか判定
124 *
125 * @param  int c_commu_id
126 * @param  int c_member_id
127 * @return bool
128 */
129function _db_is_c_commu_member($c_commu_id, $c_member_id)
130{
131    $sql = 'SELECT c_commu_member_id FROM c_commu_member' .
132            ' WHERE c_commu_id = ? AND c_member_id = ?';
133    $params = array(intval($c_commu_id), intval($c_member_id));
134    return (bool)db_get_one($sql, $params);
135}
136
137/**
138 * コミュニティの管理者かどうかを判定
139 *
140 * @param  int $c_commu_id
141 * @param  int $c_member_id
142 * @return bool
143 */
144function _db_is_c_commu_admin($c_commu_id, $c_member_id)
145{
146    $sql = 'SELECT c_commu_id FROM c_commu' .
147            ' WHERE c_commu_id = ? AND c_member_id_admin = ?';
148    $params = array(intval($c_commu_id), intval($c_member_id));
149    return (bool)db_get_one($sql, $params);
150}
151
152function _db_is_c_topic_admin($c_commu_topic_id, $c_member_id)
153{
154    $sql = 'SELECT c_commu_topic_id FROM c_commu_topic' .
155            ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
156    $params = array(intval($c_commu_topic_id), intval($c_member_id));
157    return (bool)db_get_one($sql, $params);
158}
159
160/**
161 * コミュニティ参加承認待ち状態かどうか
162 */
163function do_common_is_c_commu_join_wait($c_commu_id, $c_member_id)
164{
165    $sql = 'SELECT c_commu_member_confirm_id FROM c_commu_member_confirm' .
166            ' WHERE c_commu_id = ? AND c_member_id = ?';
167    $params = array(intval($c_commu_id), intval($c_member_id));
168    return (bool)db_get_one($sql, $params);
169}
170
171function p_common_is_c_commu_view4c_commu_idAc_member_id($c_commu_id,$c_member_id)
172{
173    $ret = false;
174    $c_commu = _db_c_commu4c_commu_id($c_commu_id);
175
176    $is_c_commu_member = _db_is_c_commu_member($c_commu_id, $c_member_id);
177
178    switch($c_commu['public_flag']) {
179    case "public":
180        $ret = true;
181        break;
182    case "auth_public":
183        $ret = true;
184        break;
185    case "auth_sns":
186        $ret = true;
187        break;
188    case "auth_commu_member":
189        if ($is_c_commu_member) {
190            $ret = true;
191        } else {
192            $ret = false;
193        }
194        break;
195    }
196    return $ret;
197}
198
199////
200
201/**
202 * コミュニティメール(ktai)受信設定を取得
203 */
204function db_commu_is_receive_mail_ktai($c_commu_id, $c_member_id)
205{
206    $sql = 'SELECT is_receive_mail FROM c_commu_member' .
207            ' WHERE c_commu_id = ? AND c_member_id = ?';
208    $params = array(intval($c_commu_id), intval($c_member_id));
209    return db_get_one($sql, $params);
210}
211
212/**
213 * コミュニティメール(PC)受信設定を取得
214 */
215function db_commu_is_receive_mail_pc($c_commu_id, $c_member_id)
216{
217    $sql = 'SELECT is_receive_mail_pc FROM c_commu_member' .
218            ' WHERE c_commu_id = ? AND c_member_id = ?';
219    $params = array(intval($c_commu_id), intval($c_member_id));
220    return db_get_one($sql, $params);
221}
222
223/**
224 * コミュニティメッセージ受信設定を取得
225 */
226function db_commu_is_receive_message($c_commu_id, $c_member_id)
227{
228    $sql = 'SELECT is_receive_message FROM c_commu_member' .
229            ' WHERE c_commu_id = ? AND c_member_id = ?';
230    $params = array(intval($c_commu_id), intval($c_member_id));
231    return db_get_one($sql, $params);
232}
233
234/**
235 * コミュニティメールの受信アドレスリスト(携帯)
236 */
237function db_common_receive_ktai_address_list4c_commu_id($c_commu_id)
238{
239    $sql = 'SELECT c_member_id FROM c_commu_member' .
240            ' WHERE c_commu_id = ? AND is_receive_mail = 1';
241    $params = array(intval($c_commu_id));
242    $list = db_get_col($sql, $params);
243
244    $ktai_list = array();
245    foreach ($list as $c_member_id) {
246        $sec = db_common_c_member_secure4c_member_id($c_member_id);
247        if ($sec['ktai_address']) {
248            $ktai_list[$c_member_id] = $sec['ktai_address'];
249        }
250    }
251    return $ktai_list;
252}
253
254/**
255 * コミュニティメールの受信アドレスリスト(PC)
256 */
257function db_common_receive_pc_address_list4c_commu_id($c_commu_id)
258{
259    $sql = "SELECT m.pc_address" .
260            " FROM c_member_secure AS m, c_commu_member AS cm" .
261            " WHERE cm.c_commu_id = ?".
262            " AND cm.is_receive_mail_pc = 1" .
263            " AND cm.c_member_id = m.c_member_id" .
264            " AND m.pc_address <> ''";
265    $params = array(intval($c_commu_id));
266    $c_member_list = db_get_col($sql, $params);
267
268    return array_map('t_decrypt', $c_member_list);
269}
270
271////
272
273/**
274 * 管理者交代の要請情報をIDから取得
275 *
276 * @param  int $c_commu_admin_confirm_id
277 * @return array
278 *              c_commu_admin_confirm,
279 *              c_member_id_admin       : 管理者のメンバーID
280 */
281function _db_c_commu_admin_confirm4c_commu_admin_confirm_id($c_commu_admin_confirm_id)
282{
283    $sql = "SELECT cac.*, c.c_member_id_admin FROM c_commu_admin_confirm AS cac, c_commu AS c";
284    $sql .= " WHERE cac.c_commu_admin_confirm_id = ?";
285    $sql .= " AND cac.c_commu_id=c.c_commu_id";
286    $params = array(intval($c_commu_admin_confirm_id));
287    return db_get_row($sql, $params);
288}
289
290// 参加コミュニティリスト
291function p_fh_com_list_c_commu_list4c_member_id($c_member_id, $page, $page_size)
292{
293    $sql = "SELECT c_commu.*" .
294            " FROM c_commu_member , c_commu";
295    $sql .= " WHERE c_commu_member.c_member_id=?";
296    $sql .= " AND c_commu.c_commu_id=c_commu_member.c_commu_id";
297    $sql .= " ORDER BY c_commu.c_commu_id DESC ";
298    $params = array(intval($c_member_id));
299    $c_commu_list = db_get_all_page($sql, $page, $page_size, $params);
300
301    foreach ($c_commu_list as $key => $value) {
302        $c_commu_list[$key]['count_members'] =
303            _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
304    }
305
306    $pager = array(
307        "total_num" => p_common_count_c_commu4c_member_id($c_member_id),
308        "disp_num"  => count($c_commu_list),
309        "start_num" => 0,
310        "end_num"   => 0,
311        "total_page" => 0,
312        "prev_page" => 0,
313        "next_page" => 0,
314    );
315
316    if ($pager['disp_num'] > 0) {
317        $pager['start_num'] = ($page - 1) * $page_size + 1;
318        $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
319    }
320
321    if ($pager['total_num']) {
322        $pager['total_page'] = ceil($pager['total_num'] / $page_size);
323
324        if ($page < $pager['total_page']) {
325            $pager['next_page'] = max($page + 1, 1);
326        }
327        if ($page > 1) {
328            $pager['prev_page'] = min($page - 1, $pager['total_page']);
329        }
330    }
331
332    return array($c_commu_list, $pager);
333}
334
335/**
336 * コミュニティトピックからコミュニティIDを取得
337 */
338function p_c_bbs_c_commu_id4c_commu_topic_id($c_commu_topic_id)
339{
340    $sql = "SELECT c_commu_id FROM c_commu_topic WHERE c_commu_topic_id = ?";
341    $params = array(intval($c_commu_topic_id));
342    return db_get_one($sql, $params);
343}
344
345// $c_commu_id の community に参加しているメンバを返す
346function p_c_edit_member_c_member_list4c_commu_id($c_commu_id, $page_size, $page)
347{
348    $c_commu = _db_c_commu4c_commu_id($c_commu_id);
349
350    $sql =  "SELECT c_member.c_member_id,".
351                "nickname,".
352                "image_filename ," .
353                "c_commu_member.r_datetime".
354            " FROM c_member,".
355                "c_commu_member".
356            " WHERE c_commu_id = ?".
357            " AND c_commu_member.c_member_id = c_member.c_member_id".
358            " ORDER BY c_commu_member.r_datetime DESC";
359    $params = array(intval($c_commu_id));
360    $list = db_get_all_page($sql, $page, $page_size, $params);
361
362    $new_list = array();
363    foreach ($list as $key => $value) {
364        $new_list[] = $value;
365    }
366    $list = $new_list;
367
368    $sql = 'SELECT * FROM c_commu_admin_confirm WHERE c_commu_id = ?';
369    $params = array(intval($c_commu_id));
370    $c_commu_admin_confirm = db_get_row($sql, $params);
371
372    if ($c_commu_admin_confirm) {
373        foreach ($list as $key => $c_member) {
374            if ($list[$key]['c_member_id'] == $c_commu_admin_confirm['c_member_id_to']) {
375                $list[$key]['c_commu_admin_confirm_id'] = $c_commu_admin_confirm['c_commu_admin_confirm_id'];
376            } else {
377                $list[$key]['c_commu_admin_confirm_id'] = 0;
378            }
379        }
380    } else {
381        foreach ($list as $key => $c_member) {
382            $list[$key]['c_commu_admin_confirm_id'] = -1;
383        }
384    }
385
386    foreach ($list as $key => $c_member) {
387        $list[$key]['is_c_commu_admin'] = _db_is_c_commu_admin($c_commu_id, $list[$key]['c_member_id']);
388    }
389
390    $total_num = _db_count_c_commu_member_list4c_commu_id($c_commu_id);
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
399        if ($page <= 1) {
400            $prev = false;
401        } else {
402            $prev = true;
403        }
404    }
405
406    return array($list, $prev, $next);
407}
408
409/**
410 * コミュニティメンバーのリストを得る
411 */
412function p_c_home_c_commu_member_list4c_commu_id($c_commu_id ,$limit = 9)
413{
414    $sql = 'SELECT c_member.* FROM c_member, c_commu_member' .
415            ' WHERE c_member.c_member_id = c_commu_member.c_member_id' .
416            ' AND c_commu_id = ? ORDER BY RAND()';
417    $params = array(intval($c_commu_id));
418    $lst = db_get_all_limit($sql, 0, $limit, $params);
419
420    foreach ($lst as $key => $value) {
421        $lst[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
422    }
423    return $lst;
424}
425
426function p_c_home_new_topic_comment4c_commu_id($c_commu_id, $limit, $event_flag = 0)
427{
428    $sql = "SELECT cct.c_commu_topic_id , cct.name, MAX(cctc.r_datetime) as r_datetime , cct.c_commu_id " .
429            " , cctc.image_filename1, cctc.image_filename2, cctc.image_filename3 " .
430            " FROM c_commu_topic_comment as cctc , c_commu_topic as cct" .
431            " WHERE cctc.c_commu_topic_id = cct.c_commu_topic_id " .
432            " AND cct.event_flag = ?".
433            " AND cct.c_commu_id = ?".
434            " group by cct.c_commu_topic_id " .
435            " order by r_datetime desc ";
436    $params = array((bool)$event_flag, intval($c_commu_id));
437    $list = db_get_all_limit($sql, 0, $limit, $params);
438
439    foreach ($list as $key => $value) {
440        $list[$key]['count_comments'] = db_commu_get_max_number4topic($value['c_commu_topic_id']);
441    }
442    return $list;
443}
444
445/**
446 * コミュニティに招待するMyフレンドのリストを得る
447 * コミュニティに参加していないMyフレンドを全員表示
448 *
449 * @param   int $c_member_id
450 * @param   int $c_commu_id
451 */
452function p_c_invite_invite_list4c_member_id4c_commu_id($c_member_id, $c_commu_id)
453{
454    //友達リスト
455    $friend_list = db_friend_c_member_id_list($c_member_id);
456
457    //参加者リスト
458    $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?';
459    $params = array(intval($c_commu_id));
460    $member_list = db_get_col($sql, $params);
461
462    //友達リストから参加者リストを引く
463    $result = array_diff($friend_list, $member_list);
464
465    if (empty($result)) {
466        return null;
467    } else {
468        $result = implode(",", $result);
469
470        $sql = 'SELECT c_member_id, nickname '
471            . ' FROM c_member'
472            . ' WHERE c_member_id'
473            . ' IN ( '. $result. ') ';
474
475        return db_get_all($sql);
476    }
477}
478
479function p_c_member_list_c_members4c_commu_id($c_commu_id, $page_size, $page)
480{
481    $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ? ORDER BY r_datetime DESC';
482    $params = array(intval($c_commu_id));
483    $id_list = db_get_all_page($sql, $page, $page_size, $params);
484
485    $list = array();
486    foreach ($id_list as $key => $value) {
487        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
488        $c_member['friend_count'] = db_friend_count_friends($value['c_member_id']);
489        $list[] = $c_member;
490    }
491
492    $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_commu_id = ?';
493    $total_num = db_get_one($sql, $params);
494
495    if ($total_num != 0) {
496        $total_page_num = ceil($total_num / $page_size);
497        if ($page >= $total_page_num) {
498            $next = false;
499        } else {
500            $next = true;
501        }
502
503        if ($page <= 1) {
504            $prev = false;
505        } else {
506            $prev = true;
507        }
508    }
509
510    $start_num = ($page - 1) * $page_size + 1 ;
511    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
512
513    return array($list , $prev , $next, $total_num, $start_num, $end_num);
514}
515
516function p_f_home_c_commu_list4c_member_id($c_member_id, $limit = 9)
517{
518    $sql = "SELECT c_commu.c_commu_id, c_commu.image_filename, c_commu.name" .
519        " FROM c_commu ,c_commu_member " .
520        " WHERE c_commu_member.c_member_id = ?".
521        " AND c_commu.c_commu_id =  c_commu_member.c_commu_id" .
522        " ORDER BY RAND()";
523    $params = array(intval($c_member_id));
524    $lst = db_get_all_limit($sql, 0, $limit, $params);
525
526    foreach ($lst as $key => $value) {
527        $lst[$key]['count_commu_member'] = _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
528    }
529    return $lst;
530}
531
532/**
533 * あなたに(の)管理コミュニティに参加を希望しているメンバー
534 *
535 * @param   int $c_member_id    : 要請されている方(あなた=管理者)
536 * @return  array_of_array
537 *              c_commu_member_confirm.*
538 *              c_commu_name    : コミュニティの名前
539 *              nickname        : 要請している人の名前
540 *              image_filename  : 要請している人の画像
541 * @see     h_confirm_list.php
542 */
543function p_h_confirm_list_anatani_c_commu_member_confirm_list4c_member_id($c_member_id)
544{
545    $sql = "SELECT cmc.*, c.name AS c_commu_name";
546    $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
547    $sql .= " WHERE c.c_member_id_admin = ? AND cmc.c_commu_id=c.c_commu_id";
548    $params = array(intval($c_member_id));
549    $c_commu_member_confirm_list = db_get_all($sql, $params);
550
551    foreach ($c_commu_member_confirm_list as $key => $value) {
552        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
553        $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
554        $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
555    }
556    return $c_commu_member_confirm_list;
557}
558/**
559 * あなたがコミュニティ参加要請しているコミュニティ
560 *
561 * @param   int $c_member_id    : 要請している方(あなた)
562 * @return  array_of_array
563 *              c_commu_member_confirm.*,
564 *              c_commu_name        : コミュニティの名前
565 *              c_member_id_admin   : 管理者のメンバーID
566 *              nickname            : 管理者の名前
567 *              image_filename      : 管理者の画像
568 * @see     h_confirm_list.php
569 */
570function p_h_confirm_list_anataga_c_commu_member_confirm_list4c_member_id($c_member_id)
571{
572    $sql = "SELECT cmc.*, c.name AS c_commu_name, c.c_member_id_admin";
573    $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
574    $sql .= " WHERE cmc.c_member_id = ? AND cmc.c_commu_id=c.c_commu_id";
575    $params = array(intval($c_member_id));
576    $c_commu_member_confirm_list = db_get_all($sql, $params);
577
578    foreach ($c_commu_member_confirm_list as $key => $value) {
579        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
580        $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
581        $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
582    }
583    return $c_commu_member_confirm_list;
584}
585
586/**
587 * あなたにコミュニティ管理者交代を希望しているメンバー
588 *
589 * @param   int $c_member_id_to : 要請されている方(あなた)
590 * @return  array_of_array
591 *              c_commu_admin_confirm.*
592 *              c_commu_name        : コミュニティ名
593 *              c_member_id_admin   : 要請している人(=現管理者)のID
594 *              nickname            : 要請している人の名前
595 *              image_filename      : 要請している人の画像
596 * @see     h_confirm_list.php
597 */
598function p_h_confirm_list_anatani_c_commu_admin_confirm_list4c_member_id($c_member_id_to)
599{
600    $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
601    $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
602    $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
603    $params = array(intval($c_member_id_to));
604    $c_commu_admin_confirm_list = db_get_all($sql, $params);
605
606    foreach ($c_commu_admin_confirm_list as $key => $value) {
607        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
608        $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
609        $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
610    }
611    return $c_commu_admin_confirm_list;
612}
613
614/**
615 * あなたがコミュニティ管理者交代を要請しているメンバー
616 *
617 * @param   int $c_member_id_admin  : 要請している方(あなた)
618 * @return  array_of_array
619 *              c_commu_admin_confirm.*
620 *              nickname            : 要請されている人の名前
621 *              image_filename      : 要請されている人の画像
622 * @see     h_confirm_list.php
623 */
624function p_h_confirm_list_anataga_c_commu_admin_confirm_list4c_member_id($c_member_id_admin)
625{
626    $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
627    $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
628    $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
629    $params = array(intval($c_member_id_admin));
630    $c_commu_admin_confirm_list = db_get_all($sql, $params);
631
632    foreach ($c_commu_admin_confirm_list as $key => $value) {
633        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_to']);
634        $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
635        $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
636    }
637    return $c_commu_admin_confirm_list;
638}
639
640/**
641 * 参加コミュニティ新着書き込みリスト取得
642 */
643function p_h_home_c_commu_topic_comment_list4c_member_id($c_member_id, $limit)
644{
645    $sql = "SELECT cc.c_commu_topic_id, c.name AS c_commu_name, ct.name AS c_commu_topic_name , cm.c_member_id, cc.number, max(cc.r_datetime) as r_datetime";
646    $sql .= " FROM c_commu_member AS cm, c_commu_topic_comment AS cc";
647    $sql .= ", c_commu AS c, c_commu_topic AS ct";
648    $sql .= " WHERE cm.c_member_id = ?";
649    $sql .= " AND cc.c_commu_id=cm.c_commu_id";
650    $sql .= " AND c.c_commu_id=cm.c_commu_id";
651    $sql .= " AND ct.c_commu_id=cm.c_commu_id";
652    $sql .= " AND ct.c_commu_topic_id=cc.c_commu_topic_id";
653    $sql .= " GROUP BY c_commu_topic_id, c_commu_name, c_commu_topic_name ,c_member_id ";
654    $sql .= " ORDER BY r_datetime DESC";
655    $params = array(intval($c_member_id));
656    $c_commu_topic_list = db_get_all_limit($sql, 0, $limit, $params);
657
658    foreach ($c_commu_topic_list as $key => $value) {
659        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
660        $c_commu_topic_list[$key]['nickname'] = $c_member['nickname'];
661
662        $sql = 'SELECT number, image_filename1, image_filename2, image_filename3' .
663               ' FROM c_commu_topic_comment' .
664               ' WHERE c_commu_topic_id = ? AND r_datetime = ?';
665        $params = array(intval($value['c_commu_topic_id']), $value['r_datetime']);
666        $temp = db_get_row($sql, $params);
667
668        //最新の書き込み番号
669        $number = db_commu_get_max_number4topic($value['c_commu_topic_id']);
670
671        $c_commu_topic_list[$key]['number'] = $number;
672        $c_commu_topic_list[$key]['image_filename1'] = $temp['image_filename1'];
673        $c_commu_topic_list[$key]['image_filename2'] = $temp['image_filename2'];
674        $c_commu_topic_list[$key]['image_filename3'] = $temp['image_filename3'];
675    }
676
677    return $c_commu_topic_list;
678}
679
680function p_h_com_comment_list_c_commu_topic_comment_list4c_member_id($c_member_id, $limit,$page)
681{
682    $sql = "SELECT cc.c_commu_topic_id, c.name AS c_commu_name, ct.name AS c_commu_topic_name , cm.c_member_id, cc.number, max(cc.r_datetime) as r_datetime";
683    $sql .= " FROM c_commu_member AS cm, c_commu_topic_comment AS cc";
684    $sql .= ", c_commu AS c, c_commu_topic AS ct";
685    $sql .= " WHERE cm.c_member_id = ?";
686    $sql .= " AND cc.c_commu_id=cm.c_commu_id";
687    $sql .= " AND c.c_commu_id=cm.c_commu_id";
688    $sql .= " AND ct.c_commu_id=cm.c_commu_id";
689    $sql .= " AND ct.c_commu_topic_id=cc.c_commu_topic_id";
690    $sql .= " group by c_commu_topic_id, c_commu_name, c_commu_topic_name ,c_member_id ";
691    $sql .= " ORDER BY r_datetime DESC";
692    $params = array(intval($c_member_id));
693    $c_commu_topic_list = db_get_all_limit($sql, ($page-1)*$limit, $limit, $params);
694
695    foreach ($c_commu_topic_list as $key => $value) {
696        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
697        $c_commu_topic_list[$key]['nickname'] = $c_member['nickname'];
698
699        $sql = 'SELECT number, image_filename1, image_filename2, image_filename3' .
700               ' FROM c_commu_topic_comment ' .
701               ' WHERE c_commu_topic_id = ? AND r_datetime = ?';
702        $params = array(intval($value['c_commu_topic_id']), $value['r_datetime']);
703        $temp = db_get_row($sql, $params);
704
705        //最新の書き込み番号
706        $number = db_commu_get_max_number4topic($value['c_commu_topic_id']);
707
708        $c_commu_topic_list[$key]['number'] = $number;
709        $c_commu_topic_list[$key]['image_filename1'] = $temp['image_filename1'];
710        $c_commu_topic_list[$key]['image_filename2'] = $temp['image_filename2'];
711        $c_commu_topic_list[$key]['image_filename3'] = $temp['image_filename3'];
712    }
713
714    $sql = "SELECT count(DISTINCT ct.c_commu_topic_id)";
715    $sql .= " FROM c_commu_member AS cm, c_commu_topic_comment AS cc";
716    $sql .= ", c_commu AS c, c_commu_topic AS ct";
717    $sql .= " WHERE cm.c_member_id = ?";
718    $sql .= " AND cc.c_commu_id=cm.c_commu_id";
719    $sql .= " AND c.c_commu_id=cm.c_commu_id";
720    $sql .= " AND ct.c_commu_id=cm.c_commu_id";
721    $sql .= " AND ct.c_commu_topic_id=cc.c_commu_topic_id";
722    $params = array(intval($c_member_id));
723    $total_num = db_get_one($sql, $params);
724    if ($total_num != 0) {
725        $total_page_num =  ceil($total_num / $limit);
726        if ($page >= $total_page_num) {
727            $next = false;
728        } else {
729            $next = true;
730        }
731        if ($page <= 1) {
732            $prev = false;
733        } else {
734            $prev = true;
735        }
736    }
737    return array($c_commu_topic_list , $prev , $next,$total_num);
738}
739
740/**
741 * 参加コミュニティのリスト
742 *
743 * @param int $c_member_id
744 * @param int $limit
745 * @return  array コミュニティ情報
746 */
747function p_h_home_c_commu_list4c_member_id($c_member_id, $limit)
748{
749    $sql = "SELECT c.* FROM c_commu_member AS cm, c_commu AS c";
750    $sql .= " WHERE cm.c_member_id=?";
751    $sql .= " AND c.c_commu_id=cm.c_commu_id";
752    $sql .= " ORDER BY RAND()";
753    $params = array(intval($c_member_id));
754    $c_commu_list = db_get_all_limit($sql, 0, $limit, $params);
755
756    foreach ($c_commu_list as $key => $value) {
757        $c_commu_list[$key]['count_commu_members'] =
758            _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
759    }
760    return $c_commu_list;
761}
762
763function p_c_topic_list_c_topic_list4target_c_commu_id($c_commu_id, $c_member_id, $page = 1, $page_size = 10, $event_flag = 0, $topic_with_event = 0)
764{
765    $sql = " SELECT cct.c_commu_topic_id, max(cctc.r_datetime) as newest_write_datetime " .
766            " FROM c_commu_topic as cct, c_commu_topic_comment as cctc " .
767            " WHERE cct.c_commu_topic_id = cctc.c_commu_topic_id ";
768
769    if ($topic_with_event) {
770        $sql .= " AND cct.event_flag = $event_flag";
771    }
772
773    $sql .= " AND cct.c_commu_id = ?" .
774            " GROUP BY c_commu_topic_id " .
775            " ORDER BY newest_write_datetime DESC";
776    $params = array(intval($c_commu_id));
777    $lst = db_get_all_page($sql, $page, $page_size, $params);
778
779    foreach ($lst as $key => $value) {
780        $sql = "SELECT cct.c_commu_topic_id, cct.name, cct.r_datetime, cctc.body , cctc.image_filename1, cctc.image_filename2, image_filename3" .
781               " FROM c_commu_topic as cct, c_commu_topic_comment as cctc" .
782               " WHERE cct.c_commu_topic_id = cctc.c_commu_topic_id" .
783               " AND cctc.number = 0" .
784               " AND cct.c_commu_topic_id = ?";
785        $params = array(intval($value['c_commu_topic_id']));
786        $lst[$key] = db_get_row($sql, $params);
787    }
788
789    foreach ($lst as $key => $value) {
790        $lst[$key]['is_c_event_member'] = _db_is_c_event_member($value['c_commu_topic_id'], $c_member_id);
791        $lst[$key]['is_c_topic_admin'] = _db_is_c_topic_admin($value['c_commu_topic_id'], $c_member_id);
792        $lst[$key]['write_num'] = db_commu_get_max_number4topic($value['c_commu_topic_id']);
793    }
794
795    $sql = 'SELECT COUNT(*) FROM c_commu_topic WHERE c_commu_id = ?';
796    if ($topic_with_event) {
797        $sql .= " AND event_flag = $event_flag";
798    }
799    $params = array(intval($c_commu_id));
800    $total_num = db_get_one($sql, $params);
801
802    if ($total_num != 0) {
803        $total_page_num = ceil($total_num / $page_size);
804        if ($page >= $total_page_num) {
805            $next = false;
806        } else {
807            $next = true;
808        }
809        if ($page <= 1) {
810            $prev = false;
811        } else {
812            $prev = true;
813        }
814    }
815    $start_num = ($page - 1) * $page_size + 1 ;
816    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
817
818    return array($lst, $prev, $next, $total_num, $start_num, $end_num);
819}
820
821function c_topic_detail_c_topic4c_commu_topic_id($c_commu_topic_id)
822{
823    $sql = "SELECT ct.*, ctc.*, c_member.nickname" .
824        " FROM c_commu_topic AS ct" .
825            " LEFT JOIN c_member USING (c_member_id)" .
826            ", c_commu_topic_comment AS ctc" .
827        " WHERE ct.c_commu_topic_id = ctc.c_commu_topic_id " .
828            " AND ct.c_commu_topic_id = ?".
829            " AND ctc.number = 0";
830    $params = array(intval($c_commu_topic_id));
831    return db_get_row($sql, $params);
832}
833
834function p_c_edit_is_topic4c_commu_id($c_commu_id)
835{
836    $sql = 'SELECT c_commu_topic_id FROM c_commu_topic WHERE c_commu_id = ?';
837    $params = array(intval($c_commu_id));
838    return db_get_one($sql, $params);
839}
840
841/**
842 * IDからコミュニティトピックコメントの情報を取得
843 *
844 * @param int $c_commu_topic_comment_id
845 * @return array
846 */
847function _db_common_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id)
848{
849    $sql = "SELECT ctc.*, ct.name AS topic_name, c.name AS commu_name" .
850        " FROM c_commu_topic_comment AS ctc, c_commu_topic AS ct, c_commu AS c" .
851        " WHERE ctc.c_commu_topic_comment_id=?" .
852        " AND ct.c_commu_topic_id=ctc.c_commu_topic_id" .
853        " AND c.c_commu_id=ctc.c_commu_id";
854    $params = array(intval($c_commu_topic_comment_id));
855    return db_get_row($sql, $params);
856}
857
858function db_common_commu_status($u, $target_c_commu_id)
859{
860    $ret = array(
861        'c_commu' => _db_c_commu4c_commu_id($target_c_commu_id),
862        'is_bbs_view'     => false,
863        'is_commu_member' => false,
864        'is_commu_admin'  => false,
865        'is_receive_mail'    => false,
866        'is_commu_member_confirm' => false,
867    );
868
869    if (_db_is_c_commu_member($target_c_commu_id, $u)) {
870        $ret['is_commu_member'] = true;
871
872        $c_commu_member = _db_c_commu_member4c_member_id($u, $target_c_commu_id);
873        if ($c_commu_member['is_receive_mail']) {
874            $ret['is_receive_mail'] = true;
875        }
876
877        if ($ret['c_commu']['c_member_id_admin'] == $u) {
878            $ret['is_commu_admin']  = true;
879        }
880    } else {
881        if (_db_is_c_commu_member_confirm($u, $target_c_commu_id)) {
882            $ret['is_commu_member_confirm'] = true;
883        }
884    }
885
886    switch ($ret['c_commu']['public_flag']) {
887    case "public":
888    case "auth_public":
889    case "auth_sns":
890        $ret['is_bbs_view'] = true;
891        break;
892    case "auth_commu_member":
893        $ret['is_bbs_view'] = $ret['is_commu_member'];
894        break;
895    }
896
897    return $ret;
898}
899
900function _db_is_c_commu_member_confirm($c_member_id, $c_commu_id)
901{
902    $sql = "SELECT COUNT(*) FROM c_commu_member_confirm" .
903        " WHERE c_member_id = ? AND c_commu_id = ?";
904    $params = array(intval($c_member_id), intval($c_commu_id));
905    return db_get_one($sql, $params);
906}
907
908function _db_c_commu_member4c_member_id($c_member_id, $c_commu_id)
909{
910    $sql = "SELECT * FROM c_commu_member" .
911            " WHERE c_member_id=? AND c_commu_id=?";
912    $params = array(intval($c_member_id), intval($c_commu_id));
913    return db_get_row($sql, $params);
914}
915
916/**
917 * コミュニティトピック情報取得
918 *
919 * @param   int $c_commu_topic_id
920 * @return  array トピック情報
921 */
922function _do_c_bbs_c_commu_topic4c_commu_topic_id($c_commu_topic_id)
923{
924    $sql = 'SELECT * FROM c_commu_topic WHERE c_commu_topic_id = ?';
925    $params = array(intval($c_commu_topic_id));
926    return db_get_row($sql, $params);
927}
928
929/**
930 * コミュニティ参加要請情報をIDから取得
931 *
932 * @param   int $c_commu_member_confirm_id
933 * @return  array
934 *              c_commu_member_confirm.*,
935 *              c_member_id_admin
936 */
937function _do_c_commu_member_confirm4c_commu_member_confirm_id($c_commu_member_confirm_id)
938{
939    $sql = "SELECT cmc.*, c.c_member_id_admin";
940    $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
941    $sql .= " WHERE cmc.c_commu_member_confirm_id=?";
942    $sql .= " AND cmc.c_commu_id=c.c_commu_id";
943    $params = array(intval($c_commu_member_confirm_id));
944    return db_get_row($sql, $params);
945}
946
947//TODO:constant
948define('STATUS_C_JOIN_REQUEST_FREE', "1"); //コミュニティ参加(承認必要なし)
949define('STATUS_C_JOIN_REQUEST_NEED', "2"); //コミュニティ参加(承認必要)
950define('STATUS_C_JOIN_WAIT', "3"); //コミュニティ参加(承認待ち)
951define('STATUS_C_JOIN_ALREADY', "4"); //コミュニティ参加(既に参加)
952
953function do_common_get_c_join_status($c_member_id,$c_commu_id)
954{
955    $is_c_commu_member = _db_is_c_commu_member($c_commu_id, $c_member_id);
956    $is_wait = do_common_is_c_commu_join_wait($c_commu_id, $c_member_id);
957    $c_commu = _db_c_commu4c_commu_id($c_commu_id);
958    $is_join_request_free = false;
959    if ($c_commu['public_flag'] == "public") {
960        $is_join_request_free = true;
961    }
962
963    $ret = STATUS_C_JOIN_ALREADY;
964    if (!$is_c_commu_member) { //メンバーで無い
965        if ($is_wait == true) {
966            $ret = STATUS_C_JOIN_WAIT;
967        } else {
968            if ($is_join_request_free) {
969                $ret = STATUS_C_JOIN_REQUEST_FREE;
970            } else {
971                $ret = STATUS_C_JOIN_REQUEST_NEED;
972            }
973        }
974    }
975    return $ret;
976}
977
978/**
979 * トピックコメントIDからトピックを得る
980 */
981function do_c_bbs_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id)
982{
983    $sql = 'SELECT * FROM c_commu_topic_comment WHERE c_commu_topic_comment_id = ?';
984    $params = array(intval($c_commu_topic_comment_id));
985    return db_get_row($sql, $params);
986}
987
988/**
989 * トピック情報取得
990 *
991 * @param   int $c_commu_topic_id
992 * @return  array $c_commu_topic
993 */
994function do_common_c_commu_topic4c_commu_topic_id($c_commu_topic_id, $c_member_id)
995{
996    $sql = "SELECT * FROM c_commu_topic WHERE c_commu_topic_id = ?";
997    $params = array(intval($c_commu_topic_id));
998    $one = db_get_row($sql, $params);
999
1000    if ($one['c_member_id'] == $c_member_id) {
1001        $one['is_c_commu_topic_admin'] = true;
1002    }
1003    return $one;
1004}
1005
1006function k_p_h_home_c_commu_list_lastupdate4c_member_id($c_member_id, $limit)
1007{
1008    $sql = 'SELECT DISTINCT c.* FROM c_commu_member AS cm, c_commu AS c' .
1009            ' WHERE cm.c_member_id = ? AND c.c_commu_id = cm.c_commu_id' .
1010            ' ORDER BY RAND()';
1011    $params = array(intval($c_member_id));
1012    $c_commu_list = db_get_all_limit($sql, 0, $limit, $params);
1013
1014    foreach ($c_commu_list as $key => $value) {
1015        $c_commu_list[$key]['count_members'] =
1016            _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
1017    }
1018
1019    return $c_commu_list;
1020}
1021
1022/**
1023 * 参加不参加にかかわらず、最新書き込みのあったコミュニティリストを取得
1024 */
1025function k_p_h_com_find_all_c_commu_list_lastupdated($limit = 5)
1026{
1027    $sql = "SELECT c_commu_id, MAX(r_datetime) as updatetime" .
1028        " FROM c_commu_topic_comment" .
1029        " GROUP BY c_commu_id" .
1030        " ORDER BY updatetime DESC";
1031    $comments = db_get_all_limit($sql, 0, $limit);
1032
1033    $c_commu_list = array();
1034    foreach ($comments as $comment) {
1035        $c_commu = _db_c_commu4c_commu_id($comment['c_commu_id']);
1036        $c_commu['updatetime'] = $comment['updatetime'];
1037        $c_commu_list[] = $c_commu;
1038    }
1039    return $c_commu_list;
1040}
1041
1042/**
1043 * トピック名を取得
1044 */
1045function k_p_c_bbs_c_commu_topic_name4c_commu_topic_id($c_commu_topic_id)
1046{
1047    $sql = "SELECT name FROM c_commu_topic WHERE c_commu_topic_id = ?";
1048    $params = array(intval($c_commu_topic_id));
1049    return db_get_one($sql, $params);
1050}
1051
1052/**
1053 * トピックのコメントリストを取得
1054 * 引数のメンバIDが書き込んだコメントに対しては、
1055 * is_c_commu_topic_comment_admin=1が返る。
1056 */
1057function k_p_c_bbs_c_commu_topic_comment_list4c_c_commu_topic_id($c_commu_topic_id, $c_member_id, $page_size, $page)
1058{
1059    $sql = "SELECT c_commu_topic_comment.*, c_member.nickname" .
1060        " FROM c_commu_topic_comment" .
1061            " LEFT JOIN c_member USING (c_member_id)" .
1062        " WHERE c_commu_topic_id = ?" .
1063        " ORDER BY number DESC";
1064    $params = array(intval($c_commu_topic_id));
1065    $list = db_get_all_page($sql, $page, $page_size, $params);
1066
1067    foreach ($list as $key => $value) {
1068        if ($list[$key]['c_member_id'] == $c_member_id) {
1069            $list[$key]['is_c_commu_topic_comment_admin'] = true;
1070        }
1071    }
1072
1073    $sql = "SELECT COUNT(*) FROM c_commu_topic_comment WHERE c_commu_topic_id = ?";
1074    $params = array(intval($c_commu_topic_id));
1075    $total_num = db_get_one($sql, $params) - 1;
1076
1077    if ($total_num > 0) {
1078        $total_page_num =  ceil($total_num / $page_size);
1079        if ($page >= $total_page_num) {
1080            $next = false;
1081        } else {
1082            $next = true;
1083        }
1084        if ($page <= 1) {
1085            $prev = false;
1086        } else {
1087            $prev = true;
1088        }
1089    }
1090    return array($list , $prev , $next);
1091}
1092
1093/**
1094 * トピックIDからコミュニティIDと名前を取得
1095 */
1096function k_p_c_bbs_c_commu4c_commu_topic_id($c_commu_topic_id)
1097{
1098    $sql = "SELECT cc.c_commu_id , cc.name FROM c_commu_topic AS cct, c_commu AS cc ";
1099    $sql .= " WHERE cct.c_commu_topic_id = ?";
1100    $sql .= " AND cc.c_commu_id = cct.c_commu_id ";
1101    $params = array(intval($c_commu_topic_id));
1102    return db_get_row($sql, $params);
1103}
1104
1105/**
1106 * 指定したメンバがコミュニティ管理者かどうかを判定
1107 */
1108function k_p_c_bbs_is_admin4c_member_id_c_commu_topic_id($c_member_id, $c_commu_topic_id)
1109{
1110    $c_commu = k_p_c_bbs_c_commu4c_commu_topic_id($c_commu_topic_id);
1111    $c_commu_id = $c_commu['c_commu_id'];
1112
1113    $sql = "SELECT c_member_id_admin";
1114    $sql .= " FROM c_commu";
1115    $sql .= " WHERE c_commu_id = ?";
1116    $params = array(intval($c_commu_id));
1117    $c_commu_id_admin = db_get_one($sql, $params);
1118
1119    if ($c_member_id == $c_commu_id_admin) {
1120        return true;
1121    }
1122    return false;
1123}
1124
1125/**
1126 * コミュニティの管理者(ID, nickname)を取得
1127 */
1128function k_p_c_bbs_c_member_admin4c_commu_topic_id($c_commu_topic_id)
1129{
1130    $c_commu = k_p_c_bbs_c_commu4c_commu_topic_id($c_commu_topic_id);
1131    $c_commu_id = $c_commu['c_commu_id'];
1132
1133    $sql = "SELECT c_member_id_admin , nickname";
1134    $sql .= " FROM c_commu, c_member";
1135    $sql .= " WHERE c_commu_id=?".
1136            " AND c_member_id=c_member_id_admin";
1137    $params = array(intval($c_commu_id));
1138    return db_get_row($sql, $params);
1139}
1140
1141/**
1142 * 参加コミュニティリストを取得
1143 * 範囲を指定できる
1144 * IDが新しいもの順
1145 */
1146function k_p_fh_com_list_c_commu_list4c_member_id($c_member_id, $page_size, $page)
1147{
1148    $sql = "SELECT name, c_commu.c_commu_id FROM c_commu_member , c_commu";
1149    $sql .= " WHERE c_commu_member.c_member_id = ?";
1150    $sql .= " AND c_commu.c_commu_id=c_commu_member.c_commu_id";
1151    $sql .= " ORDER BY c_commu.c_commu_id DESC ";
1152
1153    $params = array(intval($c_member_id));
1154    $c_commu_list = db_get_all_page($sql, $page, $page_size, $params);
1155
1156    foreach ($c_commu_list as $key => $value) {
1157        $c_commu_list[$key]['count_members'] =
1158            _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
1159    }
1160
1161    $total_num = p_common_count_c_commu4c_member_id($c_member_id);
1162    if ($total_num != 0) {
1163        $total_page_num =  ceil($total_num / $page_size);
1164        if ($page >= $total_page_num) {
1165            $next = false;
1166        } else {
1167            $next = true;
1168        }
1169
1170        if ($page <= 1) {
1171            $prev = false;
1172        } else {
1173            $prev = true;
1174        }
1175    }
1176    return array($c_commu_list , $prev , $next, $total_num);
1177}
1178
1179/**
1180 * メンバIDのメンバと、コミュニティIDのコミュニティの関係を返す
1181 */
1182function k_p_c_home_relationship_between_member_commu($c_commu_id, $c_member_id)
1183{
1184    $relation = array(
1185        'join' => false,
1186        'wait' => false
1187    );
1188
1189    //参加承認待ちかどうかをチェック
1190    $sql = "SELECT COUNT(*) ";
1191    $sql .= "FROM c_commu_member_confirm ";
1192    $sql .= "WHERE c_commu_id = ? AND c_member_id = ?";
1193    $params = array(intval($c_commu_id), intval($c_member_id));
1194    if (db_get_one($sql, $params)) {
1195        //承認待ちなら
1196        $relation['wait'] = true;
1197        return $relation;
1198    }
1199
1200    //参加してるかどうかチェック
1201    $sql = "SELECT COUNT(*) ";
1202    $sql .= "FROM c_commu_member ";
1203    $sql .= "WHERE c_commu_id = ? AND c_member_id = ?";
1204    $params = array(intval($c_commu_id), intval($c_member_id));
1205    if (db_get_one($sql, $params)) {
1206        //参加なら
1207        $relation['join'] = true;
1208    }
1209    return $relation;
1210}
1211
1212/**
1213 * コミュニティのメンバリストをランダムに取得
1214 */
1215function k_p_c_home_c_commu_member_list_random4c_commu_id($c_commu_id, $limit)
1216{
1217    $sql = "SELECT cm.c_member_id, cm.nickname ";
1218    $sql .= "FROM c_member AS cm , c_commu_member AS ccm ";
1219    $sql .= "WHERE ccm.c_commu_id = ?" .
1220            " AND ccm.c_member_id = cm.c_member_id";
1221    $sql .= " ORDER BY RAND()";
1222    $params = array(intval($c_commu_id));
1223    $c_commu_member_list = db_get_all_limit($sql, 0, $limit, $params);
1224
1225    foreach ($c_commu_member_list as $key => $value) {
1226        $c_commu_member_list[$key]['count_friend'] =
1227            db_friend_count_friends($value['c_member_id']);
1228    }
1229
1230    return $c_commu_member_list;
1231}
1232
1233/**
1234 * コミュニティメンバのリストをID新しいもの順に取得する。
1235 * 取得する範囲を指定できる。
1236 */
1237function k_p_c_member_list_c_members_disp4c_commu_id($c_commu_id, $page_size, $page)
1238{
1239    $sql = 'SELECT c_member.c_member_id, nickname '
1240        . ' FROM c_member, c_commu_member'
1241        . ' WHERE c_member.c_member_id = c_commu_member.c_member_id' .
1242                ' AND c_commu_member.c_commu_id = ?'.
1243        ' ORDER BY c_member.c_member_id DESC';
1244    $params = array(intval($c_commu_id));
1245    $list = db_get_all_page($sql, $page, $page_size, $params);
1246
1247    foreach ($list as $key => $value) {
1248        $list[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
1249    }
1250
1251    $total_num = _db_count_c_commu_member_list4c_commu_id($c_commu_id);
1252    if ($total_num != 0) {
1253        $total_page_num = ceil($total_num / $page_size);
1254        if ($page >= $total_page_num) {
1255            $next = false;
1256        } else {
1257            $next = true;
1258        }
1259
1260        if ($page <= 1) {
1261            $prev = false;
1262        } else {
1263            $prev = true;
1264        }
1265    }
1266    return array($list , $prev , $next);
1267}
1268
1269/**
1270 * Myフレンドから指定コミュに参加していない人をランダムに選ぶ
1271 */
1272function k_p_c_invite_c_friend_list_random4c_member_id4c_commu_id($c_member_id, $c_commu_id, $limit)
1273{
1274    //友達リスト
1275    $friend_list = db_friend_c_member_id_list($c_member_id);
1276
1277    //参加者リスト
1278    $sql = "SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?";
1279    $params = array(intval($c_commu_id));
1280    $member_list = db_get_col($sql, $params);
1281
1282    //友達リストから参加者リストを引く
1283    $result = array_diff($friend_list, $member_list);
1284
1285    if (!$result) {
1286        return null;
1287    }
1288
1289    $result = implode(',', array_map('intval', $result));
1290    $sql = 'SELECT c_member_id, nickname FROM c_member' .
1291            ' WHERE c_member_id IN ( '. $result . ') ' .
1292            ' ORDER BY RAND()';
1293    return db_get_all_limit($sql, 0, $limit);
1294}
1295
1296/**
1297 * 参加コミュニティ新着書き込みリスト取得
1298 */
1299function k_p_h_home_c_commu_topic_comment_list4c_member_id($c_member_id, $page_size, $page)
1300{
1301    $sql = "SELECT cc.c_commu_topic_id, c.name AS c_commu_name, ct.name AS c_commu_topic_name , cm.c_member_id, cc.number, max(cc.r_datetime) as r_datetime";
1302    $sql .= " FROM c_commu_member AS cm, c_commu_topic_comment AS cc";
1303    $sql .= ", c_commu AS c, c_commu_topic AS ct";
1304    $sql .= " WHERE cm.c_member_id = ?";
1305    $sql .= " AND cc.c_commu_id = cm.c_commu_id";
1306    $sql .= " AND c.c_commu_id = cm.c_commu_id";
1307    $sql .= " AND ct.c_commu_id = cm.c_commu_id";
1308    $sql .= " AND ct.c_commu_topic_id = cc.c_commu_topic_id";
1309    $sql .= " group by c_commu_topic_id, c_commu_name, c_commu_topic_name ,c_member_id ";
1310    $sql .= " ORDER BY r_datetime DESC";
1311
1312    $params = array(intval($c_member_id));
1313    $c_commu_topic_list = db_get_all_page($sql, $page, $page_size, $params);
1314
1315    foreach ($c_commu_topic_list as $key => $value) {
1316        $c_commu_topic_list[$key]['number'] = db_commu_get_max_number4topic($value['c_commu_topic_id']);
1317    }
1318
1319    $sql = "SELECT count(*) ";
1320    $sql .= " FROM c_commu_member AS cm";
1321    $sql .= ", c_commu AS c, c_commu_topic AS ct";
1322    $sql .= " WHERE cm.c_member_id = ?";
1323    $sql .= " AND c.c_commu_id = cm.c_commu_id";
1324    $sql .= " AND ct.c_commu_id = cm.c_commu_id";
1325    $params = array(intval($c_member_id));
1326    $total_num = db_get_one($sql, $params);
1327
1328    if ($total_num != 0) {
1329        $total_page_num =  ceil($total_num / $page_size);
1330        if ($page >= $total_page_num) {
1331            $next = false;
1332        } else {
1333            $next = true;
1334        }
1335
1336        if ($page <= 1) {
1337            $prev = false;
1338        } else {
1339            $prev = true;
1340        }
1341    }
1342    return array($c_commu_topic_list, $prev, $next, $total_num);
1343}
1344
1345/**
1346 * あなたに(の)管理コミュニティに参加を希望しているメンバー(参加承認待ち)
1347 *
1348 * @param   int $c_member_id    : 要請されている方(あなた=管理者)
1349 * @return  array_of_array
1350 *              c_commu_member_confirm.*
1351 *              c_commu_name    : コミュニティの名前
1352 *              nickname        : 要請している人の名前
1353 *              message_disp    : 表示用メッセージ
1354 */
1355function k_p_h_confirm_list_anatani_c_commu_member_confirm_list4c_member_id($c_member_id)
1356{
1357    $sql = "SELECT cmc.*, c.name AS c_commu_name";
1358    $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
1359    $sql .= " WHERE c.c_member_id_admin = ?" .
1360            " AND cmc.c_commu_id=c.c_commu_id";
1361    $params = array(intval($c_member_id));
1362    $c_commu_member_confirm_list = db_get_all($sql, $params);
1363
1364    foreach ($c_commu_member_confirm_list as $key => $value) {
1365        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
1366        $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
1367    }
1368    return $c_commu_member_confirm_list;
1369}
1370
1371
1372/**
1373 * あなたがコミュニティ参加要請しているコミュニティ(参加要請中)
1374 *
1375 * @param   int $c_member_id    : 要請している方(あなた)
1376 * @return  array_of_array
1377 *              c_commu_member_confirm.*,
1378 *              c_commu_name        : コミュニティの名前
1379 *              c_member_id_admin   : 管理者のメンバーID
1380 *              nickname            : 管理者の名前
1381 */
1382function k_p_h_confirm_list_anataga_c_commu_member_confirm_list4c_member_id($c_member_id)
1383{
1384    $sql = "SELECT cmc.*, c.name AS c_commu_name, c.c_member_id_admin";
1385    $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
1386    $sql .= " WHERE cmc.c_member_id = ?" .
1387            " AND cmc.c_commu_id = c.c_commu_id";
1388    $params = array(intval($c_member_id));
1389    $c_commu_member_confirm_list = db_get_all($sql, $params);
1390
1391    foreach ($c_commu_member_confirm_list as $key => $value) {
1392        $c_member = db_common_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
1393        $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
1394    }
1395    return $c_commu_member_confirm_list;
1396}
1397
1398/**
1399 * トピックIDからトピック情報を取得
1400 *
1401 * @param int c_commu_topic_id
1402 * @return array_of_array c_commu_topic.*, commu_name
1403 */
1404function mail_c_commu_topic4c_commu_topic_id($c_commu_topic_id)
1405{
1406    $sql = "SELECT t.*, c.name AS commu_name" .
1407        " FROM c_commu_topic AS t, c_commu AS c" .
1408        " WHERE t.c_commu_topic_id = ?" .
1409        " AND c.c_commu_id = t.c_commu_id";
1410    $params = array(intval($c_commu_topic_id));
1411    return db_get_row($sql, $params);
1412}
1413
1414///
1415
1416//// c_commu_category
1417
1418function _db_c_commu_category4null()
1419{
1420    $sql = 'SELECT cat.* FROM c_commu_category AS cat' .
1421            ' INNER JOIN c_commu_category_parent AS pcat' .
1422            ' USING (c_commu_category_parent_id)' .
1423            ' ORDER BY pcat.sort_order, cat.sort_order';
1424    return db_get_all($sql);
1425}
1426
1427function p_h_com_find_all_c_commu_category_list4null()
1428{
1429    $list = _db_c_commu_category4null();
1430
1431    // カテゴリごとのコミュニティ数を取得
1432    $sql = 'SELECT c_commu_category_id, COUNT(*) as count FROM c_commu' .
1433        ' GROUP BY c_commu_category_id';
1434    $counts = db_get_assoc($sql);
1435
1436    $c_commu_category_list = array();
1437    foreach ($list as $item) {
1438        $item['count_commu_category'] = intval($counts[$item['c_commu_category_id']]);
1439        $c_commu_category_list[$item['c_commu_category_parent_id']][] = $item;
1440    }
1441    return $c_commu_category_list;
1442}
1443
1444/**
1445 * 中カテゴリリストを取得
1446 *
1447 * @return  array 中カテゴリリスト
1448 */
1449function _db_c_commu_category_parent_list4null()
1450{
1451    $hint = db_mysql_hint('FORCE INDEX (sort_order)');
1452    $sql = 'SELECT * FROM c_commu_category_parent' . $hint . ' ORDER BY sort_order';
1453    return db_get_all($sql);
1454}
1455
1456/**
1457 * カテゴリ情報をIDから取得
1458 */
1459function db_commu_get_c_commu_category4id($c_commu_category_id)
1460{
1461    $sql = 'SELECT * FROM c_commu_category WHERE c_commu_category_id = ?';
1462    $params = array(intval($c_commu_category_id));
1463    return db_get_row($sql, $params);
1464}
1465
1466/**
1467 * コミュニティの小カテゴリIDから小カテゴリ名を得る
1468 */
1469function k_p_h_com_category_c_commu_category_name4c_commu_category_id($c_commu_category_id)
1470{
1471    $sql = 'SELECT name FROM c_commu_category WHERE c_commu_category_id = ?';
1472    $params = array(intval($c_commu_category_id));
1473    return db_get_one($sql, $params);
1474}
1475
1476function k_p_h_com_category_c_commu_category_parent_id4c_commu_category_id($c_commu_category_id)
1477{
1478    $cat = db_commu_get_c_commu_category4id($c_commu_category_id);
1479    return $cat['c_commu_category_parent_id'];
1480}
1481
1482function p_h_com_find_all_search_c_commu4c_commu_category(
1483            $search_word,
1484            $c_commu_category_parent_id,
1485            $page_size,
1486            $page,
1487            $val_order = 'r_datetime',
1488            $c_commu_category_id = 0)
1489{
1490    $select = 'SELECT c_commu.*';
1491
1492    $where = ' WHERE 1';
1493    $params = array();
1494    if ($c_commu_category_id) {
1495        $where .= ' AND c_commu.c_commu_category_id = ?';
1496        $params[] = $c_commu_category_id;
1497    }
1498    if ($search_word) {
1499        $words = explode(' ', $search_word);
1500        foreach ($words as $word) {
1501            $word = check_search_word($word);
1502
1503            $where .= ' AND (c_commu.name LIKE ? OR c_commu.info LIKE ?)';
1504            $params[] = '%'.$word.'%';
1505            $params[] = '%'.$word.'%';
1506        }
1507    }
1508
1509    switch ($val_order) {
1510    case 'r_datetime':
1511    default:
1512        $from = ' FROM c_commu';
1513        $order = ' ORDER BY c_commu.r_datetime DESC';
1514        $sql = $select.$from.$where.$order;
1515        break;
1516
1517    case 'count':
1518        $from  = ' FROM c_commu, c_commu_member';
1519        $order = ' ORDER BY count_commu_member DESC';
1520        $group = ' GROUP BY c_commu_member.c_commu_id';
1521        $sql = $select . ', COUNT(c_commu_member.c_member_id) AS count_commu_member' .
1522            $from .
1523            $where . ' AND c_commu_member.c_commu_id = c_commu.c_commu_id' .
1524            $group .
1525            $order;
1526        break;
1527    }
1528
1529    $list = db_get_all_page($sql, $page, $page_size, $params);
1530    foreach ($list as $key => $value) {
1531        $sql = 'SELECT name FROM c_commu_category WHERE c_commu_category_id = ?';
1532        $p2 = array(intval($value['c_commu_category_id']));
1533        $list[$key]['c_commu_category_name'] = db_get_one($sql, $p2);
1534
1535        if (!isset($value['count_commu_member'])) {
1536            $list[$key]['count_commu_member'] =
1537                _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
1538        }
1539    }
1540
1541    $sql = 'SELECT COUNT(*) FROM c_commu' . $where;
1542    $total_num = db_get_one($sql, $params);
1543
1544    if ($total_num != 0) {
1545        $total_page_num =  ceil($total_num / $page_size);
1546        if ($page >= $total_page_num) {
1547            $next = false;
1548        } else {
1549            $next = true;
1550        }
1551        if ($page <= 1) {
1552            $prev = false;
1553        } else {
1554            $prev = true;
1555        }
1556    }
1557
1558    $start_num = ($page - 1) * $page_size + 1;
1559    $end_num   = $start_num + $page_size >= $total_num ? $total_num : $start_num + $page_size - 1;
1560
1561    return array($list, $prev, $next, $total_num, $start_num, $end_num);
1562}
1563
1564function k_p_h_com_category_c_commu_list4c_commu_category_id_search($c_commu_category_id, $page_size, $page, $search_word)
1565{
1566    $sql = 'SELECT * FROM c_commu';
1567
1568    $where = ' WHERE 1';
1569    $params = array();
1570    if ($search_word) {
1571        $where .= ' AND (name LIKE ? OR info LIKE ?)';
1572        $params[] = '%'.$search_word.'%';
1573        $params[] = '%'.$search_word.'%';
1574    }
1575    if ($c_commu_category_id != 'all' && $c_commu_category_id) {
1576        $where .= ' AND c_commu_category_id = ?';
1577        $params[] = intval($c_commu_category_id);
1578    }
1579
1580    $sql .= $where . ' ORDER BY r_datetime DESC';
1581    $list = db_get_all_page($sql, $page, $page_size, $params);
1582
1583    foreach ($list as $key => $value) {
1584        $list[$key]['count_commu_member'] =
1585            _db_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
1586    }
1587
1588    $sql = 'SELECT COUNT(*) FROM c_commu' . $where;
1589    $total_num = db_get_one($sql, $params);
1590
1591    if ($total_num != 0) {
1592        $total_page_num =  ceil($total_num / $page_size);
1593        if ($page >= $total_page_num) {
1594            $next = false;
1595        } else {
1596            $next = true;
1597        }
1598
1599        if ($page <= 1) {
1600            $prev = false;
1601        } else {
1602            $prev = true;
1603        }
1604    }
1605
1606    return array($list, $prev, $next, $total_num);
1607}
1608
1609///
1610
1611function _db_is_c_event_admin($c_commu_topic_id, $c_member_id)
1612{
1613    $sql = 'SELECT c_event_member_id FROM c_event_member' .
1614            ' WHERE c_commu_topic_id = ? AND c_member_id = ? AND is_admin = 1';
1615    $params = array(intval($c_commu_topic_id), intval($c_member_id));
1616    return (bool)db_get_one($sql, $params);
1617}
1618
1619function _db_is_c_event_member($c_commu_topic_id, $c_member_id)
1620{
1621    $sql = 'SELECT c_event_member_id FROM c_event_member' .
1622            ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
1623    $params = array(intval($c_commu_topic_id), intval($c_member_id));
1624    return (bool)db_get_one($sql, $params);
1625}
1626
1627function c_event_detail_c_topic4c_commu_topic_id($c_commu_topic_id)
1628{
1629    $sql = "SELECT cct.*, cctc.*, cm.nickname, cpp.pref" .
1630        " FROM c_commu_topic as cct" .
1631        " LEFT JOIN c_commu_topic_comment as cctc ON cct.c_commu_topic_id = cctc.c_commu_topic_id" .
1632        " LEFT JOIN c_member as cm ON cct.c_member_id = cm.c_member_id" .
1633        " LEFT JOIN c_profile_pref as cpp ON cct.open_pref_id = cpp.c_profile_pref_id" .
1634        " WHERE cct.c_commu_topic_id = ?".
1635            " AND cctc.number = 0";
1636    $params = array(intval($c_commu_topic_id));
1637    $lst = db_get_row($sql, $params);
1638
1639    $sql = "SELECT COUNT(*) FROM c_event_member" .
1640        " WHERE c_commu_topic_id = ?";
1641    $lst['member_num'] = db_get_one($sql, $params);
1642
1643    return $lst;
1644}
1645
1646function c_event_detail_c_topic_write4c_commu_topic_id($c_commu_topic_id,$page,$page_size)
1647{
1648    $sql = "SELECT ctc.*, c_member.nickname " .
1649        " FROM c_commu_topic_comment AS ctc" .
1650            " LEFT JOIN c_member USING (c_member_id)" .
1651        " WHERE ctc.c_commu_topic_id = ? AND ctc.number > 0 " .
1652        " ORDER BY ctc.r_datetime DESC";
1653    $params = array(intval($c_commu_topic_id));
1654    $lst = db_get_all_page($sql, $page, $page_size, $params);
1655
1656    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
1657        " WHERE c_commu_topic_id = ? AND number > 0";
1658    $total_num = db_get_one($sql, $params);
1659
1660    if ($total_num != 0) {
1661        $total_page_num = ceil($total_num / $page_size);
1662        if ($page >= $total_page_num) {
1663            $next = false;
1664        } else {
1665            $next = true;
1666        }
1667        if ($page <= 1) {
1668            $prev = false;
1669        } else {
1670            $prev = true;
1671        }
1672    }
1673    $lst = array_reverse($lst);
1674
1675    $start = reset($lst);
1676    $start_num = $start['number'];
1677
1678    $end = end($lst);
1679    $end_num = $end['number'];
1680
1681    return array($lst, $prev, $next, $total_num, $start_num, $end_num);
1682}
1683
1684function c_event_write_delete_confirm_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id)
1685{
1686    $sql = "SELECT tc.*,cm.nickname FROM c_commu_topic_comment AS tc " .
1687            " LEFT JOIN c_member as cm ON cm.c_member_id = tc.c_member_id " .
1688            " WHERE tc.c_commu_topic_comment_id = ?";
1689    $params = array(intval($c_commu_topic_comment_id));
1690    return db_get_row($sql, $params);
1691}
1692
1693function c_event_member_list4c_commu_topic_id($c_commu_topic_id, $page, $page_size)
1694{
1695    $sql = "SELECT cm.* FROM c_member as cm, c_event_member as cem" .
1696            " WHERE cm.c_member_id = cem.c_member_id" .
1697            " AND cem.c_commu_topic_id = ?";
1698    $params = array(intval($c_commu_topic_id));
1699    return db_get_all_page($sql, $page, $page_size, $params);
1700}
1701
1702function count_c_event_member_list4c_commu_topic_id($c_commu_topic_id)
1703{
1704    $sql = "SELECT COUNT(*) FROM c_member as cm, c_event_member as cem" .
1705            " WHERE cm.c_member_id = cem.c_member_id" .
1706            " AND cem.c_commu_topic_id = ?";
1707    $params = array(intval($c_commu_topic_id));
1708    return db_get_one($sql, $params);
1709}
1710
1711function p_c_event_mail_list4c_commu_topic_id($c_commu_topic_id, $excepted_id = 0)
1712{
1713    $sql = 'SELECT c_member_id FROM c_event_member WHERE c_commu_topic_id = ?';
1714    $params = array(intval($c_commu_topic_id));
1715    $list = db_get_col($sql, $params);
1716
1717    $result = array();
1718    foreach ($list as $c_member_id) {
1719        if ($c_member_id != $excepted_id) {
1720            $result[] = db_common_c_member4c_member_id_LIGHT($c_member_id);
1721        }
1722    }
1723    return $result;
1724}
1725
1726function p_c_event_mail_confirm_list4c_member_ids($c_member_ids)
1727{
1728    $c_member_id_str = implode(',', array_map('intval', $c_member_ids));
1729    $sql = "SELECT * FROM c_member" .
1730            " WHERE c_member_id IN (".$c_member_id_str.")";
1731    return db_get_all($sql);
1732}
1733
1734function p_c_event_add_year4null()
1735{
1736    $y = date('Y');
1737    return array($y, $y+1);
1738}
1739
1740function p_common_is_c_event_member($c_commu_topic_id, $c_member_id)
1741{
1742  $sql = "SELECT COUNT(*) FROM c_event_member" .
1743      " WHERE c_commu_topic_id = ?".
1744      " AND c_member_id = ?";
1745  $params = array(intval($c_commu_topic_id), intval($c_member_id));
1746  return db_get_one($sql, $params);
1747}
1748
1749function p_h_home_event4c_member_id($year, $month, $day, $c_member_id)
1750{
1751    $sql = 'SELECT c_commu_id FROM c_commu_member WHERE c_member_id = ?';
1752    $params = array(intval($c_member_id));
1753    $ids = db_get_col($sql, $params);
1754    $ids = implode(", ", $ids);
1755    if (!$ids) {
1756        return array();
1757    }
1758
1759    $today = sprintf("%04d-%02d-%02d", $year, $month, $day);
1760    $sql = "SELECT * FROM c_commu_topic" .
1761        " WHERE c_commu_id IN ($ids)" .
1762        " AND event_flag = 1" .
1763        " AND open_date = ?";
1764    $params = array($today);
1765    $list = db_get_all($sql, $params);
1766
1767    foreach ($list as $key => $item) {
1768        $list[$key]['is_join'] = p_common_is_c_event_member($item['c_commu_topic_id'], $c_member_id);
1769    }
1770    return $list;
1771}
1772
1773function k_p_c_event_member_list4c_commu_topic_id($c_commu_topic_id, $page_size, $page)
1774{
1775    $sql = "SELECT cm.* FROM c_member AS cm, c_event_member AS cem" .
1776            " WHERE cm.c_member_id = cem.c_member_id " .
1777            " AND cem.c_commu_topic_id = ?";
1778    $params = array(intval($c_commu_topic_id));
1779    $list[0] = db_get_all_page($sql, $page, $page_size, $params);
1780
1781    $total_c_event_member = k_p_count_c_event_member_list4c_commu_topic_id($c_commu_topic_id);
1782    $start_num = ($page-1) * $page_size + 1;
1783    $end_num   = $page * $page_size;
1784    if ($end_num > $total_c_event_member) {
1785        $end_num = $total_c_event_member;
1786    }
1787    $end_page = ceil($total_c_event_member / $page_size);
1788
1789    $list[1] = ($start_num != 1);
1790    $list[2] = ($end_num != $total_c_event_member);
1791
1792    return $list;
1793}
1794
1795function k_p_count_c_event_member_list4c_commu_topic_id($c_commu_topic_id)
1796{
1797    $sql = "SELECT COUNT(*) FROM c_member AS cm, c_event_member AS cem" .
1798            " WHERE cm.c_member_id = cem.c_member_id" .
1799            " AND cem.c_commu_topic_id = ?";
1800    $params = array(intval($c_commu_topic_id));
1801    return db_get_one($sql, $params);
1802}
1803
1804/**
1805 * 非公開コミュニティへの承認なし参加フラグが立っているかどうか
1806 */
1807function db_c_commu4c_admin_invite_id($c_commu_id, $c_member_id_to)
1808{
1809    // すでにフラグが立っている
1810    $sql = 'SELECT c_commu_admin_invite_id FROM c_commu_admin_invite' .
1811            ' WHERE c_commu_id = ? AND c_member_id_to = ?';
1812    $params = array(intval($c_commu_id), intval($c_member_id_to));
1813    $result = db_get_one($sql, $params);
1814    if ($result) {
1815        return $result;
1816    } else {
1817        return false;
1818    }
1819}
1820
1821/**
1822 * コミュニティメンバーのリストを得る
1823 */
1824function p_c_commu_member_id_list4c_commu_id($c_commu_id)
1825{
1826    $sql = 'SELECT c_member_id FROM c_commu_member' .
1827            ' WHERE c_commu_id = ? AND is_receive_message = 1';
1828
1829    $params = array(intval($c_commu_id));
1830    $lst = db_get_col($sql, $params);
1831    return $lst;
1832}
1833
1834?><?php
1835/**
1836 * @copyright 2005-2006 OpenPNE Project
1837 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
1838 */
1839
1840//--- c_commu
1841
1842/**
1843 * コミュニティ作成
1844 *
1845 * @param  int     $c_member_id 管理者のメンバーID
1846 * @param  string  $name  コミュニティ名
1847 * @param  int     $c_commu_category_id
1848 * @param  string  $info  説明文
1849 * @param  enum('public', 'authpublic', 'authprivate')  $public_flag
1850 * @return int  insert_id
1851 */
1852function db_commu_insert_c_commu($c_member_id, $name, $c_commu_category_id, $info, $public_flag)
1853{
1854    $data = array(
1855        'name' => $name,
1856        'c_member_id_admin' => intval($c_member_id),
1857        'info' => $info,
1858        'c_commu_category_id' => intval($c_commu_category_id),
1859        'public_flag' => $public_flag,
1860        'r_datetime' => db_now(),
1861        'r_date' => db_now(),
1862    );
1863    return db_insert('c_commu', $data);
1864}
1865
1866/**
1867 * コミュニティ設定変更
1868 *
1869 * @param   int    $c_commu_id
1870 * @param   string $name
1871 * @param   int    $c_commu_category_id
1872 * @param   string $info
1873 * @param   enum(string or int) $public_flag
1874 *                      ('public'(0), 'authpublic'(1), 'authprivate'(2))
1875 * @return bool
1876 */
1877function db_commu_update_c_commu($c_commu_id,
1878    $name, $c_commu_category_id, $info, $public_flag,
1879    $image_filename = '', $is_send_join_mail = 1,
1880    $is_display_map = null, $map_latitude = null, $map_longitude = null, $map_zoom = null)
1881{
1882    $data = array(
1883        'name' => $name,
1884        'info' => $info,
1885        'c_commu_category_id' => intval($c_commu_category_id),
1886        'public_flag' => $public_flag,
1887        'is_send_join_mail' => (bool)$is_send_join_mail,
1888    );
1889    if ($image_filename) $data['image_filename'] = $image_filename;
1890    if (!is_null($is_display_map)) {
1891        $data['is_display_map'] = (bool)$is_display_map;
1892        $data['map_latitude'] = $map_latitude;
1893        $data['map_longitude'] = $map_longitude;
1894        $data['map_zoom'] = intval($map_zoom);
1895    }
1896
1897    $where = array(
1898        'c_commu_id' => intval($c_commu_id),
1899    );
1900    return db_update('c_commu', $data, $where);
1901}
1902
1903/**
1904 * コミュニティ写真更新
1905 */
1906function db_commu_update_c_commu_image_filename($c_commu_id, $image_filename)
1907{
1908    $data = array('image_filename' => $image_filename);
1909    $where = array('c_commu_id' => intval($c_commu_id));
1910    return db_update('c_commu', $data, $where);
1911}
1912
1913/**
1914 * コミュニティ写真削除
1915 */
1916function db_commu_delete_c_commu_image_filename($c_commu_id)
1917{
1918    $data = array('image_filename' => '');
1919    $where = array('c_commu_id' => intval($c_commu_id));
1920    return db_update('c_commu', $data, $where);
1921}
1922
1923/**
1924 * 管理者交代
1925 *
1926 * @param   int $c_commu_admin_confirm
1927 * @param   int $u : 自分のc_membmer_id
1928 * @return bool
1929 */
1930function db_commu_update_c_commu_c_member_id_admin($c_commu_id, $c_member_id)
1931{
1932    $data = array('c_member_id_admin' => intval($c_member_id));
1933    $where = array('c_commu_id' => intval($c_commu_id));
1934    if (!db_update('c_commu', $data, $where)) {
1935        return false;
1936    }
1937    return db_commu_delete_c_commu_admin_confirm4c_commu_id($c_commu_id);
1938}
1939
1940/**
1941 * 登録時に強制参加させるかどうかを設定
1942 */
1943function db_commu_update_is_regist_join($c_commu_id, $value = 0)
1944{
1945    $data = array('is_regist_join' => (bool)$value);
1946    $where = array('c_commu_id' => intval($c_commu_id));
1947    return db_update('c_commu', $data, $where);
1948}
1949
1950//--- confirm
1951
1952/**
1953 * コミュニティ参加要請を削除
1954 */
1955function db_commu_delete_c_commu_member_confirm($c_commu_member_confirm_id)
1956{
1957    $sql = 'DELETE FROM c_commu_member_confirm WHERE c_commu_member_confirm_id = ?';
1958    $params = array(intval($c_commu_member_confirm_id));
1959    return db_query($sql, $params);
1960}
1961
1962/**
1963 * コミュニティ参加要請を承認
1964 */
1965function db_commu_insert_c_commu_member($c_commu_member_confirm_id)
1966{
1967    $confirm = _do_c_commu_member_confirm4c_commu_member_confirm_id($c_commu_member_confirm_id);
1968    $data = array(
1969        'c_commu_id' => intval($confirm['c_commu_id']),
1970        'c_member_id' => intval($confirm['c_member_id']),
1971        'r_datetime' => db_now(),
1972    );
1973    db_insert('c_commu_member', $data);
1974
1975    return db_commu_delete_c_commu_member_confirm($c_commu_member_confirm_id);
1976}
1977
1978/**
1979 * コミュニティ参加リクエスト
1980 */
1981function db_commu_insert_c_commu_member_confirm($c_commu_id, $c_member_id, $message = '')
1982{
1983    $data = array(
1984        'c_commu_id' => intval($c_commu_id),
1985        'c_member_id' => intval($c_member_id),
1986        'message' => $message,
1987        'r_datetime' => db_now(),
1988    );
1989    return db_insert('c_commu_member_confirm', $data);
1990}
1991
1992/**
1993 * コミュニティ管理者交代リクエスト
1994 */
1995function db_commu_insert_c_commu_admin_confirm($c_commu_id, $c_member_id, $message = '')
1996{
1997    $data = array(
1998        'c_commu_id' => intval($c_commu_id),
1999        'c_member_id_to' => intval($c_member_id),
2000        'message' => $message,
2001        'r_datetime' => db_now(),
2002    );
2003    return db_insert('c_commu_admin_confirm', $data);
2004}
2005
2006/**
2007 * 管理者交代の要請を削除
2008 *
2009 * @param   int $c_commu_admin_confirm_id
2010 */
2011function db_commu_delete_c_commu_admin_confirm4id($c_commu_admin_confirm_id)
2012{
2013    $sql = 'DELETE FROM c_commu_admin_confirm WHERE c_commu_admin_confirm_id = ?';
2014    $params = array(intval($c_commu_admin_confirm_id));
2015    return db_query($sql, $params);
2016}
2017
2018/**
2019 * コミュニティIDから管理者交代要請を削除
2020 */
2021function db_commu_delete_c_commu_admin_confirm4c_commu_id($c_commu_id)
2022{
2023    $sql = 'DELETE FROM c_commu_admin_confirm WHERE c_commu_id = ?';
2024    $params = array(intval($c_commu_id));
2025    return db_query($sql, $params);
2026}
2027
2028//--- topic
2029
2030/**
2031 * トピック削除
2032 */
2033function db_commu_delete_c_commu_topic($c_commu_topic_id)
2034{
2035    // c_commu_topic_comment(画像)
2036    $sql = 'SELECT image_filename1, image_filename2, image_filename3' .
2037            ' FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
2038    $params = array(intval($c_commu_topic_id));
2039
2040    $topic_comment_list = db_get_all($sql, $params);
2041    foreach ($topic_comment_list as $topic_comment) {
2042        image_data_delete($topic_comment['image_filename1']);
2043        image_data_delete($topic_comment['image_filename2']);
2044        image_data_delete($topic_comment['image_filename3']);
2045    }
2046
2047    $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
2048    db_query($sql, $params);
2049
2050    $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ?';
2051    db_query($sql, $params);
2052
2053    $sql = 'DELETE FROM c_commu_topic WHERE c_commu_topic_id = ?';
2054    db_query($sql, $params);
2055}
2056
2057//--- topic_comment
2058
2059/**
2060 * トピックコメント書き込み
2061 *
2062 * @param   int    $c_commu_id
2063 * @param   int    $c_commu_topic_id
2064 * @param   int    $c_member_id
2065 * @param   string $body
2066 * @return int insert_id
2067 */
2068function db_commu_insert_c_commu_topic_comment($c_commu_id, $c_commu_topic_id, $c_member_id, $body)
2069{
2070    $number = _do_c_commu_topic_comment_number4c_commu_topic_id($c_commu_topic_id);
2071
2072    $data = array(
2073        'c_commu_id' => intval($c_commu_id),
2074        'c_member_id' => intval($c_member_id),
2075        'c_commu_topic_id' => intval($c_commu_topic_id),
2076        'number' => intval($number),
2077        'body' => $body,
2078        'r_datetime' => db_now(),
2079        'r_date' => db_now(),
2080    );
2081    return db_insert('c_commu_topic_comment', $data);
2082}
2083
2084/**
2085 * トピックコメント書き込み
2086 */
2087function do_c_bbs_insert_c_commu_topic_comment($c_member_id,$target_c_commu_topic_id,$body)
2088{
2089    $c_commu_topic = _do_c_bbs_c_commu_topic4c_commu_topic_id($target_c_commu_topic_id);
2090
2091    $target_c_commu_topic_id = $c_commu_topic['c_commu_topic_id'];
2092    $target_c_commu_id  = $c_commu_topic['c_commu_id'];
2093
2094    return db_commu_insert_c_commu_topic_comment($target_c_commu_id, $target_c_commu_topic_id, $c_member_id, $body);
2095}
2096
2097function db_commu_update_c_commu_topic_comment_images($c_commu_topic_comment_id, $image_filename1, $image_filename2, $image_filename3)
2098{
2099    $data = array(
2100        'image_filename1' => strval($image_filename1),
2101        'image_filename2' => strval($image_filename2),
2102        'image_filename3' => strval($image_filename3),
2103    );
2104    $where = array('c_commu_topic_comment_id' => intval($c_commu_topic_comment_id));
2105    return db_update('c_commu_topic_comment', $data, $where);
2106}
2107
2108/**
2109 * 掲示板書き込みに画像を追加する
2110 */
2111function mail_update_c_commu_topic_comment_image($c_commu_topic_comment_id, $image_filename, $image_num)
2112{
2113    $data = array(
2114        'image_filename'.intval($image_num) => $image_filename,
2115    );
2116    $where = array(
2117        'c_commu_topic_comment_id' => intval($c_commu_topic_comment_id),
2118    );
2119    return db_update('c_commu_topic_comment', $data, $where);
2120}
2121
2122/**
2123 * トピックコメント削除
2124 */
2125function do_c_bbs_delete_c_commu_topic_comment($c_commu_topic_comment_id)
2126{
2127    $sql = 'SELECT image_filename1, image_filename2, image_filename3' .
2128        ' FROM c_commu_topic_comment' .
2129        ' WHERE c_commu_topic_comment_id = ?';
2130    $params = array(intval($c_commu_topic_comment_id));
2131    $topic_comment = db_get_row($sql, $params);
2132    image_data_delete($topic_comment['image_filename1']);
2133    image_data_delete($topic_comment['image_filename2']);
2134    image_data_delete($topic_comment['image_filename3']);
2135
2136    $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_comment_id = ?';
2137    return db_query($sql, $params);
2138}
2139
2140//--- event
2141
2142function do_c_event_edit_update_c_commu_topic($c_commu_topic_id, $topic)
2143{
2144    $data = array(
2145        'name'       => $topic['name'],
2146        'event_flag' => (bool)$topic['event_flag'],
2147        'r_datetime' => db_now(),
2148        'r_date' => db_now(),
2149    );
2150    if ($data['event_flag']) {
2151        $data += array(
2152            'open_date'         => $topic['open_date'],
2153            'open_date_comment' => $topic['open_date_comment'],
2154            'open_pref_id'      => intval($topic['open_pref_id']),
2155            'open_pref_comment' => $topic['open_pref_comment'],
2156            'invite_period'     => $topic['invite_period'],
2157        );
2158    }
2159    $where = array('c_commu_topic_id' => intval($c_commu_topic_id));
2160    return db_update('c_commu_topic', $data, $where);
2161}
2162
2163function do_c_event_edit_update_c_commu_topic_comment($c_commu_topic_id, $topic_comment)
2164{
2165    $data = array(
2166        'body' => $topic_comment['body'],
2167        'r_datetime' => db_now(),
2168    );
2169    for ($i = 1; $i <= 3; $i++) {
2170        $key = 'image_filename'.$i;
2171        if (!empty($topic_comment[$key])) {
2172            $data[$key] = $topic_comment[$key];
2173        }
2174    }
2175    $where = array(
2176        'c_commu_topic_id' => intval($c_commu_topic_id),
2177        'number' => 0,
2178    );
2179    return db_update('c_commu_topic_comment', $data, $where);
2180}
2181
2182function do_c_event_edit_delete_c_commu_topic_comment_image($c_commu_topic_id, $image_num)
2183{
2184    $data = array(
2185        'image_filename'.intval($image_num) => '',
2186    );
2187    $where = array(
2188        'c_commu_topic_id' => intval($c_commu_topic_id),
2189        'number' => 0,
2190    );
2191    return db_update('c_commu_topic_comment', $data, $where);
2192}
2193
2194function do_c_event_add_insert_c_commu_topic($topic)
2195{
2196    $data = array(
2197        'c_commu_id'  => intval($topic['c_commu_id']),
2198        'c_member_id' => intval($topic['c_member_id']),
2199        'name'        => $topic['name'],
2200        'event_flag'  => (bool)$topic['event_flag'],
2201        'r_datetime'  => db_now(),
2202        'r_date'      => db_now(),
2203    );
2204    if ($data['event_flag']) {
2205        $data += array(
2206            'open_date'         => $topic['open_date'],
2207            'open_date_comment' => $topic['open_date_comment'],
2208            'open_pref_id'      => intval($topic['open_pref_id']),
2209            'open_pref_comment' => $topic['open_pref_comment'],
2210            'invite_period'     => $topic['invite_period'],
2211        );
2212    }
2213    return db_insert('c_commu_topic', $data);
2214}
2215
2216function do_c_event_add_insert_c_commu_topic_comment($comment)
2217{
2218    $data = array(
2219        'c_commu_id'       => intval($comment['c_commu_id']),
2220        'c_member_id'      => intval($comment['c_member_id']),
2221        'body'             => strval($comment['body']),
2222        'number'           => intval($comment['number']),
2223        'c_commu_topic_id' => intval($comment['c_commu_topic_id']),
2224        'image_filename1'  => strval($comment['image_filename1']),
2225        'image_filename2'  => strval($comment['image_filename2']),
2226        'image_filename3'  => strval($comment['image_filename3']),
2227        'r_datetime'       => db_now(),
2228        'r_date'           => db_now(),
2229    );
2230    return db_insert('c_commu_topic_comment', $data);
2231}
2232
2233/**
2234 * イベント管理メンバー追加
2235 */
2236function do_c_event_add_insert_c_event_member_as_admin($c_commu_topic_id, $c_member_id)
2237{
2238    $data = array(
2239        'c_commu_topic_id' => intval($c_commu_topic_id),
2240        'c_member_id' => intval($c_member_id),
2241        'is_admin' => 1,
2242        'r_datetime' => db_now(),
2243    );
2244    return db_insert('c_event_member', $data);
2245}
2246
2247/**
2248 * イベント参加メンバー追加
2249 */
2250function do_c_event_add_insert_c_event_member($c_commu_topic_id, $c_member_id)
2251{
2252    // 参加済みの場合は追加しない
2253    $sql = 'SELECT c_event_member_id FROM c_event_member' .
2254            ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
2255    $params = array(intval($c_commu_topic_id), intval($c_member_id));
2256    if (db_get_one($sql, $params)) {
2257        return false;
2258    }
2259
2260    $data = array(
2261        'c_commu_topic_id' => intval($c_commu_topic_id),
2262        'c_member_id' => intval($c_member_id),
2263        'is_admin' => 0,
2264        'r_datetime' => db_now(),
2265    );
2266    return db_insert('c_event_member', $data);
2267}
2268
2269/**
2270 * イベント参加メンバー削除
2271 */
2272function do_c_event_add_delete_c_event_member($c_commu_topic_id, $c_member_id)
2273{
2274    $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ? AND c_member_id = ?';
2275    $params = array(intval($c_commu_topic_id), intval($c_member_id));
2276    db_query($sql, $params);
2277}
2278
2279//--- commu_member
2280
2281/**
2282 * コミュニティに参加
2283 */
2284function do_inc_join_c_commu($c_commu_id, $c_member_id)
2285{
2286    $data = array(
2287        'c_commu_id'  => intval($c_commu_id),
2288        'c_member_id' => intval($c_member_id),
2289        'r_datetime'  => db_now(),
2290    );
2291    return db_insert('c_commu_member', $data);
2292}
2293
2294/**
2295 * コミュニティからメンバーを削除
2296 */
2297function db_commu_delete_c_commu_member($c_commu_id, $c_member_id)
2298{
2299    $sql = 'DELETE FROM c_commu_review' .
2300           ' WHERE c_commu_id = ? AND c_member_id = ?';
2301    $params = array(intval($c_commu_id), intval($c_member_id));
2302    db_query($sql, $params);
2303
2304    $sql = 'DELETE FROM c_commu_admin_confirm' .
2305           ' WHERE c_commu_id = ? AND c_member_id_to = ?';
2306    db_query($sql, $params);
2307
2308    $sql = 'DELETE FROM c_commu_member' .
2309           ' WHERE c_commu_id = ? AND c_member_id = ?';
2310    db_query($sql, $params);
2311}
2312
2313/**
2314 * コミュニティお知らせメール受信設定変更
2315 */
2316function do_c_home_update_is_receive_mail($c_commu_id, $c_member_id, $is_receive_mail, $is_receive_mail_pc, $is_receive_message)
2317{
2318    $data = array(
2319        'is_receive_mail' => (bool)$is_receive_mail,
2320        'is_receive_mail_pc' => (bool)$is_receive_mail_pc,
2321        'is_receive_message' => (bool)$is_receive_message,
2322
2323    );
2324    $where = array(
2325        'c_commu_id'  => intval($c_commu_id),
2326        'c_member_id' => intval($c_member_id),
2327    );
2328    return db_update('c_commu_member', $data, $where);
2329}
2330
2331/**
2332 * 非公開コミュニティへの承認なし参加フラグを立てる
2333 */
2334function db_commu_insert_c_commu_admin_invite($c_commu_id, $c_member_id_to)
2335{
2336    // すでにフラグが立っている
2337    $sql = 'SELECT c_commu_admin_invite_id FROM c_commu_admin_invite' .
2338            ' WHERE c_commu_id = ? AND c_member_id_to = ?';
2339    $params = array(intval($c_commu_id), intval($c_member_id_to));
2340    if (db_get_one($sql, $params)) {
2341        return false;
2342    }
2343
2344    $data = array(
2345        'c_commu_id'  => intval($c_commu_id),
2346        'c_member_id_to' => intval($c_member_id_to),
2347        'r_datetime'  => db_now(),
2348    );
2349
2350    return db_insert('c_commu_admin_invite', $data);
2351}
2352
2353/**
2354 * 非公開コミュニティへの承認なし参加フラグを削除する
2355 */
2356function db_commu_delete_c_commu_admin_invite($c_commu_admin_invite_id)
2357{
2358    $sql = 'DELETE FROM c_commu_admin_invite WHERE c_commu_admin_invite_id = ?';
2359    $params = array(intval($c_commu_admin_invite_id));
2360    db_query($sql, $params);
2361}
2362
2363?>
Note: See TracBrowser for help on using the repository browser.