[Svn-src-all:3669] [version-2_12-dev 22581] #2160 pageクラスからdtb_newsテーブルを直接指定している箇所をなくす

pineray admin @ mail.ec-cube.net
2013年 2月 22日 (金) 20:22:51 JST


Subversion committed to /home/svn/open 22581
http://svn.ec-cube.net/open_trac/changeset/22581
┌────────────────────────────┐
│更新者 :  pineray                                      │
│更新日時:  2013-02-22 20:22:51 +0900 (金, 22  2月 2013)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#2160 pageクラスからdtb_newsテーブルを直接指定している箇所をなくす
新着情報管理のページクラス内の処理を他と統一する

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/Smarty/templates/admin/contents/index.tpl
U   branches/version-2_12-dev/data/class/helper/SC_Helper_DB.php
A   branches/version-2_12-dev/data/class/helper/SC_Helper_News.php
U   branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
U   branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php
U   branches/version-2_12-dev/data/class/pages/rss/LC_Page_Rss.php
A   branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_News_Ex.php

変更: branches/version-2_12-dev/data/Smarty/templates/admin/contents/index.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/contents/index.tpl	2013-02-22 05:28:41 UTC (rev 22580)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/contents/index.tpl	2013-02-22 11:22:51 UTC (rev 22581)
@@ -22,54 +22,11 @@
  */
 *}-->
 
-<script type="text/javascript">
-<!--
-
-function func_regist(url) {
-    res = confirm('この内容で<!--{if $edit_mode eq "on"}-->編集<!--{else}-->登録<!--{/if}-->しても宜しいですか?');
-    if(res == true) {
-        document.form1.mode.value = 'regist';
-        document.form1.submit();
-        return false;
-    }
-    return false;
-}
-
-function func_edit(news_id) {
-    document.form1.mode.value = "search";
-    document.form1.news_id.value = news_id;
-    document.form1.submit();
-    return false;
-}
-
-function func_del(news_id) {
-    res = confirm('この新着情報を削除しても宜しいですか?');
-    if(res == true) {
-        document.form1.mode.value = "delete";
-        document.form1.news_id.value = news_id;
-        document.form1.submit();
-    }
-    return false;
-}
-
-function func_rankMove(term,news_id) {
-    document.form1.mode.value = "move";
-    document.form1.news_id.value = news_id;
-    document.form1.term.value = term;
-    document.form1.submit();
-    return false;
-}
-
--->
-</script>
-
-
 <div id="admin-contents" class="contents-main">
 <form name="form1" id="form1" method="post" action="?">
 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
 <input type="hidden" name="mode" value="" />
-<input type="hidden" name="news_id" value="<!--{$arrForm.news_id|h}-->" />
-<input type="hidden" name="term" value="" />
+<input type="hidden" name="news_id" value="<!--{$arrForm.news_id.value|h}-->" />
     <!--{* ▼登録テーブルここから *}-->
     <table>
         <tr>
@@ -78,15 +35,15 @@
                 <!--{if $arrErr.year || $arrErr.month || $arrErr.day}--><span class="attention"><!--{$arrErr.year}--><!--{$arrErr.month}--><!--{$arrErr.day}--></span><!--{/if}-->
                 <select name="year" <!--{if $arrErr.year || $arrErr.month || $arrErr.day }-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
                     <option value="" selected="selected">----</option>
-                    <!--{html_options options=$arrYear selected=$arrForm.year}-->
+                    <!--{html_options options=$arrYear selected=$arrForm.year.value}-->
                 </select>年
                 <select name="month" <!--{if $arrErr.year || $arrErr.month || $arrErr.day}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
                     <option value="" selected="selected">--</option>
-                    <!--{html_options options=$arrMonth selected=$arrForm.month}-->
+                    <!--{html_options options=$arrMonth selected=$arrForm.month.value}-->
                 </select>月
                 <select name="day" <!--{if $arrErr.year || $arrErr.month || $arrErr.day}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
                     <option value="" selected="selected">--</option>
-                    <!--{html_options options=$arrDay selected=$arrForm.day}-->
+                    <!--{html_options options=$arrDay selected=$arrForm.day.value}-->
                 </select>日
             </td>
         </tr>
@@ -94,7 +51,7 @@
             <th>タイトル<span class="attention"> *</span></th>
             <td>
                 <!--{if $arrErr.news_title}--><span class="attention"><!--{$arrErr.news_title}--></span><!--{/if}-->
-                <textarea name="news_title" cols="60" rows="8" class="area60" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" <!--{if $arrErr.news_title}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->><!--{"\n"}--><!--{$arrForm.news_title|h}--></textarea><br />
+                <textarea name="news_title" cols="60" rows="8" class="area60" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" <!--{if $arrErr.news_title}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->><!--{"\n"}--><!--{$arrForm.news_title.value|h}--></textarea><br />
                 <span class="attention"> (上限<!--{$smarty.const.MTEXT_LEN}-->文字)</span>
             </td>
         </tr>
@@ -102,19 +59,19 @@
             <th>URL</th>
             <td>
                 <span class="attention"><!--{$arrErr.news_url}--></span>
-                <input type="text" name="news_url" size="60" class="box60"    value="<!--{$arrForm.news_url|h}-->" <!--{if $arrErr.news_url}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}--> maxlength="<!--{$smarty.const.URL_LEN}-->" />
+                <input type="text" name="news_url" size="60" class="box60"    value="<!--{$arrForm.news_url.value|h}-->" <!--{if $arrErr.news_url}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}--> maxlength="<!--{$smarty.const.URL_LEN}-->" />
                 <span class="attention"> (上限<!--{$smarty.const.URL_LEN}-->文字)</span>
             </td>
         </tr>
         <tr>
             <th>リンク</th>
-            <td><label><input type="checkbox" name="link_method" value="2" <!--{if $arrForm.link_method eq 2}--> checked <!--{/if}--> /> 別ウィンドウで開く</label></td>
+            <td><label><input type="checkbox" name="link_method" value="2" <!--{if $arrForm.link_method.value eq 2}--> checked <!--{/if}--> /> 別ウィンドウで開く</label></td>
         </tr>
         <tr>
             <th>本文作成</th>
             <td>
                 <!--{if $arrErr.news_comment}--><span class="attention"><!--{$arrErr.news_comment}--></span><!--{/if}-->
-                <textarea name="news_comment" cols="60" rows="8" wrap="soft" class="area60" maxlength="<!--{$smarty.const.LTEXT_LEN}-->" style="background-color:<!--{if $arrErr.news_comment}--><!--{$smarty.const.ERR_COLOR|h}--><!--{/if}-->"><!--{"\n"}--><!--{$arrForm.news_comment|h}--></textarea><br />
+                <textarea name="news_comment" cols="60" rows="8" wrap="soft" class="area60" maxlength="<!--{$smarty.const.LTEXT_LEN}-->" style="background-color:<!--{if $arrErr.news_comment}--><!--{$smarty.const.ERR_COLOR|h}--><!--{/if}-->"><!--{"\n"}--><!--{$arrForm.news_comment.value|h}--></textarea><br />
                 <span class="attention"> (上限3000文字)</span>
             </td>
         </tr>
@@ -123,7 +80,7 @@
 
     <div class="btn-area">
         <ul>
-            <li><a class="btn-action" href="javascript:;" onclick="return func_regist();"><span class="btn-next">この内容で登録する</span></a></li>
+            <li><a class="btn-action" href="javascript:;" onclick="fnFormModeSubmit('form1', 'edit', '', ''); return false;"><span class="btn-next">この内容で登録する</span></a></li>
         </ul>
     </div>
 </form>
@@ -136,7 +93,6 @@
     <form name="move" id="move" method="post" action="?">
     <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
     <input type="hidden" name="mode" value="moveRankSet" />
-    <input type="hidden" name="term" value="setposition" />
     <input type="hidden" name="news_id" value="" />
     <input type="hidden" name="moveposition" value="" />
     <input type="hidden" name="rank" value="" />
@@ -169,17 +125,22 @@
             </td>
             <td>
                 <!--{if $arrNews[data].news_id != $tpl_news_id}-->
-                <a href="#" onclick="return func_edit('<!--{$arrNews[data].news_id|h}-->');">編集</a>
+                <a href="#" onclick="fnFormModeSubmit('move','pre_edit','news_id','<!--{$arrNews[data].news_id|h}-->'); return false;">編集</a>
                 <!--{else}-->
                 編集中
                 <!--{/if}-->
             </td>
-            <td><a href="#" onclick="return func_del('<!--{$arrNews[data].news_id|h}-->');">削除</a></td>
+            <td><a href="#" onclick="fnFormModeSubmit('move','delete','news_id','<!--{$arrNews[data].news_id|h}-->'); return false;">削除</a></td>
             <td>
-            <!--{if count($arrNews) != 1}-->
-            <input type="text" name="pos-<!--{$arrNews[data].news_id|h}-->" size="3" class="box3" />番目へ<a href="?" onclick="fnFormModeSubmit('move', 'moveRankSet','news_id', '<!--{$arrNews[data].news_id|h}-->'); return false;">移動</a><br />
-            <!--{/if}-->
-            <!--{if $arrNews[data].rank ne $max_rank}--><a href="#" onclick="return func_rankMove('up', '<!--{$arrNews[data].news_id|h}-->', '<!--{$max_rank|h}-->');">上へ</a><!--{/if}--> <!--{if $arrNews[data].rank ne 1}--><a href="#" onclick="return func_rankMove('down', '<!--{$arrNews[data].news_id|h}-->', '<!--{$max_rank|h}-->');">下へ</a><!--{/if}-->
+                <!--{if count($arrNews) != 1}-->
+                <input type="text" name="pos-<!--{$arrNews[data].news_id|h}-->" size="3" class="box3" />番目へ<a href="?" onclick="fnFormModeSubmit('move', 'moveRankSet','news_id', '<!--{$arrNews[data].news_id|h}-->'); return false;">移動</a><br />
+                <!--{/if}-->
+                <!--{if $smarty.section.data.iteration != 1}-->
+                <a href="?" onclick="fnFormModeSubmit('move','up','news_id','<!--{$arrNews[data].news_id|h}-->'); return false;">上へ</a>
+                <!--{/if}-->
+                <!--{if !$smarty.section.data.last}-->
+                <a href="?" onclick="fnFormModeSubmit('move','down','news_id','<!--{$arrNews[data].news_id|h}-->'); return false;">下へ</a>
+                <!--{/if}-->
             </td>
         </tr>
         <!--{sectionelse}-->

変更: branches/version-2_12-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_DB.php	2013-02-22 05:28:41 UTC (rev 22580)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_DB.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -1609,4 +1609,19 @@
             GC_Utils_Ex::gfPrintLog('dtb_baseinfo に INSERT を実行しました。');
         }
     }
+
+    /**
+     * レコード件数を計算.
+     * 
+     * @param string $table
+     * @param string $where
+     * @param array $arrval
+     * @return integer レコード件数
+     */
+    public function countRecords($table, $where = '', $arrval = array())
+    {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $col = 'COUNT(*)';
+        return $objQuery->get($col, $table, $where, $arrval);
+    }
 }

追加: branches/version-2_12-dev/data/class/helper/SC_Helper_News.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_News.php	                        (rev 0)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_News.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -0,0 +1,176 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+/**
+ * ニュースを管理するヘルパークラス.
+ *
+ * @package Helper
+ * @author pineray
+ * @version $Id:$
+ */
+class SC_Helper_News
+{
+    /**
+     * ニュースの情報を取得.
+     * 
+     * @param integer $news_id ニュースID
+     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
+     * @return array
+     */
+    public function get($news_id, $has_deleted = false)
+    {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $col = '*, cast(news_date as date) as cast_news_date';
+        $where = 'news_id = ?';
+        if (!$has_deleted) {
+            $where .= ' AND del_flg = 0';
+        }
+        $arrRet = $objQuery->select($col, 'dtb_news', $where, array($news_id));
+        return $arrRet[0];
+    }
+
+    /**
+     * ニュース一覧の取得.
+     *
+     * @param integer $dispNumber 表示件数
+     * @param integer $pageNumber ページ番号
+     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
+     * @return array
+     */
+    public function getList($dispNumber = 0, $pageNumber = 0, $has_deleted = false)
+    {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $col = '*, cast(news_date as date) as cast_news_date';
+        $where = '';
+        if (!$has_deleted) {
+            $where .= 'del_flg = 0';
+        }
+        $table = 'dtb_news';
+        $objQuery->setOrder('rank DESC');
+        if ($dispNumber > 0) {
+            if ($pageNumber > 0) {
+                $objQuery->setLimitOffset($dispNumber, (($pageNumber - 1) * $dispNumber));
+            } else {
+                $objQuery->setLimit($dispNumber);
+            }
+        }
+        $arrRet = $objQuery->select($col, $table, $where);
+        return $arrRet;
+    }
+
+    /**
+     * ニュースの登録.
+     * 
+     * @param array $sqlval
+     * @return multiple 登録成功:ニュースID, 失敗:FALSE
+     */
+    public function save($sqlval)
+    {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+
+        $news_id = $sqlval['news_id'];
+        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
+        // 新規登録
+        if ($news_id == '') {
+            // INSERTの実行
+            $sqlval['rank'] = $objQuery->max('rank', 'dtb_news') + 1;
+            $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
+            $sqlval['news_id'] = $objQuery->nextVal('dtb_news_news_id');
+            $ret = $objQuery->insert('dtb_news', $sqlval);
+        // 既存編集
+        } else {
+            unset($sqlval['creator_id']);
+            unset($sqlval['create_date']);
+            $where = 'news_id = ?';
+            $ret = $objQuery->update('dtb_news', $sqlval, $where, array($news_id));
+        }
+        return ($ret) ? $sqlval['news_id'] : FALSE;
+    }
+
+    /**
+     * ニュースの削除.
+     * 
+     * @param integer $news_id ニュースID
+     * @return void
+     */
+    public function delete($news_id)
+    {
+        $objDb = new SC_Helper_DB_Ex();
+        // ランク付きレコードの削除
+        $objDb->sfDeleteRankRecord('dtb_news', 'news_id', $news_id);
+    }
+
+    /**
+     * ニュースの表示順をひとつ上げる.
+     * 
+     * @param integer $news_id ニュースID
+     * @return void
+     */
+    public function rankUp($news_id)
+    {
+        $objDb = new SC_Helper_DB_Ex();
+        $objDb->sfRankUp('dtb_news', 'news_id', $news_id);
+    }
+
+    /**
+     * ニュースの表示順をひとつ下げる.
+     * 
+     * @param integer $news_id ニュースID
+     * @return void
+     */
+    public function rankDown($news_id)
+    {
+        $objDb = new SC_Helper_DB_Ex();
+        $objDb->sfRankDown('dtb_news', 'news_id', $news_id);
+    }
+
+    /**
+     * ニュースの表示順を指定する.
+     * 
+     * @param integer $news_id ニュースID
+     * @param integer $rank 移動先の表示順
+     * @return void
+     */
+    public function moveRank($news_id, $rank)
+    {
+        $objDb = new SC_Helper_DB_Ex();
+        $objDb->sfMoveRank('dtb_news', 'news_id', $news_id, $rank);
+    }
+
+    /**
+     * ニュース記事数を計算.
+     * 
+     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
+     * @return integer ニュース記事数
+     */
+    public function getCount($has_deleted = false)
+    {
+        $objDb = new SC_Helper_DB_Ex();
+        if (!$has_deleted) {
+            $where = 'del_flg = 0';
+        } else {
+            $where = '';
+        }
+        return $objDb->countRecords('dtb_news', $where);
+    }
+}

変更: branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php	2013-02-22 05:28:41 UTC (rev 22580)
+++ branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -81,82 +81,87 @@
     function action()
     {
 
-        $objDb = new SC_Helper_DB_Ex();
+        $objNews = new SC_Helper_News_Ex();
+
         $objFormParam = new SC_FormParam_Ex();
         $this->lfInitParam($objFormParam);
         $objFormParam->setParam($_POST);
         $objFormParam->convParam();
+
         $news_id = $objFormParam->getValue('news_id');
 
         //---- 新規登録/編集登録
         switch ($this->getMode()) {
-            case 'regist':
-                $arrPost = $objFormParam->getHashArray();
+            case 'edit':
                 $this->arrErr = $this->lfCheckError($objFormParam);
-                if (SC_Utils_Ex::isBlank($this->arrErr)) {
-                    // ニュースIDの値がPOSTされて来た場合は既存データの編集とみなし、
-                    // 更新メソッドを呼び出す。
-                    // ニュースIDが存在しない場合は新規登録を行う。
-                    $arrPost['link_method'] = $this->checkLinkMethod($arrPost['link_method']);
-                    $arrPost['news_date'] = $this->getRegistDate($arrPost);
-                    $member_id = $_SESSION['member_id'];
-                    if (strlen($news_id) > 0 && is_numeric($news_id)) {
-                        $this->lfNewsUpdate($arrPost,$member_id);
-                    } else {
-                        $this->lfNewsInsert($arrPost,$member_id);
+                if (!SC_Utils_Ex::isBlank($this->arrErr['news_id'])) {
+                    trigger_error('', E_USER_ERROR);
+                    return;
+                }
+
+                if (count($this->arrErr) <= 0) {
+                    // POST値の引き継ぎ
+                    $arrParam = $objFormParam->getHashArray();
+                    // 登録実行
+                    $res_news_id = $this->doRegist($news_id, $arrParam, $objNews);
+                    if ($res_news_id !== FALSE) {
+                        // 完了メッセージ
+                        $news_id = $res_news_id;
+                        $this->tpl_onload = "alert('登録が完了しました。');";
                     }
-                    $news_id = '';
-                    $this->tpl_onload = "window.alert('編集が完了しました');";
-                } else {
-                    $this->arrForm = $arrPost;
                 }
+                // POSTデータを引き継ぐ
+                $this->tpl_news_id = $news_id;
                 break;
-            case 'search':
-                if (is_numeric($news_id)) {
-                    list($this->arrForm) = $this->getNews($news_id);
-                    list($this->arrForm['year'],$this->arrForm['month'],$this->arrForm['day']) = $this->splitNewsDate($this->arrForm['cast_news_date']);
-                    $this->edit_mode = 'on';
-                }
+
+            case 'pre_edit':
+                $news = $objNews->get($news_id);
+                list($news['year'],$news['month'],$news['day']) = $this->splitNewsDate($news['cast_news_date']);
+                $objFormParam->setParam($news);
+
+                // POSTデータを引き継ぐ
+                $this->tpl_news_id = $news_id;
                 break;
+
             case 'delete':
             //---- データ削除
-                if (is_numeric($news_id)) {
-                    $pre_rank = $this->getRankByNewsId($news_id);
-                    $this->computeRankForDelete($news_id,$pre_rank);
-
-                    SC_Response_Ex::reload();             //自分にリダイレクト(再読込による誤動作防止)
-                }
+                $objNews->delete($news_id);
+                //自分にリダイレクト(再読込による誤動作防止)
+                SC_Response_Ex::reload();
                 break;
-            case 'move':
+
             //---- 表示順位移動
-                if (strlen($news_id) > 0 && is_numeric($news_id) == true) {
-                    $term = $objFormParam->getValue('term');
-                    if ($term == 'up') {
-                        $objDb->sfRankUp('dtb_news', 'news_id', $news_id);
-                    } else if ($term == 'down') {
-                        $objDb->sfRankDown('dtb_news', 'news_id', $news_id);
-                    }
+            case 'up':
+                $objNews->rankUp($news_id);
 
-                    $this->objDisplay->reload();
-                }
+                // リロード
+                SC_Response_Ex::reload();
                 break;
+
+            case 'down':
+                $objNews->rankDown($news_id);
+
+                // リロード
+                SC_Response_Ex::reload();
+                break;
+
             case 'moveRankSet':
             //---- 指定表示順位移動
                 $input_pos = $this->getPostRank($news_id);
                 if (SC_Utils_Ex::sfIsInt($input_pos)) {
-                    $objDb->sfMoveRank('dtb_news', 'news_id', $news_id, $input_pos);
+                    $objNews->moveRank($news_id, $input_pos);
                 }
-                $this->objDisplay->reload();
+                SC_Response_Ex::reload();
                 break;
+
             default:
                 break;
         }
 
-        $this->arrNews = $this->getNews();
-        $this->tpl_news_id = $news_id;
+        $this->arrNews = $objNews->getList();
         $this->line_max = count($this->arrNews);
-        $this->max_rank = $this->getRankMax();
 
+        $this->arrForm = $objFormParam->getFormParamList();
     }
 
     /**
@@ -196,56 +201,26 @@
         $objFormParam->addParam('URL', 'news_url', URL_LEN, 'KVa', array('MAX_LENGTH_CHECK'));
         $objFormParam->addParam('本文', 'news_comment', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK'));
         $objFormParam->addParam('別ウィンドウで開く', 'link_method', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
-        $objFormParam->addParam('ランク移動', 'term', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
     }
 
     /**
-     * 新着記事のデータの登録を行う
-     * @param Array $arrPost POSTデータの配列
-     * @param Integer $member_id 登録した管理者のID
+     * 登録処理を実行.
+     * 
+     * @param integer $news_id
+     * @param array $sqlval
+     * @param object $objNews
+     * @return multiple
      */
-    function lfNewsInsert($arrPost,$member_id)
+    function doRegist($news_id, $sqlval, SC_Helper_News_Ex $objNews)
     {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-
-        // rankの最大+1を取得する
-        $rank_max = $this->getRankMax();
-        $rank_max = $rank_max + 1;
-
-        $table = 'dtb_news';
-        $sqlval = array();
-        $news_id = $objQuery->nextVal('dtb_news_news_id');
         $sqlval['news_id'] = $news_id;
-        $sqlval['news_date'] = $arrPost['news_date'];
-        $sqlval['news_title'] = $arrPost['news_title'];
-        $sqlval['creator_id'] = $member_id;
-        $sqlval['news_url'] = $arrPost['news_url'];
-        $sqlval['link_method'] = $arrPost['link_method'];
-        $sqlval['news_comment'] = $arrPost['news_comment'];
-        $sqlval['rank'] = $rank_max;
-        $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
-        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
-        $objQuery->insert($table, $sqlval);
+        $sqlval['creator_id'] = $_SESSION['member_id'];
+        $sqlval['link_method'] = $this->checkLinkMethod($sqlval['link_method']);
+        $sqlval['news_date'] = $this->getRegistDate($sqlval);
+        unset($sqlval['year'], $sqlval['month'], $sqlval['day']);
+        return $objNews->save($sqlval);
     }
 
-    function lfNewsUpdate($arrPost,$member_id)
-    {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-
-        $table = 'dtb_news';
-        $sqlval = array();
-        $sqlval['news_date'] = $arrPost['news_date'];
-        $sqlval['news_title'] = $arrPost['news_title'];
-        $sqlval['creator_id'] = $member_id;
-        $sqlval['news_url'] = $arrPost['news_url'];
-        $sqlval['news_comment'] = $arrPost['news_comment'];
-        $sqlval['link_method'] = $arrPost['link_method'];
-        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
-        $where = 'news_id = ?';
-        $arrValIn = array($arrPost['news_id']);
-        $objQuery->update($table, $sqlval, $where, $arrValIn);
-    }
-
     /**
      * データの登録日を返す。
      * @param Array $arrPost POSTのグローバル変数
@@ -271,52 +246,6 @@
     }
 
     /**
-     * ニュース記事を取得する。
-     * @param Integer news_id ニュースID
-     */
-    function getNews($news_id = '')
-    {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $col = '*, cast(news_date as date) as cast_news_date';
-        $table = 'dtb_news';
-        $order = 'rank DESC';
-        if (strlen($news_id) == 0) {
-            $where = 'del_flg = 0';
-            $arrWhereVal = array();
-        } else {
-            $where = 'del_flg = 0 AND news_id = ?';
-            $arrWhereVal = array($news_id);
-        }
-        $objQuery->setOrder($order);
-        return $objQuery->select($col, $table, $where, $arrWhereVal);
-    }
-
-    /**
-     * 指定されたニュースのランクの値を取得する。
-     * @param Integer $news_id
-     */
-    function getRankByNewsId($news_id)
-    {
-        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $col = 'rank';
-        $table = 'dtb_news';
-        $where = 'del_flg = 0 AND news_id = ?';
-        $arrWhereVal = array($news_id);
-        list($rank) = $objQuery->select($col, $table, $where, $arrWhereVal);
-        return $rank['rank'];
-    }
-
-    /**
-     * 削除する新着情報以降のrankを1つ繰り上げる。
-     * @param Integer $news_id
-     * @param Integer $rank
-     */
-    function computeRankForDelete($news_id,$rank)
-    {
-        SC_Helper_DB_Ex::sfDeleteRankRecord('dtb_news', 'news_id', $news_id);
-    }
-
-    /**
      * ニュースの日付の値をフロントでの表示形式に合わせるために分割
      * @param String $news_date
      */
@@ -326,20 +255,6 @@
     }
 
     /**
-     * ランクの最大値の値を返す。
-     * @return Intger $max ランクの最大値の値
-     */
-    function getRankMax()
-    {
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $col = 'MAX(rank) as max';
-        $table = 'dtb_news';
-        $where = 'del_flg = 0';
-        list($result) = $objQuery->select($col, $table, $where);
-        return $result['max'];
-    }
-
-    /**
      * POSTされたランクの値を取得する
      * @param Object $objFormParam
      * @param Integer $news_id

変更: branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php	2013-02-22 05:28:41 UTC (rev 22580)
+++ branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -66,6 +66,7 @@
     function action()
     {
 
+        $objNews = new SC_Helper_News_Ex();
         $objFormParam = new SC_FormParam_Ex();
         switch ($this->getMode()) {
             case 'getList':
@@ -74,8 +75,8 @@
                 $objFormParam->convParam();
                 $this->arrErr = $objFormParam->checkError(false);
                 if (empty($this->arrErr)) {
-
-                    $json = $this->lfGetNewsForJson($objFormParam);
+                    $arrData = $objFormParam->getHashArray();
+                    $json = $this->lfGetNewsForJson($arrData, $objNews);
                     echo $json;
                     SC_Response_Ex::actionExit();
                 } else {
@@ -89,8 +90,8 @@
                 $objFormParam->convParam();
                 $this->arrErr = $objFormParam->checkError(false);
                 if (empty($this->arrErr)) {
-
-                    $json = $this->lfGetNewsDetailForJson($objFormParam);
+                    $arrData = $objFormParam->getHashArray();
+                    $json = $this->lfGetNewsDetailForJson($arrData, $objNews);
                     echo $json;
                     SC_Response_Ex::actionExit();
                 } else {
@@ -99,8 +100,8 @@
                 }
                 break;
             default:
-                $this->newsCount = $this->lfGetNewsCount();
-                $this->arrNews = $this->lfGetNews(SC_Query_Ex::getSingletonInstance());
+                $this->arrNews = $objNews->getList();
+                $this->newsCount = $objNews->getCount();
                 break;
         }
 
@@ -134,10 +135,9 @@
      *
      * @return array $arrNewsList 新着情報の配列を返す
      */
-    function lfGetNews(&$objQuery)
+    function lfGetNews($dispNumber, $pageNo, SC_Helper_News_Ex $objNews)
     {
-        $objQuery->setOrder('rank DESC ');
-        $arrNewsList = $objQuery->select('* , cast(news_date as date) as news_date_disp', 'dtb_news' ,'del_flg = 0');
+        $arrNewsList = $objNews->getList($dispNumber, $pageNo);
 
         // モバイルサイトのセッション保持 (#797)
         if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
@@ -158,25 +158,19 @@
      * 新着情報をJSON形式で取得する
      * (ページと表示件数を指定)
      *
-     * @param array $objFormParam フォームパラメータークラス
+     * @param array $arrData フォーム入力値
+     * @param object $objNews
      * @return String $json 新着情報のJSONを返す
      */
-    function lfGetNewsForJson(&$objFormParam)
+    function lfGetNewsForJson($arrData, SC_Helper_News_Ex $objNews)
     {
 
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
-        $arrData = $objFormParam->getHashArray();
-
         $dispNumber = $arrData['disp_number'];
         $pageNo = $arrData['pageno'];
-        if (!empty($dispNumber) && !empty($pageNo)) {
-            $objQuery->setLimitOffset($dispNumber, (($pageNo - 1) * $dispNumber));
-        }
+        $arrNewsList = $this->lfGetNews($dispNumber, $pageNo, $objNews);
 
-        $arrNewsList = $this->lfGetNews($objQuery);
-
         //新着情報の最大ページ数をセット
-        $newsCount = $this->lfGetNewsCount();
+        $newsCount = $objNews->getCount();
         $arrNewsList['news_page_count'] = ceil($newsCount / 3);
 
         $json =  SC_Utils_Ex::jsonEncode($arrNewsList);    //JSON形式
@@ -188,39 +182,20 @@
      * 新着情報1件分をJSON形式で取得する
      * (news_idを指定)
      *
-     * @param array $objFormParam フォームパラメータークラス
+     * @param array $arrData フォーム入力値
+     * @param object $objNews
      * @return String $json 新着情報1件分のJSONを返す
      */
-    function lfGetNewsDetailForJson(&$objFormParam)
+    function lfGetNewsDetailForJson($arrData, SC_Helper_News_Ex $objNews)
     {
 
-        $objQuery = SC_Query_Ex::getSingletonInstance();
-        $arrData = $objFormParam->getHashArray();
-        $newsId = $arrData['news_id'];
-        $arrNewsList = $objQuery->select(' * , cast(news_date as date) as news_date_disp ',' dtb_news '," del_flg = '0' AND news_id = ? ", array($newsId));
-
+        $arrNewsList = $objNews->get($arrData['news_id']);
         $json =  SC_Utils_Ex::jsonEncode($arrNewsList);    //JSON形式
 
         return $json;
     }
 
     /**
-     * 新着情報の件数を取得する
-     *
-     * @return Integer $count 新着情報の件数を返す
-     */
-    function lfGetNewsCount()
-    {
-
-        $count = 0;
-
-        $objQuery = SC_Query_Ex::getSingletonInstance();
-        $count = $objQuery->count('dtb_news', "del_flg = '0'");
-
-        return $count;
-    }
-
-    /**
      * エラーメッセージを整形し, JSON 形式で返す.
      *
      * @param array $arrErr エラーメッセージの配列

変更: branches/version-2_12-dev/data/class/pages/rss/LC_Page_Rss.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/rss/LC_Page_Rss.php	2013-02-22 05:28:41 UTC (rev 22580)
+++ branches/version-2_12-dev/data/class/pages/rss/LC_Page_Rss.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -58,11 +58,10 @@
     function process()
     {
 
-        $objQuery = SC_Query_Ex::getSingletonInstance();
         $objView = new SC_SiteView_Ex(false);
 
         //新着情報を取得
-        $arrNews = $this->lfGetNews($objQuery);
+        $arrNews = $this->lfGetNews();
 
         //キャッシュしない(念のため)
         header('pragma: no-cache');
@@ -100,31 +99,23 @@
     /**
      * 新着情報を取得する
      *
-     * @param SC_Query $objQuery DB操作クラス
      * @return array $arrNews 取得結果を配列で返す
      */
-    function lfGetNews(&$objQuery)
+    function lfGetNews()
     {
-        $col = '';
-        $col .= 'news_id ';        // 新着情報ID
-        $col .= ',news_title ';    // 新着情報タイトル
-        $col .= ',news_comment ';  // 新着情報本文
-        $col .= ',news_date ';     // 日付
-        $col .= ',news_url ';      // 新着情報URL
-        $col .= ',news_select ';   // 新着情報の区分(1:URL、2:本文)
-        $col .= ',(SELECT shop_name FROM dtb_baseinfo limit 1) AS shop_name  ';    // 店名
-        $col .= ',(SELECT email04 FROM dtb_baseinfo limit 1) AS email ';           // 代表Emailアドレス
-        $from = 'dtb_news';
-        $where = "del_flg = '0'";
-        $order = 'rank DESC';
-        $objQuery->setOrder($order);
-        $arrNews = $objQuery->select($col,$from,$where);
+        $objNews = new SC_Helper_News_Ex();
+        $arrNews = $objNews->getList();
 
+        $objDb = new SC_Helper_DB_Ex();
+        $arrInfo = $objDb->sfGetBasisData(FALSE, 'shop_name, email04');
+
         // RSS用に変換
         foreach ($arrNews as $key => $value) {
             $netUrlHttpUrl = new Net_URL(HTTP_URL);
 
             $row =& $arrNews[$key];
+            $row['shop_name'] = $arrInfo['shop_name'];
+            $row['email'] = $arrInfo['email04'];
             // 日付
             $row['news_date'] = date('r', strtotime($row['news_date']));
             // 新着情報URL

追加: branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_News_Ex.php
===================================================================
--- branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_News_Ex.php	                        (rev 0)
+++ branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_News_Ex.php	2013-02-22 11:22:51 UTC (rev 22581)
@@ -0,0 +1,39 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+// {{{ requires
+require_once CLASS_REALDIR . 'helper/SC_Helper_News.php';
+
+/**
+ * 新着情報を管理するヘルパークラス(拡張).
+ *
+ * LC_Helper_News をカスタマイズする場合はこのクラスを編集する.
+ *
+ * @package Helper
+ * @author pineray
+ * @version $Id:$
+ */
+class SC_Helper_News_Ex extends SC_Helper_News
+{
+    //put your code here
+}




Svn-src-all メーリングリストの案内