source: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Class.php @ 20294

Revision 20294, 9.0 KB checked in by kajiwara, 13 years ago (diff)

#1009 規格のUP、DOWNができなかった不具合を修正

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2010 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// {{{ requires
25require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php");
26
27/**
28 * 規格管理 のページクラス.
29 *
30 * @package Page
31 * @author LOCKON CO.,LTD.
32 * @version $Id$
33 */
34class LC_Page_Admin_Products_Class extends LC_Page_Admin {
35
36    // }}}
37    // {{{ functions
38
39    /**
40     * Page を初期化する.
41     *
42     * @return void
43     */
44    function init() {
45        parent::init();
46        $this->tpl_mainpage = 'products/class.tpl';
47        $this->tpl_subnavi = 'products/subnavi.tpl';
48        $this->tpl_subno = 'class';
49        $this->tpl_subtitle = '規格登録';
50        $this->tpl_mainno = 'products';
51    }
52
53    /**
54     * Page のプロセス.
55     *
56     * @return void
57     */
58    function process() {
59        $this->action();
60        $this->sendResponse();
61    }
62
63    /**
64     * Page のアクション.
65     *
66     * @return void
67     */
68    function action() {
69        $objFormParam = new SC_FormParam();
70        // 認証可否の判定
71        SC_Utils_Ex::sfIsSuccess(new SC_Session());
72
73        $this->lfInitParam($objFormParam);
74        $objFormParam->setParam($_POST);
75        $objFormParam->convParam();
76        $class_id = $objFormParam->getValue('class_id');
77
78        // 要求判定
79        switch($this->getMode()) {
80            // 編集処理
81        case 'edit':
82            //パラメータの取得
83            $this->arrForm  = $objFormParam->getHashArray();
84            // 入力パラメーターチェック
85            $this->arrErr = $this->lfCheckError($objFormParam);
86            if (SC_Utils_Ex::isBlank($this->arrErr)) {
87                //新規規格追加かどうかを判定する
88                $is_insert = $this->lfCheckInsert($this->arrForm);
89                if($is_insert) {
90                    $this->lfInsertClass($this->arrForm); // 新規作成
91                } else {
92                    $this->lfUpdateClass($this->arrForm); // 既存編集
93                }
94                // 再表示
95                SC_Response::reload();
96            }
97            break;
98            // 削除
99        case 'delete':
100            //規格データの削除処理
101            $this->lfDeleteClass($class_id);
102            // 再表示
103            SC_Response::reload();
104            break;
105            // 編集前処理
106        case 'pre_edit':
107            // 規格名を取得する。
108            $class_name = $this->lfGetClassName($class_id);
109            // 入力項目にカテゴリ名を入力する。
110            $this->arrForm['name'] = $class_name;
111            break;
112        case 'down':
113            $this->lfDownRank($class_id);
114            // 再表示
115            SC_Response::reload();
116            break;
117        case 'up':
118            $this->lfUpRank($class_id);
119            // 再表示
120            SC_Response::reload();
121            break;
122        default:
123            break;
124        }
125        // 規格の読込
126        $this->arrClass = $this->lfGetClass();
127        $this->arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount();
128        // POSTデータを引き継ぐ
129        $this->tpl_class_id = $class_id;
130    }
131
132    /**
133     * デストラクタ.
134     *
135     * @return void
136     */
137    function destroy() {
138        parent::destroy();
139    }
140
141    /**
142     * パラメータの初期化を行う.
143     *
144     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
145     * @return void
146     */
147    function lfInitParam(&$objFormParam) {
148        $objFormParam->addParam("規格名", "name", STEXT_LEN, "KVa", array("EXIST_CHECK" ,"SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
149        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK"));
150    }
151
152   /**
153     * 有効な規格情報の取得
154     *
155     * @param array $objFormParam フォームパラメータークラス
156     * @return array 規格情報
157     */
158    function lfGetClass($arrData) {
159        $objQuery =& SC_Query::getSingletonInstance();
160
161        $where = "del_flg <> 1";
162        $objQuery->setOrder("rank DESC");
163        $arrClass = $objQuery->select("name, class_id", "dtb_class", $where);
164        return $arrClass;
165    }
166
167   /**
168     * 規格名を取得する
169     *
170     * @param integer $class_id 規格ID
171     * @return string 規格名
172     */
173    function lfGetClassName($class_id) {
174        $objQuery =& SC_Query::getSingletonInstance();
175        $where = "class_id = ?";
176        $class_name = $objQuery->get("name", "dtb_class", $where, array($class_id));
177        return $class_name;
178    }
179
180   /**
181     * 規格情報を新規登録
182     *
183     * @param array $arrForm フォームパラメータークラス
184     * @return integer 更新件数
185     */
186    function lfInsertClass($arrForm) {
187        $objQuery =& SC_Query::getSingletonInstance();
188        // INSERTする値を作成する。
189        $sqlval['name'] = $arrForm['name'];
190        $sqlval['creator_id'] = $_SESSION['member_id'];
191        $sqlval['rank'] = $objQuery->max("rank", "dtb_class") + 1;
192        $sqlval['create_date'] = "now()";
193        $sqlval['update_date'] = "now()";
194        // INSERTの実行
195        $sqlval['class_id'] = $objQuery->nextVal('dtb_class_class_id');
196        $ret = $objQuery->insert("dtb_class", $sqlval);
197        return $ret;
198    }
199
200   /**
201     * 規格情報を更新
202     *
203     * @param array $arrForm フォームパラメータークラス
204     * @return integer 更新件数
205     */
206    function lfUpdateClass($arrForm) {
207        $objQuery =& SC_Query::getSingletonInstance();
208        // UPDATEする値を作成する。
209        $sqlval['name'] = $arrForm['name'];
210        $sqlval['update_date'] = "Now()";
211        $where = "class_id = ?";
212        // UPDATEの実行
213        $ret = $objQuery->update("dtb_class", $sqlval, $where, array($arrForm['class_id']));
214        return $ret;
215    }
216
217    /**
218     * 規格情報を削除する.
219     *
220     * @param integer $class_id 規格ID
221     * @param SC_Helper_DB $objDb SC_Helper_DBのインスタンス
222     * @return integer 更新件数
223     */
224    function lfDeleteClass($class_id) {
225        $objDb = new SC_Helper_DB_Ex();
226        $objQuery =& SC_Query::getSingletonInstance();
227
228        $objDb->sfDeleteRankRecord("dtb_class", "class_id", $class_id, "", true);
229        $where= "class_id = ?";
230        $ret = $objQuery->delete("dtb_classcategory", $where, array($class_id));
231        return $ret;
232    }
233
234   /**
235     * エラーチェック
236     *
237     * @param array $objFormParam フォームパラメータークラス
238     * @return array エラー配列
239     */
240    function lfCheckError(&$objFormParam) {
241        $objQuery =& SC_Query::getSingletonInstance();
242        $arrForm = $objFormParam->getHashArray();
243        // パラメーターの基本チェック
244        $arrErr = $objFormParam->checkError();
245        if (!SC_Utils_Ex::isBlank($arrErr)) {
246            return $arrErr;
247        }else{
248            $arrForm = $objFormParam->getHashArray();
249        }
250
251        $where = "del_flg = 0 AND name = ?";
252        $arrClass = $objQuery->select("class_id, name", "dtb_class", $where, array($arrForm['name']));
253        // 編集中のレコード以外に同じ名称が存在する場合
254        if ($arrClass[0]['class_id'] != $arrForm['class_id'] && $arrClass[0]['name'] == $arrForm['name']) {
255            $arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
256        }
257        return $arrErr;
258    }
259
260    /**
261     * 新規規格追加かどうかを判定する.
262     *
263     * @param string $arrForm フォームの入力値
264     * @return boolean 新規商品追加の場合 true
265     */
266    function lfCheckInsert($arrForm) {
267        //class_id のあるなしで新規商品かどうかを判定
268        if (empty($arrForm['class_id'])){
269            return true;
270        }else{
271            return false;
272        }
273    }
274    /**
275     * 並び順を上げる
276     *
277     * @param integer $class_id 規格ID
278     * @return void
279     */
280    function lfUpRank($class_id) {
281        $objDb = new SC_Helper_DB_Ex();
282        $objDb->sfRankUp("dtb_class", "class_id", $class_id);
283    }
284    /**
285     * 並び順を下げる
286     *
287     * @param integer $class_id 規格ID
288     * @return void
289     */
290    function lfDownRank($class_id) {
291        $objDb = new SC_Helper_DB_Ex();
292        $objDb->sfRankDown("dtb_class", "class_id", $class_id);
293    }
294}
295?>
Note: See TracBrowser for help on using the repository browser.