- Timestamp:
- 2014/05/21 14:05:46 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/helper/SC_Helper_Category.php
r23437 r23438 156 156 $arrTrail = $this->getTreeTrail($category_id, true); 157 157 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 } 164 169 } 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(); 170 232 } 171 233
Note: See TracChangeset
for help on using the changeset viewer.