source: branches/feature-module-update/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php @ 15661

Revision 15661, 5.3 KB checked in by nanasess, 15 years ago (diff)

クラス化に伴う修正

  • Property svn:keywords set to "Id Revision Date"
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$
17 */
18class LC_Page_Admin_Contents_RecommendSearch 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 = 'contents/recomend_search.tpl';
31        $this->tpl_mainno = 'contents';
32        $this->tpl_subnavi = '';
33        $this->tpl_subno = "";
34
35    }
36
37    /**
38     * Page のプロセス.
39     *
40     * @return void
41     */
42    function process() {
43        $conn = new SC_DBConn();
44        $objView = new SC_AdminView();
45        $objSess = new SC_Session();
46        $objDb = new SC_Helper_DB_Ex();
47
48        // 認証可否の判定
49        SC_Utils_Ex::sfIsSuccess($objSess);
50
51        if (!isset($_POST['mode'])) $_POST['mode'] = "";
52        if ($_POST['mode'] == "search") {
53
54            // POST値の引き継ぎ
55            $this->arrForm = $_POST;
56            // 入力文字の強制変換
57            $this->lfConvertParam();
58
59
60            $where = "del_flg = 0";
61
62            /* 入力エラーなし */
63            foreach ($this->arrForm as $key => $val) {
64                if($val == "") {
65                    continue;
66                }
67
68                switch ($key) {
69                case 'search_name':
70
71                    $where .= " AND name ILIKE ?";
72                    $arrval[] = "%$val%";
73                    break;
74                case 'search_category_id':
75                    // 子カテゴリIDの取得
76                    $arrRet = $objDb->sfGetChildsID("dtb_category", "parent_category_id", "category_id", $val);
77                    $tmp_where = "";
78                    foreach ($arrRet as $val) {
79                        if($tmp_where == "") {
80                            $tmp_where.= " AND ( category_id = ?";
81                        } else {
82                            $tmp_where.= " OR category_id = ?";
83                        }
84                        $arrval[] = $val;
85                    }
86                    $where.= $tmp_where . " )";
87                    break;
88                case 'search_product_code':
89                    $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)";
90                    $where .= " OR product_code ILIKE ?";
91                    $arrval[] = "%$val%";
92                    $arrval[] = "%$val%";
93                    break;
94                default:
95                    break;
96                }
97            }
98
99            $order = "update_date DESC, product_id DESC";
100
101            // 読み込む列とテーブルの指定
102            $col = "product_id, name, category_id, main_list_image, status, product_code, price01, stock, stock_unlimited";
103            $from = "vw_products_nonclass AS noncls ";
104
105            $objQuery = new SC_Query();
106            // 行数の取得
107            if (empty($arrval)) $arrval = array();
108            $linemax = $objQuery->count("dtb_products", $where, $arrval);
109            $this->tpl_linemax = $linemax;               // 何件が該当しました。表示用
110
111            // ページ送りの処理
112            if(isset($_POST['search_page_max'])
113               && is_numeric($_POST['search_page_max'])) {
114                $page_max = $_POST['search_page_max'];
115            } else {
116                $page_max = SEARCH_PMAX;
117            }
118
119            // ページ送りの取得
120            $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
121            $this->tpl_strnavi = $objNavi->strnavi;      // 表示文字列
122            $startno = $objNavi->start_row;
123
124            // 取得範囲の指定(開始行番号、行数のセット)
125            $objQuery->setlimitoffset($page_max, $startno);
126            // 表示順序
127            $objQuery->setorder($order);
128
129            // 検索結果の取得
130            $this->arrProducts = $objQuery->select($col, $from, $where, $arrval);
131        }
132
133        // カテゴリ取得
134        $this->arrCatList = $objDb->sfGetCategoryList();
135
136        //---- ページ表示
137        $objView->assignobj($this);
138        $objView->display($this->tpl_mainpage);
139
140    }
141
142    /**
143     * デストラクタ.
144     *
145     * @return void
146     */
147    function destroy() {
148        parent::destroy();
149    }
150
151    /* 取得文字列の変換 */
152    function lfConvertParam() {
153        /*
154         *  文字列の変換
155         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
156         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
157         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
158         *  n :  「全角」数字を「半角(ハンカク)」に変換
159         */
160        $arrConvList['search_name'] = "KVa";
161        $arrConvList['search_product_code'] = "KVa";
162
163        // 文字変換
164        foreach ($arrConvList as $key => $val) {
165            // POSTされてきた値のみ変換する。
166            if(isset($this->arrForm[$key])) {
167                $this->arrForm[$key] = mb_convert_kana($this->arrForm[$key] ,$val);
168            }
169        }
170    }
171}
172?>
Note: See TracBrowser for help on using the repository browser.