Index: branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php	(revision 22567)
+++ branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php	(revision 22582)
@@ -77,32 +77,26 @@
         $objFormParam->setParam($_POST);
         $objFormParam->convParam();
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $objDb = new SC_Helper_DB_Ex();
+        $arrPost = $objFormParam->getHashArray();
+
+        $objRecommend = new SC_Helper_Recommend_Ex();
 
         switch ($this->getMode()) {
-            case 'down': //商品の並び替えをする。おすすめはデータベースの登録が昇順なので、Modeを逆にする。
-                $arrRet = $objQuery->select('best_id', 'dtb_best_products', 'rank = ?', array($_POST['rank'])); //おすすめidの取得
-                $best_id = $arrRet[0]['best_id'];
-                $objDb->sfRankUp('dtb_best_products','best_id',$best_id);
-                $arrPost = $objFormParam->getHashArray();
-                $arrItems = $this->getRecommendProducts();
-                break;
-
-            case 'up': //商品の並び替えをする。おすすめのみデータベースの登録が昇順なので、Modeを逆にする。
-                $arrRet = $objQuery->select('best_id', 'dtb_best_products', 'rank = ?', array($_POST['rank'])); //おすすめidの取得
-                $best_id = $arrRet[0]['best_id'];
-                $objDb->sfRankDown('dtb_best_products','best_id',$best_id);
-                $arrPost = $objFormParam->getHashArray();
-                $arrItems = $this->getRecommendProducts();
+            case 'down': //商品の並び替えをする。
+                $objRecommend->rankDown($arrPost['best_id']);
+                $arrItems = $this->getRecommendProducts($objRecommend);
+                break;
+
+            case 'up': //商品の並び替えをする。
+                $objRecommend->rankUp($arrPost['best_id']);
+                $arrItems = $this->getRecommendProducts($objRecommend);
                 break;
 
             case 'regist': // 商品を登録する。
                 $this->arrErr = $this->lfCheckError($objFormParam);
-                $arrPost = $objFormParam->getHashArray();
                 // 登録処理にエラーがあった場合は商品選択の時と同じ処理を行う。
                 if (SC_Utils_Ex::isBlank($this->arrErr)) {
                     $member_id = $_SESSION['member_id'];
-                    $this->insertRecommendProduct($arrPost,$member_id);
-                    $arrItems = $this->getRecommendProducts();
+                    $this->insertRecommendProduct($arrPost,$member_id,$objRecommend);
+                    $arrItems = $this->getRecommendProducts($objRecommend);
                 } else {
                     $arrItems = $this->setProducts($arrPost, $arrItems);
@@ -113,8 +107,7 @@
             case 'delete': // 商品を削除する。
                 $this->arrErr = $this->lfCheckError($objFormParam);
-                $arrPost = $objFormParam->getHashArray();
                 if (SC_Utils_Ex::isBlank($this->arrErr)) {
-                    $this->deleteProduct($arrPost);
-                    $arrItems = $this->getRecommendProducts();
+                    $this->deleteProduct($arrPost, $objRecommend);
+                    $arrItems = $this->getRecommendProducts($objRecommend);
                 }
                 $this->tpl_onload = "window.alert('削除しました');";
@@ -124,10 +117,10 @@
                 $arrPost = $objFormParam->getHashArray();
                 if (SC_Utils_Ex::isBlank($this->arrErr['rank']) && SC_Utils_Ex::isBlank($this->arrErr['product_id'])) {
-                    $arrItems = $this->setProducts($arrPost, $this->getRecommendProducts());
+                    $arrItems = $this->setProducts($arrPost, $this->getRecommendProducts($objRecommend));
                     $this->checkRank = $arrPost['rank'];
                 }
                 break;
             default:
-                $arrItems = $this->getRecommendProducts();
+                $arrItems = $this->getRecommendProducts($objRecommend);
                 break;
         }
@@ -158,4 +151,5 @@
     function lfInitParam(&$objFormParam)
     {
+        $objFormParam->addParam('おすすめ商品ID', 'best_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
         $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
         $objFormParam->addParam('カテゴリID', 'category_id', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
@@ -178,18 +172,24 @@
     /**
      * 既に登録されている内容を取得する
+     * @param Object $objRecommend
      * @return Array $arrReturnProducts データベースに登録されているおすすめ商品の配列
      */
-    function getRecommendProducts()
-    {
+    function getRecommendProducts(SC_Helper_Recommend_Ex &$objRecommend)
+    {
+        $arrList = $objRecommend->getList();
+        // product_id の一覧を作成
+        $product_ids = array();
+        foreach ($arrList as $value) {
+            $product_ids[] = $value['product_id'];
+        }
+
+        $objProduct = new SC_Product_Ex;
         $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $col = 'dtb_products.name,dtb_products.main_list_image,dtb_best_products.*,dtb_products.status';
-        $table = 'dtb_best_products INNER JOIN dtb_products ON dtb_best_products.product_id = dtb_products.product_id';
-        $where = 'dtb_best_products.del_flg = 0';
-        $order = 'rank';
-        $objQuery->setOrder($order);
-        $arrProducts = $objQuery->select($col, $table, $where);
+        $arrProducts = $objProduct->getListByProductIds($objQuery, $product_ids);
 
         $arrReturnProducts = array();
-        foreach ($arrProducts as $data) {
+        foreach ($arrList as $data) {
+            $data['main_list_image'] = $arrProducts[$data['product_id']]['main_list_image'];
+            $data['name'] = $arrProducts[$data['product_id']]['name'];
             $arrReturnProducts[$data['rank']] = $data;
         }
@@ -201,10 +201,10 @@
      * @param Array $arrPost POSTの値を格納した配列
      * @param Integer $member_id 登録した管理者を示すID
-     */
-    function insertRecommendProduct($arrPost,$member_id)
-    {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
+     * @param Object $objRecommend
+     */
+    function insertRecommendProduct($arrPost,$member_id, SC_Helper_Recommend_Ex &$objRecommend)
+    {
         // 古いおすすめ商品のデータを削除する。
-        $this->deleteProduct($arrPost);
+        $this->deleteProduct($arrPost, $objRecommend);
 
         $sqlval = array();
@@ -214,8 +214,5 @@
         $sqlval['comment'] = $arrPost['comment'];
         $sqlval['creator_id'] = $member_id;
-        $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
-        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
-        $sqlval['best_id'] = $objQuery->nextVal('dtb_best_products_best_id');
-        $objQuery->insert('dtb_best_products', $sqlval);
+        $objRecommend->save($sqlval);
     }
 
@@ -223,12 +220,16 @@
      * データを削除する
      * @param Array $arrPost POSTの値を格納した配列
-     */
-    function deleteProduct($arrPost)
-    {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $table = 'dtb_best_products';
-        $where = 'category_id = ? AND rank = ?';
-        $arrWhereVal = array($arrPost['category_id'],$arrPost['rank']);
-        $objQuery->delete($table, $where, $arrWhereVal);
+     * @param Object $objRecommend
+     * @return void
+     */
+    function deleteProduct($arrPost, SC_Helper_Recommend_Ex &$objRecommend)
+    {
+        if ($arrPost['best_id']) {
+            $target = $arrPost['best_id'];
+        } else {
+            $recommend = $objRecommend->getByRank($arrPost['rank']);
+            $target = $recommend['best_id'];
+        }
+        $objRecommend->delete($target);
     }
 
@@ -236,15 +237,16 @@
      * 商品情報を取得する
      * @param Integer $product_id 商品ID
-     * @return Array $arrProduct 商品のデータを格納した配列
+     * @return Array $return 商品のデータを格納した配列
      */
     function getProduct($product_id)
     {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $col = 'product_id,main_list_image,name';
-        $table = 'dtb_products';
-        $where = 'product_id = ? AND del_flg = 0';
-        $arrWhereVal = array($product_id);
-        $arrProduct = $objQuery->select($col, $table, $where, $arrWhereVal);
-        return $arrProduct[0];
+        $objProduct = new SC_Product_Ex();
+        $arrProduct = $objProduct->getDetail($product_id);
+        $return = array(
+            'product_id' => $arrProduct['product_id'],
+            'main_list_image' => $arrProduct['main_list_image'],
+            'name' => $arrProduct['name']
+        );
+        return $return;
     }
 
