Ignore:
Timestamp:
2010/03/11 10:35:11 (14 years ago)
Author:
kajiwara
Message:

正式版にナイトリービルド版をマージしてみるテスト

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tmp/version-2_5-test/data/class/util/SC_Utils.php

    r18562 r18609  
    7474    } 
    7575 
    76     /** 
    77      * インストール初期処理 
    78      */ 
    79     function sfInitInstall() 
    80     { 
    81         // インストールが完了していない時 
    82         if( !defined('ECCUBE_INSTALL') ) { 
    83             if( !ereg('/install/', $_SERVER['PHP_SELF']) ) { 
    84                 // インストールページに遷移させる 
    85  
    86                 $script_filename = $_SERVER['SCRIPT_FILENAME']; 
    87                 list($real_root, $tmp) = explode('/html/', $script_filename); 
    88                 $real_root = $real_root . '/html/'; 
    89                 $script_name = $_SERVER['SCRIPT_NAME']; 
    90                 $url_dir = rtrim($script_name, basename($script_name)); 
    91  
    92                 if ($dh = opendir($real_root)) { 
    93                     $arrDir = array(); 
    94                     while ($entry = readdir($dh)) { 
    95                         if (is_dir($real_root.$entry) && !in_array($entry, array('.', '..', '.svn', 'install'))) { 
    96                             $url_dir = rtrim($url_dir, $entry.'/'); 
    97                         } 
    98                     } 
    99                     closedir($dh); 
    100                 } 
    101  
    102                 $location = $url_dir . '/install/'; 
    103                 header('Location: ' . $location); 
    104                 exit; 
    105             } 
    106         } else { 
    107             $path = HTML_PATH . "install/index.php"; 
    108             if(file_exists($path)) { 
    109                 SC_Utils::sfErrorHeader(">> /install/index.phpは、インストール完了後にファイルを削除してください。"); 
    110             } 
     76    // インストール初期処理 
     77    function sfInitInstall() { 
     78        // インストール済みが定義されていない。 
     79        if (!defined('ECCUBE_INSTALL')) { 
     80            // ここから2つ上はdataディレクトリ 
     81            $eccube_data_dir = realpath(dirname(__FILE__) . '/../../'); 
     82            // dataディレクトリとDATA_DIR2HTMLからhtmlディレクトリを取得。 
     83            $eccube_html_dir = realpath($eccube_data_dir . '/' . DATA_DIR2HTML); 
     84            // htmlディレクトリとDOCUMENT_ROOTの相対パスがURL_DIR 
     85            $document_root = realpath($_SERVER['DOCUMENT_ROOT']); 
     86            $url_dir = str_replace($document_root, '', $eccube_html_dir); 
     87 
     88            // installページへのURLを生成。 
     89            // Windowsの場合は, ディレクトリの区切り文字を\から/に変換する 
     90            $url_dir = str_replace("\\", "/", $url_dir); 
     91            // 先頭が'/'でない場合は'/'を付与。(php4,5のrealpathの挙動の違いによる) 
     92            if (substr($url_dir, 0, 1) != '/') { 
     93                $url_dir = '/' . $url_dir; 
     94            } 
     95            // 最後が'/'でない場合は'/'を付与。 
     96            if (substr($url_dir, -1) != '/') { 
     97                $url_dir .= '/'; 
     98            } 
     99            $location = $url_dir . 'install/index.php'; 
     100 
     101            header('Location: ' . $location); 
     102            exit; 
     103        } 
     104        $path = HTML_PATH . "install/index.php"; 
     105        if(file_exists($path)) { 
     106            SC_Utils::sfErrorHeader(">> /install/index.phpは、インストール完了後にファイルを削除してください。"); 
    111107        } 
    112108    } 
     
    138134 
    139135    /* サイトエラーページの表示 */ 
    140     function sfDispSiteError($type, $objSiteSess = "", $return_top = false, $err_msg = "", $is_mobile = false) { 
     136    function sfDispSiteError($type, $objSiteSess = "", $return_top = false, $err_msg = "") { 
    141137        global $objCampaignSess; 
    142138 
     
    155151    } 
    156152 
     153    /** 
     154     * 例外エラーページの表示 
     155     * 
     156     * @param string $debugMsg デバッグ用のメッセージ 
     157     * @return void 
     158     */ 
     159    function sfDispException($debugMsg = null) { 
     160        require_once(CLASS_EX_PATH . "page_extends/error/LC_Page_Error_SystemError_Ex.php"); 
     161         
     162        $objPage = new LC_Page_Error_SystemError_Ex(); 
     163        register_shutdown_function(array($objPage, "destroy")); 
     164        $objPage->init(); 
     165        if (!is_null($debugMsg)) { 
     166            $objPage->addDebugMsg($debugMsg); 
     167        } 
     168        if (function_exists("debug_backtrace")) { 
     169            $objPage->backtrace = debug_backtrace(); 
     170        } 
     171        GC_Utils_Ex::gfPrintLog($objPage->sfGetErrMsg()); 
     172        $objPage->process(); 
     173         
     174        exit(); 
     175    } 
     176 
    157177    /* 認証の可否判定 */ 
    158178    function sfIsSuccess($objSess, $disp_error = true) { 
     
    232252 
    233253    /* 前のページで正しく登録が行われたか判定 */ 
    234     function sfIsPrePage(&$objSiteSess, $is_mobile = false) { 
     254    function sfIsPrePage(&$objSiteSess) { 
    235255        $ret = $objSiteSess->isPrePage(); 
    236256        if($ret != true) { 
    237257            // エラーページの表示 
    238             SC_Utils::sfDispSiteError(PAGE_ERROR, $objSiteSess, false, "", $is_mobile); 
     258            SC_Utils::sfDispSiteError(PAGE_ERROR, $objSiteSess); 
    239259        } 
    240260    } 
     
    284304    } 
    285305 
    286     // INT型の数値チェック 
     306    /** 
     307     *  INT型の数値チェック 
     308     *  ・FIXME: マイナス値の扱いが不明確 
     309     *  ・XXX: INT_LENには収まるが、INT型の範囲を超えるケースに対応できないのでは? 
     310     *   
     311     *  @param mixed $value 
     312     *  @return bool 
     313     */ 
     314    //  
    287315    function sfIsInt($value) { 
    288         if($value != "" && strlen($value) <= INT_LEN && is_numeric($value)) { 
     316        if (strlen($value) >= 1 && strlen($value) <= INT_LEN && is_numeric($value)) { 
    289317            return true; 
    290318        } 
     319        return false; 
     320    } 
     321 
     322    /* 
     323     * 桁が0で埋められているかを判定する 
     324     *  
     325     * @param string $value 検査対象 
     326     * @return boolean 0で埋められている 
     327     */ 
     328    function sfIsZeroFilling($value) { 
     329        if (strlen($value) > 1 && $value{0} === '0') 
     330            return true; 
    291331        return false; 
    292332    } 
     
    398438    // html_checkboxesの値をマージしてSQL検索用に変更する。 
    399439    function sfSearchCheckBoxes($array) { 
    400         $max = 0; 
    401         $ret = ""; 
    402         foreach($array as $val) { 
    403             $arrTmp[$val] = "1"; 
    404             if($val > $max) { 
    405                 $max = $val; 
    406             } 
    407         } 
    408         for($i = 1; $i <= $max; $i++) { 
    409             if($arrTmp[$i] == "1") { 
    410                 $ret.= "1"; 
    411             } else { 
    412                 $ret.= "_"; 
    413             } 
    414         } 
    415  
    416         if($ret != "") { 
    417             $ret.= "%"; 
     440        $max = max($array); 
     441        $ret = ''; 
     442        for ($i = 1; $i <= $max; $i++) { 
     443            $ret .= in_array($i, $array) ? '1' : '_'; 
     444        } 
     445        if (strlen($ret) != 0) { 
     446            $ret .= '%'; 
    418447        } 
    419448        return $ret; 
     
    448477    // チェックボックスの値を分解 
    449478    function sfSplitCBValue($val, $keyname = "") { 
     479        $arr = array(); 
    450480        $len = strlen($val); 
    451481        $no = 1; 
     
    651681    } 
    652682 
    653     /* 税金計算 */ 
    654     function sfTax($price, $tax = null, $tax_rule = null) { 
    655         // 店舗基本情報を取得 
    656         static $CONF; 
    657         if (is_null($CONF) && (is_null($tax) || is_null($tax_rule))) { 
    658             $CONF = SC_Helper_DB_Ex::sf_getBasisData(); 
    659          } 
    660         if (is_null($tax)) { 
    661             $tax = $CONF['tax']; 
    662         } 
    663         if (is_null($tax_rule)) { 
    664             $tax_rule = $CONF['tax_rule']; 
    665         } 
    666  
     683    /** 
     684     * 税金額を返す 
     685     * 
     686     * ・店舗基本情報に基づいた計算は SC_Helper_DB::sfTax() を使用する 
     687     * 
     688     * @param integer $price 計算対象の金額 
     689     * @param integer $tax 税率(%単位) 
     690     *     XXX integer のみか不明 
     691     * @param integer $tax_rule 端数処理 
     692     * @return integer 税金額 
     693     */ 
     694    function sfTax($price, $tax, $tax_rule) { 
    667695        $real_tax = $tax / 100; 
    668696        $ret = $price * $real_tax; 
     
    688716    } 
    689717 
    690     /* 税金付与 */ 
    691     function sfPreTax($price, $tax = null, $tax_rule = null) { 
     718    /** 
     719     * 税金付与した金額を返す 
     720     *  
     721     * ・店舗基本情報に基づいた計算は SC_Helper_DB::sfTax() を使用する 
     722     * 
     723     * @param integer $price 計算対象の金額 
     724     * @param integer $tax 税率(%単位) 
     725     *     XXX integer のみか不明 
     726     * @param integer $tax_rule 端数処理 
     727     * @return integer 税金付与した金額 
     728     */ 
     729    function sfPreTax($price, $tax, $tax_rule) { 
    692730        return $price + SC_Utils_Ex::sfTax($price, $tax, $tax_rule); 
    693731    } 
     
    769807    } 
    770808 
    771     /* 規格の登録 */ 
    772     function sfInsertProductClass($objQuery, $arrList, $product_id , $product_class_id = "") { 
    773         // すでに規格登録があるかどうかをチェックする。 
    774         $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; 
    775         $count = $objQuery->count("dtb_products_class", $where,  array($product_id)); 
    776  
    777         // すでに規格登録がない場合 
    778         if($count == 0) { 
    779             // 既存規格の削除 
    780             $where = "product_id = ?"; 
    781             $objQuery->delete("dtb_products_class", $where, array($product_id)); 
    782  
    783             // 配列の添字を定義 
    784             $checkArray = array("product_code", "stock", "stock_unlimited", "price01", "price02"); 
    785             $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); 
    786  
    787             $sqlval['product_id'] = $product_id; 
    788             if(strlen($product_class_id ) > 0 ){ 
    789                 $sqlval['product_class_id'] = $product_class_id; 
    790             } 
    791             $sqlval['classcategory_id1'] = '0'; 
    792             $sqlval['classcategory_id2'] = '0'; 
    793             $sqlval['product_code'] = $arrList["product_code"]; 
    794             $sqlval['stock'] = $arrList["stock"]; 
    795             $sqlval['stock_unlimited'] = $arrList["stock_unlimited"]; 
    796             $sqlval['price01'] = $arrList['price01']; 
    797             $sqlval['price02'] = $arrList['price02']; 
    798             $sqlval['creator_id'] = $_SESSION['member_id']; 
    799             $sqlval['create_date'] = "now()"; 
    800  
    801             if($_SESSION['member_id'] == "") { 
    802                 $sqlval['creator_id'] = '0'; 
    803             } 
    804  
    805             // INSERTの実行 
    806             $objQuery->insert("dtb_products_class", $sqlval); 
    807         } 
    808     } 
    809  
    810809    function sfGetProductClassId($product_id, $classcategory_id1, $classcategory_id2) { 
    811810        $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?"; 
     
    915914    } 
    916915 
    917     /* 加算ポイントの計算式 */ 
    918     function sfGetAddPoint($totalpoint, $use_point, $arrInfo) { 
    919         if( USE_POINT === false ) return ; 
     916    /** 
     917     * 加算ポイントの計算 
     918     * 
     919     * ・店舗基本情報に基づいた計算は SC_Helper_DB::sfGetAddPoint() を使用する 
     920     * 
     921     * @param integer $totalpoint 
     922     * @param integer $use_point 
     923     * @param integer $point_rate 
     924     * @return integer 加算ポイント 
     925     */ 
     926    function sfGetAddPoint($totalpoint, $use_point, $point_rate) { 
    920927        // 購入商品の合計ポイントから利用したポイントのポイント換算価値を引く方式 
    921         $add_point = $totalpoint - intval($use_point * ($arrInfo['point_rate'] / 100)); 
     928        $add_point = $totalpoint - intval($use_point * ($point_rate / 100)); 
    922929 
    923930        if($add_point < 0) { 
     
    934941        $id = uniqid($head); 
    935942        return ($id . $random); 
    936     } 
    937  
    938     // カテゴリ別オススメ品の取得 
    939     function sfGetBestProducts( $conn, $category_id = 0){ 
    940         // 既に登録されている内容を取得する 
    941         $sql = "SELECT name, main_image, main_list_image, price01_min, price01_max, price02_min, price02_max, point_rate, 
    942                  A.product_id, A.comment FROM dtb_best_products as A LEFT JOIN vw_products_allclass AS allcls 
    943                 USING (product_id) WHERE A.category_id = ? AND A.del_flg = 0 AND status = 1 ORDER BY A.rank"; 
    944         $arrItems = $conn->getAll($sql, array($category_id)); 
    945  
    946         return $arrItems; 
    947943    } 
    948944 
     
    12201216        } 
    12211217        $objConn->query("COMMIT"); 
    1222         $subject = sfMakeSubject('メルマガ仮登録が完了しました。'); 
     1218        $subject = 'メルマガ仮登録が完了しました'; 
    12231219        $objPage->tpl_url = SSL_URL."mailmagazine/regist.php?temp_id=".$arrRegistMailMagazine['temp_id']; 
    12241220        switch ($mail_flag){ 
     
    12371233            break; 
    12381234        } 
    1239             $objPage->tpl_email = $email; 
     1235        $objPage->tpl_email = $email; 
    12401236        sfSendTplMail($email, $subject, 'mail_templates/mailmagazine_temp.tpl', $objPage); 
    12411237    } 
     
    12761272 
    12771273        if($basename == "") { 
    1278             $path = $_SERVER["REQUEST_URI"] . "index.php"; 
     1274            $path = $_SERVER["REQUEST_URI"] . DIR_INDEX_URL; 
    12791275        } else { 
    12801276            $path = $_SERVER["REQUEST_URI"]; 
     
    14641460 
    14651461        $fileArray=glob( $src."*" ); 
    1466         foreach( $fileArray as $key => $data_ ){ 
    1467             // CVS管理ファイルはコピーしない 
    1468             if(ereg("/CVS/Entries", $data_)) { 
    1469                 break; 
    1470             } 
    1471             if(ereg("/CVS/Repository", $data_)) { 
    1472                 break; 
    1473             } 
    1474             if(ereg("/CVS/Root", $data_)) { 
    1475                 break; 
    1476             } 
    1477  
    1478             mb_ereg("^(.*[\/])(.*)",$data_, $matches); 
    1479             $data=$matches[2]; 
    1480             if( is_dir( $data_ ) ){ 
    1481                 $mess = SC_Utils::sfCopyDir( $data_.'/', $des.$data.'/', $mess); 
    1482             }else{ 
    1483                 if(!$override && file_exists($des.$data)) { 
    1484                     $mess.= $des.$data . ":ファイルが存在します\n"; 
    1485                 } else { 
    1486                     if(@copy( $data_, $des.$data)) { 
    1487                         $mess.= $des.$data . ":コピー成功\n"; 
     1462        if (is_array($fileArray)) { 
     1463            foreach( $fileArray as $key => $data_ ){ 
     1464                // CVS管理ファイルはコピーしない 
     1465                if(ereg("/CVS/Entries", $data_)) { 
     1466                    break; 
     1467                } 
     1468                if(ereg("/CVS/Repository", $data_)) { 
     1469                    break; 
     1470                } 
     1471                if(ereg("/CVS/Root", $data_)) { 
     1472                    break; 
     1473                } 
     1474 
     1475                mb_ereg("^(.*[\/])(.*)",$data_, $matches); 
     1476                $data=$matches[2]; 
     1477                if( is_dir( $data_ ) ){ 
     1478                    $mess = SC_Utils::sfCopyDir( $data_.'/', $des.$data.'/', $mess); 
     1479                }else{ 
     1480                    if(!$override && file_exists($des.$data)) { 
     1481                        $mess.= $des.$data . ":ファイルが存在します\n"; 
    14881482                    } else { 
    1489                         $mess.= $des.$data . ":コピー失敗\n"; 
     1483                        if(@copy( $data_, $des.$data)) { 
     1484                            $mess.= $des.$data . ":コピー成功\n"; 
     1485                        } else { 
     1486                            $mess.= $des.$data . ":コピー失敗\n"; 
     1487                        } 
    14901488                    } 
    1491                 } 
    1492                 $mod=stat($data_ ); 
     1489                    $mod=stat($data_ ); 
     1490                } 
    14931491            } 
    14941492        } 
     
    15551553    } 
    15561554 
    1557     function sfFlush($output = " ", $sleep = 0){ 
    1558         // 実行時間を制限しない 
    1559         set_time_limit(0); 
     1555    /** 
     1556     * ブラウザに強制的に送出する 
     1557     * 
     1558     * @param boolean|string $output 半角スペース256文字+改行を出力するか。または、送信する文字列を指定。 
     1559     * @return void 
     1560     */ 
     1561    function sfFlush($output = false, $sleep = 0){ 
    15601562        // 出力をバッファリングしない(==日本語自動変換もしない) 
    1561         ob_end_clean(); 
    1562  
    1563         // IEのために256バイト空文字出力 
    1564         echo str_pad('',256); 
    1565  
    1566         // 出力はブランクだけでもいいと思う 
    1567         echo $output; 
     1563        while (@ob_end_flush()); 
     1564 
     1565        if ($output === true) { 
     1566            // IEのために半角スペース256文字+改行を出力 
     1567            //echo str_repeat(' ', 256) . "\n"; 
     1568            echo str_pad('', 256) . "\n"; 
     1569        } else if ($output !== false) { 
     1570            echo $output; 
     1571        } 
     1572 
    15681573        // 出力をフラッシュする 
    15691574        flush(); 
    15701575 
    1571         ob_flush(); 
    15721576        ob_start(); 
    15731577 
     
    16581662        } 
    16591663        return $array; 
     1664    } 
     1665 
     1666    /** 
     1667     * $arrSrc のうち、キーが $arrKey に含まれるものを返す 
     1668     * 
     1669     * $arrSrc に含まない要素は返されない。 
     1670     * 
     1671     * @param array $arrSrc 
     1672     * @param array $arrKey 
     1673     * @return array 
     1674     */ 
     1675    function sfArrayIntersectKeys($arrSrc, $arrKey) { 
     1676        $arrRet = array(); 
     1677        foreach ($arrKey as $key) { 
     1678            if (isset($arrSrc[$key])) $arrRet[$key] = $arrSrc[$key]; 
     1679        } 
     1680        return $arrRet; 
    16601681    } 
    16611682 
     
    20082029        for($i = 0; $i < $cnt; $i++) { 
    20092030            $html.= "<tr>"; 
    2010           foreach($array[$i] as $val) { 
     2031            foreach($array[$i] as $val) { 
    20112032                $html.="<td>$val</td>"; 
    20122033            } 
     
    20162037    } 
    20172038 
    2018     /** 
    2019      * 出力バッファをフラッシュし, バッファリングを開始する. 
    2020      * 
    2021      * @return void 
    2022      */ 
    2023     function flush() { 
    2024         flush(); 
    2025         ob_end_flush(); 
    2026         ob_start(); 
     2039   /** 
     2040     * 一覧-メイン画像のファイル指定がない場合、専用の画像ファイルに書き換える。 
     2041     * 
     2042     * @param string &$filename ファイル名 
     2043     * @return string 
     2044     */ 
     2045    function sfNoImageMainList($filename = '') { 
     2046        if (strlen($filename) == 0 || substr($filename, -1, 1) == '/') { 
     2047            $filename .= 'noimage_main_list.jpg'; 
     2048        } 
     2049        return $filename; 
     2050    } 
     2051 
     2052   /** 
     2053     * 詳細-メイン画像のファイル指定がない場合、専用の画像ファイルに書き換える。 
     2054     * 
     2055     * @param string &$filename ファイル名 
     2056     * @return string 
     2057     */ 
     2058    function sfNoImageMain($filename = '') { 
     2059        if (strlen($filename) == 0 || substr($filename, -1, 1) == '/') { 
     2060            $filename .= 'noimage_main.png'; 
     2061        } 
     2062        return $filename; 
    20272063    } 
    20282064 
     
    20372073        print("<strong>**デバッグ中**</strong></div>\n"); 
    20382074    } 
     2075 
     2076    /** 
     2077     * ポイント使用するかの判定 
     2078     *  
     2079     * @param integer $status 対応状況 
     2080     * @return boolean 使用するか(顧客テーブルから減算するか) 
     2081     */ 
     2082    function sfIsUsePoint($status) { 
     2083        switch ($status) { 
     2084            case ORDER_CANCEL:      // キャンセル 
     2085                return false; 
     2086            default: 
     2087                break; 
     2088        } 
     2089 
     2090        return true; 
     2091    } 
     2092 
     2093    /** 
     2094     * ポイント加算するかの判定 
     2095     *  
     2096     * @param integer $status 対応状況 
     2097     * @return boolean 加算するか 
     2098     */ 
     2099    function sfIsAddPoint($status) { 
     2100        switch ($status) { 
     2101            case ORDER_NEW:         // 新規注文 
     2102            case ORDER_PAY_WAIT:    // 入金待ち 
     2103            case ORDER_PRE_END:     // 入金済み 
     2104            case ORDER_CANCEL:      // キャンセル 
     2105            case ORDER_BACK_ORDER:  // 取り寄せ中 
     2106                return false; 
     2107             
     2108            case ORDER_DELIV:       // 発送済み 
     2109                return true; 
     2110             
     2111            default: 
     2112                break; 
     2113        } 
     2114 
     2115        return false; 
     2116    } 
     2117 
     2118    /** 
     2119     * ランダムな文字列を取得する 
     2120     *  
     2121     * @param integer $length 文字数 
     2122     * @return string ランダムな文字列 
     2123     */ 
     2124    function sfGetRandomString($length = 1) { 
     2125        require_once(dirname(__FILE__) . '/../../module/Text/Password.php'); 
     2126        return Text_Password::create($length); 
     2127    } 
     2128     
     2129    /** 
     2130     * 現在の URL を取得する 
     2131     * 
     2132     * @return string 現在のURL 
     2133     */ 
     2134    function sfGetUrl() { 
     2135        $url = ''; 
     2136         
     2137        if (SC_Utils_Ex::sfIsHTTPS()) { 
     2138            $url = "https://"; 
     2139        } else { 
     2140            $url = "http://"; 
     2141        } 
     2142         
     2143        $url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '?' . $_SERVER['QUERY_STRING']; 
     2144         
     2145        return $url; 
     2146    } 
     2147     
     2148    /** 
     2149     * バックトレースをテキスト形式で出力する 
     2150     * 
     2151     * @return string テキストで表現したバックトレース 
     2152     */ 
     2153    function sfBacktraceToString($arrBacktrace) { 
     2154        $string = ''; 
     2155         
     2156        foreach ($arrBacktrace as $backtrace) { 
     2157            if (strlen($backtrace['class']) >= 1) { 
     2158                $func = $backtrace['class'] . $backtrace['type'] . $backtrace['function']; 
     2159            } else { 
     2160                $func = $backtrace['function']; 
     2161            } 
     2162             
     2163            $string .= $backtrace['file'] . " " . $backtrace['line'] . ":" . $func . "\n"; 
     2164        } 
     2165         
     2166        return $string; 
     2167    } 
     2168 
     2169    /** 
     2170     * 管理機能かを判定 
     2171     * 
     2172     * @return bool 管理機能か 
     2173     */ 
     2174    function sfIsAdminFunction() { 
     2175        return defined('ADMIN_FUNCTION') && ADMIN_FUNCTION; 
     2176    } 
     2177 
     2178    /** 
     2179     * フロント機能かを判定 
     2180     * 
     2181     * @return bool フロント機能か 
     2182     */ 
     2183    function sfIsFrontFunction() { 
     2184        return SC_Utils_Ex::sfIsPcSite() || SC_Utils_Ex::sfIsMobileSite(); 
     2185    } 
     2186 
     2187    /** 
     2188     * フロント機能PCサイトかを判定 
     2189     * 
     2190     * @return bool フロント機能PCサイトか 
     2191     */ 
     2192    function sfIsPcSite() { 
     2193        return defined('FRONT_FUNCTION_PC_SITE') && FRONT_FUNCTION_PC_SITE; 
     2194    } 
     2195 
     2196    /** 
     2197     * フロント機能モバイル機能かを判定 
     2198     * 
     2199     * @return bool フロント機能モバイル機能か 
     2200     */ 
     2201    function sfIsMobileSite() { 
     2202        return defined('MOBILE_SITE') && MOBILE_SITE; 
     2203    } 
     2204 
     2205    /** 
     2206     * インストール機能かを判定 
     2207     * 
     2208     * @return bool インストール機能か 
     2209     */ 
     2210    function sfIsInstallFunction() { 
     2211        return defined('INSTALL_FUNCTION') && INSTALL_FUNCTION; 
     2212    } 
     2213 
     2214    // 郵便番号から住所の取得 
     2215    function sfGetAddress($zipcode) { 
     2216 
     2217        $conn = new SC_DBconn(ZIP_DSN); 
     2218 
     2219        $masterData = new SC_DB_MasterData_Ex(); 
     2220        $arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank")); 
     2221        // インデックスと値を反転させる。 
     2222        $arrREV_PREF = array_flip($arrPref); 
     2223 
     2224        // 郵便番号検索文作成 
     2225        $zipcode = mb_convert_kana($zipcode ,"n"); 
     2226        $sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?"; 
     2227 
     2228        $data_list = $conn->getAll($sqlse, array($zipcode)); 
     2229        if (empty($data_list)) return array(); 
     2230 
     2231        /* 
     2232         総務省からダウンロードしたデータをそのままインポートすると 
     2233         以下のような文字列が入っているので 対策する。 
     2234         ・(1・19丁目) 
     2235         ・以下に掲載がない場合 
     2236        */ 
     2237        $town =  $data_list[0]['town']; 
     2238        $town = ereg_replace("(.*)$","",$town); 
     2239        $town = ereg_replace("以下に掲載がない場合","",$town); 
     2240        $data_list[0]['town'] = $town; 
     2241        $data_list[0]['state'] = $arrREV_PREF[$data_list[0]['state']]; 
     2242 
     2243        return $data_list; 
     2244    } 
     2245 
     2246    /** 
     2247     * プラグインが配置されているディレクトリ(フルパス)を取得する 
     2248     * 
     2249     * @param string $file プラグイン情報ファイル(info.php)のパス 
     2250     * @return SimpleXMLElement プラグイン XML 
     2251     */ 
     2252    function sfGetPluginFullPathByRequireFilePath($file) { 
     2253        return str_replace('\\', '/', dirname($file)) . '/'; 
     2254    } 
     2255 
     2256    /** 
     2257     * プラグインのパスを取得する 
     2258     * 
     2259     * @param string $pluginFullPath プラグインが配置されているディレクトリ(フルパス) 
     2260     * @return SimpleXMLElement プラグイン XML 
     2261     */ 
     2262    function sfGetPluginPathByPluginFullPath($pluginFullPath) { 
     2263        return basename(rtrim($pluginFullPath, '/')); 
     2264    } 
     2265 
     2266    /** 
     2267     * プラグイン情報配列の基本形を作成する 
     2268     * 
     2269     * @param string $file プラグイン情報ファイル(info.php)のパス 
     2270     * @return array プラグイン情報配列 
     2271     */ 
     2272    function sfMakePluginInfoArray($file) { 
     2273        $fullPath = SC_Utils_Ex::sfGetPluginFullPathByRequireFilePath($file); 
     2274 
     2275        return 
     2276            array( 
     2277                // パス 
     2278                'path' => SC_Utils_Ex::sfGetPluginPathByPluginFullPath($fullPath), 
     2279                // プラグイン名 
     2280                'name' => '未定義', 
     2281                // フルパス 
     2282                'fullpath' => $fullPath, 
     2283                // バージョン 
     2284                'version' => null, 
     2285                // 著作者 
     2286                'auther' => '未定義', 
     2287            ) 
     2288        ; 
     2289    } 
     2290 
     2291    /** 
     2292     * プラグイン情報配列を取得する 
     2293     * 
     2294     * TODO include_once を利用することで例外対応をサボタージュしているのを改善する。 
     2295     * 
     2296     * @param string $path プラグインのディレクトリ名 
     2297     * @return array プラグイン情報配列 
     2298     */ 
     2299    function sfGetPluginInfoArray($path) { 
     2300        return (array)include_once(PLUGIN_PATH . "$path/plugin_info.php"); 
     2301    } 
     2302 
     2303    /** 
     2304     * プラグイン XML を読み込む 
     2305     * 
     2306     * TODO 空だったときを考慮 
     2307     * 
     2308     * @return SimpleXMLElement プラグイン XML 
     2309     */ 
     2310    function sfGetPluginsXml() { 
     2311        return simplexml_load_file(PLUGIN_PATH . 'plugins.xml'); 
     2312    } 
     2313 
     2314    /** 
     2315     * プラグイン XML を書き込む 
     2316     * 
     2317     * @param SimpleXMLElement $pluginsXml プラグイン XML 
     2318     * @return integer ファイルに書き込まれたバイト数を返します。 
     2319     */ 
     2320    function sfPutPluginsXml($pluginsXml) { 
     2321        if (!($pluginsXml instanceof SimpleXMLElement)) SC_Utils_Ex::sfDispException(); 
     2322 
     2323        $xml = $pluginsXml->asXML(); 
     2324        if (strlen($xml) == 0) SC_Utils_Ex::sfDispException(); 
     2325 
     2326        $return = file_put_contents(PLUGIN_PATH . 'plugins.xml', $pluginsXml->asXML()); 
     2327        if ($return === false) SC_Utils_Ex::sfDispException(); 
     2328 
     2329        return $return; 
     2330    } 
     2331 
     2332    function sfLoadPluginInfo($filenamePluginInfo) { 
     2333        return (array)include_once $filenamePluginInfo; 
     2334    } 
    20392335} 
    20402336?> 
Note: See TracChangeset for help on using the changeset viewer.