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

source: OpenPNE/branches/prj_tuning/webapp/modules/admin/lib/db_admin.php @ 940

Last change on this file since 940 was 940, checked in by takanashi, 14 years ago

r918/r919(あしあとお知らせメールの設定変更不具合/管理画面のプロフィール変更不具合)

File size: 20.4 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 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_common_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_common_c_member4c_member_id($c_member_id, true, true, 'private');
38    }
39    return $c_member_list;
40}
41
42function db_admin_c_siteadmin($target)
43{
44    $sql = 'SELECT * FROM c_siteadmin WHERE target = ?';
45    $params = array($target);
46    return db_get_row($sql, $params);
47}
48
49function db_admin_insert_c_siteadmin($target, $body)
50{
51    $data = array(
52        'target' => $target,
53        'body' => $body,
54        'r_date' => db_now(),
55    );
56    return db_insert('c_siteadmin', $data);
57}
58
59function db_admin_update_c_siteadmin($target, $body)
60{
61    $data = array(
62        'body' => $body,
63        'r_date' => db_now(),
64    );
65    $where = array('target' => $target);
66    return db_update('c_siteadmin', $data, $where);
67}
68
69function db_admin_update_c_sns_config($data)
70{
71    $where = array('c_sns_config_id' => 1);
72    return db_update('c_sns_config', $data, $where);
73}
74
75function db_admin_delete_c_profile_option($c_profile_option_id)
76{
77    //function cache削除
78    pne_cache_drop('db_member_c_profile_list');
79
80    if (!$c_profile_option_id) return false;
81
82    $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
83    $params = array(intval($c_profile_option_id));
84    db_query($sql, $params);
85
86    $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
87    db_query($sql, $params);
88
89    return true;
90}
91
92function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
93{
94    //function cache削除
95    pne_cache_drop('db_member_c_profile_list');
96
97    $data = array(
98        'c_profile_id' => intval($c_profile_id),
99        'value' => $value,
100        'sort_order' => intval($sort_order),
101    );
102    return db_insert('c_profile_option', $data);
103}
104
105function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
106{
107    //function cache削除
108    pne_cache_drop('db_member_c_profile_list');
109
110    $data = array('value' => $value);
111    $where = array('c_profile_option_id' => intval($c_profile_option_id));
112    db_update('c_member_profile', $data, $where);
113
114    $data = array(
115        'value' => $value,
116        'sort_order' => intval($sort_order),
117    );
118    db_update('c_profile_option', $data, $where);
119}
120
121function db_admin_insert_c_banner($a_href, $type, $nickname)
122{
123    $data = array(
124        'a_href' => $a_href,
125        'type' => $type,
126        'nickname' => $nickname,
127        'is_hidden_after' => 0,
128        'is_hidden_before' => 0,
129    );
130    return db_insert('c_banner', $data);
131}
132
133function db_admin_update_c_banner($c_banner_id, $sets)
134{
135    $where = array('c_banner_id' => intval($c_banner_id));
136    db_update('c_banner', $sets, $where);
137}
138
139function db_admin_delete_c_banner($c_banner_id)
140{
141    db_admin_delete_c_image4c_banner_id($c_banner_id);
142
143    $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
144    $params = array(intval($c_banner_id));
145    db_query($sql, $params);
146}
147
148function db_admin_delete_c_image4c_banner_id($c_banner_id)
149{
150    $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
151    $params = array(intval($c_banner_id));
152    $image_filename = db_get_one($sql, $params);
153    image_data_delete($image_filename);
154}
155
156function db_admin_insert_c_profile(
157    $name
158    , $caption
159    , $is_required
160    , $public_flag_edit
161    , $public_flag_default
162    , $form_type
163    , $sort_order
164    , $disp_regist
165    , $disp_config
166    , $disp_search
167    , $val_type
168    , $val_regexp
169    , $val_min
170    , $val_max
171    )
172{
173    $data = array(
174        'name' => $name,
175        'caption' => $caption,
176        'is_required' => (bool)$is_required,
177        'public_flag_edit' => (bool)$public_flag_edit,
178        'public_flag_default' => $public_flag_default,
179        'form_type' => $form_type,
180        'sort_order' => (int)$sort_order,
181        'disp_regist' => (bool)$disp_regist,
182        'disp_config' => (bool)$disp_config,
183        'disp_search' => (bool)$disp_search,
184        'val_type' => $val_type,
185        'val_regexp' => $val_regexp,
186        'val_min' => (int)$val_min,
187        'val_max' => (int)$val_max,
188    );
189    return db_insert('c_profile', $data);
190}
191
192function db_admin_update_c_profile($c_profile_id
193    , $name
194    , $caption
195    , $is_required
196    , $public_flag_edit
197    , $public_flag_default
198    , $form_type
199    , $sort_order
200    , $disp_regist
201    , $disp_config
202    , $disp_search
203    , $val_type
204    , $val_regexp
205    , $val_min
206    , $val_max
207    )
208{
209    $data = array(
210        'name' => $name,
211        'caption' => $caption,
212        'is_required' => (bool)$is_required,
213        'public_flag_edit' => (bool)$public_flag_edit,
214        'public_flag_default' => $public_flag_default,
215        'form_type' => $form_type,
216        'sort_order' => intval($sort_order),
217        'disp_regist' => (bool)$disp_regist,
218        'disp_config' => (bool)$disp_config,
219        'disp_search' => (bool)$disp_search,
220        'val_type' => $val_type,
221        'val_regexp' => $val_regexp,
222        'val_min' => intval($val_min),
223        'val_max' => intval($val_max),
224    );
225    $where = array('c_profile_id' => intval($c_profile_id));
226    db_update('c_profile', $data, $where);
227
228    // 公開設定が固定のときはユーザーの設定値を上書き
229    if (!$public_flag_edit) {
230        $data = array('public_flag' => $public_flag_default);
231        db_update('c_member_profile', $data, $where);
232    }
233}
234
235function db_admin_delete_c_profile($c_profile_id)
236{
237    $params = array(intval($c_profile_id));
238
239    // メンバーのプロフィールから削除
240    $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
241    db_query($sql, $params);
242
243    // 選択肢項目を削除
244    $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
245    db_query($sql, $params);
246
247    // プロフィール項目を削除
248    $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
249    db_query($sql, $params);
250}
251
252function db_admin_c_profile4c_profile_id($c_profile_id)
253{
254    $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
255    $params = array(intval($c_profile_id));
256    return db_get_row($sql, $params);
257}
258
259/**
260 * 全バナー取得
261 *
262 * @param  int $limit 取得最大件数
263 * @return array_of_array  c_banner_list バナー配列
264 */
265function db_admin_c_banner_list4null($type = '')
266{
267    $sql = 'SELECT * FROM c_banner';
268    $params = array();
269    if ($type) {
270        $sql .= ' WHERE type = ?';
271        $params[] = $type;
272    }
273    return db_get_all($sql, $params);
274}
275
276function db_admin_c_commu_category_parent_list()
277{
278    $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
279    return db_get_all($sql);
280}
281
282function db_admin_c_commu_category_list()
283{
284    $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
285    $list = db_get_all($sql);
286
287    $category_list = array();
288    foreach ($list as $item) {
289        $category_list[$item['c_commu_category_parent_id']][] = $item;
290    }
291    return $category_list;
292}
293
294function db_admin_insert_c_commu_category_parent($name, $sort_order)
295{
296    $data = array(
297        'name' => $name,
298        'sort_order' => intval($sort_order),
299    );
300    return db_insert('c_commu_category_parent', $data);
301}
302
303function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
304{
305    $data = array(
306        'name' => $name,
307        'sort_order' => intval($sort_order),
308    );
309    $where = array(
310        'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
311    );
312    db_update('c_commu_category_parent', $data, $where);
313}
314
315function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
316{
317    $params = array(intval($c_commu_category_parent_id));
318
319    // 小カテゴリを削除
320    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
321    db_query($sql, $params);
322
323    // 中カテゴリを削除
324    $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
325    db_query($sql, $params);
326}
327
328function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order)
329{
330    $data = array(
331        'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
332        'name' => $name,
333        'sort_order' => intval($sort_order),
334    );
335    return db_insert('c_commu_category', $data);
336}
337
338function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order)
339{
340    $data = array(
341        'name' => $name,
342        'sort_order' => intval($sort_order)
343    );
344    $where = array('c_commu_category_id' => intval($c_commu_category_id));
345    db_update('c_commu_category', $data, $where);
346}
347
348function db_admin_delete_c_commu_category($c_commu_category_id)
349{
350    // 小カテゴリを削除
351    $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
352    $params = array(intval($c_commu_category_id));
353    db_query($sql, $params);
354}
355
356function db_admin_c_admin_user_id4username($username)
357{
358    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
359    $params = array($username);
360    return db_get_one($sql, $params);
361}
362
363function db_admin_authenticate_password($uid, $password)
364{
365    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
366    $params = array(intval($uid), md5($password));
367    return (bool)db_get_one($sql, $params);
368}
369
370function db_admin_update_c_admin_user_password($uid, $password)
371{
372    $data = array('password' => md5($password));
373    $where = array('c_admin_user_id' => intval($uid));
374    db_update('c_admin_user', $data, $where);
375}
376
377function db_admin_c_admin_config4name($name)
378{
379    $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
380    $params = array($name);
381    return db_get_one($sql, $params);
382}
383
384function db_admin_insert_c_admin_config($name, $value)
385{
386    $data = array(
387        'name' => $name,
388        'value' => $value,
389    );
390    return db_insert('c_admin_config', $data);
391}
392
393function db_admin_update_c_admin_config($name, $value)
394{
395    $data = array('value' => $value);
396    $where = array('name' => $name);
397    db_update('c_admin_config', $data, $where);
398}
399
400function db_admin_replace_c_admin_config($name, $value)
401{
402    $sql = 'DELETE FROM c_admin_config WHERE name = ?';
403    $params = array($name);
404    db_query($sql, $params);
405
406    $data = array(
407        'name'  => strval($name),
408        'value' => strval($value),
409    );
410    return db_insert('c_admin_config', $data);
411}
412
413function db_admin_c_admin_config_all()
414{
415    $sql = 'SELECT name, value FROM c_admin_config';
416    return db_get_assoc($sql);
417}
418
419function db_admin_delete_c_image_link4image_filename($image_filename)
420{
421    // c_banner (削除)
422    $sql = 'DELETE FROM c_banner WHERE image_filename = ?';
423    $params = array($image_filename);
424    db_query($sql, $params);
425
426    // c_commu
427    $tbl = 'c_commu';
428    _db_admin_empty_image_filename($tbl, $image_filename);
429
430    // c_commu_topic_comment
431    $tbl = 'c_commu_topic_comment';
432    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename1');
433    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename2');
434    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename3');
435
436    // c_diary
437    $tbl = 'c_diary';
438    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
439    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
440    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
441
442    // c_diary_comment
443    $tbl = 'c_diary_comment';
444    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
445    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
446    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
447
448    // c_member
449    $tbl = 'c_member';
450    _db_admin_empty_image_filename($tbl, $image_filename);
451    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
452    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
453    _db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
454}
455
456function _db_admin_empty_image_filename($tbl, $image_filename, $column = 'image_filename')
457{
458    $data = array(
459        db_escapeIdentifier($column) => '',
460    );
461    $where = array(
462        db_escapeIdentifier($column) => $image_filename,
463    );
464    db_update(db_escapeIdentifier($tbl), $data, $where);
465}
466
467function db_admin_c_profile_name_exists($name)
468{
469    $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
470    $params = array($name);
471    return db_get_one($sql, $params);
472}
473
474function db_admin_update_is_login_rejected($c_member_id)
475{
476    $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
477    $params = array(intval($c_member_id));
478    $is_login_rejected = db_get_one($sql, $params);
479    if (is_null($is_login_rejected)) {
480        return false;
481    }
482
483    $data = array('is_login_rejected' => !($is_login_rejected));
484    $where = array('c_member_id' => intval($c_member_id));
485    return db_update('c_member', $data, $where);
486}
487
488function db_admin_c_admin_user_list()
489{
490    $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
491    return db_get_all($sql);
492}
493
494function db_admin_exists_c_admin_username($username)
495{
496    $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
497    $params = array(strval($username));
498    return (bool)db_get_one($sql, $params);
499}
500
501function db_admin_insert_c_admin_user($username, $password, $auth_type)
502{
503    $data = array(
504        'username' => strval($username),
505        'password' => md5($password),
506        'auth_type' => strval($auth_type),
507    );
508    return db_insert('c_admin_user', $data);
509}
510
511function db_admin_delete_c_admin_user($c_admin_user_id)
512{
513    $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
514    $params = array(intval($c_admin_user_id));
515    return db_query($sql, $params);
516}
517
518function db_admin_get_auth_type($c_admin_user_id)
519{
520    $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
521    $params = array(intval($c_admin_user_id));
522    return db_get_one($sql, $params);
523}
524
525/**
526 * ユーザーIDリスト取得(絞り込み対応)
527 */
528function _db_admin_c_member_id_list($cond_list)
529{
530    $sql = 'SELECT c_member_id'.
531           ' FROM c_member'.
532           ' WHERE 1';
533
534    //開始年
535    if (!empty($cond_list['s_year'])) {
536        $sql .= ' AND birth_year >= ?';
537        $params[] = $cond_list['s_year'];
538    }
539    //終了年
540    if (!empty($cond_list['e_year'])) {
541        $sql .= ' AND birth_year <= ?';
542        $params[] = $cond_list['e_year'];
543    }
544    $sql .= ' ORDER BY c_member_id';
545
546    $ids = db_get_col($sql, $params);
547
548    //各プロフィールごとで絞り結果をマージする
549    $_sql = 'SELECT name FROM c_profile WHERE (form_type = ? OR form_type = ?)';
550    $profile = db_get_col($_sql, array('select', 'radio'));
551
552    if ( $profile ) {
553        foreach ($profile as $value) {
554            if (!empty($cond_list[$value])) {
555                $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
556                $params = array($cond_list[$value]);
557                $temp_ids = db_get_col($sql, $params);
558                $ids = array_intersect($ids, $temp_ids);
559            }
560        }
561    }
562
563    return $ids;
564}
565
566/**
567 * ユーザーリスト取得
568 * 誕生年+プロフィール(select,radioのみ)
569 */
570function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list)
571{
572    $ids = _db_admin_c_member_id_list($cond_list);
573    $total_num = count($ids);
574    $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
575
576    $c_member_list = array();
577    foreach ($ids as $id) {
578        $c_member_list[] = db_common_c_member4c_member_id($id, true, true, 'private');
579    }
580
581    if ($total_num > 0) {
582        $pager = admin_make_pager($page, $page_size, $total_num);
583    }
584
585    return $c_member_list;
586}
587
588function db_c_profile_option4c_profile_option_id($c_profile_option_id)
589{
590    $sql = "SELECT * FROM c_profile_option WHERE c_profile_option_id = ? ";
591    $params = array(intval($c_profile_option_id));
592    return db_get_row($sql, $params);
593}
594
595/**
596 * メンバー絞込みパラメータ取得
597 */
598function validate_cond($requests)
599{
600    $cond_list = array();
601    //誕生年
602    if (!empty($requests['s_year'])) {
603        $cond_list['s_year'] = intval($requests['s_year']);
604    }
605    if (!empty($requests['e_year'])) {
606        $cond_list['e_year'] = intval($requests['e_year']);
607    }
608    //プロフィール
609    $profile_list = db_common_c_profile_list();
610
611    foreach ($profile_list as $key => $value) {
612        if (!empty($requests[$key])) {
613            $cond_list[$key] = intval($requests[$key]);
614        }
615    }
616    return $cond_list;
617}
618
619function do_admin_send_mail($c_member_id, $subject, $body)
620{
621    $c_member = db_common_c_member4c_member_id($c_member_id, true);
622
623    if ($c_member['secure']['pc_address']) {
624        $send_address = $c_member['secure']['pc_address'];
625    } else {
626        $send_address = $c_member['secure']['ktai_address'];
627    }
628
629    if (OPENPNE_MAIL_QUEUE) {
630        //メールキューに蓄積
631        put_mail_queue($send_address, $subject, $body);
632    } else {
633        t_send_email($send_address, $subject, $body);
634    }
635}
636
637//メッセージ受信メール(メールキュー蓄積対応)
638function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
639{
640    //メッセージ
641    $c_message_id = _do_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
642
643    do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from);
644    do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from);
645
646    return $c_message_id;
647}
648
649//メッセージ受信メール(メールキュー蓄積対応)
650function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from)
651{
652    $c_member_to = db_common_c_member4c_member_id($c_member_id_to, true);
653    $pc_address = $c_member_to['secure']['pc_address'];
654    $is_receive_mail = $c_member_to['is_receive_mail'];
655
656    $params = array(
657        "c_member_to"   => db_common_c_member4c_member_id($c_member_id_to),
658        "c_member_from" => db_common_c_member4c_member_id($c_member_id_from),
659    );
660    return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
661}
662
663//◆メッセージ受信メール(携帯)
664function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from)
665{
666    $c_member_to = db_common_c_member4c_member_id($c_member_id_to, true);
667    $ktai_address = $c_member_to['secure']['ktai_address'];
668    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
669    $p = array('kad' => t_encrypt($c_member_to['secure']['ktai_address']));
670    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
671
672    $params = array(
673        'c_member_to'   => db_common_c_member4c_member_id($c_member_id_to),
674        'c_member_from' => db_common_c_member4c_member_id($c_member_id_from),
675        'login_url' => $login_url,
676    );
677    return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
678}
679
680function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
681{
682    $tpl_name .= '.tpl';
683    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
684        list($subject, $body) = $tpl;
685        if ($from) {
686            if (OPENPNE_MAIL_QUEUE) {
687                //メールキューに蓄積
688                put_mail_queue($address, $subject, $body, $force, $from);
689            } else {
690                t_send_email($address, $subject, $body, $force, $from);
691            }
692        } else {
693            if (OPENPNE_MAIL_QUEUE) {
694                //メールキューに蓄積
695                put_mail_queue($address, $subject, $body, $force);
696            } else {
697                t_send_email($address, $subject, $body, $force);
698            }
699        }
700        return true;
701    } else {
702        return false;
703    }
704}
705
706?>
Note: See TracBrowser for help on using the repository browser.