1 | <?php |
---|
2 | /* |
---|
3 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. |
---|
4 | * |
---|
5 | * http://www.lockon.co.jp/ |
---|
6 | */ |
---|
7 | |
---|
8 | // {{{ requires |
---|
9 | require_once(CLASS_PATH . "pages/LC_Page.php"); |
---|
10 | |
---|
11 | /** CSV ファイルの最大行数 */ |
---|
12 | define("ZIP_CSV_LINE_MAX", 8192); |
---|
13 | |
---|
14 | /** 画像の表示個数 */ |
---|
15 | define("IMAGE_MAX", 680); |
---|
16 | |
---|
17 | /** 郵便番号CSV ファイルのパス */ |
---|
18 | define("ZIP_CSV_FILE_PATH", DATA_PATH . "downloads/KEN_ALL.CSV"); |
---|
19 | |
---|
20 | /** |
---|
21 | * 郵便番号DB登録 のページクラス. |
---|
22 | * |
---|
23 | * @package Page |
---|
24 | * @author LOCKON CO.,LTD. |
---|
25 | * @version $Id$ |
---|
26 | */ |
---|
27 | class LC_Page_Admin_Basis_ZipInstall extends LC_Page { |
---|
28 | |
---|
29 | // }}} |
---|
30 | // {{{ functions |
---|
31 | |
---|
32 | /** |
---|
33 | * Page を初期化する. |
---|
34 | * |
---|
35 | * @return void |
---|
36 | */ |
---|
37 | function init() { |
---|
38 | parent::init(); |
---|
39 | } |
---|
40 | |
---|
41 | /** |
---|
42 | * Page のプロセス. |
---|
43 | * |
---|
44 | * @return void |
---|
45 | */ |
---|
46 | function process() { |
---|
47 | $objQuery = new SC_Query(); |
---|
48 | $objSess = new SC_Session(); |
---|
49 | |
---|
50 | // 認証可否の判定 |
---|
51 | SC_Utils_Ex::sfIsSuccess($objSess); |
---|
52 | |
---|
53 | $fp = fopen(ZIP_CSV_FILE_PATH, "r"); |
---|
54 | |
---|
55 | // 一部のIEは256バイト以上受け取ってから表示を開始する。 |
---|
56 | for($i = 0; $i < 256; $i++) { |
---|
57 | print(" "); |
---|
58 | } |
---|
59 | print("\n"); |
---|
60 | $this->myFlush(); |
---|
61 | |
---|
62 | if(!$fp) { |
---|
63 | SC_Utils_Ex::sfErrorHeader(">> " . ZIP_CSV_FILE_PATH . "の取得に失敗しました。"); |
---|
64 | } else { |
---|
65 | print("<img src='".URL_DIR."img/install/main_w.jpg'><br>"); |
---|
66 | $this->myFlush(); |
---|
67 | |
---|
68 | // CSVの件数を数える |
---|
69 | $line = 0; |
---|
70 | while(!feof($fp)) { |
---|
71 | fgets($fp, ZIP_CSV_LINE_MAX); |
---|
72 | $line++; |
---|
73 | } |
---|
74 | |
---|
75 | print("<img src='".URL_DIR."img/install/space_w.gif'>"); |
---|
76 | $this->myFlush(); |
---|
77 | |
---|
78 | // ファイルポインタを戻す |
---|
79 | fseek($fp, 0); |
---|
80 | |
---|
81 | // 画像を一個表示する件数を求める。 |
---|
82 | $disp_line = intval($line / IMAGE_MAX); |
---|
83 | |
---|
84 | // 既に書き込まれたデータを数える |
---|
85 | $end_cnt = $objQuery->count("mtb_zip"); |
---|
86 | $cnt = 1; |
---|
87 | $img_cnt = 0; |
---|
88 | while (!feof($fp)) { |
---|
89 | $arrCSV = fgetcsv($fp, ZIP_CSV_LINE_MAX); |
---|
90 | |
---|
91 | // すでに書き込まれたデータを飛ばす。 |
---|
92 | if($cnt > $end_cnt) { |
---|
93 | $sqlval['code'] = $arrCSV[0]; |
---|
94 | $sqlval['old_zipcode'] = $arrCSV[1]; |
---|
95 | $sqlval['zipcode'] = $arrCSV[2]; |
---|
96 | $sqlval['state_kana'] = $arrCSV[3]; |
---|
97 | $sqlval['city_kana'] = $arrCSV[4]; |
---|
98 | $sqlval['town_kana'] = $arrCSV[5]; |
---|
99 | $sqlval['state'] = $arrCSV[6]; |
---|
100 | $sqlval['city'] = $arrCSV[7]; |
---|
101 | $sqlval['town'] = $arrCSV[8]; |
---|
102 | $sqlval['flg1'] = $arrCSV[9]; |
---|
103 | $sqlval['flg2'] = $arrCSV[10]; |
---|
104 | $sqlval['flg3'] = $arrCSV[11]; |
---|
105 | $sqlval['flg4'] = $arrCSV[12]; |
---|
106 | $sqlval['flg5'] = $arrCSV[13]; |
---|
107 | $sqlval['flg6'] = $arrCSV[14]; |
---|
108 | $objQuery->insert("mtb_zip", $sqlval); |
---|
109 | } |
---|
110 | |
---|
111 | $cnt++; |
---|
112 | // $disp_line件ごとに進捗表示する |
---|
113 | if($cnt % $disp_line == 0 && $img_cnt < IMAGE_MAX) { |
---|
114 | print("<img src='".URL_DIR."img/install/graph_1_w.gif'>"); |
---|
115 | $this->myFlush(); |
---|
116 | $img_cnt++; |
---|
117 | } |
---|
118 | } |
---|
119 | fclose($fp); |
---|
120 | |
---|
121 | print("<img src='".URL_DIR."img/install/space_w.gif'><br>\n"); |
---|
122 | print("<table width='700' height='50' border='0' cellpadding='0' cellspacing='0' bgcolor='#494E5F'>\n"); |
---|
123 | print("<tr>\n"); |
---|
124 | print("<td align='center'><a href='javascript:window.close()'><img src='".URL_DIR."img/install/close.gif' alt='CLOSE' width='85' height='22' border='0' /></a></td>\n"); |
---|
125 | print("</tr>\n"); |
---|
126 | print("</table>\n"); |
---|
127 | } |
---|
128 | } |
---|
129 | |
---|
130 | /** |
---|
131 | * デストラクタ. |
---|
132 | * |
---|
133 | * @return void |
---|
134 | */ |
---|
135 | function destroy() { |
---|
136 | parent::destroy(); |
---|
137 | } |
---|
138 | |
---|
139 | /** |
---|
140 | * 出力バッファをフラッシュし, バッファリングを開始する. |
---|
141 | * |
---|
142 | * @return void |
---|
143 | */ |
---|
144 | function myFlush() { |
---|
145 | flush(); |
---|
146 | ob_end_flush(); |
---|
147 | ob_start(); |
---|
148 | } |
---|
149 | } |
---|
150 | ?> |
---|