source: branches/feature-module-update/data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php @ 15335

Revision 15335, 4.3 KB checked in by nanasess, 13 years ago (diff)

クラス化対応

  • Property svn:keywords set to Id Revision Date
Line 
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
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/** CSV ファイルの最大行数 */
12define("ZIP_CSV_LINE_MAX", 8192);
13
14/** 画像の表示個数 */
15define("IMAGE_MAX", 680);
16
17/** 郵便番号CSV ファイルのパス */
18define("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 */
27class 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?>
Note: See TracBrowser for help on using the repository browser.