Source for file LC_Page_InputZip.php

Documentation is available at LC_Page_InputZip.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. /**
  28.  * 郵便番号入力 のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_InputZip.php 17700 2008-11-07 23:29:40Z takegami $
  33.  */
  34. class LC_Page_InputZip extends LC_Page {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_message "住所を検索しています。";
  47.     }
  48.  
  49.     /**
  50.      * Page のプロセス.
  51.      *
  52.      * @return void 
  53.      */
  54.     function process({
  55.         $conn new SC_DBconn(ZIP_DSN);
  56.         $objView new SC_SiteView(false);
  57.  
  58.         // 入力エラーチェック
  59.         $arrErr $this->fnErrorCheck($_GET);
  60.         // 入力エラーの場合は終了
  61.         if(count($arrErr0{
  62.             $this->tpl_start "window.close();";
  63.             SC_Utils::sfDispSiteError(CUSTOMER_ERROR);
  64.         }
  65.         
  66.         // 郵便番号検索文作成
  67.         $zipcode $_GET['zip1'].$_GET['zip2'];
  68.         $zipcode mb_convert_kana($zipcode ,"n");
  69.         $sqlse "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
  70.  
  71.         $data_list $conn->getAll($sqlsearray($zipcode));
  72.         if (empty($data_list)) $data_list array();
  73.  
  74.         $masterData new SC_DB_MasterData_Ex();
  75.         $arrPref $masterData->getMasterData("mtb_pref"array("pref_id""pref_name""rank"));
  76.         // インデックスと値を反転させる。
  77.         $arrREV_PREF array_flip($arrPref);
  78.  
  79.         if (!empty($data_list)) {
  80.             $this->tpl_state = isset($arrREV_PREF[$data_list[0]['state']])
  81.                 ? $arrREV_PREF[$data_list[0]['state']] "";
  82.             $this->tpl_city = isset($data_list[0]['city']$data_list[0]['city'"";
  83.             $town =  isset($data_list[0]['town']$data_list[0]['town'"";
  84.         else {
  85.             $town "";
  86.         }
  87.  
  88.         /*
  89.          総務省からダウンロードしたデータをそのままインポートすると
  90.          以下のような文字列が入っているので  対策する。
  91.          ・(1~19丁目)
  92.          ・以下に掲載がない場合
  93.         */
  94.         $town ereg_replace("(.*)$","",$town);
  95.         $town ereg_replace("以下に掲載がない場合","",$town);
  96.         $this->tpl_town $town;
  97.  
  98.         // 郵便番号が発見された場合
  99.         if(!empty($data_list)) {
  100.             $func "fnPutAddress('" $_GET['input1'"','" $_GET['input2']"');";
  101.             $this->tpl_onload = "$func";
  102.             $this->tpl_start "window.close();";
  103.         else {
  104.             $this->tpl_message "該当する住所が見つかりませんでした。";
  105.         }
  106.  
  107.         /* ページの表示 */
  108.         $objView->assignobj($this);
  109.         $objView->display("input_zip.tpl");
  110.     }
  111.  
  112.     /**
  113.      * デストラクタ.
  114.      *
  115.      * @return void 
  116.      */
  117.     function destroy({
  118.         parent::destroy();
  119.     }
  120.  
  121.  
  122.     /* 入力エラーのチェック */
  123.     function fnErrorCheck({
  124.         // エラーメッセージ配列の初期化
  125.         $objErr new SC_CheckError($array);
  126.  
  127.         // 郵便番号
  128.         $objErr->doFuncarray("郵便番号1",'zip1',ZIP01_LEN ,array"NUM_COUNT_CHECK" ) );
  129.         $objErr->doFuncarray("郵便番号2",'zip2',ZIP02_LEN ,array"NUM_COUNT_CHECK" ) );
  130.         // 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
  131.         if (!$this->lfInputNameCheck($array['input1'])) {
  132.             $objErr->arrErr['input1'"※ 入力形式が不正です。<br />";
  133.         }
  134.         if (!$this->lfInputNameCheck($array['input2'])) {
  135.             $objErr->arrErr['input2'"※ 入力形式が不正です。<br />";
  136.         }
  137.  
  138.         return $objErr->arrErr;
  139.     }
  140.     
  141.     /**
  142.  * エラーチェック
  143.  *
  144.  * @param string $value 
  145.  * @return エラーなし:true エラー:false
  146.  */
  147.     function lfInputNameCheck($value{
  148.         // 半角英数字と_(アンダーバー)以外の文字を使用していたらエラー
  149.         if(strlen($value&& !ereg("^[a-zA-Z0-9_]+$"$value)) {
  150.             return false;
  151.         }
  152.         
  153.         return true;
  154.     }
  155.  
  156. }
  157. ?>

Documentation generated on Tue, 28 Apr 2009 18:12:20 +0900 by phpDocumentor 1.4.2