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

source: OpenPNE/trunk/webapp/lib/db/commu.php @ 787

Last change on this file since 787 was 787, checked in by takanashi, 14 years ago

ファンクションキャッシュのバグ修正/BIZのバグ修正の取り込み

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