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

source: OpenPNE/branches/prj/postgres/2_8_1/webapp/modules/admin/lib/db_admin.php @ 3402

Last change on this file since 3402 was 3402, checked in by ToshihiroK, 14 years ago

postgres対応

File size: 69.0 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' => (int)$is_required,
188        'public_flag_edit' => (int)$public_flag_edit,
189        'public_flag_default' => $public_flag_default,
190        'form_type' => $form_type,
191        'sort_order' => (int)$sort_order,
192        'disp_regist' => (int)$disp_regist,
193        'disp_config' => (int)$disp_config,
194        'disp_search' => (int)$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' => (int)$is_required,
230        'public_flag_edit' => (int)$public_flag_edit,
231        'public_flag_default' => $public_flag_default,
232        'form_type' => $form_type,
233        'sort_order' => intval($sort_order),
234        'disp_regist' => (int)$disp_regist,
235        'disp_config' => (int)$disp_config,
236        'disp_search' => (int)$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
770    $total_num = count($ids);
771    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
772
773    $c_member_list = array();
774    foreach ($ids as $id) {
775        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
776    }
777
778    if ($total_num > 0) {
779        $pager = admin_make_pager($page, $page_size, $total_num);
780    } else {
781        $pager = array('page_size' => $page_size);
782    }
783
784    return $c_member_list;
785}
786
787function db_c_profile_option4c_profile_option_id($c_profile_option_id)
788{
789    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
790    $params = array(intval($c_profile_option_id));
791    return db_get_row($sql, $params);
792}
793
794/**
795 * メンバー絞込みパラメータ取得
796 */
797function validate_cond($requests)
798{
799    $cond_list = array();
800    //誕生年
801    if (!empty($requests['s_year'])) {
802        $cond_list['s_year'] = intval($requests['s_year']);
803    }
804    if (!empty($requests['e_year'])) {
805        $cond_list['e_year'] = intval($requests['e_year']);
806    }
807    //プロフィール
808    $profile_list = db_member_c_profile_list();
809
810    foreach ($profile_list as $key => $value) {
811        if (!empty($requests[$key])) {
812            $cond_list[$key] = intval($requests[$key]);
813        }
814    }
815
816    // 最終ログイン時間
817    if (!empty($requests['last_login'])) {
818        $cond_list['last_login'] = intval($requests['last_login']);
819    }
820
821    //PCアドレスの有無
822    if (!empty($requests['is_pc_address'])) {
823        $cond_list['is_pc_address'] = intval($requests['is_pc_address']);
824    }
825    //携帯アドレスの有無
826    if (!empty($requests['is_ktai_address'])) {
827        $cond_list['is_ktai_address'] = intval($requests['is_ktai_address']);
828    }
829
830    //ポイント
831    if (isset($requests['s_point']) && $requests['s_point'] !== '') {
832        $cond_list['s_point'] = intval($requests['s_point']);
833    }
834    if (isset($requests['e_point']) && $requests['e_point'] !== '') {
835        $cond_list['e_point'] = intval($requests['e_point']);
836    }
837
838    return $cond_list;
839}
840
841function do_admin_send_mail($c_member_id, $subject, $body)
842{
843    $c_member = db_member_c_member4c_member_id($c_member_id, true);
844
845    if ($c_member['secure']['pc_address']) {
846        $send_address = $c_member['secure']['pc_address'];
847    } else {
848        $send_address = $c_member['secure']['ktai_address'];
849    }
850
851    if (OPENPNE_MAIL_QUEUE) {
852        //メールキューに蓄積
853        put_mail_queue($send_address, $subject, $body);
854    } else {
855        t_send_email($send_address, $subject, $body);
856    }
857}
858
859//メッセージ受信メール(メール&メッセージキュー蓄積対応)
860function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
861{
862    //メッセージ
863    if (OPENPNE_MESSAGE_QUEUE) {
864        //メッセージキューに蓄積
865        db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
866        return true;
867    } else {
868        db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
869        do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
870        do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
871        return true;
872    }
873
874    return false;
875}
876
877//メッセージ受信メール(メールキュー蓄積対応)
878function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
879{
880    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
881    $pc_address = $c_member_to['secure']['pc_address'];
882    $is_receive_mail = $c_member_to['is_receive_mail'];
883
884    $params = array(
885        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
886        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
887    );
888    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
889}
890
891//◆メッセージ受信メール(携帯)
892function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from)
893{
894    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
895    $ktai_address = $c_member_to['secure']['ktai_address'];
896    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
897    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
898    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
899
900    $params = array(
901        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
902        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
903        'login_url' => $login_url,
904    );
905    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
906}
907
908function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
909{
910    $tpl_name .= '.tpl';
911    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
912        list($subject, $body) = $tpl;
913        if ($from) {
914            if (OPENPNE_MAIL_QUEUE) {
915                //メールキューに蓄積
916                put_mail_queue($address, $subject, $body, $force, $from);
917            } else {
918                t_send_email($address, $subject, $body, $force, $from);
919            }
920        } else {
921            if (OPENPNE_MAIL_QUEUE) {
922                //メールキューに蓄積
923                put_mail_queue($address, $subject, $body, $force);
924            } else {
925                t_send_email($address, $subject, $body, $force);
926            }
927        }
928        return true;
929    } else {
930        return false;
931    }
932}
933
934function db_access_analysis_c_admin_user_id4username($username)
935{
936    $sql = "SELECT c_admin_user_id FROM c_admin_user" .
937        " WHERE username = ?";
938    $params = array($username);
939    return db_get_one($sql,$params);
940}
941
942function p_access_analysis_month_access_analysis_month($ktai_flag)
943{
944    $sql = "SELECT substr(r_datetime, 1, 7) || '-01' as ym, count(*) as count" .
945            " FROM c_access_log " .
946            " where ktai_flag = ?" .
947            " group by ym";
948   
949    $params = array(intval($ktai_flag));           
950    $list = db_get_all($sql,$params);
951    return $list;
952}
953
954
955function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
956{
957    $sql = "SELECT substr(r_datetime,1,10) as ymd , count(*) as count" .
958        " FROM c_access_log " .
959        " where substr(r_datetime,1,7) = ?" .
960        " and ktai_flag = ? " .
961        " group by ymd";           
962
963    $params = array(substr($ym,0,7),intval($ktai_flag));
964    $list = db_get_all($sql,$params);
965   
966    $year = substr($ym, 0, 4);
967    $month = substr($ym, 5,2);
968   
969    $return = array();
970    $days_num = date("t", mktime (0,0,0,$month,1,$year));
971    for($i=1 ; $i<=$days_num; $i++) {
972        $date = substr($ym,0,8) . substr("00".$i, -2, 2);
973
974        $count = 0;
975        foreach($list as $value) {
976            if ($value['ymd'] == $date) {
977                $count = $value['count'];
978            }
979        }
980        $return[] = array("ymd"=>$date, "count"=>$count);
981    }
982    return $return;
983}
984
985function get_page_name($ktai_flag, $orderby=1)
986{
987    if ($orderby == 1) {
988        $orderby_str = " order by page_name asc";
989    } elseif ($orderby == -1) {
990        $orderby_str = " order by page_name desc";
991    }
992    $sql = "select distinct page_name from c_access_log " .
993            " where ktai_flag = ? " .
994            $orderby_str;
995    $params = array(intval($ktai_flag));
996    return db_get_col($sql,$params);
997}
998
999function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
1000{
1001
1002    if ($orderby == 1) {
1003        $orderby_str = " order by page_name asc";
1004    } elseif ($orderby == -1) {
1005        $orderby_str = " order by page_name desc";
1006    } elseif ($orderby == 2) {
1007        $orderby_str = " order by count asc";
1008    } elseif ($orderby == -2) {
1009        $orderby_str = " order by count desc";
1010    }
1011    $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
1012    $params = array(intval($ktai_flag));
1013    if ($month_flag) {
1014        $sql .= " and substr(r_datetime,1,7) = ? ";
1015        array_push($params,substr($ymd,0,7));
1016    } else {
1017        $sql .= " and substr(r_datetime,1,10) = ? ";
1018        array_push($params,$ymd);
1019    }
1020    $sql .= " group by page_name ".    $orderby_str;
1021    $list = db_get_all($sql,$params);
1022
1023    $sum = 0;
1024    $return = array();
1025    if (abs($orderby) == 1) {
1026        $page_name = get_page_name($ktai_flag, $orderby);
1027        foreach($page_name as $name) {
1028            $count = 0;
1029            foreach($list as $value) {
1030                if ($value['page_name'] == $name) $count = $value['count'];
1031            }
1032
1033                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);
1034
1035            $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);
1036            $sum += $count;
1037        }
1038    } elseif (abs($orderby) == 2) {
1039        $page_name = get_page_name($ktai_flag);
1040
1041        $t_page_name = $page_name;
1042
1043        //アクセスがゼロのページを取得する
1044        foreach($page_name as $key=>$name) {
1045            foreach($list as $value) {
1046                if ($value['page_name'] == $name) {
1047                    unset($page_name[$key]);//$listに含まれるページネームを削除
1048                }
1049            }
1050        }
1051
1052        foreach($page_name as $key=>$name) {
1053            $page_name[$key] = array("page_name"=>$name, "count"=>0);
1054        }
1055
1056        if ($orderby == 2) {
1057            $return = array_merge($page_name , $list);
1058        } elseif ($orderby == -2) {
1059            $return = array_merge($list, $page_name);
1060        }
1061        foreach($list as $value) {
1062            $sum += $value['count'];
1063        }
1064
1065        foreach($return as $value) {
1066
1067            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']);
1068
1069            $value['is_target_c_member_id'] = $is_target_c_member_id;
1070            $value['is_target_c_commu_id'] = $is_target_c_commu_id;
1071            $value['is_target_c_topic_id'] = $is_target_c_topic_id;
1072            $value['is_target_c_diary_id'] = $is_target_c_diary_id;
1073            $value['is_c_member_id'] = $is_c_member_id;
1074            $t_return[] = $value;
1075
1076        }
1077
1078        $return = $t_return;
1079
1080    }
1081   
1082    return array($return, $sum);
1083}
1084
1085
1086/*
1087 * target_commu
1088 *
1089 */
1090function p_access_analysis_target_commu_target_commu4ym_page_name
1091($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1092{
1093   
1094    $start = ($page - 1) * $page_size;
1095   
1096    if ($orderby == 1) {
1097        $orderby_str = " order by target_c_commu_id asc";
1098    } elseif ($orderby == -1) {
1099        $orderby_str = " order by target_c_commu_id desc";
1100    } elseif ($orderby == 2) {
1101        $orderby_str = " order by count asc";
1102    } elseif ($orderby == -2) {
1103        $orderby_str = " order by count desc";
1104    }
1105   
1106    $sql = "select target_c_commu_id , count(*) as count from c_access_log  where ktai_flag = ? ";
1107    $params = array(intval($ktai_flag));
1108    if ($month_flag) {
1109        $sql .= " and substr(r_datetime,1,7) = ? ";
1110        array_push($params,substr($ymd,0,7));
1111    } else {
1112        $sql .= " and substr(r_datetime,1,10) = ? ";
1113        array_push($params,$ymd);
1114    }
1115    if ($page_name!="all") {
1116            $sql .= " and page_name = ? ";
1117            array_push($params,$page_name);
1118    }
1119    $sql .= " and target_c_commu_id <> 0 ";
1120    $sql .= " group by target_c_commu_id " .$orderby_str." offset $start limit $page_size";
1121    $list = db_get_all($sql,$params);
1122
1123    $return = array();
1124    $sum = 0;
1125    foreach($list as $key => $value) {
1126        if ($value['target_c_commu_id']) {
1127            if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
1128                $return[] = array_merge($value, $c_commu);
1129                $sum += $value['count'];
1130            }
1131        }
1132    }
1133
1134    $sql =   "select count(*) from c_access_log  where ktai_flag = ? ";
1135    $params = array(intval($ktai_flag));
1136    if ($month_flag) {
1137        $sql .= " and substr(r_datetime,1,7) = ? ";
1138        array_push($params,substr($ymd,0,7));
1139    } else {
1140        $sql .= " and substr(r_datetime,1,10) = ? ";
1141        array_push($params,$ymd);
1142    }
1143    if ($page_name!="all") {
1144        $sql .= " and page_name = ? ";
1145        array_push($params,$page_name);
1146    }
1147    $sql .= " and target_c_commu_id <> 0 ";
1148    $sql .= " group by target_c_commu_id ";
1149    $result = db_get_all($sql,$params);
1150    $total_num = count($result);
1151
1152    if ($total_num != 0) {
1153        $total_page_num =  ceil($total_num / $page_size);
1154        if ($page >= $total_page_num) {
1155            $next = false;
1156        }else{
1157            $next = true;
1158        }
1159        if ($page <= 1) {
1160            $prev = false;
1161        }else{
1162            $prev = true;
1163        }
1164    }
1165    $start_num = ($page - 1) * $page_size + 1 ;
1166    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1167
1168    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1169}
1170
1171function p_access_analysis_target_topic_target_topic4ym_page_name
1172($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1173{
1174    $start = ($page - 1) * $page_size;
1175   
1176    if ($orderby == 1) {
1177        $orderby_str = " order by target_c_commu_topic_id asc";
1178    } elseif ($orderby == -1) {
1179        $orderby_str = " order by target_c_commu_topic_id desc";
1180    } elseif ($orderby == 2) {
1181        $orderby_str = " order by count asc";
1182    } elseif ($orderby == -2) {
1183        $orderby_str = " order by count desc";
1184    }
1185    $where =" where ktai_flag = ? ";
1186    $params = array(intval($ktai_flag));
1187    if ($month_flag) {
1188        $where .= " and substr(r_datetime,1, 7) = ? ";
1189        array_push($params,substr($ymd,0,7));
1190    } else {
1191        $where .= " and substr(r_datetime,1,10) = ? ";
1192        array_push($params,$ymd);
1193    }
1194    if ($page_name!="all") {
1195            $where .= " and page_name = ? ";
1196            array_push($params,$page_name);
1197    }
1198    $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
1199    $sql .= $where." group by target_c_commu_topic_id " .$orderby_str." offset $start limit $page_size";
1200    $list = db_get_all($sql,$params);
1201    $sql = "select count(*) from c_access_log ";
1202    $sql .= $where ." group by target_c_commu_topic_id ";
1203    $result = db_get_all($sql,$params);
1204    $total_num = count($result);
1205
1206    $return = array();
1207    $sum = 0;
1208    foreach ($list as $key => $value) {
1209        if ($value['target_c_commu_topic_id']) {
1210            if ($c_commu_topic = c_topic_detail_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
1211                $c_commu_topic['topic_name'] = $c_commu_topic['name'];
1212                $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
1213                $c_commu_topic['commu_name'] = $c_commu['name'];
1214                $return[] = array_merge($value, $c_commu_topic);
1215                $sum += $value['count'];
1216            }
1217        }
1218    }
1219
1220    if ($total_num != 0) {
1221        $total_page_num =  ceil($total_num / $page_size);
1222        if ($page >= $total_page_num) {
1223            $next = false;
1224        } else {
1225            $next = true;
1226        }
1227        if ($page <= 1) {
1228            $prev = false;
1229        } else {
1230            $prev = true;
1231        }
1232    }
1233    $start_num = ($page - 1) * $page_size + 1 ;
1234    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1235
1236    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1237}
1238
1239function p_access_analysis_target_diary_target_diary4ym_page_name
1240($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1241{
1242   
1243    $start = ($page - 1) * $page_size;
1244   
1245    if ($orderby == 1) {
1246        $orderby_str = " order by target_c_diary_id asc";
1247    } elseif ($orderby == -1) {
1248        $orderby_str = " order by target_c_diary_id desc";
1249    } elseif ($orderby == 2) {
1250        $orderby_str = " order by count asc";
1251    } elseif ($orderby == -2) {
1252        $orderby_str = " order by count desc";
1253    }
1254   
1255    $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
1256    $params = array(intval($ktai_flag));
1257    if ($month_flag) {
1258        $sql .= " and substr(r_datetime,1,7) = ? ";
1259        array_push($params,substr($ymd,0,7));
1260    } else {
1261        $sql .= " and substr(r_datetime,1,10) = ? ";
1262        array_push($params,$ymd);
1263    }
1264    if ($page_name!="all") {
1265        $sql .= " and page_name = ? ";
1266        array_push($params,$page_name);
1267    }
1268    $sql .= " and target_c_diary_id <> 0 ";
1269    $sql .= " group by target_c_diary_id " . $orderby_str. " offset $start limit $page_size";
1270    $list = db_get_all($sql,$params);
1271
1272    $return = array();
1273    $sum = 0;
1274    foreach ($list as $key => $value) {
1275        if ($value['target_c_diary_id']) {
1276            if ($c_diary = db_diary_get_c_diary4id($value['target_c_diary_id'])) {
1277                $c_member = db_member_c_member4c_member_id($c_diary['c_member_id']);
1278                $c_diary['nickname'] = $c_member['nickname'];
1279                $return[] = array_merge($value, $c_diary);
1280                $sum += $value['count'];
1281            }
1282        }
1283    }
1284
1285    $sql =   "select count(*) from c_access_log where ktai_flag = ? ";
1286    $params = array(intval($ktai_flag));
1287    if ($month_flag) {
1288        $sql .= " and substr(r_datetime,1,7) = ? ";
1289        array_push($params,substr($ymd,0,7));
1290    } else {
1291        $sql .= " and substr(r_datetime,1,10) = ? ";
1292        array_push($params,$ymd);
1293    }
1294    $sql .= " and target_c_diary_id <> 0 ";
1295    $sql .= " group by target_c_diary_id ";
1296    $result = db_get_all($sql,$params);
1297    $total_num = count($result);
1298
1299    if ($total_num != 0) {
1300        $total_page_num =  ceil($total_num / $page_size);
1301        if ($page >= $total_page_num) {
1302            $next = false;
1303        }else{
1304            $next = true;
1305        }
1306        if ($page <= 1) {
1307            $prev = false;
1308        }else{
1309            $prev = true;
1310        }
1311    }
1312    $start_num = ($page - 1) * $page_size + 1 ;
1313    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1314
1315    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1316}
1317
1318function p_access_analysis_member_access_member4ym_page_name
1319($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1320{
1321    $start = ($page - 1) * $page_size;
1322   
1323    if ($orderby == 1) {
1324        $orderby_str = " order by c_member_id asc";
1325    } elseif ($orderby == -1) {
1326        $orderby_str = " order by c_member_id desc";
1327    } elseif ($orderby == 2) {
1328        $orderby_str = " order by count asc";
1329    } elseif ($orderby == -2) {
1330        $orderby_str = " order by count desc";
1331    }
1332   
1333    $where =" where ktai_flag = ? ";
1334    $params = array(intval($ktai_flag));
1335    if ($month_flag) {
1336        $where .= " and substr(r_datetime,1,7) = ? ";
1337        array_push($params,substr($ymd,0,7));
1338    } else {
1339        $where .= " and substr(r_datetime,1,10) = ? ";
1340        array_push($params,$ymd);
1341    }
1342    if ($page_name!="all") {
1343        $where .= " and page_name = ? ";
1344        array_push($params,$page_name);
1345    }
1346
1347    $sql = "select c_member_id , count(*) as count from c_access_log";
1348    $sql .= $where." group by c_member_id $orderby_str offset $start limit $page_size";
1349    $list = db_get_all($sql,$params);
1350    $sql = "select count(*) from c_access_log ";
1351    $sql .=    $where ." group by c_member_id ";
1352    $result = db_get_all($sql,$params);
1353    $total_num = count($result);
1354
1355    $return = array();
1356    $sum = 0;
1357    foreach($list as $key => $value) {
1358        if ($value['c_member_id']) {
1359            if ($c_member = _db_c_member4c_member_id($value['c_member_id'])) {
1360                $return[] = array_merge($value, $c_member);
1361                $sum += $value['count'];
1362            }
1363        }
1364    }
1365
1366
1367    if ($total_num != 0) {
1368        $total_page_num =  ceil($total_num / $page_size);
1369        if ($page >= $total_page_num) {
1370            $next = false;
1371        }else{
1372            $next = true;
1373        }
1374        if ($page <= 1) {
1375            $prev = false;
1376        }else{
1377            $prev = true;
1378        }
1379    }
1380    $start_num = ($page - 1) * $page_size + 1 ;
1381    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1382    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1383}
1384
1385function p_access_analysis_target_member_access_member4ym_page_name
1386($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1387{
1388    $start = ($page - 1) * $page_size;
1389   
1390    if ($orderby == 1) {
1391        $orderby_str = " order by target_c_member_id asc";
1392    } elseif ($orderby == -1) {
1393        $orderby_str = " order by target_c_member_id desc";
1394    } elseif ($orderby == 2) {
1395        $orderby_str = " order by count asc";
1396    } elseif ($orderby == -2) {
1397        $orderby_str = " order by count desc";
1398    }
1399    $where =" where ktai_flag = ? ";
1400    $params = array(intval($ktai_flag));
1401        if ($month_flag) {
1402            $where .= " and substr(r_datetime,1,7) = ? ";
1403            array_push($params,substr($ymd,0,7));
1404        } else {
1405            $where .= " and substr(r_datetime,1,10) = ? ";
1406            array_push($params,$ymd);
1407        }
1408        if ($page_name!="all") {
1409                $where .= " and page_name = ? ";
1410                array_push($params,$page_name);
1411        }
1412    $sql = "select target_c_member_id , count(*) as count from c_access_log ";
1413    $sql .= $where;
1414    $sql .= " AND target_c_member_id <> 0 ";
1415    $sql .= " group by target_c_member_id " . $orderby_str. " offset $start limit $page_size";
1416
1417    $list = db_get_all($sql,$params);
1418
1419    $return = array();
1420    $sum = 0;
1421    foreach($list as $key => $value) {
1422        if ($value['target_c_member_id']) {
1423            if ($c_member = db_member_c_member4c_member_id($value['target_c_member_id'])) {
1424                $return[] = array_merge($value, $c_member);
1425                $sum += $value['count'];
1426            }
1427        }
1428    }
1429
1430    $where =" where ktai_flag = ? ";
1431    $params = array(intval($ktai_flag));
1432        if ($month_flag) {
1433            $where .= " and substr(r_datetime,1, 7) = ? ";
1434            array_push($params,substr($ymd,0,7));
1435        } else {
1436            $where .= " and substr(r_datetime,1,10) = ? ";
1437            array_push($params,$ymd);
1438        }
1439        if ($page_name != "all") {
1440                $where .= " and page_name = ? ";
1441                array_push($params,$page_name);
1442        }
1443    $sql = "select count(*) from c_access_log " ;
1444    $sql .= $where;
1445    $sql .= " AND target_c_member_id <> 0 ";
1446    $sql .= " group by target_c_member_id ";
1447   
1448    $result = db_get_all($sql,$params);
1449    $total_num = count($result);
1450
1451    if ($total_num != 0) {
1452        $total_page_num =  ceil($total_num / $page_size);
1453        if ($page >= $total_page_num) {
1454            $next = false;
1455        } else {
1456            $next = true;
1457        }
1458        if ($page <= 1) {
1459            $prev = false;
1460        } else {
1461            $prev = true;
1462        }
1463    }
1464    $start_num = ($page - 1) * $page_size + 1 ;
1465    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1466
1467    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1468}
1469
1470function get_is_show($name)
1471{
1472
1473    $is_target_c_member_id = 0;
1474    $is_target_c_commu_id  = 0;
1475    $is_target_c_topic_id  = 0;
1476    $is_target_c_diary_id  = 0;
1477    $is_c_member_id        = 1;
1478
1479
1480    //必要のない詳細ボタンを消す
1481    $list = explode("_", $name);
1482    $is_c_member_id = 1;
1483
1484    if (strpos($list[0], 'f') !== false) {
1485        $is_target_c_member_id = 1;
1486    }
1487    if (strpos($list[0], 'c') !== false) {
1488        $is_target_c_commu_id = 1;
1489    }
1490
1491    if (strpos($name, 'topic') !== false || strpos($name, 'event') !== false) {
1492        $is_target_c_topic_id = 1;
1493    }
1494    if (strpos($name, 'diary') !== false) {
1495        $is_target_c_diary_id = 1;
1496    }
1497
1498
1499    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);
1500
1501}
1502
1503/**
1504
1505カラムごとに条件を指定して絞ったメンバーの一覧を返す
1506
1507[引数]
1508適時追加していく
1509
1510$s_access_date    最終ログイン時刻 開始年月日
1511$e_access_date    最終ログイン時刻 終了年月日
1512
1513[返り値]
1514c_member_list
1515
1516*/
1517function p_member_edit_c_member_list($page_size, $page,$s_access_date='', $e_access_date='')
1518{
1519
1520    $page = intval($page);
1521    $page_size = intval($page_size);
1522
1523    $limit = "";
1524
1525    //page_sizeが0の時は全て表示(pagerなし)
1526    if ($page_size != 0) {
1527        $limit = " OFFSET ".($page_size*($page-1))." LIMIT ".$page_size;
1528    }
1529    $where = " WHERE true ";
1530
1531    //指定された条件で絞っていく
1532    if ($s_access_date != "") {
1533        $where = $where . " and access_date >= ?";
1534        $params = array($s_access_date);
1535    }
1536
1537    if ($e_access_date != "") {
1538        $where = $where . " and access_date < ?";
1539        $params = array($e_access_date);
1540    }
1541
1542    $select = "SELECT * FROM c_member";
1543    $order = " order by c_member_id";
1544
1545    $sql = $select . $where . $order;
1546   
1547    $list = db_get_all_limit($sql, 0, $limit, $params);
1548   
1549    $sql = "select count(*) from c_member".$where;
1550
1551    $total_num = db_get_one($sql, $params);
1552   
1553    if ($total_num != 0 && $page_size != 0) {
1554        $total_page_num =  ceil($total_num / $page_size);
1555        if ($page >= $total_page_num) {
1556            $next = false;
1557        } else {
1558            $next = true;
1559        }
1560        if ($page <= 1) {
1561            $prev = false;
1562        } else {
1563            $prev = true;
1564        }
1565    }
1566
1567    return array($list , $prev , $next, $total_num);
1568}
1569
1570function _db_c_member4c_member_id($c_member_id)
1571{
1572    $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
1573        $params = array(intval($c_member_id));
1574    return db_get_row($sql,$params);
1575}
1576
1577/**
1578 * 男と女の人数を取得
1579 */
1580function get_analysis_sex()
1581{
1582    $sql = "select count(*) from c_member where sex = '男'";
1583    $analysis_sex['male'] = get_one4db($sql);
1584    $sql = "select count(*) from c_member where sex = '女'";
1585    $analysis_sex['female'] = get_one4db($sql);
1586   
1587    return $analysis_sex;
1588   
1589}
1590
1591/**
1592 * 世代の人数を取得
1593 */
1594function get_analysis_generation()
1595{
1596    $analysis_generation = array(
1597            '0~9' => 0,
1598            '10~19' => 0,
1599            '20~29' => 0,
1600            '30~39' => 0,
1601            '40~49' => 0,
1602            '50~59' => 0,
1603            '60~69' => 0,
1604            '70~79' => 0,
1605            '80~' =>0
1606    );
1607   
1608    $sql = "SELECT ((date_part('year', now()) - birth_year)- " .
1609        "cast(substring(CURRENT_DATE,'.....$')<(to_char(birth_month, '00') || '-' || to_char(birth_day, '00')) as int)) " .
1610        "AS age FROM c_member WHERE birth_year <> 0;";
1611
1612    $lst = db_get_all($sql);
1613    $temp = array_keys($analysis_generation);
1614    foreach($lst as $value) {
1615        $key = (int)($value['age'] / 10);
1616        if ($key > count($analysis_generation)-1) {
1617            $analysis_generation[$temp[count($analysis_generation)-1]]++;
1618        } else {
1619            $analysis_generation[$temp[$key]]++;
1620        }
1621    }
1622
1623    return $analysis_generation;
1624   
1625}
1626
1627/**
1628 * 地域別の人数を取得
1629 */
1630function get_analysis_region()
1631{
1632    $pref = p_regist_prof_c_profile_pref_list4null();
1633    $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
1634    $lst = get_array_list4db($sql);
1635
1636    foreach($pref as $value) {
1637        $analysis_region[$value] = 0;   
1638    }
1639
1640    foreach ($lst as $value) {
1641        if ($value['pref_id'] == 0) {
1642            $analysis_region['その他']++;
1643        } else {
1644            $analysis_region[$pref[$value['pref_id']]]++;
1645        }
1646    }
1647
1648    return $analysis_region;
1649   
1650}
1651
1652function get_analysis_date_month($year = "", $month = "")
1653{
1654    $sql = "select to_char(r_date,'YYYY-MM') from c_member order by r_date";
1655    $start_date = db_get_one($sql);
1656
1657    $i = 0;
1658    list($y, $m) = split("-",$start_date);
1659    do{
1660        $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
1661        $analysis_date_month[$date] = 0;
1662    }while($date < date("Y-m"));   
1663   
1664    $sql = "select to_char(r_date,'YYYY-MM') as d from c_member";
1665    $lst = db_get_all($sql);
1666    foreach ($lst as $value) {
1667        $analysis_date_month[$value['d']]++;
1668    }
1669    return $analysis_date_month;
1670}
1671
1672function get_analysis_date_day_d($date="")
1673{
1674    if ($date == "") {
1675       $date = date("Y-m-d");
1676    }
1677    return $date;
1678}
1679
1680
1681function get_analysis_date_day($date="")
1682{
1683    if ($date == "") {
1684        $date = date("Y-m");
1685    }
1686    //一ヶ月の日数
1687    $day_num = date("t");
1688
1689    for($i=1 ; $i<=$day_num; $i++) {
1690        //一桁の数を二桁にする
1691        if ($i < 10) {
1692            $i = "0".$i;
1693        }
1694        $analysis_date_day[$i] = 0;
1695    }
1696
1697    $sql = "select to_char(r_date,'DD') as d from c_member where to_char(r_date,'YYYY-MM') = ?";
1698   
1699    $params = array($date);
1700    $lst = db_get_all($sql,$params);
1701
1702    foreach($lst as $value) {
1703        $analysis_date_day[$value['d']]++;
1704    }
1705   
1706    return $analysis_date_day;
1707}
1708
1709function p_access_analysis_select_profile_list()
1710{
1711    $sql = "SELECT * " .
1712            " FROM c_profile " .
1713            " where form_type = 'select' ";
1714           
1715    $list = db_get_all($sql);
1716    return $list;
1717}
1718
1719/**
1720 * 指定されたIDのプロフィールの人数別一覧を作成
1721 */
1722function get_analysis_profile($c_profile_id)
1723{
1724    $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
1725        " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
1726        " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
1727    $params = array(intval($c_profile_id));
1728    $analysis_profile = db_get_all($sql,$params);
1729   
1730    return $analysis_profile;
1731}
1732
1733function get_analysis_count_profile_all($c_profile_id)
1734{
1735    $sql = "select count(*) as count from c_member_profile " .
1736        " WHERE c_profile_id = ? ";
1737    $params = array(intval($c_profile_id));
1738    $analysis_profile = db_get_one($sql,$params);
1739   
1740    return $analysis_profile;
1741}
1742
1743function analysis_profile4c_profile_id($c_profile_id)
1744{
1745    $sql = "SELECT * FROM c_profile" .
1746            " WHERE c_profile_id = ? ";
1747    $params = array(intval($c_profile_id));
1748    $profile = db_get_row($sql,$params);
1749   
1750    return $profile;
1751}
1752function monitor_diary_list($keyword,$page_size,$page)
1753{
1754
1755    $page = intval($page);
1756    $page_size = intval($page_size);
1757   
1758    $where = " where true ";
1759
1760    if ($keyword) {
1761        //全角空白を半角に統一
1762        $keyword = str_replace(" ", " ", $keyword);
1763        $keyword_list = explode(" ", $keyword);
1764           
1765        for($i=0;$i < count($keyword_list);$i++) {
1766            $keyword = check_search_word( $keyword_list[$i] );
1767               
1768            $where .= " and (c_diary.subject like ? ";
1769            $where .= " or c_diary.body like ? ) ";
1770            $params[]="%$keyword%";
1771            $params[]="%$keyword%";
1772        }
1773    }
1774   
1775    $select = " select c_diary.*";
1776    $from = " FROM c_diary";
1777    $order = " ORDER BY r_datetime desc";
1778   
1779    $sql = $select . $from . $where . $order;
1780    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1781    foreach ($list as $key => $value) {
1782        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1783        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1784    }
1785   
1786    $sql = 
1787        "SELECT count(*) "
1788        . $from
1789        . $where ;
1790    $total_num = db_get_one($sql,$params);
1791   
1792    $total_page_num =  ceil($total_num / $page_size);
1793    $next = ($page < $total_page_num);
1794    $prev = ($page > 1);
1795   
1796    return array($list , $prev , $next, $total_num,$total_page_num); 
1797}
1798
1799function monitor_diary_comment_list($keyword,$page_size,$page)
1800{
1801
1802    $page = intval($page);
1803    $page_size = intval($page_size);
1804   
1805    $where = " where true ";
1806
1807    if ($keyword) {
1808        //全角空白を半角に統一
1809        $keyword = str_replace(" ", " ", $keyword);
1810        $keyword_list = explode(" ", $keyword);
1811           
1812        for($i=0;$i < count($keyword_list);$i++) {
1813            $keyword = check_search_word( $keyword_list[$i] );
1814               
1815            $where .= " and (c_diary_comment.body like ? ) ";
1816            $params[]="%$keyword%";
1817        }
1818    }
1819   
1820    $select = " select c_diary_comment.*,c_diary.subject";
1821    $from = " FROM c_diary_comment"
1822        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
1823    $order = " ORDER BY r_datetime desc";
1824   
1825    $sql = $select . $from . $where . $order;
1826    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1827    foreach ($list as $key => $value) {
1828        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1829        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1830    }
1831   
1832    $sql = 
1833        "SELECT count(*) "
1834        . $from
1835        . $where ;
1836    $total_num = db_get_one($sql,$params);
1837   
1838    $total_page_num =  ceil($total_num / $page_size);
1839    $next = ($page < $total_page_num);
1840    $prev = ($page > 1);
1841   
1842    return array($list , $prev , $next, $total_num,$total_page_num); 
1843}
1844
1845
1846function monitor_topic_comment_list($keyword,$page_size,$page)
1847{
1848
1849    $page = intval($page);
1850    $page_size = intval($page_size);
1851   
1852    $where = " where true ";
1853
1854    if ($keyword) {
1855        $keyword = str_replace("?@", " ", $keyword);
1856        $keyword_list = explode(" ", $keyword);
1857           
1858        for($i=0;$i < count($keyword_list);$i++) {
1859            $keyword = check_search_word( $keyword_list[$i] );
1860               
1861            $where .= " AND (ctc.body like ? )";
1862            $params[]="%$keyword%";
1863        }
1864    }
1865   
1866    $select = " SELECT ctc.*,ct.name as topic_name,c.name as commu_name,m.nickname";
1867    $from = " FROM c_commu_topic_comment as ctc"
1868            ." LEFT JOIN c_member as m ON ctc.c_member_id = m.c_member_id "
1869            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
1870            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
1871    $order = " ORDER BY r_datetime desc";
1872   
1873    $sql = $select . $from . $where . $order;
1874   
1875    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1876   
1877    foreach ($list as $key => $value) {
1878        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1879    }
1880   
1881    $sql = 
1882        "SELECT count(*) "
1883        . $from
1884        . $where ;
1885    $total_num = db_get_one($sql,$params);
1886   
1887    $total_page_num =  ceil($total_num / $page_size);
1888    $next = ($page < $total_page_num);
1889    $prev = ($page > 1);
1890   
1891    return array($list , $prev , $next, $total_num,$total_page_num); 
1892}
1893
1894function monitor_topic_list($keyword,$page_size,$page)
1895{
1896    $page = intval($page);
1897    $page_size = intval($page_size);
1898   
1899    $where = " where true ";
1900
1901    if ($keyword) {
1902        $keyword = str_replace("?@", " ", $keyword);
1903        $keyword_list = explode(" ", $keyword);
1904           
1905        for($i=0;$i < count($keyword_list);$i++) {
1906            $keyword = check_search_word( $keyword_list[$i] );
1907               
1908            $where .= " AND (ctc.body like ? ";
1909            $where .= " OR ct.name like ? ";
1910            $where .= " OR c.name like ? ) ";
1911            $params[]="%$keyword%";
1912            $params[]="%$keyword%";
1913            $params[]="%$keyword%";
1914        }
1915    }
1916   
1917    $select = " SELECT ct.*,ct.name as topic_name,c.name as commu_name,m.nickname,ctc.body as body";
1918    $from = " FROM c_commu_topic as ct"
1919            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
1920            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
1921            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)";
1922    $order = " ORDER BY r_datetime desc";
1923   
1924    $sql = $select . $from . $where . $order;
1925   
1926    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1927   
1928    foreach ($list as $key => $value) {
1929        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1930    }
1931   
1932    $sql = 
1933        "SELECT count(*) "
1934        . $from
1935        . $where ;
1936    $total_num = db_get_one($sql,$params);
1937   
1938    $total_page_num =  ceil($total_num / $page_size);
1939    $next = ($page < $total_page_num);
1940    $prev = ($page > 1);
1941   
1942    return array($list , $prev , $next, $total_num,$total_page_num); 
1943}
1944
1945function monitor_review_list($keyword,$page_size,$page)
1946{
1947
1948    $page = intval($page);
1949    $page_size = intval($page_size);
1950   
1951    $where = " where true ";
1952
1953    if ($keyword) {
1954        //全角空白を半角に統一
1955        $keyword = str_replace(" ", " ", $keyword);
1956        $keyword_list = explode(" ", $keyword);
1957           
1958        for($i=0;$i < count($keyword_list);$i++) {
1959            $keyword = check_search_word( $keyword_list[$i] );
1960               
1961            $where .= " and c_review_comment.body like ? ";
1962            $params[]="%$keyword%";
1963        }
1964    }
1965   
1966    $select = " select c_review_comment.*";
1967    $from = " FROM c_review_comment";
1968    $order = " ORDER BY r_datetime desc";
1969   
1970    $sql = $select . $from . $where . $order;
1971    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1972   
1973
1974    foreach ($list as $key => $value) {
1975        $list[$key]['c_member'] = db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
1976        $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
1977    }
1978
1979    $sql = 
1980        "SELECT count(*) "
1981        . $from
1982        . $where ;
1983    $total_num = db_get_one($sql,$params);
1984   
1985    $total_page_num =  ceil($total_num / $page_size);
1986    $next = ($page < $total_page_num);
1987    $prev = ($page > 1);
1988   
1989    return array($list , $prev , $next, $total_num,$total_page_num); 
1990}
1991
1992function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
1993{
1994    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
1995        " WHERE c_commu_topic_id = ? AND number > 0";
1996    $params = array($c_commu_topic_id);
1997    return db_get_one($sql, $params);
1998}
1999//フリーページを追加
2000function db_admin_insert_c_free_page($title, $body, $auth, $type)
2001{
2002    $data = array(
2003        'title' => strval($title),
2004        'body'  => strval($body),
2005        'auth'  => intval($auth),
2006        'type'  => strval($type),
2007    );
2008    return db_insert('c_free_page', $data);
2009}
2010
2011//フリーページを編集
2012function db_admin_update_c_free_page($c_free_page_id, $title, $body, $auth, $type)
2013{
2014    $data = array(
2015        'title' => strval($title),
2016        'body'  => strval($body),
2017        'auth'  => intval($auth),
2018        'type'  => strval($type),
2019    );
2020    $where = array('c_free_page_id' => intval($c_free_page_id));
2021    return db_update('c_free_page', $data, $where);
2022}
2023
2024//フリーページを削除
2025function db_admin_delete_c_free_page($c_free_page_id)
2026{
2027    $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
2028    $params = array(intval($c_free_page_id));
2029    return db_query($sql, $params);
2030}
2031
2032
2033//フリーページを全て取得(ページャー付き)
2034function db_admin_get_c_free_page_all($page, $page_size, &$pager)
2035{
2036    $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
2037
2038    $list = db_get_all_page($sql, $page, $page_size, $params);
2039
2040    $sql = 'SELECT count(*) FROM c_free_page';
2041    $total_num = db_get_one($sql, $params);
2042    $pager = admin_make_pager($page, $page_size, $total_num);
2043
2044    return $list;
2045}
2046
2047//フリーページを一つ取得
2048function db_admin_get_c_free_page_one($c_free_page_id)
2049{
2050    $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
2051    $params = array(intval($c_free_page_id));
2052
2053    return db_get_row($sql, $params);
2054}
2055
2056//APIを全て取得(ページャー付き)
2057function db_admin_get_c_api_all($page, $page_size, &$pager)
2058{
2059    $sql = 'SELECT * FROM c_api ORDER BY c_api_id';
2060
2061    $list = db_get_all_page($sql, $page, $page_size, $params);
2062
2063    $sql = 'SELECT count(*) FROM c_api';
2064    $total_num = db_get_one($sql, $params);
2065    $pager = admin_make_pager($page, $page_size, $total_num);
2066
2067    return $list;
2068}
2069
2070//APIを編集
2071function db_admin_update_c_api($c_api_id, $name, $ip)
2072{
2073    $data = array(
2074        'name' => strval($name),
2075        'ip' => strval($ip),
2076    );
2077    $where = array('c_api_id' => intval($c_api_id));
2078    return db_update('c_api', $data, $where);
2079}
2080
2081//CMDを追加
2082function db_admin_insert_c_cmd($name, $permit)
2083{
2084    $data = array(
2085        'name' => strval($name),
2086        'permit' => intval($permit),
2087    );
2088    return db_insert('c_cmd', $data);
2089}
2090
2091//CMDを編集
2092function db_admin_update_c_cmd($c_cmd_id, $name, $permit)
2093{
2094    $data = array(
2095        'name' => strval($name),
2096        'permit' => intval($permit),
2097    );
2098    $where = array('c_cmd_id' => intval($c_cmd_id));
2099    return db_update('c_cmd', $data, $where);
2100}
2101
2102//CMDを削除
2103function db_admin_delete_c_cmd($c_cmd_id)
2104{
2105    $sql = "DELETE FROM c_cmd WHERE c_cmd_id = ?";
2106    $params = array(intval($c_cmd_id));
2107    return db_query($sql, $params);
2108}
2109
2110
2111//CMDを全て取得
2112function db_admin_get_c_cmd_all()
2113{
2114    $sql = 'SELECT * FROM c_cmd ORDER BY c_cmd_id';
2115    return db_get_all($sql);
2116}
2117
2118//CMDを一つ取得
2119function db_admin_get_c_cmd_one($c_cmd_id)
2120{
2121    $sql = 'SELECT * FROM c_cmd WHERE c_cmd_id = ?';
2122    $params = array(intval($c_cmd_id));
2123
2124    return db_get_row($sql, $params);
2125}
2126
2127/**
2128 * 祝日のリストを取得
2129 */
2130function db_admin_c_holiday_list()
2131{
2132    $sql = 'SELECT * FROM c_holiday ORDER BY month';
2133    $holiday_list = db_get_all($sql);
2134
2135    return $holiday_list;
2136}
2137
2138/**
2139 * 休日を追加
2140 */
2141function db_admin_insert_c_holiday($name, $month, $day)
2142{
2143    $data = array(
2144        'name' => strval($name),
2145        'month' => intval($month),
2146        'day' => intval($day),
2147    );
2148    return db_insert('c_holiday', $data);
2149}
2150
2151/**
2152 * 休日を編集
2153 */
2154function db_admin_update_c_holiday($c_holiday_id, $name, $month, $day)
2155{
2156    $data = array(
2157        'name' => strval($name),
2158        'month' => intval($month),
2159        'day' => intval($day),
2160    );
2161    $where = array('c_holiday_id' => intval($c_holiday_id));
2162    return db_update('c_holiday', $data, $where);
2163}
2164
2165/**
2166 * 休日を削除
2167 */
2168function db_admin_delete_c_holiday($c_holiday_id)
2169{
2170    $sql = "DELETE FROM c_holiday WHERE c_holiday_id = ?";
2171    $params = array(intval($c_holiday_id));
2172    return db_query($sql, $params);
2173}
2174
2175//メッセージ送信履歴を挿入
2176function db_admin_insert_c_send_messages_history($subject, $body, $send_num, $type, $c_member_ids)
2177{
2178
2179    //配列を文字列に変換
2180    if($c_member_ids) {
2181        $c_member_ids = implode("-",$c_member_ids);
2182    } else {
2183        return;
2184    }
2185
2186    $data = array(
2187        'subject'       => strval($subject),
2188        'body'          => strval($body),
2189        'send_num'      => intval($send_num),
2190        'type'          => strval($type),
2191        'c_member_ids'  => strval($c_member_ids),
2192        'r_datetime'    => db_now()
2193    );
2194
2195    return db_insert('c_send_messages_history', $data);
2196
2197}
2198
2199//メッセージ送信履歴を全て取得(ページャー付き)
2200function db_admin_get_c_send_messages_history_all($page, $page_size, &$pager)
2201{
2202
2203    $sql = 'SELECT * FROM c_send_messages_history ORDER BY c_send_messages_history_id DESC';
2204
2205    $history_list = db_get_all_page($sql, $page, $page_size, $params);
2206
2207    foreach ($history_list as $key => $history) {
2208        $history_list[$key]['c_member_ids'] = explode("-", $history['c_member_ids']);
2209    }
2210
2211    $sql = 'SELECT count(*) FROM c_send_messages_history';
2212    $total_num = db_get_one($sql, $params);
2213    $pager = admin_make_pager($page, $page_size, $total_num);
2214
2215    return $history_list;
2216}
2217
2218//メッセージ送信履歴を一つ取得
2219function db_admin_get_c_send_messages_history($c_send_messages_history_id)
2220{
2221
2222    $sql = 'SELECT * FROM c_send_messages_history WHERE c_send_messages_history_id = ?';
2223
2224    $params = array(intval($c_send_messages_history_id));
2225
2226    $history = db_get_row($sql, $params);
2227
2228    $history['c_member_ids'] = explode("-", $history['c_member_ids']);
2229
2230    return $history;
2231}
2232
2233//メッセージをキューに入れる
2234function db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body)
2235{
2236    $data = array(
2237        'c_member_id_from' => intval($c_member_id_from),
2238        'c_member_id_to'   => intval($c_member_id_to),
2239        'subject'          => strval($subject),
2240        'body'             => strval($body),
2241    );
2242    return db_insert('c_message_queue', $data);
2243}
2244
2245//メッセージをキューから削除
2246function db_admin_delete_c_message_queue($c_message_queue_id)
2247{
2248
2249    $sql = "DELETE FROM c_message_queue WHERE c_message_queue_id = ?";
2250    $params = array(intval($c_message_queue_id));
2251
2252    return db_query($sql, $params);
2253}
2254
2255//ランクを追加
2256function db_admin_insert_c_rank($name, $image_filename, $point)
2257{
2258    $data = array(
2259        'name' => strval($name),
2260        'image_filename' => strval($image_filename),
2261        'point' => intval($point),
2262    );
2263    return db_insert('c_rank', $data);
2264}
2265
2266//ランクを編集
2267function db_admin_update_c_rank($c_rank_id, $name, $image_filename, $point)
2268{
2269    $data = array(
2270        'name' => strval($name),
2271        'image_filename' => strval($image_filename),
2272        'point' => intval($point),
2273    );
2274    $where = array('c_rank_id' => intval($c_rank_id));
2275    return db_update('c_rank', $data, $where);
2276}
2277
2278//ランクを削除
2279function db_admin_delete_c_rank($c_rank_id)
2280{
2281    $sql = "DELETE FROM c_rank WHERE c_rank_id = ?";
2282    $params = array(intval($c_rank_id));
2283    return db_query($sql, $params);
2284}
2285
2286//ランクを全て取得
2287function db_admin_get_c_rank_all()
2288{
2289    $sql = 'SELECT * FROM c_rank ORDER BY point';
2290    return db_get_all($sql);
2291}
2292
2293//ランクを一つ取得
2294function db_admin_get_c_rank_one($c_rank_id)
2295{
2296    $sql = 'SELECT * FROM c_rank WHERE c_rank_id = ?';
2297    $params = array(intval($c_rank_id));
2298
2299    return db_get_row($sql, $params);
2300}
2301
2302//アクションを編集
2303function db_admin_update_c_action($c_action_id, $point)
2304{
2305    $data = array(
2306        'point' => intval($point),
2307    );
2308    $where = array('c_action_id' => intval($c_action_id));
2309    return db_update('c_action', $data, $where);
2310}
2311
2312//アクションを全て取得
2313function db_admin_get_c_action_all()
2314{
2315    $sql = 'SELECT * FROM c_action ORDER BY c_action_id';
2316    return db_get_all($sql);
2317}
2318
2319/**
2320 * 指定したファイル名のファイルへのリンクを削除する
2321 *
2322 * @param string $filename
2323 */
2324function db_admin_delete_c_file_link4filename($filename)
2325{
2326    // c_commu_topic_comment
2327    $tbl = 'c_commu_topic_comment';
2328    _db_admin_empty_image_filename($tbl, $filename, 'filename');
2329}
2330
2331function db_admin_get_c_member_profile_pnepoint($c_member_id)
2332{
2333    $sql = 'SELECT c_profile_id FROM c_profile where name = \'PNE_POINT\'';
2334    $c_profile_id =  db_get_one($sql);
2335    $params = array($c_member_id , $c_profile_id);
2336    $sql = 'SELECT * FROM c_member_profile where c_member_id = ? and c_profile_id = ?';
2337    $c_member_profile = db_get_row($sql, $params);
2338
2339    return  $c_member_profile;
2340}
2341
2342?>
Note: See TracBrowser for help on using the repository browser.