- Timestamp:
- 2007/10/24 14:01:35 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/helper/SC_Helper_DB.php
r16527 r16546 211 211 // ROOTカテゴリIDの取得 212 212 $arrRet = $this->sfGetParents($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $category_id); 213 $root_id = $arrRet[0];213 $root_id = isset($arrRet[0]) ? $arrRet[0] : ""; 214 214 } else { 215 215 // ROOTカテゴリIDをなしに設定する … … 337 337 $main_image_path = IMAGE_SAVE_DIR . basename($objPage->arrProductsClass[$cnt]["main_image"]); 338 338 if(file_exists($main_image_path)) { 339 list($image_width, $image_height) = getimagesize($main_image_path);339 list($image_width, $image_height) = getimagesize($main_image_path); 340 340 } else { 341 $image_width = 0;342 $image_height = 0;341 $image_width = 0; 342 $image_height = 0; 343 343 } 344 344 345 345 $objPage->arrProductsClass[$cnt]["tpl_image_width"] = $image_width + 60; 346 $objPage->arrProductsClass[$cnt]["tpl_image_height"] = $image_height + 80;346 $objPage->arrProductsClass[$cnt]["tpl_image_height"] = $image_height + 80; 347 347 // 価格の登録 348 348 if ($arrData['price02'] != "") { … … 556 556 // 商品が属するカテゴリIDを縦に取得 557 557 $objQuery = new SC_Query(); 558 $arrCatID = sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);558 $arrCatID = $this->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 559 559 $ConbName = ""; 560 560 … … 652 652 function sfGetLevelCatList($parent_zero = true) { 653 653 $objQuery = new SC_Query(); 654 $col = "category_id, category_name, level";654 $col = "category_id, parent_category_id, category_name, level"; 655 655 $where = "del_flg = 0"; 656 656 $objQuery->setoption("ORDER BY rank DESC"); … … 670 670 671 671 $arrOutput[$cnt] = ""; 672 /* 673 for($n = 1; $n < $arrRet[$cnt]['level']; $n++) { 674 $arrOutput[$cnt].= " "; 675 } 676 */ 677 for($cat_cnt = 0; $cat_cnt < $arrRet[$cnt]['level']; $cat_cnt++) { 678 $arrOutput[$cnt].= CATEGORY_HEAD; 679 } 680 $arrOutput[$cnt].= $arrRet[$cnt]['category_name']; 681 } 672 673 // 子カテゴリから親カテゴリを検索 674 $parent_category_id = $arrRet[$cnt]['parent_category_id']; 675 for($cat_cnt = $arrRet[$cnt]['level']; $cat_cnt > 1; $cat_cnt--) { 676 677 foreach ($arrRet as $arrCat) { 678 // 親が見つかったら順番に代入 679 if ($arrCat['category_id'] == $parent_category_id) { 680 681 $arrOutput[$cnt] = CATEGORY_HEAD 682 . $arrCat['category_name'] . $arrOutput[$cnt]; 683 $parent_category_id = $arrCat['parent_category_id']; 684 } 685 } 686 } 687 $arrOutput[$cnt].= CATEGORY_HEAD . $arrRet[$cnt]['category_name']; 688 } 689 682 690 return array($arrValue, $arrOutput); 683 691 } 684 692 685 693 /** 686 * 選択中の カテゴリを取得する.694 * 選択中の商品のカテゴリを取得する. 687 695 * 688 696 * @param integer $product_id プロダクトID 689 697 * @param integer $category_id カテゴリID 690 * @return integer 選択中のカテゴリID691 * 692 */ 693 function sfGetCategoryId($product_id, $category_id ) {694 695 if(!$this->g_category_on) {698 * @return array 選択中の商品のカテゴリIDの配列 699 * 700 */ 701 function sfGetCategoryId($product_id, $category_id = 0) { 702 703 if(!$this->g_category_on) { 696 704 $this->g_category_on = true; 697 705 $category_id = (int) $category_id; 698 706 $product_id = (int) $product_id; 699 707 if(SC_Utils_Ex::sfIsInt($category_id) && $this->sfIsRecord("dtb_category","category_id", $category_id)) { 700 $this->g_category_id = $category_id;708 $this->g_category_id = array($category_id); 701 709 } else if (SC_Utils_Ex::sfIsInt($product_id) && $this->sfIsRecord("dtb_products","product_id", $product_id, "status = 1")) { 702 710 $objQuery = new SC_Query(); 703 711 $where = "product_id = ?"; 704 $category_id = $objQuery->get ("dtb_products", "category_id", $where, array($product_id));712 $category_id = $objQuery->getCol("dtb_product_categories", "category_id", "product_id = ?", array($product_id)); 705 713 $this->g_category_id = $category_id; 706 714 } else { 707 // 不正な場合は、 0を返す。708 $this->g_category_id = 0;715 // 不正な場合は、空の配列を返す。 716 $this->g_category_id = array(); 709 717 } 710 718 } 711 719 return $this->g_category_id; 720 } 721 722 /** 723 * 商品をカテゴリの先頭に追加する. 724 * 725 * @param integer $category_id カテゴリID 726 * @param integer $product_id プロダクトID 727 * @return void 728 */ 729 function addProductBeforCategories($category_id, $product_id) { 730 731 $sqlval = array("category_id" => $category_id, 732 "product_id" => $product_id); 733 734 $objQuery = new SC_Query(); 735 736 // 現在の商品カテゴリを取得 737 $arrCat = $objQuery->select("product_id, category_id, rank", 738 "dtb_product_categories", 739 "category_id = ?", 740 array($category_id)); 741 742 $max = 0; 743 foreach ($arrCat as $val) { 744 // 同一商品が存在する場合は登録しない 745 if ($val["product_id"] == $product_id) { 746 return; 747 } 748 // 最上位ランクを取得 749 $max = ($max > $val["rank"]) ? $val["rank"] : $max; 750 } 751 $sqlval["rank"] = $max; 752 $objQuery->insert("dtb_product_categories", $sqlval); 753 } 754 755 /** 756 * 商品をカテゴリの末尾に追加する. 757 * 758 * @param integer $category_id カテゴリID 759 * @param integer $product_id プロダクトID 760 * @return void 761 */ 762 function addProductAfterCategories($category_id, $product_id) { 763 $sqlval = array("category_id" => $category_id, 764 "product_id" => $product_id); 765 766 $objQuery = new SC_Query(); 767 768 // 現在の商品カテゴリを取得 769 $arrCat = $objQuery->select("product_id, category_id, rank", 770 "dtb_product_categories", 771 "category_id = ?", 772 array($category_id)); 773 774 $min = 0; 775 foreach ($arrCat as $val) { 776 // 同一商品が存在する場合は登録しない 777 if ($val["product_id"] == $product_id) { 778 return; 779 } 780 // 最下位ランクを取得 781 $min = ($min < $val["rank"]) ? $val["rank"] : $min; 782 } 783 $sqlval["rank"] = $min; 784 $objQuery->insert("dtb_product_categories", $sqlval); 785 } 786 787 /** 788 * 商品をカテゴリから削除する. 789 * 790 * @param integer $category_id カテゴリID 791 * @param integer $product_id プロダクトID 792 * @return void 793 */ 794 function removeProductByCategories($category_id, $product_id) { 795 $sqlval = array("category_id" => $category_id, 796 "product_id" => $product_id); 797 $objQuery = new SC_Query(); 798 $objQuery->delete("dtb_product_categories", 799 "category_id = ? AND product_id = ?", $sqlval); 800 } 801 802 /** 803 * 商品カテゴリを更新する. 804 * 805 * @param array $arrCategory_id 登録するカテゴリIDの配列 806 * @param integer $product_id プロダクトID 807 * @return void 808 */ 809 function updateProductCategories($arrCategory_id, $product_id) { 810 $objQuery = new SC_Query(); 811 812 // 現在のカテゴリ情報を取得 813 $arrCurrentCat = $objQuery->select("product_id, category_id, rank", 814 "dtb_product_categories", 815 "product_id = ?", 816 array($product_id)); 817 818 // 登録するカテゴリ情報と比較 819 foreach ($arrCurrentCat as $val) { 820 821 // 登録しないカテゴリを削除 822 if (!in_array($val["category_id"], $arrCategory_id)) { 823 $this->removeProductByCategories($val["category_id"], $product_id); 824 } 825 } 826 827 // カテゴリを登録 828 foreach ($arrCategory_id as $category_id) { 829 $this->addProductBeforCategories($category_id, $product_id); 830 } 712 831 } 713 832 … … 727 846 //各カテゴリ内の商品数を数えて格納 728 847 $sql = " INSERT INTO dtb_category_count(category_id, product_count, create_date) "; 729 $sql .= " SELECT T1.category_id, count(T2.category_id), now() FROM dtb_category AS T1 LEFT JOIN dtb_products AS T2 "; 730 $sql .= " ON T1.category_id = T2.category_id "; 731 $sql .= " WHERE T2.del_flg = 0 AND T2.status = 1 "; 848 $sql .= " SELECT T1.category_id, count(T2.category_id), now() "; 849 $sql .= " FROM dtb_category AS T1 LEFT JOIN dtb_product_categories AS T2"; 850 $sql .= " ON T1.category_id = T2.category_id "; 851 $sql .= " LEFT JOIN dtb_products AS T3"; 852 $sql .= " ON T2.product_id = T3.product_id"; 853 $sql .= " WHERE T3.del_flg = 0 AND T3.status = 1 "; 732 854 $sql .= " GROUP BY T1.category_id, T2.category_id "; 733 855 $objQuery->query($sql); … … 846 968 $objQuery = new SC_Query(); 847 969 $col = $pid_name . "," . $id_name; 848 $arrData = $objQuery->select($col, $table);970 $arrData = $objQuery->select($col, $table); 849 971 850 972 $arrParents = array(); … … 952 1074 $up_id = $objQuery->get($table, $colname, $where, array($uprank)); 953 1075 // ランク入れ替えの実行 954 $sqlup = "UPDATE $table SET rank = ? , update_date = Now()WHERE $colname = ?";1076 $sqlup = "UPDATE $table SET rank = ? WHERE $colname = ?"; 955 1077 $objQuery->exec($sqlup, array($rank + 1, $id)); 956 1078 $objQuery->exec($sqlup, array($rank, $up_id)); … … 988 1110 $down_id = $objQuery->get($table, $colname, $where, array($downrank)); 989 1111 // ランク入れ替えの実行 990 $sqlup = "UPDATE $table SET rank = ? , update_date = Now()WHERE $colname = ?";1112 $sqlup = "UPDATE $table SET rank = ? WHERE $colname = ?"; 991 1113 $objQuery->exec($sqlup, array($rank - 1, $id)); 992 1114 $objQuery->exec($sqlup, array($rank, $down_id)); … … 1011 1133 // 自身のランクを取得する 1012 1134 $rank = $objQuery->get($tableName, "rank", "$keyIdColumn = ?", array($keyId)); 1013 $max = $objQuery->max($tableName, "rank", $where );1135 $max = $objQuery->max($tableName, "rank", $where, array($keyId)); 1014 1136 1015 1137 // 値の調整(逆順) … … 1026 1148 1027 1149 // 指定した順位の商品から移動させる商品までのrankを1つずらす 1028 $sql = "UPDATE $tableName SET rank = $term , update_date = NOW() WHERE rank BETWEEN ? AND ? AND del_flg = 0";1150 $sql = "UPDATE $tableName SET rank = $term WHERE rank BETWEEN ? AND ?"; 1029 1151 if($where != "") { 1030 1152 $sql.= " AND $where"; … … 1035 1157 1036 1158 // 指定した順位へrankを書き換える。 1037 $sql = "UPDATE $tableName SET rank = ? , update_date = NOW() WHERE $keyIdColumn = ? AND del_flg = 0";1159 $sql = "UPDATE $tableName SET rank = ? WHERE $keyIdColumn = ? "; 1038 1160 if($where != "") { 1039 1161 $sql.= " AND $where"; … … 1070 1192 if(!$delete) { 1071 1193 // ランクを最下位にする、DELフラグON 1072 $sqlup = "UPDATE $table SET rank = 0, del_flg = 1 , update_date = Now()";1194 $sqlup = "UPDATE $table SET rank = 0, del_flg = 1 "; 1073 1195 $sqlup.= "WHERE $colname = ?"; 1074 1196 // UPDATEの実行
Note: See TracChangeset
for help on using the changeset viewer.
