Ignore:
Timestamp:
2009/03/18 14:25:01 (15 years ago)
Author:
Seasoft
Message:

r17840 により、EC-CUBE標準規約から外れた箇所を修正。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php

    r17840 r17902  
    3434class LC_Page_Admin_Products_Product extends LC_Page { 
    3535 
    36     // {{{ properties 
    37  
    38     /** ファイル管理クラスのインスタンス */ 
    39     var $objUpFile; 
    40  
    41     /** hidden 項目の配列 */ 
    42     var $arrHidden; 
    43  
    44     /** エラー情報 */ 
    45     var $arrErr; 
    46  
    47     // }}} 
    48     // {{{ functions 
    49  
    50     /** 
    51     * Page を初期化する. 
    52     * 
    53     * @return void 
    54     */ 
    55     function init() { 
    56         parent::init(); 
    57         $this->tpl_mainpage = 'products/product.tpl'; 
    58         $this->tpl_subnavi = 'products/subnavi.tpl'; 
    59         $this->tpl_mainno = 'products'; 
    60         $this->tpl_subno = 'product'; 
    61         $this->tpl_subtitle = '商品登録'; 
    62         $this->arrErr = array(); 
    63  
    64         $masterData = new SC_DB_MasterData_Ex(); 
    65         $this->arrSRANK = $masterData->getMasterData("mtb_srank"); 
    66         $this->arrDISP = $masterData->getMasterData("mtb_disp"); 
    67         $this->arrCLASS = $masterData->getMasterData("mtb_class"); 
    68         $this->arrSTATUS = $masterData->getMasterData("mtb_status"); 
    69         $this->arrSTATUS_IMAGE = $masterData->getMasterData("mtb_status_image"); 
    70         $this->arrDELIVERYDATE = $masterData->getMasterData("mtb_delivery_date"); 
    71         $this->arrAllowedTag = $masterData->getMasterData("mtb_allowed_tag"); 
    72         $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList("dtb_maker", "maker_id", "name"); 
    73         $this->tpl_nonclass = true; 
    74     } 
    75  
    76     /** 
    77     * Page のプロセス. 
    78     * 
    79     * @return void 
    80     */ 
    81     function process() { 
    82         $objView = new SC_AdminView(); 
    83         $objSiteInfo = new SC_SiteInfo(); 
    84         $objQuery = new SC_Query(); 
    85         $objDb = new SC_Helper_DB_Ex(); 
    86  
    87         // 認証可否の判定 
    88         $objSess = new SC_Session(); 
    89         SC_Utils_Ex::sfIsSuccess($objSess); 
    90  
    91         // ファイル管理クラス 
    92         $this->objUpFile = new SC_UploadFile(IMAGE_TEMP_DIR, IMAGE_SAVE_DIR); 
    93  
    94         // ファイル情報の初期化 
    95         $this->lfInitFile(); 
    96         // Hiddenからのデータを引き継ぐ 
    97         $this->objUpFile->setHiddenFileList($_POST); 
    98  
    99         // 規格の有り無し判定 
    100         $this->tpl_nonclass = $this->lfCheckNonClass($_POST['product_id']); 
    101  
    102         // 検索パラメータの引き継ぎ 
    103         foreach ($_POST as $key => $val) { 
    104             if (ereg("^search_", $key)) { 
    105                 $this->arrSearchHidden[$key] = $val; 
    106             } 
    107         } 
    108  
    109         // FORMデータの引き継ぎ 
    110         $this->arrForm['status'] = DEFAULT_PRODUCT_DISP;    // 公開・非公開のデフォルト値 
    111         $this->arrForm = $_POST; 
    112  
    113         if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
    114  
    115         switch($_POST['mode']) { 
    116             // 検索画面からの編集 
    117             case 'pre_edit': 
    118             case 'copy' : 
    119                 // 編集時 
    120                 if(SC_Utils_Ex::sfIsInt($_POST['product_id'])){ 
    121                     // DBから商品情報の読込 
    122                     $arrForm = $this->lfGetProduct($_POST['product_id']); 
    123                     // DBデータから画像ファイル名の読込 
    124                     $this->objUpFile->setDBFileList($arrForm); 
    125  
    126                     if($_POST['mode'] == "copy"){ 
    127                         $arrForm["copy_product_id"] = $arrForm["product_id"]; 
    128                         $arrForm["product_id"] = ""; 
    129                         // 画像ファイルのコピー 
    130                         $arrKey = $this->objUpFile->keyname; 
    131                         $arrSaveFile = $this->objUpFile->save_file; 
    132  
    133                         foreach($arrSaveFile as $key => $val){ 
    134                             $this->lfMakeScaleImage($arrKey[$key], $arrKey[$key], true); 
    135                         } 
    136                     } 
    137                     $this->arrForm = $arrForm; 
    138  
    139                     // 商品ステータスの変換 
    140                     $arrRet = SC_Utils_Ex::sfSplitCBValue($this->arrForm['product_flag'], "product_flag"); 
    141                     $this->arrForm = array_merge($this->arrForm, $arrRet); 
    142                     // DBから関連商品の読み込み 
    143                     $this->arrRecommend = $this->lfPreGetRecommendProducts($_POST['product_id']); 
    144  
    145                     $this->lfProductPage();     // 商品登録ページ 
    146                 } 
    147                 break; 
    148                 // 商品登録・編集 
    149             case 'edit': 
    150                 if($_POST['product_id'] == "" and SC_Utils_Ex::sfIsInt($_POST['copy_product_id'])){ 
    151                     $this->tpl_nonclass = $this->lfCheckNonClass($_POST['copy_product_id']); 
    152                 } 
    153  
    154                 // 入力値の変換 
    155                 $this->arrForm = $this->lfConvertParam($this->arrForm); 
    156                 // エラーチェック 
    157                 $this->arrErr = $this->lfErrorCheck($this->arrForm); 
    158                 // ファイル存在チェック 
    159                 $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objUpFile->checkEXISTS()); 
    160                 // エラーなしの場合 
    161                 if(count($this->arrErr) == 0) { 
    162                     $this->lfProductConfirmPage(); // 確認ページ 
    163                 } else { 
    164                     $this->lfProductPage();     // 商品登録ページ 
    165                 } 
    166                 break; 
    167                 // 確認ページから完了ページへ 
    168             case 'complete': 
    169                 $this->tpl_mainpage = 'products/complete.tpl'; 
    170  
    171                 $this->arrForm['product_id'] = $this->lfRegistProduct($_POST);      // データ登録 
    172  
    173                 // 件数カウントバッチ実行 
    174                 $objDb->sfCategory_Count($objQuery); 
    175                 $objDb->sfMaker_Count($objQuery); 
    176                 // 一時ファイルを本番ディレクトリに移動する 
    177                 $this->objUpFile->moveTempFile(); 
    178  
    179                 break; 
    180                 // 画像のアップロード 
    181             case 'upload_image': 
    182                 // ファイル存在チェック 
    183                 $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objUpFile->checkEXISTS($_POST['image_key'])); 
    184                 // 画像保存処理 
    185                 $this->arrErr[$_POST['image_key']] = $this->objUpFile->makeTempFile($_POST['image_key']); 
    186  
    187                 // 中、小画像生成 
    188                 $this->lfSetScaleImage(); 
    189  
    190                 $this->lfProductPage(); // 商品登録ページ 
    191                 break; 
    192                 // 画像の削除 
    193             case 'delete_image': 
    194                 $this->objUpFile->deleteFile($_POST['image_key']); 
    195                 $this->lfProductPage(); // 商品登録ページ 
    196                 break; 
    197                 // 確認ページからの戻り 
    198             case 'confirm_return': 
    199                 $this->lfProductPage();     // 商品登録ページ 
    200                 break; 
    201                 // 関連商品選択 
    202             case 'recommend_select' : 
    203                 $this->lfProductPage();     // 商品登録ページ 
    204                 break; 
    205             default: 
    206                 $this->lfProductPage();     // 商品登録ページ 
    207                 break; 
    208         } 
    209  
    210         if($_POST['mode'] != 'pre_edit') { 
    211             // 関連商品の読み込み 
    212             $this->arrRecommend = $this->lfGetRecommendProducts(); 
    213         } 
    214  
    215         // 基本情報を渡す 
    216         $this->arrInfo = $objSiteInfo->data; 
    217  
    218         // サブ情報の入力があるかどうかチェックする 
    219         $sub_find = false; 
    220         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    221             if( (isset($this->arrForm['sub_title'.$cnt]) 
    222             && !empty($this->arrForm['sub_title'.$cnt])) || 
    223             (isset($this->arrForm['sub_comment'.$cnt]) 
    224             && !empty($this->arrForm['sub_comment'.$cnt])) || 
    225             (isset($this->arrForm['sub_image'.$cnt]) 
    226             && !empty($this->arrForm['sub_image'.$cnt])) || 
    227             (isset($this->arrForm['sub_large_image'.$cnt]) 
    228             && !empty($this->arrForm['sub_large_image'.$cnt])) || 
    229             (isset($this->arrForm['sub_image'.$cnt]) 
    230             && is_array($this->arrFile['sub_image'.$cnt])) || 
    231             (isset($this->arrForm['sub_large_image'.$cnt]) 
    232             && is_array($this->arrFile['sub_large_image'.$cnt]))) { 
    233                 $sub_find = true; 
    234                 break; 
    235             } 
    236         } 
    237         // サブ情報表示・非表示のチェックに使用する。 
    238         $this->sub_find = $sub_find; 
    239         $objView->assignobj($this); 
    240         $objView->display(MAIN_FRAME); 
    241     } 
    242  
    243     /** 
    244     * デストラクタ. 
    245     * 
    246     * @return void 
    247     */ 
    248     function destroy() { 
    249         parent::destroy(); 
    250     } 
    251  
    252     /* 関連商品の読み込み */ 
    253     function lfGetRecommendProducts() { 
    254         $objQuery = new SC_Query(); 
    255         $arrRecommend = array(); 
    256         for($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) { 
    257             $keyname = "recommend_id" . $i; 
    258             $delkey = "recommend_delete" . $i; 
    259             $commentkey = "recommend_comment" . $i; 
    260  
    261             if (!isset($_POST[$delkey])) $_POST[$delkey] = null; 
    262  
    263             if((isset($_POST[$keyname]) && !empty($_POST[$keyname])) && $_POST[$delkey] != 1) { 
    264                 $arrRet = $objQuery->select("main_list_image, product_code_min, name", "vw_products_allclass AS allcls", "product_id = ?", array($_POST[$keyname])); 
    265                 $arrRecommend[$i] = $arrRet[0]; 
    266                 $arrRecommend[$i]['product_id'] = $_POST[$keyname]; 
    267                 $arrRecommend[$i]['comment'] = $this->arrForm[$commentkey]; 
    268             } 
    269         } 
    270         return $arrRecommend; 
    271     } 
    272  
    273     /* 関連商品の登録 */ 
    274     function lfInsertRecommendProducts($objQuery, $arrList, $product_id) { 
    275         // 一旦関連商品をすべて削除する 
    276         $objQuery->delete("dtb_recommend_products", "product_id = ?", array($product_id)); 
    277         $sqlval['product_id'] = $product_id; 
    278         $rank = RECOMMEND_PRODUCT_MAX; 
    279         for($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) { 
    280             $keyname = "recommend_id" . $i; 
    281             $commentkey = "recommend_comment" . $i; 
    282             $deletekey = "recommend_delete" . $i; 
    283  
    284             if (!isset($arrList[$deletekey])) $arrList[$deletekey] = null; 
    285  
    286             if($arrList[$keyname] != "" && $arrList[$deletekey] != '1') { 
    287                 $sqlval['recommend_product_id'] = $arrList[$keyname]; 
    288                 $sqlval['comment'] = $arrList[$commentkey]; 
    289                 $sqlval['rank'] = $rank; 
    290                 $sqlval['creator_id'] = $_SESSION['member_id']; 
    291                 $sqlval['create_date'] = "now()"; 
    292                 $sqlval['update_date'] = "now()"; 
    293                 $objQuery->insert("dtb_recommend_products", $sqlval); 
    294                 $rank--; 
    295             } 
    296         } 
    297     } 
    298  
    299     /* 登録済み関連商品の読み込み */ 
    300     function lfPreGetRecommendProducts($product_id) { 
    301         $arrRecommend = array(); 
    302         $objQuery = new SC_Query(); 
    303         $objQuery->setorder("rank DESC"); 
    304         $arrRet = $objQuery->select("recommend_product_id, comment", "dtb_recommend_products", "product_id = ?", array($product_id)); 
    305         $max = count($arrRet); 
    306         $no = 1; 
    307  
    308         for($i = 0; $i < $max; $i++) { 
    309             $arrProductInfo = $objQuery->select("main_list_image, product_code_min, name", "vw_products_allclass AS allcls", "product_id = ?", array($arrRet[$i]['recommend_product_id'])); 
    310             $arrRecommend[$no] = $arrProductInfo[0]; 
    311             $arrRecommend[$no]['product_id'] = $arrRet[$i]['recommend_product_id']; 
    312             $arrRecommend[$no]['comment'] = $arrRet[$i]['comment']; 
    313             $no++; 
    314         } 
    315         return $arrRecommend; 
    316     } 
    317  
    318     /* 商品情報の読み込み */ 
    319     function lfGetProduct($product_id) { 
    320         $objQuery = new SC_Query(); 
    321         $col = "*"; 
    322         $table = "vw_products_nonclass AS noncls "; 
    323         $where = "product_id = ?"; 
    324  
    325         $arrRet = $objQuery->select($col, $table, $where, array($product_id)); 
    326  
    327         // カテゴリID を取得 
    328         $arrRet[0]['category_id'] = $objQuery->getCol("dtb_product_categories", 
     36    // {{{ properties 
     37 
     38    /** ファイル管理クラスのインスタンス */ 
     39    var $objUpFile; 
     40 
     41    /** hidden 項目の配列 */ 
     42    var $arrHidden; 
     43 
     44    /** エラー情報 */ 
     45    var $arrErr; 
     46 
     47    // }}} 
     48    // {{{ functions 
     49 
     50    /** 
     51    * Page を初期化する. 
     52    * 
     53    * @return void 
     54    */ 
     55    function init() { 
     56        parent::init(); 
     57        $this->tpl_mainpage = 'products/product.tpl'; 
     58        $this->tpl_subnavi = 'products/subnavi.tpl'; 
     59        $this->tpl_mainno = 'products'; 
     60        $this->tpl_subno = 'product'; 
     61        $this->tpl_subtitle = '商品登録'; 
     62        $this->arrErr = array(); 
     63 
     64        $masterData = new SC_DB_MasterData_Ex(); 
     65        $this->arrSRANK = $masterData->getMasterData("mtb_srank"); 
     66        $this->arrDISP = $masterData->getMasterData("mtb_disp"); 
     67        $this->arrCLASS = $masterData->getMasterData("mtb_class"); 
     68        $this->arrSTATUS = $masterData->getMasterData("mtb_status"); 
     69        $this->arrSTATUS_IMAGE = $masterData->getMasterData("mtb_status_image"); 
     70        $this->arrDELIVERYDATE = $masterData->getMasterData("mtb_delivery_date"); 
     71        $this->arrAllowedTag = $masterData->getMasterData("mtb_allowed_tag"); 
     72        $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList("dtb_maker", "maker_id", "name"); 
     73        $this->tpl_nonclass = true; 
     74    } 
     75 
     76    /** 
     77    * Page のプロセス. 
     78    * 
     79    * @return void 
     80    */ 
     81    function process() { 
     82        $objView = new SC_AdminView(); 
     83        $objSiteInfo = new SC_SiteInfo(); 
     84        $objQuery = new SC_Query(); 
     85        $objDb = new SC_Helper_DB_Ex(); 
     86 
     87        // 認証可否の判定 
     88        $objSess = new SC_Session(); 
     89        SC_Utils_Ex::sfIsSuccess($objSess); 
     90 
     91        // ファイル管理クラス 
     92        $this->objUpFile = new SC_UploadFile(IMAGE_TEMP_DIR, IMAGE_SAVE_DIR); 
     93 
     94        // ファイル情報の初期化 
     95        $this->lfInitFile(); 
     96        // Hiddenからのデータを引き継ぐ 
     97        $this->objUpFile->setHiddenFileList($_POST); 
     98 
     99        // 規格の有り無し判定 
     100        $this->tpl_nonclass = $this->lfCheckNonClass($_POST['product_id']); 
     101 
     102        // 検索パラメータの引き継ぎ 
     103        foreach ($_POST as $key => $val) { 
     104            if (ereg("^search_", $key)) { 
     105                $this->arrSearchHidden[$key] = $val; 
     106            } 
     107        } 
     108 
     109        // FORMデータの引き継ぎ 
     110        $this->arrForm['status'] = DEFAULT_PRODUCT_DISP;    // 公開・非公開のデフォルト値 
     111        $this->arrForm = $_POST; 
     112 
     113        if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
     114 
     115        switch($_POST['mode']) { 
     116            // 検索画面からの編集 
     117            case 'pre_edit': 
     118            case 'copy' : 
     119                // 編集時 
     120                if(SC_Utils_Ex::sfIsInt($_POST['product_id'])){ 
     121                    // DBから商品情報の読込 
     122                    $arrForm = $this->lfGetProduct($_POST['product_id']); 
     123                    // DBデータから画像ファイル名の読込 
     124                    $this->objUpFile->setDBFileList($arrForm); 
     125 
     126                    if($_POST['mode'] == "copy"){ 
     127                        $arrForm["copy_product_id"] = $arrForm["product_id"]; 
     128                        $arrForm["product_id"] = ""; 
     129                        // 画像ファイルのコピー 
     130                        $arrKey = $this->objUpFile->keyname; 
     131                        $arrSaveFile = $this->objUpFile->save_file; 
     132 
     133                        foreach($arrSaveFile as $key => $val){ 
     134                            $this->lfMakeScaleImage($arrKey[$key], $arrKey[$key], true); 
     135                        } 
     136                    } 
     137                    $this->arrForm = $arrForm; 
     138 
     139                    // 商品ステータスの変換 
     140                    $arrRet = SC_Utils_Ex::sfSplitCBValue($this->arrForm['product_flag'], "product_flag"); 
     141                    $this->arrForm = array_merge($this->arrForm, $arrRet); 
     142                    // DBから関連商品の読み込み 
     143                    $this->arrRecommend = $this->lfPreGetRecommendProducts($_POST['product_id']); 
     144 
     145                    $this->lfProductPage();        // 商品登録ページ 
     146                } 
     147                break; 
     148                // 商品登録・編集 
     149            case 'edit': 
     150                if($_POST['product_id'] == "" and SC_Utils_Ex::sfIsInt($_POST['copy_product_id'])){ 
     151                    $this->tpl_nonclass = $this->lfCheckNonClass($_POST['copy_product_id']); 
     152                } 
     153 
     154                // 入力値の変換 
     155                $this->arrForm = $this->lfConvertParam($this->arrForm); 
     156                // エラーチェック 
     157                $this->arrErr = $this->lfErrorCheck($this->arrForm); 
     158                // ファイル存在チェック 
     159                $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objUpFile->checkEXISTS()); 
     160                // エラーなしの場合 
     161                if(count($this->arrErr) == 0) { 
     162                    $this->lfProductConfirmPage(); // 確認ページ 
     163                } else { 
     164                    $this->lfProductPage();        // 商品登録ページ 
     165                } 
     166                break; 
     167                // 確認ページから完了ページへ 
     168            case 'complete': 
     169                $this->tpl_mainpage = 'products/complete.tpl'; 
     170 
     171                $this->arrForm['product_id'] = $this->lfRegistProduct($_POST);        // データ登録 
     172 
     173                // 件数カウントバッチ実行 
     174                $objDb->sfCategory_Count($objQuery); 
     175                $objDb->sfMaker_Count($objQuery); 
     176                // 一時ファイルを本番ディレクトリに移動する 
     177                $this->objUpFile->moveTempFile(); 
     178 
     179                break; 
     180                // 画像のアップロード 
     181            case 'upload_image': 
     182                // ファイル存在チェック 
     183                $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objUpFile->checkEXISTS($_POST['image_key'])); 
     184                // 画像保存処理 
     185                $this->arrErr[$_POST['image_key']] = $this->objUpFile->makeTempFile($_POST['image_key']); 
     186 
     187                // 中、小画像生成 
     188                $this->lfSetScaleImage(); 
     189 
     190                $this->lfProductPage(); // 商品登録ページ 
     191                break; 
     192                // 画像の削除 
     193            case 'delete_image': 
     194                $this->objUpFile->deleteFile($_POST['image_key']); 
     195                $this->lfProductPage(); // 商品登録ページ 
     196                break; 
     197                // 確認ページからの戻り 
     198            case 'confirm_return': 
     199                $this->lfProductPage();        // 商品登録ページ 
     200                break; 
     201                // 関連商品選択 
     202            case 'recommend_select' : 
     203                $this->lfProductPage();        // 商品登録ページ 
     204                break; 
     205            default: 
     206                $this->lfProductPage();        // 商品登録ページ 
     207                break; 
     208        } 
     209 
     210        if($_POST['mode'] != 'pre_edit') { 
     211            // 関連商品の読み込み 
     212            $this->arrRecommend = $this->lfGetRecommendProducts(); 
     213        } 
     214 
     215        // 基本情報を渡す 
     216        $this->arrInfo = $objSiteInfo->data; 
     217 
     218        // サブ情報の入力があるかどうかチェックする 
     219        $sub_find = false; 
     220        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     221            if(    (isset($this->arrForm['sub_title'.$cnt]) 
     222            && !empty($this->arrForm['sub_title'.$cnt])) || 
     223            (isset($this->arrForm['sub_comment'.$cnt]) 
     224            && !empty($this->arrForm['sub_comment'.$cnt])) || 
     225            (isset($this->arrForm['sub_image'.$cnt]) 
     226            && !empty($this->arrForm['sub_image'.$cnt])) || 
     227            (isset($this->arrForm['sub_large_image'.$cnt]) 
     228            && !empty($this->arrForm['sub_large_image'.$cnt])) || 
     229            (isset($this->arrForm['sub_image'.$cnt]) 
     230            && is_array($this->arrFile['sub_image'.$cnt])) || 
     231            (isset($this->arrForm['sub_large_image'.$cnt]) 
     232            && is_array($this->arrFile['sub_large_image'.$cnt]))) { 
     233                $sub_find = true; 
     234                break; 
     235            } 
     236        } 
     237        // サブ情報表示・非表示のチェックに使用する。 
     238        $this->sub_find = $sub_find; 
     239        $objView->assignobj($this); 
     240        $objView->display(MAIN_FRAME); 
     241    } 
     242 
     243    /** 
     244    * デストラクタ. 
     245    * 
     246    * @return void 
     247    */ 
     248    function destroy() { 
     249        parent::destroy(); 
     250    } 
     251 
     252    /* 関連商品の読み込み */ 
     253    function lfGetRecommendProducts() { 
     254        $objQuery = new SC_Query(); 
     255        $arrRecommend = array(); 
     256        for($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) { 
     257            $keyname = "recommend_id" . $i; 
     258            $delkey = "recommend_delete" . $i; 
     259            $commentkey = "recommend_comment" . $i; 
     260 
     261            if (!isset($_POST[$delkey])) $_POST[$delkey] = null; 
     262 
     263            if((isset($_POST[$keyname]) && !empty($_POST[$keyname])) && $_POST[$delkey] != 1) { 
     264                $arrRet = $objQuery->select("main_list_image, product_code_min, name", "vw_products_allclass AS allcls", "product_id = ?", array($_POST[$keyname])); 
     265                $arrRecommend[$i] = $arrRet[0]; 
     266                $arrRecommend[$i]['product_id'] = $_POST[$keyname]; 
     267                $arrRecommend[$i]['comment'] = $this->arrForm[$commentkey]; 
     268            } 
     269        } 
     270        return $arrRecommend; 
     271    } 
     272 
     273    /* 関連商品の登録 */ 
     274    function lfInsertRecommendProducts($objQuery, $arrList, $product_id) { 
     275        // 一旦関連商品をすべて削除する 
     276        $objQuery->delete("dtb_recommend_products", "product_id = ?", array($product_id)); 
     277        $sqlval['product_id'] = $product_id; 
     278        $rank = RECOMMEND_PRODUCT_MAX; 
     279        for($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) { 
     280            $keyname = "recommend_id" . $i; 
     281            $commentkey = "recommend_comment" . $i; 
     282            $deletekey = "recommend_delete" . $i; 
     283 
     284            if (!isset($arrList[$deletekey])) $arrList[$deletekey] = null; 
     285 
     286            if($arrList[$keyname] != "" && $arrList[$deletekey] != '1') { 
     287                $sqlval['recommend_product_id'] = $arrList[$keyname]; 
     288                $sqlval['comment'] = $arrList[$commentkey]; 
     289                $sqlval['rank'] = $rank; 
     290                $sqlval['creator_id'] = $_SESSION['member_id']; 
     291                $sqlval['create_date'] = "now()"; 
     292                $sqlval['update_date'] = "now()"; 
     293                $objQuery->insert("dtb_recommend_products", $sqlval); 
     294                $rank--; 
     295            } 
     296        } 
     297    } 
     298 
     299    /* 登録済み関連商品の読み込み */ 
     300    function lfPreGetRecommendProducts($product_id) { 
     301        $arrRecommend = array(); 
     302        $objQuery = new SC_Query(); 
     303        $objQuery->setorder("rank DESC"); 
     304        $arrRet = $objQuery->select("recommend_product_id, comment", "dtb_recommend_products", "product_id = ?", array($product_id)); 
     305        $max = count($arrRet); 
     306        $no = 1; 
     307 
     308        for($i = 0; $i < $max; $i++) { 
     309            $arrProductInfo = $objQuery->select("main_list_image, product_code_min, name", "vw_products_allclass AS allcls", "product_id = ?", array($arrRet[$i]['recommend_product_id'])); 
     310            $arrRecommend[$no] = $arrProductInfo[0]; 
     311            $arrRecommend[$no]['product_id'] = $arrRet[$i]['recommend_product_id']; 
     312            $arrRecommend[$no]['comment'] = $arrRet[$i]['comment']; 
     313            $no++; 
     314        } 
     315        return $arrRecommend; 
     316    } 
     317 
     318    /* 商品情報の読み込み */ 
     319    function lfGetProduct($product_id) { 
     320        $objQuery = new SC_Query(); 
     321        $col = "*"; 
     322        $table = "vw_products_nonclass AS noncls "; 
     323        $where = "product_id = ?"; 
     324 
     325        $arrRet = $objQuery->select($col, $table, $where, array($product_id)); 
     326 
     327        // カテゴリID を取得 
     328        $arrRet[0]['category_id'] = $objQuery->getCol("dtb_product_categories", 
    329329                                                      "category_id", 
    330330                                                      "product_id = ?", 
    331         array($product_id)); 
    332         //編集時に規格IDが変わってしまうのを防ぐために規格が登録されていなければ規格IDを取得する 
    333         if( $this->lfCheckNonClass($_POST['product_id']) ){ 
    334             $arrRet[0]['product_class_id'] = SC_Utils::sfGetProductClassId($product_id,"0","0"); 
    335         } 
    336         return $arrRet[0]; 
    337     } 
    338  
    339     /* 商品登録ページ表示用 */ 
    340     function lfProductPage() { 
    341         $objDb = new SC_Helper_DB_Ex(); 
    342  
    343         // カテゴリの読込 
    344         list($this->arrCatVal, $this->arrCatOut) = $objDb->sfGetLevelCatList(false); 
    345  
    346         if (isset($this->arrForm['category_id']) && !is_array($this->arrForm['category_id'])) { 
    347             $this->arrForm['category_id'] = unserialize($this->arrForm['category_id']); 
    348         } 
    349         if($this->arrForm['status'] == "") { 
    350             $this->arrForm['status'] = 1; 
    351         } 
    352  
    353         if(isset($this->arrForm['product_flag']) && !is_array($this->arrForm['product_flag'])) { 
    354             // 商品ステータスの分割読込 
    355             $this->arrForm['product_flag'] = SC_Utils_Ex::sfSplitCheckBoxes($this->arrForm['product_flag']); 
    356         } 
    357  
    358         // HIDDEN用に配列を渡す。 
    359         $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objUpFile->getHiddenFileList()); 
    360         // Form用配列を渡す。 
    361         $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
    362  
    363  
    364         // アンカーを設定 
    365         if (isset($_POST['image_key']) && !empty($_POST['image_key'])) { 
    366             $anchor_hash = "location.hash='#" . $_POST['image_key'] . "'"; 
    367         } elseif (isset($_POST['anchor_key']) && !empty($_POST['anchor_key'])) { 
    368             $anchor_hash = "location.hash='#" . $_POST['anchor_key'] . "'"; 
    369         } else { 
    370             $anchor_hash = ""; 
    371         } 
    372  
    373         $this->tpl_onload = "fnCheckSaleLimit('" . DISABLED_RGB . "'); fnCheckStockLimit('" . DISABLED_RGB . "'); fnMoveSelect('category_id_unselect', 'category_id');" . $anchor_hash; 
    374     } 
    375  
    376     /* ファイル情報の初期化 */ 
    377     function lfInitFile() { 
    378         $this->objUpFile->addFile("一覧-メイン画像", 'main_list_image', array('jpg', 'gif', 'png'),IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT); 
    379         $this->objUpFile->addFile("詳細-メイン画像", 'main_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, true, NORMAL_IMAGE_WIDTH, NORMAL_IMAGE_HEIGHT); 
    380         $this->objUpFile->addFile("詳細-メイン拡大画像", 'main_large_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, LARGE_IMAGE_WIDTH, LARGE_IMAGE_HEIGHT); 
    381         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    382             $this->objUpFile->addFile("詳細-サブ画像$cnt", "sub_image$cnt", array('jpg', 'gif', 'png'), IMAGE_SIZE, false, NORMAL_SUBIMAGE_WIDTH, NORMAL_SUBIMAGE_HEIGHT); 
    383             $this->objUpFile->addFile("詳細-サブ拡大画像$cnt", "sub_large_image$cnt", array('jpg', 'gif', 'png'), IMAGE_SIZE, false, LARGE_SUBIMAGE_WIDTH, LARGE_SUBIMAGE_HEIGHT); 
    384         } 
    385         $this->objUpFile->addFile("商品比較画像", 'file1', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, OTHER_IMAGE1_WIDTH, OTHER_IMAGE1_HEIGHT); 
    386         $this->objUpFile->addFile("商品詳細ファイル", 'file2', array('pdf'), PDF_SIZE, false, 0, 0, false); 
    387     } 
    388  
    389     /* 商品の登録 */ 
    390     function lfRegistProduct($arrList) { 
    391         $objQuery = new SC_Query(); 
    392         $objDb = new SC_Helper_DB_Ex(); 
    393         $objQuery->begin(); 
    394  
    395         // 配列の添字を定義 
    396         $checkArray = array("name", "status", "product_flag", 
     331        array($product_id)); 
     332        //編集時に規格IDが変わってしまうのを防ぐために規格が登録されていなければ規格IDを取得する 
     333        if( $this->lfCheckNonClass($_POST['product_id']) ){ 
     334            $arrRet[0]['product_class_id'] = SC_Utils::sfGetProductClassId($product_id,"0","0"); 
     335        } 
     336        return $arrRet[0]; 
     337    } 
     338 
     339    /* 商品登録ページ表示用 */ 
     340    function lfProductPage() { 
     341        $objDb = new SC_Helper_DB_Ex(); 
     342 
     343        // カテゴリの読込 
     344        list($this->arrCatVal, $this->arrCatOut) = $objDb->sfGetLevelCatList(false); 
     345 
     346        if (isset($this->arrForm['category_id']) && !is_array($this->arrForm['category_id'])) { 
     347            $this->arrForm['category_id'] = unserialize($this->arrForm['category_id']); 
     348        } 
     349        if($this->arrForm['status'] == "") { 
     350            $this->arrForm['status'] = 1; 
     351        } 
     352 
     353        if(isset($this->arrForm['product_flag']) && !is_array($this->arrForm['product_flag'])) { 
     354            // 商品ステータスの分割読込 
     355            $this->arrForm['product_flag'] = SC_Utils_Ex::sfSplitCheckBoxes($this->arrForm['product_flag']); 
     356        } 
     357 
     358        // HIDDEN用に配列を渡す。 
     359        $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objUpFile->getHiddenFileList()); 
     360        // Form用配列を渡す。 
     361        $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
     362 
     363 
     364        // アンカーを設定 
     365        if (isset($_POST['image_key']) && !empty($_POST['image_key'])) { 
     366            $anchor_hash = "location.hash='#" . $_POST['image_key'] . "'"; 
     367        } elseif (isset($_POST['anchor_key']) && !empty($_POST['anchor_key'])) { 
     368            $anchor_hash = "location.hash='#" . $_POST['anchor_key'] . "'"; 
     369        } else { 
     370            $anchor_hash = ""; 
     371        } 
     372 
     373        $this->tpl_onload = "fnCheckSaleLimit('" . DISABLED_RGB . "'); fnCheckStockLimit('" . DISABLED_RGB . "'); fnMoveSelect('category_id_unselect', 'category_id');" . $anchor_hash; 
     374    } 
     375 
     376    /* ファイル情報の初期化 */ 
     377    function lfInitFile() { 
     378        $this->objUpFile->addFile("一覧-メイン画像", 'main_list_image', array('jpg', 'gif', 'png'),IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT); 
     379        $this->objUpFile->addFile("詳細-メイン画像", 'main_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, true, NORMAL_IMAGE_WIDTH, NORMAL_IMAGE_HEIGHT); 
     380        $this->objUpFile->addFile("詳細-メイン拡大画像", 'main_large_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, LARGE_IMAGE_WIDTH, LARGE_IMAGE_HEIGHT); 
     381        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     382            $this->objUpFile->addFile("詳細-サブ画像$cnt", "sub_image$cnt", array('jpg', 'gif', 'png'), IMAGE_SIZE, false, NORMAL_SUBIMAGE_WIDTH, NORMAL_SUBIMAGE_HEIGHT); 
     383            $this->objUpFile->addFile("詳細-サブ拡大画像$cnt", "sub_large_image$cnt", array('jpg', 'gif', 'png'), IMAGE_SIZE, false, LARGE_SUBIMAGE_WIDTH, LARGE_SUBIMAGE_HEIGHT); 
     384        } 
     385        $this->objUpFile->addFile("商品比較画像", 'file1', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, OTHER_IMAGE1_WIDTH, OTHER_IMAGE1_HEIGHT); 
     386        $this->objUpFile->addFile("商品詳細ファイル", 'file2', array('pdf'), PDF_SIZE, false, 0, 0, false); 
     387    } 
     388 
     389    /* 商品の登録 */ 
     390    function lfRegistProduct($arrList) { 
     391        $objQuery = new SC_Query(); 
     392        $objDb = new SC_Helper_DB_Ex(); 
     393        $objQuery->begin(); 
     394 
     395        // 配列の添字を定義 
     396        $checkArray = array("name", "status", "product_flag", 
    397397                            "main_list_comment", "main_comment", "point_rate", 
    398398                            "deliv_fee", "comment1", "comment2", "comment3", 
    399399                            "comment4", "comment5", "comment6", "main_list_comment", 
    400400                            "sale_limit", "sale_unlimited", "deliv_date_id", "maker_id", "note"); 
    401         $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); 
    402  
    403         // INSERTする値を作成する。 
    404         $sqlval['name'] = $arrList['name']; 
    405         $sqlval['status'] = $arrList['status']; 
    406         $sqlval['product_flag'] = $arrList['product_flag']; 
    407         $sqlval['main_list_comment'] = $arrList['main_list_comment']; 
    408         $sqlval['main_comment'] = $arrList['main_comment']; 
    409         $sqlval['point_rate'] = $arrList['point_rate']; 
    410         $sqlval['deliv_fee'] = $arrList['deliv_fee']; 
    411         $sqlval['comment1'] = $arrList['comment1']; 
    412         $sqlval['comment2'] = $arrList['comment2']; 
    413         $sqlval['comment3'] = $arrList['comment3']; 
    414         $sqlval['comment4'] = $arrList['comment4']; 
    415         $sqlval['comment5'] = $arrList['comment5']; 
    416         $sqlval['comment6'] = $arrList['comment6']; 
    417         $sqlval['main_list_comment'] = $arrList['main_list_comment']; 
    418         $sqlval['sale_limit'] = $arrList['sale_limit']; 
    419         $sqlval['sale_unlimited'] = $arrList['sale_unlimited']; 
    420         $sqlval['deliv_date_id'] = $arrList['deliv_date_id']; 
    421         $sqlval['maker_id'] = $arrList['maker_id']; 
    422         $sqlval['note'] = $arrList['note']; 
    423         $sqlval['update_date'] = "Now()"; 
    424         $sqlval['creator_id'] = $_SESSION['member_id']; 
    425         $arrRet = $this->objUpFile->getDBFileList(); 
    426         $sqlval = array_merge($sqlval, $arrRet); 
    427  
    428         $arrList['category_id'] = unserialize($arrList['category_id']); 
    429  
    430         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    431             $sqlval['sub_title'.$cnt] = $arrList['sub_title'.$cnt]; 
    432             $sqlval['sub_comment'.$cnt] = $arrList['sub_comment'.$cnt]; 
    433         } 
    434  
    435         if($arrList['product_id'] == "") { 
    436             // product_id 取得(PostgreSQLの場合) 
    437             if(DB_TYPE=='pgsql'){ 
    438                 $product_id = $objQuery->nextval("dtb_products", "product_id"); 
    439                 $sqlval['product_id'] = $product_id; 
    440             } 
    441  
    442             // INSERTの実行 
    443             $sqlval['create_date'] = "Now()"; 
    444             $objQuery->insert("dtb_products", $sqlval); 
    445  
    446             // product_id 取得(MySQLの場合) 
    447             if(DB_TYPE=='mysql'){ 
    448                 $product_id = $objQuery->nextval("dtb_products", "product_id"); 
    449             } 
    450  
    451             // カテゴリを更新 
    452             $objDb->updateProductCategories($arrList['category_id'], $product_id); 
    453  
    454             // コピー商品の場合には規格もコピーする 
    455             if($_POST["copy_product_id"] != "" and SC_Utils_Ex::sfIsInt($_POST["copy_product_id"])){ 
    456              
    457                 if($this->tpl_nonclass) 
    458                 { 
    459                     //規格がない場合のコピーは価格等の入力が発生しているので、その内容で追加登録 
    460                     $arrList['product_id'] = $product_id; 
    461                     $this->lfCopyProductClass($arrList, $objQuery); 
    462                 } 
    463                 else 
    464                 { 
    465                     //規格がある場合のコピーは複製元の内容で追加登録 
    466                     // dtb_products_class のカラムを取得 
    467                     $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
    468                     $arrColList = $dbFactory->sfGetColumnList("dtb_products_class", $objQuery); 
    469                     $arrColList_tmp = array_flip($arrColList); 
    470  
    471                     // コピーしない列 
    472                     unset($arrColList[$arrColList_tmp["product_class_id"]]);    //規格ID 
    473                     unset($arrColList[$arrColList_tmp["product_id"]]);          //商品ID 
    474                     unset($arrColList[$arrColList_tmp["create_date"]]); 
    475  
    476                     $col = SC_Utils_Ex::sfGetCommaList($arrColList); 
    477  
    478                     $objQuery->query("INSERT INTO dtb_products_class (product_id, ". $col .") SELECT ?, " . $col. " FROM dtb_products_class WHERE product_id = ? ORDER BY product_class_id", array($product_id, $_POST["copy_product_id"])); 
    479                 } 
    480             } 
    481  
    482         } else { 
    483             $product_id = $arrList['product_id']; 
    484             // 削除要求のあった既存ファイルの削除 
    485             $arrRet = $this->lfGetProduct($arrList['product_id']); 
    486             $this->objUpFile->deleteDBFile($arrRet); 
    487  
    488             // UPDATEの実行 
    489             $where = "product_id = ?"; 
    490             $objQuery->update("dtb_products", $sqlval, $where, array($product_id)); 
    491  
    492             // カテゴリを更新 
    493             $objDb->updateProductCategories($arrList['category_id'], $product_id); 
    494         } 
    495  
    496         //商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。 
    497         if( $_POST["copy_product_id"] == "" ){ 
    498             // 規格登録 
    499             SC_Utils_Ex::sfInsertProductClass($objQuery, $arrList, $product_id , $arrList['product_class_id'] ); 
    500         } 
    501  
    502         // 関連商品登録 
    503         $this->lfInsertRecommendProducts($objQuery, $arrList, $product_id); 
    504  
    505         $objQuery->commit(); 
    506         return $product_id; 
    507     } 
    508  
    509  
    510     /* 取得文字列の変換 */ 
    511     function lfConvertParam($array) { 
    512         /* 
    513          *  文字列の変換 
    514          *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換 
    515          *  C :  「全角ひら仮名」を「全角かた仮名」に変換 
    516          *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します 
    517          *  n :  「全角」数字を「半角(ハンカク)」に変換 
    518         */ 
    519  
    520         // スポット商品 
    521         $arrConvList['name'] = "KVa"; 
    522         $arrConvList['main_list_comment'] = "KVa"; 
    523         $arrConvList['main_comment'] = "KVa"; 
    524         $arrConvList['price01'] = "n"; 
    525         $arrConvList['price02'] = "n"; 
    526         $arrConvList['stock'] = "n"; 
    527         $arrConvList['sale_limit'] = "n"; 
    528         $arrConvList['point_rate'] = "n"; 
    529         $arrConvList['product_code'] = "KVna"; 
    530         $arrConvList['comment1'] = "a"; 
    531         $arrConvList['deliv_fee'] = "n"; 
    532  
    533         // 詳細-サブ 
    534         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    535             $arrConvList["sub_title$cnt"] = "KVa"; 
    536         } 
    537         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    538             $arrConvList["sub_comment$cnt"] = "KVa"; 
    539         } 
    540  
    541         // 関連商品 
    542         for ($cnt = 1; $cnt <= RECOMMEND_PRODUCT_MAX; $cnt++) { 
    543             $arrConvList["recommend_comment$cnt"] = "KVa"; 
    544         } 
    545  
    546         // 文字変換 
    547         foreach ($arrConvList as $key => $val) { 
    548             // POSTされてきた値のみ変換する。 
    549             if(isset($array[$key])) { 
    550                 $array[$key] = mb_convert_kana($array[$key] ,$val); 
    551             } 
    552         } 
    553  
    554         if (!isset($array['product_flag'])) $array['product_flag'] = ""; 
    555         $max = max(array_keys($this->arrSTATUS)); 
    556         $array['product_flag'] = SC_Utils_Ex::sfMergeCheckBoxes($array['product_flag'], $max); 
    557  
    558         return $array; 
    559     } 
    560  
    561     // 入力エラーチェック 
    562     function lfErrorCheck($array) { 
    563  
    564         $objErr = new SC_CheckError($array); 
    565         $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    566         $objErr->doFunc(array("一覧-メインコメント", "main_list_comment", MTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    567         $objErr->doFunc(array("詳細-メインコメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    568         $objErr->doFunc(array("詳細-メインコメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK")); 
    569         $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    570         $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    571         $objErr->doFunc(array("備考欄(SHOP専用)", "note", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    572         $objErr->doFunc(array("検索ワード", "comment3", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    573         $objErr->doFunc(array("メーカーURL", "comment1", URL_LEN), array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK")); 
    574         $objErr->doFunc(array("発送日目安", "deliv_date_id", INT_LEN), array("NUM_CHECK")); 
    575         $objErr->doFunc(array("メーカー", 'maker_id', INT_LEN), array("NUM_CHECK")); 
    576  
    577         if($this->tpl_nonclass) { 
    578             $objErr->doFunc(array("商品コード", "product_code", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK","MAX_LENGTH_CHECK")); 
    579             $objErr->doFunc(array(NORMAL_PRICE_TITLE, "price01", PRICE_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK")); 
    580             $objErr->doFunc(array(SALE_PRICE_TITLE, "price02", PRICE_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
    581  
    582             if(!isset($array['stock_unlimited']) && $array['stock_unlimited'] != "1") { 
    583                 $objErr->doFunc(array("在庫数", "stock", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
    584             } 
    585         } 
    586  
    587         if(!isset($array['sale_unlimited']) && $array['sale_unlimited'] != "1") { 
    588             $objErr->doFunc(array("購入制限", "sale_limit", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
    589         } 
    590  
    591         for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
    592             $objErr->doFunc(array("詳細-サブタイトル$cnt", "sub_title$cnt", STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    593             $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    594             $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", $this->arrAllowedTag),  array("HTML_TAG_CHECK")); 
    595         } 
    596  
    597         for ($cnt = 1; $cnt <= RECOMMEND_PRODUCT_MAX; $cnt++) { 
    598  
    599             if (!isset($_POST["recommend_delete$cnt"]))  $_POST["recommend_delete$cnt"] = ""; 
    600  
    601             if(isset($_POST["recommend_id$cnt"]) 
    602             && $_POST["recommend_id$cnt"] != "" 
    603             && $_POST["recommend_delete$cnt"] != 1) { 
    604                 $objErr->doFunc(array("関連商品コメント$cnt", "recommend_comment$cnt", LTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    605             } 
    606         } 
    607  
    608         // カテゴリID のチェック 
    609         if (empty($array['category_id'])) { 
    610             $objErr->arrErr['category_id'] = "※ 商品カテゴリが選択されていません。<br />"; 
    611         } else { 
    612             $arrCategory_id = array(); 
    613             for ($i = 0; $i < count($array['category_id']); $i++) { 
    614                 $arrCategory_id['category_id' . $i] = $array['category_id'][$i]; 
    615             } 
    616             $objCheckCategory = new SC_CheckError($arrCategory_id); 
    617             for ($i = 0; $i < count($array['category_id']); $i++) { 
    618                 $objCheckCategory->doFunc(array("商品カテゴリ", "category_id" . $i, STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    619             } 
    620             if (!empty($objCheckCategory->arrErr)) { 
    621                 $objErr->arrErr = array_merge($objErr->arrErr, 
    622                 $objCheckCategory->arrErr); 
    623             } 
    624         } 
    625         return $objErr->arrErr; 
    626     } 
    627  
    628     /* 確認ページ表示用 */ 
    629     function lfProductConfirmPage() { 
    630         $this->tpl_mainpage = 'products/confirm.tpl'; 
    631         $this->arrForm['mode'] = 'complete'; 
    632  
    633         $objDb = new SC_Helper_DB_Ex(); 
    634  
    635         // カテゴリ表示 
    636         $this->arrCategory_id = $this->arrForm['category_id']; 
    637         $this->arrCatList = array(); 
    638         list($arrCatVal, $arrCatOut) = $objDb->sfGetLevelCatList(false); 
    639         for ($i = 0; $i < count($arrCatVal); $i++) { 
    640             $this->arrCatList[$arrCatVal[$i]] = $arrCatOut[$i]; 
    641         } 
    642  
    643         // hidden に渡す値は serialize する 
    644         $this->arrForm['category_id'] = serialize($this->arrForm['category_id']); 
    645  
    646         // Form用配列を渡す。 
    647         $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
    648     } 
    649  
    650     /* 規格あり判定用(規格が登録されていない場合:TRUE) */ 
    651     function lfCheckNonClass($product_id) { 
    652         if(SC_Utils_Ex::sfIsInt($product_id)) { 
    653             $objQuery  = new SC_Query(); 
    654             $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; 
    655             $count = $objQuery->count("dtb_products_class", $where, array($product_id)); 
    656             if($count > 0) { 
    657                 return false; 
    658             } 
    659         } 
    660         return true; 
    661     } 
    662  
    663     // 縮小した画像をセットする 
    664     function lfSetScaleImage(){ 
    665  
    666         $subno = str_replace("sub_large_image", "", $_POST['image_key']); 
    667         switch ($_POST['image_key']){ 
    668             case "main_large_image": 
    669                 // 詳細メイン画像 
    670                 $this->lfMakeScaleImage($_POST['image_key'], "main_image"); 
    671             case "main_image": 
    672                 // 一覧メイン画像 
    673                 $this->lfMakeScaleImage($_POST['image_key'], "main_list_image"); 
    674                 break; 
    675             case "sub_large_image" . $subno: 
    676                 // サブメイン画像 
    677                 $this->lfMakeScaleImage($_POST['image_key'], "sub_image" . $subno); 
    678                 break; 
    679             default: 
    680                 break; 
    681         } 
    682     } 
    683  
    684     // 縮小画像生成 
    685     function lfMakeScaleImage($from_key, $to_key, $forced = false){ 
    686         $arrImageKey = array_flip($this->objUpFile->keyname); 
    687  
    688         if($this->objUpFile->temp_file[$arrImageKey[$from_key]]){ 
    689             $from_path = $this->objUpFile->temp_dir . $this->objUpFile->temp_file[$arrImageKey[$from_key]]; 
    690         }elseif($this->objUpFile->save_file[$arrImageKey[$from_key]]){ 
    691             $from_path = $this->objUpFile->save_dir . $this->objUpFile->save_file[$arrImageKey[$from_key]]; 
    692         }else{ 
    693             return ""; 
    694         } 
    695  
    696         if(file_exists($from_path)){ 
    697             // 元画像サイズを取得 
    698             list($from_w, $from_h) = getimagesize($from_path); 
    699  
    700             // 生成先の画像サイズを取得 
    701             $to_w = $this->objUpFile->width[$arrImageKey[$to_key]]; 
    702             $to_h = $this->objUpFile->height[$arrImageKey[$to_key]]; 
    703  
    704  
    705             if($forced) $this->objUpFile->save_file[$arrImageKey[$to_key]] = ""; 
    706  
    707             if(empty($this->objUpFile->temp_file[$arrImageKey[$to_key]]) && 
    708             empty($this->objUpFile->save_file[$arrImageKey[$to_key]])) { 
    709  
    710                 $path = $this->objUpFile->makeThumb($from_path, $to_w, $to_h); 
    711                 $this->objUpFile->temp_file[$arrImageKey[$to_key]] = basename($path); 
    712             } 
    713         }else{ 
    714             return ""; 
    715         } 
    716     } 
    717     /** 
    718     * dtb_products_classの複製 
    719     * 複製後、価格や商品コードを更新する 
    720     * 
    721     * @param array $arrList 
    722     * @param array $objQuery 
    723     * @return bool 
    724     */ 
    725     protected function lfCopyProductClass($arrList,$objQuery) 
    726     { 
    727         // 複製元のdtb_products_classを取得(1件しかないはず) 
    728         $col = "*"; 
    729         $table = "dtb_products_class"; 
    730         $where = "product_id = ?"; 
    731         $arrProductClass = $objQuery->select($col, $table, $where, array($arrList["copy_product_id"])); 
    732  
    733         //トランザクション開始 
    734         $objQuery->begin(); 
    735         $err_flag = false; 
    736         //非編集項目はコピー、編集項目は上書きして登録 
    737         foreach($arrProductClass as $records) 
    738         { 
    739             foreach($records as $key => $value) 
    740             { 
    741                 if(isset($arrList[$key])) 
    742                 { 
    743                     $records[$key] = $arrList[$key]; 
    744                 } 
    745             } 
    746             unset($records["product_class_id"]); 
    747             unset($records["update_date"]); 
    748              
    749             $records["create_date"] = "Now()"; 
    750             $objQuery->insert($table, $records); 
    751             //エラー発生時は中断 
    752             if($objQuery->isError()) 
    753             { 
    754                 $err_flag = true; 
    755                 continue; 
    756             } 
    757         } 
    758         //トランザクション終了 
    759         if($err_flag) 
    760         { 
    761             $objQuery->rollback(); 
    762         } 
    763         else 
    764         { 
    765             $objQuery->commit(); 
    766         } 
    767         return !$err_flag; 
    768     } 
     401        $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); 
     402 
     403        // INSERTする値を作成する。 
     404        $sqlval['name'] = $arrList['name']; 
     405        $sqlval['status'] = $arrList['status']; 
     406        $sqlval['product_flag'] = $arrList['product_flag']; 
     407        $sqlval['main_list_comment'] = $arrList['main_list_comment']; 
     408        $sqlval['main_comment'] = $arrList['main_comment']; 
     409        $sqlval['point_rate'] = $arrList['point_rate']; 
     410        $sqlval['deliv_fee'] = $arrList['deliv_fee']; 
     411        $sqlval['comment1'] = $arrList['comment1']; 
     412        $sqlval['comment2'] = $arrList['comment2']; 
     413        $sqlval['comment3'] = $arrList['comment3']; 
     414        $sqlval['comment4'] = $arrList['comment4']; 
     415        $sqlval['comment5'] = $arrList['comment5']; 
     416        $sqlval['comment6'] = $arrList['comment6']; 
     417        $sqlval['main_list_comment'] = $arrList['main_list_comment']; 
     418        $sqlval['sale_limit'] = $arrList['sale_limit']; 
     419        $sqlval['sale_unlimited'] = $arrList['sale_unlimited']; 
     420        $sqlval['deliv_date_id'] = $arrList['deliv_date_id']; 
     421        $sqlval['maker_id'] = $arrList['maker_id']; 
     422        $sqlval['note'] = $arrList['note']; 
     423        $sqlval['update_date'] = "Now()"; 
     424        $sqlval['creator_id'] = $_SESSION['member_id']; 
     425        $arrRet = $this->objUpFile->getDBFileList(); 
     426        $sqlval = array_merge($sqlval, $arrRet); 
     427 
     428        $arrList['category_id'] = unserialize($arrList['category_id']); 
     429 
     430        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     431            $sqlval['sub_title'.$cnt] = $arrList['sub_title'.$cnt]; 
     432            $sqlval['sub_comment'.$cnt] = $arrList['sub_comment'.$cnt]; 
     433        } 
     434 
     435        if($arrList['product_id'] == "") { 
     436            // product_id 取得(PostgreSQLの場合) 
     437            if(DB_TYPE=='pgsql'){ 
     438                $product_id = $objQuery->nextval("dtb_products", "product_id"); 
     439                $sqlval['product_id'] = $product_id; 
     440            } 
     441 
     442            // INSERTの実行 
     443            $sqlval['create_date'] = "Now()"; 
     444            $objQuery->insert("dtb_products", $sqlval); 
     445 
     446            // product_id 取得(MySQLの場合) 
     447            if(DB_TYPE=='mysql'){ 
     448                $product_id = $objQuery->nextval("dtb_products", "product_id"); 
     449            } 
     450 
     451            // カテゴリを更新 
     452            $objDb->updateProductCategories($arrList['category_id'], $product_id); 
     453 
     454            // コピー商品の場合には規格もコピーする 
     455            if($_POST["copy_product_id"] != "" and SC_Utils_Ex::sfIsInt($_POST["copy_product_id"])){ 
     456             
     457                if($this->tpl_nonclass) 
     458                { 
     459                    //規格がない場合のコピーは価格等の入力が発生しているので、その内容で追加登録 
     460                    $arrList['product_id'] = $product_id; 
     461                    $this->lfCopyProductClass($arrList, $objQuery); 
     462                } 
     463                else 
     464                { 
     465                    //規格がある場合のコピーは複製元の内容で追加登録 
     466                    // dtb_products_class のカラムを取得 
     467                    $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
     468                    $arrColList = $dbFactory->sfGetColumnList("dtb_products_class", $objQuery); 
     469                    $arrColList_tmp = array_flip($arrColList); 
     470 
     471                    // コピーしない列 
     472                    unset($arrColList[$arrColList_tmp["product_class_id"]]);    //規格ID 
     473                    unset($arrColList[$arrColList_tmp["product_id"]]);            //商品ID 
     474                    unset($arrColList[$arrColList_tmp["create_date"]]); 
     475 
     476                    $col = SC_Utils_Ex::sfGetCommaList($arrColList); 
     477 
     478                    $objQuery->query("INSERT INTO dtb_products_class (product_id, ". $col .") SELECT ?, " . $col. " FROM dtb_products_class WHERE product_id = ? ORDER BY product_class_id", array($product_id, $_POST["copy_product_id"])); 
     479                } 
     480            } 
     481 
     482        } else { 
     483            $product_id = $arrList['product_id']; 
     484            // 削除要求のあった既存ファイルの削除 
     485            $arrRet = $this->lfGetProduct($arrList['product_id']); 
     486            $this->objUpFile->deleteDBFile($arrRet); 
     487 
     488            // UPDATEの実行 
     489            $where = "product_id = ?"; 
     490            $objQuery->update("dtb_products", $sqlval, $where, array($product_id)); 
     491 
     492            // カテゴリを更新 
     493            $objDb->updateProductCategories($arrList['category_id'], $product_id); 
     494        } 
     495 
     496        //商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。 
     497        if( $_POST["copy_product_id"] == "" ){ 
     498            // 規格登録 
     499            SC_Utils_Ex::sfInsertProductClass($objQuery, $arrList, $product_id , $arrList['product_class_id'] ); 
     500        } 
     501 
     502        // 関連商品登録 
     503        $this->lfInsertRecommendProducts($objQuery, $arrList, $product_id); 
     504 
     505        $objQuery->commit(); 
     506        return $product_id; 
     507    } 
     508 
     509 
     510    /* 取得文字列の変換 */ 
     511    function lfConvertParam($array) { 
     512        /* 
     513         *    文字列の変換 
     514         *    K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換 
     515         *    C :  「全角ひら仮名」を「全角かた仮名」に変換 
     516         *    V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します 
     517         *    n :  「全角」数字を「半角(ハンカク)」に変換 
     518        */ 
     519 
     520        // スポット商品 
     521        $arrConvList['name'] = "KVa"; 
     522        $arrConvList['main_list_comment'] = "KVa"; 
     523        $arrConvList['main_comment'] = "KVa"; 
     524        $arrConvList['price01'] = "n"; 
     525        $arrConvList['price02'] = "n"; 
     526        $arrConvList['stock'] = "n"; 
     527        $arrConvList['sale_limit'] = "n"; 
     528        $arrConvList['point_rate'] = "n"; 
     529        $arrConvList['product_code'] = "KVna"; 
     530        $arrConvList['comment1'] = "a"; 
     531        $arrConvList['deliv_fee'] = "n"; 
     532 
     533        // 詳細-サブ 
     534        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     535            $arrConvList["sub_title$cnt"] = "KVa"; 
     536        } 
     537        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     538            $arrConvList["sub_comment$cnt"] = "KVa"; 
     539        } 
     540 
     541        // 関連商品 
     542        for ($cnt = 1; $cnt <= RECOMMEND_PRODUCT_MAX; $cnt++) { 
     543            $arrConvList["recommend_comment$cnt"] = "KVa"; 
     544        } 
     545 
     546        // 文字変換 
     547        foreach ($arrConvList as $key => $val) { 
     548            // POSTされてきた値のみ変換する。 
     549            if(isset($array[$key])) { 
     550                $array[$key] = mb_convert_kana($array[$key] ,$val); 
     551            } 
     552        } 
     553 
     554        if (!isset($array['product_flag'])) $array['product_flag'] = ""; 
     555        $max = max(array_keys($this->arrSTATUS)); 
     556        $array['product_flag'] = SC_Utils_Ex::sfMergeCheckBoxes($array['product_flag'], $max); 
     557 
     558        return $array; 
     559    } 
     560 
     561    // 入力エラーチェック 
     562    function lfErrorCheck($array) { 
     563 
     564        $objErr = new SC_CheckError($array); 
     565        $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     566        $objErr->doFunc(array("一覧-メインコメント", "main_list_comment", MTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     567        $objErr->doFunc(array("詳細-メインコメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     568        $objErr->doFunc(array("詳細-メインコメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK")); 
     569        $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     570        $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     571        $objErr->doFunc(array("備考欄(SHOP専用)", "note", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     572        $objErr->doFunc(array("検索ワード", "comment3", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     573        $objErr->doFunc(array("メーカーURL", "comment1", URL_LEN), array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK")); 
     574        $objErr->doFunc(array("発送日目安", "deliv_date_id", INT_LEN), array("NUM_CHECK")); 
     575        $objErr->doFunc(array("メーカー", 'maker_id', INT_LEN), array("NUM_CHECK")); 
     576 
     577        if($this->tpl_nonclass) { 
     578            $objErr->doFunc(array("商品コード", "product_code", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK","MAX_LENGTH_CHECK")); 
     579            $objErr->doFunc(array(NORMAL_PRICE_TITLE, "price01", PRICE_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK")); 
     580            $objErr->doFunc(array(SALE_PRICE_TITLE, "price02", PRICE_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
     581 
     582            if(!isset($array['stock_unlimited']) && $array['stock_unlimited'] != "1") { 
     583                $objErr->doFunc(array("在庫数", "stock", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
     584            } 
     585        } 
     586 
     587        if(!isset($array['sale_unlimited']) && $array['sale_unlimited'] != "1") { 
     588            $objErr->doFunc(array("購入制限", "sale_limit", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 
     589        } 
     590 
     591        for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { 
     592            $objErr->doFunc(array("詳細-サブタイトル$cnt", "sub_title$cnt", STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     593            $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     594            $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", $this->arrAllowedTag),  array("HTML_TAG_CHECK")); 
     595        } 
     596 
     597        for ($cnt = 1; $cnt <= RECOMMEND_PRODUCT_MAX; $cnt++) { 
     598 
     599            if (!isset($_POST["recommend_delete$cnt"]))  $_POST["recommend_delete$cnt"] = ""; 
     600 
     601            if(isset($_POST["recommend_id$cnt"]) 
     602            && $_POST["recommend_id$cnt"] != "" 
     603            && $_POST["recommend_delete$cnt"] != 1) { 
     604                $objErr->doFunc(array("関連商品コメント$cnt", "recommend_comment$cnt", LTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     605            } 
     606        } 
     607 
     608        // カテゴリID のチェック 
     609        if (empty($array['category_id'])) { 
     610            $objErr->arrErr['category_id'] = "※ 商品カテゴリが選択されていません。<br />"; 
     611        } else { 
     612            $arrCategory_id = array(); 
     613            for ($i = 0; $i < count($array['category_id']); $i++) { 
     614                $arrCategory_id['category_id' . $i] = $array['category_id'][$i]; 
     615            } 
     616            $objCheckCategory = new SC_CheckError($arrCategory_id); 
     617            for ($i = 0; $i < count($array['category_id']); $i++) { 
     618                $objCheckCategory->doFunc(array("商品カテゴリ", "category_id" . $i, STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
     619            } 
     620            if (!empty($objCheckCategory->arrErr)) { 
     621                $objErr->arrErr = array_merge($objErr->arrErr, 
     622                $objCheckCategory->arrErr); 
     623            } 
     624        } 
     625        return $objErr->arrErr; 
     626    } 
     627 
     628    /* 確認ページ表示用 */ 
     629    function lfProductConfirmPage() { 
     630        $this->tpl_mainpage = 'products/confirm.tpl'; 
     631        $this->arrForm['mode'] = 'complete'; 
     632 
     633        $objDb = new SC_Helper_DB_Ex(); 
     634 
     635        // カテゴリ表示 
     636        $this->arrCategory_id = $this->arrForm['category_id']; 
     637        $this->arrCatList = array(); 
     638        list($arrCatVal, $arrCatOut) = $objDb->sfGetLevelCatList(false); 
     639        for ($i = 0; $i < count($arrCatVal); $i++) { 
     640            $this->arrCatList[$arrCatVal[$i]] = $arrCatOut[$i]; 
     641        } 
     642 
     643        // hidden に渡す値は serialize する 
     644        $this->arrForm['category_id'] = serialize($this->arrForm['category_id']); 
     645 
     646        // Form用配列を渡す。 
     647        $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
     648    } 
     649 
     650    /* 規格あり判定用(規格が登録されていない場合:TRUE) */ 
     651    function lfCheckNonClass($product_id) { 
     652        if(SC_Utils_Ex::sfIsInt($product_id)) { 
     653            $objQuery  = new SC_Query(); 
     654            $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; 
     655            $count = $objQuery->count("dtb_products_class", $where, array($product_id)); 
     656            if($count > 0) { 
     657                return false; 
     658            } 
     659        } 
     660        return true; 
     661    } 
     662 
     663    // 縮小した画像をセットする 
     664    function lfSetScaleImage(){ 
     665 
     666        $subno = str_replace("sub_large_image", "", $_POST['image_key']); 
     667        switch ($_POST['image_key']){ 
     668            case "main_large_image": 
     669                // 詳細メイン画像 
     670                $this->lfMakeScaleImage($_POST['image_key'], "main_image"); 
     671            case "main_image": 
     672                // 一覧メイン画像 
     673                $this->lfMakeScaleImage($_POST['image_key'], "main_list_image"); 
     674                break; 
     675            case "sub_large_image" . $subno: 
     676                // サブメイン画像 
     677                $this->lfMakeScaleImage($_POST['image_key'], "sub_image" . $subno); 
     678                break; 
     679            default: 
     680                break; 
     681        } 
     682    } 
     683 
     684    // 縮小画像生成 
     685    function lfMakeScaleImage($from_key, $to_key, $forced = false){ 
     686        $arrImageKey = array_flip($this->objUpFile->keyname); 
     687 
     688        if($this->objUpFile->temp_file[$arrImageKey[$from_key]]){ 
     689            $from_path = $this->objUpFile->temp_dir . $this->objUpFile->temp_file[$arrImageKey[$from_key]]; 
     690        }elseif($this->objUpFile->save_file[$arrImageKey[$from_key]]){ 
     691            $from_path = $this->objUpFile->save_dir . $this->objUpFile->save_file[$arrImageKey[$from_key]]; 
     692        }else{ 
     693            return ""; 
     694        } 
     695 
     696        if(file_exists($from_path)){ 
     697            // 元画像サイズを取得 
     698            list($from_w, $from_h) = getimagesize($from_path); 
     699 
     700            // 生成先の画像サイズを取得 
     701            $to_w = $this->objUpFile->width[$arrImageKey[$to_key]]; 
     702            $to_h = $this->objUpFile->height[$arrImageKey[$to_key]]; 
     703 
     704 
     705            if($forced) $this->objUpFile->save_file[$arrImageKey[$to_key]] = ""; 
     706 
     707            if(empty($this->objUpFile->temp_file[$arrImageKey[$to_key]]) && 
     708            empty($this->objUpFile->save_file[$arrImageKey[$to_key]])) { 
     709 
     710                $path = $this->objUpFile->makeThumb($from_path, $to_w, $to_h); 
     711                $this->objUpFile->temp_file[$arrImageKey[$to_key]] = basename($path); 
     712            } 
     713        }else{ 
     714            return ""; 
     715        } 
     716    } 
     717    /** 
     718    * dtb_products_classの複製 
     719    * 複製後、価格や商品コードを更新する 
     720    * 
     721    * @param array $arrList 
     722    * @param array $objQuery 
     723    * @return bool 
     724    */ 
     725    protected function lfCopyProductClass($arrList,$objQuery) 
     726    { 
     727        // 複製元のdtb_products_classを取得(1件しかないはず) 
     728        $col = "*"; 
     729        $table = "dtb_products_class"; 
     730        $where = "product_id = ?"; 
     731        $arrProductClass = $objQuery->select($col, $table, $where, array($arrList["copy_product_id"])); 
     732 
     733        //トランザクション開始 
     734        $objQuery->begin(); 
     735        $err_flag = false; 
     736        //非編集項目はコピー、編集項目は上書きして登録 
     737        foreach($arrProductClass as $records) 
     738        { 
     739            foreach($records as $key => $value) 
     740            { 
     741                if(isset($arrList[$key])) 
     742                { 
     743                    $records[$key] = $arrList[$key]; 
     744                } 
     745            } 
     746            unset($records["product_class_id"]); 
     747            unset($records["update_date"]); 
     748             
     749            $records["create_date"] = "Now()"; 
     750            $objQuery->insert($table, $records); 
     751            //エラー発生時は中断 
     752            if($objQuery->isError()) 
     753            { 
     754                $err_flag = true; 
     755                continue; 
     756            } 
     757        } 
     758        //トランザクション終了 
     759        if($err_flag) 
     760        { 
     761            $objQuery->rollback(); 
     762        } 
     763        else 
     764        { 
     765            $objQuery->commit(); 
     766        } 
     767        return !$err_flag; 
     768    } 
    769769} 
    770770?> 
Note: See TracChangeset for help on using the changeset viewer.