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

source: OpenPNE/branches/2.6.x/webapp/modules/admin/lib/db_admin.php @ 3028

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

#820:管理画面のアクセス月次集計ページでエラーが表示される

File size: 60.9 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 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)
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    $sql .= ' ORDER BY c_member_id';
566
567    $ids = db_get_col($sql, $params);
568
569    //各プロフィールごとで絞り結果をマージする
570    $_sql = 'SELECT name FROM c_profile WHERE (form_type = ? OR form_type = ?)';
571    $profile = db_get_col($_sql, array('select', 'radio'));
572
573    if ( $profile ) {
574        foreach ($profile as $value) {
575            if (!empty($cond_list[$value])) {
576                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
577                $params = array($cond_list[$value]);
578                $temp_ids = db_get_col($sql, $params);
579                $ids = array_intersect($ids, $temp_ids);
580            }
581        }
582    }
583
584    return $ids;
585}
586
587/**
588 * メンバーリスト取得
589 * 誕生年+プロフィール(select,radioのみ)
590 */
591function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list)
592{
593    $ids = _db_admin_c_member_id_list($cond_list);
594    $total_num = count($ids);
595    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
596
597    $c_member_list = array();
598    foreach ($ids as $id) {
599        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
600    }
601
602    if ($total_num > 0) {
603        $pager = admin_make_pager($page, $page_size, $total_num);
604    }
605
606    return $c_member_list;
607}
608
609function db_c_profile_option4c_profile_option_id($c_profile_option_id)
610{
611    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
612    $params = array(intval($c_profile_option_id));
613    return db_get_row($sql, $params);
614}
615
616/**
617 * メンバー絞込みパラメータ取得
618 */
619function validate_cond($requests)
620{
621    $cond_list = array();
622    //誕生年
623    if (!empty($requests['s_year'])) {
624        $cond_list['s_year'] = intval($requests['s_year']);
625    }
626    if (!empty($requests['e_year'])) {
627        $cond_list['e_year'] = intval($requests['e_year']);
628    }
629    //プロフィール
630    $profile_list = db_member_c_profile_list();
631
632    foreach ($profile_list as $key => $value) {
633        if (!empty($requests[$key])) {
634            $cond_list[$key] = intval($requests[$key]);
635        }
636    }
637    return $cond_list;
638}
639
640function do_admin_send_mail($c_member_id, $subject, $body)
641{
642    $c_member = db_member_c_member4c_member_id($c_member_id, true);
643
644    if ($c_member['secure']['pc_address']) {
645        $send_address = $c_member['secure']['pc_address'];
646    } else {
647        $send_address = $c_member['secure']['ktai_address'];
648    }
649
650    if (OPENPNE_MAIL_QUEUE) {
651        //メールキューに蓄積
652        put_mail_queue($send_address, $subject, $body);
653    } else {
654        t_send_email($send_address, $subject, $body);
655    }
656}
657
658//メッセージ受信メール(メール&メッセージキュー蓄積対応)
659function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
660{
661    //メッセージ
662    if (OPENPNE_MESSAGE_QUEUE) {
663        //メッセージキューに蓄積
664        db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
665        return true;
666    } else {
667        db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
668        do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
669        do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
670        return true;
671    }
672
673    return false;
674}
675
676//メッセージ受信メール(メールキュー蓄積対応)
677function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
678{
679    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
680    $pc_address = $c_member_to['secure']['pc_address'];
681    $is_receive_mail = $c_member_to['is_receive_mail'];
682
683    $params = array(
684        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
685        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
686    );
687    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
688}
689
690//◆メッセージ受信メール(携帯)
691function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from)
692{
693    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
694    $ktai_address = $c_member_to['secure']['ktai_address'];
695    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
696    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
697    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
698
699    $params = array(
700        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
701        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
702        'login_url' => $login_url,
703    );
704    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
705}
706
707function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
708{
709    $tpl_name .= '.tpl';
710    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
711        list($subject, $body) = $tpl;
712        if ($from) {
713            if (OPENPNE_MAIL_QUEUE) {
714                //メールキューに蓄積
715                put_mail_queue($address, $subject, $body, $force, $from);
716            } else {
717                t_send_email($address, $subject, $body, $force, $from);
718            }
719        } else {
720            if (OPENPNE_MAIL_QUEUE) {
721                //メールキューに蓄積
722                put_mail_queue($address, $subject, $body, $force);
723            } else {
724                t_send_email($address, $subject, $body, $force);
725            }
726        }
727        return true;
728    } else {
729        return false;
730    }
731}
732
733function db_access_analysis_c_admin_user_id4username($username)
734{
735    $sql = "SELECT c_admin_user_id FROM c_admin_user" .
736        " WHERE username = ?";
737    $params = array($username);
738    return db_get_one($sql,$params);
739}
740
741function p_access_analysis_month_access_analysis_month($ktai_flag)
742{
743    $sql = "SELECT concat(left(r_datetime, 7), '-01') as ym, count(*) as count" .
744            " FROM c_access_log " .
745            " where ktai_flag = ?" .
746            " group by ym";
747    $params = array(intval($ktai_flag));           
748    $list = db_get_all($sql,$params);
749    return $list;
750}
751
752
753function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
754{
755    $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
756            " FROM c_access_log " .
757            " where left(r_datetime, 7) = ?" .
758            " and ktai_flag = ? " .
759            " group by ymd";           
760    $params = array(intval(substr($ym,0,7)),intval($ktai_flag));
761    $list = db_get_all($sql,$params);
762   
763    $year = substr($ym, 0, 4);
764    $month = substr($ym, 5,2);
765   
766    $return = array();
767    $days_num = date("t", mktime (0,0,0,$month,1,$year));
768    for($i=1 ; $i<=$days_num; $i++) {
769        $date = substr($ym,0,8) . substr("00".$i, -2, 2);
770
771        $count = 0;
772        foreach($list as $value) {
773            if ($value['ymd'] == $date) {
774                $count = $value['count'];
775            }
776        }
777        $return[] = array("ymd"=>$date, "count"=>$count);
778    }
779    return $return;
780}
781
782function get_page_name($ktai_flag, $orderby=1)
783{
784    if ($orderby == 1) {
785        $orderby_str = " order by page_name asc";
786    } elseif ($orderby == -1) {
787        $orderby_str = " order by page_name desc";
788    }
789    $sql = "select distinct page_name from c_access_log " .
790            " where ktai_flag = ? " .
791            $orderby_str;
792    $params = array(intval($ktai_flag));
793    return db_get_col($sql,$params);
794}
795
796function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
797{
798
799    if ($orderby == 1) {
800        $orderby_str = " order by page_name asc";
801    } elseif ($orderby == -1) {
802        $orderby_str = " order by page_name desc";
803    } elseif ($orderby == 2) {
804        $orderby_str = " order by count asc";
805    } elseif ($orderby == -2) {
806        $orderby_str = " order by count desc";
807    }
808    $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
809    $params = array(intval($ktai_flag));
810    if ($month_flag) {
811        $sql .= " and left(r_datetime, 7) = ? ";
812        array_push($params,substr($ymd,0,7));
813    } else {
814        $sql .= " and left(r_datetime,10) = ? ";
815        array_push($params,$ymd);
816    }
817    $sql .= " group by page_name ".    $orderby_str;
818    $list = db_get_all($sql,$params);
819
820    $sum = 0;
821    $return = array();
822    if (abs($orderby) == 1) {
823        $page_name = get_page_name($ktai_flag, $orderby);
824        foreach($page_name as $name) {
825            $count = 0;
826            foreach($list as $value) {
827                if ($value['page_name'] == $name) $count = $value['count'];
828            }
829
830                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);
831
832            $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);
833            $sum += $count;
834        }
835    } elseif (abs($orderby) == 2) {
836        $page_name = get_page_name($ktai_flag);
837
838        $t_page_name = $page_name;
839
840        //アクセスがゼロのページを取得する
841        foreach($page_name as $key=>$name) {
842            foreach($list as $value) {
843                if ($value['page_name'] == $name) {
844                    unset($page_name[$key]);//$listに含まれるページネームを削除
845                }
846            }
847        }
848
849        foreach($page_name as $key=>$name) {
850            $page_name[$key] = array("page_name"=>$name, "count"=>0);
851        }
852
853        if ($orderby == 2) {
854            $return = array_merge($page_name , $list);
855        } elseif ($orderby == -2) {
856            $return = array_merge($list, $page_name);
857        }
858        foreach($list as $value) {
859            $sum += $value['count'];
860        }
861
862        foreach($return as $value) {
863
864            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']);
865
866            $value['is_target_c_member_id'] = $is_target_c_member_id;
867            $value['is_target_c_commu_id'] = $is_target_c_commu_id;
868            $value['is_target_c_topic_id'] = $is_target_c_topic_id;
869            $value['is_target_c_diary_id'] = $is_target_c_diary_id;
870            $value['is_c_member_id'] = $is_c_member_id;
871            $t_return[] = $value;
872
873        }
874
875        $return = $t_return;
876
877    }
878   
879    return array($return, $sum);
880}
881
882
883/*
884 * target_commu
885 *
886 */
887function p_access_analysis_target_commu_target_commu4ym_page_name
888($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
889{
890   
891    $start = ($page - 1) * $page_size;
892   
893    if ($orderby == 1) {
894        $orderby_str = " order by target_c_commu_id asc";
895    } elseif ($orderby == -1) {
896        $orderby_str = " order by target_c_commu_id desc";
897    } elseif ($orderby == 2) {
898        $orderby_str = " order by count asc";
899    } elseif ($orderby == -2) {
900        $orderby_str = " order by count desc";
901    }
902   
903    $sql = "select target_c_commu_id , count(*) as count from c_access_log  where ktai_flag = ? ";
904    $params = array(intval($ktai_flag));
905    if ($month_flag) {
906            $sql .= " and left(r_datetime, 7) = ? ";
907            array_push($params,substr($ymd,0,7));
908    } else {
909            $sql .= " and left(r_datetime,10) = ? ";
910            array_push($params,$ymd);
911    }
912    if ($page_name!="all") {
913            $sql .= " and page_name = ? ";
914            array_push($params,$page_name);
915    }
916    $sql .= " and target_c_commu_id <> 0 ";
917    $sql .= " group by target_c_commu_id " .$orderby_str." limit $start, $page_size";
918    $list = db_get_all($sql,$params);
919
920    $return = array();
921    $sum = 0;
922    foreach($list as $key => $value) {
923        if ($value['target_c_commu_id']) {
924            if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
925                $return[] = array_merge($value, $c_commu);
926                $sum += $value['count'];
927            }
928        }
929    }
930
931    $sql =   "select count(*) from c_access_log  where ktai_flag = ? ";
932    $params = array(intval($ktai_flag));
933    if ($month_flag) {
934        $sql .= " and left(r_datetime, 7) = ? ";
935        array_push($params,substr($ymd,0,7));
936    } else {
937        $sql .= " and left(r_datetime,10) = ? ";
938        array_push($params,$ymd);
939    }
940    if ($page_name!="all") {
941        $sql .= " and page_name = ? ";
942        array_push($params,$page_name);
943    }
944    $sql .= " and target_c_commu_id <> 0 ";
945    $sql .= " group by target_c_commu_id ";
946    $result = db_get_all($sql,$params);
947    $total_num = count($result);
948
949    if ($total_num != 0) {
950        $total_page_num =  ceil($total_num / $page_size);
951        if ($page >= $total_page_num) {
952            $next = false;
953        }else{
954            $next = true;
955        }
956        if ($page <= 1) {
957            $prev = false;
958        }else{
959            $prev = true;
960        }
961    }
962    $start_num = ($page - 1) * $page_size + 1 ;
963    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
964
965    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
966}
967
968function p_access_analysis_target_topic_target_topic4ym_page_name
969($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
970{
971    $start = ($page - 1) * $page_size;
972   
973    if ($orderby == 1) {
974        $orderby_str = " order by target_c_commu_topic_id asc";
975    } elseif ($orderby == -1) {
976        $orderby_str = " order by target_c_commu_topic_id desc";
977    } elseif ($orderby == 2) {
978        $orderby_str = " order by count asc";
979    } elseif ($orderby == -2) {
980        $orderby_str = " order by count desc";
981    }
982    $where =" where ktai_flag = ? ";
983    $params = array(intval($ktai_flag));
984    if ($month_flag) {
985            $where .= " and left(r_datetime, 7) = ? ";
986            array_push($params,substr($ymd,0,7));
987    } else {
988            $where .= " and left(r_datetime,10) = ? ";
989            array_push($params,$ymd);
990    }
991    if ($page_name!="all") {
992            $where .= " and page_name = ? ";
993            array_push($params,$page_name);
994    }
995    $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
996    $sql .= $where." group by target_c_commu_topic_id " .$orderby_str." limit $start, $page_size";
997    $list = db_get_all($sql,$params);
998    $sql = "select count(*) from c_access_log ";
999    $sql .= $where ." group by target_c_commu_topic_id ";
1000    $result = db_get_all($sql,$params);
1001    $total_num = count($result);
1002
1003    $return = array();
1004    $sum = 0;
1005    foreach ($list as $key => $value) {
1006        if ($value['target_c_commu_topic_id']) {
1007            if ($c_commu_topic = c_topic_detail_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
1008                $c_commu_topic['topic_name'] = $c_commu_topic['name'];
1009                $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
1010                $c_commu_topic['commu_name'] = $c_commu['name'];
1011                $return[] = array_merge($value, $c_commu_topic);
1012                $sum += $value['count'];
1013            }
1014        }
1015    }
1016
1017    if ($total_num != 0) {
1018        $total_page_num =  ceil($total_num / $page_size);
1019        if ($page >= $total_page_num) {
1020            $next = false;
1021        } else {
1022            $next = true;
1023        }
1024        if ($page <= 1) {
1025            $prev = false;
1026        } else {
1027            $prev = true;
1028        }
1029    }
1030    $start_num = ($page - 1) * $page_size + 1 ;
1031    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1032
1033    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1034}
1035
1036function p_access_analysis_target_diary_target_diary4ym_page_name
1037($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1038{
1039   
1040    $start = ($page - 1) * $page_size;
1041   
1042    if ($orderby == 1) {
1043        $orderby_str = " order by target_c_diary_id asc";
1044    } elseif ($orderby == -1) {
1045        $orderby_str = " order by target_c_diary_id desc";
1046    } elseif ($orderby == 2) {
1047        $orderby_str = " order by count asc";
1048    } elseif ($orderby == -2) {
1049        $orderby_str = " order by count desc";
1050    }
1051   
1052    $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
1053    $params = array(intval($ktai_flag));
1054    if ($month_flag) {
1055        $sql .= " and left(r_datetime, 7) = ? ";
1056        array_push($params,substr($ymd,0,7));
1057    } else {
1058        $sql .= " and left(r_datetime,10) = ? ";
1059        array_push($params,$ymd);
1060    }
1061    if ($page_name!="all") {
1062        $sql .= " and page_name = ? ";
1063        array_push($params,$page_name);
1064    }
1065    $sql .= " and target_c_diary_id <> 0 ";
1066    $sql .= " group by target_c_diary_id " . $orderby_str. " limit $start, $page_size";
1067    $list = db_get_all($sql,$params);
1068
1069    $return = array();
1070    $sum = 0;
1071    foreach ($list as $key => $value) {
1072        if ($value['target_c_diary_id']) {
1073            if ($c_diary = db_diary_get_c_diary4id($value['target_c_diary_id'])) {
1074                $c_member = db_member_c_member4c_member_id($c_diary['c_member_id']);
1075                $c_diary['nickname'] = $c_member['nickname'];
1076                $return[] = array_merge($value, $c_diary);
1077                $sum += $value['count'];
1078            }
1079        }
1080    }
1081
1082    $sql =   "select count(*) from c_access_log where ktai_flag = ? ";
1083    $params = array(intval($ktai_flag));
1084    if ($month_flag) {
1085            $sql .= " and left(r_datetime, 7) = ? ";
1086            array_push($params,substr($ymd,0,7));
1087    } else {
1088            $sql .= " and left(r_datetime,10) = ? ";
1089            array_push($params,$ymd);
1090    }
1091    $sql .= " and target_c_diary_id <> 0 ";
1092    $sql .= " group by target_c_diary_id ";
1093    $result = db_get_all($sql,$params);
1094    $total_num = count($result);
1095
1096    if ($total_num != 0) {
1097        $total_page_num =  ceil($total_num / $page_size);
1098        if ($page >= $total_page_num) {
1099            $next = false;
1100        }else{
1101            $next = true;
1102        }
1103        if ($page <= 1) {
1104            $prev = false;
1105        }else{
1106            $prev = true;
1107        }
1108    }
1109    $start_num = ($page - 1) * $page_size + 1 ;
1110    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1111
1112    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1113}
1114
1115function p_access_analysis_member_access_member4ym_page_name
1116($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1117{
1118    $start = ($page - 1) * $page_size;
1119   
1120    if ($orderby == 1) {
1121        $orderby_str = " order by c_member_id asc";
1122    } elseif ($orderby == -1) {
1123        $orderby_str = " order by c_member_id desc";
1124    } elseif ($orderby == 2) {
1125        $orderby_str = " order by count asc";
1126    } elseif ($orderby == -2) {
1127        $orderby_str = " order by count desc";
1128    }
1129   
1130    $where =" where ktai_flag = ? ";
1131    $params = array(intval($ktai_flag));
1132    if ($month_flag) {
1133        $where .= " and left(r_datetime, 7) = ? ";
1134        array_push($params,substr($ymd,0,7));
1135    } else {
1136        $where .= " and left(r_datetime,10) = ? ";
1137        array_push($params,$ymd);
1138    }
1139    if ($page_name!="all") {
1140        $where .= " and page_name = ? ";
1141        array_push($params,$page_name);
1142    }
1143
1144    $sql = "select c_member_id , count(*) as count from c_access_log";
1145    $sql .= $where." group by c_member_id $orderby_str limit $start, $page_size";
1146    $list = db_get_all($sql,$params);
1147    $sql = "select count(*) from c_access_log ";
1148    $sql .=    $where ." group by c_member_id ";
1149    $result = db_get_all($sql,$params);
1150    $total_num = count($result);
1151
1152    $return = array();
1153    $sum = 0;
1154    foreach($list as $key => $value) {
1155        if ($value['c_member_id']) {
1156            if ($c_member = _db_c_member4c_member_id($value['c_member_id'])) {
1157                $return[] = array_merge($value, $c_member);
1158                $sum += $value['count'];
1159            }
1160        }
1161    }
1162
1163
1164    if ($total_num != 0) {
1165        $total_page_num =  ceil($total_num / $page_size);
1166        if ($page >= $total_page_num) {
1167            $next = false;
1168        }else{
1169            $next = true;
1170        }
1171        if ($page <= 1) {
1172            $prev = false;
1173        }else{
1174            $prev = true;
1175        }
1176    }
1177    $start_num = ($page - 1) * $page_size + 1 ;
1178    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1179    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1180}
1181
1182function p_access_analysis_target_member_access_member4ym_page_name
1183($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1184{
1185    $start = ($page - 1) * $page_size;
1186   
1187    if ($orderby == 1) {
1188        $orderby_str = " order by target_c_member_id asc";
1189    } elseif ($orderby == -1) {
1190        $orderby_str = " order by target_c_member_id desc";
1191    } elseif ($orderby == 2) {
1192        $orderby_str = " order by count asc";
1193    } elseif ($orderby == -2) {
1194        $orderby_str = " order by count desc";
1195    }
1196    $where =" where ktai_flag = ? ";
1197    $params = array(intval($ktai_flag));
1198        if ($month_flag) {
1199                $where .= " and left(r_datetime, 7) = ? ";
1200                array_push($params,substr($ymd,0,7));
1201        } else {
1202                $where .= " and left(r_datetime,10) = ? ";
1203                array_push($params,$ymd);
1204        }
1205        if ($page_name!="all") {
1206                $where .= " and page_name = ? ";
1207                array_push($params,$page_name);
1208        }
1209    $sql = "select target_c_member_id , count(*) as count from c_access_log ";
1210    $sql .= $where;
1211    $sql .= " AND target_c_member_id <> 0 ";
1212    $sql .= " group by target_c_member_id " . $orderby_str. " limit $start, $page_size";
1213
1214    $list = db_get_all($sql,$params);
1215
1216    $return = array();
1217    $sum = 0;
1218    foreach($list as $key => $value) {
1219        if ($value['target_c_member_id']) {
1220            if ($c_member = db_member_c_member4c_member_id($value['target_c_member_id'])) {
1221                $return[] = array_merge($value, $c_member);
1222                $sum += $value['count'];
1223            }
1224        }
1225    }
1226
1227    $where =" where ktai_flag = ? ";
1228    $params = array(intval($ktai_flag));
1229        if ($month_flag) {
1230                $where .= " and left(r_datetime, 7) = ? ";
1231                array_push($params,substr($ymd,0,7));
1232        } else {
1233                $where .= " and left(r_datetime,10) = ? ";
1234                array_push($params,$ymd);
1235        }
1236        if ($page_name != "all") {
1237                $where .= " and page_name = ? ";
1238                array_push($params,$page_name);
1239        }
1240    $sql = "select count(*) from c_access_log " ;
1241    $sql .= $where;
1242    $sql .= " AND target_c_member_id <> 0 ";
1243    $sql .= " group by target_c_member_id ";
1244   
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 get_is_show($name)
1268{
1269
1270    $is_target_c_member_id = 0;
1271    $is_target_c_commu_id  = 0;
1272    $is_target_c_topic_id  = 0;
1273    $is_target_c_diary_id  = 0;
1274    $is_c_member_id        = 1;
1275
1276
1277    //必要のない詳細ボタンを消す
1278    $list = explode("_", $name);
1279    $is_c_member_id = 1;
1280
1281    if (strpos($list[0], 'f') !== false) {
1282        $is_target_c_member_id = 1;
1283    }
1284    if (strpos($list[0], 'c') !== false) {
1285        $is_target_c_commu_id = 1;
1286    }
1287
1288    if (strpos($name, 'topic') !== false || strpos($name, 'event') !== false) {
1289        $is_target_c_topic_id = 1;
1290    }
1291    if (strpos($name, 'diary') !== false) {
1292        $is_target_c_diary_id = 1;
1293    }
1294
1295
1296    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);
1297
1298}
1299
1300/**
1301
1302カラムごとに条件を指定して絞ったメンバーの一覧を返す
1303
1304[引数]
1305適時追加していく
1306
1307$s_access_date    最終ログイン時刻 開始年月日
1308$e_access_date    最終ログイン時刻 終了年月日
1309
1310[返り値]
1311c_member_list
1312
1313*/
1314function p_member_edit_c_member_list($page_size, $page,$s_access_date='', $e_access_date='')
1315{
1316
1317    $page = intval($page);
1318    $page_size = intval($page_size);
1319
1320    $limit = "";
1321
1322    //page_sizeが0の時は全て表示(pagerなし)
1323    if ($page_size != 0) {
1324        $limit = " LIMIT ".($page_size*($page-1)).",$page_size";
1325    }
1326    $where = " WHERE 1 ";
1327
1328    //指定された条件で絞っていく
1329    if ($s_access_date != "") {
1330        $where = $where . " and access_date >= ?";
1331        $params = array($s_access_date);
1332    }
1333
1334    if ($e_access_date != "") {
1335        $where = $where . " and access_date < ?";
1336        $params = array($e_access_date);
1337    }
1338
1339    $select = "SELECT * FROM c_member";
1340    $order = " order by c_member_id";
1341
1342    $sql = $select . $where . $order . $limit;
1343    $list = db_get_all_limit($sql, 0, $limit, $params);
1344   
1345    $sql = "select count(*) from c_member".$where;
1346
1347    $total_num = db_get_one($sql, $params);
1348   
1349    if ($total_num != 0 && $page_size != 0) {
1350        $total_page_num =  ceil($total_num / $page_size);
1351        if ($page >= $total_page_num) {
1352            $next = false;
1353        } else {
1354            $next = true;
1355        }
1356        if ($page <= 1) {
1357            $prev = false;
1358        } else {
1359            $prev = true;
1360        }
1361    }
1362
1363    return array($list , $prev , $next, $total_num);
1364}
1365
1366function _db_c_member4c_member_id($c_member_id)
1367{
1368    $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
1369        $params = array(intval($c_member_id));
1370    return db_get_row($sql,$params);
1371}
1372
1373/**
1374 * 男と女の人数を取得
1375 */
1376function get_analysis_sex()
1377{
1378    $sql = "select count(*) from c_member where sex = '男'";
1379    $analysis_sex['male'] = get_one4db($sql);
1380    $sql = "select count(*) from c_member where sex = '女'";
1381    $analysis_sex['female'] = get_one4db($sql);
1382   
1383    return $analysis_sex;
1384   
1385}
1386
1387/**
1388 * 世代の人数を取得
1389 */
1390function get_analysis_generation()
1391{
1392    $analysis_generation = array(
1393            '0~9' => 0,
1394            '10~19' => 0,
1395            '20~29' => 0,
1396            '30~39' => 0,
1397            '40~49' => 0,
1398            '50~59' => 0,
1399            '60~69' => 0,
1400            '70~79' => 0,
1401            '80~' =>0
1402    );
1403   
1404    $sql = "SELECT ((YEAR(CURDATE()) - birth_year)- " .
1405        "(RIGHT(CURDATE(),5)<CONCAT(birth_month,'-',birth_day))) " .
1406        "AS age FROM c_member WHERE birth_year <> 0;";
1407    $lst = db_get_all($sql);
1408
1409    $temp = array_keys($analysis_generation);
1410    foreach($lst as $value) {
1411        $key = (int)($value['age'] / 10);
1412        if ($key > count($analysis_generation)-1) {
1413            $analysis_generation[$temp[count($analysis_generation)-1]]++;
1414        } else {
1415            $analysis_generation[$temp[$key]]++;
1416        }
1417    }
1418
1419    return $analysis_generation;
1420   
1421}
1422
1423/**
1424 * 地域別の人数を取得
1425 */
1426function get_analysis_region()
1427{
1428    $pref = p_regist_prof_c_profile_pref_list4null();
1429    $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
1430    $lst = get_array_list4db($sql);
1431
1432    foreach($pref as $value) {
1433        $analysis_region[$value] = 0;   
1434    }
1435
1436    foreach ($lst as $value) {
1437        if ($value['pref_id'] == 0) {
1438            $analysis_region['その他']++;
1439        } else {
1440            $analysis_region[$pref[$value['pref_id']]]++;
1441        }
1442    }
1443
1444    return $analysis_region;
1445   
1446}
1447
1448function get_analysis_date_month($year = "", $month = "")
1449{
1450    $sql = "select date_format(r_date,'%Y-%m') from c_member order by r_date";
1451    $start_date = db_get_one($sql);
1452
1453    $i = 0;
1454    list($y, $m) = split("-",$start_date);
1455    do{
1456        $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
1457        $analysis_date_month[$date] = 0;
1458    }while($date < date("Y-m"));   
1459   
1460    $sql = "select date_format(r_date,'%Y-%m') as d from c_member";
1461    $lst = db_get_all($sql);
1462    foreach ($lst as $value) {
1463        $analysis_date_month[$value['d']]++;
1464    }
1465    return $analysis_date_month;
1466}
1467
1468function get_analysis_date_day_d($date="")
1469{
1470    if ($date == "") {
1471       $date = date("Y-m-d");
1472    }
1473    return $date;
1474}
1475
1476
1477function get_analysis_date_day($date="")
1478{
1479    if ($date == "") {
1480        $date = date("Y-m");
1481    }
1482    //一ヶ月の日数
1483    $day_num = date("t");
1484
1485    for($i=1 ; $i<=$day_num; $i++) {
1486        //一桁の数を二桁にする
1487        if ($i < 10) {
1488            $i = "0".$i;
1489        }
1490        $analysis_date_day[$i] = 0;
1491    }
1492
1493   
1494    $sql = "select date_format(r_date,'%d') as d from c_member where date_format(r_date,'%Y-%m') = ?";
1495    $params = array($date);
1496    $lst = db_get_all($sql,$params);
1497
1498    foreach($lst as $value) {
1499        $analysis_date_day[$value['d']]++;
1500    }
1501   
1502    return $analysis_date_day;
1503}
1504
1505function p_access_analysis_select_profile_list()
1506{
1507    $sql = "SELECT * " .
1508            " FROM c_profile " .
1509            " where form_type = 'select' ";
1510           
1511    $list = db_get_all($sql);
1512    return $list;
1513}
1514
1515/**
1516 * 指定されたIDのプロフィールの人数別一覧を作成
1517 */
1518function get_analysis_profile($c_profile_id)
1519{
1520    $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
1521        " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
1522        " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
1523    $params = array(intval($c_profile_id));
1524    $analysis_profile = db_get_all($sql,$params);
1525   
1526    return $analysis_profile;
1527}
1528
1529function get_analysis_count_profile_all($c_profile_id)
1530{
1531    $sql = "select count(*) as count from c_member_profile " .
1532        " WHERE c_profile_id = ? ";
1533    $params = array(intval($c_profile_id));
1534    $analysis_profile = db_get_one($sql,$params);
1535   
1536    return $analysis_profile;
1537}
1538
1539function analysis_profile4c_profile_id($c_profile_id)
1540{
1541    $sql = "SELECT * FROM c_profile" .
1542            " WHERE c_profile_id = ? ";
1543    $params = array(intval($c_profile_id));
1544    $profile = db_get_row($sql,$params);
1545   
1546    return $profile;
1547}
1548function monitor_diary_list($keyword,$page_size,$page)
1549{
1550
1551    $page = intval($page);
1552    $page_size = intval($page_size);
1553   
1554    $where = " where 1 ";
1555
1556    if ($keyword) {
1557        //全角空白を半角に統一
1558        $keyword = str_replace(" ", " ", $keyword);
1559        $keyword_list = explode(" ", $keyword);
1560           
1561        for($i=0;$i < count($keyword_list);$i++) {
1562            $keyword = check_search_word( $keyword_list[$i] );
1563               
1564            $where .= " and (c_diary.subject like ? ";
1565            $where .= " or c_diary.body like ? ) ";
1566            $params[]="%$keyword%";
1567            $params[]="%$keyword%";
1568        }
1569    }
1570   
1571    $select = " select c_diary.*";
1572    $from = " FROM c_diary";
1573    $order = " ORDER BY r_datetime desc";
1574   
1575    $sql = $select . $from . $where . $order;
1576    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1577    foreach ($list as $key => $value) {
1578        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1579        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1580    }
1581   
1582    $sql = 
1583        "SELECT count(*) "
1584        . $from
1585        . $where ;
1586    $total_num = db_get_one($sql,$params);
1587   
1588    $total_page_num =  ceil($total_num / $page_size);
1589    $next = ($page < $total_page_num);
1590    $prev = ($page > 1);
1591   
1592    return array($list , $prev , $next, $total_num,$total_page_num); 
1593}
1594
1595function monitor_diary_comment_list($keyword,$page_size,$page)
1596{
1597
1598    $page = intval($page);
1599    $page_size = intval($page_size);
1600   
1601    $where = " where 1 ";
1602
1603    if ($keyword) {
1604        //全角空白を半角に統一
1605        $keyword = str_replace(" ", " ", $keyword);
1606        $keyword_list = explode(" ", $keyword);
1607           
1608        for($i=0;$i < count($keyword_list);$i++) {
1609            $keyword = check_search_word( $keyword_list[$i] );
1610               
1611            $where .= " and (c_diary_comment.body like ? ) ";
1612            $params[]="%$keyword%";
1613        }
1614    }
1615   
1616    $select = " select c_diary_comment.*,c_diary.subject";
1617    $from = " FROM c_diary_comment"
1618        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
1619    $order = " ORDER BY r_datetime desc";
1620   
1621    $sql = $select . $from . $where . $order;
1622    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1623    foreach ($list as $key => $value) {
1624        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
1625        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1626    }
1627   
1628    $sql = 
1629        "SELECT count(*) "
1630        . $from
1631        . $where ;
1632    $total_num = db_get_one($sql,$params);
1633   
1634    $total_page_num =  ceil($total_num / $page_size);
1635    $next = ($page < $total_page_num);
1636    $prev = ($page > 1);
1637   
1638    return array($list , $prev , $next, $total_num,$total_page_num); 
1639}
1640
1641
1642function monitor_topic_comment_list($keyword,$page_size,$page)
1643{
1644
1645    $page = intval($page);
1646    $page_size = intval($page_size);
1647   
1648    $where = " where 1 ";
1649
1650    if ($keyword) {
1651        $keyword = str_replace("?@", " ", $keyword);
1652        $keyword_list = explode(" ", $keyword);
1653           
1654        for($i=0;$i < count($keyword_list);$i++) {
1655            $keyword = check_search_word( $keyword_list[$i] );
1656               
1657            $where .= " AND (ctc.body like ? )";
1658            $params[]="%$keyword%";
1659        }
1660    }
1661   
1662    $select = " SELECT ctc.*,ct.name as topic_name,c.name as commu_name,m.nickname";
1663    $from = " FROM c_commu_topic_comment as ctc"
1664            ." LEFT JOIN c_member as m ON ctc.c_member_id = m.c_member_id "
1665            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
1666            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
1667    $order = " ORDER BY r_datetime desc";
1668   
1669    $sql = $select . $from . $where . $order;
1670   
1671    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1672   
1673    foreach ($list as $key => $value) {
1674        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1675    }
1676   
1677    $sql = 
1678        "SELECT count(*) "
1679        . $from
1680        . $where ;
1681    $total_num = db_get_one($sql,$params);
1682   
1683    $total_page_num =  ceil($total_num / $page_size);
1684    $next = ($page < $total_page_num);
1685    $prev = ($page > 1);
1686   
1687    return array($list , $prev , $next, $total_num,$total_page_num); 
1688}
1689
1690function monitor_topic_list($keyword,$page_size,$page)
1691{
1692    $page = intval($page);
1693    $page_size = intval($page_size);
1694   
1695    $where = " where 1 ";
1696
1697    if ($keyword) {
1698        $keyword = str_replace("?@", " ", $keyword);
1699        $keyword_list = explode(" ", $keyword);
1700           
1701        for($i=0;$i < count($keyword_list);$i++) {
1702            $keyword = check_search_word( $keyword_list[$i] );
1703               
1704            $where .= " AND (ctc.body like ? ";
1705            $where .= " OR ct.name like ? ";
1706            $where .= " OR c.name like ? ) ";
1707            $params[]="%$keyword%";
1708            $params[]="%$keyword%";
1709            $params[]="%$keyword%";
1710        }
1711    }
1712   
1713    $select = " SELECT ct.*,ct.name as topic_name,c.name as commu_name,m.nickname,ctc.body as body";
1714    $from = " FROM c_commu_topic as ct"
1715            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
1716            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
1717            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)";
1718    $order = " ORDER BY r_datetime desc";
1719   
1720    $sql = $select . $from . $where . $order;
1721   
1722    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1723   
1724    foreach ($list as $key => $value) {
1725        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1726    }
1727   
1728    $sql = 
1729        "SELECT count(*) "
1730        . $from
1731        . $where ;
1732    $total_num = db_get_one($sql,$params);
1733   
1734    $total_page_num =  ceil($total_num / $page_size);
1735    $next = ($page < $total_page_num);
1736    $prev = ($page > 1);
1737   
1738    return array($list , $prev , $next, $total_num,$total_page_num); 
1739}
1740
1741function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
1742{
1743    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
1744        " WHERE c_commu_topic_id = ? AND number > 0";
1745    $params = array($c_commu_topic_id);
1746    return db_get_one($sql, $params);
1747}
1748//フリーページを追加
1749function db_admin_insert_c_free_page($body)
1750{
1751    $data = array(
1752        'body' => strval($body),
1753    );
1754    return db_insert('c_free_page', $data);
1755}
1756
1757//フリーページを編集
1758function db_admin_update_c_free_page($c_free_page_id, $body)
1759{
1760    $data = array(
1761        'body' => strval($body),
1762    );
1763    $where = array('c_free_page_id' => intval($c_free_page_id));
1764    return db_update('c_free_page', $data, $where);
1765}
1766
1767//フリーページを削除
1768function db_admin_delete_c_free_page($c_free_page_id)
1769{
1770    $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
1771    $params = array(intval($c_free_page_id));
1772    return db_query($sql, $params);
1773}
1774
1775
1776//フリーページを全て取得(ページャー付き)
1777function db_admin_get_c_free_page_all($page, $page_size, &$pager)
1778{
1779    $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
1780
1781    $list = db_get_all_page($sql, $page, $page_size, $params);
1782
1783    $sql = 'SELECT count(*) FROM c_free_page';
1784    $total_num = db_get_one($sql, $params);
1785    $pager = admin_make_pager($page, $page_size, $total_num);
1786
1787    return $list;
1788}
1789
1790//フリーページを一つ取得
1791function db_admin_get_c_free_page_one($c_free_page_id)
1792{
1793    $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
1794    $params = array(intval($c_free_page_id));
1795
1796    return db_get_row($sql, $params);
1797}
1798
1799//APIを全て取得(ページャー付き)
1800function db_admin_get_c_api_all($page, $page_size, &$pager)
1801{
1802    $sql = 'SELECT * FROM c_api ORDER BY c_api_id';
1803
1804    $list = db_get_all_page($sql, $page, $page_size, $params);
1805
1806    $sql = 'SELECT count(*) FROM c_api';
1807    $total_num = db_get_one($sql, $params);
1808    $pager = admin_make_pager($page, $page_size, $total_num);
1809
1810    return $list;
1811}
1812
1813//APIを編集
1814function db_admin_update_c_api($c_api_id, $name, $ip)
1815{
1816    $data = array(
1817        'name' => strval($name),
1818        'ip' => strval($ip),
1819    );
1820    $where = array('c_api_id' => intval($c_api_id));
1821    return db_update('c_api', $data, $where);
1822}
1823
1824//CMDを追加
1825function db_admin_insert_c_cmd($name, $permit)
1826{
1827    $data = array(
1828        'name' => strval($name),
1829        'permit' => intval($permit),
1830    );
1831    return db_insert('c_cmd', $data);
1832}
1833
1834//CMDを編集
1835function db_admin_update_c_cmd($c_cmd_id, $name, $permit)
1836{
1837    $data = array(
1838        'name' => strval($name),
1839        'permit' => intval($permit),
1840    );
1841    $where = array('c_cmd_id' => intval($c_cmd_id));
1842    return db_update('c_cmd', $data, $where);
1843}
1844
1845//CMDを削除
1846function db_admin_delete_c_cmd($c_cmd_id)
1847{
1848    $sql = "DELETE FROM c_cmd WHERE c_cmd_id = ?";
1849    $params = array(intval($c_cmd_id));
1850    return db_query($sql, $params);
1851}
1852
1853
1854//CMDを全て取得(ページャー付き)
1855function db_admin_get_c_cmd_all($page, $page_size, &$pager)
1856{
1857    $sql = 'SELECT * FROM c_cmd ORDER BY c_cmd_id';
1858
1859    $list = db_get_all_page($sql, $page, $page_size, $params);
1860
1861    $sql = 'SELECT count(*) FROM c_cmd';
1862    $total_num = db_get_one($sql, $params);
1863    $pager = admin_make_pager($page, $page_size, $total_num);
1864
1865    return $list;
1866}
1867
1868//CMDを一つ取得
1869function db_admin_get_c_cmd_one($c_cmd_id)
1870{
1871    $sql = 'SELECT * FROM c_cmd WHERE c_cmd_id = ?';
1872    $params = array(intval($c_cmd_id));
1873
1874    return db_get_row($sql, $params);
1875}
1876
1877/**
1878 * 祝日のリストを取得
1879 */
1880function db_admin_c_holiday_list()
1881{
1882    $sql = 'SELECT * FROM c_holiday ORDER BY month';
1883    $holiday_list = db_get_all($sql);
1884
1885    return $holiday_list;
1886}
1887
1888/**
1889 * 休日を追加
1890 */
1891function db_admin_insert_c_holiday($name, $month, $day)
1892{
1893    $data = array(
1894        'name' => strval($name),
1895        'month' => intval($month),
1896        'day' => intval($day),
1897    );
1898    return db_insert('c_holiday', $data);
1899}
1900
1901/**
1902 * 休日を編集
1903 */
1904function db_admin_update_c_holiday($c_holiday_id, $name, $month, $day)
1905{
1906    $data = array(
1907        'name' => strval($name),
1908        'month' => intval($month),
1909        'day' => intval($day),
1910    );
1911    $where = array('c_holiday_id' => intval($c_holiday_id));
1912    return db_update('c_holiday', $data, $where);
1913}
1914
1915/**
1916 * 休日を削除
1917 */
1918function db_admin_delete_c_holiday($c_holiday_id)
1919{
1920    $sql = "DELETE FROM c_holiday WHERE c_holiday_id = ?";
1921    $params = array(intval($c_holiday_id));
1922    return db_query($sql, $params);
1923}
1924
1925//メッセージ送信履歴を挿入
1926function db_admin_insert_c_send_messages_history($subject, $body, $send_num, $type, $c_member_ids)
1927{
1928
1929    //配列を文字列に変換
1930    if($c_member_ids) {
1931        $c_member_ids = implode("-",$c_member_ids);
1932    } else {
1933        return;
1934    }
1935
1936    $data = array(
1937        'subject'       => strval($subject),
1938        'body'          => strval($body),
1939        'send_num'      => intval($send_num),
1940        'type'          => strval($type),
1941        'c_member_ids'  => strval($c_member_ids),
1942        'r_datetime'    => db_now()
1943    );
1944
1945    return db_insert('c_send_messages_history', $data);
1946
1947}
1948
1949//メッセージ送信履歴を全て取得(ページャー付き)
1950function db_admin_get_c_send_messages_history_all($page, $page_size, &$pager)
1951{
1952
1953    $sql = 'SELECT * FROM c_send_messages_history ORDER BY c_send_messages_history_id DESC';
1954
1955    $history_list = db_get_all_page($sql, $page, $page_size, $params);
1956
1957    foreach ($history_list as $key => $history) {
1958        $history_list[$key]['c_member_ids'] = explode("-", $history['c_member_ids']);
1959    }
1960
1961    $sql = 'SELECT count(*) FROM c_send_messages_history';
1962    $total_num = db_get_one($sql, $params);
1963    $pager = admin_make_pager($page, $page_size, $total_num);
1964
1965    return $history_list;
1966}
1967
1968//メッセージ送信履歴を一つ取得
1969function db_admin_get_c_send_messages_history($c_send_messages_history_id)
1970{
1971
1972    $sql = 'SELECT * FROM c_send_messages_history WHERE c_send_messages_history_id = ?';
1973
1974    $params = array(intval($c_send_messages_history_id));
1975
1976    $history = db_get_row($sql, $params);
1977
1978    $history['c_member_ids'] = explode("-", $history['c_member_ids']);
1979
1980    return $history;
1981}
1982
1983//メッセージをキューに入れる
1984function db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body)
1985{
1986    $data = array(
1987        'c_member_id_from' => intval($c_member_id_from),
1988        'c_member_id_to'   => intval($c_member_id_to),
1989        'subject'          => strval($subject),
1990        'body'             => strval($body),
1991    );
1992    return db_insert('c_message_queue', $data);
1993}
1994
1995//メッセージをキューから削除
1996function db_admin_delete_c_message_queue($c_message_queue_id)
1997{
1998
1999    $sql = "DELETE FROM c_message_queue WHERE c_message_queue_id = ?";
2000    $params = array(intval($c_message_queue_id));
2001
2002    return db_query($sql, $params);
2003}
2004
2005//ランクを追加
2006function db_admin_insert_c_rank($name, $image_filename, $point)
2007{
2008    $data = array(
2009        'name' => strval($name),
2010        'image_filename' => strval($image_filename),
2011        'point' => intval($point),
2012    );
2013    return db_insert('c_rank', $data);
2014}
2015
2016//ランクを編集
2017function db_admin_update_c_rank($c_rank_id, $name, $image_filename, $point)
2018{
2019    $data = array(
2020        'name' => strval($name),
2021        'image_filename' => strval($image_filename),
2022        'point' => intval($point),
2023    );
2024    $where = array('c_rank_id' => intval($c_rank_id));
2025    return db_update('c_rank', $data, $where);
2026}
2027
2028//ランクを削除
2029function db_admin_delete_c_rank($c_rank_id)
2030{
2031    $sql = "DELETE FROM c_rank WHERE c_rank_id = ?";
2032    $params = array(intval($c_rank_id));
2033    return db_query($sql, $params);
2034}
2035
2036
2037//ランクを全て取得(ページャー付き)
2038function db_admin_get_c_rank_all($page, $page_size, &$pager)
2039{
2040    $sql = 'SELECT * FROM c_rank ORDER BY point';
2041
2042    $list = db_get_all_page($sql, $page, $page_size, $params);
2043
2044    $sql = 'SELECT count(*) FROM c_rank';
2045    $total_num = db_get_one($sql, $params);
2046    $pager = admin_make_pager($page, $page_size, $total_num);
2047
2048    return $list;
2049}
2050
2051//ランクを一つ取得
2052function db_admin_get_c_rank_one($c_rank_id)
2053{
2054    $sql = 'SELECT * FROM c_rank WHERE c_rank_id = ?';
2055    $params = array(intval($c_rank_id));
2056
2057    return db_get_row($sql, $params);
2058}
2059
2060//アクションを編集
2061function db_admin_update_c_action($c_action_id, $name, $point)
2062{
2063    $data = array(
2064        'name' => strval($name),
2065        'point' => intval($point),
2066    );
2067    $where = array('c_action_id' => intval($c_action_id));
2068    return db_update('c_action', $data, $where);
2069}
2070
2071//アクションを全て取得(ページャー付き)
2072function db_admin_get_c_action_all($page, $page_size, &$pager)
2073{
2074    $sql = 'SELECT * FROM c_action ORDER BY c_action_id';
2075
2076    $list = db_get_all_page($sql, $page, $page_size, $params);
2077
2078    $sql = 'SELECT count(*) FROM c_action';
2079    $total_num = db_get_one($sql, $params);
2080    $pager = admin_make_pager($page, $page_size, $total_num);
2081
2082    return $list;
2083}
2084?>
Note: See TracBrowser for help on using the repository browser.