source: branches/version-2_12-dev/data/class/helper/SC_Helper_News.php @ 22581

Revision 22581, 5.3 KB checked in by pineray, 8 years ago (diff)

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

Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
6 *
7 * http://www.lockon.co.jp/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 */
23
24/**
25 * ニュースを管理するヘルパークラス.
26 *
27 * @package Helper
28 * @author pineray
29 * @version $Id:$
30 */
31class SC_Helper_News
32{
33    /**
34     * ニュースの情報を取得.
35     *
36     * @param integer $news_id ニュースID
37     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
38     * @return array
39     */
40    public function get($news_id, $has_deleted = false)
41    {
42        $objQuery =& SC_Query_Ex::getSingletonInstance();
43        $col = '*, cast(news_date as date) as cast_news_date';
44        $where = 'news_id = ?';
45        if (!$has_deleted) {
46            $where .= ' AND del_flg = 0';
47        }
48        $arrRet = $objQuery->select($col, 'dtb_news', $where, array($news_id));
49        return $arrRet[0];
50    }
51
52    /**
53     * ニュース一覧の取得.
54     *
55     * @param integer $dispNumber 表示件数
56     * @param integer $pageNumber ページ番号
57     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
58     * @return array
59     */
60    public function getList($dispNumber = 0, $pageNumber = 0, $has_deleted = false)
61    {
62        $objQuery =& SC_Query_Ex::getSingletonInstance();
63        $col = '*, cast(news_date as date) as cast_news_date';
64        $where = '';
65        if (!$has_deleted) {
66            $where .= 'del_flg = 0';
67        }
68        $table = 'dtb_news';
69        $objQuery->setOrder('rank DESC');
70        if ($dispNumber > 0) {
71            if ($pageNumber > 0) {
72                $objQuery->setLimitOffset($dispNumber, (($pageNumber - 1) * $dispNumber));
73            } else {
74                $objQuery->setLimit($dispNumber);
75            }
76        }
77        $arrRet = $objQuery->select($col, $table, $where);
78        return $arrRet;
79    }
80
81    /**
82     * ニュースの登録.
83     *
84     * @param array $sqlval
85     * @return multiple 登録成功:ニュースID, 失敗:FALSE
86     */
87    public function save($sqlval)
88    {
89        $objQuery =& SC_Query_Ex::getSingletonInstance();
90
91        $news_id = $sqlval['news_id'];
92        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
93        // 新規登録
94        if ($news_id == '') {
95            // INSERTの実行
96            $sqlval['rank'] = $objQuery->max('rank', 'dtb_news') + 1;
97            $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
98            $sqlval['news_id'] = $objQuery->nextVal('dtb_news_news_id');
99            $ret = $objQuery->insert('dtb_news', $sqlval);
100        // 既存編集
101        } else {
102            unset($sqlval['creator_id']);
103            unset($sqlval['create_date']);
104            $where = 'news_id = ?';
105            $ret = $objQuery->update('dtb_news', $sqlval, $where, array($news_id));
106        }
107        return ($ret) ? $sqlval['news_id'] : FALSE;
108    }
109
110    /**
111     * ニュースの削除.
112     *
113     * @param integer $news_id ニュースID
114     * @return void
115     */
116    public function delete($news_id)
117    {
118        $objDb = new SC_Helper_DB_Ex();
119        // ランク付きレコードの削除
120        $objDb->sfDeleteRankRecord('dtb_news', 'news_id', $news_id);
121    }
122
123    /**
124     * ニュースの表示順をひとつ上げる.
125     *
126     * @param integer $news_id ニュースID
127     * @return void
128     */
129    public function rankUp($news_id)
130    {
131        $objDb = new SC_Helper_DB_Ex();
132        $objDb->sfRankUp('dtb_news', 'news_id', $news_id);
133    }
134
135    /**
136     * ニュースの表示順をひとつ下げる.
137     *
138     * @param integer $news_id ニュースID
139     * @return void
140     */
141    public function rankDown($news_id)
142    {
143        $objDb = new SC_Helper_DB_Ex();
144        $objDb->sfRankDown('dtb_news', 'news_id', $news_id);
145    }
146
147    /**
148     * ニュースの表示順を指定する.
149     *
150     * @param integer $news_id ニュースID
151     * @param integer $rank 移動先の表示順
152     * @return void
153     */
154    public function moveRank($news_id, $rank)
155    {
156        $objDb = new SC_Helper_DB_Ex();
157        $objDb->sfMoveRank('dtb_news', 'news_id', $news_id, $rank);
158    }
159
160    /**
161     * ニュース記事数を計算.
162     *
163     * @param boolean $has_deleted 削除されたニュースも含む場合 true; 初期値 false
164     * @return integer ニュース記事数
165     */
166    public function getCount($has_deleted = false)
167    {
168        $objDb = new SC_Helper_DB_Ex();
169        if (!$has_deleted) {
170            $where = 'del_flg = 0';
171        } else {
172            $where = '';
173        }
174        return $objDb->countRecords('dtb_news', $where);
175    }
176}
Note: See TracBrowser for help on using the repository browser.