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

source: OpenPNE/branches/maruyama/prj_ext_auth/webapp/modules/pc/do/h_regist_prof.php @ 957

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

管理画面にユーザID出力

File size: 5.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 */
10class pc_do_h_regist_prof extends OpenPNE_Action
11{
12    function execute($requests)
13    {
14        $u = $GLOBALS['AUTH']->uid();
15
16        $mode = $requests['mode'];
17        $errors = array();
18
19        $validator = new OpenPNE_Validator();
20        $validator->addRequests($_REQUEST);
21        $validator->addRules($this->_getValidateRules());
22        if (!$validator->validate()) {
23            $errors = array_merge($errors, $validator->getErrors());
24        }
25        $prof = $validator->getParams();
26
27        //--- c_profile の項目をチェック
28        $validator = new OpenPNE_Validator();
29        $validator->addRequests($_REQUEST['profile']);
30        $validator->addRules($this->_getValidateRulesProfile());
31        if (!$validator->validate()) {
32            $errors = array_merge($errors, $validator->getErrors());
33        }
34
35        // 値の整合性をチェック(DB)
36        $c_member_profile_list = do_config_prof_check_profile($validator->getParams(), $_REQUEST['public_flag']);
37
38        // 必須項目チェック
39        $profile_list = db_common_c_profile_list4null();
40        foreach ($profile_list as $profile) {
41            if ($profile['disp_config']
42                && $profile['is_required']
43                && !$c_member_profile_list[$profile['name']]['value']
44            ) {
45                $errors[$profile['name']] = "{$profile['caption']}を入力してください";
46                break;
47            }
48        }
49
50        // 生年月日のチェック
51        if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) {
52            $errors[] = '生年月日を正しく入力してください';
53        }
54        if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) {
55            $errors[] = '生年月日を未来に設定することはできません';
56        }
57       
58        if ($errors) {
59            $_REQUEST['msg'] = array_shift($errors);
60            $mode = "input";
61        }
62       
63        switch ($mode) {
64        case "input":
65            $prof['profile'] = $c_member_profile_list;
66           
67            $_SESSION['prof'] = $prof;
68            openpne_forward('pc', 'page', "h_regist_prof");
69            exit;
70            break;
71        default:
72        case "confirm":
73            $prof['profile'] = $c_member_profile_list;
74
75            $_SESSION['prof'] = $prof; // page:h_config_prof_confirm への値の引渡し
76            openpne_forward('pc', 'page', "h_config_prof_confirm");
77            exit;
78            break;
79        case "register":
80            do_config_prof_new($u, $prof);
81            do_config_prof_update_c_member_profile($u, $c_member_profile_list);
82
83            openpne_redirect('pc', 'page_h_prof');
84            break;
85        }
86    }
87   
88   
89    function _getValidateRules()
90    {
91        return array(
92            'nickname' => array(
93                'type' => 'string',
94                'required' => '1',
95                'caption' => 'ニックネーム',
96                'max' => '40',
97            ),
98            'birth_year' => array(
99                'type' => 'int',
100                'required' => '1',
101                'caption' => '生まれた年',
102                'min' => '1901',
103            ),
104            'birth_month' => array(
105                'type' => 'int',
106                'required' => '1',
107                'caption' => '誕生月',
108                'min' => '1',
109                'max' => '12',
110            ),
111            'birth_day' => array(
112                'type' => 'int',
113                'required' => '1',
114                'caption' => '誕生日',
115                'min' => '1',
116                'max' => '31',
117            ),
118            'public_flag_birth_year' => array(
119                'type' => 'string',
120            ),
121            'password' => array(
122                'type' => 'regexp',
123                'regexp' => '/^[a-z0-9]+$/i',
124                'required' => '1',
125                'caption' => 'パスワード',
126                'min' => '6',
127                'max' => '12',
128            ),
129            'c_password_query_id' => array(
130                'type' => 'int',
131                'required' => '1',
132                'caption' => '秘密の質問',
133                'required_error' => '秘密の質問を選択してください',
134                'min' => '1',
135            ),
136            'c_password_query_answer' => array(
137                'type' => 'string',
138                'required' => '1',
139                'caption' => '秘密の質問の答え',
140            ),
141        );
142    }
143
144    function _getValidateRulesProfile()
145    {
146        $rules = array();
147        $profile_list = db_common_c_profile_list4null();
148        foreach ($profile_list as $profile) {
149            if ($profile['disp_regist']) {
150                $rule = array(
151                    'type' => 'int',
152                    'required' => $profile['is_required'],
153                    'caption' => $profile['caption'],
154                );
155                switch ($profile['form_type']) {
156                case 'text':
157                case 'textarea':
158                    $rule['type'] = $profile['val_type'];
159                    $rule['regexp'] = $profile['val_regexp'];
160                    $rule['min'] = $profile['val_min'];
161                    ($profile['val_max']) and $rule['max'] = $profile['val_max'];
162                    break;
163                case 'checkbox':
164                    $rule['is_array'] = '1';
165                    break;
166                }
167                $rules[$profile['name']] = $rule;
168            }
169        }
170        return $rules;
171    }
172}
173
174?>
Note: See TracBrowser for help on using the repository browser.