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

Changeset 5560


Ignore:
Timestamp:
Mar 3, 2008, 6:54:41 PM (12 years ago)
Author:
ebihara
Message:

#2012:pneidモード(仮)のCSVインポート処理を追加

Location:
OpenPNE/branches/work/ebihara/prj_id_login/webapp/modules/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/work/ebihara/prj_id_login/webapp/modules/admin/do/import_c_member.php

    r4933 r5560  
    1515    function execute($requests)
    1616    {
    17         //件数制限つき
    18         $limit = 1000;
     17        $member_file = $_FILES['member_file'];
    1918
    20         //項目数
    21         $column_num = 3;
     19        $limit = 1000;  // 件数制限
    2220
    23         $errors = array();
    24 
    25         $member_file = $_FILES['member_file'];
    26         $member_data = file($member_file['tmp_name']);
    27 
    28         // --- エラーチェック1 ここから
    29 
    30         $name_data = explode(".", $member_file['name']);
    31         if ($name_data[count($name_data)-1] != 'csv') {
    32             $this->handleError("データタイプはcsv形式にして下さい");
     21        // 項目数
     22        if (OPENPNE_AUTH_MODE == 'pneid') {
     23            $column_num = 4;
     24        } else {
     25            $column_num = 3;
    3326        }
    3427
    35         if (count($member_data) > $limit) {
    36             $this->handleError("一度に登録できるのは{$limit}件までです");
     28        if (empty($member_file) || $member_file['error'] === UPLOAD_ERR_NO_FILE) {
     29            $this->handleError('ファイルを指定してください');
    3730        }
    38         // --- エラーチェック1 ここまで
    3931
     32        $filename_parts = explode('.', $member_file['name']);
     33        if (array_pop($filename_parts) != 'csv') {
     34            $this->handleError('拡張子は.csvにしてください');
     35        }
     36
     37        $member_data = file($member_file['tmp_name']);
     38        $member_data_count = count($member_data);
     39        if ($member_data_count > $limit) {
     40            $this->handleError("ファイルの行数は{$limit}行以内にしてください");
     41        }
    4042
    4143        foreach ($member_data as $key => $value) {
    42             $data = explode(",", $value);
     44            $columns = explode(',', trim($value));
     45            $lnum = $key + 1;  // 行番号
    4346
    44             //改行コードを除去
    45             $data = str_replace("\r\n", "\n", $data);
    46             $data = str_replace("\r", "\n", $data);
    47             $data = str_replace("\n", "", $data);
    48 
    49             $nickname     = $data[0];
    50             $mail_address = $data[1];
    51             $password     = $data[2];
    52 
    53             // --- エラーチェック2 ここから
    54 
    55             //入力項目が多い
    56             if (count($data) > $column_num) {
    57                 $this->handleError(($key+1)."行目:項目数が多すぎます");
     47            if (OPENPNE_AUTH_MODE == 'pneid') {
     48                list($login_id, $nickname, $mail_address, $password) = $columns;
     49            } else {
     50                $login_id = null;
     51                list($nickname, $mail_address, $password) = $columns;
    5852            }
    5953
    60             //空の項目が存在する
    61             if (!$data[0] || !$data[1] || !$data[2]) {
    62                 $this->handleError(($key+1)."行目:空の項目が存在します");
     54            if (count($columns) != $column_num) {
     55                $this->handleError("{$lnum}行目:項目は{$column_num}つにしてください");
    6356            }
    6457
    65 
    66 
    67             //ニックネームの形式チェック
    68             if (strlen($nickname) > 40) {
    69                 $this->handleError("ニックネームは40文字以内で入力してください");
     58            if ($nickname === '' || $mail_address === '' || $password === '' || $login_id === '') {
     59                $this->handleError("{$lnum}行目:空の項目が存在します");
    7060            }
    7161
    72             //メールアドレスの形式チェック
    73 
    74             // メールアドレスとして正しくない
    75             if (!db_common_is_mailaddress($mail_address)) {
    76                 $this->handleError(($key+1)."行目:メールアドレス [".$mail_address."] はメールアドレスとして正しくありません");
    77             }
    78             //対象のメールアドレスが、登録されてるか否か
    79             if (db_member_is_sns_join4mail_address($mail_address)) {
    80                 $this->handleError(($key+1)."行目:そのメールアドレス [".$mail_address."] は既に登録済みです");
     62            if (strlen($nickname) > 40) {
     63                $this->handleError("{$lnum}行目:ニックネームは40文字以内で入力してください");
    8164            }
    8265
    83             //対象のメールアドレスが、ドメイン制限に合致しているかどうか
    84             if (!db_member_is_limit_domain4mail_address($mail_address)) {
    85                 $this->handleError(($key+1)."行目:そのメールアドレス [".$mail_address."] では登録できません");
     66            if (!db_common_is_mailaddress($mail_address)) {
     67                $this->handleError("{$lnum}行目:メールアドレス [{$mail_address}] はメールアドレスとして正しくありません");
    8668            }
    8769
    88             //パスワードの形式チェック
    89             if (!ctype_alnum($password) ||
    90                 strlen($password) < 6 ||
    91                 strlen($password) > 12) {
    92                 $this->handleError(($key+1)."行目:パスワードは6~12文字の半角英数で入力してください");
     70            if (db_member_is_sns_join4mail_address($mail_address)) {
     71                $this->handleError("{$lnum}行目:メールアドレス [{$mail_address}] は既に登録済みです");
    9372            }
    9473
    95             // --- エラーチェック2 ここまで
     74            // ドメイン制限
     75            if (!db_member_is_limit_domain4mail_address($mail_address)) {
     76                $this->handleError("{$lnum}行目:メールアドレス [{$mail_address}] は登録できません");
     77            }
    9678
    97             // --- データのインポート ここから
     79            if (!preg_match('/^[a-z0-9]{6,12}$/i', $password)) {
     80                $this->handleError("{$lnum}行目:パスワードは6~12文字の半角英数で入力してください");
     81            }
    9882
    99             // 携帯メールアドレスか否か
     83            // ログインIDを使用する場合
     84            if (OPENPNE_AUTH_MODE == 'pneid') {
     85                if (!preg_match('/^[a-z0-9][a-z0-9\-_]+[a-z0-9]$/i', $login_id)) {
     86                    $this->handleError("{$lnum}行目:ログインIDは4~30文字の半角英数で入力してください");
     87                }
     88
     89                if (db_member_c_member_id4username($login_id)) {
     90                    $this->handleError("{$lnum}行目:ログインID[{$login_id}]は既に登録済みです");
     91                }
     92               
     93            }
     94
     95            // メールアドレスが携帯メールアドレスのドメインの場合は、
     96            // 携帯メールアドレスとして登録する
    10097            if (is_ktai_mail_address($mail_address)) {
    10198                $ktai_address = $mail_address;
     
    106103            }
    107104
    108             $c_member['nickname'] = $nickname;
    109             $c_member['birth_year'] = 0;
    110             $c_member['birth_month'] = 0;
    111             $c_member['birth_day'] = 0;
    112             $c_member['c_password_query_id'] = 0;
    113             $c_member['c_member_id_invite'] = 1;
    114             $c_member['is_receive_mail'] = 1;
    115             $c_member['is_receive_ktai_mail'] = 1;
    116             $c_member['is_receive_daily_news'] = 1;
    117             $c_member['public_flag_birth_year'] = 'public';
     105            $c_member = array(
     106                'nickname' => $nickname,
     107                'birth_year' => 0,
     108                'birth_month' => 0,
     109                'birth_day' => 0,
     110                'c_password_query_id' => 0,
     111                'c_member_id_invite' => 1,
     112                'is_receive_mail' => 1,
     113                'is_receive_ktai_mail' => 1,
     114                'is_receive_daily_news' => 1,
     115                'public_flag_birth_year' => 'public',
     116            );
     117
     118            if (OPENPNE_AUTH_MODE == 'pneid') {
     119                $c_member['login_id'] = $login_id;
     120            }
     121
    118122            $c_member_secure = array(
    119123                'password' => $password,
     
    124128
    125129            $u = util_regist_c_member($c_member, $c_member_secure);
    126             // --- データのインポート ここまで
    127 
    128130        }
    129131
    130         admin_client_redirect('import_c_member', count($member_data)." 件のインポートが完了しました");
     132        admin_client_redirect('import_c_member', "{$member_data_count}件のインポートが完了しました");
    131133    }
    132134}
  • OpenPNE/branches/work/ebihara/prj_id_login/webapp/modules/admin/templates/import_c_member.tpl

    r2807 r5560  
    2626文字コード:UTF-8<br>
    2727ファイル形式:csv</p>
    28 <p>項目の順序「ニックネーム」「登録メールアドレス」「パスワード」</p>
     28<p>項目の順序({if $smarty.const.OPENPNE_AUTH_MODE == 'pneid'})「ログインID」({/if})「ニックネーム」「登録メールアドレス」「パスワード」</p>
    2929<p><input type="file" name="member_file" /></p>
    3030<p class="textBtn"><input type="submit" class="submit" name="member_file_submit" value="登録" /></p>
Note: See TracChangeset for help on using the changeset viewer.