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

source: OpenPNE/branches/2.6.x/webapp/lib/db/commu.php @ 2854

Last change on this file since 2854 was 2854, checked in by ogawa, 13 years ago

#744:SQLの「IN ()」でカッコ内が空の場合にMySQLエラーが発生する

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