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

source: OpenPNE/trunk/webapp/modules/ktai/do/h_regist_prof.php @ 4933

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

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

File size: 5.5 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 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 = db_member_check_profile($validator->getParams(), $_REQUEST['public_flag']);
35
36        // 必須項目チェック
37        $profile_list = db_member_c_profile_list4null();
38        foreach ($profile_list as $profile) {
39            $value = $c_member_profile_list[$profile['name']]['value'];
40            if ($profile['disp_config'] && $profile['is_required']) {
41                if (is_null($value) || $value === '' || $value === array()) {
42                    $errors[$profile['name']] = $profile['caption'] . 'を入力してください';
43                }
44            }
45        }
46
47        // 生年月日のチェック
48        if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) {
49            $errors[] = '生年月日を正しく入力してください';
50        }
51        if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) {
52            $errors[] = '生年月日を未来に設定することはできません';
53        }
54
55        // 入力エラー
56        if ($errors) {
57            ktai_display_error($errors);
58        }
59
60        switch ($prof['public_flag_birth_year']) {
61        case "public":
62        default:
63            $prof['public_flag_birth_year'] = "public";
64            break;
65        case "friend":
66            $prof['public_flag_birth_year'] = "friend";
67            break;
68        case "private":
69            $prof['public_flag_birth_year'] = "private";
70            break;
71        }
72        db_member_config_prof_new($u, $prof);
73        // insert c_member_profile
74        db_member_update_c_member_profile($u, $c_member_profile_list);
75        db_member_update_password_query($u, $prof['c_password_query_id'], $prof['password_query_answer']);
76       
77        //管理画面で指定したコミュニティに強制参加
78        $c_commu_id_list = db_commu_regist_join_list();
79        foreach ($c_commu_id_list as $c_commu_id) {
80            db_commu_join_c_commu($c_commu_id, $u);
81        }
82       
83        openpne_redirect('ktai', 'page_h_home');
84    }
85
86    function _getValidateRules()
87    {
88        return array(
89            'nickname' => array(
90                'type' => 'string',
91                'required' => '1',
92                'caption' => 'ニックネーム',
93                'max' => '40',
94            ),
95            'birth_year' => array(
96                'type' => 'int',
97                'required' => '1',
98                'caption' => '生まれた年',
99                'min' => '1901',
100                'max' => date('Y'),
101            ),
102            'birth_month' => array(
103                'type' => 'int',
104                'required' => '1',
105                'caption' => '誕生月',
106                'min' => '1',
107                'max' => '12',
108            ),
109            'birth_day' => array(
110                'type' => 'int',
111                'required' => '1',
112                'caption' => '誕生日',
113                'min' => '1',
114                'max' => '31',
115            ),
116            'public_flag_birth_year' => array(
117                'type' => 'string',
118            ),
119            'c_password_query_id' => array(
120                'type' => 'int',
121                'required' => '1',
122                'caption' => '秘密の質問',
123                'required_error' => '秘密の質問を選択してください',
124            ),
125            'password_query_answer' => array(
126                'type' => 'string',
127                'required' => '1',
128                'caption' => '秘密の質問の答え',
129            ),
130        );
131    }
132
133    function _getValidateRulesProfile()
134    {
135        $rules = array();
136        $profile_list = db_member_c_profile_list4null();
137        foreach ($profile_list as $profile) {
138            if ($profile['disp_regist']) {
139                $rule = array(
140                    'type' => 'int',
141                    'required' => $profile['is_required'],
142                    'caption' => $profile['caption'],
143                );
144                switch ($profile['form_type']) {
145                case 'text':
146                case 'textlong':
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.