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

source: OpenPNE/branches/prj/pne-merge/2217-message_mail/webapp/modules/admin/lib/db_admin.php @ 6539

Last change on this file since 6539 was 6539, checked in by kiwa, 12 years ago

#2217 ゆりさんの日記にあるとおりに変更してみた

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