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

source: OpenPNE/branches/takanashi/prj_takanashi/webapp/modules/admin/lib/db_admin.php @ 870

Last change on this file since 870 was 870, checked in by takanashi, 14 years ago

r743確認 プロフィール項目にテキストボックス(長)と説明文を追加

File size: 54.8 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_common_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_common_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    if (!$c_profile_option_id) {
78        return false;
79    }
80    $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
81    $params = array(intval($c_profile_option_id));
82    db_query($sql, $params);
83
84    $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
85    db_query($sql, $params);
86
87    return true;
88}
89
90function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
91{
92    $data = array(
93        'c_profile_id' => intval($c_profile_id),
94        'value' => $value,
95        'sort_order' => intval($sort_order),
96    );
97    return db_insert('c_profile_option', $data);
98}
99
100function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
101{
102    $data = array('value' => $value);
103    $where = array('c_profile_option_id' => intval($c_profile_option_id));
104    db_update('c_member_profile', $data, $where);
105
106    $data = array(
107        'value' => $value,
108        'sort_order' => intval($sort_order),
109    );
110    db_update('c_profile_option', $data, $where);
111}
112
113function db_admin_insert_c_banner($a_href, $type, $nickname)
114{
115    $data = array(
116        'a_href' => $a_href,
117        'type' => $type,
118        'nickname' => $nickname,
119        'is_hidden_after' => 0,
120        'is_hidden_before' => 0,
121    );
122    return db_insert('c_banner', $data);
123}
124
125function db_admin_update_c_banner($c_banner_id, $sets)
126{
127    $where = array('c_banner_id' => intval($c_banner_id));
128    db_update('c_banner', $sets, $where);
129}
130
131function db_admin_delete_c_banner($c_banner_id)
132{
133    db_admin_delete_c_image4c_banner_id($c_banner_id);
134
135    $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
136    $params = array(intval($c_banner_id));
137    db_query($sql, $params);
138}
139
140function db_admin_delete_c_image4c_banner_id($c_banner_id)
141{
142    $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
143    $params = array(intval($c_banner_id));
144    $image_filename = db_get_one($sql, $params);
145    image_data_delete($image_filename);
146}
147
148function db_admin_insert_c_profile(
149    $name
150    , $caption
151    , $info
152    , $is_required
153    , $public_flag_edit
154    , $public_flag_default
155    , $form_type
156    , $sort_order
157    , $disp_regist
158    , $disp_config
159    , $disp_search
160    , $val_type
161    , $val_regexp
162    , $val_min
163    , $val_max
164    )
165{
166    $data = array(
167        'name' => $name,
168        'caption' => $caption,
169        'info' => $info,
170        'is_required' => (bool)$is_required,
171        'public_flag_edit' => (bool)$public_flag_edit,
172        'public_flag_default' => $public_flag_default,
173        'form_type' => $form_type,
174        'sort_order' => (int)$sort_order,
175        'disp_regist' => (bool)$disp_regist,
176        'disp_config' => (bool)$disp_config,
177        'disp_search' => (bool)$disp_search,
178        'val_type' => $val_type,
179        'val_regexp' => $val_regexp,
180        'val_min' => (int)$val_min,
181        'val_max' => (int)$val_max,
182    );
183    return db_insert('c_profile', $data);
184}
185
186function db_admin_update_c_profile($c_profile_id
187    , $name
188    , $caption
189    , $info
190    , $is_required
191    , $public_flag_edit
192    , $public_flag_default
193    , $form_type
194    , $sort_order
195    , $disp_regist
196    , $disp_config
197    , $disp_search
198    , $val_type
199    , $val_regexp
200    , $val_min
201    , $val_max
202    )
203{
204    $data = array(
205        'name' => $name,
206        'caption' => $caption,
207        'info' => $info,
208        'is_required' => (bool)$is_required,
209        'public_flag_edit' => (bool)$public_flag_edit,
210        'public_flag_default' => $public_flag_default,
211        'form_type' => $form_type,
212        'sort_order' => intval($sort_order),
213        'disp_regist' => (bool)$disp_regist,
214        'disp_config' => (bool)$disp_config,
215        'disp_search' => (bool)$disp_search,
216        'val_type' => $val_type,
217        'val_regexp' => $val_regexp,
218        'val_min' => intval($val_min),
219        'val_max' => intval($val_max),
220    );
221    $where = array('c_profile_id' => intval($c_profile_id));
222    db_update('c_profile', $data, $where);
223
224    // 公開設定が固定のときはユーザーの設定値を上書き
225    if (!$public_flag_edit) {
226        $data = array('public_flag' => $public_flag_default);
227        db_update('c_member_profile', $data, $where);
228    }
229}
230
231function db_admin_delete_c_profile($c_profile_id)
232{
233    $params = array(intval($c_profile_id));
234
235    // メンバーのプロフィールから削除
236    $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
237    db_query($sql, $params);
238
239    // 選択肢項目を削除
240    $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
241    db_query($sql, $params);
242
243    // プロフィール項目を削除
244    $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
245    db_query($sql, $params);
246}
247
248function db_admin_c_profile4c_profile_id($c_profile_id)
249{
250    $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
251    $params = array(intval($c_profile_id));
252    return db_get_row($sql, $params);
253}
254
255/**
256 * 全バナー取得
257 *
258 * @param  int $limit 取得最大件数
259 * @return array_of_array  c_banner_list バナー配列
260 */
261function db_admin_c_banner_list4null($type = '')
262{
263    $sql = 'SELECT * FROM c_banner';
264    $params = array();
265    if ($type) {
266        $sql .= ' WHERE type = ?';
267        $params[] = $type;
268    }
269    return db_get_all($sql, $params);
270}
271
272function db_admin_c_commu_category_parent_list()
273{
274    $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
275    return db_get_all($sql);
276}
277
278function db_admin_c_commu_category_list()
279{
280    $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
281    $list = db_get_all($sql);
282
283    $category_list = array();
284    foreach ($list as $item) {
285        $category_list[$item['c_commu_category_parent_id']][] = $item;
286    }
287    return $category_list;
288}
289
290function db_admin_insert_c_commu_category_parent($name, $sort_order)
291{
292    $data = array(
293        'name' => $name,
294        'sort_order' => intval($sort_order),
295    );
296    return db_insert('c_commu_category_parent', $data);
297}
298
299function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
300{
301    $data = array(
302        'name' => $name,
303        'sort_order' => intval($sort_order),
304    );
305    $where = array(
306        'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
307    );
308    db_update('c_commu_category_parent', $data, $where);
309}
310
311function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
312{
313    $params = array(intval($c_commu_category_parent_id));
314
315    // 小カテゴリを削除
316    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
317    db_query($sql, $params);
318
319    // 中カテゴリを削除
320    $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
321    db_query($sql, $params);
322}
323
324function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order)
325{
326    $data = array(
327        'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
328        'name' => $name,
329        'sort_order' => intval($sort_order),
330    );
331    return db_insert('c_commu_category', $data);
332}
333
334function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order)
335{
336    $data = array(
337        'name' => $name,
338        'sort_order' => intval($sort_order)
339    );
340    $where = array('c_commu_category_id' => intval($c_commu_category_id));
341    db_update('c_commu_category', $data, $where);
342}
343
344function db_admin_delete_c_commu_category($c_commu_category_id)
345{
346    // 小カテゴリを削除
347    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
348    $params = array(intval($c_commu_category_id));
349    db_query($sql, $params);
350}
351
352function db_admin_c_admin_user_id4username($username)
353{
354    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
355    $params = array($username);
356    return db_get_one($sql, $params);
357}
358
359function db_admin_authenticate_password($uid, $password)
360{
361    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
362    $params = array(intval($uid), md5($password));
363    return (bool)db_get_one($sql, $params);
364}
365
366function db_admin_update_c_admin_user_password($uid, $password)
367{
368    $data = array('password' => md5($password));
369    $where = array('c_admin_user_id' => intval($uid));
370    db_update('c_admin_user', $data, $where);
371}
372
373function db_admin_c_admin_config4name($name)
374{
375    $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
376    $params = array($name);
377    return db_get_one($sql, $params);
378}
379
380function db_admin_insert_c_admin_config($name, $value)
381{
382    $data = array(
383        'name' => $name,
384        'value' => $value,
385    );
386    return db_insert('c_admin_config', $data);
387}
388
389function db_admin_update_c_admin_config($name, $value)
390{
391    $data = array('value' => $value);
392    $where = array('name' => $name);
393    db_update('c_admin_config', $data, $where);
394}
395
396function db_admin_replace_c_admin_config($name, $value)
397{
398    $sql = 'DELETE FROM c_admin_config WHERE name = ?';
399    $params = array($name);
400    db_query($sql, $params);
401
402    $data = array(
403        'name'  => strval($name),
404        'value' => strval($value),
405    );
406    return db_insert('c_admin_config', $data);
407}
408
409function db_admin_c_admin_config_all()
410{
411    $sql = 'SELECT name, value FROM c_admin_config';
412    return db_get_assoc($sql);
413}
414
415function db_admin_delete_c_image_link4image_filename($image_filename)
416{
417    // c_banner (削除)
418    $sql = 'DELETE FROM c_banner WHERE image_filename = ?';
419    $params = array($image_filename);
420    db_query($sql, $params);
421
422    // c_commu
423    $tbl = 'c_commu';
424    _db_admin_empty_image_filename($tbl, $image_filename);
425
426    // c_commu_topic_comment
427    $tbl = 'c_commu_topic_comment';
428    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename1');
429    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename2');
430    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename3');
431
432    // c_diary
433    $tbl = 'c_diary';
434    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
435    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
436    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
437
438    // c_diary_comment
439    $tbl = 'c_diary_comment';
440    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
441    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
442    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
443
444    // c_member
445    $tbl = 'c_member';
446    _db_admin_empty_image_filename($tbl, $image_filename);
447    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
448    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
449    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
450}
451
452function _db_admin_empty_image_filename($tbl, $image_filename, $column = 'image_filename')
453{
454    $data = array(
455        db_escapeIdentifier($column) => '',
456    );
457    $where = array(
458        db_escapeIdentifier($column) => $image_filename,
459    );
460    db_update(db_escapeIdentifier($tbl), $data, $where);
461}
462
463function db_admin_c_profile_name_exists($name)
464{
465    $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
466    $params = array($name);
467    return db_get_one($sql, $params);
468}
469
470function db_admin_update_is_login_rejected($c_member_id)
471{
472    $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
473    $params = array(intval($c_member_id));
474    $is_login_rejected = db_get_one($sql, $params);
475    if (is_null($is_login_rejected)) {
476        return false;
477    }
478
479    $data = array('is_login_rejected' => !($is_login_rejected));
480    $where = array('c_member_id' => intval($c_member_id));
481    return db_update('c_member', $data, $where);
482}
483
484function db_admin_c_admin_user_list()
485{
486    $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
487    return db_get_all($sql);
488}
489
490function db_admin_exists_c_admin_username($username)
491{
492    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
493    $params = array(strval($username));
494    return (bool)db_get_one($sql, $params);
495}
496
497function db_admin_insert_c_admin_user($username, $password, $auth_type)
498{
499    $data = array(
500        'username' => strval($username),
501        'password' => md5($password),
502        'auth_type' => strval($auth_type),
503    );
504    return db_insert('c_admin_user', $data);
505}
506
507function db_admin_delete_c_admin_user($c_admin_user_id)
508{
509    $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
510    $params = array(intval($c_admin_user_id));
511    return db_query($sql, $params);
512}
513
514function db_admin_get_auth_type($c_admin_user_id)
515{
516    $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
517    $params = array(intval($c_admin_user_id));
518    return db_get_one($sql, $params);
519}
520
521/**
522 * ユーザーIDリスト取得(絞り込み対応)
523 */
524function _db_admin_c_member_id_list($cond_list)
525{
526    $sql = 'SELECT c_member_id'.
527           ' FROM c_member'.
528           ' WHERE 1';
529
530    //開始年
531    if (!empty($cond_list['s_year'])) {
532        $sql .= ' AND birth_year >= ?';
533        $params[] = $cond_list['s_year'];
534    }
535    //終了年
536    if (!empty($cond_list['e_year'])) {
537        $sql .= ' AND birth_year <= ?';
538        $params[] = $cond_list['e_year'];
539    }
540    $sql .= ' ORDER BY c_member_id';
541
542    $ids = db_get_col($sql, $params);
543
544    //各プロフィールごとで絞り結果をマージする
545    $_sql = 'SELECT name FROM c_profile WHERE (form_type = ? OR form_type = ?)';
546    $profile = db_get_col($_sql, array('select', 'radio'));
547
548    if ( $profile ) {
549        foreach ($profile as $value) {
550            if (!empty($cond_list[$value])) {
551                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
552                $params = array($cond_list[$value]);
553                $temp_ids = db_get_col($sql, $params);
554                $ids = array_intersect($ids, $temp_ids);
555            }
556        }
557    }
558
559    return $ids;
560}
561
562/**
563 * ユーザーリスト取得
564 * 誕生年+プロフィール(select,radioのみ)
565 */
566function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list)
567{
568    $ids = _db_admin_c_member_id_list($cond_list);
569    $total_num = count($ids);
570    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
571
572    $c_member_list = array();
573    foreach ($ids as $id) {
574        $c_member_list[] = db_common_c_member4c_member_id($id, true, true, 'private');
575    }
576
577    if ($total_num > 0) {
578        $pager = admin_make_pager($page, $page_size, $total_num);
579    }
580
581    return $c_member_list;
582}
583
584function db_c_profile_option4c_profile_option_id($c_profile_option_id)
585{
586    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
587    $params = array(intval($c_profile_option_id));
588    return db_get_row($sql, $params);
589}
590
591/**
592 * メンバー絞込みパラメータ取得
593 */
594function validate_cond($requests)
595{
596    $cond_list = array();
597    //誕生年
598    if (!empty($requests['s_year'])) {
599        $cond_list['s_year'] = intval($requests['s_year']);
600    }
601    if (!empty($requests['e_year'])) {
602        $cond_list['e_year'] = intval($requests['e_year']);
603    }
604    //プロフィール
605    $profile_list = db_common_c_profile_list();
606
607    foreach ($profile_list as $key => $value) {
608        if (!empty($requests[$key])) {
609            $cond_list[$key] = intval($requests[$key]);
610        }
611    }
612    return $cond_list;
613}
614
615function do_admin_send_mail($c_member_id, $subject, $body)
616{
617    $c_member = db_common_c_member4c_member_id($c_member_id, true);
618
619    if ($c_member['secure']['pc_address']) {
620        $send_address = $c_member['secure']['pc_address'];
621    } else {
622        $send_address = $c_member['secure']['ktai_address'];
623    }
624
625    if (OPENPNE_MAIL_QUEUE) {
626        //メールキューに蓄積
627        put_mail_queue($send_address, $subject, $body);
628    } else {
629        t_send_email($send_address, $subject, $body);
630    }
631}
632
633//メッセージ受信メール(メールキュー蓄積対応)
634function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
635{
636    //メッセージ
637    $c_message_id = _do_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
638
639    do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
640    do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
641
642    return $c_message_id;
643}
644
645//メッセージ受信メール(メールキュー蓄積対応)
646function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
647{
648    $c_member_to = db_common_c_member4c_member_id($c_member_id_to, true);
649    $pc_address = $c_member_to['secure']['pc_address'];
650    $is_receive_mail = $c_member_to['is_receive_mail'];
651
652    $params = array(
653        "c_member_to"   => db_common_c_member4c_member_id($c_member_id_to),
654        "c_member_from" => db_common_c_member4c_member_id($c_member_id_from),
655    );
656    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
657}
658
659//◆メッセージ受信メール(携帯)
660function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from)
661{
662    $c_member_to = db_common_c_member4c_member_id($c_member_id_to, true);
663    $ktai_address = $c_member_to['secure']['ktai_address'];
664    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
665    $p = array('kad' => t_encrypt($c_member_to['secure']['ktai_address']));
666    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
667
668    $params = array(
669        'c_member_to'   => db_common_c_member4c_member_id($c_member_id_to),
670        'c_member_from' => db_common_c_member4c_member_id($c_member_id_from),
671        'login_url' => $login_url,
672    );
673    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
674}
675
676function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
677{
678    $tpl_name .= '.tpl';
679    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
680        list($subject, $body) = $tpl;
681        if ($from) {
682            if (OPENPNE_MAIL_QUEUE) {
683                //メールキューに蓄積
684                put_mail_queue($address, $subject, $body, $force, $from);
685            } else {
686                t_send_email($address, $subject, $body, $force, $from);
687            }
688        } else {
689            if (OPENPNE_MAIL_QUEUE) {
690                //メールキューに蓄積
691                put_mail_queue($address, $subject, $body, $force);
692            } else {
693                t_send_email($address, $subject, $body, $force);
694            }
695        }
696        return true;
697    } else {
698        return false;
699    }
700}
701
702function db_access_analysis_c_admin_user_id4username($username)
703{
704    $sql = "SELECT c_admin_user_id FROM c_admin_user" .
705        " WHERE username = ?";
706    $params = array($username);
707    return db_get_one($sql,$params);
708}
709
710function p_access_analysis_month_access_analysis_month($ktai_flag)
711{
712    $sql = "SELECT concat(left(r_datetime, 7), '-01') as ym, count(*) as count" .
713            " FROM c_access_log " .
714            " where ktai_flag = ?" .
715            " group by ym";
716    $params = array(intval($ktai_flag));           
717    $list = db_get_all($sql,$params);
718    return $list;
719}
720
721
722function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
723{
724    $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
725            " FROM c_access_log " .
726            " where left(r_datetime, 7) = ?" .
727            " and ktai_flag = ? " .
728            " group by ymd";           
729    $params = array(intval(substr($ym,0,7)),intval($ktai_flag));
730    $list = db_get_all($sql,$params);
731   
732    $year = substr($ym, 0, 4);
733    $month = substr($ym, 5,2);
734   
735    $return = array();
736    $days_num = date("t", mktime (0,0,0,$month,1,$year));
737    for($i=1 ; $i<=$days_num; $i++) {
738        $date = substr($ym,0,8) . substr("00".$i, -2, 2);
739
740        $count = 0;
741        foreach($list as $value) {
742            if ($value['ymd'] == $date) {
743                $count = $value['count'];
744            }
745        }
746        $return[] = array("ymd"=>$date, "count"=>$count);
747    }
748    return $return;
749}
750
751function get_page_name($ktai_flag, $orderby=1)
752{
753    if ($orderby == 1) {
754        $orderby_str = " order by page_name asc";
755    } elseif ($orderby == -1) {
756        $orderby_str = " order by page_name desc";
757    }
758    $sql = "select distinct page_name from c_access_log " .
759            " where ktai_flag = ? " .
760            $orderby_str;
761    $params = array(intval($ktai_flag));
762    return db_get_col($sql,$params);
763}
764
765function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
766{
767
768    if ($orderby == 1) {
769        $orderby_str = " order by page_name asc";
770    } elseif ($orderby == -1) {
771        $orderby_str = " order by page_name desc";
772    } elseif ($orderby == 2) {
773        $orderby_str = " order by count asc";
774    } elseif ($orderby == -2) {
775        $orderby_str = " order by count desc";
776    }
777    $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
778    $params = array(intval($ktai_flag));
779    if ($month_flag) {
780        $sql .= " and left(r_datetime, 7) = ? ";
781        array_push($params,substr($ymd,0,7));
782    } else {
783        $sql .= " and left(r_datetime,10) = ? ";
784        array_push($params,$ymd);
785    }
786    $sql .= " group by page_name ".    $orderby_str;
787    $list = db_get_all($sql,$params);
788
789    $sum = 0;
790    $return = array();
791    if (abs($orderby) == 1) {
792        $page_name = get_page_name($ktai_flag, $orderby);
793        foreach($page_name as $name) {
794            $count = 0;
795            foreach($list as $value) {
796                if ($value['page_name'] == $name) $count = $value['count'];
797            }
798
799                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);
800
801            $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);
802            $sum += $count;
803        }
804    } elseif (abs($orderby) == 2) {
805        $page_name = get_page_name($ktai_flag);
806
807        $t_page_name = $page_name;
808
809        //アクセスがゼロのページを取得する
810        foreach($page_name as $key=>$name) {
811            foreach($list as $value) {
812                if ($value['page_name'] == $name) {
813                    unset($page_name[$key]);//$listに含まれるページネームを削除
814                }
815            }
816        }
817
818        foreach($page_name as $key=>$name) {
819            $page_name[$key] = array("page_name"=>$name, "count"=>0);
820        }
821
822        if ($orderby == 2) {
823            $return = array_merge($page_name , $list);
824        } elseif ($orderby == -2) {
825            $return = array_merge($list, $page_name);
826        }
827        foreach($list as $value) {
828            $sum += $value['count'];
829        }
830
831        foreach($return as $value) {
832
833            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']);
834
835            $value['is_target_c_member_id'] = $is_target_c_member_id;
836            $value['is_target_c_commu_id'] = $is_target_c_commu_id;
837            $value['is_target_c_topic_id'] = $is_target_c_topic_id;
838            $value['is_target_c_diary_id'] = $is_target_c_diary_id;
839            $value['is_c_member_id'] = $is_c_member_id;
840            $t_return[] = $value;
841
842        }
843
844        $return = $t_return;
845
846    }
847   
848    return array($return, $sum);
849}
850
851
852/*
853 * target_commu
854 *
855 */
856function p_access_analysis_target_commu_target_commu4ym_page_name
857($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
858{
859   
860    $start = ($page - 1) * $page_size;
861   
862    if ($orderby == 1) {
863        $orderby_str = " order by target_c_commu_id asc";
864    } elseif ($orderby == -1) {
865        $orderby_str = " order by target_c_commu_id desc";
866    } elseif ($orderby == 2) {
867        $orderby_str = " order by count asc";
868    } elseif ($orderby == -2) {
869        $orderby_str = " order by count desc";
870    }
871   
872    $sql = "select target_c_commu_id , count(*) as count from c_access_log  where ktai_flag = ? ";
873    $params = array(intval($ktai_flag));
874    if ($month_flag) {
875            $sql .= " and left(r_datetime, 7) = ? ";
876            array_push($params,substr($ymd,0,7));
877    } else {
878            $sql .= " and left(r_datetime,10) = ? ";
879            array_push($params,$ymd);
880    }
881    if ($page_name!="all") {
882            $sql .= " and page_name = ? ";
883            array_push($params,$page_name);
884    }
885    $sql .= " and target_c_commu_id <> 0 ";
886    $sql .= " group by target_c_commu_id " .$orderby_str." limit $start, $page_size";
887    $list = db_get_all($sql,$params);
888
889    $return = array();
890    $sum = 0;
891    foreach($list as $key => $value) {
892        if ($value['target_c_commu_id']) {
893            $c_commu = _db_c_commu4c_commu_id($value['target_c_commu_id']);
894            $return[] = array_merge($value, $c_commu);
895            $sum += $value['count'];
896        }
897    }
898
899    $sql =   "select count(*) from c_access_log  where ktai_flag = ? ";
900    $params = array(intval($ktai_flag));
901    if ($month_flag) {
902        $sql .= " and left(r_datetime, 7) = ? ";
903        array_push($params,substr($ymd,0,7));
904    } else {
905        $sql .= " and left(r_datetime,10) = ? ";
906        array_push($params,$ymd);
907    }
908    if ($page_name!="all") {
909        $sql .= " and page_name = ? ";
910        array_push($params,$page_name);
911    }
912    $sql .= " and target_c_commu_id <> 0 ";
913    $sql .= " group by target_c_commu_id ";
914    $result = db_get_all($sql,$params);
915    $total_num = count($result);
916
917    if ($total_num != 0) {
918        $total_page_num =  ceil($total_num / $page_size);
919        if ($page >= $total_page_num) {
920            $next = false;
921        }else{
922            $next = true;
923        }
924        if ($page <= 1) {
925            $prev = false;
926        }else{
927            $prev = true;
928        }
929    }
930    $start_num = ($page - 1) * $page_size + 1 ;
931    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
932
933    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
934}
935
936function p_access_analysis_target_topic_target_topic4ym_page_name
937($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
938{
939    $start = ($page - 1) * $page_size;
940   
941    if ($orderby == 1) {
942        $orderby_str = " order by target_c_commu_topic_id asc";
943    } elseif ($orderby == -1) {
944        $orderby_str = " order by target_c_commu_topic_id desc";
945    } elseif ($orderby == 2) {
946        $orderby_str = " order by count asc";
947    } elseif ($orderby == -2) {
948        $orderby_str = " order by count desc";
949    }
950    $where =" where ktai_flag = ? ";
951    $params = array(intval($ktai_flag));
952    if ($month_flag) {
953            $where .= " and left(r_datetime, 7) = ? ";
954            array_push($params,substr($ymd,0,7));
955    } else {
956            $where .= " and left(r_datetime,10) = ? ";
957            array_push($params,$ymd);
958    }
959    if ($page_name!="all") {
960            $where .= " and page_name = ? ";
961            array_push($params,$page_name);
962    }
963    $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
964    $sql .= $where." group by target_c_commu_topic_id " .$orderby_str." limit $start, $page_size";
965    $list = db_get_all($sql,$params);
966    $sql = "select count(*) from c_access_log ";
967    $sql .= $where ." group by target_c_commu_topic_id ";
968    $result = db_get_all($sql,$params);
969    $total_num = count($result);
970
971    $return = array();
972    $sum = 0;
973    foreach ($list as $key => $value) {
974        if ($value['target_c_commu_topic_id']) {
975            $c_commu_topic = c_topic_detail_c_topic4c_commu_topic_id($value['target_c_commu_topic_id']);
976            $c_commu_topic['topic_name'] = $c_commu_topic['name'];
977            $c_commu = _db_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
978            $c_commu_topic['commu_name'] = $c_commu['name'];
979            $return[] = array_merge($value, $c_commu_topic);
980            $sum += $value['count'];
981        }
982    }
983
984    if ($total_num != 0) {
985        $total_page_num =  ceil($total_num / $page_size);
986        if ($page >= $total_page_num) {
987            $next = false;
988        } else {
989            $next = true;
990        }
991        if ($page <= 1) {
992            $prev = false;
993        } else {
994            $prev = true;
995        }
996    }
997    $start_num = ($page - 1) * $page_size + 1 ;
998    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
999
1000    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1001}
1002
1003function p_access_analysis_target_diary_target_diary4ym_page_name
1004($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1005{
1006   
1007    $start = ($page - 1) * $page_size;
1008   
1009    if ($orderby == 1) {
1010        $orderby_str = " order by target_c_diary_id asc";
1011    } elseif ($orderby == -1) {
1012        $orderby_str = " order by target_c_diary_id desc";
1013    } elseif ($orderby == 2) {
1014        $orderby_str = " order by count asc";
1015    } elseif ($orderby == -2) {
1016        $orderby_str = " order by count desc";
1017    }
1018   
1019    $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
1020    $params = array(intval($ktai_flag));
1021    if ($month_flag) {
1022        $sql .= " and left(r_datetime, 7) = ? ";
1023        array_push($params,substr($ymd,0,7));
1024    } else {
1025        $sql .= " and left(r_datetime,10) = ? ";
1026        array_push($params,$ymd);
1027    }
1028    if ($page_name!="all") {
1029        $sql .= " and page_name = ? ";
1030        array_push($params,$page_name);
1031    }
1032    $sql .= " and target_c_diary_id <> 0 ";
1033    $sql .= " group by target_c_diary_id " . $orderby_str. " limit $start, $page_size";
1034    $list = db_get_all($sql,$params);
1035
1036    $return = array();
1037    $sum = 0;
1038    foreach ($list as $key => $value) {
1039        if ($value['target_c_diary_id']) {
1040            $c_diary = db_diary_get_c_diary4id($value['target_c_diary_id']);
1041            $c_member = db_common_c_member4c_member_id($c_diary['c_member_id']);
1042            $c_diary['nickname'] = $c_member['nickname'];
1043            $return[] = array_merge($value, $c_diary);
1044            $sum += $value['count'];
1045        }
1046    }
1047
1048    $sql =   "select count(*) from c_access_log where ktai_flag = ? ";
1049    $params = array(intval($ktai_flag));
1050    if ($month_flag) {
1051            $sql .= " and left(r_datetime, 7) = ? ";
1052            array_push($params,substr($ymd,0,7));
1053    } else {
1054            $sql .= " and left(r_datetime,10) = ? ";
1055            array_push($params,$ymd);
1056    }
1057    $sql .= " and target_c_diary_id <> 0 ";
1058    $sql .= " group by target_c_diary_id ";
1059    $result = db_get_all($sql,$params);
1060    $total_num = count($result);
1061
1062    if ($total_num != 0) {
1063        $total_page_num =  ceil($total_num / $page_size);
1064        if ($page >= $total_page_num) {
1065            $next = false;
1066        }else{
1067            $next = true;
1068        }
1069        if ($page <= 1) {
1070            $prev = false;
1071        }else{
1072            $prev = true;
1073        }
1074    }
1075    $start_num = ($page - 1) * $page_size + 1 ;
1076    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1077
1078    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1079}
1080
1081function p_access_analysis_member_access_member4ym_page_name
1082($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1083{
1084    $start = ($page - 1) * $page_size;
1085   
1086    if ($orderby == 1) {
1087        $orderby_str = " order by target_c_member_id asc";
1088    } elseif ($orderby == -1) {
1089        $orderby_str = " order by target_c_member_id desc";
1090    } elseif ($orderby == 2) {
1091        $orderby_str = " order by count asc";
1092    } elseif ($orderby == -2) {
1093        $orderby_str = " order by count desc";
1094    }
1095   
1096    $where =" where ktai_flag = ? ";
1097    $params = array(intval($ktai_flag));
1098    if ($month_flag) {
1099        $where .= " and left(r_datetime, 7) = ? ";
1100        array_push($params,substr($ymd,0,7));
1101    } else {
1102        $where .= " and left(r_datetime,10) = ? ";
1103        array_push($params,$ymd);
1104    }
1105    if ($page_name!="all") {
1106        $where .= " and page_name = ? ";
1107        array_push($params,$page_name);
1108    }
1109
1110    $sql = "select c_member_id , count(*) as count from c_access_log";
1111    $sql .= $where." group by c_member_id $orderby_str limit $start, $page_size";
1112    $list = db_get_all($sql,$params);
1113    $sql = "select count(*) from c_access_log ";
1114    $sql .=    $where ." group by c_member_id ";
1115    $result = db_get_all($sql,$params);
1116    $total_num = count($result);
1117
1118    $return = array();
1119    $sum = 0;
1120    foreach($list as $key => $value) {
1121        if ($value['c_member_id']) {
1122            $c_member = _db_c_member4c_member_id($value['c_member_id']);
1123            $return[] = array_merge($value, $c_member);
1124            $sum += $value['count'];
1125        }
1126    }
1127
1128
1129    if ($total_num != 0) {
1130        $total_page_num =  ceil($total_num / $page_size);
1131        if ($page >= $total_page_num) {
1132            $next = false;
1133        }else{
1134            $next = true;
1135        }
1136        if ($page <= 1) {
1137            $prev = false;
1138        }else{
1139            $prev = true;
1140        }
1141    }
1142    $start_num = ($page - 1) * $page_size + 1 ;
1143    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1144    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1145}
1146
1147function p_access_analysis_target_member_access_member4ym_page_name
1148($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1149{
1150    $start = ($page - 1) * $page_size;
1151   
1152    if ($orderby == 1) {
1153        $orderby_str = " order by target_c_member_id asc";
1154    } elseif ($orderby == -1) {
1155        $orderby_str = " order by target_c_member_id desc";
1156    } elseif ($orderby == 2) {
1157        $orderby_str = " order by count asc";
1158    } elseif ($orderby == -2) {
1159        $orderby_str = " order by count desc";
1160    }
1161    $where =" where ktai_flag = ? ";
1162    $params = array(intval($ktai_flag));
1163        if ($month_flag) {
1164                $where .= " and left(r_datetime, 7) = ? ";
1165                array_push($params,substr($ymd,0,7));
1166        } else {
1167                $where .= " and left(r_datetime,10) = ? ";
1168                array_push($params,$ymd);
1169        }
1170        if ($page_name!="all") {
1171                $where .= " and page_name = ? ";
1172                array_push($params,$page_name);
1173        }
1174    $sql = "select target_c_member_id , count(*) as count from c_access_log ";
1175    $sql .= $where;
1176    $sql .= " AND target_c_member_id <> 0 ";
1177    $sql .= " group by target_c_member_id " . $orderby_str. " limit $start, $page_size";
1178
1179    $list = db_get_all($sql,$params);
1180
1181    $return = array();
1182    $sum = 0;
1183    foreach($list as $key => $value) {
1184        if ($value['target_c_member_id']) {
1185            $c_member = db_common_c_member4c_member_id($value['target_c_member_id']);
1186            $return[] = array_merge($value, $c_member);
1187            $sum += $value['count'];
1188        }
1189    }
1190
1191    $where =" where ktai_flag = ? ";
1192    $params = array(intval($ktai_flag));
1193        if ($month_flag) {
1194                $where .= " and left(r_datetime, 7) = ? ";
1195                array_push($params,substr($ymd,0,7));
1196        } else {
1197                $where .= " and left(r_datetime,10) = ? ";
1198                array_push($params,$ymd);
1199        }
1200        if ($page_name!="all") {
1201                $where .= " and page_name = ? ";
1202                array_push($params,$page_name);
1203        }
1204    $sql = "select count(*) from c_access_log " ;
1205    $sql .= $where;
1206    $sql .= " AND target_c_member_id <> 0 ";
1207    $sql .= " group by target_c_member_id ";
1208   
1209    $result = db_get_all($sql,$params);
1210    $total_num = count($result);
1211
1212    if ($total_num != 0) {
1213        $total_page_num =  ceil($total_num / $page_size);
1214        if ($page >= $total_page_num) {
1215            $next = false;
1216        } else {
1217            $next = true;
1218        }
1219        if ($page <= 1) {
1220            $prev = false;
1221        } else {
1222            $prev = true;
1223        }
1224    }
1225    $start_num = ($page - 1) * $page_size + 1 ;
1226    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1227
1228    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);   
1229}
1230
1231function get_is_show($name)
1232{
1233    //必要のない詳細ボタンを消す
1234    switch($name) {
1235    case "h_home":
1236        $is_target_c_member_id = 0;
1237        $is_target_c_commu_id = 0;
1238        $is_target_c_topic_id = 0;
1239        $is_target_c_diary_id = 0;
1240        $is_c_member_id = 1;
1241        break;
1242
1243    case "fh_friend_list":
1244        $is_target_c_member_id = 0;
1245        $is_target_c_commu_id = 0;
1246        $is_target_c_topic_id = 0;
1247        $is_target_c_diary_id = 0;
1248        $is_c_member_id = 1;
1249        break;
1250
1251    case "h_message":
1252        $is_target_c_member_id = 0;
1253        $is_target_c_commu_id = 0;
1254        $is_target_c_topic_id = 0;
1255        $is_target_c_diary_id = 0;
1256        $is_c_member_id = 1;
1257        break;
1258
1259    case "fh_diary_list":
1260        $is_target_c_member_id = 0;
1261        $is_target_c_commu_id = 0;
1262        $is_target_c_topic_id = 0;
1263        $is_target_c_diary_id = 0;
1264        $is_c_member_id = 1;
1265        break;
1266
1267    case "h_message_box":
1268        $is_target_c_member_id = 0;
1269        $is_target_c_commu_id = 0;
1270        $is_target_c_topic_id = 0;
1271        $is_target_c_diary_id = 0;
1272        $is_c_member_id = 1;
1273        break;
1274
1275    case "f_home":
1276        $is_target_c_member_id = 1;
1277        $is_target_c_commu_id = 0;
1278        $is_target_c_topic_id = 0;
1279        $is_target_c_diary_id = 0;
1280        $is_c_member_id = 1;
1281        break;
1282
1283    case "h_com_find_all":
1284        $is_target_c_member_id = 0;
1285        $is_target_c_commu_id = 0;
1286        $is_target_c_topic_id = 0;
1287        $is_target_c_diary_id = 0;
1288        $is_c_member_id = 1;
1289        break;
1290
1291    case "reply_message":
1292        $is_target_c_member_id = 0;
1293        $is_target_c_commu_id = 0;
1294        $is_target_c_topic_id = 0;
1295        $is_target_c_diary_id = 0;
1296        $is_c_member_id = 1;
1297        break;
1298
1299    case "f_message_send":
1300        $is_target_c_member_id = 0;
1301        $is_target_c_commu_id = 0;
1302        $is_target_c_topic_id = 0;
1303        $is_target_c_diary_id = 0;
1304        $is_c_member_id = 1;
1305        break;
1306
1307    case "f_message_send":
1308        $is_target_c_member_id = 0;
1309        $is_target_c_commu_id = 0;
1310        $is_target_c_topic_id = 0;
1311        $is_target_c_diary_id = 0;
1312        $is_c_member_id = 1;
1313        break;
1314   
1315    case "h_diary_list_all":
1316        $is_target_c_member_id = 0;
1317        $is_target_c_commu_id = 0;
1318        $is_target_c_topic_id = 0;
1319        $is_target_c_diary_id = 0;
1320        $is_c_member_id = 1;
1321        break;
1322
1323    case "h_search":
1324        $is_target_c_member_id = 0;
1325        $is_target_c_commu_id = 0;
1326        $is_target_c_topic_id = 0;
1327        $is_target_c_diary_id = 0;
1328        $is_c_member_id = 1;
1329        break;
1330
1331    case "f_message_send_confirm":
1332        $is_target_c_member_id = 1;
1333        $is_target_c_commu_id = 0;
1334        $is_target_c_topic_id = 0;
1335        $is_target_c_diary_id = 0;
1336        $is_c_member_id = 1;
1337        break;
1338
1339    default:
1340        $is_target_c_member_id = 1;
1341        $is_target_c_commu_id = 1;
1342        $is_target_c_topic_id = 1;
1343        $is_target_c_diary_id = 1;
1344        $is_c_member_id = 1;
1345        break;
1346    }
1347
1348    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);
1349
1350}
1351
1352/**
1353
1354カラムごとに条件を指定して絞ったメンバーの一覧を返す
1355
1356[引数]
1357適時追加していく
1358
1359$s_access_date    最終ログイン時刻 開始年月日
1360$e_access_date    最終ログイン時刻 終了年月日
1361
1362[返り値]
1363c_member_list
1364
1365*/
1366function p_member_edit_c_member_list($page_size, $page,$s_access_date='', $e_access_date='')
1367{
1368
1369    $page = intval($page);
1370    $page_size = intval($page_size);
1371
1372    $limit = "";
1373
1374    //page_sizeが0の時は全て表示(pagerなし)
1375    if ($page_size != 0) {
1376        $limit = " LIMIT ".($page_size*($page-1)).",$page_size";
1377    }
1378    $where = " WHERE 1 ";
1379
1380    //指定された条件で絞っていく
1381    if ($s_access_date != "") {
1382        $where = $where . " and access_date >= ?";
1383        $params = array($s_access_date);
1384    }
1385
1386    if ($e_access_date != "") {
1387        $where = $where . " and access_date < ?";
1388        $params = array($e_access_date);
1389    }
1390
1391    $select = "SELECT * FROM c_member";
1392    $order = " order by c_member_id";
1393
1394    $sql = $select . $where . $order . $limit;
1395    $list = db_get_all_limit($sql, 0, $limit, $params);
1396   
1397    $sql = "select count(*) from c_member".$where;
1398
1399    $total_num = db_get_one($sql, $params);
1400   
1401    if ($total_num != 0 && $page_size != 0) {
1402        $total_page_num =  ceil($total_num / $page_size);
1403        if ($page >= $total_page_num) {
1404            $next = false;
1405        } else {
1406            $next = true;
1407        }
1408        if ($page <= 1) {
1409            $prev = false;
1410        } else {
1411            $prev = true;
1412        }
1413    }
1414
1415    return array($list , $prev , $next, $total_num);
1416}
1417
1418function _db_c_member4c_member_id($c_member_id)
1419{
1420    $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
1421        $params = array(intval($c_member_id));
1422    return db_get_row($sql,$params);
1423}
1424
1425/**
1426 * 男と女の人数を取得
1427 */
1428function get_analysis_sex()
1429{
1430    $sql = "select count(*) from c_member where sex = '男'";
1431    $analysis_sex['male'] = get_one4db($sql);
1432    $sql = "select count(*) from c_member where sex = '女'";
1433    $analysis_sex['female'] = get_one4db($sql);
1434   
1435    return $analysis_sex;
1436   
1437}
1438
1439/**
1440 * 世代の人数を取得
1441 */
1442function get_analysis_generation()
1443{
1444    $analysis_generation = array(
1445            '0~9' => 0,
1446            '10~19' => 0,
1447            '20~29' => 0,
1448            '30~39' => 0,
1449            '40~49' => 0,
1450            '50~59' => 0,
1451            '60~69' => 0,
1452            '70~79' => 0,
1453            '80~' =>0
1454    );
1455   
1456    $sql = "select ((year(curdate()) - birth_year)- (RIGHT(CURDATE(),5)<concat(birth_month,'-',birth_day))) as age from c_member;";
1457    $lst = db_get_all($sql);
1458
1459    $temp = array_keys($analysis_generation);
1460    foreach($lst as $value) {
1461        $key = (int)($value['age'] / 10);
1462        if ($key > count($analysis_generation)-1) {
1463            $analysis_generation[$temp[count($analysis_generation)-1]]++;
1464        } else {
1465            $analysis_generation[$temp[$key]]++;
1466        }
1467    }
1468
1469    return $analysis_generation;
1470   
1471}
1472
1473/**
1474 * 地域別の人数を取得
1475 */
1476function get_analysis_region()
1477{
1478    $pref = p_regist_prof_c_profile_pref_list4null();
1479    $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
1480    $lst = get_array_list4db($sql);
1481
1482    foreach($pref as $value) {
1483        $analysis_region[$value] = 0;   
1484    }
1485
1486    foreach ($lst as $value) {
1487        if ($value['pref_id'] == 0) {
1488            $analysis_region['その他']++;
1489        } else {
1490            $analysis_region[$pref[$value['pref_id']]]++;
1491        }
1492    }
1493
1494    return $analysis_region;
1495   
1496}
1497
1498function get_analysis_date_month($year = "", $month = "")
1499{
1500    $sql = "select date_format(r_date,'%Y-%m') from c_member order by r_date";
1501    $start_date = db_get_one($sql);
1502
1503    $i = 0;
1504    list($y, $m) = split("-",$start_date);
1505    do{
1506        $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
1507        $analysis_date_month[$date] = 0;
1508    }while($date < date("Y-m"));   
1509   
1510    $sql = "select date_format(r_date,'%Y-%m') as d from c_member";
1511    $lst = db_get_all($sql);
1512    foreach ($lst as $value) {
1513        $analysis_date_month[$value['d']]++;
1514    }
1515    return $analysis_date_month;
1516}
1517
1518function get_analysis_date_day_d($date="")
1519{
1520    if ($date == "") {
1521       $date = date("Y-m-d");
1522    }
1523    return $date;
1524}
1525
1526
1527function get_analysis_date_day($date="")
1528{
1529    if ($date == "") {
1530        $date = date("Y-m");
1531    }
1532    //一ヶ月の日数
1533    $day_num = date("t");
1534
1535    for($i=1 ; $i<=$day_num; $i++) {
1536        //一桁の数を二桁にする
1537        if ($i < 10) {
1538            $i = "0".$i;
1539        }
1540        $analysis_date_day[$i] = 0;
1541    }
1542
1543   
1544    $sql = "select date_format(r_date,'%d') as d from c_member where date_format(r_date,'%Y-%m') = ?";
1545    $params = array($date);
1546    $lst = db_get_all($sql,$params);
1547
1548    foreach($lst as $value) {
1549        $analysis_date_day[$value['d']]++;
1550    }
1551   
1552    return $analysis_date_day;
1553}
1554
1555function p_access_analysis_select_profile_list()
1556{
1557    $sql = "SELECT * " .
1558            " FROM c_profile " .
1559            " where form_type = 'select' ";
1560           
1561    $list = db_get_all($sql);
1562    return $list;
1563}
1564
1565/**
1566 * 指定されたIDのプロフィールの人数別一覧を作成
1567 */
1568function get_analysis_profile($c_profile_id)
1569{
1570    $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
1571        " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
1572        " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
1573    $params = array(intval($c_profile_id));
1574    $analysis_profile = db_get_all($sql,$params);
1575   
1576    return $analysis_profile;
1577}
1578
1579function get_analysis_count_profile_all($c_profile_id)
1580{
1581    $sql = "select count(*) as count from c_member_profile " .
1582        " WHERE c_profile_id = ? ";
1583    $params = array(intval($c_profile_id));
1584    $analysis_profile = db_get_one($sql,$params);
1585   
1586    return $analysis_profile;
1587}
1588
1589function analysis_profile4c_profile_id($c_profile_id)
1590{
1591    $sql = "SELECT * FROM c_profile" .
1592            " WHERE c_profile_id = ? ";
1593    $params = array(intval($c_profile_id));
1594    $profile = db_get_row($sql,$params);
1595   
1596    return $profile;
1597}
1598function monitor_diary_list($keyword,$page_size,$page)
1599{
1600
1601    $page = intval($page);
1602    $page_size = intval($page_size);
1603   
1604    $where = " where 1 ";
1605
1606    if ($keyword) {
1607        //全角空白を半角に統一
1608        $keyword = str_replace(" ", " ", $keyword);
1609        $keyword_list = explode(" ", $keyword);
1610           
1611        for($i=0;$i < count($keyword_list);$i++) {
1612            $keyword = check_search_word( $keyword_list[$i] );
1613               
1614            $where .= " and (c_diary.subject like ? ";
1615            $where .= " or c_diary.body like ? ) ";
1616            $params[]="%$keyword%";
1617            $params[]="%$keyword%";
1618        }
1619    }
1620   
1621    $select = " select c_diary.*";
1622    $from = " FROM c_diary";
1623    $order = " ORDER BY r_datetime desc";
1624   
1625    $sql = $select . $from . $where . $order;
1626    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1627    foreach ($list as $key => $value) {
1628        $list[$key]['c_member'] = db_common_c_member_with_profile($value['c_member_id']);
1629        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1630    }
1631   
1632    $sql = 
1633        "SELECT count(*) "
1634        . $from
1635        . $where ;
1636    $total_num = db_get_one($sql,$params);
1637   
1638    $total_page_num =  ceil($total_num / $page_size);
1639    $next = ($page < $total_page_num);
1640    $prev = ($page > 1);
1641   
1642    return array($list , $prev , $next, $total_num,$total_page_num); 
1643}
1644
1645function monitor_diary_comment_list($keyword,$page_size,$page)
1646{
1647
1648    $page = intval($page);
1649    $page_size = intval($page_size);
1650   
1651    $where = " where 1 ";
1652
1653    if ($keyword) {
1654        //全角空白を半角に統一
1655        $keyword = str_replace(" ", " ", $keyword);
1656        $keyword_list = explode(" ", $keyword);
1657           
1658        for($i=0;$i < count($keyword_list);$i++) {
1659            $keyword = check_search_word( $keyword_list[$i] );
1660               
1661            $where .= " and (c_diary_comment.body like ? ) ";
1662            $params[]="%$keyword%";
1663        }
1664    }
1665   
1666    $select = " select c_diary_comment.*,c_diary.subject";
1667    $from = " FROM c_diary_comment"
1668        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
1669    $order = " ORDER BY r_datetime desc";
1670   
1671    $sql = $select . $from . $where . $order;
1672    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1673    foreach ($list as $key => $value) {
1674        $list[$key]['c_member'] = db_common_c_member_with_profile($value['c_member_id']);
1675        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); 
1676    }
1677   
1678    $sql = 
1679        "SELECT count(*) "
1680        . $from
1681        . $where ;
1682    $total_num = db_get_one($sql,$params);
1683   
1684    $total_page_num =  ceil($total_num / $page_size);
1685    $next = ($page < $total_page_num);
1686    $prev = ($page > 1);
1687   
1688    return array($list , $prev , $next, $total_num,$total_page_num); 
1689}
1690
1691
1692function monitor_topic_comment_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        $keyword = str_replace("?@", " ", $keyword);
1702        $keyword_list = explode(" ", $keyword);
1703           
1704        for($i=0;$i < count($keyword_list);$i++) {
1705            $keyword = check_search_word( $keyword_list[$i] );
1706               
1707            $where .= " AND (ctc.body like ? )";
1708            $params[]="%$keyword%";
1709        }
1710    }
1711   
1712    $select = " SELECT ctc.*,ct.name as topic_name,c.name as commu_name,m.nickname";
1713    $from = " FROM c_commu_topic_comment as ctc"
1714            ." LEFT JOIN c_member as m ON ctc.c_member_id = m.c_member_id "
1715            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
1716            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
1717    $order = " ORDER BY r_datetime desc";
1718   
1719    $sql = $select . $from . $where . $order;
1720   
1721    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1722   
1723    foreach ($list as $key => $value) {
1724        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1725    }
1726   
1727    $sql = 
1728        "SELECT count(*) "
1729        . $from
1730        . $where ;
1731    $total_num = db_get_one($sql,$params);
1732   
1733    $total_page_num =  ceil($total_num / $page_size);
1734    $next = ($page < $total_page_num);
1735    $prev = ($page > 1);
1736   
1737    return array($list , $prev , $next, $total_num,$total_page_num); 
1738}
1739
1740function monitor_topic_list($keyword,$page_size,$page)
1741{
1742    $page = intval($page);
1743    $page_size = intval($page_size);
1744   
1745    $where = " where 1 ";
1746
1747    if ($keyword) {
1748        $keyword = str_replace("?@", " ", $keyword);
1749        $keyword_list = explode(" ", $keyword);
1750           
1751        for($i=0;$i < count($keyword_list);$i++) {
1752            $keyword = check_search_word( $keyword_list[$i] );
1753               
1754            $where .= " AND (ctc.body like ? ";
1755            $where .= " OR ct.name like ? ";
1756            $where .= " OR c.name like ? ) ";
1757            $params[]="%$keyword%";
1758            $params[]="%$keyword%";
1759            $params[]="%$keyword%";
1760        }
1761    }
1762   
1763    $select = " SELECT ct.*,ct.name as topic_name,c.name as commu_name,m.nickname,ctc.body as body";
1764    $from = " FROM c_commu_topic as ct"
1765            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
1766            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
1767            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)";
1768    $order = " ORDER BY r_datetime desc";
1769   
1770    $sql = $select . $from . $where . $order;
1771   
1772    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
1773   
1774    foreach ($list as $key => $value) {
1775        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); 
1776    }
1777   
1778    $sql = 
1779        "SELECT count(*) "
1780        . $from
1781        . $where ;
1782    $total_num = db_get_one($sql,$params);
1783   
1784    $total_page_num =  ceil($total_num / $page_size);
1785    $next = ($page < $total_page_num);
1786    $prev = ($page > 1);
1787   
1788    return array($list , $prev , $next, $total_num,$total_page_num); 
1789}
1790
1791function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
1792{
1793    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
1794        " WHERE c_commu_topic_id = ? AND number > 0";
1795    $params = array($c_commu_topic_id);
1796    return db_get_one($sql, $params);
1797}
1798//フリーページを追加
1799function db_admin_insert_c_free_page($body)
1800{
1801    $data = array(
1802        'body' => strval($body),
1803    );
1804    return db_insert('c_free_page', $data);
1805}
1806
1807//フリーページを編集
1808function db_admin_update_c_free_page($c_free_page_id, $body)
1809{
1810    $data = array(
1811        'body' => strval($body),
1812    );
1813    $where = array('c_free_page_id' => intval($c_free_page_id));
1814    return db_update('c_free_page', $data, $where);
1815}
1816
1817//フリーページを削除
1818function db_admin_delete_c_free_page($c_free_page_id)
1819{
1820    $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
1821    $params = array(intval($c_free_page_id));
1822    return db_query($sql, $params);
1823}
1824
1825
1826//フリーページを全て取得(ページャー付き)
1827function db_admin_get_c_free_page_all($page, $page_size, &$pager)
1828{
1829    $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
1830
1831    $list = db_get_all_page($sql, $page, $page_size, $params);
1832
1833    $sql = 'SELECT count(*) FROM c_free_page';
1834    $total_num = db_get_one($sql, $params);
1835    $pager = admin_make_pager($page, $page_size, $total_num);
1836
1837    return $list;
1838}
1839
1840//フリーページを一つ取得
1841function db_admin_get_c_free_page_one($c_free_page_id)
1842{
1843    $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
1844    $params = array(intval($c_free_page_id));
1845
1846    return db_get_row($sql, $params);
1847}
1848
1849?>
Note: See TracBrowser for help on using the repository browser.