Ignore:
Timestamp:
2012/01/17 16:21:07 (15 years ago)
Author:
Seasoft
Message:

2.12系へマイルストーン変更となったチケット分を差し戻し
r21357 #1324
r21356 #1324,#1565
r21355 #1431
r21354 #1555
r21353 #1563
r21352 #1431
r21351 #1538
r21350 #1560

Location:
branches/version-2_11-dev/data/class
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_11-dev/data/class/SC_CartSession.php

    r21352 r21405  
    510510     * 1. 商品種別に関連づけられた配送業者の存在チェック 
    511511     * 2. 削除/非表示商品のチェック 
    512      * 3. 販売制限数のチェック 
     512     * 3. 商品購入制限数のチェック 
    513513     * 4. 在庫数チェック 
    514514     * 
    … …  
    543543 
    544544                /* 
    545                  * 販売制限数, 在庫数のチェック 
     545                 * 商品購入制限数, 在庫数のチェック 
    546546                 */ 
    547547                $limit = $objProduct->getBuyLimit($product); 
  • branches/version-2_11-dev/data/class/SC_Product.php

    r21400 r21405  
    599599 
    600600    /** 
    601      * 商品詳細の結果から, 販売制限数を取得する. 
    602      * 
    603      * getDetailAndProductsClass() の結果から, 販売制限数を取得する. 
     601     * 商品詳細の結果から, 購入制限数を取得する. 
     602     * 
     603     * getDetailAndProductsClass() の結果から, 購入制限数を取得する. 
    604604     * 
    605605     * @param array $p 商品詳細の検索結果の配列 
    606      * @return integer 商品詳細の結果から求めた販売制限数. 
     606     * @return integer 商品詳細の結果から求めた購入制限数. 
    607607     * @see getDetailAndProductsClass() 
    608608     */ 
  • branches/version-2_11-dev/data/class/helper/SC_Helper_Mobile.php

    r21402 r21405  
    3434 */ 
    3535class SC_Helper_Mobile { 
    36  
    37     /** 基本MimeType */ 
    38     var $defaultMimeType = 'application/force-download'; 
    39  
    40     /** 拡張MimeType配列 
    41      * Application/octet-streamで対応出来ないファイルタイプのみ拡張子をキーに記述する 
    42      * 拡張子が本配列に存在しない場合は application/force-download を利用する */ 
    43     var $arrMimetypes = array( 
    44             'html'=> 'text/html', 
    45             'css' => 'text/css', 
    46             'hdml'=> 'text/x-hdml', 
    47             'mmf' => 'application/x-smaf', 
    48             'jpeg'=> 'image/jpeg', 
    49             'jpg' => 'image/jpeg', 
    50             'gif' => 'image/gif', 
    51             'png' => 'image/png', 
    52             'bmp' => 'image/x-ms-bmp', 
    53             'amc' => 'application/x-mpeg', 
    54             '3g2' => 'video/3gpp2', 
    55             '3gp' => 'video/3gpp', 
    56             'jam' => 'application/x-jam', 
    57             'kjx' => 'application/x-kjx', 
    58             'jar' => 'application/java-archive', 
    59             'jad' => 'text/vnd.sun.j2me.app-descriptor', 
    60             'swf' => 'application/x-shockwave-flash', 
    61             'dmt' => 'application/x-decomail-template', 
    62             'khm' => 'application/x-kddi-htmlmail', 
    63             'hmt' => 'application/x-htmlmail-template', 
    64             'ucm' => 'application/x-ucf-package', 
    65             'ucp' => 'application/x-ucf-package', 
    66             'pdf' => 'application/pdf', 
    67             'wma' => 'audio/x-ms-wma', 
    68             'asf' => 'video/x-ms-asf', 
    69             'wax' => 'audio/x-ms-wax', 
    70             'wvx' => 'video/x-ms-wvx', 
    71             'wmv' => 'video/x-ms-wmv', 
    72             'asx' => 'video/asx', 
    73             'txt' => 'text/plain', 
    74             'exe' => 'application/octet-stream', 
    75             'zip' => 'application/zip', 
    76             'doc' => 'application/msword', 
    77             'xls' => 'application/vnd.ms-excel', 
    78             'ppt' => 'application/vnd.ms-powerpoint' 
    79         ); 
    8036 
    8137    /** 
    … …  
    282238        ob_start(array('SC_MobileImage_Ex', 'handler')); 
    283239 
    284         //download.phpに対してカタカナ変換をするとファイルが壊れてしまうため回避する 
    285         if ($_SERVER['SCRIPT_FILENAME'] != HTML_REALDIR . "mypage/download.php") { 
    286             // 全角カタカナを半角カタカナに変換する。 
    287             ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");')); 
    288         } 
     240        // 全角カタカナを半角カタカナに変換する。 
     241        ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");')); 
    289242 
    290243        // 内部エンコーディングから Shift JIS に変換する。 
    … …  
    507460        return false; 
    508461    } 
    509  
    510     /** 
    511      * ファイルのMIMEタイプを判別する 
    512      * 
    513      * @param string $filename ファイル名 
    514      * @return string MIMEタイプ 
    515      */ 
    516     function getMimeType($filename) { 
    517         //ファイルの拡張子からコンテンツタイプを決定する 
    518         $file_extension = strtolower(substr(strrchr($filename,"."),1)); 
    519         $mime_type = $this->defaultMimeType; 
    520         if(array_key_exists($file_extension, $this->arrMimetypes)){ 
    521             $mime_type = $this->arrMimetypes[$file_extension]; 
    522         } 
    523         return $mime_type; 
    524     } 
    525462} 
    526463?> 
  • branches/version-2_11-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Disp.php

    r21355 r21405  
    210210        $objFormParam->addParam("備考", 'message'); 
    211211        $objFormParam->addParam("入金日", "payment_date"); 
    212         $objFormParam->addParam("端末種別", "device_type_id"); 
     212        $objFormParam->addParam("アクセス端末", "device_type_id"); 
    213213 
    214214        // 複数情報 
  • branches/version-2_11-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r21355 r21405  
    342342        $objFormParam->addParam("備考", 'message'); 
    343343        $objFormParam->addParam("入金日", "payment_date"); 
    344         $objFormParam->addParam("端末種別", "device_type_id"); 
     344        $objFormParam->addParam("アクセス端末", "device_type_id"); 
    345345 
    346346        // 複数情報 
  • branches/version-2_11-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php

    r21402 r21405  
    8282        // カテゴリ登録/編集実行 
    8383        case 'edit': 
    84             $this->doEdit($objFormParam); 
     84            $category_id = $objFormParam->getValue('category_id'); 
     85            if ($category_id == '') { 
     86                $this->doRegister($objFormParam); 
     87            } else { 
     88                $this->doEdit($objFormParam); 
     89            } 
    8590            break; 
    8691        // 入力ボックスへ編集対象のカテゴリ名をセット 
    … …  
    100105            $this->doDown($objFormParam); 
    101106            break; 
    102         // FIXME r19909 によってテンプレートが削除されている 
     107        // XXX 使われていないコード? 
    103108        case 'moveByDnD': 
    104109            // DnDしたカテゴリと移動先のセットを分解する 
    … …  
    236241        // 編集対象のカテゴリ名をDBより取得する 
    237242        $where = "category_id = ?"; 
    238         $arrRes = $objQuery->getRow("*", "dtb_category", $where, array($category_id)); 
    239  
    240         $objFormParam->setParam($arrRes); 
    241  
    242         $this->arrForm = $objFormParam->getHashArray(); 
    243     } 
    244  
    245     /** 
    246      * カテゴリの登録・編集を実行する. 
    247      * 
    248      * 下記の場合は, 登録・編集を実行せず、エラーメッセージを表示する 
     243        $category_name = $objQuery->get("category_name", "dtb_category", $where, array($category_id)); 
     244 
     245        // 入力ボックスへカテゴリ名を保持する. 
     246        $this->arrForm['category_name'] = $category_name; 
     247        // カテゴリIDを保持する. 
     248        $this->arrForm['category_id']   = $category_id; 
     249    } 
     250 
     251    /** 
     252     * カテゴリの編集を実行する. 
     253     * 
     254     * 下記の場合は, 編集を実行せず、エラーメッセージを表示する 
    249255     * 
    250256     * - カテゴリ名がすでに使用されている場合 
    251      * - 階層登録数の上限を超える場合 (登録時のみ評価) 
    252      * - カテゴリ名がすでに使用されている場合 (登録時のみ評価) 
    253257     * 
    254258     * @param SC_FormParam $objFormParam 
    … …  
    256260     */ 
    257261    function doEdit(&$objFormParam) { 
    258         $category_id = $objFormParam->getValue('category_id'); 
    259  
    260         // 追加か 
    261         $add = strlen($category_id) === 0; 
    262  
    263         // エラーチェック 
    264         $this->arrErr = $this->checkError($objFormParam, $add); 
    265  
    266         // エラーがない場合、追加・更新処理 
    267         if (empty($this->arrErr)) { 
    268             $arrCategory = $objFormParam->getDbArray(); 
    269  
    270             // 追加 
    271             if ($add) { 
    272                 $this->registerCategory($arrCategory); 
    273             } 
    274             // 更新 
    275             else { 
    276                 unset($arrCategory['category_id']); 
    277                 $this->updateCategory($category_id, $arrCategory); 
    278             } 
    279         } 
    280         // エラーがある場合、入力値の再表示 
    281         else { 
    282             $this->arrForm = $objFormParam->getHashArray(); 
    283         } 
    284     } 
    285  
    286     /** 
    287      * エラーチェック 
    288      * 
    289      * @param SC_FormParam $objFormParam 
    290      * @param boolean $add 追加か 
    291      * @return void 
    292      */ 
    293     function checkError(&$objFormParam, $add) { 
    294         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    295  
    296262        // 入力項目チェック 
    297263        $arrErr = $objFormParam->checkError(); 
    298         if (!empty($arrErr)) { 
    299             return $arrErr; 
    300         } 
    301  
    302         $category_id = $objFormParam->getValue('category_id'); 
    303         $parent_category_id = $objFormParam->getValue('parent_category_id'); 
    304         $category_name = $objFormParam->getValue('category_name'); 
    305  
    306         // 追加の場合に固有のチェック 
    307         if ($add) { 
    308             // 登録数上限チェック 
    309             $where = "del_flg = 0"; 
    310             $count = $objQuery->count("dtb_category", $where); 
    311             if ($count >= CATEGORY_MAX) { 
    312                 $arrErr['category_name'] = "※ カテゴリの登録最大数を超えました。<br/>"; 
    313                 return $arrErr; 
    314             } 
    315  
    316             // 階層上限チェック 
    317             if ($this->isOverLevel($parent_category_id)) { 
    318                 $arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 
    319                 return $arrErr; 
    320             } 
     264        if (count($arrErr) > 0) { 
     265            $this->arrErr = $arrErr; 
     266            $this->arrForm['category_id']   = $objFormParam->getValue('category_id'); 
     267            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     268            return; 
    321269        } 
    322270 
    323271        // 重複チェック 
    324         $arrWhereVal = array(); 
    325         $where = 'del_flg = 0 AND parent_category_id = ? AND category_name = ?'; 
    326         $arrWhereVal[] = $parent_category_id; 
    327         $arrWhereVal[] = $category_name; 
    328         // 更新の場合、抽出対象から自己を除外する 
    329         if (!$add) { 
    330             $where .= ' AND category_id <> ?'; 
    331             $arrWhereVal[] = $category_id; 
    332         } 
    333         $count = $objQuery->count('dtb_category', $where, $arrWhereVal); 
     272        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     273        $where = "parent_category_id = ? AND category_id <> ? AND category_name = ?"; 
     274        $count = $objQuery->count("dtb_category", 
     275                                  $where, 
     276                                  array($objFormParam->getValue('parent_category_id'), 
     277                                        $objFormParam->getValue('category_id'), 
     278                                        $objFormParam->getValue('category_name'))); 
    334279        if ($count > 0) { 
    335             $arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; 
    336             return $arrErr; 
    337         } 
    338  
    339         return $arrErr; 
     280            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>"; 
     281            $this->arrForm['category_id']   = $objFormParam->getValue('category_id'); 
     282            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     283            return; 
     284        } 
     285 
     286        // カテゴリ更新 
     287        $arrCategory = array(); 
     288        $arrCategory['category_name'] = $objFormParam->getValue('category_name'); 
     289        $arrCategory['update_date']   = 'CURRENT_TIMESTAMP'; 
     290        $this->updateCategory($objFormParam->getValue('category_id'), $arrCategory); 
     291    } 
     292 
     293    /** 
     294     * カテゴリの登録を実行する. 
     295     * 
     296     * 下記の場合は, 登録を実行せず、エラーメッセージを表示する 
     297     * 
     298     * - カテゴリ登録数の上限を超える場合 
     299     * - 階層登録数の上限を超える場合 
     300     * - カテゴリ名がすでに使用されている場合 
     301     * 
     302     * @param SC_FormParam $objFormParam 
     303     * @return void 
     304     */ 
     305    function doRegister(&$objFormParam) { 
     306        // 入力項目チェック 
     307        $arrErr = $objFormParam->checkError(); 
     308        if (count($arrErr) > 0) { 
     309            $this->arrErr = $arrErr; 
     310            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     311            return; 
     312        } 
     313 
     314        // 登録数上限チェック 
     315        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     316        $where = "del_flg = 0"; 
     317        $count = $objQuery->count("dtb_category", $where); 
     318        if ($count >= CATEGORY_MAX) { 
     319            $this->arrErr['category_name']  = "※ カテゴリの登録最大数を超えました。<br/>"; 
     320            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     321            return; 
     322        } 
     323 
     324        // 階層上限チェック 
     325        if ($this->isOverLevel($objFormParam->getValue('parent_category_id'))) { 
     326            $this->arrErr['category_name']  = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 
     327            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     328            return; 
     329        } 
     330 
     331        // 重複チェック 
     332        $where = "parent_category_id = ? AND category_name = ?"; 
     333        $count = $objQuery->count("dtb_category", 
     334                                  $where, 
     335                                  array($objFormParam->getValue('parent_category_id'), 
     336                                        $objFormParam->getValue('category_name'))); 
     337        if ($count > 0) { 
     338            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>"; 
     339            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     340            return; 
     341        } 
     342 
     343        // カテゴリ登録 
     344        $this->registerCategory($objFormParam->getValue('parent_category_id'), 
     345                                $objFormParam->getValue('category_name'), 
     346                                $_SESSION['member_id']); 
    340347    } 
    341348 
    … …  
    430437     * カテゴリを更新する 
    431438     * 
    432      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     439     * @param integer $category_id 更新対象のカテゴリID 
     440     * @param array 更新する カラム名 => 値 の連想配列 
    433441     * @return void 
    434442     */ 
    435443    function updateCategory($category_id, $arrCategory) { 
    436444        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    437  
    438         $arrCategory['update_date']   = 'CURRENT_TIMESTAMP'; 
    439  
    440445        $objQuery->begin(); 
    441446        $where = "category_id = ?"; 
    … …  
    447452     * カテゴリを登録する 
    448453     * 
    449      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    450      * @return void 
    451      */ 
    452     function registerCategory($arrCategory) { 
    453         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    454  
    455         $parent_category_id = $arrCategory['parent_category_id']; 
    456  
     454     * @param integer 親カテゴリID 
     455     * @param string カテゴリ名 
     456     * @param integer 作成者のID 
     457     * @return void 
     458     */ 
     459    function registerCategory($parent_category_id, $category_name, $creator_id) { 
     460        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    457461        $objQuery->begin(); 
    458462 
    … …  
    475479        $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1; 
    476480 
     481        $arrCategory = array(); 
     482        $arrCategory['category_name'] = $category_name; 
     483        $arrCategory['parent_category_id'] = $parent_category_id; 
    477484        $arrCategory['create_date'] = 'CURRENT_TIMESTAMP'; 
    478485        $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; 
    479         $arrCategory['creator_id']  = $_SESSION['member_id']; 
     486        $arrCategory['creator_id']  = $creator_id; 
    480487        $arrCategory['rank']        = $rank; 
    481488        $arrCategory['level']       = $level; 
    482489        $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 
    483  
    484490        $objQuery->insert("dtb_category", $arrCategory); 
    485491 
  • branches/version-2_11-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php

    r21402 r21405  
    337337        $objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    338338        $objFormParam->addParam("発送日目安", "deliv_date_id", INT_LEN, 'n', array("NUM_CHECK")); 
    339         $objFormParam->addParam("販売制限数", "sale_limit", AMOUNT_LEN, 'n', array("SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
     339        $objFormParam->addParam("購入制限", "sale_limit", AMOUNT_LEN, 'n', array("SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
    340340        $objFormParam->addParam("メーカー", "maker_id", INT_LEN, 'n', array("NUM_CHECK")); 
    341341        $objFormParam->addParam("メーカーURL", "comment1", URL_LEN, 'a', array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK")); 
  • branches/version-2_11-dev/data/class/pages/mypage/LC_Page_Mypage_DownLoad.php

    r21354 r21405  
    4444     * Application/octet-streamで対応出来ないファイルタイプのみ拡張子をキーに記述する 
    4545     * 拡張子が本配列に存在しない場合は $defaultContentTypeを利用する */ 
    46     var $arrContentType = array('apk' => 'application/vnd.android.package-archive', 
    47                                 'pdf' => 'application/pdf' 
    48         ); 
     46    var $arrContentType = array('apk' => 'application/vnd.android.package-archive'); 
    4947 
    5048    // }}} 
    … …  
    134132        // SC_DisplayやSC_Responseに大容量ファイルレスポンスが実装されたら移行可能だと思います。 
    135133 
    136         // ダウンロード実行 モバイル端末はダウンロード方法が異なる 
    137         if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE){ 
    138             // キャリアがAUのモバイル端末はさらにダウンロード方法が異なる 
    139             if (SC_MobileUserAgent::getCarrier() == 'ezweb'){ 
    140                 // AUモバイル 
    141                 $this->lfMobileAuDownload($realpath,$sdown_filename); 
    142             }else{ 
    143                 // AU以外のモバイル 
    144                 $this->lfMobileDownload($realpath,$sdown_filename); 
    145             } 
    146         }else{ 
    147             // PC、スマフォ 
    148             $this->lfDownload($realpath,$sdown_filename); 
    149         } 
    150     } 
    151  
    152     /** 
    153      * 商品情報の読み込みを行う. 
    154      * 
    155      * @param integer $customer_id 会員ID 
    156      * @param integer $order_id 受注ID 
    157      * @param integer $product_id 商品ID 
    158      * @param integer $product_class_id 商品規格ID 
    159      * @return array 商品情報の配列 
    160      */ 
    161     function lfGetRealFileName($customer_id, $order_id, $product_id, $product_class_id) { 
    162         $objQuery = new SC_Query_Ex(); 
    163         $col = <<< __EOS__ 
    164             pc.product_id AS product_id, 
    165             pc.product_class_id AS product_class_id, 
    166             pc.down_realfilename AS down_realfilename, 
    167             pc.down_filename AS down_filename, 
    168             o.order_id AS order_id, 
    169             o.customer_id AS customer_id, 
    170             o.payment_date AS payment_date, 
    171             o.status AS status 
    172 __EOS__; 
    173  
    174         $table = <<< __EOS__ 
    175             dtb_products_class pc, 
    176             dtb_order_detail od, 
    177             dtb_order o 
    178 __EOS__; 
    179  
    180         $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
    181         $where = "o.customer_id = ? AND o.order_id = ? AND pc.product_id = ? AND pc.product_class_id = ?"; 
    182         $where .= " AND " . $dbFactory->getDownloadableDaysWhereSql('o'); 
    183         $where .= " = 1"; 
    184         $arrRet = $objQuery->select($col, $table, $where, 
    185                                     array($customer_id, $order_id, $product_id, $product_class_id)); 
    186         return $arrRet[0]; 
    187     } 
    188  
    189     /* パラメーター情報の初期化 */ 
    190     function lfInitParam(&$objFormParam) { 
    191         $objFormParam->addParam("customer_id", "customer_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
    192         $objFormParam->addParam("order_id", "order_id", INT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK")); 
    193         $objFormParam->addParam("product_id", "product_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
    194         $objFormParam->addParam("product_class_id", "product_class_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
    195     } 
    196  
    197     /* 入力内容のチェック */ 
    198     function lfCheckError(&$objFormParam) { 
    199         $objErr = new SC_CheckError_Ex($objFormParam->getHashArray()); 
    200         $objErr->arrErr = $objFormParam->checkError(); 
    201         return $objErr->arrErr; 
    202     } 
    203  
    204     /** 
    205      * モバイル端末用ヘッダー出力処理 
    206      * 
    207      * @param string $realpath ダウンロードファイルパス 
    208      * @param string $sdown_filename ダウンロード時の指定ファイル名 
    209      */ 
    210     function lfMobileHeader($realpath,$sdown_filename){ 
    211         $objHelperMobile = new SC_Helper_Mobile_Ex(); 
    212         //ファイルの拡張子からコンテンツタイプを取得する 
    213         $mime_type = $objHelperMobile->getMIMEType($realpath); 
    214         header('Content-Type: ' . $mime_type); 
    215         header("Content-Disposition: attachment; filename=" . $sdown_filename); 
    216         header('Accept-Ranges: bytes'); 
    217         header("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT"); 
    218         header("Cache-Control: public"); 
    219     } 
    220  
    221     /** 
    222      * モバイル端末(AU)ダウンロード処理 
    223      * 
    224      * @param string $realpath ダウンロードファイルパス 
    225      * @param string $sdown_filename ダウンロード時の指定ファイル名 
    226      */ 
    227     function lfMobileAuDownload($realpath,$sdown_filename){ 
    228         //モバイル用ヘッダー出力 
    229         $this->lfMobileHeader($realpath,$sdown_filename); 
    230         //ファイルサイズを取得する 
    231         $file_size = filesize($realpath); 
    232         //読み込み 
    233         $fp = fopen( $realpath, "rb" ); 
    234         if (isset($_SERVER['HTTP_RANGE'])) { 
    235             // 二回目以降のリクエスト 
    236             list($range_offset, $range_limit) = sscanf($_SERVER['HTTP_RANGE'], "bytes=%d-%d"); 
    237             $content_range = sprintf("bytes %d-%d/%d", $range_offset, $range_limit, $file_size); 
    238             $content_length = $range_limit - $range_offset + 1; 
    239             fseek( $fp, $range_offset, SEEK_SET ); 
    240             header("HTTP/1.1 206 Partial Content" ); 
    241             header("Content-Lenth: " . $content_length); 
    242             header("Content-Range: " . $content_range); 
    243         } else { 
    244             // 一回目のリクエスト 
    245             $content_length = $file_size; 
    246             header("Content-Length: " . $content_length); 
    247         } 
    248         echo fread( $fp, $content_length ) ; 
    249         ob_flush(); 
    250         flush(); 
    251     } 
    252  
    253     /** 
    254      * モバイル端末(AU以外)ダウンロード処理 
    255      * 
    256      * @param string $realpath ダウンロードファイルパス 
    257      * @param string $sdown_filename ダウンロード時の指定ファイル名 
    258      */ 
    259     function lfMobileDownload($realpath,$sdown_filename){ 
    260         //モバイル用ヘッダー出力 
    261         $this->lfMobileHeader($realpath,$sdown_filename); 
    262         //ファイルサイズを取得する 
    263         $file_size = filesize($realpath); 
    264  
    265         //出力用バッファをクリアする 
    266         @ob_end_clean(); 
    267  
    268         //HTTP_RANGEがセットされていた場合 
    269         if (isset($_SERVER['HTTP_RANGE'])) { 
    270             // 二回目以降のリクエスト 
    271             list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); 
    272             list($range) = explode(",",$range,2); 
    273             list($range, $range_end) = explode("-", $range); 
    274             $range=intval($range); 
    275  
    276             if (!$range_end) { 
    277                 $range_end=$file_size-1; 
    278             } else { 
    279                 $range_end=intval($range_end); 
    280             } 
    281  
    282             $new_length = $range_end-$range+1; 
    283             header("HTTP/1.1 206 Partial Content"); 
    284             header("Content-Length: $new_length"); 
    285             header("Content-Range: bytes $range-$range_end/$file_size"); 
    286         } else { 
    287             // 一回目のリクエスト 
    288             $new_length=$file_size; 
    289             header("Content-Length: ".$file_size); 
    290         } 
    291  
    292         //ファイル読み込み 
    293         $chunksize = 1*(DOWNLOAD_BLOCK*1024); 
    294         $bytes_send = 0; 
    295         if ($realpath = fopen($realpath, 'r')) { 
    296             // 二回目以降のリクエスト 
    297             if (isset($_SERVER['HTTP_RANGE'])) fseek($realpath, $range); 
    298  
    299             while (!feof($realpath) && (!connection_aborted()) && ($bytes_send<$new_length)) { 
    300                 $buffer = fread($realpath, $chunksize); 
    301                 print($buffer); 
    302                 ob_flush(); 
    303                 flush(); 
    304                 $bytes_send += strlen($buffer); 
    305             } 
    306             fclose($realpath); 
    307         } 
    308         die(); 
    309     } 
    310  
    311     /** 
    312      * モバイル端末以外ダウンロード処理 
    313      * 
    314      * @param string $realpath ダウンロードファイルパス 
    315      * @param string $sdown_filename ダウンロード時の指定ファイル名 
    316      */ 
    317     function lfDownload($realpath,$sdown_filename){ 
    318134        // 拡張子を取得 
    319135        $extension = pathinfo($realpath, PATHINFO_EXTENSION); 
    … …  
    346162            exit; 
    347163        } 
     164 
    348165        while (!feof($handle)) { 
    349166            echo(fread($handle, DOWNLOAD_BLOCK*1024)); 
    … …  
    355172 
    356173    /** 
     174     * 商品情報の読み込みを行う. 
     175     * 
     176     * @param integer $customer_id 会員ID 
     177     * @param integer $order_id 受注ID 
     178     * @param integer $product_id 商品ID 
     179     * @param integer $product_class_id 商品規格ID 
     180     * @return array 商品情報の配列 
     181     */ 
     182    function lfGetRealFileName($customer_id, $order_id, $product_id, $product_class_id) { 
     183        $objQuery = new SC_Query_Ex(); 
     184        $col = <<< __EOS__ 
     185            pc.product_id AS product_id, 
     186            pc.product_class_id AS product_class_id, 
     187            pc.down_realfilename AS down_realfilename, 
     188            pc.down_filename AS down_filename, 
     189            o.order_id AS order_id, 
     190            o.customer_id AS customer_id, 
     191            o.payment_date AS payment_date, 
     192            o.status AS status 
     193__EOS__; 
     194 
     195        $table = <<< __EOS__ 
     196            dtb_products_class pc, 
     197            dtb_order_detail od, 
     198            dtb_order o 
     199__EOS__; 
     200 
     201        $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
     202        $where = "o.customer_id = ? AND o.order_id = ? AND pc.product_id = ? AND pc.product_class_id = ?"; 
     203        $where .= " AND " . $dbFactory->getDownloadableDaysWhereSql('o'); 
     204        $where .= " = 1"; 
     205        $arrRet = $objQuery->select($col, $table, $where, 
     206                                    array($customer_id, $order_id, $product_id, $product_class_id)); 
     207        return $arrRet[0]; 
     208    } 
     209 
     210    /* パラメーター情報の初期化 */ 
     211    function lfInitParam(&$objFormParam) { 
     212        $objFormParam->addParam("customer_id", "customer_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
     213        $objFormParam->addParam("order_id", "order_id", INT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK")); 
     214        $objFormParam->addParam("product_id", "product_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
     215        $objFormParam->addParam("product_class_id", "product_class_id", INT_LEN, 'n', array("EXIST_CHECK","NUM_CHECK")); 
     216    } 
     217 
     218    /* 入力内容のチェック */ 
     219    function lfCheckError(&$objFormParam) { 
     220        $objErr = new SC_CheckError_Ex($objFormParam->getHashArray()); 
     221        $objErr->arrErr = $objFormParam->checkError(); 
     222        return $objErr->arrErr; 
     223    } 
     224 
     225    /** 
    357226     * デストラクタ. 
    358227     * 
  • branches/version-2_11-dev/data/class/pages/mypage/LC_Page_Mypage_History.php

    r21354 r21405  
    9696        $this->tpl_arrOrderDetail = $this->setMainListImage($this->tpl_arrOrderDetail); 
    9797        $objPurchase->setDownloadableFlgTo($this->tpl_arrOrderDetail); 
    98         // モバイルダウンロード対応処理 
    99         $this->lfSetAU($this->tpl_arrOrderDetail); 
    10098        // 受注メール送信履歴の取得 
    10199        $this->tpl_arrMailHistory = $this->lfGetMailHistory($order_id); 
    … …  
    166164        return $arrOrderDetails; 
    167165    } 
    168  
    169     /** 
    170      * 購入履歴商品にMIMETYPE、ファイル名をセット 
    171      * 
    172      * @param $arrOrderDetail 購入履歴の配列 
    173      * @return array MIMETYPE、ファイル名をセットした購入履歴の配列 
    174      */ 
    175     function lfSetMimetype($arrOrderDetails) { 
    176         $objHelperMobile = new SC_Helper_Mobile_Ex(); 
    177         $i = 0; 
    178         foreach ($arrOrderDetails as $arrOrderDetail) { 
    179             $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    180             $arrProduct = $objQuery->select('down_realfilename,down_filename', 'dtb_products_class', 'product_id = ? AND product_class_id = ?', array($arrOrderDetail['product_id'],$arrOrderDetail['product_class_id'])); 
    181             $arrOrderDetails[$i]['mime_type'] = $objHelperMobile->getMimeType($arrProduct[0]['down_realfilename']); 
    182             $arrOrderDetails[$i]['down_filename'] = $arrProduct[0]['down_filename']; 
    183             $i++; 
    184         } 
    185         return $arrOrderDetails; 
    186     } 
    187  
    188     /** 
    189      * 特定キャリア(AU)モバイルダウンロード処理 
    190      * キャリアがAUのモバイル端末からダウンロードする場合は単純に 
    191      * Aタグでダウンロードできないケースがある為、対応する。 
    192      * 
    193      * @param integer $order_id 注文番号 
    194      * @param $arrOrderDetail 購入履歴の配列 
    195      */ 
    196     function lfSetAU($arrOrderDetails) { 
    197         $this->isAU = false; 
    198         // モバイル端末かつ、キャリアがAUの場合に処理を行う 
    199         if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE && SC_MobileUserAgent::getCarrier() == 'ezweb'){ 
    200             // MIMETYPE、ファイル名のセット 
    201             $this->tpl_arrOrderDetail = $this->lfSetMimetype($arrOrderDetails); 
    202             $this->phpsessid = $_GET['PHPSESSID']; 
    203             $this->isAU = true; 
    204         } 
    205     } 
    206166} 
  • branches/version-2_11-dev/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php

    r21354 r21405  
    158158        if (!isset($sessionId)) { 
    159159            $sessionId = @$_GET[session_name()]; 
    160             // AU動画音声ファイルダウンロード対策 
    161             // キャリアがAUで、動画、音声ファイルをダウンロードする際に 
    162             // SESSIONIDの後に余計なパラメータが付与され、セッションが無効になるケースがある 
    163             if (SC_MobileUserAgent::getCarrier() == "ezweb") { 
    164                 $idArray = split("\?", $sessionId); 
    165                 $sessionId = $idArray[0]; 
    166             } 
    167160        } 
    168161        if (!isset($sessionId)) { 
Note: See TracChangeset for help on using the changeset viewer.