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

source: OpenPNE/branches/2_8/webapp/modules/admin/lib/db_admin.php @ 2322

Last change on this file since 2322 was 2322, checked in by takanashi, 13 years ago

#540,#541,#542,#544 管理画面のメンバー一覧のソート、絞込み、メッセージ送信などの向上

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