Ignore:
Timestamp:
2014/05/21 14:05:46 (10 years ago)
Author:
pineray
Message:

#2554 カテゴリーの登録・更新処理を SC_Helper_Category に移動.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/helper/SC_Helper_Category.php

    r23437 r23438  
    156156        $arrTrail = $this->getTreeTrail($category_id, true); 
    157157 
    158         // ルートから指定カテゴリーまでたどる. 
    159         foreach ($arrTrail as $parent_id) { 
    160             $nextTree = array(); 
    161             foreach ($arrTree as $branch) { 
    162                 if ($branch['category_id'] == $parent_id && isset($branch['children'])) { 
    163                     $nextTree = $branch['children']; 
     158        // 指定カテゴリーがルートの場合は、ツリーをそのまま返す. 
     159        if ($category_id == 0) { 
     160            return $arrTree; 
     161        } else { 
     162            // ルートから指定カテゴリーまでたどる. 
     163            foreach ($arrTrail as $parent_id) { 
     164                $nextTree = array(); 
     165                foreach ($arrTree as $branch) { 
     166                    if ($branch['category_id'] == $parent_id && isset($branch['children'])) { 
     167                        $nextTree = $branch['children']; 
     168                    } 
    164169                } 
    165             } 
    166             $arrTree = $nextTree; 
    167         } 
    168  
    169         return $arrTree; 
     170                $arrTree = $nextTree; 
     171            } 
     172            return $arrTree; 
     173        } 
     174    } 
     175 
     176    /** 
     177     * カテゴリーの登録. 
     178     * 
     179     * @param array $data 
     180     * @return void 
     181     */ 
     182    public function save($data) 
     183    { 
     184        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     185 
     186        $category_id = $data['category_id']; 
     187        $query = array('update_date' => 'CURRENT_TIMESTAMP'); 
     188        $objQuery->begin(); 
     189 
     190        if ($category_id == '') { 
     191            // 新規登録 
     192            $parent_category_id = $data['parent_category_id']; 
     193            $rank = null; 
     194            if ($parent_category_id == 0) { 
     195                // ROOT階層で最大のランクを取得する。 
     196                $where = 'parent_category_id = ?'; 
     197                $rank = $objQuery->max('rank', 'dtb_category', $where, array($parent_category_id)) + 1; 
     198            } else { 
     199                // 親のランクを自分のランクとする。 
     200                $where = 'category_id = ?'; 
     201                $rank = $objQuery->get('rank', 'dtb_category', $where, array($parent_category_id)); 
     202                // 追加レコードのランク以上のレコードを一つあげる。 
     203                $where = 'rank >= ?'; 
     204                $arrRawSql = array( 
     205                    'rank' => '(rank + 1)', 
     206                ); 
     207                $objQuery->update('dtb_category', array(), $where, array($rank), $arrRawSql); 
     208            } 
     209 
     210            $where = 'category_id = ?'; 
     211            // 自分のレベルを取得する(親のレベル + 1) 
     212            $level = $objQuery->get('level', 'dtb_category', $where, array($parent_category_id)) + 1; 
     213 
     214            $query['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 
     215            $query['category_name'] = $data['category_name']; 
     216            $query['parent_category_id'] = $data['parent_category_id']; 
     217            $query['create_date'] = 'CURRENT_TIMESTAMP'; 
     218            $query['creator_id']  = $_SESSION['member_id']; 
     219            $query['rank']        = $rank; 
     220            $query['level']       = $level; 
     221 
     222            $objQuery->insert('dtb_category', $query); 
     223        } else { 
     224            // 既存編集 
     225            $query['parent_category_id'] = $data['parent_category_id']; 
     226            $query['category_name'] = $data['category_name']; 
     227            $where = 'category_id = ?'; 
     228            $objQuery->update('dtb_category', $query, $where, array($category_id)); 
     229        } 
     230 
     231        $objQuery->commit(); 
    170232    } 
    171233 
Note: See TracChangeset for help on using the changeset viewer.