Changeset 20210
- Timestamp:
- 2011/02/19 21:48:28 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php
r20116 r20210 24 24 // {{{ requires 25 25 require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php"); 26 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 26 27 27 28 /** … … 36 37 // {{{ properties 37 38 38 /** フォームパラメータ */39 var $objFormParam;40 41 39 // }}} 42 40 // {{{ functions … … 51 49 $this->tpl_subtitle = 'カテゴリー登録'; 52 50 $this->tpl_mainpage = 'products/category.tpl'; 53 $this->tpl_subnavi = 'products/subnavi.tpl';51 $this->tpl_subnavi = 'products/subnavi.tpl'; 54 52 $this->tpl_mainno = 'products'; 55 $this->tpl_subno = 'category';53 $this->tpl_subno = 'category'; 56 54 $this->tpl_onload = " fnSetFocus('category_name'); "; 57 55 } … … 73 71 */ 74 72 function action() { 75 $objSess = new SC_Session(); 76 $objDb = new SC_Helper_DB_Ex(); 73 $objSession = new SC_Session(); 74 $objDb = new SC_Helper_DB_Ex(); 75 $objFormParam = new SC_FormParam(); 77 76 78 77 // 認証可否の判定 79 SC_Utils_Ex::sfIsSuccess($objSess); 80 81 // パラメータ管理クラス 82 $this->objFormParam = new SC_FormParam(); 83 // パラメータ情報の初期化 84 $this->lfInitParam(); 85 // POST値の取得 86 $this->objFormParam->setParam($_POST); 87 88 // 通常時は親カテゴリを0に設定する。 89 $this->arrForm['parent_category_id'] = 90 isset($_POST['parent_category_id']) ? $_POST['parent_category_id'] : ""; 78 SC_Utils_Ex::sfIsSuccess($objSession); 79 80 // 入力パラメータ初期化 81 $this->initParam($objFormParam); 82 $objFormParam->setParam($_POST); 83 $objFormParam->convParam(); 91 84 92 85 switch($this->getMode()) { 86 // カテゴリ登録/編集実行 93 87 case 'edit': 94 $this->objFormParam->convParam(); 95 $arrRet = $this->objFormParam->getHashArray(); 96 $this->arrErr = $this->lfCheckError($arrRet); 97 98 if(count($this->arrErr) == 0) { 99 if($_POST['category_id'] == "") { 100 $objQuery = new SC_Query(); 101 $count = $objQuery->count("dtb_category"); 102 if($count < CATEGORY_MAX) { 103 $this->lfInsertCat($_POST['parent_category_id']); 104 } else { 105 print("カテゴリの登録最大数を超えました。"); 106 } 107 } else { 108 $this->lfUpdateCat($_POST['category_id']); 109 } 88 $category_id = $objFormParam->getValue('category_id'); 89 if ($category_id == '') { 90 $this->doRegister($objFormParam); 110 91 } else { 111 $this->arrForm = array_merge($this->arrForm, $this->objFormParam->getHashArray()); 112 $this->arrForm['category_id'] = $_POST['category_id']; 92 $this->doEdit($objFormParam); 113 93 } 114 94 break; 95 // 入力ボックスへ編集対象のカテゴリ名をセット 115 96 case 'pre_edit': 116 // 編集項目のカテゴリ名をDBより取得する。 117 $objQuery = new SC_Query(); 118 $where = "category_id = ?"; 119 $cat_name = $objQuery->get("category_name", "dtb_category", $where, array($_POST['category_id'])); 120 // 入力項目にカテゴリ名を入力する。 121 $this->arrForm['category_name'] = $cat_name; 122 // POSTデータを引き継ぐ 123 $this->arrForm['category_id'] = $_POST['category_id']; 124 break; 97 $this->doPreEdit($objFormParam); 98 break; 99 // カテゴリ削除 125 100 case 'delete': 126 $objQuery = new SC_Query(); 127 // 子カテゴリのチェック 128 $where = "parent_category_id = ? AND del_flg = 0"; 129 $count = $objQuery->count("dtb_category", $where, array($_POST['category_id'])); 130 if($count != 0) { 131 $this->arrErr['category_name'] = "※ 子カテゴリが存在するため削除できません。<br>"; 132 } 133 // 登録商品のチェック 134 $table = "dtb_product_categories AS T1 LEFT JOIN dtb_products AS T2 ON T1.product_id = T2.product_id"; 135 $where = "T1.category_id = ? AND T2.del_flg = 0"; 136 $count = $objQuery->count($table, $where, array($_POST['category_id'])); 137 if($count != 0) { 138 $this->arrErr['category_name'] = "※ カテゴリ内に商品が存在するため削除できません。<br>"; 139 } 140 141 if(!isset($this->arrErr['category_name'])) { 142 // ランク付きレコードの削除(※処理負荷を考慮してレコードごと削除する。) 143 $objDb->sfDeleteRankRecord("dtb_category", "category_id", $_POST['category_id'], "", true); 144 } 145 break; 101 $this->doDelete($objFormParam, $objDb); 102 break; 103 // 表示順を上へ 146 104 case 'up': 147 $objQuery = new SC_Query(); 148 $objQuery->begin(); 149 $up_id = $this->lfGetUpRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']); 150 if($up_id != "") { 151 // 上のグループのrankから減算する数 152 $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']); 153 // 自分のグループのrankに加算する数 154 $up_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id); 155 if($my_count > 0 && $up_count > 0) { 156 // 自分のグループに加算 157 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id'], $up_count); 158 // 上のグループから減算 159 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id, $my_count); 160 } 161 } 162 $objQuery->commit(); 163 break; 105 $this->doUp($objFormParam); 106 break; 107 // 表示順を下へ 164 108 case 'down': 165 $objQuery = new SC_Query(); 166 $objQuery->begin(); 167 $down_id = $this->lfGetDownRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']); 168 if($down_id != "") { 169 // 下のグループのrankに加算する数 170 $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']); 171 // 自分のグループのrankから減算する数 172 $down_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id); 173 if($my_count > 0 && $down_count > 0) { 174 // 自分のグループから減算 175 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id, $my_count); 176 // 下のグループに加算 177 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id'], $down_count); 178 } 179 } 180 $objQuery->commit(); 181 break; 109 $this->doDown($objFormParam); 110 break; 111 // XXX 使われていないコード? 182 112 case 'moveByDnD': 183 113 // DnDしたカテゴリと移動先のセットを分解する … … 233 163 } 234 164 break; 165 // カテゴリツリークリック時 235 166 case 'tree': 236 167 break; 168 // CSVダウンロード 237 169 case 'csv': 238 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 239 170 // CSVを送信する。正常終了の場合、終了。 240 171 $objCSV = new SC_Helper_CSV_Ex(); 241 242 // CSVを送信する。正常終了の場合、終了。243 172 $objCSV->sfDownloadCategoryCsv() && exit; 244 245 173 break; 246 174 default: 247 $this->arrForm['parent_category_id'] = 0; 248 break; 249 } 250 251 $this->arrList = $this->lfGetCat($this->arrForm['parent_category_id']); 252 $this->arrTree = $objDb->sfGetCatTree($this->arrForm['parent_category_id']); 175 break; 176 } 177 178 $parent_category_id = $objFormParam->getValue('parent_category_id'); 179 // 空の場合は親カテゴリを0にする 180 if (empty($parent_category_id)) { 181 $parent_category_id = 0; 182 } 183 // 親カテゴリIDの保持 184 $this->arrForm['parent_category_id'] = $parent_category_id; 185 // カテゴリ一覧を取得 186 $this->arrList = $this->findCategoiesByParentCategoryId($parent_category_id); 187 // カテゴリツリーを取得 188 $this->arrTree = $objDb->sfGetCatTree($parent_category_id); 189 // ぱんくずの生成 253 190 $arrBread = array(); 254 $objDb->findTree($this->arrTree, $this->arrForm['parent_category_id'], $arrBread); 255 $this->breadcrumbs = "ホーム"; 191 $objDb->findTree($this->arrTree, $parent_category_id, $arrBread); 192 $this->breadcrumbs = "ホーム" . $this->createBreaCrumbs($arrBread); 193 } 194 195 /** 196 * カテゴリの削除を実行する. 197 * 198 * 下記の場合は削除を実施せず、エラーメッセージを表示する. 199 * 200 * - 削除対象のカテゴリに、子カテゴリが1つ以上ある場合 201 * - 削除対象のカテゴリを、登録商品が使用している場合 202 * 203 * カテゴリの削除は、物理削除で行う. 204 * 205 * @param SC_FormParam $objFormParam 206 * @param SC_Helper_Db $objDb 207 * @return void 208 */ 209 function doDelete(&$objFormParam, &$objDb) { 210 $category_id = $objFormParam->getValue('category_id'); 211 $objQuery =& SC_Query::getSingletonInstance(); 212 213 // 子カテゴリのチェック 214 $where = "parent_category_id = ? AND del_flg = 0"; 215 $count = $objQuery->count("dtb_category", $where, array($category_id)); 216 if ($count > 0) { 217 $this->arrErr['category_name'] = "※ 子カテゴリが存在するため削除できません。<br/>"; 218 return; 219 } 220 // 登録商品のチェック 221 $table = "dtb_product_categories AS T1 LEFT JOIN dtb_products AS T2 ON T1.product_id = T2.product_id"; 222 $where = "T1.category_id = ? AND T2.del_flg = 0"; 223 $count = $objQuery->count($table, $where, array($category_id)); 224 if ($count > 0) { 225 $this->arrErr['category_name'] = "※ カテゴリ内に商品が存在するため削除できません。<br/>"; 226 return; 227 } 228 229 // ランク付きレコードの削除(※処理負荷を考慮してレコードごと削除する。) 230 $objDb->sfDeleteRankRecord("dtb_category", "category_id", $category_id, "", true); 231 } 232 233 /** 234 * 編集対象のカテゴリ名を, 入力ボックスへ表示する. 235 * 236 * @param SC_FormParam $objFormParam 237 * @return void 238 */ 239 function doPreEdit(&$objFormParam) { 240 $category_id = $objFormParam->getValue('category_id'); 241 242 $objQuery =& SC_Query::getSingletonInstance(); 243 244 // 編集対象のカテゴリ名をDBより取得する 245 $where = "category_id = ?"; 246 $category_name = $objQuery->get("category_name", "dtb_category", $where, array($category_id)); 247 248 // 入力ボックスへカテゴリ名を保持する. 249 $this->arrForm['category_name'] = $category_name; 250 // カテゴリIDを保持する. 251 $this->arrForm['category_id'] = $category_id; 252 } 253 254 /** 255 * カテゴリの編集を実行する. 256 * 257 * 下記の場合は, 編集を実行せず、エラーメッセージを表示する 258 * 259 * - カテゴリ名がすでに使用されている場合 260 * 261 * @param SC_FormParam $objFormParam 262 * @return void 263 */ 264 function doEdit(&$objFormParam) { 265 // 入力項目チェック 266 $arrErr = $objFormParam->checkError(); 267 if (count($arrErr) > 0) { 268 $this->arrErr = $arrErr; 269 $this->arrForm['category_id'] = $objFormParam->getValue('category_id'); 270 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 271 return; 272 } 273 274 // 重複チェック 275 $objQuery =& SC_Query::getSingletonInstance(); 276 $where = "parent_category_id = ? AND category_id <> ? AND category_name = ?"; 277 $count = $objQuery->count("dtb_category", 278 $where, 279 array($objFormParam->getValue('parent_category_id'), 280 $objFormParam->getValue('category_id'), 281 $objFormParam->getValue('category_name'))); 282 if ($count > 0) { 283 $this->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; 284 $this->arrForm['category_id'] = $objFormParam->getValue('category_id'); 285 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 286 return; 287 } 288 289 // カテゴリ更新 290 $arrCategory = array(); 291 $arrCategory['category_name'] = $objFormParam->getValue('category_name'); 292 $arrCategory['update_date'] = 'NOW()'; 293 $this->updateCategory($objFormParam->getValue('category_id'), $arrCategory); 294 } 295 296 /** 297 * カテゴリの登録を実行する. 298 * 299 * 下記の場合は, 登録を実行せず、エラーメッセージを表示する 300 * 301 * - カテゴリ登録数の上限を超える場合 302 * - 階層登録数の上限を超える場合 303 * - カテゴリ名がすでに使用されている場合 304 * 305 * @param SC_FormParam $objFormParam 306 * @return void 307 */ 308 function doRegister(&$objFormParam) { 309 // 入力項目チェック 310 $arrErr = $objFormParam->checkError(); 311 if (count($arrErr) > 0) { 312 $this->arrErr = $arrErr; 313 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 314 return; 315 } 316 317 // 登録数上限チェック 318 $objQuery =& SC_Query::getSingletonInstance(); 319 $where = "del_flg = 0"; 320 $count = $objQuery->count("dtb_category", $where); 321 if ($count >= CATEGORY_MAX) { 322 $this->arrErr['category_name'] = "※ カテゴリの登録最大数を超えました。<br/>"; 323 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 324 return; 325 } 326 327 // 階層上限チェック 328 if ($this->isOverLevel()) { 329 $this->arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 330 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 331 return; 332 } 333 334 // 重複チェック 335 $where = "parent_category_id = ? AND category_name = ?"; 336 $count = $objQuery->count("dtb_category", 337 $where, 338 array($objFormParam->getValue('parent_category_id'), 339 $objFormParam->getValue('category_name'))); 340 if ($count > 0) { 341 $this->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; 342 $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 343 return; 344 } 345 346 // カテゴリ登録 347 $this->registerCategory($objFormParam->getValue('parent_category_id'), 348 $objFormParam->getValue('category_name'), 349 $_SESSION['member_id']); 350 } 351 352 /** 353 * カテゴリの表示順序を上へ移動する. 354 * 355 * @param SC_FormParam $objFormParam 356 * @return void 357 */ 358 function doUp(&$objFormParam) { 359 $category_id = $objFormParam->getValue('category_id'); 360 361 $objQuery =& SC_Query::getSingletonInstance(); 362 $objQuery->begin(); 363 $up_id = $this->lfGetUpRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 364 if ($up_id != "") { 365 // 上のグループのrankから減算する数 366 $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 367 // 自分のグループのrankに加算する数 368 $up_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id); 369 if ($my_count > 0 && $up_count > 0) { 370 // 自分のグループに加算 371 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id, $up_count); 372 // 上のグループから減算 373 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id, $my_count); 374 } 375 } 376 $objQuery->commit(); 377 } 378 379 /** 380 * カテゴリの表示順序を下へ移動する. 381 * 382 * @param SC_FormParam $objFormParam 383 * @return void 384 */ 385 function doDown(&$objFormParam) { 386 $category_id = $objFormParam->getValue('category_id'); 387 388 $objQuery =& SC_Query::getSingletonInstance(); 389 $objQuery->begin(); 390 $down_id = $this->lfGetDownRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 391 if ($down_id != "") { 392 // 下のグループのrankに加算する数 393 $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 394 // 自分のグループのrankから減算する数 395 $down_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id); 396 if ($my_count > 0 && $down_count > 0) { 397 // 自分のグループから減算 398 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id, $my_count); 399 // 下のグループに加算 400 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id, $down_count); 401 } 402 } 403 $objQuery->commit(); 404 } 405 406 /** 407 * パラメータの初期化を行う 408 * 409 * @param SC_FormParam $objFormParam 410 * @return void 411 */ 412 function initParam(&$objFormParam) { 413 $objFormParam->addParam("親カテゴリID", "parent_category_id", null, null, array()); 414 $objFormParam->addParam("カテゴリID", "category_id", null, null, array()); 415 $objFormParam->addParam("カテゴリ名", "category_name", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 416 } 417 418 /** 419 * ぱんくず文字列を生成する. 420 * 421 * @param array $arrBread カテゴリ配列 422 * @return string ぱんくず文字列 423 */ 424 function createBreaCrumbs($arrBread) { 425 $breadcrumbs = ''; 256 426 // TODO JSON で投げて, フロント側で処理した方が良い? 257 for ($i = count($arrBread) - 1; $i >= 0; $i--) { 427 $count = count($arrBread) - 1; 428 for ($i = $count; $i >= 0; $i--) { 258 429 // フロント側で > へエスケープするため, ここでは > を使用 259 if ($i === count($arrBread) - 1) {260 $ this->breadcrumbs .= ' > ';430 if ($i === $count) { 431 $breadcrumbs .= ' > '; 261 432 } 262 $ this->breadcrumbs .= $arrBread[$i]['category_name'];433 $breadcrumbs .= $arrBread[$i]['category_name']; 263 434 if ($i > 0) { 264 $ this->breadcrumbs .= ' > ';435 $breadcrumbs .= ' > '; 265 436 } 266 437 } 267 } 268 269 /** 270 * デストラクタ. 271 * 272 * @return void 273 */ 274 function destroy() { 275 parent::destroy(); 276 } 277 278 279 280 // カテゴリの新規追加 281 function lfInsertCat($parent_category_id) { 282 283 $objQuery = new SC_Query(); 284 $objQuery->begin(); // トランザクションの開始 285 286 287 if($parent_category_id == 0) { 438 return $breadcrumbs; 439 } 440 441 /** 442 * 親カテゴリIDでカテゴリを検索する. 443 * 444 * - 表示順の降順でソートする 445 * - 有効なカテゴリを返す(del_flag = 0) 446 * 447 * @param SC_Query $objQuery 448 * @param int $parent_category_id 親カテゴリID 449 * @return array カテゴリの配列 450 */ 451 function findCategoiesByParentCategoryId($parent_category_id) { 452 if (!$parent_category_id) { 453 $parent_category_id = 0; 454 } 455 $objQuery =& SC_Query::getSingletonInstance(); 456 $col = "category_id, category_name, level, rank"; 457 $where = "del_flg = 0 AND parent_category_id = ?"; 458 $objQuery->setOption("ORDER BY rank DESC"); 459 return $objQuery->select($col, "dtb_category", $where, array($parent_category_id)); 460 } 461 462 /** 463 * カテゴリを更新する 464 * 465 * @param integer $category_id 更新対象のカテゴリID 466 * @param array 更新する カラム名 => 値 の連想配列 467 * @return void 468 */ 469 function updateCategory($category_id, $arrCategory) { 470 $objQuery =& SC_Query::getSingletonInstance(); 471 $objQuery->begin(); 472 $where = "category_id = ?"; 473 $objQuery->update("dtb_category", $arrCategory, $where, array($category_id)); 474 $objQuery->commit(); 475 } 476 477 /** 478 * カテゴリを登録する 479 * 480 * @param integer 親カテゴリID 481 * @param string カテゴリ名 482 * @param integer 作成者のID 483 * @return void 484 */ 485 function registerCategory($parent_category_id, $category_name, $creator_id) { 486 $objQuery =& SC_Query::getSingletonInstance(); 487 $objQuery->begin(); 488 489 $rank = null; 490 if ($parent_category_id == 0) { 288 491 // ROOT階層で最大のランクを取得する。 289 492 $where = "parent_category_id = ?"; … … 302 505 $level = $objQuery->get("level", "dtb_category", $where, array($parent_category_id)) + 1; 303 506 304 // 入力データを渡す。 305 $sqlval = $this->objFormParam->getHashArray(); 306 $sqlval['create_date'] = "Now()"; 307 $sqlval['update_date'] = "Now()"; 308 $sqlval['creator_id'] = $_SESSION['member_id']; 309 $sqlval['parent_category_id'] = $parent_category_id; 310 $sqlval['rank'] = $rank; 311 $sqlval['level'] = $level; 312 313 // INSERTの実行 314 $sqlval['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 315 $objQuery->insert("dtb_category", $sqlval); 507 $arrCategory = array(); 508 $arrCategory['category_name'] = $category_name; 509 $arrCategory['parent_category_id'] = $parent_category_id; 510 $arrCategory['create_date'] = "Now()"; 511 $arrCategory['update_date'] = "Now()"; 512 $arrCategory['creator_id'] = $creator_id; 513 $arrCategory['rank'] = $rank; 514 $arrCategory['level'] = $level; 515 $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 516 $objQuery->insert("dtb_category", $arrCategory); 316 517 317 518 $objQuery->commit(); // トランザクションの終了 318 519 } 319 320 // カテゴリの編集 321 function lfUpdateCat($category_id) { 322 $objQuery = new SC_Query(); 323 // 入力データを渡す。 324 $sqlval = $this->objFormParam->getHashArray(); 325 $sqlval['update_date'] = "Now()"; 326 $where = "category_id = ?"; 327 $objQuery->update("dtb_category", $sqlval, $where, array($category_id)); 328 } 329 330 // カテゴリの取得 331 function lfGetCat($parent_category_id) { 332 $objQuery = new SC_Query(); 333 334 if($parent_category_id == "") { 335 $parent_category_id = '0'; 336 } 337 338 $col = "category_id, category_name, level, rank"; 339 $where = "del_flg = 0 AND parent_category_id = ?"; 340 $objQuery->setOption("ORDER BY rank DESC"); 341 $arrRet = $objQuery->select($col, "dtb_category", $where, array($parent_category_id)); 342 return $arrRet; 343 } 344 345 /* パラメータ情報の初期化 */ 346 function lfInitParam() { 347 $this->objFormParam->addParam("カテゴリ名", "category_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 348 } 349 350 /* 入力内容のチェック */ 351 function lfCheckError($array) { 352 353 $objErr = new SC_CheckError($array); 354 $objErr->arrErr = $this->objFormParam->checkError(); 355 356 // 階層チェック 357 if(!isset($objErr->arrErr['category_name'])) { 358 $objQuery = new SC_Query(); 359 $level = $objQuery->get("level", "dtb_category", "category_id = ?", array($_POST['parent_category_id'])); 360 361 if($level >= LEVEL_MAX) { 362 $objErr->arrErr['category_name'] = "※ ".LEVEL_MAX."階層以上の登録はできません。<br>"; 363 } 364 } 365 366 if (!isset($_POST['category_id'])) $_POST['category_id'] = ""; 367 368 // 369 370 // 重複チェック 371 if(!isset($objErr->arrErr['category_name'])) { 372 $objQuery = new SC_Query(); 373 $where = "parent_category_id = ? AND category_name = ?"; 374 $arrRet = $objQuery->select("category_id, category_name", "dtb_category", $where, array($_POST['parent_category_id'], $array['category_name'])); 375 376 if (empty($arrRet)) { 377 $arrRet = array(array("category_id" => "", "category_name" => "")); 378 } 379 380 // 編集中のレコード以外に同じ名称が存在する場合 381 if ($arrRet[0]['category_id'] != $_POST['category_id'] 382 && $arrRet[0]['category_name'] == $_POST['category_name']) { 383 $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br>"; 384 } 385 } 386 387 return $objErr->arrErr; 388 } 389 520 521 /** 522 * カテゴリの階層が上限を超えているかを判定する 523 * 524 * @param integer 親カテゴリID 525 * @param 超えている場合 true 526 */ 527 function isOverLevel($parent_category_id) { 528 $objQuery =& SC_Query::getSingletonInstance(); 529 $level = $objQuery->get("level", "dtb_category", "category_id = ?", array($parent_category_id)); 530 return $level >= LEVEL_MAX; 531 } 532 533 /** 534 * デストラクタ. 535 * 536 * @return void 537 */ 538 function destroy() { 539 parent::destroy(); 540 } 390 541 391 542 // 並びが1つ下のIDを取得する。 … … 460 611 } 461 612 } 462 ?>
Note: See TracChangeset
for help on using the changeset viewer.