[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 メーリングリストの案内