Ignore:
Timestamp:
2010/09/27 19:30:37 (14 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18828
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/Smarty/templates/default/detail.tpl 15747@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fdetail.tpl
data/Smarty/templates/default/list.tpl 15747@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Flist.tpl
data/class/SC_Product.php 18277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_Product.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/pages/cart/LC_Page_Cart.php 15179@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fcart%2FLC_Page_Cart.php
data/class/pages/products/LC_Page_Products_Detail.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_Detail.php
data/class/pages/products/LC_Page_Products_List.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_List.php
data/class/pages/shopping/LC_Page_Shopping_Complete.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Complete.php
data/install.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Finstall.php
bzr:mapping-version:
v4
bzr:merge:

ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20100927103023-gxi8k3mun5ajq1th
bzr:revno:
2312
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/Smarty/templates/default/list.tpl ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/helper/SC_Helper_DB.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/pages/cart/LC_Page_Cart.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
data/class/pages/shopping/LC_Page_Shopping_Complete.php ohkouchi@loop-az.jp-20100927102325-k7kq5liftg1lhyoq
bzr:timestamp:
2010-09-27 19:30:23.668999910 +0900
bzr:user-agent:
bzr2.2.0+bzr-svn1.0.3
svn:original-date:
2010-09-27T10:30:23.669000Z
Message:

#781(規格のデータベースを木構造に)

  • カートの中身を product_class_id で特定するように修正
File:
1 edited

Legend:

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

    r18826 r18829  
    124124 
    125125    /** 
     126     * 商品詳細情報と商品規格を取得する. 
     127     * 
     128     * @param integer $productClassId 商品規格ID 
     129     * @return array 商品詳細情報と商品規格の配列 
     130     */ 
     131    function getDetailAndProductsClass($productClassId) { 
     132        $result = $this->getProductsClass($productClassId); 
     133        $result = array_merge($result, $this->getDetail($result['product_id'])); 
     134        return $result; 
     135    } 
     136 
     137    /** 
    126138     * 商品IDに紐づく商品規格を自分自身に設定する. 
    127139     * 
     
    163175            $classCategories = array(); 
    164176            $classCategories['']['']['name'] = '選択してください'; 
     177            $classCategories['']['']['product_class_id'] = $arrProductClass[0]['product_class_id']; 
     178            $this->product_class_id[$productId] = $arrProductClass[0]['product_class_id']; 
    165179            foreach ($arrProductClass as $productsClass) { 
    166180                $productsClass1 = $productsClass['classcategory_id1']; 
     
    201215                // 商品コード 
    202216                $classCategories[$productsClass1][$productsClass2]['product_code'] = $productsClass['product_code']; 
     217                // 商品規格ID 
     218                $classCategories[$productsClass1][$productsClass2]['product_class_id'] = $productsClass['product_class_id']; 
    203219            } 
    204220 
     
    211227 
    212228    /** 
    213      * 複数の商品IDに紐づいた, 商品規格を取得する. 
    214      * 
    215      * @param array $productIds 商品IDの配列 
     229     * SC_Query インスタンスに設定された検索条件を使用して商品規格を取得する. 
     230     * 
     231     * @param SC_Query $objQuery SC_Queryインスタンス 
     232     * @param array $params 検索パラメータの配列 
    216233     * @return array 商品規格の配列 
    217234     */ 
    218     function getProductsClassByProductIds($productIds = array()) { 
    219         if (empty($productIds)) { 
    220             return array(); 
    221         } 
    222         $objQuery =& SC_Query::getSingletonInstance(); 
    223         $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 
    224         $objQuery->setOrder("T2.level DESC"); 
     235    function getProductsClassByQuery(&$objQuery, $params) { 
    225236        // 末端の規格を取得 
    226237        $col = <<< __EOS__ 
     
    254265                   ON T3.class_id = T4.class_id 
    255266__EOS__; 
    256         $arrRet = $objQuery->select($col, $table, "", $productIds); 
     267        $arrRet = $objQuery->select($col, $table, "", $params); 
    257268        $levels = array(); 
    258269        $parents = array(); 
     
    317328 
    318329    /** 
     330     * 商品規格IDから商品規格を取得する. 
     331     */ 
     332    function getProductsClass($productClassId) { 
     333        $objQuery =& SC_Query::getSingletonInstance(); 
     334        $objQuery->setWhere('product_class_id = ?'); 
     335        $objQuery->setOrder("T2.level DESC"); 
     336        $results = $this->getProductsClassByQuery($objQuery, $productClassId); 
     337        $productsClass = $this->getProductsClassFull($results); 
     338        return $productsClass[0]; 
     339    } 
     340 
     341    /** 
     342     * 複数の商品IDに紐づいた, 商品規格を取得する. 
     343     * 
     344     * @param array $productIds 商品IDの配列 
     345     * @return array 商品規格の配列 
     346     */ 
     347    function getProductsClassByProductIds($productIds = array()) { 
     348        if (empty($productIds)) { 
     349            return array(); 
     350        } 
     351        $objQuery =& SC_Query::getSingletonInstance(); 
     352        $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 
     353        $objQuery->setOrder("T2.level DESC"); 
     354        return $this->getProductsClassByQuery($objQuery, $productIds); 
     355    } 
     356 
     357    /** 
    319358     * 商品IDに紐づいた, 商品規格を階層ごとに取得する. 
    320359     * 
    321      * @param array $productId 商品IDの配列 
     360     * @param array $productId 商品ID 
    322361     * @return array 階層ごとの商品規格の配列 
    323362     */ 
    324363    function getProductsClassLevelByProductId($productId) { 
    325364        $results = $this->getProductsClassByProductIds(array($productId)); 
    326         foreach ($results as $row) { 
     365        return $this->getProductsClassLevel($results); 
     366    } 
     367 
     368    /** 
     369     * 商品IDに紐づいた, 商品規格をすべての組み合わせごとに取得する. 
     370     * 
     371     * @param array $productId 商品ID 
     372     * @return array すべての組み合わせの商品規格の配列 
     373     */ 
     374    function getProductsClassFullByProductId($productId) { 
     375        $results = $this->getProductsClassByProductIds(array($productId)); 
     376        return $this->getProductsClassFull($results); 
     377    } 
     378 
     379    /** 
     380     * 商品規格の配列から, 商品規格を階層ごとに取得する. 
     381     * 
     382     * @access private 
     383     * @param array $productsClassResults 商品規格の結果の配列 
     384     * @return array 階層ごとの商品規格の配列 
     385     */ 
     386    function getProductsClassLevel($productsClassResults) { 
     387        foreach ($productsClassResults as $row) { 
    327388            $productsClassLevel["level" . $row['level']][] = $row; 
    328389        } 
     
    331392 
    332393    /** 
    333      * 商品IDに紐づいた, 商品規格をすべての組み合わせごとに取得する. 
    334      * 
    335      * @param array $productId 商品IDの配列 
    336      * @return array すべての組み合わせの商品規格の配列 
    337      */ 
    338     function getProductsClassFullByProductId($productId) { 
    339         $results = $this->getProductsClassLevelByProductId($productId); 
     394     * 商品規格の配列から, 商品規格のすべての組み合わせを取得する. 
     395     * 
     396     * @access private 
     397     * @param array $productsClassResults 商品規格の結果の配列 
     398     * @ array 階層ごとの商品規格の配列 
     399     */ 
     400    function getProductsClassFull($productsClassResults) { 
     401        $results = $this->getProductsClassLevel($productsClassResults); 
    340402        $productsClass = array(); 
    341         if (SC_Utils_Ex::isBlank($results["level1"]) && SC_Utils_Ex::isBlank($results["level2"])) { 
     403        if (SC_Utils_Ex::isBlank($results["level1"]) 
     404            && SC_Utils_Ex::isBlank($results["level2"])) { 
    342405            return $results["level"]; 
    343406        } 
Note: See TracChangeset for help on using the changeset viewer.