Ignore:
Timestamp:
2013/05/02 18:11:36 (11 years ago)
Author:
h_yoshimoto
Message:

#2236 2.12.3リリース以降の2.12-devへのコミット差し戻し

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/SC_Product.php

    r22593 r22796  
    2929 * @version $Id$ 
    3030 */ 
    31 class SC_Product  
    32 { 
     31class SC_Product { 
    3332 
    3433    /** 規格名一覧 */ 
     
    6160     * @return void 
    6261     */ 
    63     function setProductsOrder($col, $table = 'dtb_products', $order = 'ASC') 
    64     { 
     62    function setProductsOrder($col, $table = 'dtb_products', $order = 'ASC') { 
    6563        $this->arrOrderData = array('col' => $col, 'table' => $table, 'order' => $order); 
    6664    } 
     
    7573     * @return array 商品IDの配列 
    7674     */ 
    77     function findProductIdsOrder(&$objQuery, $arrVal = array()) 
    78     { 
    79         $table = 'dtb_products AS alldtl'; 
    80  
     75    function findProductIdsOrder(&$objQuery, $arrVal = array()) { 
     76        $table = <<< __EOS__ 
     77            dtb_products AS alldtl 
     78__EOS__; 
    8179        $objQuery->setGroupBy('alldtl.product_id'); 
    8280        if (is_array($this->arrOrderData) and $objQuery->order == '') { 
     
    9694            $objQuery->setOrder($order); 
    9795        } 
    98         $arrReturn = $objQuery->getCol('alldtl.product_id', $table, '', $arrVal); 
    99  
    100         return $arrReturn; 
     96        $results = $objQuery->select('alldtl.product_id', $table, '', $arrVal, MDB2_FETCHMODE_ORDERED); 
     97        $resultValues = array(); 
     98        foreach ($results as $val) { 
     99            $resultValues[] = $val[0]; 
     100        } 
     101        return $resultValues; 
    101102    } 
    102103 
     
    110111     * @return array 対象商品ID数 
    111112     */ 
    112     function findProductCount(&$objQuery, $arrVal = array()) 
    113     { 
    114         $table = 'dtb_products AS alldtl'; 
    115  
     113    function findProductCount(&$objQuery, $arrVal = array()) { 
     114        $table = <<< __EOS__ 
     115            dtb_products AS alldtl 
     116__EOS__; 
    116117        return $objQuery->count($table, '', $arrVal); 
    117118    } 
     
    127128     * @return array 商品一覧の配列 
    128129     */ 
    129     function lists(&$objQuery) 
    130     { 
     130    function lists(&$objQuery) { 
    131131        $col = <<< __EOS__ 
    132132             product_id 
     
    154154__EOS__; 
    155155        $res = $objQuery->select($col, $this->alldtlSQL()); 
    156  
    157156        return $res; 
    158157    } 
     
    170169     * @return array 商品一覧の配列 (キー: 商品ID) 
    171170     */ 
    172     function getListByProductIds(&$objQuery, $arrProductId = array()) 
    173     { 
     171    function getListByProductIds(&$objQuery, $arrProductId = array()) { 
    174172        if (empty($arrProductId)) { 
    175173            return array(); 
     
    183181 
    184182        // 配列のキーを商品IDに 
    185         $arrProducts = SC_Utils_Ex::makeArrayIDToKey('product_id', $arrProducts); 
     183        $arrTmp = array(); 
     184        foreach ($arrProducts as $arrProduct) { 
     185            $arrTmp[$arrProduct['product_id']] = $arrProduct; 
     186        } 
     187        $arrProducts =& $arrTmp; 
     188        unset($arrTmp); 
    186189 
    187190        // SC_Query::setOrder() の指定がない場合、$arrProductId で指定された商品IDの順に配列要素を並び替え 
     
    207210     * @return array 商品詳細情報の配列 
    208211     */ 
    209     function getDetail($productId) 
    210     { 
     212    function getDetail($productId) { 
    211213        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    212214        $arrProduct = $objQuery->getRow('*', $this->alldtlSQL('product_id = ?'), 
     
    227229     * @return array 商品詳細情報と商品規格の配列 
    228230     */ 
    229     function getDetailAndProductsClass($productClassId) 
    230     { 
     231    function getDetailAndProductsClass($productClassId) { 
    231232        $result = $this->getProductsClass($productClassId); 
    232233        $result = array_merge($result, $this->getDetail($result['product_id'])); 
    233  
    234234        return $result; 
    235235    } 
     
    245245     * @return void 
    246246     */ 
    247     function setProductsClassByProductIds($arrProductId, $has_deleted = false) 
    248     { 
     247    function setProductsClassByProductIds($arrProductId, $has_deleted = false) { 
    249248 
    250249        foreach ($arrProductId as $productId) { 
     
    348347     * @return array 商品規格の配列 
    349348     */ 
    350     function getProductsClassByQuery(&$objQuery, $params) 
    351     { 
     349    function getProductsClassByQuery(&$objQuery, $params) { 
    352350        // 末端の規格を取得 
    353351        $col = <<< __EOS__ 
     
    402400     * @return array 商品規格の配列 
    403401     */ 
    404     function getProductsClass($productClassId) 
    405     { 
     402    function getProductsClass($productClassId) { 
    406403        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    407404        $objQuery->setWhere('product_class_id = ? AND T1.del_flg = 0'); 
    408405        $arrRes = $this->getProductsClassByQuery($objQuery, $productClassId); 
    409  
    410406        return (array)$arrRes[0]; 
    411407    } 
     
    418414     * @return array 商品規格の配列 
    419415     */ 
    420     function getProductsClassByProductIds($productIds = array(), $has_deleted = false) 
    421     { 
     416    function getProductsClassByProductIds($productIds = array(), $has_deleted = false) { 
    422417        if (empty($productIds)) { 
    423418            return array(); 
     
    429424        } 
    430425        $objQuery->setWhere($where); 
    431  
    432426        return $this->getProductsClassByQuery($objQuery, $productIds); 
    433427    } 
     
    440434     * @return array すべての組み合わせの商品規格の配列 
    441435     */ 
    442     function getProductsClassFullByProductId($productId, $has_deleted = false) 
    443     { 
     436    function getProductsClassFullByProductId($productId, $has_deleted = false) { 
    444437        $arrRet = $this->getProductsClassByProductIds(array($productId), $has_deleted); 
    445  
    446438        return $arrRet; 
    447439    } 
     
    453445     * @return array 商品IDをキーにした商品ステータスIDの配列 
    454446     */ 
    455     function getProductStatus($productIds) 
    456     { 
     447    function getProductStatus($productIds) { 
    457448        if (empty($productIds)) { 
    458449            return array(); 
     
    467458            $results[$status['product_id']][] = $status['product_status_id']; 
    468459        } 
    469  
    470460        return $results; 
    471461    } 
     
    479469     * @param array $productStatusIds ON にする商品ステータスIDの配列 
    480470     */ 
    481     function setProductStatus($productId, $productStatusIds) 
    482     { 
     471    function setProductStatus($productId, $productStatusIds) { 
    483472 
    484473        $val['product_id'] = $productId; 
     
    506495     * @see getDetailAndProductsClass() 
    507496     */ 
    508     function getBuyLimit($p) 
    509     { 
     497    function getBuyLimit($p) { 
    510498        $limit = null; 
    511499        if ($p['stock_unlimited'] != '1' && is_numeric($p['sale_limit'])) { 
     
    516504            $limit = $p['stock']; 
    517505        } 
    518  
    519506        return $limit; 
    520507    } 
     
    532519     * @return boolean 在庫の減少に成功した場合 true; 失敗した場合 false 
    533520     */ 
    534     function reduceStock($productClassId, $quantity) 
    535     { 
     521    function reduceStock($productClassId, $quantity) { 
    536522 
    537523        if ($quantity == 0) { 
     
    559545     * 
    560546     * @param array $arrProducts 商品情報の配列 
    561      * @return array 旧バージョン互換用のデータ 
    562      */ 
    563     static function setPriceTaxTo(&$arrProducts) 
    564     { 
    565         foreach ($arrProducts as &$arrProduct) { 
    566             $arrProduct['price01_min_format'] = number_format($arrProduct['price01_min']); 
    567             $arrProduct['price01_max_format'] = number_format($arrProduct['price01_max']); 
    568             $arrProduct['price02_min_format'] = number_format($arrProduct['price02_min']); 
    569             $arrProduct['price02_max_format'] = number_format($arrProduct['price02_max']); 
    570  
    571             SC_Product_Ex::setIncTaxToProduct($arrProduct); 
    572  
    573             $arrProduct['price01_min_inctax_format'] = number_format($arrProduct['price01_min_inctax']); 
    574             $arrProduct['price01_max_inctax_format'] = number_format($arrProduct['price01_max_inctax']); 
    575             $arrProduct['price02_min_inctax_format'] = number_format($arrProduct['price02_min_inctax']); 
    576             $arrProduct['price02_max_inctax_format'] = number_format($arrProduct['price02_max_inctax']); 
    577  
    578             // @deprecated 2.12.4 
    579             // 旧バージョン互換用 
    580             // 本来は、税額の代入で使用すべきキー名。 
    581             $arrProduct['price01_min_tax_format'] =& $arrProduct['price01_min_inctax_format']; 
    582             $arrProduct['price01_max_tax_format'] =& $arrProduct['price01_max_inctax_format']; 
    583             $arrProduct['price02_min_tax_format'] =& $arrProduct['price02_min_inctax_format']; 
    584             $arrProduct['price02_max_tax_format'] =& $arrProduct['price02_max_inctax_format']; 
    585         } 
    586         // @deprecated 2.12.4 
    587         // 旧バージョン互換用 
    588         // 現在は参照渡しで戻せる 
     547     * @return array 税込金額を設定した商品情報の配列 
     548     */ 
     549    function setPriceTaxTo($arrProducts) { 
     550        foreach ($arrProducts as $key => $value) { 
     551            $arrProducts[$key]['price01_min_format'] = number_format($arrProducts[$key]['price01_min']); 
     552            $arrProducts[$key]['price01_max_format'] = number_format($arrProducts[$key]['price01_max']); 
     553            $arrProducts[$key]['price02_min_format'] = number_format($arrProducts[$key]['price02_min']); 
     554            $arrProducts[$key]['price02_max_format'] = number_format($arrProducts[$key]['price02_max']); 
     555 
     556            $arrProducts[$key]['price01_min_tax'] = SC_Helper_DB::sfCalcIncTax($arrProducts[$key]['price01_min']); 
     557            $arrProducts[$key]['price01_max_tax'] = SC_Helper_DB::sfCalcIncTax($arrProducts[$key]['price01_max']); 
     558            $arrProducts[$key]['price02_min_tax'] = SC_Helper_DB::sfCalcIncTax($arrProducts[$key]['price02_min']); 
     559            $arrProducts[$key]['price02_max_tax'] = SC_Helper_DB::sfCalcIncTax($arrProducts[$key]['price02_max']); 
     560 
     561            $arrProducts[$key]['price01_min_tax_format'] = number_format($arrProducts[$key]['price01_min_tax']); 
     562            $arrProducts[$key]['price01_max_tax_format'] = number_format($arrProducts[$key]['price01_max_tax']); 
     563            $arrProducts[$key]['price02_min_tax_format'] = number_format($arrProducts[$key]['price02_min_tax']); 
     564            $arrProducts[$key]['price02_max_tax_format'] = number_format($arrProducts[$key]['price02_max_tax']); 
     565        } 
    589566        return $arrProducts; 
    590567    } 
     
    596573     * @return void 
    597574     */ 
    598     static function setIncTaxToProducts(&$arrProducts) 
    599     { 
     575    static function setIncTaxToProducts(&$arrProducts) { 
    600576        foreach ($arrProducts as &$arrProduct) { 
    601577            SC_Product_Ex::setIncTaxToProduct($arrProduct); 
     
    609585     * @return void 
    610586     */ 
    611     static function setIncTaxToProduct(&$arrProduct) 
    612     { 
    613         $arrProduct['price01_min_inctax'] = isset($arrProduct['price01_min']) ? SC_Helper_DB_Ex::sfCalcIncTax($arrProduct['price01_min']) : null; 
    614         $arrProduct['price01_max_inctax'] = isset($arrProduct['price01_max']) ? SC_Helper_DB_Ex::sfCalcIncTax($arrProduct['price01_max']) : null; 
    615         $arrProduct['price02_min_inctax'] = isset($arrProduct['price02_min']) ? SC_Helper_DB_Ex::sfCalcIncTax($arrProduct['price02_min']) : null; 
    616         $arrProduct['price02_max_inctax'] = isset($arrProduct['price02_max']) ? SC_Helper_DB_Ex::sfCalcIncTax($arrProduct['price02_max']) : null; 
     587    static function setIncTaxToProduct(&$arrProduct) { 
     588        $arrProduct['price01_min_inctax'] = isset($arrProduct['price01_min']) ? SC_Helper_DB::sfCalcIncTax($arrProduct['price01_min']) : null; 
     589        $arrProduct['price01_max_inctax'] = isset($arrProduct['price01_max']) ? SC_Helper_DB::sfCalcIncTax($arrProduct['price01_max']) : null; 
     590        $arrProduct['price02_min_inctax'] = isset($arrProduct['price02_min']) ? SC_Helper_DB::sfCalcIncTax($arrProduct['price02_min']) : null; 
     591        $arrProduct['price02_max_inctax'] = isset($arrProduct['price02_max']) ? SC_Helper_DB::sfCalcIncTax($arrProduct['price02_max']) : null; 
    617592    } 
    618593 
     
    623598     * @return string 商品詳細の SQL 
    624599     */ 
    625     function alldtlSQL($where_products_class = '') 
    626     { 
     600    function alldtlSQL($where_products_class = '') { 
    627601        if (!SC_Utils_Ex::isBlank($where_products_class)) { 
    628602            $where_products_class = 'AND (' . $where_products_class . ')'; 
     
    719693            ) AS alldtl 
    720694__EOS__; 
    721  
    722695        return $sql; 
    723696    } 
     
    731704     * @return string 商品規格詳細の SQL 
    732705     */ 
    733     function prdclsSQL($where = '') 
    734     { 
     706    function prdclsSQL($where = '') { 
    735707        $where_clause = ''; 
    736708        if (!SC_Utils_Ex::isBlank($where)) { 
     
    770742        ) as prdcls 
    771743__EOS__; 
    772  
    773744        return $sql; 
    774745    } 
Note: See TracChangeset for help on using the changeset viewer.