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

source: OpenPNE/trunk/webapp/modules/pc/do/o_regist_prof.php @ 4933

Last change on this file since 4933 was 4933, checked in by ogawa, 14 years ago

#1777:ソースコード内のcopyright表記の年を2008に変更する

File size: 9.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
7class pc_do_o_regist_prof extends OpenPNE_Action
8{
9    function isSecure()
10    {
11        return false;
12    }
13
14    function execute($requests)
15    {
16        //<PCKTAI
17        if (IS_SLAVEPNE || !(OPENPNE_REGIST_FROM & OPENPNE_REGIST_FROM_PC)) {
18            client_redirect_login();
19        }
20        //>
21
22        $sid = $requests['sid'];
23        if (!db_member_is_active_sid($sid)) {
24            $p = array('msg_code' => 'invalid_url');
25            openpne_redirect('pc', 'page_o_tologin', $p);
26        }
27
28        $pre = db_member_c_member_pre4sid($sid);
29
30        $mode = $requests['mode'];
31        $errors = array();
32
33        $validator = new OpenPNE_Validator();
34        if ($mode == 'register') {
35            session_name('OpenPNEpcregist');
36            @session_start();
37            $validator->addRequests($_SESSION['prof']);
38            $requests['password2'] = $_SESSION['prof']['password'];
39        } else {
40            $validator->addRequests($_REQUEST);
41        }
42        $validator->addRules($this->_getValidateRules());
43        if (!$validator->validate()) {
44            $errors = $validator->getErrors();
45        }
46
47        $prof = $validator->getParams();
48
49        switch ($prof['public_flag_birth_year']) {
50        case 'public':
51        case 'friend':
52        case 'private':
53            break;
54        default:
55            $prof['public_flag_birth_year'] = 'public';
56            break;
57        }
58
59        if ($prof['password'] != $requests['password2']) {
60            $errors['password2'] = 'パスワードが一致していません';
61        }
62
63        //--- c_profile の項目をチェック
64        $validator = new OpenPNE_Validator();
65        if ($mode == 'register') {
66            $validator->addRequests($_SESSION['prof']['profile']);
67            $public_flag_list = $_SESSION['prof']['public_flag'];
68        } else {
69            $validator->addRequests($_REQUEST['profile']);
70            $public_flag_list = $_REQUEST['public_flag'];
71        }
72        $validator->addRules($this->_getValidateRulesProfile());
73        if (!$validator->validate()) {
74            $errors = array_merge($errors, $validator->getErrors());
75        }
76
77        // 値の整合性をチェック(DB)
78        $c_member_profile_list = db_member_check_profile($validator->getParams(), $public_flag_list);
79
80        // 必須項目チェック
81        $profile_list = db_member_c_profile_list4null();
82        foreach ($profile_list as $profile) {
83            $value = $c_member_profile_list[$profile['name']]['value'];
84            if ($profile['disp_regist'] && $profile['is_required']) {
85                if (is_null($value) || $value === '' || $value === array()) {
86                    $errors[$profile['name']] = $profile['caption'] . 'を入力してください';
87                }
88            }
89        }
90
91        // 生年月日のチェック
92        if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) {
93            $errors[] = '生年月日を正しく入力してください';
94        }
95        if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) {
96            $errors[] = '生年月日を未来に設定することはできません';
97        }
98
99        if ($mode != 'input' && $errors) {
100            $_REQUEST['err_msg'] = $errors;
101            $mode = 'input';
102            @session_start();
103            $_SESSION['prof'] = $_REQUEST;
104            unset($_SESSION['password']);
105        }
106
107        switch ($mode) {
108        case 'input':
109            $prof['profile'] = $c_member_profile_list;
110            unset($prof['password']);
111
112            openpne_forward('pc', 'page', 'o_regist_prof');
113            exit;
114        case 'confirm':
115        default:
116            $prof['profile'] = $c_member_profile_list;
117
118            session_name('OpenPNEpcregist');
119            @session_start();
120            $_SESSION['prof'] = $_REQUEST;
121
122            $_REQUEST['prof'] = $prof;
123            openpne_forward('pc', 'page', 'o_regist_prof_confirm');
124            exit;
125        case 'register':
126            $pre = db_member_c_member_pre4sid($sid);
127             // delete cookie
128            setcookie(session_name(), '', time() - 3600, ini_get('session.cookie_path'));
129
130            if ((IS_GET_EASY_ACCESS_ID != 3) || $pre['is_disabled_regist_easy_access_id']) {
131                // メンバー登録時の携帯個体識別番号取得設定が「PC・携帯登録時に個体識別番号を必須にする」でない場合、メンバー登録処理をおこなう
132                $c_member = $prof;
133                $c_member['c_member_id_invite'] = $pre['c_member_id_invite'];
134                $c_member_secure = array(
135                    'password' => $prof['password'],
136                    'password_query_answer' => $prof['c_password_query_answer'],
137                    'pc_address' => $pre['pc_address'],
138                    'ktai_address' => '',
139                    'regist_address' => $pre['pc_address'],
140                );
141
142                // メンバー登録
143                $u = util_regist_c_member($c_member, $c_member_secure, $c_member_profile_list);
144
145                // pre の内容を削除
146                db_member_delete_c_member_pre4sid($sid);
147       
148                // 登録完了メール送信
149                do_regist_prof_do_regist2_mail_send($u);
150
151                openpne_redirect('pc', 'page_o_regist_end', array('c_member_id' => $u));
152            } else {
153                // メンバー登録時の携帯個体識別番号取得設定が「PC・携帯登録時に個体識別番号を必須にする」である場合、
154                // ここでのメンバー登録はすべてスキップする。入力した項目は c_member_pre とc_member_pre_profile に
155                // 保持しておき、携帯の登録が完了した場合に、メンバー登録も完了する
156
157                // c_member_pre_profile にデータ挿入
158                db_member_update_c_member_pre_profile($pre['c_member_pre_id'], $c_member_profile_list);
159
160                // c_member_pre にデータ挿入
161                $c_member_pre_secure = array(
162                    'session' => $pre['session'],
163                    'nickname' => $prof['nickname'],
164                    'birth_year' => $prof['birth_year'],
165                    'birth_month' => $prof['birth_month'],
166                    'birth_day' => $prof['birth_day'],
167                    'public_flag_birth_year' => $prof['public_flag_birth_year'],
168                    'password' => $prof['password'],
169                    'public_flag_birth_year' => $prof['public_flag_birth_year'],
170                    'c_password_query_id' => $prof['c_password_query_id'],
171                    'password_query_answer' => $prof['c_password_query_answer'],
172                    'pc_address' => $pre['pc_address'],
173                    'regist_address' => $pre['pc_address'],
174                );
175
176                db_member_update_c_member_pre_secure($pre['c_member_pre_id'], $c_member_pre_secure);
177
178                openpne_redirect('pc', 'page_o_regist_ktai_address', array('sid' => $pre['session']));
179            }
180        }
181    }
182
183    function _getValidateRules()
184    {
185        return array(
186            'nickname' => array(
187                'type' => 'string',
188                'required' => '1',
189                'caption' => 'ニックネーム',
190                'max' => '40',
191            ),
192            'birth_year' => array(
193                'type' => 'int',
194                'required' => '1',
195                'caption' => '生まれた年',
196                'min' => '1901',
197            ),
198            'birth_month' => array(
199                'type' => 'int',
200                'required' => '1',
201                'caption' => '誕生月',
202                'min' => '1',
203                'max' => '12',
204            ),
205            'birth_day' => array(
206                'type' => 'int',
207                'required' => '1',
208                'caption' => '誕生日',
209                'min' => '1',
210                'max' => '31',
211            ),
212            'public_flag_birth_year' => array(
213                'type' => 'string',
214            ),
215            'password' => array(
216                'type' => 'regexp',
217                'regexp' => '/^[a-z0-9]+$/i',
218                'required' => '1',
219                'caption' => 'パスワード',
220                'min' => '6',
221                'max' => '12',
222            ),
223            'c_password_query_id' => array(
224                'type' => 'int',
225                'required' => '1',
226                'caption' => '秘密の質問',
227                'required_error' => '秘密の質問を選択してください',
228                'min' => '1',
229            ),
230            'c_password_query_answer' => array(
231                'type' => 'string',
232                'required' => '1',
233                'caption' => '秘密の質問の答え',
234            ),
235        );
236    }
237
238    function _getValidateRulesProfile()
239    {
240        $rules = array();
241        $profile_list = db_member_c_profile_list4null();
242        foreach ($profile_list as $profile) {
243            if ($profile['disp_regist']) {
244                $rule = array(
245                    'type' => 'int',
246                    'required' => $profile['is_required'],
247                    'caption' => $profile['caption'],
248                );
249                switch ($profile['form_type']) {
250                case 'text':
251                case 'textlong':
252                case 'textarea':
253                    $rule['type'] = $profile['val_type'];
254                    $rule['regexp'] = $profile['val_regexp'];
255                    $rule['min'] = $profile['val_min'];
256                    ($profile['val_max']) and $rule['max'] = $profile['val_max'];
257                    break;
258                case 'checkbox':
259                    $rule['is_array'] = '1';
260                    break;
261                }
262                $rules[$profile['name']] = $rule;
263            }
264        }
265        return $rules;
266    }
267}
268
269?>
Note: See TracBrowser for help on using the repository browser.