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

source: OpenPNE/branches/maruyama/prj_ext_auth/webapp/modules/ktai/do/h_regist_prof.php @ 1056

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

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

File size: 5.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
7class ktai_do_h_regist_prof extends OpenPNE_Action
8{
9    function execute($requests)
10    {
11        $tail = $GLOBALS['KTAI_URL_TAIL'];
12        $u = $GLOBALS['KTAI_C_MEMBER_ID'];
13       
14        $errors = array();
15
16        $validator = new OpenPNE_Validator();
17        $validator->addRequests($_REQUEST);
18        $validator->addRules($this->_getValidateRules());
19        if (!$validator->validate()) {
20            $errors = $validator->getErrors();
21        }
22
23        $prof = $validator->getParams();
24
25        //--- c_profile の項目をチェック
26        $validator = new OpenPNE_Validator();
27        $validator->addRequests($_REQUEST['profile']);
28        $validator->addRules($this->_getValidateRulesProfile());
29        if (!$validator->validate()) {
30            $errors = array_merge($errors, $validator->getErrors());
31        }
32
33        // 値の整合性をチェック(DB)
34        $c_member_profile_list = do_config_prof_check_profile($validator->getParams(), $_REQUEST['public_flag']);
35
36        // 必須項目チェック
37        $profile_list = db_common_c_profile_list4null();
38        foreach ($profile_list as $profile) {
39            if ($profile['disp_regist'] &&
40                $profile['is_required'] &&
41                !$c_member_profile_list[$profile['name']]['value']
42            ) {
43                $errors[$profile['name']] = "{$profile['caption']}を入力してください";
44                break;
45            }
46        }
47
48        // 生年月日のチェック
49        if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) {
50            $errors[] = '生年月日を正しく入力してください';
51        }
52        if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) {
53            $errors[] = '生年月日を未来に設定することはできません';
54        }
55
56        // 入力エラー
57        if ($errors) {
58            ktai_display_error($errors);
59        }
60
61        switch ($prof['public_flag_birth_year']) {
62        case "public":
63        default:
64            $prof['public_flag_birth_year'] = "public";
65            break;
66        case "friend":
67            $prof['public_flag_birth_year'] = "friend";
68            break;
69        case "private":
70            $prof['public_flag_birth_year'] = "private";
71            break;
72        }
73        db_member_config_prof_new($u, $prof);
74        // insert c_member_profile
75        do_config_prof_update_c_member_profile($u, $c_member_profile_list);
76        db_member_update_password_query($u, $prof['c_password_query_id'], $prof['password_query_answer']);
77       
78        //管理画面で指定したコミュニティに強制参加
79        $c_commu_id_list = db_commu_regist_join_list();
80        foreach ($c_commu_id_list as $c_commu_id) {
81            do_inc_join_c_commu($c_commu_id, $u);
82        }
83       
84        openpne_redirect('ktai', 'page_h_home');
85    }
86
87    function _getValidateRules()
88    {
89        return array(
90            'nickname' => array(
91                'type' => 'string',
92                'required' => '1',
93                'caption' => 'ニックネーム',
94                'max' => '40',
95            ),
96            'birth_year' => array(
97                'type' => 'int',
98                'required' => '1',
99                'caption' => '生まれた年',
100                'min' => '1901',
101                'max' => date('Y'),
102            ),
103            'birth_month' => array(
104                'type' => 'int',
105                'required' => '1',
106                'caption' => '誕生月',
107                'min' => '1',
108                'max' => '12',
109            ),
110            'birth_day' => array(
111                'type' => 'int',
112                'required' => '1',
113                'caption' => '誕生日',
114                'min' => '1',
115                'max' => '31',
116            ),
117            'public_flag_birth_year' => array(
118                'type' => 'string',
119            ),
120            'c_password_query_id' => array(
121                'type' => 'int',
122                'required' => '1',
123                'caption' => '秘密の質問',
124                'required_error' => '秘密の質問を選択してください',
125            ),
126            'password_query_answer' => array(
127                'type' => 'string',
128                'required' => '1',
129                'caption' => '秘密の質問の答え',
130            ),
131        );
132    }
133
134    function _getValidateRulesProfile()
135    {
136        $rules = array();
137        $profile_list = db_common_c_profile_list4null();
138        foreach ($profile_list as $profile) {
139            if ($profile['disp_regist']) {
140                $rule = array(
141                    'type' => 'int',
142                    'required' => $profile['is_required'],
143                    'caption' => $profile['caption'],
144                );
145                switch ($profile['form_type']) {
146                case 'text':
147                case 'textarea':
148                    $rule['type'] = $profile['val_type'];
149                    $rule['regexp'] = $profile['val_regexp'];
150                    $rule['min'] = $profile['val_min'];
151                    ($profile['val_max']) and $rule['max'] = $profile['val_max'];
152                    break;
153                case 'checkbox':
154                    $rule['is_array'] = '1';
155                    break;
156                }
157                $rules[$profile['name']] = $rule;
158            }
159        }
160        return $rules;
161    }
162}
163
164?>
Note: See TracBrowser for help on using the repository browser.