source: branches/feature-module-update/data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php @ 16379

Revision 16379, 7.3 KB checked in by nanasess, 15 years ago (diff)

addslashes() を SC_Utils_Ex::sfQuoteSmart() に修正

  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * 規格分類 のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id:LC_Page_Admin_Products_ClassCategory.php 15532 2007-08-31 14:39:46Z nanasess $
17 */
18class LC_Page_Admin_Products_ClassCategory extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30        $this->tpl_mainpage = 'products/classcategory.tpl';
31        $this->tpl_subnavi = 'products/subnavi.tpl';
32        $this->tpl_subno = 'class';
33        $this->tpl_subtitle = '規格登録';
34        $this->tpl_mainno = 'products';
35    }
36
37    /**
38     * Page のプロセス.
39     *
40     * @return void
41     */
42    function process() {
43        $conn = new SC_DBConn();
44        $objView = new SC_AdminView();
45        $objQuery = new SC_Query();
46        $objDb = new SC_Helper_DB_Ex();
47
48        // 認証可否の判定
49        $objSess = new SC_Session();
50        SC_Utils_Ex::sfIsSuccess($objSess);
51
52        $get_check = false;
53
54        // 規格IDのチェック
55        if(SC_Utils_Ex::sfIsInt($_GET['class_id'])) {
56            // 規格名の取得
57            $this->tpl_class_name = $objQuery->get("dtb_class", "name", "class_id = ?", array($_GET['class_id']));
58            if($this->tpl_class_name != "") {
59                // 規格IDの引き継ぎ
60                $this->arrHidden['class_id'] = $_GET['class_id'];
61                $get_check = true;
62            }
63        }
64
65        if(!$get_check) {
66            // 規格登録ページに飛ばす。
67            $this->sendRedirect($this->getLocation(URL_CLASS_REGIST));
68            exit;
69        }
70
71        if (!isset($_POST['mode'])) $_POST['mode'] = "";
72
73        if (isset($_POST['class_id'])) {
74            if (!SC_Utils_Ex::sfIsInt($_POST['class_id'])) {
75                SC_Utils_Ex::sfDispError("");
76            }
77        }
78
79        // 新規作成 or 編集
80        switch($_POST['mode']) {
81            // 登録ボタン押下
82        case 'edit':
83            // POST値の引き継ぎ
84            $this->arrForm = $_POST;
85            // 入力文字の変換
86            $_POST = $this->lfConvertParam($_POST);
87            // エラーチェック
88            $this->arrErr = $this->lfErrorCheck();
89            if(count($this->arrErr) <= 0) {
90                if($_POST['classcategory_id'] == "") {
91                    $this->lfInsertClass(); // DBへの書き込み
92                } else {
93                    $this->lfUpdateClass(); // DBへの書き込み
94                }
95                // 再表示
96                $this->reload($_GET['class_id']);
97                //sfReload("class_id=" . $_GET['class_id']);
98            } else {
99                // POSTデータを引き継ぐ
100                $this->tpl_classcategory_id = $_POST['classcategory_id'];
101            }
102            break;
103            // 削除
104        case 'delete':
105            // ランク付きレコードの削除
106            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
107            $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where, true);
108            break;
109            // 編集前処理
110        case 'pre_edit':
111            // 編集項目をDBより取得する。
112            $where = "classcategory_id = ?";
113            $name = $objQuery->get("dtb_classcategory", "name", $where, array($_POST['classcategory_id']));
114            // 入力項目にカテゴリ名を入力する。
115            $this->arrForm['name'] = $name;
116            // POSTデータを引き継ぐ
117            $this->tpl_classcategory_id = $_POST['classcategory_id'];
118            break;
119        case 'down':
120            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
121            $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
122            break;
123        case 'up':
124            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
125            $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
126            break;
127        default:
128            break;
129        }
130
131        // 規格分類の読込
132        $where = "del_flg <> 1 AND class_id = ?";
133        $objQuery->setorder("rank DESC");
134        $this->arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($_GET['class_id']));
135
136        $objView->assignobj($this);
137        $objView->display(MAIN_FRAME);
138
139    }
140
141    /**
142     * デストラクタ.
143     *
144     * @return void
145     */
146    function destroy() {
147        parent::destroy();
148    }
149
150    /* DBへの挿入 */
151    function lfInsertClass() {
152        $objQuery = new SC_Query();
153        $objQuery->begin();
154        // 親規格IDの存在チェック
155        $where = "del_flg <> 1 AND class_id = ?";
156        $ret =  $objQuery->get("dtb_class", "class_id", $where, array($_POST['class_id']));
157        if($ret != "") {
158            // INSERTする値を作成する。
159            $sqlval['name'] = $_POST['name'];
160            $sqlval['class_id'] = $_POST['class_id'];
161            $sqlval['creator_id'] = $_SESSION['member_id'];
162            $sqlval['rank'] = $objQuery->max("dtb_classcategory", "rank", $where, array($_POST['class_id'])) + 1;
163            $sqlval['create_date'] = "now()";
164            $sqlval['update_date'] = "now()";
165            // INSERTの実行
166            $ret = $objQuery->insert("dtb_classcategory", $sqlval);
167        }
168        $objQuery->commit();
169        return $ret;
170    }
171
172    /* DBへの更新 */
173    function lfUpdateClass() {
174        $objQuery = new SC_Query();
175        // UPDATEする値を作成する。
176        $sqlval['name'] = $_POST['name'];
177        $sqlval['update_date'] = "Now()";
178        $where = "classcategory_id = ?";
179        // UPDATEの実行
180        $ret = $objQuery->update("dtb_classcategory", $sqlval, $where, array($_POST['classcategory_id']));
181        return $ret;
182    }
183
184    /* 取得文字列の変換 */
185    function lfConvertParam($array) {
186        // 文字変換
187        $arrConvList['name'] = "KVa";
188
189        foreach ($arrConvList as $key => $val) {
190            // POSTされてきた値のみ変換する。
191            if(isset($array[$key])) {
192                $array[$key] = mb_convert_kana($array[$key] ,$val);
193            }
194        }
195        return $array;
196    }
197
198    /* 入力エラーチェック */
199    function lfErrorCheck() {
200        $objErr = new SC_CheckError();
201        $objErr->doFunc(array("分類名", "name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
202        if(!isset($objErr->arrErr['name'])) {
203            $objQuery = new SC_Query();
204            $where = "class_id = ? AND name = ?";
205            $arrRet = $objQuery->select("classcategory_id, name", "dtb_classcategory", $where, array($_GET['class_id'], $_POST['name']));
206            // 編集中のレコード以外に同じ名称が存在する場合
207            if ($arrRet[0]['classcategory_id'] != $_POST['classcategory_id'] && $arrRet[0]['name'] == $_POST['name']) {
208                $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
209            }
210        }
211        return $objErr->arrErr;
212    }
213}
214?>
Note: See TracBrowser for help on using the repository browser.