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

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

Last change on this file since 7042 was 7042, checked in by ebihara, 12 years ago

#2038:メンバーリストをポイントで絞り込む際、アクションのパラメータにポイントではなくランクを指定するように修正

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