Ignore:
Timestamp:
2007/08/24 12:48:44 (13 years ago)
Author:
nanasess
Message:

クラス化対応

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/html/admin/products/index.php

    r15080 r15342  
    55 * http://www.lockon.co.jp/ 
    66 */ 
     7 
     8// {{{ requires 
    79require_once("../require.php"); 
    810require_once("./index_csv.php"); 
     11require_once(CLASS_PATH . "page_extends/admin/products/LC_Page_Admin_Products_Ex.php"); 
    912 
    10 class LC_Page { 
    11     var $arrForm; 
    12     var $arrHidden; 
    13     var $arrProducts; 
    14     var $arrPageMax; 
    15     function LC_Page() { 
    16         $this->tpl_mainpage = 'products/index.tpl'; 
    17         $this->tpl_mainno = 'products'; 
    18         $this->tpl_subnavi = 'products/subnavi.tpl'; 
    19         $this->tpl_subno = 'index'; 
    20         $this->tpl_pager = DATA_PATH . 'Smarty/templates/admin/pager.tpl'; 
    21         $this->tpl_subtitle = '商品マスタ'; 
     13// }}} 
     14// {{{ generate page 
    2215 
    23         global $arrPageMax; 
    24         $this->arrPageMax = $arrPageMax; 
    25         global $arrDISP; 
    26         $this->arrDISP = $arrDISP; 
    27         global $arrSTATUS; 
    28         $this->arrSTATUS = $arrSTATUS; 
    29         global $arrPRODUCTSTATUS_COLOR; 
    30         $this->arrPRODUCTSTATUS_COLOR = $arrPRODUCTSTATUS_COLOR; 
    31         /* 
    32          session_start時のno-cacheヘッダーを抑制することで 
    33          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    34          private-no-expire:クライアントのキャッシュを許可する。 
    35         */ 
    36         session_cache_limiter('private-no-expire');      
    37     } 
    38 } 
    39  
    40 //$conn = new SC_DBConn(); 
    41 $objPage = new LC_Page(); 
    42 $objView = new SC_AdminView(); 
    43  
    44 $objDate = new SC_Date(); 
    45  
    46 // 登録・更新検索開始年 
    47 $objDate->setStartYear(RELEASE_YEAR); 
    48 $objDate->setEndYear(DATE("Y")); 
    49 $objPage->arrStartYear = $objDate->getYear(); 
    50 $objPage->arrStartMonth = $objDate->getMonth(); 
    51 $objPage->arrStartDay = $objDate->getDay(); 
    52 // 登録・更新検索終了年 
    53 $objDate->setStartYear(RELEASE_YEAR); 
    54 $objDate->setEndYear(DATE("Y")); 
    55 $objPage->arrEndYear = $objDate->getYear(); 
    56 $objPage->arrEndMonth = $objDate->getMonth(); 
    57 $objPage->arrEndDay = $objDate->getDay(); 
    58  
    59 // 認証可否の判定 
    60 $objSess = new SC_Session(); 
    61 sfIsSuccess($objSess); 
    62  
    63 //キャンペーンの編集時 
    64 if(sfIsInt($_POST['campaign_id']) && $_POST['mode'] == "camp_search") { 
    65     $objQuery = new SC_Query(); 
    66     $search_data = $objQuery->get("dtb_campaign", "search_condition", "campaign_id = ? ", array($_POST['campaign_id'])); 
    67     $arrSearch = unserialize($search_data); 
    68     foreach ($arrSearch as $key => $val) { 
    69         $_POST[$key] = $val; 
    70     } 
    71 } 
    72  
    73 // POST値の引き継ぎ 
    74 $objPage->arrForm = $_POST; 
    75  
    76 // 検索ワードの引き継ぎ 
    77 foreach ($_POST as $key => $val) { 
    78     if (ereg("^search_", $key) || ereg("^campaign_", $key)) { 
    79         switch($key) { 
    80             case 'search_product_flag': 
    81             case 'search_status': 
    82                 $objPage->arrHidden[$key] = sfMergeParamCheckBoxes($val); 
    83                 if(!is_array($val)) { 
    84                     $objPage->arrForm[$key] = split("-", $val); 
    85                 } 
    86                 break; 
    87             default: 
    88                 $objPage->arrHidden[$key] = $val; 
    89                 break; 
    90         } 
    91     } 
    92 } 
    93  
    94 // ページ送り用 
    95 $objPage->arrHidden['search_pageno'] = $_POST['search_pageno']; 
    96  
    97 // 商品削除 
    98 if ($_POST['mode'] == "delete") { 
    99      
    100     if($_POST['category_id'] != "") { 
    101         // ランク付きレコードの削除 
    102         $where = "category_id = " . addslashes($_POST['category_id']); 
    103         sfDeleteRankRecord("dtb_products", "product_id", $_POST['product_id'], $where); 
    104     } else { 
    105         sfDeleteRankRecord("dtb_products", "product_id", $_POST['product_id']); 
    106     } 
    107     // 子テーブル(商品規格)の削除 
    108     $objQuery = new SC_Query(); 
    109     $objQuery->delete("dtb_products_class", "product_id = ?", array($_POST['product_id'])); 
    110      
    111     // 件数カウントバッチ実行 
    112     sfCategory_Count($objQuery);     
    113 } 
    114  
    115  
    116 if ($_POST['mode'] == "search" || $_POST['mode'] == "csv"  || $_POST['mode'] == "delete" || $_POST['mode'] == "delete_all" || $_POST['mode'] == "camp_search") { 
    117     // 入力文字の強制変換 
    118     lfConvertParam(); 
    119     // エラーチェック 
    120     $objPage->arrErr = lfCheckError(); 
    121  
    122     $where = "del_flg = 0"; 
    123     $view_where = "del_flg = 0"; 
    124      
    125     // 入力エラーなし 
    126     if (count($objPage->arrErr) == 0) { 
    127  
    128         $arrval = array(); 
    129         foreach ($objPage->arrForm as $key => $val) { 
    130             $val = sfManualEscape($val); 
    131              
    132             if($val == "") { 
    133                 continue; 
    134             } 
    135              
    136             switch ($key) { 
    137                 case 'search_product_id':   // 商品ID 
    138                     $where .= " AND product_id = ?"; 
    139                     $view_where .= " AND product_id = ?"; 
    140                     $arrval[] = $val; 
    141                     break; 
    142                 case 'search_product_class_name': //規格名称 
    143                     $where_in = " (SELECT classcategory_id FROM dtb_classcategory WHERE class_id IN (SELECT class_id FROM dtb_class WHERE name LIKE ?)) "; 
    144                     $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE classcategory_id1 IN " . $where_in; 
    145                     $where .= " OR classcategory_id2 IN" . $where_in . ")"; 
    146                     $view_where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE classcategory_id1 IN " . $where_in; 
    147                     $view_where .= " OR classcategory_id2 IN" . $where_in . ")"; 
    148                     $arrval[] = "%$val%"; 
    149                     $arrval[] = "%$val%"; 
    150                     $view_where = $where; 
    151                     break; 
    152                 case 'search_name':         // 商品名 
    153                     $where .= " AND name ILIKE ?"; 
    154                     $view_where .= " AND name ILIKE ?"; 
    155                     $arrval[] = "%$val%"; 
    156                     break; 
    157                 case 'search_category_id':  // カテゴリー 
    158                     list($tmp_where, $tmp_arrval) = sfGetCatWhere($val); 
    159                     if($tmp_where != "") { 
    160                         $where.= " AND $tmp_where"; 
    161                         $view_where.= " AND $tmp_where"; 
    162                         $arrval = array_merge((array)$arrval, (array)$tmp_arrval); 
    163                     } 
    164                     break; 
    165                 case 'search_product_code': // 商品コード 
    166                     $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)"; 
    167                     $view_where .= " AND EXISTS (SELECT product_id FROM dtb_products_class as cls WHERE cls.product_code ILIKE ? AND dtb_products.product_id = cls.product_id GROUP BY cls.product_id )"; 
    168                     $arrval[] = "%$val%"; 
    169                     break; 
    170                 case 'search_startyear':    // 登録更新日(FROM) 
    171                     $date = sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); 
    172                     $where.= " AND update_date >= '" . $_POST['search_startyear'] . "/" . $_POST['search_startmonth']. "/" .$_POST['search_startday'] . "'"; 
    173                     $view_where.= " AND update_date >= '" . $_POST['search_startyear'] . "/" . $_POST['search_startmonth']. "/" .$_POST['search_startday'] . "'"; 
    174                     break; 
    175                 case 'search_endyear':      // 登録更新日(TO) 
    176                     $date = sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); 
    177                     $date = date('Y/m/d', strtotime($date) + 86400); 
    178                     $where.= " AND update_date < date('" . $date . "')"; 
    179                     $view_where.= " AND update_date < date('" . $date . "')"; 
    180                     break; 
    181                 case 'search_product_flag': //種別 
    182                     global $arrSTATUS; 
    183                     $search_product_flag = sfSearchCheckBoxes($val); 
    184                     if($search_product_flag != "") { 
    185                         $where.= " AND product_flag LIKE ?"; 
    186                         $view_where.= " AND product_flag LIKE ?"; 
    187                         $arrval[] = $search_product_flag;                    
    188                     } 
    189                     break; 
    190                 case 'search_status':       // ステータス 
    191                     $tmp_where = ""; 
    192                     foreach ($val as $element){ 
    193                         if ($element != ""){ 
    194                             if ($tmp_where == ""){ 
    195                                 $tmp_where.="AND (status LIKE ? "; 
    196                             }else{ 
    197                                 $tmp_where.="OR status LIKE ? "; 
    198                             } 
    199                             $arrval[]=$element; 
    200                         } 
    201                     } 
    202                     if ($tmp_where != ""){ 
    203                         $tmp_where.=")"; 
    204                         $where.= " $tmp_where"; 
    205                         $view_where.= " $tmp_where"; 
    206                     } 
    207                     break; 
    208                 default: 
    209                     break; 
    210             } 
    211         } 
    212  
    213         $order = "update_date DESC, product_id DESC"; 
    214         $objQuery = new SC_Query(); 
    215          
    216         switch($_POST['mode']) { 
    217         case 'csv': 
    218             // オプションの指定 
    219             $option = "ORDER BY $order"; 
    220             // CSV出力タイトル行の作成 
    221             $arrOutput = sfSwapArray(sfgetCsvOutput(1, " WHERE csv_id = 1 AND status = 1")); 
    222              
    223             if (count($arrOutput) <= 0) break; 
    224              
    225             $arrOutputCols = $arrOutput['col']; 
    226             $arrOutputTitle = $arrOutput['disp_name']; 
    227              
    228             $head = sfGetCSVList($arrOutputTitle); 
    229              
    230             $data = lfGetProductsCSV($where, $option, $arrval, $arrOutputCols); 
    231  
    232             // CSVを送信する。 
    233             sfCSVDownload($head.$data); 
    234             exit; 
    235             break; 
    236         case 'delete_all': 
    237             // 検索結果をすべて削除 
    238             $where = "product_id IN (SELECT product_id FROM vw_products_nonclass AS noncls  WHERE $where)"; 
    239             $sqlval['del_flg'] = 1; 
    240             $objQuery->update("dtb_products", $sqlval, $where, $arrval); 
    241             break; 
    242         default: 
    243             // 読み込む列とテーブルの指定 
    244             $col = "product_id, name, category_id, main_list_image, status, product_code, price01, price02, stock, stock_unlimited"; 
    245             $from = "vw_products_nonclass AS noncls "; 
    246  
    247             // 行数の取得 
    248             $linemax = $objQuery->count("dtb_products", $view_where, $arrval); 
    249             $objPage->tpl_linemax = $linemax;               // 何件が該当しました。表示用 
    250  
    251             // ページ送りの処理 
    252             if(is_numeric($_POST['search_page_max'])) {  
    253                 $page_max = $_POST['search_page_max']; 
    254             } else { 
    255                 $page_max = SEARCH_PMAX; 
    256             } 
    257  
    258             // ページ送りの取得 
    259             $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchPage", NAVI_PMAX); 
    260             $startno = $objNavi->start_row; 
    261             $objPage->arrPagenavi = $objNavi->arrPagenavi; 
    262              
    263             //キャンペーン商品検索時は、全結果の商品IDを変数に格納する 
    264             if($_POST['search_mode'] == 'campaign') { 
    265                 $arrRet = $objQuery->select($col, $from, $where, $arrval); 
    266                 if(count($arrRet) > 0) { 
    267                     $arrRet = sfSwapArray($arrRet); 
    268                     $pid = implode("-", $arrRet['product_id']); 
    269                     $objPage->arrHidden['campaign_product_id'] = $pid; 
    270                 } 
    271             } 
    272  
    273             // 取得範囲の指定(開始行番号、行数のセット) 
    274             if(DB_TYPE != "mysql") $objQuery->setlimitoffset($page_max, $startno); 
    275             // 表示順序 
    276             $objQuery->setorder($order); 
    277              
    278             // viewも絞込みをかける(mysql用) 
    279             sfViewWhere("&&noncls_where&&", $view_where, $arrval, $objQuery->order . " " .  $objQuery->setlimitoffset($page_max, $startno, true)); 
    280  
    281             // 検索結果の取得 
    282             $objPage->arrProducts = $objQuery->select($col, $from, $where, $arrval); 
    283              
    284             break; 
    285         } 
    286     } 
    287 } 
    288      
    289 // カテゴリの読込 
    290 $objPage->arrCatList = sfGetCategoryList(); 
    291 $objPage->arrCatIDName = lfGetIDName($objPage->arrCatList); 
    292  
    293 // 画面の表示 
    294 $objView->assignobj($objPage); 
    295 $objView->display(MAIN_FRAME); 
    296  
    297 //--------------------------------------------------------------------------------------------------------------------------------------------------------- 
    298  
    299 // 取得文字列の変換  
    300 function lfConvertParam() { 
    301     global $objPage; 
    302     /* 
    303      *  文字列の変換 
    304      *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換 
    305      *  C :  「全角ひら仮名」を「全角かた仮名」に変換 
    306      *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します  
    307      *  n :  「全角」数字を「半角(ハンカク)」に変換 
    308      */ 
    309     $arrConvList['search_name'] = "KVa"; 
    310     $arrConvList['search_product_code'] = "KVa"; 
    311      
    312     // 文字変換 
    313     foreach ($arrConvList as $key => $val) { 
    314         // POSTされてきた値のみ変換する。 
    315         if(isset($objPage->arrForm[$key])) { 
    316             $objPage->arrForm[$key] = mb_convert_kana($objPage->arrForm[$key] ,$val); 
    317         } 
    318     } 
    319 } 
    320  
    321 // エラーチェック  
    322 // 入力エラーチェック 
    323 function lfCheckError() { 
    324     $objErr = new SC_CheckError(); 
    325     $objErr->doFunc(array("商品ID", "search_product_id"), array("NUM_CHECK")); 
    326     $objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE")); 
    327     $objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE")); 
    328     $objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM")); 
    329     return $objErr->arrErr; 
    330 } 
    331  
    332 // チェックボックス用WHERE文作成 
    333 function lfGetCBWhere($key, $max) { 
    334     $str = ""; 
    335     $find = false; 
    336     for ($cnt = 1; $cnt <= $max; $cnt++) { 
    337         if ($_POST[$key . $cnt] == "1") { 
    338             $str.= "1"; 
    339             $find = true; 
    340         } else { 
    341             $str.= "_"; 
    342         } 
    343     } 
    344     if (!$find) { 
    345         $str = ""; 
    346     } 
    347     return $str; 
    348 } 
    349  
    350 // カテゴリIDをキー、カテゴリ名を値にする配列を返す。 
    351 function lfGetIDName($arrCatList) { 
    352     $max = count($arrCatList); 
    353     for ($cnt = 0; $cnt < $max; $cnt++ ) { 
    354         $key = $arrCatList[$cnt]['category_id']; 
    355         $val = $arrCatList[$cnt]['category_name']; 
    356         $arrRet[$key] = $val;    
    357     } 
    358     return $arrRet; 
    359 } 
    360  
     16$objPage = new LC_Page_Admin_Products_Ex(); 
     17$objPage->init(); 
     18$objPage->process(); 
     19register_shutdown_function(array($objPage, "destroy")); 
    36120?> 
Note: See TracChangeset for help on using the changeset viewer.