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

source: OpenPNE/branches/2.8.x/webapp/modules/admin/lib/db_admin.php @ 2951

Last change on this file since 2951 was 2951, checked in by ogawa, 12 years ago

タブを4スペースに置換

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