示例#1
0
 function execute($requests)
 {
     if (!OPENPNE_USE_POINT_RANK || !OPENPNE_IS_POINT_ADMIN && $requests['target_c_member_id'] == 1) {
         admin_client_redirect('top', '指定されたページにはアクセスできません');
     }
     $target_c_member_id = $requests['target_c_member_id'];
     $update_point = $requests['point'];
     $c_profile = db_member_c_profile4name('PNE_POINT');
     $c_member_profile_list['PNE_POINT'] = array('c_profile_id' => $c_profile['c_profile_id'], 'c_profile_option_id' => 0, 'value' => intval($update_point), 'public_flag' => $c_profile['public_flag_default']);
     db_member_update_c_member_profile($target_c_member_id, $c_member_profile_list);
     admin_client_redirect('list_c_member', "メンバーのポイントを強制変更しました");
 }
示例#2
0
 function execute($requests)
 {
     $member_file = $_FILES['member_file'];
     $limit = 1000;
     // 行数制限
     if (empty($member_file) || $member_file['error'] === UPLOAD_ERR_NO_FILE) {
         $this->handleError('ファイルを指定してください');
     }
     $filename_parts = explode('.', $member_file['name']);
     if (array_pop($filename_parts) != 'csv') {
         $this->handleError('拡張子は.csvにしてください');
     }
     $handle = fopen($member_file['tmp_name'], 'r');
     if (($data = fgetcsv($handle, 4096)) === false) {
         $this->handleError('ファイルの内容が空です');
     }
     $required_list = array('nickname', 'mail_address', 'password');
     if (OPENPNE_AUTH_MODE == 'pneid') {
         $required_list[] = 'login_id';
     }
     foreach ($required_list as $required) {
         if (!in_array($required, $data)) {
             $this->handleError('1行目: ' . $required . 'は必須項目です');
         }
     }
     $title = array();
     foreach ($data as $key => $value) {
         $matches = array();
         if (preg_match('/^profile\\[(.*)\\]$/', $value, $matches)) {
             $is_profile = true;
             $name = $matches[1];
             $c_profile = db_member_c_profile4name($name);
         } else {
             $is_profile = false;
             $name = $value;
             $c_profile = null;
         }
         $title[$key] = array('is_profile' => $is_profile, 'name' => $name, 'c_profile' => $c_profile);
     }
     $row = 1;
     // 1行目がタイトル行
     $count = 0;
     // メンバー登録に成功した数
     while (($data = fgetcsv($handle, 4096)) !== false && $row <= $limit) {
         $row++;
         $data_member = array();
         $data_profile = array();
         foreach ($data as $key => $value) {
             if (empty($title[$key])) {
                 continue;
             }
             $name = $title[$key]['name'];
             if ($title[$key]['is_profile']) {
                 if ($title[$key]['c_profile']['form_type'] === 'checkbox') {
                     $data_profile[$name] = explode(',', $value);
                 } else {
                     $data_profile[$name] = $value;
                 }
             } else {
                 $data_member[$name] = $value;
             }
         }
         if (is_ktai_mail_address($data_member['mail_address'])) {
             $data_member['mail_address'] = str_replace('"', '', $data_member['mail_address']);
         }
         // validate
         $errors = array();
         $validator = new OpenPNE_Validator();
         $validator->addRequests($data_member);
         $validator->addRules($this->_getValidateRules());
         if (!$validator->validate()) {
             $errors = array_merge($errors, $validator->getErrors());
         }
         $member = $validator->getParams();
         // mail_address
         if (!db_common_is_mailaddress($member['mail_address'])) {
             $errors[] = "メールアドレス [{$member['mail_address']}] はメールアドレスとして正しくありません";
         } elseif (db_member_is_sns_join4mail_address($member['mail_address'])) {
             $errors[] = "メールアドレス [{$member['mail_address']}] は既に登録済みです";
         } elseif (!db_member_is_limit_domain4mail_address($member['mail_address'])) {
             $errors[] = "メールアドレス [{$member['mail_address']}] は登録できません";
         }
         // login_id
         if (OPENPNE_AUTH_MODE == 'pneid') {
             if (db_member_c_member_id4username($member['login_id'])) {
                 $errors[] = "ログインID[{$member['login_id']}]は既に登録済みです";
             }
         }
         // 生年月日のチェック
         if ($member['birth_year'] || $member['birth_month'] || $member['birth_day']) {
             if (!t_checkdate($member['birth_month'], $member['birth_day'], $member['birth_year'])) {
                 $errors[] = '生年月日を正しく入力してください';
             } elseif (t_isFutureDate($member['birth_day'], $member['birth_month'], $member['birth_year'])) {
                 $errors[] = '生年月日を未来に設定することはできません';
             }
         }
         if ($errors) {
             $this->handleError("{$row}行目:" . array_shift($errors));
         }
         // profile
         $c_member_profile = db_member_check_profile($data_profile, array());
         // register
         // メールアドレスが携帯メールアドレスのドメインの場合は、
         // 携帯メールアドレスとして登録する
         if (is_ktai_mail_address($member['mail_address'])) {
             $ktai_address = $member['mail_address'];
             $pc_address = '';
         } else {
             $ktai_address = '';
             $pc_address = $member['mail_address'];
         }
         $c_member = array('nickname' => $member['nickname'], 'birth_year' => $member['birth_year'], 'birth_month' => $member['birth_month'], 'birth_day' => $member['birth_day'], 'c_password_query_id' => 0, 'c_member_id_invite' => 1, 'is_receive_mail' => 1, 'is_receive_ktai_mail' => 1, 'is_receive_daily_news' => 1, 'public_flag_birth_year' => $member['public_flag_birth_year'], 'public_flag_birth_month_day' => $member['public_flag_birth_month_day']);
         if (OPENPNE_AUTH_MODE == 'pneid') {
             $c_member['login_id'] = $member['login_id'];
         }
         $c_member_secure = array('password' => $member['password'], 'pc_address' => $pc_address, 'ktai_address' => $ktai_address, 'regist_address' => $member['mail_address']);
         if (!util_regist_c_member($c_member, $c_member_secure, $c_member_profile)) {
             $this->handleError("{$row}行目:メンバー登録に失敗しました");
         }
         $count++;
     }
     fclose($handle);
     admin_client_redirect('import_c_member', "{$count}件のインポートが完了しました");
 }