Changeset 21356
- Timestamp:
- 2011/11/26 12:15:56 (11 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
r21317 r21356 82 82 // カテゴリ登録/編集実行 83 83 case 'edit': 84 $category_id = $objFormParam->getValue('category_id'); 85 if ($category_id == '') { 86 $this->doRegister($objFormParam); 87 } else { 88 $this->doEdit($objFormParam); 84 $this->doEdit($objFormParam); 85 // エラーがあるときは入力値の再表示 86 if (!empty($this->arrErr)) { 87 $this->arrForm = $objFormParam->getHashArray(); 89 88 } 90 89 break; … … 105 104 $this->doDown($objFormParam); 106 105 break; 107 // XXX 使われていないコード?106 // FIXME r19909 によってテンプレートが削除されている 108 107 case 'moveByDnD': 109 108 // DnDしたカテゴリと移動先のセットを分解する … … 241 240 // 編集対象のカテゴリ名をDBより取得する 242 241 $where = "category_id = ?"; 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 * 下記の場合は, 編集を実行せず、エラーメッセージを表示する 242 $arrRes = $objQuery->getRow("*", "dtb_category", $where, array($category_id)); 243 244 $objFormParam->setParam($arrRes); 245 246 $this->arrForm = $objFormParam->getHashArray(); 247 } 248 249 /** 250 * カテゴリの登録・編集を実行する. 251 * 252 * 下記の場合は, 登録・編集を実行せず、エラーメッセージを表示する 255 253 * 256 254 * - カテゴリ名がすでに使用されている場合 255 * - 階層登録数の上限を超える場合 (登録時のみ評価) 256 * - カテゴリ名がすでに使用されている場合 (登録時のみ評価) 257 257 * 258 258 * @param SC_FormParam $objFormParam … … 260 260 */ 261 261 function doEdit(&$objFormParam) { 262 $objQuery =& SC_Query_Ex::getSingletonInstance(); 263 262 264 // 入力項目チェック 263 265 $arrErr = $objFormParam->checkError(); 264 266 if (count($arrErr) > 0) { 265 267 $this->arrErr = $arrErr; 266 $this->arrForm['category_id'] = $objFormParam->getValue('category_id');267 $this->arrForm['category_name'] = $objFormParam->getValue('category_name');268 268 return; 269 269 } 270 270 271 $category_id = $objFormParam->getValue('category_id'); 272 $parent_category_id = $objFormParam->getValue('parent_category_id'); 273 $category_name = $objFormParam->getValue('category_name'); 274 275 // 追加か 276 $add = strlen($category_id) === 0; 277 278 // 追加の場合に固有のチェック 279 if ($add) { 280 // 登録数上限チェック 281 $where = "del_flg = 0"; 282 $count = $objQuery->count("dtb_category", $where); 283 if ($count >= CATEGORY_MAX) { 284 $this->arrErr['category_name'] = "※ カテゴリの登録最大数を超えました。<br/>"; 285 return; 286 } 287 288 // 階層上限チェック 289 if ($this->isOverLevel($parent_category_id)) { 290 $this->arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 291 return; 292 } 293 } 294 271 295 // 重複チェック 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'))); 296 $arrWhereVal = array(); 297 $where = 'del_flg = 0 AND parent_category_id = ? AND category_name = ?'; 298 $arrWhereVal[] = $parent_category_id; 299 $arrWhereVal[] = $category_name; 300 // 更新の場合、抽出対象から自己を除外する 301 if (!$add) { 302 $where .= ' AND category_id <> ?'; 303 $arrWhereVal[] = $category_id; 304 } 305 $count = $objQuery->count('dtb_category', $where, $arrWhereVal); 279 306 if ($count > 0) { 280 307 $this->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; 281 $this->arrForm['category_id'] = $objFormParam->getValue('category_id');282 $this->arrForm['category_name'] = $objFormParam->getValue('category_name');283 308 return; 284 309 } 285 310 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']); 311 $arrCategory = $objFormParam->getDbArray(); 312 313 // 追加 314 if ($add) { 315 $this->registerCategory($arrCategory); 316 } 317 // 更新 318 else { 319 unset($arrCategory['category_id']); 320 $this->updateCategory($category_id, $arrCategory); 321 } 347 322 } 348 323 … … 437 412 * カテゴリを更新する 438 413 * 439 * @param integer $category_id 更新対象のカテゴリID 440 * @param array 更新する カラム名 => 値 の連想配列 414 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 441 415 * @return void 442 416 */ 443 417 function updateCategory($category_id, $arrCategory) { 444 418 $objQuery =& SC_Query_Ex::getSingletonInstance(); 419 420 $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; 421 445 422 $objQuery->begin(); 446 423 $where = "category_id = ?"; … … 452 429 * カテゴリを登録する 453 430 * 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(); 431 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 432 * @return void 433 */ 434 function registerCategory($arrCategory) { 435 $objQuery =& SC_Query_Ex::getSingletonInstance(); 436 437 $parent_category_id = $arrCategory['parent_category_id']; 438 461 439 $objQuery->begin(); 462 440 … … 479 457 $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1; 480 458 481 $arrCategory = array();482 $arrCategory['category_name'] = $category_name;483 $arrCategory['parent_category_id'] = $parent_category_id;484 459 $arrCategory['create_date'] = 'CURRENT_TIMESTAMP'; 485 460 $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; 486 $arrCategory['creator_id'] = $ creator_id;461 $arrCategory['creator_id'] = $_SESSION['member_id']; 487 462 $arrCategory['rank'] = $rank; 488 463 $arrCategory['level'] = $level; 489 464 $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 465 490 466 $objQuery->insert("dtb_category", $arrCategory); 491 467
Note: See TracChangeset
for help on using the changeset viewer.