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

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

Last change on this file since 7711 was 7711, checked in by asma, 13 years ago

#2689:管理画面最新コミュニティ書き込み一覧の日時をコミュニティ作成日時から、トピック更新日時に変更

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