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

Revision 20172, 10.8 KB checked in by kajiwara, 11 years ago (diff)

#973 規格管理画面のリファクタリング

  • 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        $objSess = new SC_Session();
70        $objDb = new SC_Helper_DB_Ex();
71        $objFormParam = new SC_FormParam();
72
73        // 認証可否の判定
74        SC_Utils_Ex::sfIsSuccess(new SC_Session());
75
76        // 要求判定
77        switch($this->getMode()) {
78            // 編集処理
79        case 'edit':
80            // パラメータ設定
81            $this->lfInitParam($objFormParam);
82            $objFormParam->setParam($_POST);
83            $objFormParam->convParam();
84            // 入力パラメーターチェック
85            $this->arrErr = $this->lfCheckError($objFormParam);
86            if (SC_Utils_Ex::isBlank($this->arrErr)) {
87                $this->arrForm = $objFormParam->getHashArray();
88                //新規規格追加かどうかを判定する
89                $is_insert = $this->lfCheckInsert($this->arrForm);
90                if($is_insert) {
91                    $this->lfInsertClass($this->arrForm); // 新規作成
92                } else {
93                    $this->lfUpdateClass($this->arrForm); // 既存編集
94                }
95                // 再表示
96                SC_Response::reload();
97            } else {
98                // POSTデータを引き継ぐ
99                $this->tpl_class_id = $this->arrForm['class_id'];
100            }
101            break;
102
103            // 削除
104        case 'delete':
105            // パラメータ設定
106            $this->lfClassIdParam($objFormParam);
107            $objFormParam->setParam($_POST);
108            $objFormParam->convParam();
109            // 入力パラメーターチェック
110            $this->arrErr = $objFormParam->checkError();
111            if (SC_Utils_Ex::isBlank($this->arrErr)) {
112                $class_id = $objFormParam->getValue('class_id');
113            }else{
114                break;
115            }
116                //規格データの削除処理
117            $this->lfDeleteClass($class_id ,$objDb);
118            // 再表示
119            SC_Response::reload();
120            break;
121            // 編集前処理
122        case 'pre_edit':
123            // パラメータ設定
124            $this->lfClassIdParam($objFormParam);
125            $objFormParam->setParam($_POST);
126            $objFormParam->convParam();
127            // 入力パラメーターチェック
128            $this->arrErr = $objFormParam->checkError();
129            if (SC_Utils_Ex::isBlank($this->arrErr)) {
130                $class_id = $objFormParam->getValue('class_id');
131            }else{
132                break;
133            }
134            // 規格名を取得する。
135            $class_name = $this->lfGetClassName($class_id);
136            // 入力項目にカテゴリ名を入力する。
137            $this->arrForm['name'] = $class_name;
138
139            // POSTデータを引き継ぐ
140            $this->tpl_class_id = $class_id;
141            break;
142        case 'down':
143            // パラメータ設定
144            $this->lfClassIdParam($objFormParam);
145            $objFormParam->setParam($_POST);
146            $objFormParam->convParam();
147            // 入力パラメーターチェック
148            $this->arrErr = $objFormParam->checkError();
149            if (SC_Utils_Ex::isBlank($this->arrErr)) {
150                $class_id = $objFormParam->getValue('class_id');
151            }else{
152                break;
153            }
154            $objDb->sfRankDown("dtb_class", "class_id", $class_id);
155            // 再表示
156            SC_Response::reload();
157            break;
158        case 'up':
159            // パラメータ設定
160            $this->lfClassIdParam($objFormParam);
161            $objFormParam->setParam($_POST);
162            $objFormParam->convParam();
163            // 入力パラメーターチェック
164            $this->arrErr = $objFormParam->checkError();
165            if (SC_Utils_Ex::isBlank($this->arrErr)) {
166                $class_id = $objFormParam->getValue('class_id');
167            }else{
168                break;
169            }
170            $objDb->sfRankUp("dtb_class", "class_id", $class_id);
171            // 再表示
172            SC_Response::reload();
173            break;
174        default:
175            break;
176        }
177
178        // 規格の読込
179        $this->arrClass = $this->lfGetClass();
180        $this->arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount();
181    }
182
183    /**
184     * デストラクタ.
185     *
186     * @return void
187     */
188    function destroy() {
189        parent::destroy();
190    }
191
192    /**
193     * パラメータの初期化を行う.
194     *
195     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
196     * @return void
197     */
198    function lfInitParam(&$objFormParam) {
199        $objFormParam->addParam("規格名", "name", STEXT_LEN, "a", array("EXIST_CHECK" ,"SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
200        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK"));
201    }
202
203    /**
204     * 規格IDの初期化を行う.
205     *
206     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
207     * @return void
208     */
209    function lfClassIdParam(&$objFormParam) {
210        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK"));
211    }
212
213   /**
214     * 有効な規格情報の取得
215     *
216     * @param array $objFormParam フォームパラメータークラス
217     * @return array 規格情報
218     */
219    function lfGetClass($arrData) {
220        $objQuery =& SC_Query::getSingletonInstance();
221
222        $where = "del_flg <> 1";
223        $objQuery->setOrder("rank DESC");
224        $arrClass = $objQuery->select("name, class_id", "dtb_class", $where);
225        return $arrClass;
226    }
227
228   /**
229     * 規格名を取得する
230     *
231     * @param array $arrForm フォームパラメータークラス
232     * @return string $class_name 規格名
233     */
234    function lfGetClassName($class_id) {
235        $objQuery =& SC_Query::getSingletonInstance();
236        $where = "class_id = ?";
237        $class_name = $objQuery->get("name", "dtb_class", $where, array($class_id));
238        return $class_name;
239    }
240
241   /**
242     * 規格情報を新規登録
243     *
244     * @param array $arrForm フォームパラメータークラス
245     * @return boolean DB登録結果 成功:True 失敗:false
246     */
247    function lfInsertClass($arrForm) {
248        $objQuery =& SC_Query::getSingletonInstance();
249        // INSERTする値を作成する。
250        $sqlval['name'] = $arrForm['name'];
251        $sqlval['creator_id'] = $_SESSION['member_id'];
252        $sqlval['rank'] = $objQuery->max("rank", "dtb_class") + 1;
253        $sqlval['create_date'] = "now()";
254        $sqlval['update_date'] = "now()";
255        // INSERTの実行
256        $sqlval['class_id'] = $objQuery->nextVal('dtb_class_class_id');
257        $ret = $objQuery->insert("dtb_class", $sqlval);
258        return $ret;
259    }
260
261   /**
262     * 規格情報を更新
263     *
264     * @param array $arrForm フォームパラメータークラス
265     * @return boolean DB登録結果 成功:True 失敗:false
266     */
267    function lfUpdateClass($arrForm) {
268        $objQuery =& SC_Query::getSingletonInstance();
269        // UPDATEする値を作成する。
270        $sqlval['name'] = $arrForm['name'];
271        $sqlval['update_date'] = "Now()";
272        $where = "class_id = ?";
273        // UPDATEの実行
274        $ret = $objQuery->update("dtb_class", $sqlval, $where, array($arrForm['class_id']));
275        return $ret;
276    }
277
278    /**
279     * 規格情報を削除する.
280     *
281     * @param integer $class_id 規格ID
282     * @param SC_Helper_DB $objDb SC_Helper_DBのインスタンス
283     * @return boolean 削除結果 成功:True 失敗:false
284     */
285    function lfDeleteClass($class_id , &$objDb) {
286        $objQuery =& SC_Query::getSingletonInstance();
287
288        $objDb->sfDeleteRankRecord("dtb_class", "class_id", $class_id, "", true);
289        $where= "class_id = ?";
290        $ret = $objQuery->delete("dtb_classcategory", $where, array($class_id));
291        return $ret;
292    }
293
294   /**
295     * エラーチェック
296     *
297     * @param array $objFormParam フォームパラメータークラス
298     * @return array エラー配列
299     */
300    function lfCheckError(&$objFormParam) {
301        $objQuery =& SC_Query::getSingletonInstance();
302        // パラメーターの基本チェック
303        $arrErr = $objFormParam->checkError();
304        if (!SC_Utils_Ex::isBlank($arrErr)) {
305            return $arrErr;
306        }else{
307            $arrForm = $objFormParam->getHashArray();
308        }
309
310        $where = "del_flg = 0 AND name = ?";
311        $arrClass = $objQuery->select("class_id, name", "dtb_class", $where, array($arrForm['name']));
312        // 編集中のレコード以外に同じ名称が存在する場合
313        if ($arrClass[0]['class_id'] != $arrForm['class_id'] && $arrClass[0]['name'] == $arrForm['name']) {
314            $arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
315        }
316        return $arrErr;
317    }
318
319    /**
320     * 新規規格追加かどうかを判定する.
321     *
322     * @param string $arrForm フォームの入力値
323     * @return boolean 新規商品追加の場合 true
324     */
325    function lfCheckInsert($arrForm) {
326        //class_id のあるなしで新規商品かどうかを判定
327        if (empty($arrForm['class_id'])){
328            return true;
329        }else{
330            return false;
331        }
332    }
333
334}
335?>
Note: See TracBrowser for help on using the repository browser.