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

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

Last change on this file since 9714 was 9714, checked in by kiwa, 11 years ago

#2301:PostgreSQLが統計情報の月次集計が年月の昇順になっていなかったのを修正(trunk)

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