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

source: OpenPNE/trunk/webapp/modules/admin/lib/db_admin.php @ 4270

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

#1352:PC・携帯の配色設定の内部設計を変更する

File size: 84.3 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * メンバーリスト取得
9 */
10function db_admin_c_member_list($page, $page_size, &$pager)
11{
12    $sql = 'SELECT c_member_id FROM c_member ORDER BY c_member_id';
13    $ids = db_get_col_page($sql, $page, $page_size);
14
15    $c_member_list = array();
16    foreach ($ids as $id) {
17        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
18    }
19
20    $sql = 'SELECT COUNT(*) FROM c_member';
21    $total_num = db_get_one($sql);
22    $pager = admin_make_pager($page, $page_size, $total_num);
23
24    return $c_member_list;
25}
26
27function db_admin_c_member4mail_address($mail_address)
28{
29    $sql = 'SELECT c_member_id FROM c_member_secure' .
30            ' WHERE pc_address = ? OR ktai_address = ? OR regist_address = ?';
31    $enc_address = t_encrypt($mail_address);
32    $params = array($enc_address, $enc_address, $enc_address);
33    $list = db_get_col($sql, $params);
34
35    $c_member_list = array();
36    foreach ($list as $c_member_id) {
37        $c_member_list[] = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
38    }
39    return $c_member_list;
40}
41
42function db_admin_c_siteadmin($target)
43{
44    $sql = 'SELECT * FROM c_siteadmin WHERE target = ?';
45    $params = array($target);
46    return db_get_row($sql, $params);
47}
48
49function db_admin_insert_c_siteadmin($target, $body)
50{
51    $data = array(
52        'target' => $target,
53        'body' => $body,
54        'r_date' => db_now(),
55    );
56    return db_insert('c_siteadmin', $data);
57}
58
59function db_admin_update_c_siteadmin($target, $body)
60{
61    $data = array(
62        'body' => $body,
63        'r_date' => db_now(),
64    );
65    $where = array('target' => $target);
66    return db_update('c_siteadmin', $data, $where);
67}
68
69function db_admin_delete_c_profile_option($c_profile_option_id)
70{
71    //function cache削除
72    pne_cache_drop('db_member_c_profile_list');
73
74    if (!$c_profile_option_id) {
75        return false;
76    }
77
78    $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
79    $params = array(intval($c_profile_option_id));
80    db_query($sql, $params);
81
82    $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
83    db_query($sql, $params);
84
85    return true;
86}
87
88function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
89{
90    //function cache削除
91    pne_cache_drop('db_member_c_profile_list');
92
93    $data = array(
94        'c_profile_id' => intval($c_profile_id),
95        'value' => $value,
96        'sort_order' => intval($sort_order),
97    );
98    return db_insert('c_profile_option', $data);
99}
100
101function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
102{
103    //function cache削除
104    pne_cache_drop('db_member_c_profile_list');
105
106    $data = array('value' => $value);
107    $where = array('c_profile_option_id' => intval($c_profile_option_id));
108    db_update('c_member_profile', $data, $where);
109
110    $data = array(
111        'value' => $value,
112        'sort_order' => intval($sort_order),
113    );
114    db_update('c_profile_option', $data, $where);
115}
116
117function db_admin_insert_c_banner($a_href, $type, $nickname)
118{
119    $data = array(
120        'a_href' => $a_href,
121        'type' => $type,
122        'nickname' => $nickname,
123        'is_hidden_after' => 0,
124        'is_hidden_before' => 0,
125        'image_filename' => '',
126    );
127    return db_insert('c_banner', $data);
128}
129
130function db_admin_update_c_banner($c_banner_id, $sets)
131{
132    $where = array('c_banner_id' => intval($c_banner_id));
133    db_update('c_banner', $sets, $where);
134}
135
136function db_admin_delete_c_banner($c_banner_id)
137{
138    db_admin_delete_c_image4c_banner_id($c_banner_id);
139
140    $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
141    $params = array(intval($c_banner_id));
142    db_query($sql, $params);
143}
144
145function db_admin_delete_c_image4c_banner_id($c_banner_id)
146{
147    $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
148    $params = array(intval($c_banner_id));
149    $image_filename = db_get_one($sql, $params);
150    image_data_delete($image_filename);
151}
152
153function db_admin_insert_c_profile(
154    $name
155    , $caption
156    , $info
157    , $is_required
158    , $public_flag_edit
159    , $public_flag_default
160    , $form_type
161    , $sort_order
162    , $disp_regist
163    , $disp_config
164    , $disp_search
165    , $val_type
166    , $val_regexp
167    , $val_min
168    , $val_max
169    )
170{
171    pne_cache_drop('db_member_c_profile_list');
172
173    if (empty($info) || is_null($info)) {
174        $info = '';
175    }
176
177    $data = array(
178        'name' => $name,
179        'caption' => $caption,
180        'info' => $info,
181        'is_required' => (bool)$is_required,
182        'public_flag_edit' => (bool)$public_flag_edit,
183        'public_flag_default' => $public_flag_default,
184        'form_type' => $form_type,
185        'sort_order' => (int)$sort_order,
186        'disp_regist' => (bool)$disp_regist,
187        'disp_config' => (bool)$disp_config,
188        'disp_search' => (bool)$disp_search,
189        'val_type' => $val_type,
190        'val_regexp' => $val_regexp,
191        'val_min' => (int)$val_min,
192        'val_max' => (int)$val_max,
193    );
194    return db_insert('c_profile', $data);
195}
196
197function db_admin_update_c_profile($c_profile_id
198    , $name
199    , $caption
200    , $info
201    , $is_required
202    , $public_flag_edit
203    , $public_flag_default
204    , $form_type
205    , $sort_order
206    , $disp_regist
207    , $disp_config
208    , $disp_search
209    , $val_type
210    , $val_regexp
211    , $val_min
212    , $val_max
213    )
214{
215    if (empty($info) || is_null($info)) {
216        $info = '';
217    }
218
219    $data = array(
220        'name' => $name,
221        'caption' => $caption,
222        'info' => $info,
223        'is_required' => (bool)$is_required,
224        'public_flag_edit' => (bool)$public_flag_edit,
225        'public_flag_default' => $public_flag_default,
226        'form_type' => $form_type,
227        'sort_order' => intval($sort_order),
228        'disp_regist' => (bool)$disp_regist,
229        'disp_config' => (bool)$disp_config,
230        'disp_search' => (bool)$disp_search,
231        'val_type' => $val_type,
232        'val_regexp' => $val_regexp,
233        'val_min' => intval($val_min),
234        'val_max' => intval($val_max),
235    );
236    $where = array('c_profile_id' => intval($c_profile_id));
237    db_update('c_profile', $data, $where);
238
239    // 公開設定が固定のときはメンバーの設定値を上書き
240    if (!$public_flag_edit) {
241        $data = array('public_flag' => $public_flag_default);
242        db_update('c_member_profile', $data, $where);
243    }
244
245    pne_cache_drop('db_member_c_profile_list');
246}
247
248function db_admin_delete_c_profile($c_profile_id)
249{
250    $params = array(intval($c_profile_id));
251
252    // メンバーのプロフィールから削除
253    $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
254    db_query($sql, $params);
255
256    // 選択肢項目を削除
257    $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
258    db_query($sql, $params);
259
260    // プロフィール項目を削除
261    $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
262    db_query($sql, $params);
263
264    pne_cache_drop('db_member_c_profile_list');
265}
266
267function db_admin_c_profile4c_profile_id($c_profile_id)
268{
269    $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
270    $params = array(intval($c_profile_id));
271    return db_get_row($sql, $params);
272}
273
274/**
275 * 全バナー取得
276 *
277 * @param  int $limit 取得最大件数
278 * @return array_of_array  c_banner_list バナー配列
279 */
280function db_admin_c_banner_list4null($type = '')
281{
282    $sql = 'SELECT * FROM c_banner';
283    $params = array();
284    if ($type) {
285        $sql .= ' WHERE type = ?';
286        $params[] = $type;
287    }
288    return db_get_all($sql, $params);
289}
290
291function db_admin_c_commu_category_parent_list()
292{
293    $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
294    return db_get_all($sql);
295}
296
297function db_admin_c_commu_category_list()
298{
299    $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
300    $list = db_get_all($sql);
301
302    $category_list = array();
303    foreach ($list as $item) {
304        $category_list[$item['c_commu_category_parent_id']][] = $item;
305    }
306    return $category_list;
307}
308
309function db_admin_insert_c_commu_category_parent($name, $sort_order)
310{
311    $data = array(
312        'name' => $name,
313        'sort_order' => intval($sort_order),
314    );
315    return db_insert('c_commu_category_parent', $data);
316}
317
318function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
319{
320    $data = array(
321        'name' => $name,
322        'sort_order' => intval($sort_order),
323    );
324    $where = array(
325        'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
326    );
327    db_update('c_commu_category_parent', $data, $where);
328}
329
330function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
331{
332    $params = array(intval($c_commu_category_parent_id));
333
334    // 小カテゴリを削除
335    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
336    db_query($sql, $params);
337
338    // 中カテゴリを削除
339    $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
340    db_query($sql, $params);
341}
342
343function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order)
344{
345    $data = array(
346        'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
347        'name' => $name,
348        'sort_order' => intval($sort_order),
349    );
350    return db_insert('c_commu_category', $data);
351}
352
353function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order)
354{
355    $data = array(
356        'name' => $name,
357        'sort_order' => intval($sort_order)
358    );
359    $where = array('c_commu_category_id' => intval($c_commu_category_id));
360    db_update('c_commu_category', $data, $where);
361}
362
363function db_admin_delete_c_commu_category($c_commu_category_id)
364{
365    // 小カテゴリを削除
366    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
367    $params = array(intval($c_commu_category_id));
368    db_query($sql, $params);
369}
370
371function db_admin_c_admin_user_id4username($username)
372{
373    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
374    $params = array($username);
375    return db_get_one($sql, $params);
376}
377
378function db_admin_authenticate_password($uid, $password)
379{
380    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
381    $params = array(intval($uid), md5($password));
382    return (bool)db_get_one($sql, $params);
383}
384
385function db_admin_update_c_admin_user_password($uid, $password)
386{
387    $data = array('password' => md5($password));
388    $where = array('c_admin_user_id' => intval($uid));
389    db_update('c_admin_user', $data, $where);
390}
391
392function db_admin_c_admin_config4name($name)
393{
394    $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
395    $params = array($name);
396    return db_get_one($sql, $params);
397}
398
399function db_admin_insert_c_admin_config($name, $value)
400{
401    $data = array(
402        'name' => $name,
403        'value' => $value,
404    );
405    return db_insert('c_admin_config', $data);
406}
407
408function db_admin_update_c_admin_config($name, $value)
409{
410    $data = array('value' => $value);
411    $where = array('name' => $name);
412    db_update('c_admin_config', $data, $where);
413}
414
415function db_admin_replace_c_admin_config($name, $value)
416{
417    $sql = 'DELETE FROM c_admin_config WHERE name = ?';
418    $params = array($name);
419    db_query($sql, $params);
420
421    $data = array(
422        'name'  => strval($name),
423        'value' => strval($value),
424    );
425    return db_insert('c_admin_config', $data);
426}
427
428function db_admin_c_admin_config_all()
429{
430    $sql = 'SELECT name, value FROM c_admin_config';
431    return db_get_assoc($sql);
432}
433
434function db_admin_delete_c_image_link4image_filename($image_filename)
435{
436    // c_banner (削除)
437    $sql = 'DELETE FROM c_banner WHERE image_filename = ?';
438    $params = array($image_filename);
439    db_query($sql, $params);
440
441    // c_commu
442    $tbl = 'c_commu';
443    _db_admin_empty_image_filename($tbl, $image_filename);
444
445    // c_commu_topic_comment
446    $tbl = 'c_commu_topic_comment';
447    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename1');
448    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename2');
449    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename3');
450
451    // c_diary
452    $tbl = 'c_diary';
453    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
454    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
455    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
456
457    // c_diary_comment
458    $tbl = 'c_diary_comment';
459    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
460    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
461    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
462
463    // c_member
464    $tbl = 'c_member';
465    _db_admin_empty_image_filename($tbl, $image_filename);
466    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
467    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
468    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
469}
470
471function _db_admin_empty_image_filename($tbl, $image_filename, $column = 'image_filename')
472{
473    $data = array(
474        db_escapeIdentifier($column) => '',
475    );
476    $where = array(
477        db_escapeIdentifier($column) => $image_filename,
478    );
479    db_update(db_escapeIdentifier($tbl), $data, $where);
480}
481
482function db_admin_c_profile_name_exists($name)
483{
484    $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
485    $params = array($name);
486    return db_get_one($sql, $params);
487}
488
489function db_admin_update_is_login_rejected($c_member_id)
490{
491    // function cacheを削除
492    cache_drop_c_member_profile($c_member_id);
493
494    $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
495    $params = array(intval($c_member_id));
496    $is_login_rejected = db_get_one($sql, $params);
497    if (is_null($is_login_rejected)) {
498        return false;
499    }
500
501    $data = array('is_login_rejected' => !($is_login_rejected));
502    $where = array('c_member_id' => intval($c_member_id));
503    return db_update('c_member', $data, $where);
504}
505
506function db_admin_c_admin_user_list()
507{
508    $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
509    return db_get_all($sql);
510}
511
512function db_admin_exists_c_admin_username($username)
513{
514    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
515    $params = array(strval($username));
516    return (bool)db_get_one($sql, $params);
517}
518
519function db_admin_insert_c_admin_user($username, $password, $auth_type)
520{
521    $data = array(
522        'username' => strval($username),
523        'password' => md5($password),
524        'auth_type' => strval($auth_type),
525    );
526    return db_insert('c_admin_user', $data);
527}
528
529function db_admin_delete_c_admin_user($c_admin_user_id)
530{
531    $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
532    $params = array(intval($c_admin_user_id));
533    return db_query($sql, $params);
534}
535
536function db_admin_get_auth_type($c_admin_user_id)
537{
538    $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
539    $params = array(intval($c_admin_user_id));
540    return db_get_one($sql, $params);
541}
542
543/**
544 * メンバーIDリスト取得(絞り込み対応)
545 */
546function _db_admin_c_member_id_list($cond_list, $order = null)
547{
548    $sql = 'SELECT c_member_id'.
549           ' FROM c_member'.
550           ' WHERE true';
551
552    //開始年
553    if (!empty($cond_list['s_year'])) {
554        $sql .= ' AND birth_year >= ?';
555        $params[] = $cond_list['s_year'];
556    }
557    //終了年
558    if (!empty($cond_list['e_year'])) {
559        $sql .= ' AND birth_year <= ?';
560        $params[] = $cond_list['e_year'];
561    }
562
563    // 誕生日による絞り込みの場合は、誕生年が0のメンバーを除外する
564    if (!empty($cond_list['s_year']) || !empty($cond_list['e_year'])) {
565        $sql .= ' AND birth_year <> 0';
566    }
567
568    //最終ログイン時間で絞り込み
569    if (isset($cond_list['last_login'])) {
570        //期間で分ける
571        switch($cond_list['last_login']) {
572        case 1: //3日以内
573            $sql .= ' AND access_date >= ?';
574            $params[] = date('Y-m-d', strtotime('-3 day'));
575            break;
576        case 2: //3~7日以内
577            $sql .= ' AND access_date >= ? AND access_date < ?';
578            $params[] = date('Y-m-d', strtotime('-7 day'));
579            $params[] = date('Y-m-d', strtotime('-3 day'));
580            break;
581        case 3: //7~30日以内
582            $sql .= ' AND access_date >= ? AND access_date < ?';
583            $params[] = date('Y-m-d', strtotime('-30 day'));
584            $params[] = date('Y-m-d', strtotime('-7 day'));
585            break;
586        case 4: //30日以上
587            $sql .= ' AND access_date > ? AND access_date < ?';
588            $params[] = '0000-00-00 00:00:00';
589            $params[] = date('Y-m-d', strtotime('-30 day'));
590            break;
591        case 5: //未ログイン
592            $sql .= ' AND access_date = ?';
593            $params[] = '0000-00-00 00:00:00';
594            break;
595        }
596    }
597
598    // --- ソートオーダーここから
599
600    // $orderの例:id_1 , id_2
601    // 「-」の前が項目名であとが1なら昇順 2なら降順
602    $type = explode("-",$order);
603
604    //ランクでソートとポイントでソートは同等
605    if ($type[0] == 'RANK') {
606        $type[0] = 'PNE_POINT';
607    }
608
609    $is_order = false;
610    if ($order) {
611        $is_order = true;
612
613        switch ($type[0]) {
614            case "c_member_id":
615                $sql .= ' ORDER BY c_member_id';
616            break;
617            case "nickname":
618                $sql .= ' ORDER BY nickname';
619            break;
620            case "image_filename":
621                $sql .= ' ORDER BY image_filename';
622            break;
623            case "c_member_id_invite":
624                $sql .= ' ORDER BY c_member_id_invite';
625            break;
626
627            case "access_date":
628                $sql .= ' ORDER BY access_date';
629            break;
630
631            case "r_date":
632                $sql .= ' ORDER BY r_date';
633            break;
634            case "birth":
635                //降順指定
636                if ($type[1] == "2") {
637                    $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
638                } else {
639                    $sql .= ' ORDER BY birth_year, birth_month, birth_day';
640                }
641            break;
642            default :
643                $is_order = false;
644
645        }
646
647        //降順指定
648        if ($is_order && $type[1] == "2") {
649            $sql .= ' DESC';
650        }
651
652    }
653    // --- ソートオーダーここまで
654
655    $ids = db_get_col($sql, $params);
656
657    // --- ポイントで絞り込み ここから
658    if ( isset($cond_list['s_point']) || isset($cond_list['e_point'])) {
659
660        $sql = 'SELECT c_member_id'.
661               ' FROM c_member_profile '.
662               ' INNER JOIN c_profile USING (c_profile_id) '.
663               ' WHERE name = ? ';
664        $params = array(
665            'PNE_POINT',
666        );
667        //開始ポイント
668        if (!empty($cond_list['s_point'])) {
669            $sql .= ' AND value >= ?';
670            $params[] = $cond_list['s_point'];
671        }
672        //終了ポイント
673        if (!empty($cond_list['e_point'])) {
674            $sql .= ' AND value <= ?';
675            $params[] = $cond_list['e_point'];
676        }
677
678        $point_ids = db_get_col($sql, $params);
679
680        //ポイントで絞り込み
681        $ids = array_intersect($ids, $point_ids);
682
683    }
684    // --- ポイントで絞り込み ここまで
685
686    // --- メールアドレスで絞り込み ここから
687    if (!empty($cond_list['is_pc_address']) || !empty($cond_list['is_ktai_address'])) {
688
689        $sql = 'SELECT c_member_id FROM c_member_secure WHERE true';
690
691        //PCアドレスの有無で絞る
692        if ($cond_list['is_pc_address'] == 1) {
693            $sql .= " AND pc_address <> '' ";
694        } else if ($cond_list['is_pc_address'] == 2) {
695            $sql .= " AND pc_address = '' ";
696        }
697
698        //携帯アドレスの有無で絞る
699        if ($cond_list['is_ktai_address'] == 1) {
700            $sql .= " AND ktai_address <> '' ";
701        } else if ($cond_list['is_ktai_address'] == 2) {
702            $sql .= " AND ktai_address = '' ";
703        }
704
705        $temp_ids = db_get_col($sql);
706
707        //メールアドレスで絞り込み
708        $ids = array_intersect($ids, $temp_ids);
709
710    }
711    // --- メールアドレスで絞り込み ここまで
712
713    //各プロフィールごとで絞り結果をマージする(ソートオーダーつき)
714    $_sql = 'SELECT name, form_type, c_profile_id FROM c_profile';
715    $profile = db_get_all($_sql);
716
717    if ( $profile ) {
718        foreach ($profile as $value) {
719            if(!empty($cond_list[$value['name']])
720           && ($value['form_type'] == 'radio' || $value['form_type'] == 'select')) {
721                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
722                $params = array($cond_list[$value['name']]);
723                $temp_ids = db_get_col($sql, $params);
724                $ids = array_intersect($ids, $temp_ids);
725            }
726            if($value['name'] == $type[0]) {
727                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ?';
728
729                if ($value['form_type'] == 'radio'
730                 || $value['form_type'] == 'select'
731                 || $value['form_type'] == 'checkbox'
732                ) {
733                    $sql .= ' ORDER BY c_profile_option_id';
734                } else {
735                    if ($value['name'] == "PNE_POINT") {
736                        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
737                            $sql .= ' ORDER BY cast(value as integer)';
738                        } else {
739                            $sql .= ' ORDER BY cast(value as signed)';
740                        }
741                    } else {
742                        $sql .= ' ORDER BY value';
743                    }
744                }
745
746                if ($type[1] == "2") {
747                    $sql .= ' DESC';
748                }
749                $params = array($value['c_profile_id']);
750                $temp_ids = db_get_col($sql, $params);
751                $ids = array_intersect($temp_ids, $ids);
752            }
753
754        }
755    }
756
757    return $ids;
758}
759
760/**
761 * メンバーリスト取得
762 * 誕生年+プロフィール(select,radioのみ)
763 */
764function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list, $order)
765{
766    $ids = _db_admin_c_member_id_list($cond_list, $order);
767    $total_num = count($ids);
768    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
769
770    $c_member_list = array();
771    foreach ($ids as $id) {
772        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
773    }
774
775    if ($total_num > 0) {
776        $pager = admin_make_pager($page, $page_size, $total_num);
777    } else {
778        $pager = array('page_size' => $page_size);
779    }
780
781    return $c_member_list;
782}
783
784function db_c_profile_option4c_profile_option_id($c_profile_option_id)
785{
786    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
787    $params = array(intval($c_profile_option_id));
788    return db_get_row($sql, $params);
789}
790
791/**
792 * メンバー絞込みパラメータ取得
793 */
794function validate_cond($requests)
795{
796    $cond_list = array();
797    //誕生年
798    if (!empty($requests['s_year'])) {
799        $cond_list['s_year'] = intval($requests['s_year']);
800    }
801    if (!empty($requests['e_year'])) {
802        $cond_list['e_year'] = intval($requests['e_year']);
803    }
804    //プロフィール
805    $profile_list = db_member_c_profile_list();
806
807    foreach ($profile_list as $key => $value) {
808        if (!empty($requests[$key])) {
809            $cond_list[$key] = intval($requests[$key]);
810        }
811    }
812
813    // 最終ログイン時間
814    if (!empty($requests['last_login'])) {
815        $cond_list['last_login'] = intval($requests['last_login']);
816    }
817
818    //PCアドレスの有無
819    if (!empty($requests['is_pc_address'])) {
820        $cond_list['is_pc_address'] = intval($requests['is_pc_address']);
821    }
822    //携帯アドレスの有無
823    if (!empty($requests['is_ktai_address'])) {
824        $cond_list['is_ktai_address'] = intval($requests['is_ktai_address']);
825    }
826
827    //ポイント
828    if (isset($requests['s_point']) && $requests['s_point'] !== '') {
829        $cond_list['s_point'] = intval($requests['s_point']);
830    }
831    if (isset($requests['e_point']) && $requests['e_point'] !== '') {
832        $cond_list['e_point'] = intval($requests['e_point']);
833    }
834
835    return $cond_list;
836}
837
838function do_admin_send_mail($c_member_id, $subject, $body)
839{
840    $c_member = db_member_c_member4c_member_id($c_member_id, true);
841
842    if ($c_member['secure']['pc_address']) {
843        $send_address = $c_member['secure']['pc_address'];
844    } else {
845        $send_address = $c_member['secure']['ktai_address'];
846    }
847
848    if (OPENPNE_MAIL_QUEUE) {
849        //メールキューに蓄積
850        put_mail_queue($send_address, $subject, $body);
851    } else {
852        t_send_email($send_address, $subject, $body);
853    }
854}
855
856//メッセージ受信メール(メール&メッセージキュー蓄積対応)
857function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
858{
859    //メッセージ
860    if (OPENPNE_MESSAGE_QUEUE) {
861        //メッセージキューに蓄積
862        db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
863        return true;
864    } else {
865        db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
866        do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
867        do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
868        return true;
869    }
870
871    return false;
872}
873
874//メッセージ受信メール(メールキュー蓄積対応)
875function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
876{
877    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
878    $pc_address = $c_member_to['secure']['pc_address'];
879    $is_receive_mail = $c_member_to['is_receive_mail'];
880
881    $params = array(
882        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
883        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
884    );
885    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
886}
887
888//◆メッセージ受信メール(携帯)
889function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from)
890{
891    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
892    $ktai_address = $c_member_to['secure']['ktai_address'];
893    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
894    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
895    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
896
897    $params = array(
898        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
899        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
900        'login_url' => $login_url,
901    );
902    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
903}
904
905function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
906{
907    $tpl_name .= '.tpl';
908    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
909        list($subject, $body) = $tpl;
910        if ($from) {
911            if (OPENPNE_MAIL_QUEUE) {
912                //メールキューに蓄積
913                put_mail_queue($address, $subject, $body, $force, $from);
914            } else {
915                t_send_email($address, $subject, $body, $force, $from);
916            }
917        } else {
918            if (OPENPNE_MAIL_QUEUE) {
919                //メールキューに蓄積
920                put_mail_queue($address, $subject, $body, $force);
921            } else {
922                t_send_email($address, $subject, $body, $force);
923            }
924        }
925        return true;
926    } else {
927        return false;
928    }
929}
930
931function db_access_analysis_c_admin_user_id4username($username)
932{
933    $sql = "SELECT c_admin_user_id FROM c_admin_user" .
934        " WHERE username = ?";
935    $params = array($username);
936    return db_get_one($sql,$params);
937}
938
939function p_access_analysis_month_access_analysis_month($ktai_flag)
940{
941    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
942        $sql = "SELECT to_char(r_datetime, 'YYYY-MM-01') as ym, count(*) as count" .
943                " FROM c_access_log " .
944                " where ktai_flag = ?" .
945                " group by ym";
946    } else {
947        $sql = "SELECT date_format(r_datetime, '%Y-%m-01') as ym, count(*) as count" .
948                " FROM c_access_log " .
949                " where ktai_flag = ?" .
950                " group by ym";
951    }
952
953    $params = array(intval($ktai_flag));           
954    $list = db_get_all($sql,$params);
955    return $list;
956}
957
958
959function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
960{
961    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
962        $sql = "SELECT substr(r_datetime,1,10) as ymd , count(*) as count" .
963            " FROM c_access_log " .
964            " where substr(r_datetime,1,7) = ?" .
965            " and ktai_flag = ? " .
966            " group by ymd";           
967    } else {
968        $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
969                " FROM c_access_log " .
970                " where left(r_datetime, 7) = ?" .
971                " and ktai_flag = ? " .
972                " group by ymd";
973    }
974    $params = array(intval(substr($ym,0,7)),intval($ktai_flag));
975    $list = db_get_all($sql,$params);
976   
977    $year = substr($ym, 0, 4);
978    $month = substr($ym, 5,2);
979   
980    $return = array();
981    $days_num = date("t", mktime (0,0,0,$month,1,$year));
982    for($i=1 ; $i<=$days_num; $i++) {
983        $date = substr($ym,0,8) . substr("00".$i, -2, 2);
984
985        $count = 0;
986        foreach($list as $value) {
987            if ($value['ymd'] == $date) {
988                $count = $value['count'];
989            }
990        }
991        $return[] = array("ymd"=>$date, "count"=>$count);
992    }
993    return $return;
994}
995
996function get_page_name($ktai_flag, $orderby=1)
997{
998    if ($orderby == 1) {
999        $orderby_str = " order by page_name asc";
1000    } elseif ($orderby == -1) {
1001        $orderby_str = " order by page_name desc";
1002    }
1003    $sql = "select distinct page_name from c_access_log " .
1004            " where ktai_flag = ? " .
1005            $orderby_str;
1006    $params = array(intval($ktai_flag));
1007    return db_get_col($sql,$params);
1008}
1009
1010function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
1011{
1012
1013    if ($orderby == 1) {
1014        $orderby_str = " order by page_name asc";
1015    } elseif ($orderby == -1) {
1016        $orderby_str = " order by page_name desc";
1017    } elseif ($orderby == 2) {
1018        $orderby_str = " order by count asc";
1019    } elseif ($orderby == -2) {
1020        $orderby_str = " order by count desc";
1021    }
1022    $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
1023    $params = array(intval($ktai_flag));
1024    if ($month_flag) {
1025        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1026            $sql .= " and substr(r_datetime,1,7) = ? ";
1027        } else {
1028            $sql .= " and left(r_datetime, 7) = ? ";
1029        }
1030
1031        array_push($params,substr($ymd,0,7));
1032    } else {
1033        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1034            $sql .= " and substr(r_datetime,1,10) = ? ";
1035        } else {
1036            $sql .= " and left(r_datetime,10) = ? ";
1037        }
1038        array_push($params,$ymd);
1039    }
1040    $sql .= " group by page_name ".    $orderby_str;
1041    $list = db_get_all($sql,$params);
1042
1043    $sum = 0;
1044    $return = array();
1045    if (abs($orderby) == 1) {
1046        $page_name = get_page_name($ktai_flag, $orderby);
1047        foreach($page_name as $name) {
1048            $count = 0;
1049            foreach($list as $value) {
1050                if ($value['page_name'] == $name) $count = $value['count'];
1051            }
1052
1053                list($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id) = get_is_show($name);
1054
1055            $return[] = array("page_name"=>$name, "count"=> $count, "is_target_c_member_id"=> $is_target_c_member_id, "is_target_c_commu_id"=> $is_target_c_commu_id, "is_target_c_topic_id"=> $is_target_c_topic_id, "is_target_c_diary_id"=> $is_target_c_diary_id, "is_c_member_id"=> $is_c_member_id);
1056            $sum += $count;
1057        }
1058    } elseif (abs($orderby) == 2) {
1059        $page_name = get_page_name($ktai_flag);
1060
1061        $t_page_name = $page_name;
1062
1063        //アクセスがゼロのページを取得する
1064        foreach($page_name as $key=>$name) {
1065            foreach($list as $value) {
1066                if ($value['page_name'] == $name) {
1067                    unset($page_name[$key]);//$listに含まれるページネームを削除
1068                }
1069            }
1070        }
1071
1072        foreach($page_name as $key=>$name) {
1073            $page_name[$key] = array("page_name"=>$name, "count"=>0);
1074        }
1075
1076        if ($orderby == 2) {
1077            $return = array_merge($page_name , $list);
1078        } elseif ($orderby == -2) {
1079            $return = array_merge($list, $page_name);
1080        }
1081        foreach($list as $value) {
1082            $sum += $value['count'];
1083        }
1084
1085        foreach($return as $value) {
1086
1087            list($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id) = get_is_show($value['page_name']);
1088
1089            $value['is_target_c_member_id'] = $is_target_c_member_id;
1090            $value['is_target_c_commu_id'] = $is_target_c_commu_id;
1091            $value['is_target_c_topic_id'] = $is_target_c_topic_id;
1092            $value['is_target_c_diary_id'] = $is_target_c_diary_id;
1093            $value['is_c_member_id'] = $is_c_member_id;
1094            $t_return[] = $value;
1095
1096        }
1097
1098        $return = $t_return;
1099
1100    }
1101   
1102    return array($return, $sum);
1103}
1104
1105
1106/*
1107 * target_commu
1108 *
1109 */
1110function p_access_analysis_target_commu_target_commu4ym_page_name
1111($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1112{
1113   
1114    $start = ($page - 1) * $page_size;
1115   
1116    if ($orderby == 1) {
1117        $orderby_str = " order by target_c_commu_id asc";
1118    } elseif ($orderby == -1) {
1119        $orderby_str = " order by target_c_commu_id desc";
1120    } elseif ($orderby == 2) {
1121        $orderby_str = " order by count asc";
1122    } elseif ($orderby == -2) {
1123        $orderby_str = " order by count desc";
1124    }
1125   
1126    $sql = "select target_c_commu_id , count(*) as count from c_access_log  where ktai_flag = ? ";
1127    $params = array(intval($ktai_flag));
1128    if ($month_flag) {
1129        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1130            $sql .= " and substr(r_datetime,1,7) = ? ";
1131        } else {
1132            $sql .= " and left(r_datetime, 7) = ? ";
1133        }
1134        array_push($params,substr($ymd,0,7));
1135    } else {
1136        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1137            $sql .= " and substr(r_datetime,1,10) = ? ";
1138        } else {
1139            $sql .= " and left(r_datetime,10) = ? ";
1140        }
1141        array_push($params,$ymd);
1142    }
1143    if ($page_name!="all") {
1144            $sql .= " and page_name = ? ";
1145            array_push($params,$page_name);
1146    }
1147    $sql .= " and target_c_commu_id <> 0 ";
1148
1149    $sql .= " group by target_c_commu_id " .$orderby_str;
1150    $list = db_get_all_limit($sql, $start, $page_size, $params);
1151
1152    $return = array();
1153    $sum = 0;
1154    foreach($list as $key => $value) {
1155        if ($value['target_c_commu_id']) {
1156            if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
1157                $return[] = array_merge($value, $c_commu);
1158                $sum += $value['count'];
1159            }
1160        }
1161    }
1162
1163    $sql =   "select count(*) from c_access_log  where ktai_flag = ? ";
1164    $params = array(intval($ktai_flag));
1165    if ($month_flag) {
1166        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1167            $sql .= " and substr(r_datetime,1,7) = ? ";
1168        } else {
1169            $sql .= " and left(r_datetime, 7) = ? ";
1170        }
1171        array_push($params,substr($ymd,0,7));
1172    } else {
1173        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1174            $sql .= " and substr(r_datetime,1,10) = ? ";
1175        } else {
1176            $sql .= " and left(r_datetime,10) = ? ";
1177        }
1178        array_push($params,$ymd);
1179    }
1180    if ($page_name!="all") {
1181        $sql .= " and page_name = ? ";
1182        array_push($params,$page_name);
1183    }
1184    $sql .= " and target_c_commu_id <> 0 ";
1185    $sql .= " group by target_c_commu_id ";
1186    $result = db_get_all($sql,$params);
1187    $total_num = count($result);
1188
1189    if ($total_num != 0) {
1190        $total_page_num =  ceil($total_num / $page_size);
1191        if ($page >= $total_page_num) {
1192            $next = false;
1193        }else{
1194            $next = true;
1195        }
1196        if ($page <= 1) {
1197            $prev = false;
1198        }else{
1199            $prev = true;
1200        }
1201    }
1202    $start_num = ($page - 1) * $page_size + 1 ;
1203    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1204
1205    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1206}
1207
1208function p_access_analysis_target_topic_target_topic4ym_page_name
1209($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1210{
1211    $start = ($page - 1) * $page_size;
1212   
1213    if ($orderby == 1) {
1214        $orderby_str = " order by target_c_commu_topic_id asc";
1215    } elseif ($orderby == -1) {
1216        $orderby_str = " order by target_c_commu_topic_id desc";
1217    } elseif ($orderby == 2) {
1218        $orderby_str = " order by count asc";
1219    } elseif ($orderby == -2) {
1220        $orderby_str = " order by count desc";
1221    }
1222    $where =" where ktai_flag = ? ";
1223    $params = array(intval($ktai_flag));
1224    if ($month_flag) {
1225        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1226            $where .= " and substr(r_datetime,1, 7) = ? ";
1227        } else {
1228            $where .= " and left(r_datetime, 7) = ? ";
1229        }
1230        array_push($params,substr($ymd,0,7));
1231    } else {
1232        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1233            $where .= " and substr(r_datetime,1,10) = ? ";
1234        } else {
1235            $where .= " and left(r_datetime,10) = ? ";
1236        }
1237        array_push($params,$ymd);
1238    }
1239    if ($page_name!="all") {
1240            $where .= " and page_name = ? ";
1241            array_push($params,$page_name);
1242    }
1243    $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
1244    $sql .= $where." group by target_c_commu_topic_id " .$orderby_str;
1245    $list = db_get_all_limit($sql, $start, $page_size, $params);
1246    $sql = "select count(*) from c_access_log ";
1247    $sql .= $where ." group by target_c_commu_topic_id ";
1248    $result = db_get_all($sql,$params);
1249    $total_num = count($result);
1250
1251    $return = array();
1252    $sum = 0;
1253    foreach ($list as $key => $value) {
1254        if ($value['target_c_commu_topic_id']) {
1255            if ($c_commu_topic = c_topic_detail_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
1256                $c_commu_topic['topic_name'] = $c_commu_topic['name'];
1257                $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
1258                $c_commu_topic['commu_name'] = $c_commu['name'];
1259                $return[] = array_merge($value, $c_commu_topic);
1260                $sum += $value['count'];
1261            }
1262        }
1263    }
1264
1265    if ($total_num != 0) {
1266        $total_page_num =  ceil($total_num / $page_size);
1267        if ($page >= $total_page_num) {
1268            $next = false;
1269        } else {
1270            $next = true;
1271        }
1272        if ($page <= 1) {
1273            $prev = false;
1274        } else {
1275            $prev = true;
1276        }
1277    }
1278    $start_num = ($page - 1) * $page_size + 1 ;
1279    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1280
1281    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1282}
1283
1284function p_access_analysis_target_diary_target_diary4ym_page_name
1285($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1286{
1287   
1288    $start = ($page - 1) * $page_size;
1289   
1290    if ($orderby == 1) {
1291        $orderby_str = " order by target_c_diary_id asc";
1292    } elseif ($orderby == -1) {
1293        $orderby_str = " order by target_c_diary_id desc";
1294    } elseif ($orderby == 2) {
1295        $orderby_str = " order by count asc";
1296    } elseif ($orderby == -2) {
1297        $orderby_str = " order by count desc";
1298    }
1299   
1300    $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
1301    $params = array(intval($ktai_flag));
1302    if ($month_flag) {
1303        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1304            $sql .= " and substr(r_datetime,1,7) = ? ";
1305        } else {
1306            $sql .= " and left(r_datetime, 7) = ? ";
1307        }
1308        array_push($params,substr($ymd,0,7));
1309    } else {
1310        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1311            $sql .= " and substr(r_datetime,1,10) = ? ";
1312        } else {
1313            $sql .= " and left(r_datetime,10) = ? ";
1314        }
1315        array_push($params,$ymd);
1316    }
1317    if ($page_name!="all") {
1318        $sql .= " and page_name = ? ";
1319        array_push($params,$page_name);
1320    }
1321    $sql .= " and target_c_diary_id <> 0 ";
1322    $sql .= " group by target_c_diary_id " . $orderby_str;
1323    $list = db_get_all_limit($sql, $start, $page_size, $params);
1324
1325    $return = array();
1326    $sum = 0;
1327    foreach ($list as $key => $value) {
1328        if ($value['target_c_diary_id']) {
1329            if ($c_diary = db_diary_get_c_diary4id($value['target_c_diary_id'])) {
1330                $c_member = db_member_c_member4c_member_id($c_diary['c_member_id']);
1331                $c_diary['nickname'] = $c_member['nickname'];
1332                $return[] = array_merge($value, $c_diary);
1333                $sum += $value['count'];
1334            }
1335        }
1336    }
1337
1338    $sql =   "select count(*) from c_access_log where ktai_flag = ? ";
1339    $params = array(intval($ktai_flag));
1340    if ($month_flag) {
1341        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1342            $sql .= " and substr(r_datetime,1,7) = ? ";
1343        } else {
1344            $sql .= " and left(r_datetime, 7) = ? ";
1345        }
1346        array_push($params,substr($ymd,0,7));
1347    } else {
1348        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1349            $sql .= " and substr(r_datetime,1,10) = ? ";
1350        } else {
1351            $sql .= " and left(r_datetime,10) = ? ";
1352        }
1353        array_push($params,$ymd);
1354    }
1355    $sql .= " and target_c_diary_id <> 0 ";
1356    $sql .= " group by target_c_diary_id ";
1357    $result = db_get_all($sql,$params);
1358    $total_num = count($result);
1359
1360    if ($total_num != 0) {
1361        $total_page_num =  ceil($total_num / $page_size);
1362        if ($page >= $total_page_num) {
1363            $next = false;
1364        }else{
1365            $next = true;
1366        }
1367        if ($page <= 1) {
1368            $prev = false;
1369        }else{
1370            $prev = true;
1371        }
1372    }
1373    $start_num = ($page - 1) * $page_size + 1 ;
1374    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1375
1376    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1377}
1378
1379function p_access_analysis_member_access_member4ym_page_name
1380($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1381{
1382    $start = ($page - 1) * $page_size;
1383   
1384    if ($orderby == 1) {
1385        $orderby_str = " order by c_member_id asc";
1386    } elseif ($orderby == -1) {
1387        $orderby_str = " order by c_member_id desc";
1388    } elseif ($orderby == 2) {
1389        $orderby_str = " order by count asc";
1390    } elseif ($orderby == -2) {
1391        $orderby_str = " order by count desc";
1392    }
1393   
1394    $where =" where ktai_flag = ? ";
1395    $params = array(intval($ktai_flag));
1396    if ($month_flag) {
1397        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1398            $where .= " and substr(r_datetime,1,7) = ? ";
1399        } else {
1400            $where .= " and left(r_datetime, 7) = ? ";
1401        }
1402        array_push($params,substr($ymd,0,7));
1403    } else {
1404        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1405            $where .= " and substr(r_datetime,1,10) = ? ";
1406        } else {
1407            $where .= " and left(r_datetime,10) = ? ";
1408        }
1409        array_push($params,$ymd);
1410    }
1411    if ($page_name!="all") {
1412        $where .= " and page_name = ? ";
1413        array_push($params,$page_name);
1414    }
1415
1416    $sql = "select c_member_id , count(*) as count from c_access_log";
1417    $sql .= $where." group by c_member_id $orderby_str";
1418    $list = db_get_all_limit($sql, $start, $page_size, $params);
1419    $sql = "select count(*) from c_access_log ";
1420    $sql .=    $where ." group by c_member_id ";
1421    $result = db_get_all($sql,$params);
1422    $total_num = count($result);
1423
1424    $return = array();
1425    $sum = 0;
1426    foreach($list as $key => $value) {
1427        if ($value['c_member_id']) {
1428            if ($c_member = _db_c_member4c_member_id($value['c_member_id'])) {
1429                $return[] = array_merge($value, $c_member);
1430                $sum += $value['count'];
1431            }
1432        }
1433    }
1434
1435
1436    if ($total_num != 0) {
1437        $total_page_num =  ceil($total_num / $page_size);
1438        if ($page >= $total_page_num) {
1439            $next = false;
1440        }else{
1441            $next = true;
1442        }
1443        if ($page <= 1) {
1444            $prev = false;
1445        }else{
1446            $prev = true;
1447        }
1448    }
1449    $start_num = ($page - 1) * $page_size + 1 ;
1450    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1451    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1452}
1453
1454function p_access_analysis_target_member_access_member4ym_page_name
1455($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1456{
1457    $start = ($page - 1) * $page_size;
1458   
1459    if ($orderby == 1) {
1460        $orderby_str = " order by target_c_member_id asc";
1461    } elseif ($orderby == -1) {
1462        $orderby_str = " order by target_c_member_id desc";
1463    } elseif ($orderby == 2) {
1464        $orderby_str = " order by count asc";
1465    } elseif ($orderby == -2) {
1466        $orderby_str = " order by count desc";
1467    }
1468    $where =" where ktai_flag = ? ";
1469    $params = array(intval($ktai_flag));
1470    if ($month_flag) {
1471        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1472            $where .= " and substr(r_datetime,1,7) = ? ";
1473        } else {
1474            $where .= " and left(r_datetime, 7) = ? ";
1475        }
1476        array_push($params,substr($ymd,0,7));
1477    } else {
1478        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1479            $where .= " and substr(r_datetime,1,10) = ? ";
1480        } else {
1481            $where .= " and left(r_datetime,10) = ? ";
1482        }
1483        array_push($params,$ymd);
1484    }
1485    if ($page_name != "all") {
1486        $where .= " and page_name = ? ";
1487        array_push($params,$page_name);
1488    }
1489    $sql = "select target_c_member_id , count(*) as count from c_access_log ";
1490    $sql .= $where;
1491    $sql .= " AND target_c_member_id <> 0 ";
1492    $sql .= " group by target_c_member_id " . $orderby_str;
1493
1494    $list = db_get_all_limit($sql, $start, $page_size, $params);
1495
1496    $return = array();
1497    $sum = 0;
1498    foreach($list as $key => $value) {
1499        if ($value['target_c_member_id']) {
1500            if ($c_member = db_member_c_member4c_member_id($value['target_c_member_id'])) {
1501                $return[] = array_merge($value, $c_member);
1502                $sum += $value['count'];
1503            }
1504        }
1505    }
1506
1507    $where =" where ktai_flag = ? ";
1508    $params = array(intval($ktai_flag));
1509    if ($month_flag) {
1510        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1511            $where .= " and substr(r_datetime,1,7) = ? ";
1512        } else {
1513            $where .= " and left(r_datetime, 7) = ? ";
1514        }
1515        array_push($params,substr($ymd,0,7));
1516    } else {
1517        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1518            $where .= " and substr(r_datetime,1,10) = ? ";
1519        } else {
1520            $where .= " and left(r_datetime,10) = ? ";
1521        }
1522        array_push($params,$ymd);
1523    }
1524    if ($page_name != "all") {
1525        $where .= " and page_name = ? ";
1526        array_push($params,$page_name);
1527    }
1528    $sql = "select count(*) from c_access_log " ;
1529    $sql .= $where;
1530    $sql .= " AND target_c_member_id <> 0 ";
1531    $sql .= " group by target_c_member_id ";
1532   
1533    $result = db_get_all($sql,$params);
1534    $total_num = count($result);
1535
1536    if ($total_num != 0) {
1537        $total_page_num =  ceil($total_num / $page_size);
1538        if ($page >= $total_page_num) {
1539            $next = false;
1540        } else {
1541            $next = true;
1542        }
1543        if ($page <= 1) {
1544            $prev = false;
1545        } else {
1546            $prev = true;
1547        }
1548    }
1549    $start_num = ($page - 1) * $page_size + 1 ;
1550    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1551
1552    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1553}
1554
1555function get_is_show($name)
1556{
1557
1558    $is_target_c_member_id = 0;
1559    $is_target_c_commu_id  = 0;
1560    $is_target_c_topic_id  = 0;
1561    $is_target_c_diary_id  = 0;
1562    $is_c_member_id        = 1;
1563
1564
1565    //必要のない詳細ボタンを消す
1566    $list = explode("_", $name);
1567    $is_c_member_id = 1;
1568
1569    if (strpos($list[0], 'f') !== false) {
1570        $is_target_c_member_id = 1;
1571    }
1572    if (strpos($list[0], 'c') !== false) {
1573        $is_target_c_commu_id = 1;
1574    }
1575
1576    if (strpos($name, 'topic') !== false || strpos($name, 'event') !== false) {
1577        $is_target_c_topic_id = 1;
1578    }
1579    if (strpos($name, 'diary') !== false) {
1580        $is_target_c_diary_id = 1;
1581    }
1582
1583
1584    return array($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id);
1585
1586}
1587
1588/**
1589
1590カラムごとに条件を指定して絞ったメンバーの一覧を返す
1591
1592[引数]
1593適時追加していく
1594
1595$s_access_date    最終ログイン時刻 開始年月日
1596$e_access_date    最終ログイン時刻 終了年月日
1597
1598[返り値]
1599c_member_list
1600
1601*/
1602function p_member_edit_c_member_list($page_size, $page, $s_access_date='', $e_access_date='')
1603{
1604    $page = intval($page);
1605    $page_size = intval($page_size);
1606
1607    $where = " WHERE true ";
1608
1609    //指定された条件で絞っていく
1610    if ($s_access_date != "") {
1611        $where = $where . " and access_date >= ?";
1612        $params = array($s_access_date);
1613    }
1614
1615    if ($e_access_date != "") {
1616        $where = $where . " and access_date < ?";
1617        $params = array($e_access_date);
1618    }
1619
1620    $select = "SELECT * FROM c_member";
1621    $order = " order by c_member_id";
1622    $sql = $select . $where . $order;
1623    if ($page_size > 0) {
1624        $list = db_get_all_page($sql, $page, $page_size, $params);
1625    } else {
1626        $list = db_get_all($sql, $params);
1627    }
1628   
1629    $sql = "select count(*) from c_member".$where;
1630
1631    $total_num = db_get_one($sql, $params);
1632   
1633    if ($total_num != 0 && $page_size != 0) {
1634        $total_page_num =  ceil($total_num / $page_size);
1635        if ($page >= $total_page_num) {
1636            $next = false;
1637        } else {
1638            $next = true;
1639        }
1640        if ($page <= 1) {
1641            $prev = false;
1642        } else {
1643            $prev = true;
1644        }
1645    }
1646
1647    return array($list , $prev , $next, $total_num);
1648}
1649
1650function _db_c_member4c_member_id($c_member_id)
1651{
1652    $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
1653        $params = array(intval($c_member_id));
1654    return db_get_row($sql,$params);
1655}
1656
1657/**
1658 * 男と女の人数を取得
1659 */
1660function get_analysis_sex()
1661{
1662    $sql = "select count(*) from c_member where sex = '男'";
1663    $analysis_sex['male'] = get_one4db($sql);
1664    $sql = "select count(*) from c_member where sex = '女'";
1665    $analysis_sex['female'] = get_one4db($sql);
1666   
1667    return $analysis_sex;
1668   
1669}
1670
1671/**
1672 * 世代の人数を取得
1673 */
1674function get_analysis_generation()
1675{
1676    $analysis_generation = array(
1677            '0~9' => 0,
1678            '10~19' => 0,
1679            '20~29' => 0,
1680            '30~39' => 0,
1681            '40~49' => 0,
1682            '50~59' => 0,
1683            '60~69' => 0,
1684            '70~79' => 0,
1685            '80~' =>0
1686    );
1687   
1688    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1689        $sql = "SELECT ((date_part('year', now()) - birth_year)- " .
1690            "cast(substring(CURRENT_DATE,'.....$')<(to_char(birth_month, '00') || '-' || to_char(birth_day, '00')) as int)) " .
1691            "AS age FROM c_member WHERE birth_year <> 0;";
1692    } else {
1693        $today = getdate();
1694        $mmdd = $today['mon'] * 100 + $today['mday'];
1695        $sql = 'SELECT ' . $today['year'] . ' - birth_year'
1696             . ' - (' . $mmdd . ' < (birth_month * 100 + birth_day))'
1697             . ' AS age FROM c_member WHERE birth_year <> 0';
1698    }
1699    $lst = db_get_all($sql);
1700
1701    $temp = array_keys($analysis_generation);
1702    foreach($lst as $value) {
1703        $key = (int)($value['age'] / 10);
1704        if ($key > count($analysis_generation)-1) {
1705            $analysis_generation[$temp[count($analysis_generation)-1]]++;
1706        } else {
1707            $analysis_generation[$temp[$key]]++;
1708        }
1709    }
1710
1711    return $analysis_generation;
1712   
1713}
1714
1715/**
1716 * 地域別の人数を取得
1717 */
1718function get_analysis_region()
1719{
1720    $pref = p_regist_prof_c_profile_pref_list4null();
1721    $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
1722    $lst = get_array_list4db($sql);
1723
1724    foreach($pref as $value) {
1725        $analysis_region[$value] = 0;   
1726    }
1727
1728    foreach ($lst as $value) {
1729        if ($value['pref_id'] == 0) {
1730            $analysis_region['その他']++;
1731        } else {
1732            $analysis_region[$pref[$value['pref_id']]]++;
1733        }
1734    }
1735
1736    return $analysis_region;
1737   
1738}
1739
1740function get_analysis_date_month($year = "", $month = "")
1741{
1742    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1743        $sql = "select to_char(r_date,'YYYY-MM') from c_member order by r_date";
1744    } else {
1745        $sql = "select date_format(r_date,'%Y-%m') from c_member order by r_date";
1746    }
1747    $start_date = db_get_one($sql);
1748
1749    $i = 0;
1750    list($y, $m) = split("-",$start_date);
1751    do{
1752        $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
1753        $analysis_date_month[$date] = 0;
1754    }while($date < date("Y-m"));   
1755   
1756    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1757        $sql = "select to_char(r_date,'YYYY-MM') as d from c_member";
1758    } else {
1759        $sql = "select date_format(r_date,'%Y-%m') as d from c_member";
1760    }
1761    $lst = db_get_all($sql);
1762    foreach ($lst as $value) {
1763        $analysis_date_month[$value['d']]++;
1764    }
1765    return $analysis_date_month;
1766}
1767
1768function get_analysis_date_day_d($date="")
1769{
1770    if ($date == "") {
1771       $date = date("Y-m-d");
1772    }
1773    return $date;
1774}
1775
1776
1777function get_analysis_date_day($date="")
1778{
1779    if ($date == "") {
1780        $date = date("Y-m");
1781    }
1782    //一ヶ月の日数
1783    $day_num = date("t");
1784
1785    for($i=1 ; $i<=$day_num; $i++) {
1786        //一桁の数を二桁にする
1787        if ($i < 10) {
1788            $i = "0".$i;
1789        }
1790        $analysis_date_day[$i] = 0;
1791    }
1792
1793    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1794        $sql = "select to_char(r_date,'DD') as d from c_member where to_char(r_date,'YYYY-MM') = ?";
1795    } else {
1796        $sql = "select date_format(r_date,'%d') as d from c_member where date_format(r_date,'%Y-%m') = ?";
1797    }
1798    $params = array($date);
1799    $lst = db_get_all($sql,$params);
1800
1801    foreach($lst as $value) {
1802        $analysis_date_day[$value['d']]++;
1803    }
1804   
1805    return $analysis_date_day;
1806}
1807
1808function p_access_analysis_select_profile_list()
1809{
1810    $sql = "SELECT * " .
1811            " FROM c_profile " .
1812            " where form_type = 'select' ";
1813           
1814    $list = db_get_all($sql);
1815    return $list;
1816}
1817
1818/**
1819 * 指定されたIDのプロフィールの人数別一覧を作成
1820 */
1821function get_analysis_profile($c_profile_id)
1822{
1823    $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
1824        " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
1825        " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
1826    $params = array(intval($c_profile_id));
1827    $analysis_profile = db_get_all($sql,$params);
1828   
1829    return $analysis_profile;
1830}
1831
1832function get_analysis_count_profile_all($c_profile_id)
1833{
1834    $sql = "select count(*) as count from c_member_profile " .
1835        " WHERE c_profile_id = ? ";
1836    $params = array(intval($c_profile_id));
1837    $analysis_profile = db_get_one($sql,$params);
1838   
1839    return $analysis_profile;
1840}
1841
1842function analysis_profile4c_profile_id($c_profile_id)
1843{
1844    $sql = "SELECT * FROM c_profile" .
1845            " WHERE c_profile_id = ? ";
1846    $params = array(intval($c_profile_id));
1847    $profile = db_get_row($sql,$params);
1848   
1849    return $profile;
1850}
1851
1852function monitor_diary_list($keyword, $page_size, $page)
1853{
1854    $page = intval($page);
1855    $page_size = intval($page_size);
1856   
1857    $where = " WHERE true";
1858
1859    if ($keyword) {
1860        //全角空白を半角に統一
1861        $keyword = str_replace(" ", " ", $keyword);
1862        $keyword_list = explode(" ", $keyword);
1863           
1864        for($i=0;$i < count($keyword_list);$i++) {
1865            $keyword = check_search_word( $keyword_list[$i] );
1866               
1867            $where .= " AND (c_diary.subject LIKE ?";
1868            $where .= " OR c_diary.body LIKE ? )";
1869            $params[]="%$keyword%";
1870            $params[]="%$keyword%";
1871        }
1872    }
1873   
1874    $select = "SELECT c_diary.*";
1875    $from = " FROM c_diary";
1876    $order = " ORDER BY r_datetime DESC";
1877   
1878    $sql = $select . $from . $where . $order;
1879    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1880    foreach ($list as $key => $value) {
1881        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1882        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1883    }
1884   
1885    $sql = 
1886        "SELECT COUNT(*) "
1887        . $from
1888        . $where ;
1889    $total_num = db_get_one($sql, $params);
1890   
1891    $total_page_num =  ceil($total_num / $page_size);
1892    $next = ($page < $total_page_num);
1893    $prev = ($page > 1);
1894   
1895    return array($list , $prev , $next, $total_num, $total_page_num); 
1896}
1897
1898function monitor_diary_list4c_diary_id($c_diary_id, $page_size, $page)
1899{
1900    $page = intval($page);
1901    $page_size = intval($page_size);
1902   
1903    $where = " WHERE c_diary_id = ? ";
1904    $params[] = intval($c_diary_id);
1905   
1906    $select = "SELECT c_diary.*";
1907    $from = " FROM c_diary";
1908    $order = " ORDER BY r_datetime DESC";
1909   
1910    $sql = $select . $from . $where . $order;
1911    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1912    foreach ($list as $key => $value) {
1913        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1914        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1915    }
1916   
1917    $sql = 
1918        "SELECT COUNT(*) "
1919        . $from
1920        . $where ;
1921    $total_num = db_get_one($sql, $params);
1922   
1923    $total_page_num =  ceil($total_num / $page_size);
1924    $next = ($page < $total_page_num);
1925    $prev = ($page > 1);
1926   
1927    return array($list , $prev , $next, $total_num, $total_page_num); 
1928}
1929
1930function monitor_diary_comment_list($keyword, $page_size, $page)
1931{
1932    $page = intval($page);
1933    $page_size = intval($page_size);
1934   
1935    $where = " WHERE true ";
1936
1937    if ($keyword) {
1938        //全角空白を半角に統一
1939        $keyword = str_replace(" ", " ", $keyword);
1940        $keyword_list = explode(" ", $keyword);
1941           
1942        for($i=0;$i < count($keyword_list);$i++) {
1943            $keyword = check_search_word( $keyword_list[$i] );
1944               
1945            $where .= " AND (c_diary_comment.body LIKE ?)";
1946            $params[] = "%$keyword%";
1947        }
1948    }
1949   
1950    $select = "SELECT c_diary_comment.*, c_diary.subject";
1951    $from = " FROM c_diary_comment"
1952        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
1953    $order = " ORDER BY r_datetime desc";
1954   
1955    $sql = $select . $from . $where . $order;
1956    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1957    foreach ($list as $key => $value) {
1958        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1959        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1960    }
1961   
1962    $sql = 
1963        "SELECT COUNT(*) "
1964        . $from
1965        . $where ;
1966    $total_num = db_get_one($sql, $params);
1967   
1968    $total_page_num =  ceil($total_num / $page_size);
1969    $next = ($page < $total_page_num);
1970    $prev = ($page > 1);
1971   
1972    return array($list , $prev , $next, $total_num, $total_page_num); 
1973}
1974
1975function monitor_diary_comment_list4c_diary_comment_id($c_diary_comment_id, $page_size, $page)
1976{
1977    $page = intval($page);
1978    $page_size = intval($page_size);
1979
1980    $where = " WHERE c_diary_comment.c_diary_comment_id = ? ";
1981    $params[] = intval($c_diary_comment_id);
1982   
1983    $select = "SELECT c_diary_comment.*, c_diary.subject";
1984    $from = " FROM c_diary_comment"
1985        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
1986    $order = " ORDER BY r_datetime desc";
1987   
1988    $sql = $select . $from . $where . $order;
1989    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1990   
1991    foreach ($list as $key => $value) {
1992        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1993        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1994    }
1995   
1996    $sql = 
1997        "SELECT COUNT(*) "
1998        . $from
1999        . $where ;
2000    $total_num = db_get_one($sql, $params);
2001   
2002    $total_page_num =  ceil($total_num / $page_size);
2003    $next = ($page < $total_page_num);
2004    $prev = ($page > 1);
2005   
2006    return array($list , $prev , $next, $total_num, $total_page_num); 
2007}
2008
2009function monitor_commu_list($keyword, $page_size, $page)
2010{
2011    $page = intval($page);
2012    $page_size = intval($page_size);
2013   
2014    $where = " WHERE true ";
2015
2016    if ($keyword) {
2017        $keyword = str_replace("?@", " ", $keyword);
2018        $keyword_list = explode(" ", $keyword);
2019           
2020        for($i=0;$i < count($keyword_list);$i++) {
2021            $keyword = check_search_word( $keyword_list[$i] );
2022               
2023            $where .= " AND ((name LIKE ? )";
2024            $where .= " OR (info LIKE ? ))";
2025            $params[]="%$keyword%";
2026            $params[]="%$keyword%";
2027        }
2028    }
2029   
2030    $select = "SELECT * ";
2031    $from = " FROM c_commu";
2032    $order = " ORDER BY r_datetime DESC";
2033   
2034    $sql = $select . $from . $where . $order;
2035   
2036    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2037   
2038    foreach ($list as $key => $value) {
2039        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);; 
2040    }
2041   
2042    $sql = 
2043        "SELECT COUNT(*) "
2044        . $from
2045        . $where ;
2046    $total_num = db_get_one($sql, $params);
2047   
2048    $total_page_num =  ceil($total_num / $page_size);
2049    $next = ($page < $total_page_num);
2050    $prev = ($page > 1);
2051   
2052    return array($list , $prev , $next, $total_num, $total_page_num); 
2053}
2054
2055function monitor_commu_list4c_commu_id($c_commu_id, $page_size, $page)
2056{
2057    $page = intval($page);
2058    $page_size = intval($page_size);
2059   
2060    $where = " WHERE c_commu_id = ? ";
2061    $params[] = intval($c_commu_id);
2062   
2063    $select = "SELECT * ";
2064    $from = " FROM c_commu";
2065    $order = " ORDER BY r_datetime DESC";
2066   
2067    $sql = $select . $from . $where . $order;
2068   
2069    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2070   
2071    foreach ($list as $key => $value) {
2072        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);; 
2073    }
2074   
2075    $sql = 
2076        "SELECT COUNT(*) "
2077        . $from
2078        . $where ;
2079    $total_num = db_get_one($sql, $params);
2080   
2081    $total_page_num =  ceil($total_num / $page_size);
2082    $next = ($page < $total_page_num);
2083    $prev = ($page > 1);
2084   
2085    return array($list , $prev , $next, $total_num, $total_page_num); 
2086}
2087
2088function monitor_topic_comment_list($keyword, $page_size, $page)
2089{
2090    $page = intval($page);
2091    $page_size = intval($page_size);
2092   
2093    $where = " WHERE ctc.number <> 0  ";
2094
2095    if ($keyword) {
2096        $keyword = str_replace("?@", " ", $keyword);
2097        $keyword_list = explode(" ", $keyword);
2098           
2099        for($i=0;$i < count($keyword_list);$i++) {
2100            $keyword = check_search_word( $keyword_list[$i] );
2101               
2102            $where .= " AND (ctc.body LIKE ? )";
2103            $params[]="%$keyword%";
2104        }
2105    }
2106   
2107    $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name,m.nickname";
2108    $from = " FROM c_commu_topic_comment as ctc"
2109            ." LEFT JOIN c_member as m ON ctc.c_member_id = m.c_member_id "
2110            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
2111            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
2112    $order = " ORDER BY r_datetime desc";
2113   
2114    $sql = $select . $from . $where . $order;
2115   
2116    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2117   
2118    foreach ($list as $key => $value) {
2119        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
2120    }
2121   
2122    $sql = 
2123        "SELECT COUNT(*) "
2124        . $from
2125        . $where ;
2126    $total_num = db_get_one($sql, $params);
2127   
2128    $total_page_num =  ceil($total_num / $page_size);
2129    $next = ($page < $total_page_num);
2130    $prev = ($page > 1);
2131   
2132    return array($list , $prev , $next, $total_num, $total_page_num); 
2133}
2134
2135function monitor_topic_comment_list4c_commu_topic_comment_id($c_commu_topic_comment_id, $page_size, $page)
2136{
2137    $page = intval($page);
2138    $page_size = intval($page_size);
2139   
2140    $where = " WHERE ctc.number <> 0 AND ctc.c_commu_topic_comment_id = ? ";
2141    $params[] = intval($c_commu_topic_comment_id);
2142   
2143    $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name,m.nickname";
2144    $from = " FROM c_commu_topic_comment as ctc"
2145            ." LEFT JOIN c_member as m ON ctc.c_member_id = m.c_member_id "
2146            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
2147            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
2148    $order = " ORDER BY r_datetime desc";
2149   
2150    $sql = $select . $from . $where . $order;
2151   
2152    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2153   
2154    foreach ($list as $key => $value) {
2155        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
2156    }
2157   
2158    $sql = 
2159        "SELECT COUNT(*) "
2160        . $from
2161        . $where ;
2162    $total_num = db_get_one($sql, $params);
2163   
2164    $total_page_num =  ceil($total_num / $page_size);
2165    $next = ($page < $total_page_num);
2166    $prev = ($page > 1);
2167   
2168    return array($list , $prev , $next, $total_num, $total_page_num); 
2169}
2170
2171function monitor_topic_list($keyword, $page_size, $page)
2172{
2173    $page = intval($page);
2174    $page_size = intval($page_size);
2175   
2176    $where = " where true ";
2177
2178    if ($keyword) {
2179        $keyword = str_replace("?@", " ", $keyword);
2180        $keyword_list = explode(" ", $keyword);
2181           
2182        for($i=0;$i < count($keyword_list);$i++) {
2183            $keyword = check_search_word( $keyword_list[$i] );
2184               
2185            $where .= " AND (ctc.body like ? ";
2186            $where .= " OR ct.name like ? ";
2187            $where .= " OR c.name like ? ) ";
2188            $params[]="%$keyword%";
2189            $params[]="%$keyword%";
2190            $params[]="%$keyword%";
2191        }
2192    }
2193   
2194    $select = "SELECT ct.*," .
2195            "ct.name as topic_name,c.name as commu_name," .
2196            "m.nickname,ctc.body as body," .
2197            "ctc.image_filename1 as image_filename1,ctc.image_filename2 as image_filename2,ctc.image_filename3 as image_filename3," .
2198            "ctc.filename as filename,f.original_filename as original_filename";
2199   
2200    $from = " FROM c_commu_topic as ct"
2201            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
2202            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
2203            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)"
2204            ." LEFT JOIN c_file as f ON f.filename = ctc.filename "
2205            ;
2206   
2207    $order = " ORDER BY r_datetime desc";
2208   
2209    $sql = $select . $from . $where . $order;
2210   
2211    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2212   
2213    foreach ($list as $key => $value) {
2214        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
2215    }
2216   
2217    $sql = 
2218        "SELECT COUNT(*) "
2219        . $from
2220        . $where ;
2221    $total_num = db_get_one($sql, $params);
2222   
2223    $total_page_num =  ceil($total_num / $page_size);
2224    $next = ($page < $total_page_num);
2225    $prev = ($page > 1);
2226   
2227    return array($list , $prev , $next, $total_num, $total_page_num); 
2228}
2229
2230function monitor_topic_list4target_c_commu_topic_id($c_commu_topic_id, $page_size, $page)
2231{
2232    $page = intval($page);
2233    $page_size = intval($page_size);
2234   
2235    $where = " where ct.c_commu_topic_id = ? ";
2236    $params[] = intval($c_commu_topic_id);
2237   
2238    $select = "SELECT ct.*," .
2239            "ct.name as topic_name,c.name as commu_name," .
2240            "m.nickname,ctc.body as body," .
2241            "ctc.image_filename1 as image_filename1,ctc.image_filename2 as image_filename2,ctc.image_filename3 as image_filename3," .
2242            "ctc.filename as filename,f.original_filename as original_filename";
2243   
2244    $from = " FROM c_commu_topic as ct"
2245            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
2246            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
2247            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)"
2248            ." LEFT JOIN c_file as f ON f.filename = ctc.filename "
2249            ;
2250    $order = " ORDER BY r_datetime desc";
2251   
2252    $sql = $select . $from . $where . $order;
2253   
2254    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2255   
2256    foreach ($list as $key => $value) {
2257        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
2258    }
2259   
2260    $sql = 
2261        "SELECT count(*) "
2262        . $from
2263        . $where ;
2264    $total_num = db_get_one($sql, $params);
2265   
2266    $total_page_num =  ceil($total_num / $page_size);
2267    $next = ($page < $total_page_num);
2268    $prev = ($page > 1);
2269   
2270    return array($list , $prev , $next, $total_num, $total_page_num); 
2271}
2272
2273function monitor_review_list($keyword, $page_size, $page)
2274{
2275    $page = intval($page);
2276    $page_size = intval($page_size);
2277   
2278    $where = " where true ";
2279
2280    if ($keyword) {
2281        //全角空白を半角に統一
2282        $keyword = str_replace(" ", " ", $keyword);
2283        $keyword_list = explode(" ", $keyword);
2284           
2285        for($i=0;$i < count($keyword_list);$i++) {
2286            $keyword = check_search_word( $keyword_list[$i] );
2287               
2288            $where .= " and c_review_comment.body like ? ";
2289            $params[]="%$keyword%";
2290        }
2291    }
2292   
2293    $select = "SELECT c_review_comment.*";
2294    $from = " FROM c_review_comment";
2295    $order = " ORDER BY r_datetime desc";
2296   
2297    $sql = $select . $from . $where . $order;
2298    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2299   
2300
2301    foreach ($list as $key => $value) {
2302        $list[$key]['c_member'] = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
2303        $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
2304    }
2305
2306    $sql = 
2307        "SELECT COUNT(*) "
2308        . $from
2309        . $where ;
2310    $total_num = db_get_one($sql,$params);
2311   
2312    $total_page_num =  ceil($total_num / $page_size);
2313    $next = ($page < $total_page_num);
2314    $prev = ($page > 1);
2315   
2316    return array($list , $prev , $next, $total_num, $total_page_num); 
2317}
2318
2319function monitor_review_list4c_review_id($c_review_comment_id, $page_size, $page)
2320{
2321    $page = intval($page);
2322    $page_size = intval($page_size);
2323   
2324    $where = " WHERE c_review_comment_id = ? ";
2325    $params[] = intval($c_review_comment_id);
2326   
2327    $select = "SELECT c_review_comment.*";
2328    $from = " FROM c_review_comment";
2329    $order = " ORDER BY r_datetime desc";
2330   
2331    $sql = $select . $from . $where . $order;
2332    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2333   
2334    foreach ($list as $key => $value) {
2335        $list[$key]['c_member'] = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
2336        $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
2337    }
2338
2339    $sql = 
2340        "SELECT COUNT(*) "
2341        . $from
2342        . $where ;
2343    $total_num = db_get_one($sql, $params);
2344   
2345    $total_page_num =  ceil($total_num / $page_size);
2346    $next = ($page < $total_page_num);
2347    $prev = ($page > 1);
2348   
2349    return array($list , $prev , $next, $total_num, $total_page_num); 
2350}
2351
2352function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
2353{
2354    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
2355        " WHERE c_commu_topic_id = ? AND number > 0";
2356    $params = array($c_commu_topic_id);
2357    return db_get_one($sql, $params);
2358}
2359//フリーページを追加
2360function db_admin_insert_c_free_page($title, $body, $auth, $type)
2361{
2362    $data = array(
2363        'title' => strval($title),
2364        'body'  => strval($body),
2365        'auth'  => intval($auth),
2366        'type'  => strval($type),
2367    );
2368    return db_insert('c_free_page', $data);
2369}
2370
2371//フリーページを編集
2372function db_admin_update_c_free_page($c_free_page_id, $title, $body, $auth, $type)
2373{
2374    $data = array(
2375        'title' => strval($title),
2376        'body'  => strval($body),
2377        'auth'  => intval($auth),
2378        'type'  => strval($type),
2379    );
2380    $where = array('c_free_page_id' => intval($c_free_page_id));
2381    return db_update('c_free_page', $data, $where);
2382}
2383
2384//フリーページを削除
2385function db_admin_delete_c_free_page($c_free_page_id)
2386{
2387    $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
2388    $params = array(intval($c_free_page_id));
2389    return db_query($sql, $params);
2390}
2391
2392
2393//フリーページを全て取得(ページャー付き)
2394function db_admin_get_c_free_page_all($page, $page_size, &$pager)
2395{
2396    $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
2397
2398    $list = db_get_all_page($sql, $page, $page_size, $params);
2399
2400    $sql = 'SELECT count(*) FROM c_free_page';
2401    $total_num = db_get_one($sql, $params);
2402    $pager = admin_make_pager($page, $page_size, $total_num);
2403
2404    return $list;
2405}
2406
2407//フリーページを一つ取得
2408function db_admin_get_c_free_page_one($c_free_page_id)
2409{
2410    $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
2411    $params = array(intval($c_free_page_id));
2412
2413    return db_get_row($sql, $params);
2414}
2415
2416//APIを全て取得(ページャー付き)
2417function db_admin_get_c_api_all($page, $page_size, &$pager)
2418{
2419    $sql = 'SELECT * FROM c_api ORDER BY c_api_id';
2420
2421    $list = db_get_all_page($sql, $page, $page_size, $params);
2422
2423    $sql = 'SELECT count(*) FROM c_api';
2424    $total_num = db_get_one($sql, $params);
2425    $pager = admin_make_pager($page, $page_size, $total_num);
2426
2427    return $list;
2428}
2429
2430//APIを編集
2431function db_admin_update_c_api($c_api_id, $name, $ip)
2432{
2433    $data = array(
2434        'name' => strval($name),
2435        'ip' => strval($ip),
2436    );
2437    $where = array('c_api_id' => intval($c_api_id));
2438    return db_update('c_api', $data, $where);
2439}
2440
2441//CMDを追加
2442function db_admin_insert_c_cmd($name, $permit)
2443{
2444    $data = array(
2445        'name' => strval($name),
2446        'permit' => intval($permit),
2447    );
2448    return db_insert('c_cmd', $data);
2449}
2450
2451//CMDを編集
2452function db_admin_update_c_cmd($c_cmd_id, $name, $permit)
2453{
2454    $data = array(
2455        'name' => strval($name),
2456        'permit' => intval($permit),
2457    );
2458    $where = array('c_cmd_id' => intval($c_cmd_id));
2459    return db_update('c_cmd', $data, $where);
2460}
2461
2462//CMDを削除
2463function db_admin_delete_c_cmd($c_cmd_id)
2464{
2465    $sql = "DELETE FROM c_cmd WHERE c_cmd_id = ?";
2466    $params = array(intval($c_cmd_id));
2467    return db_query($sql, $params);
2468}
2469
2470
2471//CMDを全て取得
2472function db_admin_get_c_cmd_all()
2473{
2474    $sql = 'SELECT * FROM c_cmd ORDER BY c_cmd_id';
2475    return db_get_all($sql);
2476}
2477
2478//CMDを一つ取得
2479function db_admin_get_c_cmd_one($c_cmd_id)
2480{
2481    $sql = 'SELECT * FROM c_cmd WHERE c_cmd_id = ?';
2482    $params = array(intval($c_cmd_id));
2483
2484    return db_get_row($sql, $params);
2485}
2486
2487/***
2488 * 指定した名称のCMD(小窓)の設定を取得する
2489 *
2490 * @param names array 設定を取得したい小窓名(複数指定)
2491 * @return array 小窓の設定リスト
2492 */
2493function db_admin_get_c_cmd_list4name($names)
2494{
2495    $sql = 'SELECT * FROM c_cmd WHERE name IN ("' . implode('","', $names) . '")';
2496    return db_get_all($sql);
2497}
2498
2499/**
2500 * 祝日のリストを取得
2501 */
2502function db_admin_c_holiday_list()
2503{
2504    $sql = 'SELECT * FROM c_holiday ORDER BY month';
2505    $holiday_list = db_get_all($sql);
2506
2507    return $holiday_list;
2508}
2509
2510/**
2511 * 休日を追加
2512 */
2513function db_admin_insert_c_holiday($name, $month, $day)
2514{
2515    $data = array(
2516        'name' => strval($name),
2517        'month' => intval($month),
2518        'day' => intval($day),
2519    );
2520    return db_insert('c_holiday', $data);
2521}
2522
2523/**
2524 * 休日を編集
2525 */
2526function db_admin_update_c_holiday($c_holiday_id, $name, $month, $day)
2527{
2528    $data = array(
2529        'name' => strval($name),
2530        'month' => intval($month),
2531        'day' => intval($day),
2532    );
2533    $where = array('c_holiday_id' => intval($c_holiday_id));
2534    return db_update('c_holiday', $data, $where);
2535}
2536
2537/**
2538 * 休日を削除
2539 */
2540function db_admin_delete_c_holiday($c_holiday_id)
2541{
2542    $sql = "DELETE FROM c_holiday WHERE c_holiday_id = ?";
2543    $params = array(intval($c_holiday_id));
2544    return db_query($sql, $params);
2545}
2546
2547//メッセージ送信履歴を挿入
2548function db_admin_insert_c_send_messages_history($subject, $body, $send_num, $type, $c_member_ids)
2549{
2550
2551    //配列を文字列に変換
2552    if($c_member_ids) {
2553        $c_member_ids = implode("-",$c_member_ids);
2554    } else {
2555        return;
2556    }
2557
2558    $data = array(
2559        'subject'       => strval($subject),
2560        'body'          => strval($body),
2561        'send_num'      => intval($send_num),
2562        'type'          => strval($type),
2563        'c_member_ids'  => strval($c_member_ids),
2564        'r_datetime'    => db_now()
2565    );
2566
2567    return db_insert('c_send_messages_history', $data);
2568
2569}
2570
2571//メッセージ送信履歴を全て取得(ページャー付き)
2572function db_admin_get_c_send_messages_history_all($page, $page_size, &$pager)
2573{
2574
2575    $sql = 'SELECT * FROM c_send_messages_history ORDER BY c_send_messages_history_id DESC';
2576
2577    $history_list = db_get_all_page($sql, $page, $page_size, $params);
2578
2579    foreach ($history_list as $key => $history) {
2580        $history_list[$key]['c_member_ids'] = explode("-", $history['c_member_ids']);
2581    }
2582
2583    $sql = 'SELECT count(*) FROM c_send_messages_history';
2584    $total_num = db_get_one($sql, $params);
2585    $pager = admin_make_pager($page, $page_size, $total_num);
2586
2587    return $history_list;
2588}
2589
2590//メッセージ送信履歴を一つ取得
2591function db_admin_get_c_send_messages_history($c_send_messages_history_id)
2592{
2593
2594    $sql = 'SELECT * FROM c_send_messages_history WHERE c_send_messages_history_id = ?';
2595
2596    $params = array(intval($c_send_messages_history_id));
2597
2598    $history = db_get_row($sql, $params);
2599
2600    $history['c_member_ids'] = explode("-", $history['c_member_ids']);
2601
2602    return $history;
2603}
2604
2605//メッセージをキューに入れる
2606function db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body)
2607{
2608    $data = array(
2609        'c_member_id_from' => intval($c_member_id_from),
2610        'c_member_id_to'   => intval($c_member_id_to),
2611        'subject'          => strval($subject),
2612        'body'             => strval($body),
2613    );
2614    return db_insert('c_message_queue', $data);
2615}
2616
2617//メッセージをキューから削除
2618function db_admin_delete_c_message_queue($c_message_queue_id)
2619{
2620
2621    $sql = "DELETE FROM c_message_queue WHERE c_message_queue_id = ?";
2622    $params = array(intval($c_message_queue_id));
2623
2624    return db_query($sql, $params);
2625}
2626
2627//ランクを追加
2628function db_admin_insert_c_rank($name, $image_filename, $point)
2629{
2630    $data = array(
2631        'name' => strval($name),
2632        'image_filename' => strval($image_filename),
2633        'point' => intval($point),
2634    );
2635    return db_insert('c_rank', $data);
2636}
2637
2638//ランクを編集
2639function db_admin_update_c_rank($c_rank_id, $name, $image_filename, $point)
2640{
2641    $data = array(
2642        'name' => strval($name),
2643        'image_filename' => strval($image_filename),
2644        'point' => intval($point),
2645    );
2646    $where = array('c_rank_id' => intval($c_rank_id));
2647    return db_update('c_rank', $data, $where);
2648}
2649
2650//ランクを削除
2651function db_admin_delete_c_rank($c_rank_id)
2652{
2653    $sql = "DELETE FROM c_rank WHERE c_rank_id = ?";
2654    $params = array(intval($c_rank_id));
2655    return db_query($sql, $params);
2656}
2657
2658//ランクを全て取得
2659function db_admin_get_c_rank_all()
2660{
2661    $sql = 'SELECT * FROM c_rank ORDER BY point';
2662    return db_get_all($sql);
2663}
2664
2665//ランクを一つ取得
2666function db_admin_get_c_rank_one($c_rank_id)
2667{
2668    $sql = 'SELECT * FROM c_rank WHERE c_rank_id = ?';
2669    $params = array(intval($c_rank_id));
2670
2671    return db_get_row($sql, $params);
2672}
2673
2674//アクションを編集
2675function db_admin_update_c_action($c_action_id, $point)
2676{
2677    $data = array(
2678        'point' => intval($point),
2679    );
2680    $where = array('c_action_id' => intval($c_action_id));
2681    return db_update('c_action', $data, $where);
2682}
2683
2684//アクションを全て取得
2685function db_admin_get_c_action_all()
2686{
2687    $sql = 'SELECT * FROM c_action ORDER BY c_action_id';
2688    return db_get_all($sql);
2689}
2690
2691/**
2692 * 指定したファイル名のファイルへのリンクを削除する
2693 *
2694 * @param string $filename
2695 */
2696function db_admin_delete_c_file_link4filename($filename)
2697{
2698    // c_commu_topic_comment
2699    $tbl = 'c_commu_topic_comment';
2700    _db_admin_empty_image_filename($tbl, $filename, 'filename');
2701}
2702
2703function db_admin_get_c_member_profile_pnepoint($c_member_id)
2704{
2705    $sql = 'SELECT c_profile_id FROM c_profile where name = \'PNE_POINT\'';
2706    $c_profile_id =  db_get_one($sql);
2707    $params = array($c_member_id , $c_profile_id);
2708    $sql = 'SELECT * FROM c_member_profile where c_member_id = ? and c_profile_id = ?';
2709    $c_member_profile = db_get_row($sql, $params);
2710
2711    return  $c_member_profile;
2712}
2713
2714function db_admin_c_blacklist_list($page, $page_size)
2715{
2716    $sql = 'SELECT b.c_blacklist_id,ms.c_member_id,b.info,m.nickname,b.easy_access_id ' .
2717            ' FROM c_blacklist AS b' .
2718            ' LEFT JOIN c_member_secure AS ms ON b.easy_access_id = ms.easy_access_id'.
2719            ' LEFT JOIN c_member AS m ON ms.c_member_id = m.c_member_id' .
2720            ' ORDER BY b.c_blacklist_id ASC';
2721    $list = db_get_all_page($sql, $page, $page_size);
2722   
2723    $sql = 'SELECT count(*) FROM c_blacklist';
2724    $total_num = db_get_one($sql);
2725   
2726    $total_page_num = ceil($total_num / $page_size);
2727    $next = ($page < $total_page_num);
2728    $prev = ($page > 1);
2729   
2730    return array($list, $prev, $next, $total_num, $total_page_num);
2731}
2732
2733function db_admin_insert_c_blacklist($easy_access_id, $info)
2734{
2735    $data = array(
2736        'easy_access_id' => $easy_access_id,
2737        'info' => (string)$info,
2738    );
2739    return db_insert('c_blacklist', $data);
2740}
2741
2742function db_admin_update_c_blacklist($c_blacklist_id, $easy_access_id, $info)
2743{
2744    $data = array(
2745        'easy_access_id' => $easy_access_id,
2746        'info' => (string)$info,
2747    );
2748    $where = array('c_blacklist_id' => $c_blacklist_id);
2749    return db_update('c_blacklist', $data, $where);
2750}
2751
2752function db_admin_delete_c_blacklist($c_blacklist_id)
2753{
2754    $sql = 'DELETE FROM c_blacklist WHERE c_blacklist_id = ?';
2755    $params = array(intval($c_blacklist_id));
2756    db_query($sql, $params);
2757}
2758
2759function db_admin_c_blacklist($c_blacklist_id)
2760{
2761    $sql = 'SELECT b.c_blacklist_id,ms.c_member_id,b.info,m.nickname,b.easy_access_id ' .
2762            ' FROM c_blacklist AS b' .
2763            ' LEFT JOIN c_member_secure AS ms ON b.easy_access_id = ms.easy_access_id'.
2764            ' LEFT JOIN c_member AS m ON ms.c_member_id = m.c_member_id' .
2765            ' WHERE b.c_blacklist_id = ? '
2766            ;
2767    $param = array($c_blacklist_id);
2768    $blacklist = db_get_row($sql, $param);
2769   
2770    return $blacklist;
2771}
2772
2773?>
Note: See TracBrowser for help on using the repository browser.