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

Revision 19661, 24.4 KB checked in by nanasess, 13 years ago (diff)

source:branches/camp/camp-2_5-E のマージ

  • スマートフォン対応(#787)
  • プラグイン機能(#494)
  • Property svn:eol-style set to LF
  • 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 * 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_PATH . "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_ProductClass extends LC_Page_Admin {
35
36    // }}}
37    // {{{ functions
38    /** ダウンロード用ファイル管理クラスのインスタンス */
39    var $objDownFile;
40
41    /** hidden 項目の配列 */
42    var $arrHidden;
43
44    /**
45     * Page を初期化する.
46     *
47     * @return void
48     */
49    function init() {
50        parent::init();
51        $this->tpl_mainpage = 'products/product_class.tpl';
52        $this->tpl_subnavi = 'products/subnavi.tpl';
53        $this->tpl_mainno = 'products';
54        $this->tpl_subno = 'product';
55        $this->tpl_subtitle = '商品登録(商品規格)';
56    }
57
58    function lfInitDownFile() {
59        $i = 1;
60        while (isset($_POST['classcategory_id1:' . $i])) {
61            //ファイル系処理
62            $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . $i, 'down_realfilename'. ":" . $i, explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);
63            $i++;
64        }
65    }
66
67    /**
68     * Page のプロセス.
69     *
70     * @return void
71     */
72    function process() {
73        $this->action();
74        $this->sendResponse();
75    }
76
77    /**
78     * Page のアクション.
79     *
80     * @return void
81     */
82    function action() {
83        $this->authorization();
84
85        $this->arrSearchHidden = $this->createSearchParams($_POST);
86
87        // FORMデータの引き継ぎ
88        $this->arrForm = $_POST;
89
90        $this->tpl_product_id =
91            isset($_POST['product_id']) ? $_POST['product_id'] : "" ;
92        $this->tpl_pageno = isset($_POST['pageno']) ? $_POST['pageno'] : "";
93        if (!isset($_POST['mode'])) $_POST['mode'] = "";
94
95        // Downファイル管理クラス
96        $this->objDownFile = new SC_UploadFile(DOWN_TEMP_DIR, DOWN_SAVE_DIR);
97
98        switch ($_POST['mode']) {
99        case 'edit':
100            // 入力値の変換
101            $this->arrForm = $this->lfConvertParam($_POST);
102            // エラーチェック
103            $this->arrErr = $this->lfProductClassError($this->arrForm);
104            if ($this->arrErr == null){
105            //if (SC_Utils_Ex::isBlank($this->arrErr)) {
106                $this->tpl_mainpage = 'products/product_class_confirm.tpl';
107                $this->lfProductConfirmPage(); // 確認ページ表示
108            } else {
109                $this->doPreEdit(false,true);
110                // Hiddenからのデータを引き継ぐ
111                $this->objDownFile->setHiddenFileList($_POST);
112                // HIDDEN用に配列を渡す。
113                $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
114                // Form用に配列を渡す。
115                $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
116            }
117            break;
118
119        case 'delete':
120            $this->doDelete();
121            break;
122
123        case 'pre_edit':
124            $this->doPreEdit();
125            // HIDDEN用に配列を渡す。
126            $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
127            break;
128
129        case 'disp':
130            $this->doDisp();
131            break;
132        // ダウンロード商品ファイルアップロード
133        case 'upload_down':
134            $this->doPreEdit();
135            // Hiddenからのデータを引き継ぐ
136            $this->objDownFile->setHiddenKikakuFileList($_POST);
137            // ファイル存在チェック
138            $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objDownFile->checkEXISTS($_POST['down_key']));
139            // ファイル保存処理
140            $this->arrErr[$_POST['down_key']] = $this->objDownFile->makeTempDownFile($_POST['down_key']);
141            // HIDDEN用に配列を渡す。
142            $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
143            // Form用に配列を渡す。
144            $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
145            break;
146        // ダウンロードファイルの削除
147        case 'delete_down':
148            $this->doPreEdit();
149            // Hiddenからのデータを引き継ぐ
150            $this->objDownFile->setHiddenKikakuFileList($_POST);
151            // ファイル削除処理
152            $this->objDownFile->deleteKikakuFile($_POST['down_key']);
153            // HIDDEN用に配列を渡す。
154            $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
155            // Form用に配列を渡す。
156            $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
157            break;
158        case 'confirm_return':
159            // フォームパラメータの引き継ぎ
160            $this->arrForm = $_POST;
161            // 規格の選択情報は引き継がない。
162            $this->arrForm['select_class_id1'] = "";
163            $this->arrForm['select_class_id2'] = "";
164            $this->doPreEdit(false,true);
165            // Hiddenからのデータを引き継ぐ
166            $this->objDownFile->setHiddenFileList($_POST);
167            // HIDDEN用に配列を渡す。
168            $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());
169            // Form用に配列を渡す。
170            $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
171            break;
172        case 'complete':
173            // 完了ページ設定
174            $this->tpl_mainpage = 'products/product_class_complete.tpl';
175            // ファイル情報の初期化
176            $this->lfInitDownFile();
177            // Hiddenからのデータを引き継ぐ
178            $this->objDownFile->setHiddenFileList($_POST);
179            // 商品規格の登録
180            $this->registerProductClass($_POST, $_POST['product_id']);
181            // 一時ファイルを本番ディレクトリに移動する
182            $this->objDownFile->moveTempDownFile();
183            break;
184
185        default:
186        }
187        $this->arrClass = $this->getAllClass();
188        $this->arrForm['product_name'] = $this->getProductName($_POST['product_id']);
189    }
190
191    /**
192     * デストラクタ.
193     *
194     * @return void
195     */
196    function destroy() {
197        parent::destroy();
198    }
199
200    /**
201     * 規格の登録または更新を行う.
202     *
203     * TODO dtb_class_combination は, dtb_product_categories に倣って,
204     *      DELETE to INSERT だが, UPDATE を検討する.
205     *
206     * @param array $arrList 入力フォームの内容
207     * @param integer $product_id 登録を行う商品ID
208     */
209    function registerProductClass($arrList, $product_id) {
210        $objQuery =& SC_Query::getSingletonInstance();
211        $objDb = new SC_Helper_DB_Ex();
212
213        $objQuery->begin();
214
215        $productsClass = $objQuery->select("*", "dtb_products_class", "product_id = ?", array($product_id));
216
217        $exists = array();
218        foreach ($productsClass as $val) {
219            $exists[$val['product_class_id']] = $val;
220        }
221
222        $i = 1;
223        while (isset($arrList['classcategory_id1:' . $i])) {
224            $pVal = array();
225            $pVal['product_id'] = $product_id;;
226            $pVal['product_code'] = $arrList["product_code:".$i];
227            $pVal['stock'] = $arrList["stock:".$i];
228            $pVal['stock_unlimited'] = ($arrList["stock_unlimited:".$i]) ? '1' : '0';
229            $pVal['price01'] = $arrList['price01:'.$i];
230            $pVal['price02'] = $arrList['price02:'.$i];
231            $pVal['product_type_id'] = $arrList['product_type_id:'.$i];
232            $pVal['down_filename'] = $arrList['down_filename:'.$i];
233            $pVal['down_realfilename'] = $arrList['down_realfilename:'.$i];
234            $pVal['creator_id'] = $_SESSION['member_id'];
235            $pVal['update_date'] = "now()";
236
237            if($arrList["check:".$i] == 1) {
238                $pVal['del_flg'] = 0;
239            } else {
240                $pVal['del_flg'] = 1;
241            }
242
243            // 更新 or 登録
244            $isUpdate = false;
245            if (!SC_Utils_Ex::isBlank($arrList["product_class_id:".$i])) {
246                $isUpdate = true;
247                // 更新の場合は規格組み合わせを検索し, 削除しておく
248                $class_combination_id = $exists[$arrList["product_class_id:".$i]]['class_combination_id'];
249                $existsCombi = $objQuery->getRow("dtb_class_combination",
250                                                 "*", "class_combination_id = ?",
251                                                 array($class_combination_id));
252
253                $objQuery->delete("dtb_class_combination",
254                                  "class_combination_id IN (?, ?)",
255                                  array($existsCombi['class_combination_id'],
256                                        $existsCombi['parent_class_combination_id']));
257            }
258
259            // 規格組み合わせを登録
260            $cVal1['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');
261
262            $cVal1['classcategory_id'] = $arrList["classcategory_id1:".$i];
263            $cVal1['level'] = 1;
264            $objQuery->insert("dtb_class_combination", $cVal1);
265
266            $pVal['class_combination_id'] = $cVal1['class_combination_id'];
267
268            // 規格2も登録する場合
269            if (!SC_Utils_Ex::isBlank($arrList["classcategory_id2:".$i])) {
270                $cVal2['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id');
271                $cVal2['classcategory_id'] = $arrList["classcategory_id2:".$i];
272                $cVal2['parent_class_combination_id'] = $cVal1['class_combination_id'];
273                $cVal2['level'] = 2;
274                $objQuery->insert("dtb_class_combination", $cVal2);
275
276                $pVal['class_combination_id'] = $cVal2['class_combination_id'];
277            }
278
279            // 更新
280            if ($isUpdate) {
281                $pVal['product_class_id'] = $arrList["product_class_id:".$i];
282                $objQuery->update("dtb_products_class", $pVal,
283                                  "product_class_id = ?",
284                                  array($pVal['product_class_id']));
285            }
286            // 新規登録
287            else {
288                $pVal['create_date'] = "now()";
289                $pVal['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
290                $objQuery->insert("dtb_products_class", $pVal);
291            }
292            $i++;
293        }
294
295        // 規格無し用の商品規格を非表示に
296        $bVal['del_flg'] = 1;
297        $bVal['update_date'] = 'now()';
298        $objQuery->update("dtb_products_class", $bVal,
299                          "product_class_id = ? AND class_combination_id IS NULL",
300                          array($pVal['product_class_id']));
301
302        // 件数カウントバッチ実行
303        $objDb->sfCategory_Count($objQuery);
304        $objQuery->commit();
305    }
306
307    // 規格選択エラーチェック
308    function lfClassError() {
309        $objErr = new SC_CheckError();
310        $objErr->doFunc(array("規格1", "select_class_id1"), array("EXIST_CHECK"));
311        $objErr->doFunc(array("規格", "select_class_id1", "select_class_id2"), array("TOP_EXIST_CHECK"));
312        $objErr->doFunc(array("規格1", "規格2", "select_class_id1", "select_class_id2"), array("DIFFERENT_CHECK"));
313        return $objErr->arrErr;
314    }
315
316    /* 取得文字列の変換 */
317    function lfConvertParam($array) {
318        /*
319         *  文字列の変換
320         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
321         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
322         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
323         *  n :  「全角」数字を「半角(ハンカク)」に変換
324         */
325
326        $no = 1; // FIXME 未定義変数の修正
327        while($array["classcategory_id1:".$no] != "") {
328            $arrConvList["product_code:".$no] = "KVa";
329            $arrConvList["price01:".$no] = "n";
330            $arrConvList["price02:".$no] = "n";
331            $arrConvList["stock:".$no] = "n";
332            $no++;
333        }
334
335        // 文字変換
336        foreach ($arrConvList as $key => $val) {
337            // POSTされてきた値のみ変換する。
338            if(isset($array[$key])) {
339                $array[$key] = mb_convert_kana($array[$key] ,$val);
340            }
341        }
342        return $array;
343    }
344
345    // 商品規格エラーチェック
346    function lfProductClassError($array) {
347        $objErr = new SC_CheckError($array);
348        $no = 1; // FIXME 未定義変数の修正
349        while($array["classcategory_id1:".$no] != "") {
350            if($array["check:".$no] == 1) {
351                $objErr->doFunc(array("商品コード", "product_code:".$no, STEXT_LEN), array("MAX_LENGTH_CHECK"));
352                $objErr->doFunc(array(NORMAL_PRICE_TITLE, "price01:".$no, PRICE_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK"));
353                $objErr->doFunc(array(SALE_PRICE_TITLE, "price02:".$no, PRICE_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
354
355                if($array["stock_unlimited:".$no] != '1') {
356                    $objErr->doFunc(array("在庫数", "stock:".$no, AMOUNT_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
357                }
358
359                //ダウンロード商品チェック
360                if($array["product_type_id:".$no] == PRODUCT_TYPE_DOWNLOAD) {
361                    $objErr->doFunc(array("ダウンロードファイル名", "down_filename:".$no, STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
362                    if($array["down_realfilename:".$no] == "") {
363                        $objErr->arrErr["down_realfilename:".$no] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。<br />";
364                    }
365                }
366                //実商品チェック
367                else if($array["product_type_id:".$no] == PRODUCT_TYPE_DOWNLOAD) {
368                    if($array["down_filename:".$no] != "") {
369                        $objErr->arrErr["down_filename:".$no] = "※ 実商品の場合はダウンロードファイル名を設定できません。<br />";
370                    }
371                    if($array["down_realfilename:".$no] != "") {
372                        $objErr->arrErr["down_realfilename:".$no] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。<br />ファイルを取り消してください。<br />";
373                    }
374                }
375            }
376            if(count($objErr->arrErr) > 0) {
377                $objErr->arrErr["error:".$no] = $objErr->arrErr["product_code:".$no];
378                $objErr->arrErr["error:".$no].= $objErr->arrErr["price01:".$no];
379                $objErr->arrErr["error:".$no].= $objErr->arrErr["price02:".$no];
380                $objErr->arrErr["error:".$no].= $objErr->arrErr["stock:".$no];
381            }
382            $no++;
383        }
384        return $objErr->arrErr;
385    }
386
387    /* 確認ページ表示用 */
388    function lfProductConfirmPage() {
389        $objDb = new SC_Helper_DB_Ex();
390        $this->arrForm['mode'] = 'complete';
391        $this->arrClass = $objDb->sfGetIDValueList("dtb_class", 'class_id', 'name');
392        $cnt = 0;
393        $check = 0;
394        $no = 1;
395        while($_POST["classcategory_id1:".$no] != "") {
396            if($_POST["check:".$no] != "") {
397                $check++;
398            }
399            $no++;
400            $cnt++;
401        }
402        $this->tpl_check = $check;
403        $this->tpl_count = $cnt;
404    }
405
406    /**
407     * 規格の組み合わせ一覧を表示する.
408     *
409     * 1. 規格1, 規格2を組み合わせた場合の妥当性を検証する.
410     * 2. 規格1, 規格2における規格分類のすべての組み合わせを取得し,
411     *    該当商品の商品規格の内容を取得し, フォームに設定する.
412     */
413    function doDisp() {
414        $this->arrForm['select_class_id1'] = $_POST['select_class_id1'];
415        $this->arrForm['select_class_id2'] = $_POST['select_class_id2'];
416
417        $this->arrErr = $this->lfClassError();
418        if (SC_Utils_Ex::isBlank($this->arrErr)) {
419            $this->arrClassCat = $this->getAllClassCategory($_POST['select_class_id1'], $_POST['select_class_id2']);
420
421            $productsClass = $this->getProductsClass($_POST['product_id']);
422
423            $total = count($this->arrClassCat);
424            for ($i = 1; $i <= $total; $i++) {
425                foreach ($productsClass as $key => $val) {
426                    $this->arrForm[$key . ":" . $i] = $val;
427                }
428            }
429        }
430        $this->tpl_onload.= "fnCheckAllStockLimit('$total', '" . DISABLED_RGB . "');";
431    }
432
433    /**
434     * 規格編集画面を表示する.
435     */
436    function doPreEdit($existsValue = true,$usepostValue = false) {
437        $existsProductsClass = $this->getProductsClassAndClasscategory($_POST['product_id']);
438        $productsClass = $this->getProductsClass($_POST['product_id']);
439        $this->arrForm["class_id1"] = $existsProductsClass[0]['class_id1'];
440        $this->arrForm["class_id2"] = $existsProductsClass[0]['class_id2'];
441        $this->arrForm['select_class_id1'] = $this->arrForm["class_id1"];
442        $this->arrForm['select_class_id2'] = $this->arrForm["class_id2"];
443        $this->arrClassCat = $this->getAllClassCategory($this->arrForm["class_id1"], $this->arrForm["class_id2"]);
444        $total = count($this->arrClassCat);
445        for ($i = 0; $i < $total; $i++) {
446            if ($existsValue) {
447                foreach ($productsClass as $key => $val) {
448                    if(!$usepostValue){
449                        $this->arrForm[$key . ":" . ($i+1)] = $val;
450                    }
451                }
452            }
453            foreach ($existsProductsClass[$i] as $key => $val) {
454                if(!$usepostValue){
455                    $this->arrForm[$key . ":" . ($i+1)] = $val;
456                }
457                if($key=="down"){
458                    $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . ($i+1), 'down_realfilename'. ":" . ($i+1), explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);
459                }
460            }
461            if (!SC_Utils_Ex::isBlank($this->arrForm['product_id:' . ($i+1)])
462                && $this->arrForm["del_flg:" . ($i+1)] == 0) {
463                $line .= "'check:" . ($i+1) . "',";
464            }
465        }
466
467        $line = preg_replace("/,$/", "", $line);
468        $this->tpl_javascript = "list = new Array($line);";
469        $color = DISABLED_RGB;
470        $this->tpl_onload.= "fnListCheck(list); fnCheckAllStockLimit('$total', '$color');";
471
472        // DBデータからダウンロードファイル名の読込
473        $this->objDownFile->setDBFileList($this->arrForm);
474        // PostデータからダウンロードTempファイル名の読込
475        $this->objDownFile->setPostFileList($_POST,$this->arrForm);
476    }
477
478    function doDelete() {
479        $objQuery =& SC_Query::getSingletonInstance();
480
481        $objQuery->begin();
482        $val['del_flg'] = 0;
483        $objQuery->update("dtb_products_class", $val, "product_id = ? AND class_combination_id IS NULL", array($_POST['product_id']));
484
485        $val['del_flg'] = 1;
486        $objQuery->update("dtb_products_class", $val, "product_id = ? AND class_combination_id IS NOT NULL", array($_POST['product_id']));
487
488        $objQuery->commit();
489
490        // 在庫無し商品の非表示対応
491        if (NOSTOCK_HIDDEN === true) {
492            // 件数カウントバッチ実行
493            //$objDb->sfCategory_Count($objQuery);
494        }
495    }
496
497    /**
498     * 規格ID1, 規格ID2の規格分類すべてを取得する.
499     *
500     * @param integer $class_id1 規格ID1
501     * @param integer $class_id2 規格ID2
502     * @return array 規格と規格分類の配列
503     */
504    function getAllClassCategory($class_id1, $class_id2 = null) {
505        $objQuery =& SC_Query::getSingletonInstance();
506
507        $col = "T1.class_id AS class_id1, "
508            . " T1.classcategory_id AS classcategory_id1, "
509            . " T1.name AS name1, "
510            . " T1.rank AS rank1 ";
511
512        if(SC_Utils_Ex::isBlank($class_id2)) {
513            $table = "dtb_classcategory T1 ";
514            $objQuery->setWhere("T1.class_id = ?")
515                     ->setOrder("T1.rank DESC");
516            $val = array($class_id1);
517        } else {
518            $col .= ","
519                . "T2.class_id AS class_id2,"
520                . "T2.classcategory_id AS classcategory_id2,"
521                . "T2.name AS name2,"
522                . "T2.rank AS rank2";
523            $table = "dtb_classcategory AS T1, dtb_classcategory AS T2";
524            $objQuery->setWhere("T1.class_id = ? AND T2.class_id = ?")
525                     ->setOrder("T1.rank DESC, T2.rank DESC");
526            $val = array($class_id1, $class_id2);
527        }
528        return $objQuery->select($col, $table, "", $val);
529    }
530
531    /**
532     * 商品名を取得する.
533     *
534     * @access private
535     * @param integer $product_id 商品ID
536     * @return string 商品名の文字列
537     */
538    function getProductName($product_id) {
539        $objQuery =& SC_Query::getSingletonInstance();
540        return $objQuery->getOne("SELECT name FROM dtb_products WHERE product_id = ?", array($product_id));
541    }
542
543    /**
544     * 検索パラメータを生成する.
545     *
546     * "search_" で始まるパラメータのみを生成して返す.
547     *
548     * TODO パラメータの妥当性検証
549     *
550     * @access private
551     * @param array $params 生成元の POST パラメータ
552     * @return array View にアサインするパラメータの配列
553     */
554    function createSearchParams($params) {
555        $results = array();
556        foreach ($params as $key => $val) {
557            if (substr($key, 0, 7) == "search_") {
558                $results[$key] = $val;
559            }
560        }
561        return $results;
562    }
563
564    /**
565     * 規格分類の登録された, すべての規格を取得する.
566     *
567     * @access private
568     * @return array 規格分類の登録された, すべての規格
569     */
570    function getAllClass() {
571        $objDb = new SC_Helper_DB_Ex();
572        $arrClass = $objDb->sfGetIDValueList("dtb_class", 'class_id', 'name');
573
574        // 規格分類が登録されていない規格は表示しないようにする。
575        $arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount();
576
577        $results = array();
578        if (!SC_Utils_Ex::isBlank($arrClass)) {
579            foreach($arrClass as $key => $val) {
580                if($arrClassCatCount[$key] > 0) {
581                    $results[$key] = $arrClass[$key];
582                }
583            }
584        }
585        return $results;
586    }
587
588    /**
589     * 商品IDをキーにして, 商品規格を取得する.
590     *
591     * @param integer $product_id 商品ID
592     * @return array 商品規格の配列
593     */
594    function getProductsClass($product_id) {
595        $objQuery =& SC_Query::getSingletonInstance();
596        return $objQuery->getRow("dtb_products_class", "*", "product_id = ?", array($product_id));
597    }
598
599    /**
600     * 登録済みの商品規格, 規格, 規格分類を取得する.
601     *
602     * @param integer $product_id 商品ID
603     * @return array 商品規格, 規格, 規格分類の配列
604     */
605    function getProductsClassAndClasscategory($productId) {
606        $objProduct = new SC_Product();
607        return $objProduct->getProductsClassFullByProductId($productId);
608    }
609
610    /**
611     * @access private
612     */
613    function authorization() {
614        SC_Utils_Ex::sfIsSuccess(new SC_Session());
615    }
616}
617?>
Note: See TracBrowser for help on using the repository browser.