Source for file LC_Page_Admin_Basis_ZipInstall.php

Documentation is available at LC_Page_Admin_Basis_ZipInstall.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once(CLASS_PATH "pages/LC_Page.php");
  26.  
  27. /** CSV ファイルの最大行数 */
  28. define("ZIP_CSV_LINE_MAX"8192);
  29.  
  30. /** 画像の表示数量 */
  31. define("IMAGE_MAX"680);
  32.  
  33. /** 郵便番号CSV ファイルのパス */
  34. define("ZIP_CSV_FILE_PATH"DATA_PATH "downloads/KEN_ALL.CSV");
  35.  
  36. /**
  37.  * 郵便番号DB登録 のページクラス.
  38.  *
  39.  * @package Page
  40.  * @author LOCKON CO.,LTD.
  41.  * @version $Id:LC_Page_Admin_Basis_ZipInstall.php 16741 2007-11-08 00:43:24Z adachi $
  42.  */
  43.  
  44.     // }}}
  45.     // {{{ functions
  46.  
  47.     /**
  48.      * Page を初期化する.
  49.      *
  50.      * @return void 
  51.      */
  52.     function init({
  53.         parent::init();
  54.     }
  55.  
  56.     /**
  57.      * Page のプロセス.
  58.      *
  59.      * @return void 
  60.      */
  61.     function process({
  62.         $objQuery new SC_Query();
  63.         $objSess new SC_Session();
  64.  
  65.         // 認証可否の判定
  66.         SC_Utils_Ex::sfIsSuccess($objSess);
  67.  
  68.         $fp fopen(ZIP_CSV_FILE_PATH"r");
  69.         $img_path USER_URL "packages/" TEMPLATE_NAME "/img/";
  70.  
  71.         echo ('<html>');
  72.         echo ('<body bgcolor="#494E5F">');
  73.         // 一部のIEは256バイト以上受け取ってから表示を開始する。
  74.         SC_Utils_Ex::sfFlush(true);
  75.  
  76. #('http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh')
  77.         if(!$fp{
  78.             SC_Utils_Ex::sfErrorHeader(">> " ZIP_CSV_FILE_PATH "の取得に失敗しました。");
  79.         else {
  80.             print("<img src='"$img_path "install/main_w.jpg'><br>");
  81.             SC_Utils_Ex::sfFlush();
  82.  
  83.             // CSVの件数を数える
  84.             $line 0;
  85.             while(!feof($fp)) {
  86.                 fgets($fpZIP_CSV_LINE_MAX);
  87.                 $line++;
  88.             }
  89.  
  90.             print("<img src='"$img_path ."install/space_w.gif'>");
  91.             SC_Utils_Ex::sfFlush();
  92.  
  93.             // ファイルポインタを戻す
  94.             fseek($fp0);
  95.  
  96.             // 画像を一個表示する件数を求める。
  97.             $disp_line intval($line IMAGE_MAX);
  98.  
  99.             $objQuery->begin();
  100.             $objQuery->delete('mtb_zip');
  101.             $cnt 1;
  102.             $img_cnt 0;
  103.             $safe_mode = (boolean)ini_get('safe_mode');
  104.             $max_execution_time
  105.                 = is_numeric(ini_get('max_execution_time'))
  106.                 ? intval(ini_get('max_execution_time'))
  107.                 : intval(get_cfg_var('max_execution_time'))
  108.             ;
  109.             while (!feof($fp)) {
  110.                 $arrCSV fgetcsv($fpZIP_CSV_LINE_MAX);
  111.                 // $sqlval['code'] = $arrCSV[0];
  112.                 // $sqlval['old_zipcode'] = $arrCSV[1];
  113.                 $sqlval['zipcode'$arrCSV[2];
  114.                 // $sqlval['state_kana'] = $arrCSV[3];
  115.                 // $sqlval['city_kana'] = $arrCSV[4];
  116.                 // $sqlval['town_kana'] = $arrCSV[5];
  117.                 $sqlval['state'mb_convert_encoding($arrCSV[6]CHAR_CODE'sjis-win');
  118.                 $sqlval['city'mb_convert_encoding($arrCSV[7]CHAR_CODE'sjis-win');
  119.                 $sqlval['town'mb_convert_encoding($arrCSV[8]CHAR_CODE'sjis-win');
  120.                 // $sqlval['flg1'] = $arrCSV[9];
  121.                 // $sqlval['flg2'] = $arrCSV[10];
  122.                 // $sqlval['flg3'] = $arrCSV[11];
  123.                 // $sqlval['flg4'] = $arrCSV[12];
  124.                 // $sqlval['flg5'] = $arrCSV[13];
  125.                 // $sqlval['flg6'] = $arrCSV[14];
  126.                 $objQuery->insert("mtb_zip"$sqlval);
  127.                 $cnt++;
  128.                 // $disp_line件ごとに進捗表示する
  129.                 if($cnt $disp_line == && $img_cnt IMAGE_MAX{
  130.                     print("<img src='"$img_path ."install/graph_1_w.gif'>");
  131.                     SC_Utils_Ex::sfFlush();
  132.                     $img_cnt++;
  133.                 }
  134.                 // 暴走スレッドが残留する確率を軽減したタイムアウト防止のロジック
  135.                 // TODO 動作が安定していれば、SC_Utils 辺りに移動したい。
  136.                 if (!$safe_mode{
  137.                     // タイムアウトをリセット
  138.                     set_time_limit($max_execution_time);
  139.                 }
  140.             }
  141.             fclose($fp);
  142.             $objQuery->commit();
  143.  
  144.             print("<img src='"$img_path ."install/space_w.gif'><br>\n");
  145.             print("<table width='700' height='50' border='0' cellpadding='0' cellspacing='0'>\n");
  146.             print("<tr>\n");
  147.             print("<td align='center'><a href='javascript:window.close()'><img src='"$img_path ."install/close.gif' alt='CLOSE' width='85' height='22' border='0' /></a></td>\n");
  148.             print("</tr>\n");
  149.             print("</table>\n");
  150.         }
  151.     }
  152.  
  153.     /**
  154.      * デストラクタ.
  155.      *
  156.      * @return void 
  157.      */
  158.     function destroy({
  159.         parent::destroy();
  160.     }
  161. }
  162. ?>

Documentation generated on Tue, 28 Apr 2009 18:10:49 +0900 by phpDocumentor 1.4.2