Changeset 21405 for branches/version-2_11-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php
- Timestamp:
- 2012/01/17 16:21:07 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.