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

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

Last change on this file since 3695 was 3695, checked in by ogawa, 15 years ago

監視機能関連の内部関数の修正

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