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

source: OpenPNE/branches/work/ruikubo/admin_regist_mail/webapp/modules/ktai/do/o_insert_c_member.php @ 10904

Last change on this file since 10904 was 10904, checked in by ruikubo, 11 years ago

#3675 CSVインポートによる登録の場合は管理者宛に通知メールを送らない修正

File size: 7.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
7require_once 'OpenPNE/KtaiID.php';
8
9class ktai_do_o_insert_c_member extends OpenPNE_Action
10{
11    function isSecure()
12    {
13        return false;
14    }
15
16    function execute($requests)
17    {
18        //<PCKTAI
19        if (OPENPNE_AUTH_MODE == 'slavepne' || !((OPENPNE_REGIST_FROM & OPENPNE_REGIST_FROM_KTAI) >> 1)) {
20            openpne_redirect('ktai', 'page_o_login', array('msg' => 42));
21        }
22        //>
23
24        // --- リクエスト変数
25        $ses = $requests['ses'];
26        $aff_id = $requests['aff_id'];
27        // ----------
28
29        //--- 権限チェック
30        //セッションが有効
31
32        // セッションが有効かどうか
33        if (!$pre = db_member_c_member_ktai_pre4session($ses)) {
34            // 無効の場合、login へリダイレクト
35            openpne_redirect('ktai', 'page_o_login', array('msg' => 42));
36        }
37
38        // メールアドレスが登録できるかどうか
39        if (!util_is_regist_mail_address($pre['ktai_address'])) {
40            openpne_redirect('ktai', 'page_o_login', array('msg' => 42));
41        }
42        //---
43
44        $errors = array();
45
46        $validator = new OpenPNE_Validator();
47        $validator->addRequests($_REQUEST);
48        $validator->addRules($this->_getValidateRules());
49        if (!$validator->validate()) {
50            $errors = $validator->getErrors();
51        }
52
53        $prof = $validator->getParams();
54
55        //--- c_profile の項目をチェック
56        $validator = new OpenPNE_Validator();
57        $validator->addRequests($_REQUEST['profile']);
58        $validator->addRules(util_get_validate_rules_profile('regist'));
59        if (!$validator->validate()) {
60            $errors = array_merge($errors, $validator->getErrors());
61        }
62
63        // 値の整合性をチェック(DB)
64        $c_member_profile_list = db_member_check_profile($validator->getParams(), $_REQUEST['public_flag']);
65
66        // 必須項目チェック
67        $profile_list = db_member_c_profile_list4null();
68        foreach ($profile_list as $profile) {
69            $value = $c_member_profile_list[$profile['name']]['value'];
70            if ($profile['disp_regist'] && $profile['is_required']) {
71                if (is_null($value) || $value === '' || $value === array()) {
72                    $errors[$profile['name']] = $profile['caption'] . 'を入力してください';
73                }
74            }
75        }
76
77        // 生年月日のチェック
78        if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) {
79            $errors[] = '生年月日を正しく入力してください';
80        }
81        if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) {
82            $errors[] = '生年月日を未来に設定することはできません';
83        }
84
85        if (IS_GET_EASY_ACCESS_ID != 0) {
86            $easy_access_id = OpenPNE_KtaiID::getID();
87            if (!$easy_access_id && (IS_GET_EASY_ACCESS_ID == 2 || IS_GET_EASY_ACCESS_ID == 3) && (!$pre['is_disabled_regist_easy_access_id'])) {
88                openpne_redirect('ktai', 'page_o_regist_ktai_uid_err');
89            }
90            if (db_member_c_member_id4easy_access_id($easy_access_id)) {
91                $errors[] = 'この携帯個体識別番号はすでに登録されています';
92            }
93            if (db_member_easy_access_id_is_blacklist(md5($easy_access_id))) {
94                ktai_display_error('新規登録を完了できませんでした。');
95            }
96        }
97
98        if (OPENPNE_AUTH_MODE == 'pneid') {
99            // ログインIDの重複チェック
100            if (db_member_c_member_id4username($prof['login_id'])) {
101                $errors[] = 'このログインIDはすでに登録されています';
102            }
103        }
104
105        // 入力エラー
106        if ($errors) {
107            ktai_display_error($errors);
108        }
109
110        // insert c_member
111        $prof['c_member_id_invite'] = $pre['c_member_id_invite'];
112
113        $c_member_secure = array(
114            'password' => $prof['password'],
115            'password_query_answer' => $prof['password_query_answer'],
116            'pc_address' => '',
117            'ktai_address' => $pre['ktai_address'],
118            'regist_address' => $pre['ktai_address'],
119        );
120
121        if (!$c_member_id = util_regist_c_member($prof, $c_member_secure, $c_member_profile_list)) {
122            openpne_redirect('ktai', 'page_o_login', array('msg' => 42));
123        }
124
125        // 個体識別番号の登録
126        if ($easy_access_id) {
127            db_member_update_easy_access_id($c_member_id, $easy_access_id);
128        }
129
130        // delete c_member_ktai_pre
131        db_member_delete_c_member_ktai_pre4id($pre['c_member_ktai_pre_id']);
132
133        do_insert_c_member_mail_send($c_member_id, $prof['password'], $pre['ktai_address']);
134
135        // 登録完了メール(管理者宛)
136        if (SEND_USER_DATA) {
137            do_common_send_mail_regist4admin($c_member_id);
138        }
139
140        if ($aff_id) {
141            $p = array('aff_id' => $aff_id);
142        } else {
143            $p = array();
144        }
145        $p['c_member_id'] = $c_member_id;
146
147        openpne_redirect('ktai', 'page_o_regist_end',$p);
148    }
149
150    function _getValidateRules()
151    {
152        $rules = array(
153            'nickname' => array(
154                'type' => 'string',
155                'required' => '1',
156                'caption' => WORD_NICKNAME,
157                'max' => '40',
158            ),
159            'birth_year' => array(
160                'type' => 'int',
161                'required' => '1',
162                'caption' => '生まれた年',
163                'min' => '1901',
164                'max' => date('Y'),
165            ),
166            'birth_month' => array(
167                'type' => 'int',
168                'required' => '1',
169                'caption' => '誕生月',
170                'min' => '1',
171                'max' => '12',
172            ),
173            'birth_day' => array(
174                'type' => 'int',
175                'required' => '1',
176                'caption' => '誕生日',
177                'min' => '1',
178                'max' => '31',
179            ),
180            'public_flag_birth_year' => array(
181                'type' => 'regexp',
182                'regexp' => '/^(public|friend|private)$/',
183                'required' => '1',
184                'caption' => '公開範囲',
185            ),
186            'public_flag_birth_month_day' => array(
187                'type' => 'regexp',
188                'regexp' => '/^(public|friend|private)$/',
189                'required' => '1',
190                'caption' => '公開範囲',
191            ),
192            'password' => array(
193                'type' => 'regexp',
194                'regexp' => '/^[a-z0-9]+$/i',
195                'required' => '1',
196                'caption' => 'パスワード',
197                'min' => '6',
198                'max' => '12',
199            ),
200            'c_password_query_id' => array(
201                'type' => 'int',
202                'required' => '1',
203                'min' => '1',
204                'caption' => '秘密の質問',
205                'required_error' => '秘密の質問を選択してください',
206            ),
207            'password_query_answer' => array(
208                'type' => 'string',
209                'required' => '1',
210                'caption' => '秘密の質問の答え',
211            ),
212        );
213
214        if (OPENPNE_AUTH_MODE == 'pneid') {
215            $rules['login_id'] = array(
216                'type' => 'regexp',
217                'regexp' => '/^[a-zA-Z0-9][a-zA-Z0-9\-_]+[a-zA-Z0-9]$/i',
218                'required' => '1',
219                'caption' => 'ログインID',
220                'type_error' => 'ログインIDは4-30文字の半角英数字、記号(アンダーバー「_」、ハイフン「-」)で入力してください',
221                'min' => '4',
222                'max' => '30',
223            );
224        }
225
226        return $rules;
227    }
228}
229
230?>
Note: See TracBrowser for help on using the repository browser.