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

source: OpenPNE/trunk/webapp/modules/admin/lib/db_admin.php @ 7655

Last change on this file since 7655 was 7655, checked in by masabon, 13 years ago

#2727:管理画面の統計画面で、退会者がいる場合の件数表示が間違っているバグを修正しました

File size: 98.2 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 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_member4username($username)
43{
44    $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
45    $c_member_id = db_get_one($sql, array($username));
46
47    $c_member = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
48    return $c_member;
49}
50
51function db_admin_c_siteadmin($target)
52{
53    $sql = 'SELECT * FROM c_siteadmin WHERE target = ?';
54    $params = array($target);
55    return db_get_row($sql, $params);
56}
57
58function db_admin_insert_c_siteadmin($target, $body)
59{
60    $data = array(
61        'target' => $target,
62        'body' => $body,
63        'r_date' => db_now(),
64    );
65    return db_insert('c_siteadmin', $data);
66}
67
68function db_admin_update_c_siteadmin($target, $body)
69{
70    $data = array(
71        'body' => $body,
72        'r_date' => db_now(),
73    );
74    $where = array('target' => $target);
75    return db_update('c_siteadmin', $data, $where);
76}
77
78function db_admin_delete_c_profile_option($c_profile_option_id)
79{
80    //function cache削除
81    pne_cache_drop('db_member_c_profile_list');
82
83    if (!$c_profile_option_id) {
84        return false;
85    }
86
87    $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
88    $params = array(intval($c_profile_option_id));
89    db_query($sql, $params);
90
91    $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
92    db_query($sql, $params);
93
94    return true;
95}
96
97function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
98{
99    //function cache削除
100    pne_cache_drop('db_member_c_profile_list');
101
102    $data = array(
103        'c_profile_id' => intval($c_profile_id),
104        'value' => $value,
105        'sort_order' => intval($sort_order),
106    );
107    return db_insert('c_profile_option', $data);
108}
109
110function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
111{
112    //function cache削除
113    pne_cache_drop('db_member_c_profile_list');
114
115    $data = array('value' => $value);
116    $where = array('c_profile_option_id' => intval($c_profile_option_id));
117    db_update('c_member_profile', $data, $where);
118
119    $data = array(
120        'value' => $value,
121        'sort_order' => intval($sort_order),
122    );
123    db_update('c_profile_option', $data, $where);
124}
125
126function db_admin_insert_c_banner($a_href, $type, $nickname)
127{
128    $data = array(
129        'a_href' => $a_href,
130        'type' => $type,
131        'nickname' => $nickname,
132        'is_hidden_after' => 0,
133        'is_hidden_before' => 0,
134        'image_filename' => '',
135    );
136    return db_insert('c_banner', $data);
137}
138
139function db_admin_update_c_banner($c_banner_id, $sets)
140{
141    $where = array('c_banner_id' => intval($c_banner_id));
142    db_update('c_banner', $sets, $where);
143}
144
145function db_admin_delete_c_banner($c_banner_id)
146{
147    db_admin_delete_c_image4c_banner_id($c_banner_id);
148
149    $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
150    $params = array(intval($c_banner_id));
151    db_query($sql, $params);
152}
153
154function db_admin_delete_c_image4c_banner_id($c_banner_id)
155{
156    $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
157    $params = array(intval($c_banner_id));
158    $image_filename = db_get_one($sql, $params);
159    db_image_data_delete($image_filename);
160}
161
162function db_admin_insert_c_profile(
163    $name
164    , $caption
165    , $info
166    , $is_required
167    , $public_flag_edit
168    , $public_flag_default
169    , $form_type
170    , $sort_order
171    , $disp_regist
172    , $disp_config
173    , $disp_search
174    , $val_type
175    , $val_regexp
176    , $val_min
177    , $val_max
178    )
179{
180    pne_cache_drop('db_member_c_profile_list');
181
182    if (empty($info) || is_null($info)) {
183        $info = '';
184    }
185
186    $data = array(
187        'name' => $name,
188        'caption' => $caption,
189        'info' => $info,
190        'is_required' => (bool)$is_required,
191        'public_flag_edit' => (bool)$public_flag_edit,
192        'public_flag_default' => $public_flag_default,
193        'form_type' => $form_type,
194        'sort_order' => (int)$sort_order,
195        'disp_regist' => (bool)$disp_regist,
196        'disp_config' => (bool)$disp_config,
197        'disp_search' => (bool)$disp_search,
198        'val_type' => $val_type,
199        'val_regexp' => $val_regexp,
200        'val_min' => (int)$val_min,
201        'val_max' => (int)$val_max,
202    );
203    return db_insert('c_profile', $data);
204}
205
206function db_admin_update_c_profile($c_profile_id
207    , $name
208    , $caption
209    , $info
210    , $is_required
211    , $public_flag_edit
212    , $public_flag_default
213    , $form_type
214    , $sort_order
215    , $disp_regist
216    , $disp_config
217    , $disp_search
218    , $val_type
219    , $val_regexp
220    , $val_min
221    , $val_max
222    )
223{
224    if (empty($info) || is_null($info)) {
225        $info = '';
226    }
227
228    $data = array(
229        'name' => $name,
230        'caption' => $caption,
231        'info' => $info,
232        'is_required' => (bool)$is_required,
233        'public_flag_edit' => (bool)$public_flag_edit,
234        'public_flag_default' => $public_flag_default,
235        'form_type' => $form_type,
236        'sort_order' => intval($sort_order),
237        'disp_regist' => (bool)$disp_regist,
238        'disp_config' => (bool)$disp_config,
239        'disp_search' => (bool)$disp_search,
240        'val_type' => $val_type,
241        'val_regexp' => $val_regexp,
242        'val_min' => intval($val_min),
243        'val_max' => intval($val_max),
244    );
245    $where = array('c_profile_id' => intval($c_profile_id));
246    db_update('c_profile', $data, $where);
247
248    // 公開設定が固定のときはメンバーの設定値を上書き
249    if (!$public_flag_edit) {
250        $data = array('public_flag' => $public_flag_default);
251        db_update('c_member_profile', $data, $where);
252    }
253
254    pne_cache_drop('db_member_c_profile_list');
255}
256
257function db_admin_delete_c_profile($c_profile_id)
258{
259    $params = array(intval($c_profile_id));
260
261    // メンバーのプロフィールから削除
262    $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
263    db_query($sql, $params);
264
265    // 選択肢項目を削除
266    $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
267    db_query($sql, $params);
268
269    // プロフィール項目を削除
270    $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
271    db_query($sql, $params);
272
273    pne_cache_drop('db_member_c_profile_list');
274}
275
276function db_admin_c_profile4c_profile_id($c_profile_id)
277{
278    $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
279    $params = array(intval($c_profile_id));
280    return db_get_row($sql, $params);
281}
282
283/**
284 * 全バナー取得
285 *
286 * @param  int $limit 取得最大件数
287 * @return array_of_array  c_banner_list バナー配列
288 */
289function db_admin_c_banner_list4null($type = '')
290{
291    $sql = 'SELECT * FROM c_banner';
292    $params = array();
293    if ($type) {
294        $sql .= ' WHERE type = ?';
295        $params[] = $type;
296    }
297    $sql .= ' ORDER BY c_banner_id';
298    return db_get_all($sql, $params);
299}
300
301function db_admin_c_commu_category_parent_list()
302{
303    $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
304    return db_get_all($sql);
305}
306
307function db_admin_c_commu_category_list()
308{
309    $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
310    $list = db_get_all($sql);
311
312    $category_list = array();
313    foreach ($list as $item) {
314        $category_list[$item['c_commu_category_parent_id']][] = $item;
315    }
316    return $category_list;
317}
318
319function db_admin_insert_c_commu_category_parent($name, $sort_order)
320{
321    $data = array(
322        'name' => $name,
323        'sort_order' => intval($sort_order),
324    );
325    return db_insert('c_commu_category_parent', $data);
326}
327
328function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
329{
330    $data = array(
331        'name' => $name,
332        'sort_order' => intval($sort_order),
333    );
334    $where = array(
335        'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
336    );
337    db_update('c_commu_category_parent', $data, $where);
338}
339
340function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
341{
342    $params = array(intval($c_commu_category_parent_id));
343
344    // 小カテゴリを削除
345    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
346    db_query($sql, $params);
347
348    // 中カテゴリを削除
349    $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
350    db_query($sql, $params);
351}
352
353function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order)
354{
355    $data = array(
356        'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
357        'name' => $name,
358        'sort_order' => intval($sort_order),
359    );
360    return db_insert('c_commu_category', $data);
361}
362
363function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order)
364{
365    $data = array(
366        'name' => $name,
367        'sort_order' => intval($sort_order)
368    );
369    $where = array('c_commu_category_id' => intval($c_commu_category_id));
370    db_update('c_commu_category', $data, $where);
371}
372
373function db_admin_delete_c_commu_category($c_commu_category_id)
374{
375    // 小カテゴリを削除
376    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
377    $params = array(intval($c_commu_category_id));
378    db_query($sql, $params);
379}
380
381function db_admin_c_admin_user_id4username($username)
382{
383    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
384    $params = array($username);
385    return db_get_one($sql, $params);
386}
387
388function db_admin_authenticate_password($uid, $password)
389{
390    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
391    $params = array(intval($uid), md5($password));
392    return (bool)db_get_one($sql, $params);
393}
394
395function db_admin_update_c_admin_user_password($uid, $password)
396{
397    $data = array('password' => md5($password));
398    $where = array('c_admin_user_id' => intval($uid));
399    db_update('c_admin_user', $data, $where);
400}
401
402function db_admin_c_admin_config4name($name)
403{
404    $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
405    $params = array($name);
406    return db_get_one($sql, $params);
407}
408
409function db_admin_insert_c_admin_config($name, $value)
410{
411    $data = array(
412        'name' => $name,
413        'value' => $value,
414    );
415    return db_insert('c_admin_config', $data);
416}
417
418function db_admin_update_c_admin_config($name, $value)
419{
420    $data = array('value' => $value);
421    $where = array('name' => $name);
422    db_update('c_admin_config', $data, $where);
423}
424
425function db_admin_replace_c_admin_config($name, $value)
426{
427    $sql = 'DELETE FROM c_admin_config WHERE name = ?';
428    $params = array($name);
429    db_query($sql, $params);
430
431    $data = array(
432        'name'  => strval($name),
433        'value' => strval($value),
434    );
435    return db_insert('c_admin_config', $data);
436}
437
438function db_admin_c_admin_config_all()
439{
440    $sql = 'SELECT name, value FROM c_admin_config';
441    return db_get_assoc($sql);
442}
443
444function db_admin_delete_c_image_link4image_filename($image_filename)
445{
446    $_pos = strpos($image_filename, '_');
447    $prefix = substr($image_filename, 0, $_pos);
448
449    if ($prefix == 'b') {
450        $sql = 'DELETE FROM c_banner WHERE image_filename = ?';
451        $params = array($image_filename);
452        db_query($sql, $params);
453    }
454
455    if ($prefix == 'c') {
456        $tbl = 'c_commu';
457        _db_admin_empty_filename($tbl, $image_filename);
458    }
459
460    if ($prefix == 't' || $prefix == 'tc') {
461        $tbl = 'c_commu_topic_comment';
462        _db_admin_empty_filename($tbl, $image_filename, 'image_filename1');
463        _db_admin_empty_filename($tbl, $image_filename, 'image_filename2');
464        _db_admin_empty_filename($tbl, $image_filename, 'image_filename3');
465    }
466
467    if ($prefix == 'd') {
468        $tbl = 'c_diary';
469        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1');
470        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2');
471        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3');
472    }
473
474    if ($prefix == 'dc') {
475        $tbl = 'c_diary_comment';
476        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1');
477        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2');
478        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3');
479    }
480
481    if ($prefix == 'm') {
482        $tbl = 'c_member';
483        _db_admin_empty_filename($tbl, $image_filename);
484        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1');
485        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2');
486        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3');
487    }
488
489    if ($prefix == 'ms') {
490        $tbl = 'c_message';
491        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1');
492        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2');
493        _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3');
494    }
495
496    if ($prefix = 'a') {
497        $tbl = 'c_album';
498        _db_admin_empty_filename($tbl, $image_filename, 'album_cover_image');
499
500        $sql = 'DELETE FROM c_album_image WHERE image_filename = ?';
501        $params = array($image_filename);
502        db_query($sql, $params);
503    }
504}
505
506function _db_admin_empty_filename($tbl, $image_filename, $column = 'image_filename')
507{
508    $data = array(
509        db_escapeIdentifier($column) => '',
510    );
511    $where = array(
512        db_escapeIdentifier($column) => $image_filename,
513    );
514    db_update(db_escapeIdentifier($tbl), $data, $where);
515}
516
517function db_admin_c_profile_name_exists($name)
518{
519    $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
520    $params = array($name);
521    return db_get_one($sql, $params);
522}
523
524function db_admin_update_is_login_rejected($c_member_id)
525{
526    // function cacheを削除
527    cache_drop_c_member_profile($c_member_id);
528
529    $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
530    $params = array(intval($c_member_id));
531    $is_login_rejected = db_get_one($sql, $params);
532    if (is_null($is_login_rejected)) {
533        return false;
534    }
535
536    $data = array('is_login_rejected' => !($is_login_rejected));
537    $where = array('c_member_id' => intval($c_member_id));
538    return db_update('c_member', $data, $where);
539}
540
541function db_admin_c_admin_user_list()
542{
543    $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
544    return db_get_all($sql);
545}
546
547function db_admin_exists_c_admin_username($username)
548{
549    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
550    $params = array(strval($username));
551    return (bool)db_get_one($sql, $params);
552}
553
554function db_admin_insert_c_admin_user($username, $password, $auth_type)
555{
556    $data = array(
557        'username' => strval($username),
558        'password' => md5($password),
559        'auth_type' => strval($auth_type),
560    );
561    return db_insert('c_admin_user', $data);
562}
563
564function db_admin_delete_c_admin_user($c_admin_user_id)
565{
566    $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
567    $params = array(intval($c_admin_user_id));
568    return db_query($sql, $params);
569}
570
571function db_admin_get_auth_type($c_admin_user_id)
572{
573    $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
574    $params = array(intval($c_admin_user_id));
575    return db_get_one($sql, $params);
576}
577
578/**
579 * c_member テーブル内データによるメンバーIDリスト取得
580 *
581 * @return array
582 */
583function db_admin_c_member_id_list4cond_c_member($cond_list, $type = array())
584{
585    $sql = 'SELECT c_member_id FROM c_member';
586    $wheres = array();
587
588    // 開始年
589    if (!empty($cond_list['s_year'])) {
590        $wheres[] = 'birth_year >= ?';
591        $params[] = $cond_list['s_year'];
592    }
593    // 終了年
594    if (!empty($cond_list['e_year'])) {
595        $wheres[] = 'birth_year <= ?';
596        $params[] = $cond_list['e_year'];
597    }
598
599    // 誕生日による絞り込みの場合は、誕生年が0のメンバーを除外する
600    if (!empty($cond_list['s_year']) || !empty($cond_list['e_year'])) {
601        $wheres[] = 'birth_year <> 0';
602    }
603
604    //最終ログイン時間で絞り込み
605    if (isset($cond_list['last_login'])) {
606        switch($cond_list['last_login']) {
607        case 1 : // 3日以内
608            $wheres[] = 'access_date >= ?';
609            $params[] = date('Y-m-d', strtotime('-3 day'));
610            break;
611        case 2 : // 3~7日以内
612            $wheres[] = 'access_date >= ? AND access_date < ?';
613            $params[] = date('Y-m-d', strtotime('-7 day'));
614            $params[] = date('Y-m-d', strtotime('-3 day'));
615            break;
616        case 3 : // 7~30日以内
617            $wheres[] = 'access_date >= ? AND access_date < ?';
618            $params[] = date('Y-m-d', strtotime('-30 day'));
619            $params[] = date('Y-m-d', strtotime('-7 day'));
620            break;
621        case 4 : // 30日以上
622            $wheres[] = 'access_date > ? AND access_date < ?';
623            $params[] = '0000-00-00 00:00:00';
624            $params[] = date('Y-m-d', strtotime('-30 day'));
625            break;
626        case 5 : // 未ログイン
627            $wheres[] = 'access_date = ?';
628            $params[] = '0000-00-00 00:00:00';
629            break;
630        }
631    }
632
633    if ($wheres) {
634        $sql .= ' WHERE ' . implode(' AND ', $wheres);
635    }
636
637    // --- ソートオーダーここから
638
639    // $orderの例:id_1 , id_2
640    // 「-」の前が項目名であとが1なら昇順 2なら降順
641    $is_order = false;
642    if (!empty($type)) {
643        $is_order = true;
644
645        switch ($type[0]) {
646        case "c_member_id":
647            $sql .= ' ORDER BY c_member_id';
648            break;
649        case "nickname":
650            $sql .= ' ORDER BY nickname';
651            break;
652        case "image_filename":
653            $sql .= ' ORDER BY image_filename';
654            break;
655        case "c_member_id_invite":
656            $sql .= ' ORDER BY c_member_id_invite';
657            break;
658        case "access_date":
659            $sql .= ' ORDER BY access_date';
660            break;
661        case "r_date":
662            $sql .= ' ORDER BY r_date';
663            break;
664        case "birth":
665            // 降順指定
666            if ($type[1] == "2") {
667                $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
668            } else {
669                $sql .= ' ORDER BY birth_year, birth_month, birth_day';
670            }
671            break;
672        default :
673            $is_order = false;
674        }
675
676        // 降順指定
677        if ($is_order && $type[1] == "2") {
678            $sql .= ' DESC';
679        }
680
681    }
682
683    // --- ソートオーダーここまで
684
685    return db_get_col($sql, $params);
686}
687
688/**
689 * PNE_POINT によるメンバーIDリスト絞り込み
690 *
691 * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
692 *
693 * @return array
694 */
695function db_admin_c_member_id_list4cond_pne_point($ids, $cond_list)
696{
697    $sql = 'SELECT c_member_id'.
698           ' FROM c_member_profile '.
699           ' INNER JOIN c_profile USING (c_profile_id) '.
700           ' WHERE name = ? ';
701    $params = array('PNE_POINT');
702
703    if ($cond_list['s_rank']) {
704        $s_point = db_point_get_rank_point4rank_id($cond_list['s_rank']);
705        $sql .= ' AND value >= ?';
706        $params[] = (int)$s_point;
707    }
708
709    if ($cond_list['e_rank']) {
710        $e_point = db_point_get_next_rank_point4rank_id($cond_list['e_rank']);
711        if (!is_null($e_point)) {
712            $sql .= ' AND value < ?';
713            $params[] = (int)$e_point;
714        }
715    }
716
717    $point_ids = db_get_col($sql, $params);
718
719    return array_intersect($ids, $point_ids);
720}
721
722/**
723 * メールアドレスの有無によるメンバーIDリスト絞り込み
724 *
725 * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
726 *
727 * @return array
728 */
729function db_admin_c_member_id_list4cond_mail_address($ids, $cond_list)
730{
731    $sql = 'SELECT c_member_id FROM c_member_secure';
732    $wheres = array();
733
734    // PCメールアドレスの有無で絞る
735    if ($cond_list['is_pc_address'] == 1) {
736        $wheres[] = "pc_address <> ''";
737    } elseif ($cond_list['is_pc_address'] == 2) {
738        $wheres[] = "pc_address = ''";
739    }
740
741    // 携帯メールアドレスの有無で絞る
742    if ($cond_list['is_ktai_address'] == 1) {
743        $wheres[] = "ktai_address <> ''";
744    } elseif ($cond_list['is_ktai_address'] == 2) {
745        $wheres[] = "ktai_address = ''";
746    }
747
748    if ($wheres) {
749        $where = ' WHERE ' . implode(' AND ', $wheres);
750    } else {
751        $where = '';
752    }
753    $sql .= $where;
754
755    $temp_ids = db_get_col($sql);
756
757    return array_intersect($ids, $temp_ids);
758}
759
760/**
761 * c_profile 内データによるメンバーIDリスト絞り込み
762 *
763 * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
764 *
765 * @return array
766 */
767function db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type)
768{
769    // ランクでソートとポイントでソートは同等
770    if ($type[0] == 'RANK') {
771        $type[0] = 'PNE_POINT';
772    }
773
774    // 各プロフィールごとに絞り込み
775    $sql = 'SELECT name, form_type, c_profile_id FROM c_profile';
776    $profile = db_get_all($sql);
777
778    if ($profile) {
779        foreach ($profile as $value) {
780            if(!empty($cond_list[$value['name']])
781               && ($value['form_type'] == 'radio' || $value['form_type'] == 'select')) {
782                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
783                $params = array($cond_list[$value['name']]);
784                $temp_ids = db_get_col($sql, $params);
785                $ids = array_intersect($ids, $temp_ids);
786            }
787
788            if($value['name'] == $type[0]) {
789                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ?';
790
791                if ($value['form_type'] == 'radio'
792                 || $value['form_type'] == 'select'
793                 || $value['form_type'] == 'checkbox') {
794                    $sql .= ' ORDER BY c_profile_option_id';
795                } else {
796                    if ($value['name'] == "PNE_POINT") {
797                        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
798                            $sql .= ' ORDER BY cast(value as integer)';
799                        } else {
800                            $sql .= ' ORDER BY cast(value as signed)';
801                        }
802                    } else {
803                        $sql .= ' ORDER BY value';
804                    }
805                }
806
807                if ($type[1] == "2") {
808                    $sql .= ' DESC';
809                }
810                $params = array($value['c_profile_id']);
811                $temp_ids = db_get_col($sql, $params);
812                $ids = array_intersect($temp_ids, $ids);
813            }
814        }
815    }
816
817    return $ids;
818}
819
820/**
821 * ログインIDによるメンバーIDリストソート
822 *
823 * @return array
824 */
825function db_admin_c_member_id_list_sort4username($ids, $type)
826{
827    $sql = 'SELECT c_member_id FROM c_username ORDER BY username';
828    if ($type[1] == '2') {
829        $sql .= ' DESC';
830    }
831
832    $temp_ids = db_get_col($sql, $params);
833    $ids = array_intersect($temp_ids, $ids);
834
835    return $ids;
836}
837
838/**
839 * メンバーIDリスト取得(絞り込み対応)
840 */
841function _db_admin_c_member_id_list($cond_list, $order = '')
842{
843    $type = explode('-', $order);
844    $ids = db_admin_c_member_id_list4cond_c_member($cond_list, $type);
845
846    // ポイントで絞り込み
847    if ($cond_list['s_rank'] || $cond_list['e_rank']) {
848        $ids = db_admin_c_member_id_list4cond_pne_point($ids, $cond_list);
849    }
850
851    // メールアドレスで絞り込み
852    if (!empty($cond_list['is_pc_address']) || !empty($cond_list['is_ktai_address'])) {
853        $ids = db_admin_c_member_id_list4cond_mail_address($ids, $cond_list);
854    }
855
856    // ログインIDでソート
857    if ($type[0] == 'username' && OPENPNE_AUTH_MODE != 'email') {
858        $ids = db_admin_c_member_id_list_sort4username($ids, $type);
859    }
860
861    // プロフィール項目で絞り込み
862    $ids = db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type);
863
864    return $ids;
865}
866
867/**
868 * メンバーリスト取得
869 * 誕生年+プロフィール(select,radioのみ)
870 */
871function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list, $order)
872{
873    $ids = _db_admin_c_member_id_list($cond_list, $order);
874    $total_num = count($ids);
875    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
876
877    $c_member_list = array();
878    foreach ($ids as $id) {
879        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
880    }
881
882    if ($total_num > 0) {
883        $pager = admin_make_pager($page, $page_size, $total_num);
884    } else {
885        $pager = array('page_size' => $page_size);
886    }
887
888    return $c_member_list;
889}
890
891function db_c_profile_option4c_profile_option_id($c_profile_option_id)
892{
893    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
894    $params = array(intval($c_profile_option_id));
895    return db_get_row($sql, $params);
896}
897
898/**
899 * メンバー絞込みパラメータ取得
900 */
901function validate_cond($requests)
902{
903    $cond_list = array();
904    //誕生年
905    if (!empty($requests['s_year'])) {
906        $cond_list['s_year'] = intval($requests['s_year']);
907    }
908    if (!empty($requests['e_year'])) {
909        $cond_list['e_year'] = intval($requests['e_year']);
910    }
911    //プロフィール
912    $profile_list = db_member_c_profile_list();
913
914    foreach ($profile_list as $key => $value) {
915        if (!empty($requests[$key])) {
916            $cond_list[$key] = intval($requests[$key]);
917        }
918    }
919
920    // 最終ログイン時間
921    if (!empty($requests['last_login'])) {
922        $cond_list['last_login'] = intval($requests['last_login']);
923    }
924
925    //PCメールアドレスの有無
926    if (!empty($requests['is_pc_address'])) {
927        $cond_list['is_pc_address'] = intval($requests['is_pc_address']);
928    }
929    //携帯メールアドレスの有無
930    if (!empty($requests['is_ktai_address'])) {
931        $cond_list['is_ktai_address'] = intval($requests['is_ktai_address']);
932    }
933
934    //ポイント
935    if (isset($requests['s_rank']) && $requests['s_rank'] !== '') {
936        $cond_list['s_rank'] = intval($requests['s_rank']);
937    }
938    if (isset($requests['e_rank']) && $requests['e_rank'] !== '') {
939        $cond_list['e_rank'] = intval($requests['e_rank']);
940    }
941
942    return $cond_list;
943}
944
945function do_admin_send_mail($c_member_id, $subject, $body)
946{
947    $c_member = db_member_c_member4c_member_id($c_member_id, true);
948
949    if ($c_member['secure']['pc_address']) {
950        $send_address = $c_member['secure']['pc_address'];
951    } else {
952        $send_address = $c_member['secure']['ktai_address'];
953    }
954
955    if (OPENPNE_MAIL_QUEUE) {
956        //メールキューに蓄積
957        put_mail_queue($send_address, $subject, $body);
958    } else {
959        t_send_email($send_address, $subject, $body);
960    }
961}
962
963//メッセージ受信メール(メール&メッセージキュー蓄積対応)
964function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
965{
966    //メッセージ
967    if (OPENPNE_MESSAGE_QUEUE) {
968        //メッセージキューに蓄積
969        db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
970        return true;
971    } else {
972        db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
973        do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
974        do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body);
975        return true;
976    }
977
978    return false;
979}
980
981//メッセージ受信メール(メールキュー蓄積対応)
982function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
983{
984    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
985    $pc_address = $c_member_to['secure']['pc_address'];
986    $is_receive_mail = $c_member_to['is_receive_mail'];
987
988    $params = array(
989        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
990        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
991    );
992    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
993}
994
995//◆メッセージ受信メール(携帯)
996function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body)
997{
998    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
999    $ktai_address = $c_member_to['secure']['ktai_address'];
1000    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
1001    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
1002    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
1003
1004    $params = array(
1005        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
1006        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
1007        'login_url' => $login_url,
1008        'subject' => $subject,
1009        'body' => $body,
1010    );
1011    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
1012}
1013
1014function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
1015{
1016    $tpl_name .= '.tpl';
1017    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
1018        list($subject, $body) = $tpl;
1019        if ($from) {
1020            if (OPENPNE_MAIL_QUEUE) {
1021                //メールキューに蓄積
1022                put_mail_queue($address, $subject, $body, $force, $from);
1023            } else {
1024                t_send_email($address, $subject, $body, $force, $from);
1025            }
1026        } else {
1027            if (OPENPNE_MAIL_QUEUE) {
1028                //メールキューに蓄積
1029                put_mail_queue($address, $subject, $body, $force);
1030            } else {
1031                t_send_email($address, $subject, $body, $force);
1032            }
1033        }
1034        return true;
1035    } else {
1036        return false;
1037    }
1038}
1039
1040function db_access_analysis_c_admin_user_id4username($username)
1041{
1042    $sql = "SELECT c_admin_user_id FROM c_admin_user" .
1043        " WHERE username = ?";
1044    $params = array($username);
1045    return db_get_one($sql,$params);
1046}
1047
1048function p_access_analysis_month_access_analysis_month($ktai_flag)
1049{
1050    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1051        $sql = "SELECT to_char(r_datetime, 'YYYY-MM-01') as ym, count(*) as count" .
1052                " FROM c_access_log " .
1053                " where ktai_flag = ?" .
1054                " group by ym";
1055    } else {
1056        $sql = "SELECT date_format(r_datetime, '%Y-%m-01') as ym, count(*) as count" .
1057                " FROM c_access_log " .
1058                " where ktai_flag = ?" .
1059                " group by ym";
1060    }
1061
1062    $params = array(intval($ktai_flag));
1063    $list = db_get_all($sql,$params);
1064    return $list;
1065}
1066
1067
1068function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
1069{
1070    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1071        $sql = "SELECT substr(r_datetime,1,10) as ymd , count(*) as count" .
1072            " FROM c_access_log " .
1073            " where substr(r_datetime,1,7) = ?" .
1074            " and ktai_flag = ? " .
1075            " group by ymd";
1076    } else {
1077        $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
1078                " FROM c_access_log " .
1079                " where left(r_datetime, 7) = ?" .
1080                " and ktai_flag = ? " .
1081                " group by ymd";
1082    }
1083    $params = array(substr($ym, 0, 7), intval($ktai_flag));
1084    $list = db_get_all($sql,$params);
1085
1086    $year = substr($ym, 0, 4);
1087    $month = substr($ym, 5,2);
1088
1089    $return = array();
1090    $days_num = date("t", mktime (0,0,0,$month,1,$year));
1091    for($i=1 ; $i<=$days_num; $i++) {
1092        $date = substr($ym,0,8) . substr("00".$i, -2, 2);
1093
1094        $count = 0;
1095        foreach($list as $value) {
1096            if ($value['ymd'] == $date) {
1097                $count = $value['count'];
1098            }
1099        }
1100        $return[] = array("ymd"=>$date, "count"=>$count);
1101    }
1102    return $return;
1103}
1104
1105function get_page_name($ktai_flag, $orderby=1)
1106{
1107    if ($orderby == 1) {
1108        $orderby_str = " order by page_name asc";
1109    } elseif ($orderby == -1) {
1110        $orderby_str = " order by page_name desc";
1111    }
1112    $sql = "select distinct page_name from c_access_log " .
1113            " where ktai_flag = ? " .
1114            $orderby_str;
1115    $params = array(intval($ktai_flag));
1116    return db_get_col($sql,$params);
1117}
1118
1119function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
1120{
1121
1122    if ($orderby == 1) {
1123        $orderby_str = " order by page_name asc";
1124    } elseif ($orderby == -1) {
1125        $orderby_str = " order by page_name desc";
1126    } elseif ($orderby == 2) {
1127        $orderby_str = " order by count asc";
1128    } elseif ($orderby == -2) {
1129        $orderby_str = " order by count desc";
1130    }
1131    $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
1132    $params = array(intval($ktai_flag));
1133    if ($month_flag) {
1134        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1135            $sql .= " and substr(r_datetime,1,7) = ? ";
1136        } else {
1137            $sql .= " and left(r_datetime, 7) = ? ";
1138        }
1139
1140        array_push($params,substr($ymd,0,7));
1141    } else {
1142        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1143            $sql .= " and substr(r_datetime,1,10) = ? ";
1144        } else {
1145            $sql .= " and left(r_datetime,10) = ? ";
1146        }
1147        array_push($params,$ymd);
1148    }
1149    $sql .= " group by page_name ".    $orderby_str;
1150    $list = db_get_all($sql,$params);
1151
1152    $sum = 0;
1153    $return = array();
1154    if (abs($orderby) == 1) {
1155        $page_name = get_page_name($ktai_flag, $orderby);
1156        foreach($page_name as $name) {
1157            $count = 0;
1158            foreach($list as $value) {
1159                if ($value['page_name'] == $name) $count = $value['count'];
1160            }
1161
1162                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);
1163
1164            $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);
1165            $sum += $count;
1166        }
1167    } elseif (abs($orderby) == 2) {
1168        $page_name = get_page_name($ktai_flag);
1169
1170        $t_page_name = $page_name;
1171
1172        //アクセスがゼロのページを取得する
1173        foreach($page_name as $key=>$name) {
1174            foreach($list as $value) {
1175                if ($value['page_name'] == $name) {
1176                    unset($page_name[$key]);//$listに含まれるページネームを削除
1177                }
1178            }
1179        }
1180
1181        foreach($page_name as $key=>$name) {
1182            $page_name[$key] = array("page_name"=>$name, "count"=>0);
1183        }
1184
1185        if ($orderby == 2) {
1186            $return = array_merge($page_name , $list);
1187        } elseif ($orderby == -2) {
1188            $return = array_merge($list, $page_name);
1189        }
1190        foreach($list as $value) {
1191            $sum += $value['count'];
1192        }
1193
1194        foreach($return as $value) {
1195
1196            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']);
1197
1198            $value['is_target_c_member_id'] = $is_target_c_member_id;
1199            $value['is_target_c_commu_id'] = $is_target_c_commu_id;
1200            $value['is_target_c_topic_id'] = $is_target_c_topic_id;
1201            $value['is_target_c_diary_id'] = $is_target_c_diary_id;
1202            $value['is_c_member_id'] = $is_c_member_id;
1203            $t_return[] = $value;
1204
1205        }
1206
1207        $return = $t_return;
1208
1209    }
1210
1211    return array($return, $sum);
1212}
1213
1214
1215/*
1216 * target_commu
1217 *
1218 */
1219function p_access_analysis_target_commu_target_commu4ym_page_name
1220($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1221{
1222
1223    $start = ($page - 1) * $page_size;
1224
1225    if ($orderby == 1) {
1226        $orderby_str = " order by target_c_commu_id asc";
1227    } elseif ($orderby == -1) {
1228        $orderby_str = " order by target_c_commu_id desc";
1229    } elseif ($orderby == 2) {
1230        $orderby_str = " order by count asc";
1231    } elseif ($orderby == -2) {
1232        $orderby_str = " order by count desc";
1233    }
1234
1235    $sql = "select target_c_commu_id , count(*) as count from c_access_log  where ktai_flag = ? ";
1236    $params = array(intval($ktai_flag));
1237    if ($month_flag) {
1238        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1239            $sql .= " and substr(r_datetime,1,7) = ? ";
1240        } else {
1241            $sql .= " and left(r_datetime, 7) = ? ";
1242        }
1243        array_push($params,substr($ymd,0,7));
1244    } else {
1245        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1246            $sql .= " and substr(r_datetime,1,10) = ? ";
1247        } else {
1248            $sql .= " and left(r_datetime,10) = ? ";
1249        }
1250        array_push($params,$ymd);
1251    }
1252    if ($page_name!="all") {
1253            $sql .= " and page_name = ? ";
1254            array_push($params,$page_name);
1255    }
1256    $sql .= " and target_c_commu_id <> 0 ";
1257
1258    $sql .= " group by target_c_commu_id " .$orderby_str;
1259    $list = db_get_all_limit($sql, $start, $page_size, $params);
1260
1261    $return = array();
1262    $sum = 0;
1263    foreach($list as $key => $value) {
1264        if ($value['target_c_commu_id']) {
1265            if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
1266                $return[] = array_merge($value, $c_commu);
1267                $sum += $value['count'];
1268            }
1269        }
1270    }
1271
1272    $sql =   "select count(*) from c_access_log  where ktai_flag = ? ";
1273    $params = array(intval($ktai_flag));
1274    if ($month_flag) {
1275        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1276            $sql .= " and substr(r_datetime,1,7) = ? ";
1277        } else {
1278            $sql .= " and left(r_datetime, 7) = ? ";
1279        }
1280        array_push($params,substr($ymd,0,7));
1281    } else {
1282        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1283            $sql .= " and substr(r_datetime,1,10) = ? ";
1284        } else {
1285            $sql .= " and left(r_datetime,10) = ? ";
1286        }
1287        array_push($params,$ymd);
1288    }
1289    if ($page_name!="all") {
1290        $sql .= " and page_name = ? ";
1291        array_push($params,$page_name);
1292    }
1293    $sql .= " and target_c_commu_id <> 0 ";
1294    $sql .= " group by target_c_commu_id ";
1295    $result = db_get_all($sql,$params);
1296    $total_num = count($result);
1297
1298    if ($total_num != 0) {
1299        $total_page_num =  ceil($total_num / $page_size);
1300        if ($page >= $total_page_num) {
1301            $next = false;
1302        }else{
1303            $next = true;
1304        }
1305        if ($page <= 1) {
1306            $prev = false;
1307        }else{
1308            $prev = true;
1309        }
1310    }
1311    $start_num = ($page - 1) * $page_size + 1 ;
1312    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1313
1314    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1315}
1316
1317function p_access_analysis_target_topic_target_topic4ym_page_name
1318($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1319{
1320    $start = ($page - 1) * $page_size;
1321
1322    if ($orderby == 1) {
1323        $orderby_str = " order by target_c_commu_topic_id asc";
1324    } elseif ($orderby == -1) {
1325        $orderby_str = " order by target_c_commu_topic_id desc";
1326    } elseif ($orderby == 2) {
1327        $orderby_str = " order by count asc";
1328    } elseif ($orderby == -2) {
1329        $orderby_str = " order by count desc";
1330    }
1331    $where =" where ktai_flag = ? ";
1332    $params = array(intval($ktai_flag));
1333    if ($month_flag) {
1334        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1335            $where .= " and substr(r_datetime,1, 7) = ? ";
1336        } else {
1337            $where .= " and left(r_datetime, 7) = ? ";
1338        }
1339        array_push($params,substr($ymd,0,7));
1340    } else {
1341        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1342            $where .= " and substr(r_datetime,1,10) = ? ";
1343        } else {
1344            $where .= " and left(r_datetime,10) = ? ";
1345        }
1346        array_push($params,$ymd);
1347    }
1348    if ($page_name!="all") {
1349            $where .= " and page_name = ? ";
1350            array_push($params,$page_name);
1351    }
1352    $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
1353    $sql .= $where." group by target_c_commu_topic_id " .$orderby_str;
1354    $list = db_get_all_limit($sql, $start, $page_size, $params);
1355    $sql = "select count(*) from c_access_log ";
1356    $sql .= $where ." group by target_c_commu_topic_id ";
1357    $result = db_get_all($sql,$params);
1358    $total_num = count($result);
1359
1360    $return = array();
1361    $sum = 0;
1362    foreach ($list as $key => $value) {
1363        if ($value['target_c_commu_topic_id']) {
1364            if ($c_commu_topic = db_commu_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
1365                $c_commu_topic['topic_name'] = $c_commu_topic['name'];
1366                $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
1367                $c_commu_topic['commu_name'] = $c_commu['name'];
1368                $return[] = array_merge($value, $c_commu_topic);
1369                $sum += $value['count'];
1370            }
1371        }
1372    }
1373
1374    if ($total_num != 0) {
1375        $total_page_num =  ceil($total_num / $page_size);
1376        if ($page >= $total_page_num) {
1377            $next = false;
1378        } else {
1379            $next = true;
1380        }
1381        if ($page <= 1) {
1382            $prev = false;
1383        } else {
1384            $prev = true;
1385        }
1386    }
1387    $start_num = ($page - 1) * $page_size + 1 ;
1388    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1389
1390    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1391}
1392
1393function p_access_analysis_target_diary_target_diary4ym_page_name
1394($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1395{
1396
1397    $start = ($page - 1) * $page_size;
1398
1399    if ($orderby == 1) {
1400        $orderby_str = " order by target_c_diary_id asc";
1401    } elseif ($orderby == -1) {
1402        $orderby_str = " order by target_c_diary_id desc";
1403    } elseif ($orderby == 2) {
1404        $orderby_str = " order by count asc";
1405    } elseif ($orderby == -2) {
1406        $orderby_str = " order by count desc";
1407    }
1408
1409    $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
1410    $params = array(intval($ktai_flag));
1411    if ($month_flag) {
1412        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1413            $sql .= " and substr(r_datetime,1,7) = ? ";
1414        } else {
1415            $sql .= " and left(r_datetime, 7) = ? ";
1416        }
1417        array_push($params,substr($ymd,0,7));
1418    } else {
1419        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1420            $sql .= " and substr(r_datetime,1,10) = ? ";
1421        } else {
1422            $sql .= " and left(r_datetime,10) = ? ";
1423        }
1424        array_push($params,$ymd);
1425    }
1426    if ($page_name!="all") {
1427        $sql .= " and page_name = ? ";
1428        array_push($params,$page_name);
1429    }
1430    $sql .= " and target_c_diary_id <> 0 ";
1431    $sql .= " group by target_c_diary_id " . $orderby_str;
1432    $list = db_get_all_limit($sql, $start, $page_size, $params);
1433
1434    $return = array();
1435    $sum = 0;
1436    foreach ($list as $key => $value) {
1437        if ($value['target_c_diary_id']) {
1438            if ($c_diary = db_diary_get_c_diary4id($value['target_c_diary_id'])) {
1439                $c_member = db_member_c_member4c_member_id($c_diary['c_member_id']);
1440                $c_diary['nickname'] = $c_member['nickname'];
1441                $return[] = array_merge($value, $c_diary);
1442                $sum += $value['count'];
1443            }
1444        }
1445    }
1446
1447    $sql =   "select count(*) from c_access_log where ktai_flag = ? ";
1448    $params = array(intval($ktai_flag));
1449    if ($month_flag) {
1450        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1451            $sql .= " and substr(r_datetime,1,7) = ? ";
1452        } else {
1453            $sql .= " and left(r_datetime, 7) = ? ";
1454        }
1455        array_push($params,substr($ymd,0,7));
1456    } else {
1457        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1458            $sql .= " and substr(r_datetime,1,10) = ? ";
1459        } else {
1460            $sql .= " and left(r_datetime,10) = ? ";
1461        }
1462        array_push($params,$ymd);
1463    }
1464    $sql .= " and target_c_diary_id <> 0 ";
1465    $sql .= " group by target_c_diary_id ";
1466    $result = db_get_all($sql,$params);
1467    $total_num = count($result);
1468
1469    if ($total_num != 0) {
1470        $total_page_num =  ceil($total_num / $page_size);
1471        if ($page >= $total_page_num) {
1472            $next = false;
1473        }else{
1474            $next = true;
1475        }
1476        if ($page <= 1) {
1477            $prev = false;
1478        }else{
1479            $prev = true;
1480        }
1481    }
1482    $start_num = ($page - 1) * $page_size + 1 ;
1483    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1484
1485    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1486}
1487
1488function p_access_analysis_member_access_member4ym_page_name
1489($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1490{
1491    $start = ($page - 1) * $page_size;
1492
1493    if ($orderby == 1) {
1494        $orderby_str = " order by c_member_id asc";
1495    } elseif ($orderby == -1) {
1496        $orderby_str = " order by c_member_id desc";
1497    } elseif ($orderby == 2) {
1498        $orderby_str = " order by count asc";
1499    } elseif ($orderby == -2) {
1500        $orderby_str = " order by count desc";
1501    }
1502
1503    $where =" where ktai_flag = ? ";
1504    $params = array(intval($ktai_flag));
1505    if ($month_flag) {
1506        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1507            $where .= " and substr(r_datetime,1,7) = ? ";
1508        } else {
1509            $where .= " and left(r_datetime, 7) = ? ";
1510        }
1511        array_push($params,substr($ymd,0,7));
1512    } else {
1513        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1514            $where .= " and substr(r_datetime,1,10) = ? ";
1515        } else {
1516            $where .= " and left(r_datetime,10) = ? ";
1517        }
1518        array_push($params,$ymd);
1519    }
1520    if ($page_name!="all") {
1521        $where .= " and page_name = ? ";
1522        array_push($params,$page_name);
1523    }
1524
1525    $sql = "select c_member_id , count(*) as count from c_access_log";
1526    $sql .= $where." group by c_member_id $orderby_str";
1527    $list = db_get_all_limit($sql, $start, $page_size, $params);
1528    $sql = "select count(*) from c_access_log ";
1529    $sql .=    $where ." group by c_member_id ";
1530    $result = db_get_all($sql,$params);
1531    $total_num = count($result);
1532
1533    $return = array();
1534    $sum = 0;
1535    foreach($list as $key => $value) {
1536        if ($value['c_member_id']) {
1537            if ($c_member = _db_c_member4c_member_id($value['c_member_id'])) {
1538                $return[] = array_merge($value, $c_member);
1539                $sum += $value['count'];
1540            } else {
1541                $return[] = $value;
1542                $sum += $value['count'];
1543            }
1544        }
1545    }
1546
1547
1548    if ($total_num != 0) {
1549        $total_page_num =  ceil($total_num / $page_size);
1550        if ($page >= $total_page_num) {
1551            $next = false;
1552        }else{
1553            $next = true;
1554        }
1555        if ($page <= 1) {
1556            $prev = false;
1557        }else{
1558            $prev = true;
1559        }
1560    }
1561    $start_num = ($page - 1) * $page_size + 1 ;
1562    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1563    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1564}
1565
1566function p_access_analysis_target_member_access_member4ym_page_name
1567($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
1568{
1569    $start = ($page - 1) * $page_size;
1570
1571    if ($orderby == 1) {
1572        $orderby_str = " order by target_c_member_id asc";
1573    } elseif ($orderby == -1) {
1574        $orderby_str = " order by target_c_member_id desc";
1575    } elseif ($orderby == 2) {
1576        $orderby_str = " order by count asc";
1577    } elseif ($orderby == -2) {
1578        $orderby_str = " order by count desc";
1579    }
1580    $where =" where ktai_flag = ? ";
1581    $params = array(intval($ktai_flag));
1582    if ($month_flag) {
1583        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1584            $where .= " and substr(r_datetime,1,7) = ? ";
1585        } else {
1586            $where .= " and left(r_datetime, 7) = ? ";
1587        }
1588        array_push($params,substr($ymd,0,7));
1589    } else {
1590        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1591            $where .= " and substr(r_datetime,1,10) = ? ";
1592        } else {
1593            $where .= " and left(r_datetime,10) = ? ";
1594        }
1595        array_push($params,$ymd);
1596    }
1597    if ($page_name != "all") {
1598        $where .= " and page_name = ? ";
1599        array_push($params,$page_name);
1600    }
1601    $sql = "select target_c_member_id , count(*) as count from c_access_log ";
1602    $sql .= $where;
1603    $sql .= " AND target_c_member_id <> 0 ";
1604    $sql .= " group by target_c_member_id " . $orderby_str;
1605
1606    $list = db_get_all_limit($sql, $start, $page_size, $params);
1607
1608    $return = array();
1609    $sum = 0;
1610    foreach($list as $key => $value) {
1611        if ($value['target_c_member_id']) {
1612            if ($c_member = db_member_c_member4c_member_id($value['target_c_member_id'])) {
1613                $return[] = array_merge($value, $c_member);
1614                $sum += $value['count'];
1615            }
1616        }
1617    }
1618
1619    $where =" where ktai_flag = ? ";
1620    $params = array(intval($ktai_flag));
1621    if ($month_flag) {
1622        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1623            $where .= " and substr(r_datetime,1,7) = ? ";
1624        } else {
1625            $where .= " and left(r_datetime, 7) = ? ";
1626        }
1627        array_push($params,substr($ymd,0,7));
1628    } else {
1629        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1630            $where .= " and substr(r_datetime,1,10) = ? ";
1631        } else {
1632            $where .= " and left(r_datetime,10) = ? ";
1633        }
1634        array_push($params,$ymd);
1635    }
1636    if ($page_name != "all") {
1637        $where .= " and page_name = ? ";
1638        array_push($params,$page_name);
1639    }
1640    $sql = "select count(*) from c_access_log " ;
1641    $sql .= $where;
1642    $sql .= " AND target_c_member_id <> 0 ";
1643    $sql .= " group by target_c_member_id ";
1644
1645    $result = db_get_all($sql,$params);
1646    $total_num = count($result);
1647
1648    if ($total_num != 0) {
1649        $total_page_num =  ceil($total_num / $page_size);
1650        if ($page >= $total_page_num) {
1651            $next = false;
1652        } else {
1653            $next = true;
1654        }
1655        if ($page <= 1) {
1656            $prev = false;
1657        } else {
1658            $prev = true;
1659        }
1660    }
1661    $start_num = ($page - 1) * $page_size + 1 ;
1662    $end_num =   ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
1663
1664    return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
1665}
1666
1667function get_is_show($name)
1668{
1669
1670    $is_target_c_member_id = 0;
1671    $is_target_c_commu_id  = 0;
1672    $is_target_c_topic_id  = 0;
1673    $is_target_c_diary_id  = 0;
1674    $is_c_member_id        = 1;
1675
1676
1677    //必要のない詳細ボタンを消す
1678    $list = explode("_", $name);
1679    $is_c_member_id = 1;
1680
1681    if (strpos($list[0], 'f') !== false) {
1682        $is_target_c_member_id = 1;
1683    }
1684    if (strpos($list[0], 'c') !== false) {
1685        $is_target_c_commu_id = 1;
1686    }
1687
1688    if (strpos($name, 'topic') !== false || strpos($name, 'event') !== false) {
1689        $is_target_c_topic_id = 1;
1690    }
1691    if (strpos($name, 'diary') !== false) {
1692        $is_target_c_diary_id = 1;
1693    }
1694
1695
1696    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);
1697
1698}
1699
1700/**
1701
1702カラムごとに条件を指定して絞ったメンバーの一覧を返す
1703
1704[引数]
1705適時追加していく
1706
1707$s_access_date    最終ログイン時刻 開始年月日
1708$e_access_date    最終ログイン時刻 終了年月日
1709
1710[返り値]
1711c_member_list
1712
1713*/
1714function p_member_edit_c_member_list($page_size, $page, $s_access_date='', $e_access_date='')
1715{
1716    $page = intval($page);
1717    $page_size = intval($page_size);
1718
1719    $wheres = array();
1720    $params = array();
1721
1722    //指定された条件で絞っていく
1723    if ($s_access_date != '') {
1724        $wheres[] = 'access_date >= ?';
1725        $params[] = $s_access_date;
1726    }
1727
1728    if ($e_access_date != '') {
1729        $wheres[] = 'access_date < ?';
1730        $params[] = $e_access_date;
1731    }
1732
1733    if ($wheres) {
1734        $where = ' WHERE ' . implode(' AND ', $wheres);
1735    } else {
1736        $where = '';
1737    }
1738
1739    $select = "SELECT * FROM c_member";
1740    $order = " order by c_member_id";
1741    $sql = $select . $where . $order;
1742    if ($page_size > 0) {
1743        $list = db_get_all_page($sql, $page, $page_size, $params);
1744    } else {
1745        $list = db_get_all($sql, $params);
1746    }
1747
1748    $sql = "select count(*) from c_member".$where;
1749
1750    $total_num = db_get_one($sql, $params);
1751
1752    if ($total_num != 0 && $page_size != 0) {
1753        $total_page_num =  ceil($total_num / $page_size);
1754        if ($page >= $total_page_num) {
1755            $next = false;
1756        } else {
1757            $next = true;
1758        }
1759        if ($page <= 1) {
1760            $prev = false;
1761        } else {
1762            $prev = true;
1763        }
1764    }
1765
1766    return array($list , $prev , $next, $total_num);
1767}
1768
1769function _db_c_member4c_member_id($c_member_id)
1770{
1771    $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
1772        $params = array(intval($c_member_id));
1773    return db_get_row($sql,$params);
1774}
1775
1776/**
1777 * 男と女の人数を取得
1778 */
1779function get_analysis_sex()
1780{
1781    $sql = "select count(*) from c_member where sex = '男'";
1782    $analysis_sex['male'] = get_one4db($sql);
1783    $sql = "select count(*) from c_member where sex = '女'";
1784    $analysis_sex['female'] = get_one4db($sql);
1785
1786    return $analysis_sex;
1787
1788}
1789
1790/**
1791 * 世代の人数を取得
1792 */
1793function get_analysis_generation()
1794{
1795    $analysis_generation = array(
1796            '0~9' => 0,
1797            '10~19' => 0,
1798            '20~29' => 0,
1799            '30~39' => 0,
1800            '40~49' => 0,
1801            '50~59' => 0,
1802            '60~69' => 0,
1803            '70~79' => 0,
1804            '80~' =>0
1805    );
1806
1807    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1808        $sql = "SELECT ((date_part('year', now()) - birth_year)- " .
1809            "cast(substring(CURRENT_DATE,'.....$')<(to_char(birth_month, '00') || '-' || to_char(birth_day, '00')) as int)) " .
1810            "AS age FROM c_member WHERE birth_year <> 0;";
1811    } else {
1812        $today = getdate();
1813        $mmdd = $today['mon'] * 100 + $today['mday'];
1814        $sql = 'SELECT ' . $today['year'] . ' - birth_year'
1815             . ' - (' . $mmdd . ' < (birth_month * 100 + birth_day))'
1816             . ' AS age FROM c_member WHERE birth_year <> 0';
1817    }
1818    $lst = db_get_all($sql);
1819
1820    $temp = array_keys($analysis_generation);
1821    foreach($lst as $value) {
1822        $key = (int)($value['age'] / 10);
1823        if ($key > count($analysis_generation)-1) {
1824            $analysis_generation[$temp[count($analysis_generation)-1]]++;
1825        } else {
1826            $analysis_generation[$temp[$key]]++;
1827        }
1828    }
1829
1830    return $analysis_generation;
1831
1832}
1833
1834/**
1835 * 地域別の人数を取得
1836 */
1837function get_analysis_region()
1838{
1839    $pref = p_regist_prof_c_profile_pref_list4null();
1840    $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
1841    $lst = get_array_list4db($sql);
1842
1843    foreach($pref as $value) {
1844        $analysis_region[$value] = 0;
1845    }
1846
1847    foreach ($lst as $value) {
1848        if ($value['pref_id'] == 0) {
1849            $analysis_region['その他']++;
1850        } else {
1851            $analysis_region[$pref[$value['pref_id']]]++;
1852        }
1853    }
1854
1855    return $analysis_region;
1856
1857}
1858
1859function get_analysis_date_month($year = "", $month = "")
1860{
1861    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1862        $sql = "select to_char(r_date,'YYYY-MM') from c_member order by r_date";
1863    } else {
1864        $sql = "select date_format(r_date,'%Y-%m') from c_member order by r_date";
1865    }
1866    $start_date = db_get_one($sql);
1867
1868    $i = 0;
1869    list($y, $m) = split("-",$start_date);
1870    do{
1871        $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
1872        $analysis_date_month[$date] = 0;
1873    }while($date < date("Y-m"));
1874
1875    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1876        $sql = "select to_char(r_date,'YYYY-MM') as d from c_member";
1877    } else {
1878        $sql = "select date_format(r_date,'%Y-%m') as d from c_member";
1879    }
1880    $lst = db_get_all($sql);
1881    foreach ($lst as $value) {
1882        $analysis_date_month[$value['d']]++;
1883    }
1884    return $analysis_date_month;
1885}
1886
1887function get_analysis_date_day_d($date="")
1888{
1889    if ($date == "") {
1890       $date = date("Y-m-d");
1891    }
1892    return $date;
1893}
1894
1895
1896function get_analysis_date_day($date="")
1897{
1898    if ($date == "") {
1899        $date = date("Y-m");
1900    }
1901    //一ヶ月の日数
1902    $day_num = date("t");
1903
1904    for($i=1 ; $i<=$day_num; $i++) {
1905        //一桁の数を二桁にする
1906        if ($i < 10) {
1907            $i = "0".$i;
1908        }
1909        $analysis_date_day[$i] = 0;
1910    }
1911
1912    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
1913        $sql = "select to_char(r_date,'DD') as d from c_member where to_char(r_date,'YYYY-MM') = ?";
1914    } else {
1915        $sql = "select date_format(r_date,'%d') as d from c_member where date_format(r_date,'%Y-%m') = ?";
1916    }
1917    $params = array($date);
1918    $lst = db_get_all($sql,$params);
1919
1920    foreach($lst as $value) {
1921        $analysis_date_day[$value['d']]++;
1922    }
1923
1924    return $analysis_date_day;
1925}
1926
1927function p_access_analysis_select_profile_list()
1928{
1929    $sql = "SELECT * " .
1930            " FROM c_profile " .
1931            " where form_type = 'select' ";
1932
1933    $list = db_get_all($sql);
1934    return $list;
1935}
1936
1937/**
1938 * 指定されたIDのプロフィールの人数別一覧を作成
1939 */
1940function get_analysis_profile($c_profile_id)
1941{
1942    $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
1943        " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
1944        " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
1945    $params = array(intval($c_profile_id));
1946    $analysis_profile = db_get_all($sql,$params);
1947
1948    return $analysis_profile;
1949}
1950
1951function get_analysis_count_profile_all($c_profile_id)
1952{
1953    $sql = "select count(*) as count from c_member_profile " .
1954        " WHERE c_profile_id = ? ";
1955    $params = array(intval($c_profile_id));
1956    $analysis_profile = db_get_one($sql,$params);
1957
1958    return $analysis_profile;
1959}
1960
1961function analysis_profile4c_profile_id($c_profile_id)
1962{
1963    $sql = "SELECT * FROM c_profile" .
1964            " WHERE c_profile_id = ? ";
1965    $params = array(intval($c_profile_id));
1966    $profile = db_get_row($sql,$params);
1967
1968    return $profile;
1969}
1970
1971function monitor_diary_list($keyword, $page_size, $page)
1972{
1973    $page = intval($page);
1974    $page_size = intval($page_size);
1975
1976    $wheres = array();
1977
1978    if ($keyword) {
1979        //全角空白を半角に統一
1980        $keyword = str_replace(' ', ' ', $keyword);
1981        $keyword_list = explode(' ', $keyword);
1982
1983        for ($i = 0; $i < count($keyword_list); $i++) {
1984            $keyword = check_search_word($keyword_list[$i]);
1985
1986            $wheres[] = '(subject LIKE ? OR body LIKE ?)';
1987            $params[] = '%' . $keyword . '%';
1988            $params[] = '%' . $keyword . '%';
1989        }
1990    }
1991    if ($wheres) {
1992        $where = ' WHERE ' . implode(' AND ', $wheres);
1993    } else {
1994        $where = '';
1995    }
1996
1997    $select = "SELECT *";
1998    $from = " FROM c_diary";
1999    $order = " ORDER BY r_datetime DESC";
2000
2001    $sql = $select . $from . $where . $order;
2002    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2003    foreach ($list as $key => $value) {
2004        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
2005        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
2006    }
2007
2008    $sql =
2009        "SELECT COUNT(*) "
2010        . $from
2011        . $where ;
2012    $total_num = db_get_one($sql, $params);
2013
2014    $total_page_num =  ceil($total_num / $page_size);
2015    $next = ($page < $total_page_num);
2016    $prev = ($page > 1);
2017
2018    return array($list , $prev , $next, $total_num, $total_page_num);
2019}
2020
2021function monitor_diary_list4c_diary_id($c_diary_id, $page_size, $page)
2022{
2023    $page = intval($page);
2024    $page_size = intval($page_size);
2025
2026    $where = " WHERE c_diary_id = ? ";
2027    $params[] = intval($c_diary_id);
2028
2029    $select = "SELECT c_diary.*";
2030    $from = " FROM c_diary";
2031    $order = " ORDER BY r_datetime DESC";
2032
2033    $sql = $select . $from . $where . $order;
2034    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2035    foreach ($list as $key => $value) {
2036        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
2037        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
2038    }
2039
2040    $sql =
2041        "SELECT COUNT(*) "
2042        . $from
2043        . $where ;
2044    $total_num = db_get_one($sql, $params);
2045
2046    $total_page_num =  ceil($total_num / $page_size);
2047    $next = ($page < $total_page_num);
2048    $prev = ($page > 1);
2049
2050    return array($list , $prev , $next, $total_num, $total_page_num);
2051}
2052
2053function monitor_diary_comment_list($keyword, $page_size, $page)
2054{
2055    $page = intval($page);
2056    $page_size = intval($page_size);
2057
2058    $wheres = array();
2059
2060    if ($keyword) {
2061        //全角空白を半角に統一
2062        $keyword = str_replace(' ', ' ', $keyword);
2063        $keyword_list = explode(' ', $keyword);
2064
2065        for($i = 0; $i < count($keyword_list); $i++) {
2066            $keyword = check_search_word($keyword_list[$i]);
2067
2068            $wheres[] = 'c_diary_comment.body LIKE ?';
2069            $params[] = '%' . $keyword . '%';
2070        }
2071    }
2072
2073    if ($wheres) {
2074        $where = ' WHERE ' . implode(' AND ', $wheres);
2075    } else {
2076        $where = '';
2077    }
2078
2079    $select = "SELECT c_diary_comment.*, c_diary.subject";
2080    $from = " FROM c_diary_comment"
2081        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
2082    $order = " ORDER BY r_datetime desc";
2083
2084    $sql = $select . $from . $where . $order;
2085    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2086    foreach ($list as $key => $value) {
2087        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
2088        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
2089    }
2090
2091    $sql =
2092        "SELECT COUNT(*) "
2093        . $from
2094        . $where ;
2095    $total_num = db_get_one($sql, $params);
2096
2097    $total_page_num =  ceil($total_num / $page_size);
2098    $next = ($page < $total_page_num);
2099    $prev = ($page > 1);
2100
2101    return array($list , $prev , $next, $total_num, $total_page_num);
2102}
2103
2104function monitor_diary_comment_list4c_diary_comment_id($c_diary_comment_id, $page_size, $page)
2105{
2106    $page = intval($page);
2107    $page_size = intval($page_size);
2108
2109    $where = " WHERE c_diary_comment.c_diary_comment_id = ? ";
2110    $params[] = intval($c_diary_comment_id);
2111
2112    $select = "SELECT c_diary_comment.*, c_diary.subject";
2113    $from = " FROM c_diary_comment"
2114        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
2115    $order = " ORDER BY r_datetime desc";
2116
2117    $sql = $select . $from . $where . $order;
2118    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2119
2120    foreach ($list as $key => $value) {
2121        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
2122        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
2123    }
2124
2125    $sql =
2126        "SELECT COUNT(*) "
2127        . $from
2128        . $where ;
2129    $total_num = db_get_one($sql, $params);
2130
2131    $total_page_num =  ceil($total_num / $page_size);
2132    $next = ($page < $total_page_num);
2133    $prev = ($page > 1);
2134
2135    return array($list , $prev , $next, $total_num, $total_page_num);
2136}
2137
2138function monitor_diary_comment_list4c_diary_id($c_diary_id, $page_size, $page)
2139{
2140    $page = intval($page);
2141    $page_size = intval($page_size);
2142
2143    $where = " WHERE c_diary_comment.c_diary_id = ? ";
2144    $params[] = intval($c_diary_id);
2145
2146    $select = "SELECT c_diary_comment.*, c_diary.subject";
2147    $from = " FROM c_diary_comment"
2148        ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
2149    $order = " ORDER BY r_datetime desc";
2150
2151    $sql = $select . $from . $where . $order;
2152    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2153
2154    foreach ($list as $key => $value) {
2155        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
2156        $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
2157    }
2158
2159    $sql =
2160        "SELECT COUNT(*) "
2161        . $from
2162        . $where ;
2163    $total_num = db_get_one($sql, $params);
2164
2165    $total_page_num =  ceil($total_num / $page_size);
2166    $next = ($page < $total_page_num);
2167    $prev = ($page > 1);
2168
2169    return array($list , $prev , $next, $total_num, $total_page_num);
2170}
2171
2172function monitor_commu_list($keyword, $page_size, $page)
2173{
2174    $page = intval($page);
2175    $page_size = intval($page_size);
2176
2177    $wheres = array();
2178
2179    if ($keyword) {
2180        $keyword = str_replace(' ', ' ', $keyword);
2181        $keyword_list = explode(' ', $keyword);
2182
2183        for($i = 0; $i < count($keyword_list); $i++) {
2184            $keyword = check_search_word($keyword_list[$i]);
2185
2186            $wheres[] = '(name LIKE ? OR info LIKE ?)';
2187            $params[] = '%' . $keyword . '%';
2188            $params[] = '%' . $keyword . '%';
2189        }
2190    }
2191
2192    if ($wheres) {
2193        $where = ' WHERE ' . implode(' AND ', $wheres);
2194    } else {
2195        $where = '';
2196    }
2197
2198    $select = "SELECT * ";
2199    $from = " FROM c_commu";
2200    $order = " ORDER BY r_datetime DESC";
2201
2202    $sql = $select . $from . $where . $order;
2203
2204    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2205
2206    foreach ($list as $key => $value) {
2207        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);
2208    }
2209
2210    $sql =
2211        "SELECT COUNT(*) "
2212        . $from
2213        . $where ;
2214    $total_num = db_get_one($sql, $params);
2215
2216    $total_page_num =  ceil($total_num / $page_size);
2217    $next = ($page < $total_page_num);
2218    $prev = ($page > 1);
2219
2220    return array($list, $prev, $next, $total_num, $total_page_num);
2221}
2222
2223function monitor_commu_list4c_commu_id($c_commu_id, $page_size, $page)
2224{
2225    $page = intval($page);
2226    $page_size = intval($page_size);
2227
2228    $where = " WHERE c_commu_id = ? ";
2229    $params[] = intval($c_commu_id);
2230
2231    $select = "SELECT * ";
2232    $from = " FROM c_commu";
2233    $order = " ORDER BY r_datetime DESC";
2234
2235    $sql = $select . $from . $where . $order;
2236
2237    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2238
2239    foreach ($list as $key => $value) {
2240        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);;
2241    }
2242
2243    $sql =
2244        "SELECT COUNT(*) "
2245        . $from
2246        . $where ;
2247    $total_num = db_get_one($sql, $params);
2248
2249    $total_page_num =  ceil($total_num / $page_size);
2250    $next = ($page < $total_page_num);
2251    $prev = ($page > 1);
2252
2253    return array($list , $prev , $next, $total_num, $total_page_num);
2254}
2255
2256function monitor_topic_comment_list($keyword, $page_size, $page)
2257{
2258    $page = intval($page);
2259    $page_size = intval($page_size);
2260
2261    $where = " WHERE ctc.number <> 0  ";
2262
2263    if ($keyword) {
2264        $keyword = str_replace("?@", " ", $keyword);
2265        $keyword_list = explode(" ", $keyword);
2266
2267        for($i=0;$i < count($keyword_list);$i++) {
2268            $keyword = check_search_word( $keyword_list[$i] );
2269
2270            $where .= " AND (ctc.body LIKE ? )";
2271            $params[]="%$keyword%";
2272        }
2273    }
2274
2275    $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name";
2276    $from = " FROM c_commu_topic_comment as ctc"
2277            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
2278            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
2279    $order = " ORDER BY r_datetime desc";
2280
2281    $sql = $select . $from . $where . $order;
2282
2283    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2284
2285    foreach ($list as $key => $value) {
2286        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
2287        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
2288        $list[$key]['nickname'] = $c_member['nickname'];
2289        $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
2290    }
2291
2292    $sql =
2293        "SELECT COUNT(*) "
2294        . $from
2295        . $where ;
2296    $total_num = db_get_one($sql, $params);
2297
2298    $total_page_num =  ceil($total_num / $page_size);
2299    $next = ($page < $total_page_num);
2300    $prev = ($page > 1);
2301
2302    return array($list , $prev , $next, $total_num, $total_page_num);
2303}
2304
2305function monitor_topic_comment_list4c_commu_topic_comment_id($c_commu_topic_comment_id, $page_size, $page)
2306{
2307    $page = intval($page);
2308    $page_size = intval($page_size);
2309
2310    $where = " WHERE ctc.number <> 0 AND ctc.c_commu_topic_comment_id = ? ";
2311    $params[] = intval($c_commu_topic_comment_id);
2312
2313    $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name";
2314    $from = " FROM c_commu_topic_comment as ctc"
2315            ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
2316            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
2317    $order = " ORDER BY r_datetime desc";
2318
2319    $sql = $select . $from . $where . $order;
2320
2321    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2322
2323    foreach ($list as $key => $value) {
2324        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
2325        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
2326        $list[$key]['nickname'] = $c_member['nickname'];
2327        $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
2328    }
2329
2330    $sql =
2331        "SELECT COUNT(*) "
2332        . $from
2333        . $where ;
2334    $total_num = db_get_one($sql, $params);
2335
2336    $total_page_num =  ceil($total_num / $page_size);
2337    $next = ($page < $total_page_num);
2338    $prev = ($page > 1);
2339
2340    return array($list , $prev , $next, $total_num, $total_page_num);
2341}
2342
2343function monitor_topic_list($keyword, $page_size, $page)
2344{
2345    $page = intval($page);
2346    $page_size = intval($page_size);
2347
2348    $wheres = array();
2349
2350    if ($keyword) {
2351        $keyword = str_replace(' ', ' ', $keyword);
2352        $keyword_list = explode(' ', $keyword);
2353
2354        for ($i = 0; $i < count($keyword_list); $i++) {
2355            $keyword = check_search_word($keyword_list[$i]);
2356
2357            $wheres[] = '(ctc.body like ? OR ct.name like ? OR c.name like ?)';
2358            $params[] = '%' . $keyword . '%';
2359            $params[] = '%' . $keyword . '%';
2360            $params[] = '%' . $keyword . '%';
2361        }
2362    }
2363
2364    if ($wheres) {
2365        $where = ' WHERE ' . implode(' AND ', $wheres);
2366    } else {
2367        $where = '';
2368    }
2369
2370    $select = "SELECT ct.*," .
2371            "ct.name AS topic_name, c.name AS commu_name," .
2372            "ctc.body, ctc.filename, ctc.image_filename1, ctc.image_filename2, ctc.image_filename3";
2373
2374    $from = " FROM c_commu_topic AS ct"
2375            ." LEFT JOIN c_commu AS c ON c.c_commu_id = ct.c_commu_id "
2376            ." LEFT JOIN c_commu_topic_comment AS ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)";
2377
2378    $order = " ORDER BY r_datetime desc";
2379
2380    $sql = $select . $from . $where . $order;
2381
2382    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2383
2384    foreach ($list as $key => $value) {
2385        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
2386        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
2387        $list[$key]['nickname'] = $c_member['nickname'];
2388        if (!empty($value['filename'])) {
2389            $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
2390        }
2391    }
2392
2393    $sql =
2394        "SELECT COUNT(*) "
2395        . $from
2396        . $where ;
2397    $total_num = db_get_one($sql, $params);
2398
2399    $total_page_num =  ceil($total_num / $page_size);
2400    $next = ($page < $total_page_num);
2401    $prev = ($page > 1);
2402
2403    return array($list , $prev , $next, $total_num, $total_page_num);
2404}
2405
2406function monitor_topic_list4target_c_commu_topic_id($c_commu_topic_id, $page_size, $page)
2407{
2408    $page = intval($page);
2409    $page_size = intval($page_size);
2410
2411    $where = " where ct.c_commu_topic_id = ? ";
2412    $params[] = intval($c_commu_topic_id);
2413
2414    $select = "SELECT ct.*," .
2415            "ct.name as topic_name,c.name as commu_name," .
2416            "m.nickname,ctc.body as body," .
2417            "ctc.image_filename1 as image_filename1,ctc.image_filename2 as image_filename2,ctc.image_filename3 as image_filename3," .
2418            "ctc.filename as filename,f.original_filename as original_filename";
2419
2420    $from = " FROM c_commu_topic as ct"
2421            ." LEFT JOIN c_member as m ON ct.c_member_id = m.c_member_id "
2422            ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id "
2423            ." LEFT JOIN c_commu_topic_comment as ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)"
2424            ." LEFT JOIN c_file as f ON f.filename = ctc.filename "
2425            ;
2426    $order = " ORDER BY r_datetime desc";
2427
2428    $sql = $select . $from . $where . $order;
2429
2430    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2431
2432    foreach ($list as $key => $value) {
2433        $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
2434    }
2435
2436    $sql =
2437        "SELECT count(*) "
2438        . $from
2439        . $where ;
2440    $total_num = db_get_one($sql, $params);
2441
2442    $total_page_num =  ceil($total_num / $page_size);
2443    $next = ($page < $total_page_num);
2444    $prev = ($page > 1);
2445
2446    return array($list , $prev , $next, $total_num, $total_page_num);
2447}
2448
2449function monitor_review_list($keyword, $page_size, $page)
2450{
2451    $page = intval($page);
2452    $page_size = intval($page_size);
2453
2454    $wheres = array();
2455
2456    if ($keyword) {
2457        //全角空白を半角に統一
2458        $keyword = str_replace(' ', ' ', $keyword);
2459        $keyword_list = explode(' ', $keyword);
2460
2461        for ($i = 0; $i < count($keyword_list); $i++) {
2462            $keyword = check_search_word($keyword_list[$i]);
2463
2464            $wheres[] = 'c_review_comment.body like ?';
2465            $params[] = '%' . $keyword . '%';
2466        }
2467    }
2468
2469    if ($wheres) {
2470        $where = ' WHERE ' . implode(' AND ', $wheres);
2471    } else {
2472        $where = '';
2473    }
2474
2475    $select = "SELECT c_review_comment.*";
2476    $from = " FROM c_review_comment";
2477    $order = " ORDER BY r_datetime desc";
2478
2479    $sql = $select . $from . $where . $order;
2480    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2481
2482
2483    foreach ($list as $key => $value) {
2484        $list[$key]['c_member'] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
2485        $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
2486    }
2487
2488    $sql =
2489        "SELECT COUNT(*) "
2490        . $from
2491        . $where ;
2492    $total_num = db_get_one($sql,$params);
2493
2494    $total_page_num =  ceil($total_num / $page_size);
2495    $next = ($page < $total_page_num);
2496    $prev = ($page > 1);
2497
2498    return array($list , $prev , $next, $total_num, $total_page_num);
2499}
2500
2501function monitor_review_list4c_review_id($c_review_comment_id, $page_size, $page)
2502{
2503    $page = intval($page);
2504    $page_size = intval($page_size);
2505
2506    $where = " WHERE c_review_comment_id = ? ";
2507    $params[] = intval($c_review_comment_id);
2508
2509    $select = "SELECT c_review_comment.*";
2510    $from = " FROM c_review_comment";
2511    $order = " ORDER BY r_datetime desc";
2512
2513    $sql = $select . $from . $where . $order;
2514    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
2515
2516    foreach ($list as $key => $value) {
2517        $list[$key]['c_member'] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
2518        $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
2519    }
2520
2521    $sql =
2522        "SELECT COUNT(*) "
2523        . $from
2524        . $where ;
2525    $total_num = db_get_one($sql, $params);
2526
2527    $total_page_num =  ceil($total_num / $page_size);
2528    $next = ($page < $total_page_num);
2529    $prev = ($page > 1);
2530
2531    return array($list , $prev , $next, $total_num, $total_page_num);
2532}
2533
2534function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
2535{
2536    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
2537        " WHERE c_commu_topic_id = ? AND number > 0";
2538    $params = array($c_commu_topic_id);
2539    return db_get_one($sql, $params);
2540}
2541//フリーページを追加
2542function db_admin_insert_c_free_page($title, $body, $auth, $type)
2543{
2544    $data = array(
2545        'title' => strval($title),
2546        'body'  => strval($body),
2547        'auth'  => intval($auth),
2548        'type'  => strval($type),
2549    );
2550    return db_insert('c_free_page', $data);
2551}
2552
2553//フリーページを編集
2554function db_admin_update_c_free_page($c_free_page_id, $title, $body, $auth, $type)
2555{
2556    $data = array(
2557        'title' => strval($title),
2558        'body'  => strval($body),
2559        'auth'  => intval($auth),
2560        'type'  => strval($type),
2561    );
2562    $where = array('c_free_page_id' => intval($c_free_page_id));
2563    return db_update('c_free_page', $data, $where);
2564}
2565
2566//フリーページを削除
2567function db_admin_delete_c_free_page($c_free_page_id)
2568{
2569    $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
2570    $params = array(intval($c_free_page_id));
2571    return db_query($sql, $params);
2572}
2573
2574
2575//フリーページを全て取得(ページャー付き)
2576function db_admin_get_c_free_page_all($page, $page_size, &$pager)
2577{
2578    $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
2579
2580    $list = db_get_all_page($sql, $page, $page_size, $params);
2581
2582    $sql = 'SELECT count(*) FROM c_free_page';
2583    $total_num = db_get_one($sql, $params);
2584    $pager = admin_make_pager($page, $page_size, $total_num);
2585
2586    return $list;
2587}
2588
2589//フリーページを一つ取得
2590function db_admin_get_c_free_page_one($c_free_page_id)
2591{
2592    $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
2593    $params = array(intval($c_free_page_id));
2594
2595    return db_get_row($sql, $params);
2596}
2597
2598//APIを全て取得(ページャー付き)
2599function db_admin_get_c_api_all($page, $page_size, &$pager)
2600{
2601    $sql = 'SELECT * FROM c_api ORDER BY c_api_id';
2602
2603    $list = db_get_all_page($sql, $page, $page_size, $params);
2604
2605    $sql = 'SELECT count(*) FROM c_api';
2606    $total_num = db_get_one($sql, $params);
2607    $pager = admin_make_pager($page, $page_size, $total_num);
2608
2609    return $list;
2610}
2611
2612//APIを編集
2613function db_admin_update_c_api($c_api_id, $name, $ip)
2614{
2615    $data = array(
2616        'name' => strval($name),
2617        'ip' => strval($ip),
2618    );
2619    $where = array('c_api_id' => intval($c_api_id));
2620    return db_update('c_api', $data, $where);
2621}
2622
2623//CMDを追加
2624function db_admin_insert_c_cmd($name, $permit)
2625{
2626    $data = array(
2627        'name' => strval($name),
2628        'permit' => intval($permit),
2629    );
2630    return db_insert('c_cmd', $data);
2631}
2632
2633//CMDを編集
2634function db_admin_update_c_cmd($c_cmd_id, $name, $permit)
2635{
2636    $data = array(
2637        'name' => strval($name),
2638        'permit' => intval($permit),
2639    );
2640    $where = array('c_cmd_id' => intval($c_cmd_id));
2641    return db_update('c_cmd', $data, $where);
2642}
2643
2644//CMDを削除
2645function db_admin_delete_c_cmd($c_cmd_id)
2646{
2647    $sql = "DELETE FROM c_cmd WHERE c_cmd_id = ?";
2648    $params = array(intval($c_cmd_id));
2649    return db_query($sql, $params);
2650}
2651
2652
2653//CMDを全て取得
2654function db_admin_get_c_cmd_all()
2655{
2656    $sql = 'SELECT * FROM c_cmd ORDER BY c_cmd_id';
2657    return db_get_all($sql);
2658}
2659
2660//CMDを一つ取得
2661function db_admin_get_c_cmd_one($c_cmd_id)
2662{
2663    $sql = 'SELECT * FROM c_cmd WHERE c_cmd_id = ?';
2664    $params = array(intval($c_cmd_id));
2665
2666    return db_get_row($sql, $params);
2667}
2668
2669/***
2670 * CMD(小窓)の設定リストを取得する
2671 *
2672 * @return array 小窓の設定リスト
2673 */
2674function db_admin_get_c_cmd_list4name()
2675{
2676    $sql = 'SELECT * FROM c_cmd';
2677    return db_get_all($sql);
2678}
2679
2680/**
2681 * 祝日のリストを取得
2682 */
2683function db_admin_c_holiday_list()
2684{
2685    $sql = 'SELECT * FROM c_holiday ORDER BY month';
2686    $holiday_list = db_get_all($sql);
2687
2688    return $holiday_list;
2689}
2690
2691/**
2692 * 休日を追加
2693 */
2694function db_admin_insert_c_holiday($name, $month, $day)
2695{
2696    $data = array(
2697        'name' => strval($name),
2698        'month' => intval($month),
2699        'day' => intval($day),
2700    );
2701    return db_insert('c_holiday', $data);
2702}
2703
2704/**
2705 * 休日を編集
2706 */
2707function db_admin_update_c_holiday($c_holiday_id, $name, $month, $day)
2708{
2709    $data = array(
2710        'name' => strval($name),
2711        'month' => intval($month),
2712        'day' => intval($day),
2713    );
2714    $where = array('c_holiday_id' => intval($c_holiday_id));
2715    return db_update('c_holiday', $data, $where);
2716}
2717
2718/**
2719 * 休日を削除
2720 */
2721function db_admin_delete_c_holiday($c_holiday_id)
2722{
2723    $sql = "DELETE FROM c_holiday WHERE c_holiday_id = ?";
2724    $params = array(intval($c_holiday_id));
2725    return db_query($sql, $params);
2726}
2727
2728//メッセージ送信履歴を挿入
2729function db_admin_insert_c_send_messages_history($subject, $body, $send_num, $type, $c_member_ids)
2730{
2731
2732    //配列を文字列に変換
2733    if($c_member_ids) {
2734        $c_member_ids = implode("-",$c_member_ids);
2735    } else {
2736        return;
2737    }
2738
2739    $data = array(
2740        'subject'       => strval($subject),
2741        'body'          => strval($body),
2742        'send_num'      => intval($send_num),
2743        'type'          => strval($type),
2744        'c_member_ids'  => strval($c_member_ids),
2745        'r_datetime'    => db_now()
2746    );
2747
2748    return db_insert('c_send_messages_history', $data);
2749
2750}
2751
2752//メッセージ送信履歴を全て取得(ページャー付き)
2753function db_admin_get_c_send_messages_history_all($page, $page_size, &$pager)
2754{
2755
2756    $sql = 'SELECT * FROM c_send_messages_history ORDER BY c_send_messages_history_id DESC';
2757
2758    $history_list = db_get_all_page($sql, $page, $page_size, $params);
2759
2760    foreach ($history_list as $key => $history) {
2761        $history_list[$key]['c_member_ids'] = explode("-", $history['c_member_ids']);
2762    }
2763
2764    $sql = 'SELECT count(*) FROM c_send_messages_history';
2765    $total_num = db_get_one($sql, $params);
2766    $pager = admin_make_pager($page, $page_size, $total_num);
2767
2768    return $history_list;
2769}
2770
2771//メッセージ送信履歴を一つ取得
2772function db_admin_get_c_send_messages_history($c_send_messages_history_id)
2773{
2774
2775    $sql = 'SELECT * FROM c_send_messages_history WHERE c_send_messages_history_id = ?';
2776
2777    $params = array(intval($c_send_messages_history_id));
2778
2779    $history = db_get_row($sql, $params);
2780
2781    $history['c_member_ids'] = explode("-", $history['c_member_ids']);
2782
2783    return $history;
2784}
2785
2786//メッセージをキューに入れる
2787function db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body)
2788{
2789    $data = array(
2790        'c_member_id_from' => intval($c_member_id_from),
2791        'c_member_id_to'   => intval($c_member_id_to),
2792        'subject'          => strval($subject),
2793        'body'             => strval($body),
2794    );
2795    return db_insert('c_message_queue', $data);
2796}
2797
2798//メッセージをキューから削除
2799function db_admin_delete_c_message_queue($c_message_queue_id)
2800{
2801
2802    $sql = "DELETE FROM c_message_queue WHERE c_message_queue_id = ?";
2803    $params = array(intval($c_message_queue_id));
2804
2805    return db_query($sql, $params);
2806}
2807
2808//ランクを追加
2809function db_admin_insert_c_rank($name, $image_filename, $point)
2810{
2811    $data = array(
2812        'name' => strval($name),
2813        'image_filename' => strval($image_filename),
2814        'point' => intval($point),
2815    );
2816    return db_insert('c_rank', $data);
2817}
2818
2819//ランクを編集
2820function db_admin_update_c_rank($c_rank_id, $name, $image_filename, $point)
2821{
2822    $data = array(
2823        'name' => strval($name),
2824        'image_filename' => strval($image_filename),
2825        'point' => intval($point),
2826    );
2827    $where = array('c_rank_id' => intval($c_rank_id));
2828    return db_update('c_rank', $data, $where);
2829}
2830
2831//ランクを削除
2832function db_admin_delete_c_rank($c_rank_id)
2833{
2834    $sql = "DELETE FROM c_rank WHERE c_rank_id = ?";
2835    $params = array(intval($c_rank_id));
2836    return db_query($sql, $params);
2837}
2838
2839//ランクを全て取得
2840function db_admin_get_c_rank_all()
2841{
2842    $sql = 'SELECT * FROM c_rank ORDER BY point';
2843    return db_get_all($sql);
2844}
2845
2846//ランクを一つ取得
2847function db_admin_get_c_rank_one($c_rank_id)
2848{
2849    $sql = 'SELECT * FROM c_rank WHERE c_rank_id = ?';
2850    $params = array(intval($c_rank_id));
2851
2852    return db_get_row($sql, $params);
2853}
2854
2855//アクションを編集
2856function db_admin_update_c_action($c_action_id, $point)
2857{
2858    $data = array(
2859        'point' => intval($point),
2860    );
2861    $where = array('c_action_id' => intval($c_action_id));
2862    return db_update('c_action', $data, $where);
2863}
2864
2865//アクションを全て取得
2866function db_admin_get_c_action_all()
2867{
2868    $sql = 'SELECT * FROM c_action ORDER BY c_action_id';
2869    return db_get_all($sql);
2870}
2871
2872/**
2873 * 指定したファイル名のファイルへのリンクを削除する
2874 *
2875 * @param string $filename
2876 */
2877function db_admin_delete_c_file_link4filename($filename)
2878{
2879    // c_commu_topic_comment
2880    $tbl = 'c_commu_topic_comment';
2881    _db_admin_empty_filename($tbl, $filename, 'filename');
2882
2883    // h_message
2884    $tbl = 'c_message';
2885    _db_admin_empty_filename($tbl, $filename, 'filename');
2886}
2887
2888function db_admin_get_c_member_profile_pnepoint($c_member_id)
2889{
2890    $sql = 'SELECT c_profile_id FROM c_profile where name = \'PNE_POINT\'';
2891    $c_profile_id =  db_get_one($sql);
2892    $params = array($c_member_id , $c_profile_id);
2893    $sql = 'SELECT * FROM c_member_profile where c_member_id = ? and c_profile_id = ?';
2894    $c_member_profile = db_get_row($sql, $params);
2895
2896    return  $c_member_profile;
2897}
2898
2899function db_admin_c_blacklist_list($page, $page_size)
2900{
2901    $sql = 'SELECT b.c_blacklist_id,ms.c_member_id,b.info,m.nickname,b.easy_access_id ' .
2902            ' FROM c_blacklist AS b' .
2903            ' LEFT JOIN c_member_secure AS ms ON b.easy_access_id = ms.easy_access_id'.
2904            ' LEFT JOIN c_member AS m ON ms.c_member_id = m.c_member_id' .
2905            ' ORDER BY b.c_blacklist_id ASC';
2906    $list = db_get_all_page($sql, $page, $page_size);
2907
2908    $sql = 'SELECT count(*) FROM c_blacklist';
2909    $total_num = db_get_one($sql);
2910
2911    $total_page_num = ceil($total_num / $page_size);
2912    $next = ($page < $total_page_num);
2913    $prev = ($page > 1);
2914
2915    return array($list, $prev, $next, $total_num, $total_page_num);
2916}
2917
2918function db_admin_insert_c_blacklist($easy_access_id, $info)
2919{
2920    $data = array(
2921        'easy_access_id' => $easy_access_id,
2922        'info' => (string)$info,
2923    );
2924    return db_insert('c_blacklist', $data);
2925}
2926
2927function db_admin_update_c_blacklist($c_blacklist_id, $easy_access_id, $info)
2928{
2929    $data = array(
2930        'easy_access_id' => $easy_access_id,
2931        'info' => (string)$info,
2932    );
2933    $where = array('c_blacklist_id' => $c_blacklist_id);
2934    return db_update('c_blacklist', $data, $where);
2935}
2936
2937function db_admin_delete_c_blacklist($c_blacklist_id)
2938{
2939    $sql = 'DELETE FROM c_blacklist WHERE c_blacklist_id = ?';
2940    $params = array(intval($c_blacklist_id));
2941    db_query($sql, $params);
2942}
2943
2944function db_admin_c_blacklist($c_blacklist_id)
2945{
2946    $sql = 'SELECT b.c_blacklist_id,ms.c_member_id,b.info,m.nickname,b.easy_access_id ' .
2947            ' FROM c_blacklist AS b' .
2948            ' LEFT JOIN c_member_secure AS ms ON b.easy_access_id = ms.easy_access_id'.
2949            ' LEFT JOIN c_member AS m ON ms.c_member_id = m.c_member_id' .
2950            ' WHERE b.c_blacklist_id = ? '
2951            ;
2952    $param = array($c_blacklist_id);
2953    $blacklist = db_get_row($sql, $param);
2954
2955    return $blacklist;
2956}
2957
2958function db_admin_enabled_module_list()
2959{
2960    $sql = 'SELECT * FROM c_module WHERE is_enabled = 1';
2961    $module_list = db_get_all($sql);
2962
2963    return $module_list;
2964}
2965
2966function db_admin_insert_module_enabled($module, $is_enabled)
2967{
2968    $data = array(
2969        'name' => $module,
2970        'is_enabled' => $is_enabled,
2971    );
2972    return db_insert('c_module', $data);
2973}
2974
2975function db_admin_update_module_enabled($module, $is_enabled)
2976{
2977    $data = array(
2978        'is_enabled' => $is_enabled,
2979    );
2980    $where = array(
2981        'name' => $module,
2982    );
2983    return db_update('c_module', $data, $where);
2984}
2985
2986function db_admin_enabled_module_config_list()
2987{
2988    $enable_module_list = db_admin_enabled_module_list();
2989    $configs = array();
2990    foreach ($enable_module_list as $module) {
2991        $name = $module['name'];
2992        $configs[$name] = util_get_module_config($name);
2993    }
2994
2995    return $configs;
2996}
2997
2998function db_admin_c_config_decoration_list()
2999{
3000    $sql = 'SELECT * FROM c_config_decoration';
3001    $c_config_decoration_list = db_get_all($sql);
3002
3003    return $c_config_decoration_list;
3004}
3005
3006function db_admin_update_c_config_decoration($c_config_decoration_id, $is_enabled)
3007{
3008    $data = array(
3009        'is_enabled' => $is_enabled,
3010    );
3011    $where = array('c_config_decoration_id' => $c_config_decoration_id);
3012    return db_update('c_config_decoration', $data, $where);
3013}
3014
3015function db_admin_album_count_c_album_image4c_album_id($c_album_id)
3016{
3017    $sql = 'SELECT COUNT(*) FROM c_album_image WHERE c_album_id = ?';
3018    return db_get_one($sql, array(intval($c_album_id)));
3019}
3020
3021function db_admin_album_list($keyword, $page_size, $page)
3022{
3023    $page = intval($page);
3024    $page_size = intval($page_size);
3025
3026    $wheres = array();
3027
3028    if ($keyword) {
3029        //全角空白を半角に統一
3030        $keyword = str_replace(' ', ' ', $keyword);
3031        $keyword_list = explode(' ', $keyword);
3032
3033        for ($i = 0; $i < count($keyword_list); $i++) {
3034            $keyword = check_search_word($keyword_list[$i]);
3035
3036            $wheres[] = '(subject LIKE ? OR description LIKE ?)';
3037            $params[] = '%' . $keyword . '%';
3038            $params[] = '%' . $keyword . '%';
3039        }
3040    }
3041    if ($wheres) {
3042        $where = ' WHERE ' . implode(' AND ', $wheres);
3043    } else {
3044        $where = '';
3045    }
3046
3047    $select = "SELECT *";
3048    $from = " FROM c_album";
3049    $order = " ORDER BY r_datetime DESC";
3050
3051    $sql = $select . $from . $where . $order;
3052    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
3053    foreach ($list as $key => $value) {
3054        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
3055        $list[$key]['count_images'] = db_admin_album_count_c_album_image4c_album_id($value['c_album_id']);
3056    }
3057
3058    $sql =
3059        "SELECT COUNT(*) "
3060        . $from
3061        . $where ;
3062    $total_num = db_get_one($sql, $params);
3063
3064    $total_page_num =  ceil($total_num / $page_size);
3065    $next = ($page < $total_page_num);
3066    $prev = ($page > 1);
3067
3068    return array($list , $prev , $next, $total_num, $total_page_num);
3069}
3070
3071function db_admin_album_list4c_album_id($c_album_id, $page_size, $page)
3072{
3073    $page = intval($page);
3074    $page_size = intval($page_size);
3075
3076    $where = " WHERE c_album_id = ? ";
3077    $params[] = intval($c_album_id);
3078
3079    $select = "SELECT c_album.*";
3080    $from = " FROM c_album";
3081    $order = " ORDER BY r_datetime DESC";
3082
3083    $sql = $select . $from . $where . $order;
3084    $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
3085    foreach ($list as $key => $value) {
3086        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
3087        $list[$key]['count_images'] = db_admin_album_count_c_album_image4c_album_id($value['c_album_id']);
3088    }
3089
3090    $sql =
3091        "SELECT COUNT(*) "
3092        . $from
3093        . $where ;
3094    $total_num = db_get_one($sql, $params);
3095
3096    $total_page_num =  ceil($total_num / $page_size);
3097    $next = ($page < $total_page_num);
3098    $prev = ($page > 1);
3099
3100    return array($list , $prev , $next, $total_num, $total_page_num);
3101}
3102
3103function db_admin_c_album_image_list($page, $page_size, &$pager, $c_album_id = null)
3104{
3105    $db =& db_get_instance('image');
3106
3107    $params = array();
3108    $sql = 'SELECT cai.c_album_image_id, cai.image_filename, cai.r_datetime, cai.image_description, cai.c_album_id, ca.subject'
3109         . ' FROM c_album_image AS cai'
3110         . ' INNER JOIN c_album AS ca ON cai.c_album_id = ca.c_album_id';
3111    if ($c_album_id) {
3112        $sql .= ' WHERE ca.c_album_id = ?';
3113        $params[] = $c_album_id;
3114    }
3115    $sql .= ' ORDER BY cai.c_album_image_id DESC';
3116    $c_image_album_list = db_get_all_page($sql, $page, $page_size, $params);
3117
3118    $sql = 'SELECT COUNT(*) FROM c_album_image';
3119    if ($c_album_id) {
3120        $sql .=  ' WHERE c_album_id = ?';
3121    }
3122    $total_num = $db->get_one($sql, $params);
3123
3124    $pager = admin_make_pager($page, $page_size, $total_num);
3125    return $c_image_album_list;
3126}
3127
3128function db_admin_c_album_image_list4c_album_image_id($page, $page_size, &$pager, $c_album_image_id)
3129{
3130    $db =& db_get_instance('image');
3131
3132    $sql = 'SELECT cai.c_album_image_id, cai.image_filename, cai.r_datetime, cai.image_description, cai.c_album_id, ca.subject'
3133         . ' FROM c_album_image AS cai'
3134         . ' INNER JOIN c_album AS ca ON cai.c_album_id = ca.c_album_id'
3135         . ' WHERE cai.c_album_image_id = ?'
3136         . ' ORDER BY cai.c_album_image_id DESC';
3137    $params = array($c_album_image_id);
3138    $c_image_album_list = db_get_all_page($sql, $page, $page_size, $params);
3139
3140    $sql = 'SELECT COUNT(*) FROM c_album_image'
3141         . ' WHERE c_album_image_id = ?';
3142    $total_num = $db->get_one($sql, $params);
3143
3144    $pager = admin_make_pager($page, $page_size, $total_num);
3145    return $c_image_album_list;
3146}
3147
3148function db_admin_get_c_cmd_caster_list()
3149{
3150    $sql = 'SELECT * FROM c_cmd_caster ORDER BY c_cmd_caster_id ASC';
3151    return db_get_all($sql);
3152}
3153
3154function db_admin_insert_c_cmd_caster($url)
3155{
3156    $result = false;
3157
3158    require_once 'OpenPNE/RSS.php';
3159    $rss = new OpenPNE_RSS();
3160    $title = $rss->get_feed_title($url);
3161    $description = $rss->get_feed_description($url);
3162
3163    if (!$title && !$description) {
3164        return false;
3165    }
3166
3167    if (!$title) {
3168        $title = '';
3169    }
3170
3171    if (!$description) {
3172        $title = '';
3173    }
3174
3175    $data = array(
3176        'title' => $title,
3177        'description' => $description,
3178        'url' => $url,
3179    );
3180    $c_cmd_caster_id = db_insert('c_cmd_caster', $data);
3181
3182    if ($c_cmd_caster_id) {
3183        $result = (bool)db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
3184        if (!$result) {
3185            db_admin_delete_c_cmd_caster($c_cmd_caster_id);
3186        }
3187    }
3188
3189    return $result;
3190}
3191
3192function db_admin_delete_c_cmd_caster($c_cmd_caster_id)
3193{
3194    $sql = 'DELETE FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
3195    db_query($sql, array($c_cmd_caster_id));
3196
3197    $sql = 'DELETE FROM c_cmd WHERE c_cmd_caster_id = ?';
3198    db_query($sql, array($c_cmd_caster_id));
3199}
3200
3201function db_admin_update_c_cmd_caster($c_cmd_caster_id, $url)
3202{
3203    $sql = 'SELECT url FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
3204    $old_url = db_get_one($sql, array($c_cmd_caster_id));
3205
3206    // URLに変更がある場合は登録しなおす
3207    if ($old_url != $url) {
3208        db_admin_delete_c_cmd_caster($c_cmd_caster_id);
3209        $result = db_admin_insert_c_cmd_caster($url);
3210
3211        // 正しく登録できなかった場合は、元のURLを登録しなおす
3212        if (!$result) {
3213            db_admin_insert_c_cmd_caster($old_url);
3214        }
3215
3216        return $result;
3217    }
3218
3219    require_once 'OpenPNE/RSS.php';
3220    $rss = new OpenPNE_RSS();
3221    $title = $rss->get_feed_title($url);
3222    $description = $rss->get_feed_description($url);
3223
3224    if (!$title && !$description) {
3225        return false;
3226    }
3227
3228    if (!$title) {
3229        $title = '';
3230    }
3231
3232    if (!$description) {
3233        $title = '';
3234    }
3235
3236    $data = array(
3237        'title' => $title,
3238        'description' => $description,
3239    );
3240    $where = array('c_cmd_caster_id' => $c_cmd_caster_id);
3241    $result = db_update('c_cmd_caster', $data, $where);
3242
3243    db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
3244    return $result;
3245}
3246
3247function db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id)
3248{
3249    $sql = 'SELECT url FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
3250    $url = db_get_one($sql, array($c_cmd_caster_id));
3251
3252    require_once 'OpenPNE/RSS.php';
3253    $rss = new OpenPNE_RSS();
3254    $items = $rss->fetch($url);
3255
3256    $cmd_count = 0;
3257    $allowed_type = array('text/javascript', 'application/javascript');
3258    foreach ($items as $item)
3259    {
3260        $enclosure = $item['enclosure'];
3261        if (!in_array($enclosure->type, $allowed_type)) {
3262            continue;
3263        }
3264
3265        $cmd_count++;
3266        $name = basename($enclosure->link, '.js');
3267
3268        if ($c_cmd_id = db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)) {
3269            if (!db_admin_is_updated_c_cmd($c_cmd_id, $item['date'])) {
3270                continue;
3271            }
3272
3273            $data = array('url' => $enclosure->link, 'u_datetime' => $item['date']);
3274            $where = array('c_cmd_id' => $c_cmd_id);
3275            db_update('c_cmd', $data, $where);
3276        } else {
3277            $data = array(
3278                'name' => $name,
3279                'url' => $enclosure->link,
3280                'permit' => 127,
3281                'c_cmd_caster_id' => $c_cmd_caster_id,
3282                'r_datetime' => $item['date'],
3283                'u_datetime' => $item['date'],
3284            );
3285            db_insert('c_cmd', $data);
3286        }
3287    }
3288
3289    return $cmd_count;
3290}
3291
3292function db_admin_is_updated_c_cmd($c_cmd_id, $date)
3293{
3294    $sql = 'SELECT c_cmd_id FROM c_cmd WHERE c_cmd_id = ? AND u_datetime < ?';
3295    $param = array($c_cmd_id, $date);
3296    return (bool)db_get_one($sql, $param);
3297}
3298
3299function db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)
3300{
3301    $sql = 'SELECT c_cmd_id FROM c_cmd WHERE name = ? AND c_cmd_caster_id = ?';
3302    $data = array($name, $c_cmd_caster_id);
3303    return db_get_one($sql, $data);
3304}
3305
3306?>
Note: See TracBrowser for help on using the repository browser.