Changeset 21405 for branches/version-2_11-dev/data/class
- Timestamp:
- 2012/01/17 16:21:07 (15 years ago)
- Location:
- branches/version-2_11-dev/data/class
- Files:
-
- 10 edited
-
SC_CartSession.php (modified) (2 diffs)
-
SC_Product.php (modified) (1 diff)
-
helper/SC_Helper_Mobile.php (modified) (3 diffs)
-
pages/admin/order/LC_Page_Admin_Order_Disp.php (modified) (1 diff)
-
pages/admin/order/LC_Page_Admin_Order_Edit.php (modified) (1 diff)
-
pages/admin/products/LC_Page_Admin_Products_Category.php (modified) (7 diffs)
-
pages/admin/products/LC_Page_Admin_Products_Product.php (modified) (1 diff)
-
pages/mypage/LC_Page_Mypage_DownLoad.php (modified) (4 diffs)
-
pages/mypage/LC_Page_Mypage_History.php (modified) (2 diffs)
-
session/sessionfactory/SC_SessionFactory_UseRequest.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_11-dev/data/class/SC_CartSession.php
r21352 r21405 510 510 * 1. 商品種別に関連づけられた配送業者の存在チェック 511 511 * 2. 削除/非表示商品のチェック 512 * 3. 販売制限数のチェック512 * 3. 商品購入制限数のチェック 513 513 * 4. 在庫数チェック 514 514 * … … 543 543 544 544 /* 545 * 販売制限数, 在庫数のチェック545 * 商品購入制限数, 在庫数のチェック 546 546 */ 547 547 $limit = $objProduct->getBuyLimit($product); -
branches/version-2_11-dev/data/class/SC_Product.php
r21400 r21405 599 599 600 600 /** 601 * 商品詳細の結果から, 販売制限数を取得する.602 * 603 * getDetailAndProductsClass() の結果から, 販売制限数を取得する.601 * 商品詳細の結果から, 購入制限数を取得する. 602 * 603 * getDetailAndProductsClass() の結果から, 購入制限数を取得する. 604 604 * 605 605 * @param array $p 商品詳細の検索結果の配列 606 * @return integer 商品詳細の結果から求めた 販売制限数.606 * @return integer 商品詳細の結果から求めた購入制限数. 607 607 * @see getDetailAndProductsClass() 608 608 */ -
branches/version-2_11-dev/data/class/helper/SC_Helper_Mobile.php
r21402 r21405 34 34 */ 35 35 class 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 );80 36 81 37 /** … … 282 238 ob_start(array('SC_MobileImage_Ex', 'handler')); 283 239 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");')); 289 242 290 243 // 内部エンコーディングから Shift JIS に変換する。 … … 507 460 return false; 508 461 } 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 }525 462 } 526 463 ?> -
branches/version-2_11-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Disp.php
r21355 r21405 210 210 $objFormParam->addParam("備考", 'message'); 211 211 $objFormParam->addParam("入金日", "payment_date"); 212 $objFormParam->addParam(" 端末種別", "device_type_id");212 $objFormParam->addParam("アクセス端末", "device_type_id"); 213 213 214 214 // 複数情報 -
branches/version-2_11-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
r21355 r21405 342 342 $objFormParam->addParam("備考", 'message'); 343 343 $objFormParam->addParam("入金日", "payment_date"); 344 $objFormParam->addParam(" 端末種別", "device_type_id");344 $objFormParam->addParam("アクセス端末", "device_type_id"); 345 345 346 346 // 複数情報 -
branches/version-2_11-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php
r21402 r21405 82 82 // カテゴリ登録/編集実行 83 83 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 } 85 90 break; 86 91 // 入力ボックスへ編集対象のカテゴリ名をセット … … 100 105 $this->doDown($objFormParam); 101 106 break; 102 // FIXME r19909 によってテンプレートが削除されている107 // XXX 使われていないコード? 103 108 case 'moveByDnD': 104 109 // DnDしたカテゴリと移動先のセットを分解する … … 236 241 // 編集対象のカテゴリ名をDBより取得する 237 242 $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 * 下記の場合は, 編集を実行せず、エラーメッセージを表示する 249 255 * 250 256 * - カテゴリ名がすでに使用されている場合 251 * - 階層登録数の上限を超える場合 (登録時のみ評価)252 * - カテゴリ名がすでに使用されている場合 (登録時のみ評価)253 257 * 254 258 * @param SC_FormParam $objFormParam … … 256 260 */ 257 261 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 $objFormParam290 * @param boolean $add 追加か291 * @return void292 */293 function checkError(&$objFormParam, $add) {294 $objQuery =& SC_Query_Ex::getSingletonInstance();295 296 262 // 入力項目チェック 297 263 $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; 321 269 } 322 270 323 271 // 重複チェック 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'))); 334 279 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']); 340 347 } 341 348 … … 430 437 * カテゴリを更新する 431 438 * 432 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 439 * @param integer $category_id 更新対象のカテゴリID 440 * @param array 更新する カラム名 => 値 の連想配列 433 441 * @return void 434 442 */ 435 443 function updateCategory($category_id, $arrCategory) { 436 444 $objQuery =& SC_Query_Ex::getSingletonInstance(); 437 438 $arrCategory['update_date'] = 'CURRENT_TIMESTAMP';439 440 445 $objQuery->begin(); 441 446 $where = "category_id = ?"; … … 447 452 * カテゴリを登録する 448 453 * 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(); 457 461 $objQuery->begin(); 458 462 … … 475 479 $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1; 476 480 481 $arrCategory = array(); 482 $arrCategory['category_name'] = $category_name; 483 $arrCategory['parent_category_id'] = $parent_category_id; 477 484 $arrCategory['create_date'] = 'CURRENT_TIMESTAMP'; 478 485 $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; 479 $arrCategory['creator_id'] = $ _SESSION['member_id'];486 $arrCategory['creator_id'] = $creator_id; 480 487 $arrCategory['rank'] = $rank; 481 488 $arrCategory['level'] = $level; 482 489 $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 483 484 490 $objQuery->insert("dtb_category", $arrCategory); 485 491 -
branches/version-2_11-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
r21402 r21405 337 337 $objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 338 338 $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")); 340 340 $objFormParam->addParam("メーカー", "maker_id", INT_LEN, 'n', array("NUM_CHECK")); 341 341 $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 44 44 * Application/octet-streamで対応出来ないファイルタイプのみ拡張子をキーに記述する 45 45 * 拡張子が本配列に存在しない場合は $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'); 49 47 50 48 // }}} … … 134 132 // SC_DisplayやSC_Responseに大容量ファイルレスポンスが実装されたら移行可能だと思います。 135 133 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 会員ID156 * @param integer $order_id 受注ID157 * @param integer $product_id 商品ID158 * @param integer $product_class_id 商品規格ID159 * @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 status172 __EOS__;173 174 $table = <<< __EOS__175 dtb_products_class pc,176 dtb_order_detail od,177 dtb_order o178 __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){318 134 // 拡張子を取得 319 135 $extension = pathinfo($realpath, PATHINFO_EXTENSION); … … 346 162 exit; 347 163 } 164 348 165 while (!feof($handle)) { 349 166 echo(fread($handle, DOWNLOAD_BLOCK*1024)); … … 355 172 356 173 /** 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 /** 357 226 * デストラクタ. 358 227 * -
branches/version-2_11-dev/data/class/pages/mypage/LC_Page_Mypage_History.php
r21354 r21405 96 96 $this->tpl_arrOrderDetail = $this->setMainListImage($this->tpl_arrOrderDetail); 97 97 $objPurchase->setDownloadableFlgTo($this->tpl_arrOrderDetail); 98 // モバイルダウンロード対応処理99 $this->lfSetAU($this->tpl_arrOrderDetail);100 98 // 受注メール送信履歴の取得 101 99 $this->tpl_arrMailHistory = $this->lfGetMailHistory($order_id); … … 166 164 return $arrOrderDetails; 167 165 } 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 }206 166 } -
branches/version-2_11-dev/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
r21354 r21405 158 158 if (!isset($sessionId)) { 159 159 $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 }167 160 } 168 161 if (!isset($sessionId)) {
Note: See TracChangeset
for help on using the changeset viewer.
