Index: /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php	(revision 18824)
+++ /branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php	(revision 18851)
@@ -21,5 +21,4 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
-ini_set("memory_limit","100M");
 // {{{ requires
 require_once(CLASS_PATH . "pages/LC_Page.php");
@@ -76,7 +75,5 @@
         //ログインしている場合
             //DBから商品情報の読込
-
             $arrForm = $this->lfGetRealFileName($customer_id, $order_id, $product_id, $product_class_id);
-
             //ステータスが支払済み以上である事
             if ($arrForm["status"] < ORDER_DELIV){
@@ -92,6 +89,10 @@
                 SC_Utils_Ex::sfDispSiteError(DOWNFILE_NOT_FOUND,"",true);
             }
-            //ファイル名をエンコードする
-            $sdown_filename = mb_convert_encoding($arrForm["down_filename"], "Shift_JIS", "auto");
+            //ファイル名をエンコードする Safariの対策はUTF-8で様子を見る
+            $encoding = "Shift_JIS";
+            if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'Safari')) {
+                $encoding = "UTF-8";
+            }
+            $sdown_filename = mb_convert_encoding($arrForm["down_filename"], $encoding, "auto");
             //タイプ指定
             header("Content-Type: Application/octet-stream");
@@ -111,7 +112,12 @@
             ob_end_flush();
             flush();
-
             //ファイル読み込み
-            readfile($realpath);
+            $handle = fopen($realpath, "rb");
+            while (!feof($handle)) {
+                echo(fread($handle, DOWNLOAD_BLOCK*1024));
+                ob_flush();
+                flush();
+            }
+            fclose($handle);
         }
     }
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 18782)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 18851)
@@ -370,5 +370,5 @@
         if($this->cartdown != 0){
             //ダウンロード商品を含む場合は、オンライン決済以外は選択できない。
-            $arrval = explode(",", CREDIT_PAYMENT);
+            $arrval = explode(",", ONLINE_PAYMENT);
             $tmp_where = "";
             foreach ($arrval as $val) {
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php	(revision 18829)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Complete.php	(revision 18851)
@@ -476,5 +476,5 @@
 
         // 合計金額が0円の場合、もしくはオンライン決済の場合は、注文ステータスをORDER_PRE_END[入金済み]にする
-        if ( ( $sqlval['total'] == 0 ) or ( in_array($sqlval['payment_id'], split(",", CREDIT_PAYMENT)) == true ) ){
+        if ( ( $sqlval['total'] == 0 ) or ( in_array($sqlval['payment_id'], split(",", ONLINE_PAYMENT)) == true ) ){
             $sqlval = $this->lfchgPreEndStatus($sqlval);
         }
Index: /branches/version-2_5-dev/data/class/SC_CartSession.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_CartSession.php	(revision 18833)
+++ /branches/version-2_5-dev/data/class/SC_CartSession.php	(revision 18851)
@@ -317,15 +317,4 @@
         return $arrRet;
     }
-    // カート内にある商品ＩＤ＋カテゴリＩＤを全て取得する
-    function getAllProductClassID($key) {
-        $this->addKey($key);
-        $max = $this->getMax($key);
-        for($i = 0; $i <= $max; $i++) {
-            if($_SESSION[$key][$i]['cart_no'] != "") {
-                $arrRet[] = $_SESSION[$key][$i]['id'];
-            }
-        }
-        return $arrRet;
-    }
 
     function delAllProducts($key) {
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 18833)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 18851)
@@ -1911,5 +1911,5 @@
      *
      * @param $objCartSess  SC_CartSession  カートセッション
-     * @return  bool        0:ダウンロード販売無 1:ダウンロード販売無 2:全てダウンロード販売
+     * @return  bool        0:実商品のみ 1:ダウンロード販売と実商品混在 2:全てダウンロード販売
      */
     function chkCartDown($objCartSess) {
@@ -1918,18 +1918,11 @@
         $nodown = false;
         $ret = 0;
-        $arrID = $objCartSess->getAllProductClassID();
-        $table =  <<< __EOS__
-            dtb_products_class pc LEFT JOIN dtb_class_combination cc1 ON pc.class_combination_id = cc1.class_combination_id
-            LEFT JOIN dtb_class_combination cc2 ON cc1.parent_class_combination_id = cc2.class_combination_id
-__EOS__;
-        $where =  <<< __EOS__
-            pc.product_id = ? AND
-            ( cc2.classcategory_id = ? OR cc2.classcategory_id IS NULL ) AND
-            ( cc1.classcategory_id = ? OR cc1.classcategory_id IS NULL )
-__EOS__;
+        $arrID = $objCartSess->getAllProductID();
+        $table = "dtb_products_class pc";
+        $where = "pc.product_class_id = ?";
         if(!is_null($arrID)){
             //カート内のIDから販売方法を取得
             foreach ($arrID as $rec) {
-                $arrRet = $objQuery->select("pc.down AS down", $table, $where, array($rec[0],$rec[1],$rec[2]));
+                $arrRet = $objQuery->select("pc.down AS down", $table, $where, array($rec));
                 if ($arrRet[0]['down'] == "2"){
                     $down = true;
Index: /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl	(revision 18833)
+++ /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl	(revision 18851)
@@ -161,4 +161,7 @@
             <!--{* ログイン済みの会員のみ *}-->
 
+            <!--お届け先ここから-->
+            <!--{* 販売方法判定（ダウンロード販売のみの場合はお届け先を表示しない） *}-->
+            <!--{if $cartdown != "2"}-->
             <table summary="お届け先確認" class="delivname">
                 <thead>
@@ -214,4 +217,5 @@
                 </tbody>
             </table>
+            <!--{/if}-->
             <!--お届け先ここまで-->
 
@@ -227,4 +231,6 @@
                     <td><!--{$arrData.payment_method|escape}--></td>
                 </tr>
+                <!--{* 販売方法判定（ダウンロード販売のみの場合はお届け日、時間を表示しない） *}-->
+                <!--{if $cartdown != "2"}-->
                 <tr>
                     <th>お届け日</th>
@@ -235,4 +241,5 @@
                     <td><!--{$arrData.deliv_time|escape|default:"指定なし"}--></td>
                 </tr>
+                <!--{/if}-->
                 <tr>
                     <th>その他お問い合わせ</th>
@@ -245,5 +252,5 @@
                 <!--{'sfTSPrintOrderBox'|call_user_func}-->
             <!--{/if}-->
-            
+
             <div class="tblareabtn">
                 <a href="./payment.php" onmouseover="chgImgImageSubmit('<!--{$TPL_DIR}-->img/common/b_back_on.gif',back03)" onmouseout="chgImgImageSubmit('<!--{$TPL_DIR}-->img/common/b_back.gif',back03)"><img src="<!--{$TPL_DIR}-->img/common/b_back.gif" width="150" height="30" alt="戻る" border="0" name="back03" id="back03" /></a>&nbsp;
Index: /branches/version-2_5-dev/data/mtb_constants_init.php
===================================================================
--- /branches/version-2_5-dev/data/mtb_constants_init.php	(revision 18849)
+++ /branches/version-2_5-dev/data/mtb_constants_init.php	(revision 18851)
@@ -619,7 +619,9 @@
 /** ダウンロード販売機能 ダウンロード可能日数桁数 */
 define('DOWNLOAD_DAYS_LEN', 3);
+/** ダウンロード販売機能 ダウンロードファイル読み込みバイト(KB) */
+define('DOWNLOAD_BLOCK', 1024);
 /** ダウンロードファイル登録可能拡張子(カンマ区切り) */
 define('DOWNLOAD_EXTENSION', "zip,lzh,jpg,jpeg,gif,png,mp3,pdf,csv");
 /** ダウンロード販売機能用オンライン決済payment_id(カンマ区切り) */
-define('CREDIT_PAYMENT', "1");
+define('ONLINE_PAYMENT', "1");
 ?>
Index: /branches/version-2_5-dev/html/install/sql/insert_data.sql
===================================================================
--- /branches/version-2_5-dev/html/install/sql/insert_data.sql	(revision 18849)
+++ /branches/version-2_5-dev/html/install/sql/insert_data.sql	(revision 18851)
@@ -1074,3 +1074,4 @@
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWN_SAVE_DIR', 'DATA_PATH . "download/save/"', 705, 'ダウンロードファイル保存先');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWNFILE_NOT_FOUND', '22', 706, 'ダウンロードファイル存在エラー');
-INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CREDIT_PAYMENT', '"1"', 707, 'ダウンロード販売機能用オンライン決済payment_id(カンマ区切り)');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('ONLINE_PAYMENT', '"1"', 707, 'ダウンロード販売機能用オンライン決済payment_id(カンマ区切り)');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWNLOAD_BLOCK', '1024', 708, 'ダウンロード販売機能 ダウンロードファイル読み込みバイト(KB)');
