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

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

Last change on this file since 7109 was 7109, checked in by ebihara, 13 years ago

#2038:db_point_get_point4rank_id->db_point_get_rank_point4rank_id

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