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

source: OpenPNE/branches/stable-2.8.x/webapp/modules/admin/lib/db_admin.php @ 3694

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

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

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