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

source: OpenPNE/branches/maruyama/prj_ext_auth/webapp/lib/db/member.php @ 1056

Last change on this file since 1056 was 1056, checked in by maruyama, 14 years ago

不足プロフィールを強制入力させる機能追加

File size: 44.6 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 *
10 * @param int $c_member_id
11 * @param bool $is_secure `c_member_secure`の項目を取得するかどうか
12 * @param bool $with_profile `c_member_profile`の項目を取得するかどうか
13 * @param string $public_flag プロフィール項目を取得する場合の公開設定(public, friend, private)
14 * @return array メンバー情報
15 */
16function db_member_c_member4c_member_id($c_member_id, $is_secure = false, $with_profile = false, $public_flag = 'public')
17{
18    $sql = 'SELECT * FROM c_member WHERE c_member_id = ?';
19    $params = array(intval($c_member_id));
20    if (!$c_member = db_get_row($sql, $params))
21        return array();
22
23    if ($is_secure) {
24        $c_member['secure'] = db_member_c_member_secure4c_member_id($c_member_id);
25    }
26
27    if ($with_profile) {
28        $c_member['profile'] = db_member_c_member_profile_list4c_member_id($c_member_id, $public_flag);
29
30        // public_flag_birth_year
31        switch ($c_member['public_flag_birth_year']) {
32        case "friend":
33            if ($public_flag == 'public')
34                unset($c_member['birth_year']);
35            break;
36        case "private":
37            if ($public_flag == 'public' || $public_flag == 'friend')
38                unset($c_member['birth_year']);
39            break;
40        }
41    }
42   
43    if ($is_secure) {
44        $c_member['username'] = db_member_username4c_member_id($c_member_id);
45    }
46
47    return $c_member;
48}
49
50/**
51 * メンバーのプロフィールを取得
52 */
53function db_member_c_member_profile_list4c_member_id($c_member_id, $public_flag = 'public')
54{
55    switch ($public_flag) {
56    case "private":
57        $flags = "'public', 'friend', 'private'";
58        break;
59    case "friend":
60        $flags = "'public', 'friend'";
61        break;
62    case "public":
63    default:
64        $flags = "'public'";
65        break;
66    }
67
68    $sql = 'SELECT cp.name, cp.caption, cp.form_type, cm.value, cm.public_flag' .
69        ' FROM c_member_profile as cm, c_profile as cp' .
70        ' WHERE cm.c_member_id = ?'.
71            " AND cm.public_flag IN ($flags)" .
72            ' AND cm.c_profile_id = cp.c_profile_id' .
73        ' ORDER BY cp.sort_order, cm.c_member_profile_id';
74    $profile = db_get_all($sql, array(intval($c_member_id)));
75
76    $member_profile = array();
77    foreach ($profile as $value) {
78        $member_profile[$value['name']]['form_type'] = $value['form_type'];
79        if ($value['form_type'] == 'checkbox') {
80            $member_profile[$value['name']]['value'][] = $value['value'];
81        } else {
82            $member_profile[$value['name']]['value'] = $value['value'];
83        }
84        $member_profile[$value['name']]['caption'] = $value['caption'];
85        $member_profile[$value['name']]['public_flag'] = $value['public_flag'];
86    }
87
88    return $member_profile;
89}
90
91/**
92 * メンバーの暗号化された情報を復号化して取得
93 */
94function db_member_c_member_secure4c_member_id($c_member_id)
95{
96    $sql = 'SELECT pc_address, ktai_address, regist_address, easy_access_id, hashed_password, hashed_password_query_answer FROM c_member_secure WHERE c_member_id = ?';
97    $c_member_secure = db_get_row($sql, array(intval($c_member_id)));
98   
99    if(is_array($c_member_secure)) {
100        return array_map('t_decrypt', $c_member_secure);
101    } else {
102        return $c_member_secure;
103    }
104}
105
106/**
107 * メンバー情報をプロフィール付きで取得する
108 * (secure情報は取得しない)
109 *
110 * @param int $c_member_id
111 * @param string $public_flag 取得するプロフィール項目の公開レベル(public, friend, private)
112 * @return array メンバー情報
113 */
114function db_member_c_member_with_profile($c_member_id, $public_flag = 'public')
115{
116    return db_member_c_member4c_member_id($c_member_id, false, true, $public_flag);
117}
118
119/**
120 * メンバー情報のよく使う部分のみを取得する
121 *
122 * - メンバーID
123 * - ニックネーム
124 * - メイン画像
125 * のみを取得する。
126 *
127 * @param int $c_member_id
128 * @return array メンバー情報
129 */
130function db_member_c_member4c_member_id_LIGHT($c_member_id)
131{
132    static $results;
133    if (!isset($results[$c_member_id])) {
134        $sql = 'SELECT c_member_id, nickname, image_filename FROM c_member WHERE c_member_id = ?';
135        $results[$c_member_id] = db_get_row($sql, array(intval($c_member_id)));
136    }
137    return $results[$c_member_id];
138}
139
140/**
141 * PCアドレスからメンバーIDを取得(ログインに必要)
142 *
143 * @param   string $pc_address
144 * @return  int    $c_member_id
145 */
146function db_member_c_member_id4pc_address($pc_address)
147{
148    return _db_c_member_id4pc_address_encrypted(t_encrypt($pc_address));
149}
150
151function db_member_c_member_id4pc_address_encrypted($pc_address_encoded)
152{
153    $sql = 'SELECT c_member_id FROM c_member_secure WHERE pc_address = ?';
154    $params = array($pc_address_encoded);
155    return db_get_one($sql, $params);
156}
157
158function db_member_c_member_id4ktai_address_encrypted($ktai_address_encoded)
159{
160    $sql = 'SELECT c_member_id FROM c_member_secure WHERE ktai_address = ?';
161    $params = array($ktai_address_encoded);
162    return db_get_one($sql, $params);
163}
164
165/**
166 * アクティブユーザーか?
167 */
168function db_member_is_active_c_member_id($c_member_id)
169{
170    $sql = 'SELECT c_member_id FROM c_member WHERE c_member_id = ?';
171    $params = array(intval($c_member_id));
172    return (bool)db_get_one($sql, $params);
173}
174
175/**
176 * セッションからc_member_preを返す
177 */
178function db_member_c_member_pre4c_member_pre_session($session)
179{
180    $sql = 'SELECT * FROM c_member_pre WHERE session = ?';
181    $params = array($session);
182    $c_member = db_get_row($sql, $params);
183
184    //秘密の質問
185    $c_password_query_id = $c_member['c_password_query_id'];
186    $c_password_query_list = p_common_c_password_query4null();
187
188    $c_member['c_password_query_name'] = $c_password_query_list["$c_password_query_id"];
189
190    $sql = 'SELECT p.name, p.caption, p.form_type, m.value, m.public_flag' .
191        ' FROM c_member_pre_profile AS m' .
192             ' INNER JOIN c_profile AS p USING (c_profile_id)' .
193        ' WHERE m.c_member_pre_id = ?' .
194        ' ORDER BY p.sort_order, m.c_member_pre_profile_id';
195    $params = array(intval($c_member['c_member_pre_id']));
196    $profile = db_get_all($sql, $params);
197
198    $member_profile = array();
199    foreach ($profile as $value) {
200        $member_profile[$value['name']]['form_type'] = $value['form_type'];
201        if ($value['form_type'] == 'checkbox') {
202            $member_profile[$value['name']]['value'][] = $value['value'];
203        } else {
204            $member_profile[$value['name']]['value'] = $value['value'];
205        }
206        $member_profile[$value['name']]['caption'] = $value['caption'];
207        $member_profile[$value['name']]['public_flag'] = $value['public_flag'];
208    }
209
210    $c_member['profile'] = $member_profile;
211    return $c_member;
212}
213
214function db_member_is_active_sid($sid)
215{
216    $sql = 'SELECT c_member_pre_id FROM c_member_pre WHERE session = ?';
217    $params = array($sid);
218    return (bool)db_get_one($sql, $params);
219}
220
221function db_member_search($cond, $cond_like, $page_size, $page, $c_member_id, $profiles)
222{
223    $page = intval($page);
224    $page_size = intval($page_size);
225
226    $where = " WHERE 1";
227    $params = array();
228
229    foreach ($cond as $key => $value) {
230        if ($value) {
231            if ($key == 'image') {
232                $where .= " AND image_filename <> ''";
233            } else {
234                $where .= " AND ". db_escapeIdentifier($key) ." = ?";
235                $params[] = $value;
236                if ($key == 'birth_year') {
237                    $where .= " AND public_flag_birth_year = 'public'";
238                }
239            }
240        }
241    }
242    foreach ($cond_like as $key => $value) {
243        if ($value) {
244            $where .= " AND " . db_escapeIdentifier($key) . " LIKE ?";
245            $params[] = '%'.$value.'%';
246        }
247    }
248
249    $from = " FROM c_member" . $hint;
250    $order = " ORDER BY c_member_id DESC";
251    $sql = "SELECT c_member_id" . $from . $where . $order;
252
253    $result_ids = db_get_col($sql, $params);
254
255    foreach ($profiles as $key => $value) {
256        $sql = "SELECT c_member_id FROM c_member_profile";
257        $sql .= " WHERE c_profile_id = ? AND public_flag = 'public'";
258        $params = array(intval($value['c_profile_id']));
259
260        if ($value['form_type'] == "text" || $value['form_type'] == 'textarea') {
261            $sql .= " AND value LIKE ?";
262            $params[] = '%'.$value['value'].'%';
263        } elseif (is_array($value['c_profile_option_id'])) {
264            $values = implode(',', array_map('intval', $value['c_profile_option_id']));
265            $sql .= " AND c_profile_option_id IN (". $values .")";
266        } else {
267            $sql .= " AND c_profile_option_id = ?";
268            $params[] = intval($value['c_profile_option_id']);
269        }
270        $sql .= " ORDER BY c_member_id DESC";
271
272        $ids = db_get_col($sql, $params);
273        $result_ids = array_values(array_intersect($result_ids, $ids));
274    }
275
276    $start = ($page - 1) * $page_size;
277
278    $list = array();
279    for ($i = $start; $i < $start + $page_size && $result_ids[$i]; $i++) {
280        $c_member = db_member_c_member_with_profile($result_ids[$i], 'public');
281        $c_member['last_login'] = p_f_home_last_login4access_date($c_member['access_date']);
282        $list[] = $c_member;
283    }
284
285    $total_num = count($result_ids);
286
287    if ($total_num != 0) {
288        $total_page_num =  ceil($total_num / $page_size);
289        if ($page >= $total_page_num) {
290            $next = false;
291        } else {
292            $next = $page + 1;
293        }
294        if ($page <= 1) {
295            $prev = false;
296        } else {
297            $prev = $page - 1;
298        }
299    }
300    return array($list, $prev, $next, $total_num);
301}
302
303function db_member_inviting_member4c_member_id($c_member_id)
304{
305    $sql = 'SELECT * FROM c_member_pre WHERE c_member_id_invite = ? ORDER BY r_date DESC';
306    $params = array(intval($c_member_id));
307    return db_get_all($sql, $params);
308}
309
310function db_member_birthday_flag4c_member_id($c_member_id)
311{
312    $c_member = db_member_c_member4c_member_id($c_member_id);
313    $birthday = $c_member['birth_month'] . "-" . $c_member['birth_day'];
314
315    return (bool)(date("n-j") == $birthday);
316}
317
318/**
319 * あるメンバーがアクセスブロックしているメンバーIDのリストを取得
320 */
321function db_member_c_member_id_block4c_member_id($c_member_id)
322{
323    $sql = 'SELECT c_member_id_block FROM c_access_block WHERE c_member_id = ?';
324    $params = array(intval($c_member_id));
325    return db_get_col($sql, $params);
326}
327
328/**
329 * あるメンバーをアクセスブロックしているメンバーIDのリストを取得
330 */
331function db_member_access_block_list4c_member_id_to($c_member_id_to)
332{
333    $sql = 'SELECT c_member_id FROM c_access_block WHERE c_member_id_block = ?';
334    $params = array(intval($c_member_id_to));
335    return db_get_col($sql, $params);
336}
337
338/**
339 * {c_member_id}が{target_...}にアクセスブロックされているかどうか
340 */
341function db_member_is_access_block($c_member_id, $target_c_member_id)
342{
343    $sql = 'SELECT c_access_block_id FROM c_access_block' .
344            ' WHERE c_member_id = ? AND c_member_id_block = ?';
345    $params = array(intval($target_c_member_id), intval($c_member_id));
346    return (bool)db_get_one($sql, $params);
347}
348
349/**
350 * 次の誕生日まであと何日?
351 *
352 * @param int $c_member_id
353 * @return int 日数(当日は0)
354 */
355function db_member_count_days_birthday4c_member_id($c_member_id)
356{
357    $c_member = db_member_c_member4c_member_id($c_member_id);
358    return getCountdownDays($c_member['birth_month'], $c_member['birth_day']);
359}
360
361function db_member_search_check_profile($profile)
362{
363    $result_list = array();
364
365    foreach ($profile as $key => $v) {
366        if (!$v) continue;
367
368        $sql = 'SELECT * FROM c_profile WHERE name = ?';
369        $params = array($key);
370        $c_profile = db_get_row($sql, $params);
371        if (!($c_profile && $c_profile['disp_search'])) continue;
372
373        $public_flags = array('public', 'friend', 'private');
374        if (!$c_profile['public_flag_edit']
375            && $c_profile['public_flag_default'] != 'public') {
376            // 公開項目以外は除外
377            continue;
378        }
379
380        switch ($c_profile['form_type']) {
381        case "text":
382        case "textarea":
383            $value = $v;
384            $c_profile_option_id = 0;
385            break;
386        case "select":
387        case "radio":
388            $value = "";
389            $c_profile_option_id = $v;
390            break;
391        case "checkbox":
392            $value = array();
393            $c_profile_option_id = $v;
394            break;
395        default:
396            break;
397        }
398
399        $result_list[$c_profile['name']] = array(
400            "c_profile_id" => $c_profile['c_profile_id'],
401            "c_profile_option_id" => $c_profile_option_id,
402            "value" => $value,
403            "form_type" => $c_profile['form_type'],
404        );
405    }
406
407    return $result_list;
408}
409
410function db_member_count_c_member_profile()
411{
412    $sql = 'SELECT c_profile_option_id, COUNT(DISTINCT c_member_id)' .
413        ' FROM c_member_profile' .
414        ' WHERE public_flag = \'public\'' .
415        ' AND c_profile_option_id > 0' .
416        ' GROUP BY c_profile_option_id';
417    return db_get_assoc($sql);
418}
419
420function db_member_birth4c_member_id($month, $day, $c_member_id)
421{
422    $sql = "SELECT c_member_id_to FROM c_friend WHERE c_member_id_from = ?";
423    $params = array(intval($c_member_id));
424    $ids = db_get_col($sql, $params);
425    $ids[] = $c_member_id;
426    $ids = implode(", ", $ids);
427
428    $sql = "SELECT * FROM c_member" .
429        " WHERE c_member_id IN (". $ids . ")" .
430        " AND birth_day = ?" .
431        " AND birth_month = ?";
432    $params = array(intval($day), intval($month));
433    return db_get_all($sql, $params);
434}
435
436function db_member_c_member_list4exists_rss()
437{
438    $sql = "SELECT * FROM c_member WHERE rss <> ''";
439    return db_get_all($sql);
440}
441
442function db_member_c_member_list4no_exists_rss()
443{
444    $sql = "SELECT * FROM c_member WHERE rss = ''";
445    return db_get_all($sql);
446}
447
448function db_member_c_profile_list4null()
449{
450    $hint = db_mysql_hint('FORCE INDEX (sort_order)');
451    $sql = 'SELECT * FROM c_profile' . $hint . ' ORDER BY sort_order';
452    return db_get_all($sql);
453}
454
455function db_member_c_profile_option_list4c_profile_id($c_profile_id)
456{
457    $sql = 'SELECT * FROM c_profile_option WHERE c_profile_id = ? ORDER BY sort_order';
458    $params = array(intval($c_profile_id));
459    return db_get_all($sql, $params);
460}
461
462function db_member_c_profile_list()
463{
464    $list = db_member_c_profile_list4null();
465
466    $profile_list = array();
467    foreach ($list as $value) {
468        $profile_list[$value['name']] = $value;
469        $profile_list[$value['name']]['options'] = db_member_c_profile_option_list4c_profile_id($value['c_profile_id']);
470    }
471    return $profile_list;
472}
473
474function db_member_main_image_filename_number($c_member_id)
475{
476    $c_member = db_member_c_member4c_member_id($c_member_id);
477    if (empty($c_member['image_filename'])) {
478        return 0;
479    }
480
481    if ($c_member['image_filename'] == $c_member['image_filename_1'])
482        return 1;
483    elseif ($c_member['image_filename'] == $c_member['image_filename_2'])
484        return 2;
485    elseif ($c_member['image_filename'] == $c_member['image_filename_3'])
486        return 3;
487    else
488        return 0;
489}
490
491function db_member_c_member_pre4sid($sid)
492{
493    $sql = 'SELECT * FROM c_member_pre WHERE session = ?';
494    $params = array($sid);
495    return db_get_row($sql, $params);
496}
497
498function db_member_c_member_pre4pc_address($pc_address)
499{
500    $sql = 'SELECT * FROM c_member_pre WHERE pc_address = ?';
501    $params = array($pc_address);
502    return db_get_row($sql, $params);
503}
504
505function db_member_c_member4pc_address($pc_address)
506{
507    $sql = 'SELECT * FROM c_member_secure WHERE pc_address = ?';
508    $params = array(t_encrypt($pc_address));
509    return db_get_row($sql, $params);
510}
511
512function db_member_c_member_list4daily_news()
513{
514    $sql = 'SELECT c_member_id, is_receive_daily_news FROM c_member' .
515            ' WHERE is_receive_daily_news > 0';
516    return db_get_all($sql);
517}
518
519function db_member_c_member_list4birthday_mail()
520{
521    // この日が誕生日の人を対称にする
522    $target_date = "+1 week";
523
524    $timestamp = strtotime($target_date);
525    $month = date("n", $timestamp);
526    $day   = date("j", $timestamp);
527
528    $sql = 'SELECT * FROM c_member WHERE birth_month = ? AND birth_day = ?';
529    $params = array(intval($month), intval($day));
530    return db_get_all($sql, $params);
531}
532
533/**
534 * パスワードクエリが合っているか判定
535 */
536function db_member_is_password_query_complete($pc_address, $query_id, $query_answer)
537{
538    $sql = "SELECT c_member.c_member_id" .
539        " FROM c_member, c_member_secure" .
540        " WHERE c_member_secure.pc_address = ?" .
541        " AND c_member.c_password_query_id = ?" .
542        " AND c_member_secure.hashed_password_query_answer = ?" .
543        " AND c_member.c_member_id = c_member_secure.c_member_id";
544    $params = array(
545        t_encrypt($pc_address),
546        intval($query_id),
547        md5($query_answer)
548    );
549    if ($c_member_id = db_get_one($sql, $params)) {
550        return $c_member_id;
551    }
552
553    // 1.8以前との互換性を保つため、SJISでのチェックも行う
554    $params = array(
555        t_encrypt($pc_address),
556        intval($query_id),
557        md5(mb_convert_encoding($query_answer, 'SJIS-win', 'UTF-8'))
558    );
559    return db_get_one($sql, $params);
560}
561
562function db_member_c_member_id4ktai_address2($ktai_address)
563{
564    if (!$ktai_address) {
565        return null;
566    }
567
568    $sql = "SELECT c_member_id FROM c_member_secure WHERE ktai_address = ?";
569    $params = array(t_encrypt($ktai_address));
570    return db_get_one($sql, $params);
571}
572
573function db_member_inviting_member4c_member_id2($c_member_id)
574{
575    $sql = "SELECT * FROM c_member_ktai_pre WHERE c_member_id_invite = ?";
576    $params = array(intval($c_member_id));
577    return db_get_all($sql, $params);
578}
579
580//対象のアドレスが、登録されてるか否か
581function db_member_is_sns_join4mail_address($mail_address)
582{
583    $params = array(t_encrypt($mail_address));
584
585    $sql = "SELECT c_member_id FROM c_member_secure WHERE pc_address = ?";
586    $array = db_get_row($sql, $params);
587
588    $sql = "SELECT c_member_id FROM c_member_secure WHERE ktai_address = ?";
589    $k_array = db_get_row($sql, $params);
590
591    //対象のアドレスが登録済み
592    if ($array['c_member_id'] || $k_array['c_member_id']) {
593        return true;
594    } else {
595        return false;
596    }
597}
598
599function db_member_c_member_ktai_pre4ktai_address($ktai_address)
600{
601    $sql = 'SELECT * FROM c_member_ktai_pre WHERE ktai_address = ?';
602    $params = array($ktai_address);
603    return db_get_row($sql, $params);
604}
605
606/**
607 * 携帯認証用
608 */
609function db_member_k_auth($c_member_id)
610{
611    $sql = 'SELECT c_member_id FROM c_member WHERE c_member_id = ?';
612    $params = array(intval($c_member_id));
613    return db_get_one($sql, $params);
614}
615
616function db_member_k_auth_login($ktai_address, $password)
617{
618    if (!$ktai_address or !$password) {
619        return false;
620    }
621   
622    $c_member_id = db_member_c_member_id4username($ktai_address, true);
623    $sql = "SELECT hashed_password FROM c_member_secure " .
624            " WHERE c_member_id = ? ";
625    if (md5($password) != db_get_one($sql, array($c_member_id))) {
626        return false;
627    }
628   
629    return $c_member_id;
630}
631
632function db_member_c_ktai_address_pre4session($session)
633{
634    $sql = 'SELECT * FROM c_ktai_address_pre WHERE session = ?';
635    $params = array($session);
636    return db_get_row($sql, $params);
637}
638
639function db_member_c_member_ktai_pre4session($session)
640{
641    $sql = 'SELECT * FROM c_member_ktai_pre WHERE session = ?';
642    $params = array($session);
643    return db_get_row($sql, $params);
644}
645
646/**
647 * メンバーIDからハッシュ化されたパスワードを取得
648 * (携帯の認証に暫定的に用いる)
649 *
650 * @param int $c_member_id
651 * @return string hashed password
652 */
653function db_member_hashed_password4c_member_id($c_member_id)
654{
655    $sql = 'SELECT hashed_password FROM c_member_secure WHERE c_member_id = ?';
656    $params = array(intval($c_member_id));
657    return db_get_one($sql, $params);
658}
659
660function db_member_is_password_query_complete2($ktai_address, $query_id, $query_answer)
661{
662    $sql = "SELECT c_member.c_member_id" .
663        " FROM c_member, c_member_secure" .
664        " WHERE c_member_secure.ktai_address = ?" .
665        " AND c_member.c_password_query_id = ?" .
666        " AND c_member_secure.hashed_password_query_answer = ?" .
667        " AND c_member.c_member_id = c_member_secure.c_member_id";
668    $params = array(
669        t_encrypt($ktai_address),
670        intval($query_id),
671        md5($query_answer)
672    );
673    if ($c_member_id = db_get_one($sql, $params)) {
674        return $c_member_id;
675    }
676
677    // 1.8以前との互換性を保つため、SJISでのチェックも行う
678    $params = array(
679        t_encrypt($ktai_address),
680        intval($query_id),
681        md5(mb_convert_encoding($query_answer, 'SJIS-win', 'UTF-8'))
682    );
683    return db_get_one($sql, $params);
684}
685
686function db_member_c_member_id4easy_access_id($easy_access_id)
687{
688    if (!$easy_access_id) return false;
689
690    $sql = 'SELECT c_member_id FROM c_member_secure WHERE easy_access_id = ?';
691    $params = array(t_encrypt($easy_access_id));
692    return db_get_one($sql, $params);
693}
694
695function db_member_check_profile($profile_list, $public_flag_list)
696{
697    $result_list = array();
698
699    foreach ($profile_list as $key => $v) {
700        $sql = 'SELECT c_profile_id, is_required, public_flag_edit, public_flag_default, form_type, name' .
701                ' FROM c_profile WHERE name = ?';
702        $params = array($key);
703        $c_profile = db_get_row($sql, $params);
704
705        switch ($c_profile['form_type']) {
706        case 'text':
707        case 'textarea':
708            $value = $v;
709            $c_profile_option_id = 0;
710            break;
711        case 'select':
712        case 'radio':
713            $sql = 'SELECT value FROM c_profile_option' .
714                    ' WHERE c_profile_option_id = ? AND c_profile_id = ?';
715            $params = array(intval($v), intval($c_profile['c_profile_id']));
716            $value = db_get_one($sql, $params);
717            $c_profile_option_id = $v;
718            break;
719        case 'checkbox':
720            $value = array();
721            $c_profile_option_id = $v;
722            if (!$v) break;
723
724            $sql = "SELECT c_profile_option_id, value FROM c_profile_option" .
725                " WHERE c_profile_option_id IN (". implode(",", array_map('intval', $v)). ")" .
726                " AND c_profile_id = ?".
727                " ORDER BY sort_order";
728            $params = array(intval($c_profile['c_profile_id']));
729            $list = db_get_all($sql, $params);
730            foreach ($list as $item) {
731                $value[$item['c_profile_option_id']] = $item['value'];
732            }
733            break;
734        default:
735            $value = '';
736            $c_profile_option_id = 0;
737            break;
738        }
739
740        $public_flags = array('public', 'friend', 'private');
741        if ($c_profile['public_flag_edit']
742            && in_array($public_flag_list[$key], $public_flags)) {
743            $public_flag = $public_flag_list[$key];
744        } else {
745            $public_flag = $c_profile['public_flag_default'];
746        }
747
748        $result_list[$c_profile['name']] = array(
749            'c_profile_id' => $c_profile['c_profile_id'],
750            'c_profile_option_id' => $c_profile_option_id,
751            'value' => $value,
752            'public_flag' => $public_flag,
753        );
754    }
755
756    return $result_list;
757}
758
759/**
760 * すべてのメンバー(アクティブユーザ)のメンバーIDを取得
761 */
762function db_member_c_member_id_list4null()
763{
764    $sql = 'SELECT c_member_id FROM c_member';
765
766    return db_get_col($sql);
767}
768
769function db_member_is_login_rejected($c_member_id)
770{
771    $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
772    $params = array(intval($c_member_id));
773    return db_get_one($sql, $params);
774}
775
776/**
777 * メンバーが忍び足(あしあとをつけない)状態かどうかを取得
778 *
779 * @param   int $c_member_id
780 * @return  bool
781 */
782function db_member_is_shinobiashi($c_member_id)
783{
784    $sql = "SELECT is_shinobiashi FROM c_member WHERE c_member_id = ?";
785    $params = array(intval($c_member_id));
786    return db_get_one($sql, $params);
787}
788
789/*** write ***/
790
791//--- c_member
792
793/**
794 * プロフィール変更(c_memberテーブル分)
795 */
796function db_member_config_prof_new($c_member_id, $prof_list)
797{
798    $data = array(
799        'nickname' => $prof_list['nickname'],
800        'birth_year'  => intval($prof_list['birth_year']),
801        'birth_month' => intval($prof_list['birth_month']),
802        'birth_day'   => intval($prof_list['birth_day']),
803        'public_flag_birth_year' => $prof_list['public_flag_birth_year'],
804    );
805    $where = array('c_member_id' => intval($c_member_id));
806    return db_update('c_member', $data, $where);
807}
808
809/**
810 * アクセス日時を更新
811 */
812function db_member_do_access($c_member_id)
813{
814    $data = array('access_date' => db_now());
815    $where = array('c_member_id' => intval($c_member_id));
816    return db_update('c_member', $data, $where);
817}
818
819//(image)
820
821/**
822 * プロフィール画像の変更
823 */
824function db_member_config_image_new($c_member_id, $image_filename, $img_num)
825{
826    $data = array('image_filename_'.intval($img_num) => $image_filename);
827    $where = array('c_member_id' => intval($c_member_id));
828    return db_update('c_member', $data, $where);
829}
830
831/**
832 * プロフィール画像の削除
833 */
834function db_member_delete_c_member_image_new($c_member_id, $img_num)
835{
836    $sql = 'UPDATE c_member SET';
837    if ($img_num == 1) {
838        $sql .= ' image_filename_1 = image_filename_2,';
839    }
840    if ($img_num == 1 || $img_num == 2) {
841        $sql .= ' image_filename_2 = image_filename_3,';
842    }
843    $sql .= ' image_filename_3 = \'\'';
844    $sql .= ' WHERE c_member_id = ?';
845    $params = array(intval($c_member_id));
846    return db_query($sql, $params);
847}
848
849/**
850 * メイン画像の変更
851 */
852function db_member_change_c_member_main_image($c_member_id, $img_num)
853{
854    $sql = 'UPDATE c_member SET image_filename = image_filename_'.intval($img_num).
855        ' WHERE c_member_id = ?';
856    $params = array(intval($c_member_id));
857    return db_query($sql, $params);
858}
859
860/**
861 * メイン画像を登録する
862 */
863function db_member_update_c_member_image($c_member_id, $image_filename, $img_num)
864{
865    $data = array(
866        'image_filename' => $image_filename,
867        'image_filename_'.intval($img_num) => $image_filename,
868    );
869    $where = array('c_member_id' => intval($c_member_id));
870    return db_update('c_member', $data, $where);
871}
872
873//--- c_member_secure
874
875function db_member_insert_c_member($c_member, $c_member_secure)
876{
877    $data = array(
878        'nickname'    => $c_member['nickname'],
879        'birth_year'  => $c_member['birth_year'],
880        'birth_month' => $c_member['birth_month'],
881        'birth_day'   => $c_member['birth_day'],
882        'public_flag_birth_year' => $c_member['public_flag_birth_year'],
883        'c_member_id_invite'  => intval($c_member['c_member_id_invite']),
884        'c_password_query_id' => intval($c_member['c_password_query_id']),
885        'is_receive_mail' => (bool)$c_member['is_receive_mail'],
886        'is_receive_ktai_mail'  => (bool)$c_member['is_receive_ktai_mail'],
887        'is_receive_daily_news' => intval($c_member['is_receive_daily_news']),
888        'r_date' => db_now(),
889    );
890    $c_member_id = db_insert('c_member', $data);
891
892    $data = array(
893        'c_member_id' => intval($c_member_id),
894        'hashed_password' => md5($c_member_secure['password']),
895        'hashed_password_query_answer' => md5($c_member_secure['password_query_answer']),
896        'pc_address'     => t_encrypt($c_member_secure['pc_address']),
897        'ktai_address'   => t_encrypt($c_member_secure['ktai_address']),
898        'regist_address' => t_encrypt($c_member_secure['regist_address']),
899    );
900    db_insert('c_member_secure', $data);
901
902    return $c_member_id;
903}
904
905function db_member_ktai_insert_c_member($profs)
906{
907    $data = array(
908        'nickname' => $profs['nickname'],
909        'birth_year' => intval($profs['birth_year']),
910        'birth_month' => intval($profs['birth_month']),
911        'birth_day' => intval($profs['birth_day']),
912        'public_flag_birth_year' => $profs['public_flag_birth_year'],
913        'r_date' => db_now(),
914        'is_receive_ktai_mail' => 1,
915        'c_member_id_invite' => intval($profs['c_member_id_invite']),
916        'c_password_query_id' => intval($profs['c_password_query_id']),
917    );
918    $c_member_id_new = db_insert('c_member', $data);
919
920    $data = array(
921        'c_member_id' => intval($c_member_id_new),
922        'hashed_password' => md5($profs['password']),
923        'hashed_password_query_answer' => md5($profs['password_query_answer']),
924        'ktai_address'     => t_encrypt($profs['ktai_address']),
925        'regist_address' => t_encrypt($profs['ktai_address']),
926    );
927    db_insert('c_member_secure', $data);
928
929    return $c_member_id_new;
930}
931
932function db_member_h_config_3(
933                $c_member_id,
934                $is_receive_mail,
935                $rss,
936                $ashiato_mail_num,
937                $is_receive_daily_news,
938                $c_password_query_id,
939                $c_password_query_answer,
940                $public_flag_diary,
941                $is_shinobiashi)
942{
943    $data = array(
944        'is_receive_mail' => (bool)$is_receive_mail,
945        'is_receive_daily_news' => intval($is_receive_daily_news),
946        'rss' => $rss,
947        'ashiato_mail_num' => intval($ashiato_mail_num),
948        'c_password_query_id' => intval($c_password_query_id),
949        'public_flag_diary' => $public_flag_diary,
950        'is_shinobiashi' => $is_shinobiashi,
951    );
952    $where = array('c_member_id' => intval($c_member_id));
953    db_update('c_member', $data, $where);
954
955    if (!empty($c_password_query_answer)) {
956        $data = array(
957            'hashed_password_query_answer' => md5($c_password_query_answer)
958        );
959        db_update('c_member_secure', $data, $where);
960    }
961}
962
963function db_member_update_easy_access_id($c_member_id, $easy_access_id)
964{
965    $data = array('easy_access_id' => t_encrypt($easy_access_id));
966    $where = array('c_member_id' => intval($c_member_id));
967    return db_update('c_member_secure', $data, $where);
968}
969
970function db_member_update_password_query($c_member_id, $c_password_query_id, $password_query_answer)
971{
972    $data = array('c_password_query_id' => intval($c_password_query_id));
973    $where = array('c_member_id' => intval($c_member_id));
974    db_update('c_member', $data, $where);
975
976    $data = array('hashed_password_query_answer' => md5($password_query_answer));
977    $where = array('c_member_id' => intval($c_member_id));
978    db_update('c_member_secure', $data, $where);
979}
980
981//(pc_address)
982
983function db_member_update_c_member_pc_address4c_member_id($c_member_id, $pc_address)
984{
985    $data = array('pc_address' => t_encrypt($pc_address));
986    $where = array('c_member_id' => intval($c_member_id));
987    return db_update('c_member_secure', $data, $where);
988}
989
990function db_member_regist_c_member_pc_address4c_member_id($c_member_id, $pc_address)
991{
992    $data = array(
993    'pc_address' => t_encrypt($pc_address),
994    'regist_address' => t_encrypt($pc_address),
995    );
996    $where = array('c_member_id' => intval($c_member_id));
997    return db_update('c_member_secure', $data, $where);
998}
999
1000//(ktai_address)
1001
1002function db_member_update_ktai_address($c_member_id, $ktai_address)
1003{
1004    $data = array('ktai_address' => t_encrypt($ktai_address));
1005    $where = array('c_member_id' => intval($c_member_id));
1006    return db_update('c_member_secure', $data, $where);
1007}
1008
1009//(password)
1010
1011function db_member_update_password($c_member_id, $password)
1012{
1013    $data = array('hashed_password' => md5($password));
1014    $where = array('c_member_id' => intval($c_member_id));
1015    return db_update('c_member_secure', $data, $where);
1016}
1017
1018//--- c_pc_address_pre
1019
1020function db_member_h_config_1($c_member_id, $pc_address)
1021{
1022    $insert_id = 0;
1023    $session = create_hash();
1024
1025    // 既にpreに存在するアドレスかどうか
1026    if (do_common_c_pc_address_pre4pc_address($pc_address)) {
1027        $data = array(
1028            'c_member_id' => intval($c_member_id),
1029            'session' => $session,
1030            'r_datetime' => db_now(),
1031        );
1032        $where = array('pc_address' => $pc_address);
1033        db_update('c_pc_address_pre', $data, $where);
1034    } else {
1035        $data = array(
1036            'c_member_id' => intval($c_member_id),
1037            'pc_address' => $pc_address,
1038            'session' => $session,
1039            'r_datetime' => db_now(),
1040        );
1041        $insert_id = db_insert('c_pc_address_pre', $data);
1042    }
1043
1044    do_h_config_1_mail_send($c_member_id, $session, $pc_address);
1045    return $insert_id;
1046}
1047
1048function db_member_h_regist_mail($c_member_id, $pc_address)
1049{
1050    $insert_id = 0;
1051    $session = create_hash();
1052
1053    // 既にpreに存在するアドレスかどうか
1054    if (do_common_c_pc_address_pre4pc_address($pc_address)) {
1055        $data = array(
1056            'c_member_id' => intval($c_member_id),
1057            'session' => $session,
1058            'r_datetime' => db_now(),
1059        );
1060        $where = array('pc_address' => $pc_address);
1061        db_update('c_pc_address_pre', $data, $where);
1062    } else {
1063        $data = array(
1064            'c_member_id' => intval($c_member_id),
1065            'pc_address' => $pc_address,
1066            'session' => $session,
1067            'r_datetime' => db_now(),
1068        );
1069        $insert_id = db_insert('c_pc_address_pre', $data);
1070    }
1071
1072    do_h_regist_mail_mail_send($c_member_id, $session, $pc_address);
1073    return $insert_id;
1074}
1075
1076function db_member_delete_c_pc_address_pre4sid($sid)
1077{
1078    $sql = 'DELETE FROM c_pc_address_pre WHERE session = ?';
1079    $params = array($sid);
1080    return db_query($sql, $params);
1081}
1082
1083function db_member_change_mail($sid, $password)
1084{
1085    if (!$c_pc_address_pre = do_common_c_pc_address_pre4sid($sid)) {
1086        return false;
1087    }
1088
1089    $c_member_id = $c_pc_address_pre['c_member_id'];
1090    $pc_address = $c_pc_address_pre['pc_address'];
1091
1092    if (!db_common_authenticate_password($c_member_id, $password)) {
1093        return false;
1094    }
1095
1096    db_member_update_c_member_pc_address4c_member_id($c_member_id, $pc_address);
1097    db_member_delete_c_pc_address_pre4sid($sid);
1098    return true;
1099}
1100
1101function db_member_regist_mail($sid, $password)
1102{
1103    if (!$c_pc_address_pre = do_common_c_pc_address_pre4sid($sid)) {
1104        return false;
1105    }
1106
1107    $c_member_id = $c_pc_address_pre['c_member_id'];
1108    $pc_address = $c_pc_address_pre['pc_address'];
1109
1110    if (!db_common_authenticate_password($c_member_id, $password)) {
1111        return false;
1112    }
1113
1114    db_member_regist_c_member_pc_address4c_member_id($c_member_id, $pc_address);
1115    db_member_delete_c_pc_address_pre4sid($sid);
1116    return true;
1117}
1118
1119//--- c_ktai_address_pre
1120
1121/**
1122 * 携帯アドレス変更
1123 */
1124function db_member_insert_c_ktai_address_pre($c_member_id, $session, $ktai_address)
1125{
1126    $data = array(
1127        'c_member_id' => intval($c_member_id),
1128        'session' => $session,
1129        'ktai_address' => $ktai_address,
1130        'r_datetime' => db_now(),
1131    );
1132    return db_insert('c_ktai_address_pre', $data);
1133}
1134
1135function db_member_delete_ktai_address_pre($c_ktai_address_pre_id)
1136{
1137    $sql = 'DELETE FROM c_ktai_address_pre WHERE c_ktai_address_pre_id = ?';
1138    $params = array(intval($c_ktai_address_pre_id));
1139    db_query($sql, $params);
1140}
1141
1142function db_member_delete_c_ktai_address_pre4ktai_address($ktai_address)
1143{
1144    $sql = 'DELETE FROM c_ktai_address_pre WHERE ktai_address = ?';
1145    $params = array($ktai_address);
1146    db_query($sql, $params);
1147}
1148
1149//--- c_member_pre
1150
1151/**
1152 * 招待メール送信
1153 */
1154function db_member_insert_c_invite($c_member_id_invite, $pc_address, $message, $session)
1155{
1156    $data = array(
1157        'pc_address' => $pc_address,
1158        'regist_address' => $pc_address,
1159        'c_member_id_invite' => intval($c_member_id_invite),
1160        'session' => $session,
1161        'r_date' => db_now(),
1162    );
1163    return db_insert('c_member_pre', $data);
1164}
1165
1166/**
1167 * 招待メール送信
1168 */
1169function db_member_update_c_invite($c_member_id_invite, $pc_address, $message, $session)
1170{
1171    $data = array(
1172        'c_member_id_invite' => intval($c_member_id_invite),
1173        'session' => $session,
1174        'regist_address' => $pc_address,
1175        'r_date' => db_now(),
1176    );
1177    $where = array('pc_address' => $pc_address);
1178    return db_update('c_member_pre', $data, $where);
1179}
1180
1181function db_member_delete_c_member_pre($c_member_id, $delete_c_member_ids)
1182{
1183    if (!is_array($delete_c_member_ids)) {
1184        return false;
1185    }
1186    $ids = implode(',', array_map('intval', $delete_c_member_ids));
1187
1188    $sql = 'DELETE FROM c_member_pre WHERE c_member_id_invite = ?'.
1189            ' AND c_member_pre_id IN ('.$ids.')';
1190    $params =  array(intval($c_member_id));
1191    db_query($sql, $params);
1192}
1193
1194function db_member_delete_c_member_pre4sid($sid)
1195{
1196    $sql = 'DELETE FROM c_member_pre WHERE session = ?';
1197    $params = array($sid);
1198    return db_query($sql, $params);
1199}
1200
1201//--- c_member_ktai_pre
1202
1203function db_member_delete_c_member_ktai_pre($c_member_id, $delete_c_member_ids)
1204{
1205    if (!is_array($delete_c_member_ids)) {
1206        return false;
1207    }
1208    $ids = implode(',', array_map('intval', $delete_c_member_ids));
1209
1210    $sql = 'DELETE FROM c_member_ktai_pre WHERE c_member_id_invite = ?' .
1211            ' AND c_member_ktai_pre_id IN ('.$ids.')';
1212    $params = array(intval($c_member_id));
1213    db_query($sql, $params);
1214}
1215
1216function db_member_delete_c_member_ktai_pre4id($c_member_ktai_pre_id)
1217{
1218    $sql = 'DELETE FROM c_member_ktai_pre WHERE c_member_ktai_pre_id = ?';
1219    $params = array(intval($c_member_ktai_pre_id));
1220    db_query($sql, $params);
1221}
1222
1223/**
1224 * c_member_ktai_preを更新
1225 */
1226function db_member_update_c_member_ktai_pre($session, $ktai_address, $c_member_id_invite)
1227{
1228    $data = array(
1229        'session' => $session,
1230        'r_datetime' => db_now(),
1231        'c_member_id_invite' => intval($c_member_id_invite),
1232    );
1233    $where = array('ktai_address' => $ktai_address);
1234    return db_update('c_member_ktai_pre', $data, $where);
1235}
1236
1237function db_member_delete_c_member_ktai_pre4ktai_address($ktai_address)
1238{
1239    $sql = 'DELETE FROM c_member_ktai_pre WHERE ktai_address = ?';
1240    $params = array($ktai_address);
1241    db_query($sql, $params);
1242}
1243
1244function db_member_insert_c_member_ktai_pre($session, $ktai_address, $c_member_id_invite)
1245{
1246    $data = array(
1247        'session' => $session,
1248        'ktai_address' => $ktai_address,
1249        'c_member_id_invite' => intval($c_member_id_invite),
1250        'r_datetime' => db_now(),
1251    );
1252    return db_insert('c_member_ktai_pre', $data);
1253}
1254
1255//--- profile関連
1256
1257function db_member_update_c_member_profile($c_member_id, $c_member_profile_list)
1258{
1259    foreach ($c_member_profile_list as $item) {
1260        $sql = 'DELETE FROM c_member_profile' .
1261                ' WHERE c_member_id = ? AND c_profile_id = ?';
1262        $params = array(intval($c_member_id), intval($item['c_profile_id']));
1263        db_query($sql, $params);
1264
1265        if ($item['value']) {
1266            if (is_array($item['value'])) {
1267                foreach ($item['value'] as $key => $value) {
1268                    do_config_prof_insert_c_member_profile($c_member_id, $item['c_profile_id'], $key, $value, $item['public_flag']);
1269                }
1270            } else {
1271                do_config_prof_insert_c_member_profile($c_member_id, $item['c_profile_id'], $item['c_profile_option_id'], $item['value'], $item['public_flag']);
1272            }
1273        }
1274    }
1275}
1276
1277function db_member_insert_c_member_profile($c_member_id, $c_profile_id, $c_profile_option_id, $value, $public_flag)
1278{
1279    $data = array(
1280        'c_member_id' => intval($c_member_id),
1281        'c_profile_id' => intval($c_profile_id),
1282        'c_profile_option_id' => intval($c_profile_option_id),
1283        'value' => $value,
1284        'public_flag' => $public_flag,
1285    );
1286    return db_insert('c_member_profile', $data);
1287}
1288
1289//--- c_access_block
1290
1291function db_member_insert_c_access_block($c_member_id, $c_member_id_block)
1292{
1293    // 存在するIDのみを抽出
1294    $c_member_id_block = array_unique(array_map('intval', $c_member_id_block));
1295    $ids = implode(',', $c_member_id_block);
1296    $sql = 'SELECT c_member_id FROM c_member WHERE c_member_id IN ('.$ids.')';
1297    $c_member_id_block = db_get_col($sql);
1298
1299    $sql = 'DELETE FROM c_access_block WHERE c_member_id = ?';
1300    $params = array(intval($c_member_id));
1301    db_query($sql, $params);
1302
1303    foreach ($c_member_id_block as $id) {
1304        if ($id == $c_member_id) continue;
1305
1306        $data = array(
1307            'c_member_id' => intval($c_member_id),
1308            'c_member_id_block' => intval($id),
1309            'r_datetime' => db_now(),
1310        );
1311        db_insert('c_access_block', $data);
1312    }
1313}
1314
1315//---
1316
1317function db_member_update_mail_receive($c_member_id, $is_receive_ktai_mail)
1318{
1319    $data = array('is_receive_ktai_mail' => intval($is_receive_ktai_mail));
1320    $where = array('c_member_id' => intval($c_member_id));
1321    db_update('c_member', $data, $where);
1322}
1323
1324function db_member_update_ashiato_mail_num($c_member_id, $ashiato_mail_num)
1325{
1326    $data = array('ashiato_mail_num' => intval($ashiato_mail_num));
1327    $where = array('c_member_id' => intval($c_member_id));
1328    db_update('c_member', $data, $where);
1329}
1330
1331function db_member_update_public_flag_diary($c_member_id, $public_flag_diary)
1332{
1333    $data = array('public_flag_diary' => strval($public_flag_diary));
1334    $where = array('c_member_id' => intval($c_member_id));
1335    db_update('c_member', $data, $where);
1336}
1337
1338function db_member_insert_username($c_member_id,$username){
1339    $data = array(
1340    "c_member_id"=>$c_member_id,
1341    "username"=>$username,
1342    );
1343    db_insert('c_username', $data);
1344}
1345
1346/**
1347 * 指定されたログインIDが使えるかどうか(既に使われていないか)確認する
1348 */
1349function db_member_check_username($username){
1350    $sql = "SELECT count(*) FROM c_username WHERE username = ? ";
1351    $params = array(
1352        $username,
1353    );
1354    return !(db_get_one($sql,$params)>0);
1355}
1356
1357/**
1358 * c_member_idからログインIDを取得
1359 */
1360function db_member_c_member_id4username($username, $is_ktai = false){
1361    switch (LOGIN_NAME_TYPE){
1362        case 0:
1363        if ($is_ktai) {
1364            $c_member_id = db_member_c_member_id4ktai_address_encrypted(t_encrypt($username));
1365        } else {
1366            $c_member_id = db_member_c_member_id4pc_address($username);
1367        }
1368        break;
1369        default :
1370        $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
1371        $params = array($username);
1372        $c_member_id = db_get_one($sql, $params);
1373        break;
1374    }
1375    return $c_member_id;
1376}
1377
1378/**
1379 * ログインIDからc_member_idを取得
1380 */
1381function db_member_username4c_member_id($c_member_id, $is_ktai = false){
1382    switch (LOGIN_NAME_TYPE){
1383        case 0:
1384        $c_member_secure = db_member_c_member_secure4c_member_id($c_member_id);
1385        if ($is_ktai) {
1386            $username = t_decrypt($c_member_secure['ktai_address']);
1387        } else {
1388            $username = t_decrypt($c_member_secure['pc_address']);
1389        }
1390        break;
1391       
1392        default :
1393        $sql = 'SELECT username FROM c_username WHERE c_member_id = ?';
1394        $params = array($c_member_id);
1395        $username = db_get_one($sql, $params);
1396        break;
1397    }
1398    return $username;
1399}
1400
1401/**
1402 * ログインしたユーザのメンバー情報が存在しない場合自動で生成
1403 */
1404function db_member_create_member($username){
1405        $data = array(
1406        'nickname'    => "NO NAME",
1407        'birth_year'  => 0,
1408        'birth_month' => 0,
1409        'birth_day'   => 0,
1410        'public_flag_birth_year' => "public",
1411        'c_member_id_invite'  => 1,
1412        'c_password_query_id' => 0,
1413        'is_receive_mail' => true,
1414        'is_receive_ktai_mail'  => true,
1415        'is_receive_daily_news' => true,
1416        'r_date' => db_now(),
1417    );
1418    $c_member_id = db_insert('c_member', $data);
1419   
1420    $data = array(
1421        'c_member_id' => intval($c_member_id),
1422        'hashed_password' => "",
1423        'hashed_password_query_answer' => "",
1424        'pc_address'     => "",
1425        'ktai_address'   => "",
1426        'regist_address' => "",
1427    );
1428    db_insert('c_member_secure', $data);
1429   
1430    $data = array(
1431        'c_member_id' => intval($c_member_id),
1432        'username' => $username,
1433    );
1434    db_insert('c_username', $data);
1435}
1436
1437/**
1438 * プロフィールに必須項目が入力されているかを返す。
1439 * 0:入力済み
1440 * 1:プロフィール未入力
1441 * 2:メールアドレス未登録
1442 */
1443function db_member_check_param_inputed($c_member_id, $is_ktai = false){
1444    $c_member = db_member_c_member4c_member_id($c_member_id, true);
1445   
1446    if (($c_member['nickname']=="")
1447    ||($c_member['birth_year']=="")
1448    ||($c_member['birth_month']=="")
1449    ||($c_member['birth_day']=="")
1450    ||($c_member['c_password_query_id']=="")
1451    ||($c_member['secure']['hashed_password_query_answer']=="")
1452    ) {
1453        return 1;
1454    }
1455   
1456   
1457    if ($c_member['secure']['pc_address']=="" && !$is_ktai) {
1458        return 2;
1459    }
1460    if ($c_member['secure']['ktai_address']=="" && $is_ktai) {
1461        return 2;
1462    }
1463   
1464    return 0;
1465}
1466           
1467
1468?>
Note: See TracBrowser for help on using the repository browser.