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

source: OpenPNE/branches/2.6.x/webapp/modules/admin/do/csv_member.php @ 2800

Last change on this file since 2800 was 2800, checked in by takanashi, 14 years ago

#688 CSVダウンロード」の「メンバーIDを指定してダウンロード」にて、0~1間の小数点を含む数字を入力すると、全メンバーのデータがダウンロードされるバグの対処

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id Date Author Rev URL
File size: 5.2 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
7class admin_do_csv_member extends OpenPNE_Action
8{
9    function handleError($errors)
10    {
11        admin_client_redirect('csv_download', array_shift($errors));
12    }
13
14    function execute($requests)
15    {
16        $start_id = $requests['start_id'];
17        $end_id = $requests['end_id'];
18        $allflag = $requests['allflag'];
19
20        if (!is_int($start_id) || !is_int($end_id) || !$allflag && ($start_id < 1 || $end_id < 1)) {
21            $errors[] = '範囲指定のメンバーIDは1以上の整数値で入力してください';
22        }
23        if ($errors) {
24            $this->handleError($errors);
25        }
26
27        $member_key_string = $this->get_key_list();
28        $c_member_list = $this->db_get_c_member_list($start_id,$end_id);
29        $member_csv_data = $this->create_csv_data($member_key_string,$c_member_list);
30       
31        header("Content-Type: application/octet-stream");
32        header("Content-Disposition: attachment; filename=member.csv");
33        echo $member_csv_data;
34        exit;
35    }
36   
37    /**
38     * メンバーリスト取得
39     */
40    function db_get_c_member_list($start_id,$end_id)
41    {
42        $params=array();
43        $sql = 'SELECT c_member_id FROM c_member ';
44        $sql .= ' WHERE 1 ' ;
45        if($start_id!=""){
46            $sql .= ' AND c_member_id >= ? ';
47            $params[] = $start_id;
48        }
49        if($end_id!=""){
50            $sql .= ' AND c_member_id <= ? ';
51            $params[] = $end_id;
52        }
53        $sql .= ' ORDER BY c_member_id' ;
54        $ids = db_get_col($sql,$params);
55   
56        $c_member_list = array();
57        foreach ($ids as $id) {
58            $tmp_c_member = array();
59            $_tmp_c_member = db_member_c_member4c_member_id($id, false, false, 'private');
60           
61            $tmp_c_member['c_member_id'] = $_tmp_c_member['c_member_id'];
62            $tmp_c_member['nickname'] = $_tmp_c_member['nickname'];
63            $tmp_c_member['access_date'] = $_tmp_c_member['access_date'];
64            $tmp_c_member['r_date'] = $_tmp_c_member['r_date'];
65            $tmp_c_member['c_member_id_invite'] = $_tmp_c_member['c_member_id_invite'];
66            $tmp_c_member['image_filename_1'] = $_tmp_c_member['image_filename_1'];
67            $tmp_c_member['image_filename_2'] = $_tmp_c_member['image_filename_2'];
68            $tmp_c_member['image_filename_3'] = $_tmp_c_member['image_filename_3'];
69            $tmp_c_member['birth_year'] = $_tmp_c_member['birth_year'];
70            $tmp_c_member['birth_month'] = $_tmp_c_member['birth_month'];
71            $tmp_c_member['birth_day'] = $_tmp_c_member['birth_day'];
72           
73            $tmp_profile_list = db_member_c_member_profile_list4c_member_id($id, 'private');
74            $c_profile_list = db_member_c_profile_list4null();
75            foreach($c_profile_list as $key=>$tmp_profile ){
76                if (is_array($tmp_profile_list[$tmp_profile['name']]['value'])){
77                    foreach ($tmp_profile_list[$tmp_profile['name']]['value'] as $itm){
78                        $tmp_c_member[$tmp_profile['name']] .= $itm . " ";
79                    }
80                } else {
81                    $tmp_c_member[$tmp_profile['name']] = $tmp_profile_list[$tmp_profile['name']]['value'];
82                }
83            }           
84            $tmp_secure = db_member_c_member_secure4c_member_id($id);
85            $tmp_c_member['pc_address'] = $tmp_secure['pc_address'];
86            $tmp_c_member['ktai_address'] = $tmp_secure['ktai_address'];
87            $tmp_c_member['regist_address'] = $tmp_secure['regist_address'];
88           
89            $c_member_list[]=$tmp_c_member;
90        }
91   
92        return $c_member_list;
93    }
94   
95    function get_key_list(){
96        $c_profile_list = db_member_c_profile_list4null();
97       
98        $ley_list[]="メンバーID";
99        $ley_list[]="ニックネーム";
100        $ley_list[]="最終ログイン";
101        $ley_list[]="登録日";
102        $ley_list[]="招待者ID";
103        $ley_list[]="画像1";
104        $ley_list[]="画像2";
105        $ley_list[]="画像3";
106        $ley_list[]="誕生年";
107        $ley_list[]="誕生月";
108        $ley_list[]="誕生日";
109        foreach($c_profile_list as $profile){
110            $ley_list[]= $profile['caption'];
111        }
112        $ley_list[]="PCアドレス";
113        $ley_list[]="携帯アドレス";
114        $ley_list[]="登録時アドレス";
115       
116        return $ley_list;
117    }
118   
119    function create_csv_data($key_string,$value_list){
120        $csv = "";
121        foreach($key_string as $each_key){
122            if($csv != "")$csv .= ",";
123            $csv .= '"'.mb_convert_encoding($each_key ,"SJIS", "auto").'"';
124        }
125        $csv .= "\n";
126       
127        foreach($value_list as $key => $value){
128            $temp = "";
129            foreach($value as $key2 => $value2){
130                $value2 = mb_convert_encoding($value2 ,"SJIS", "auto");
131                if ($value2 != null) $value2 = str_replace('"', '""', $value2);//クォート
132                if ($value2 != null) $value2 = str_replace("\r","",$value2);//改行コードを変換
133                $temp .= "\"".$value2."\",";
134            }
135            $csv .= $temp."\n";
136        }
137        return $csv;
138    }
139}
140
141?>
Note: See TracBrowser for help on using the repository browser.