Changeset 20194


Ignore:
Timestamp:
2011/02/18 15:15:56 (13 years ago)
Author:
Yammy
Message:

リファクタリング
refs #970

Location:
branches/version-2_5-dev/data/class/pages/admin/products
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php

    r20128 r20194  
    7676        $objSess = new SC_Session(); 
    7777        $objDate = new SC_Date(); 
    78         $objQuery = new SC_Query(); 
     78        $objQuery =& SC_Query::getSingletonInstance(); 
     79 
     80        // 認証可否の判定 
     81        SC_Utils_Ex::sfIsSuccess($objSess); 
    7982 
    8083        // 登録・更新検索開始年 
     
    9194        $this->arrEndDay = $objDate->getDay(); 
    9295 
    93         // 認証可否の判定 
    94         SC_Utils_Ex::sfIsSuccess($objSess); 
    95  
    96         //レビュー情報のカラムの取得 
    97         $select="review_id, A.product_id, reviewer_name, sex, recommend_level, "; 
    98         $select.="reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; 
    99         $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 
    100  
    101         // 検索ワードの引き継ぎ 
    102         foreach ($_POST as $key => $val) { 
    103             if (ereg("^search_", $key)) { 
    104                 switch ($key){ 
    105                 case 'search_sex': 
    106                     $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 
    107                     if(!is_array($val)) { 
    108                         $this->arrForm[$key] = split("-", $val); 
    109                     } 
    110                     break; 
    111  
    112                 default: 
    113                     $this->arrHidden[$key] = $val; 
    114                     break; 
    115                 } 
    116             } 
    117         } 
     96        // パラメータ管理クラス 
     97        $this->objFormParam = new SC_FormParam(); 
     98        // パラメータ情報の初期化 
     99        $this->lfInitParam(); 
     100        $this->objFormParam->setParam($_POST); 
     101        $arrForm = $this->objFormParam->getHashArray(); 
     102 
     103        // hidden の設定 
     104        $this->arrHidden = $this->lfSetHidden($arrForm); 
     105 
    118106        switch ($this->getMode()) { 
    119107        case 'delete': 
    120             //レビューの削除 
    121             $objQuery->exec("UPDATE dtb_review SET del_flg=1 WHERE review_id=?", array($_POST['review_id'])); 
     108            $this->lfDeleteReview($arrForm['review_id']); 
    122109        case 'search': 
    123110        case 'csv': 
    124             //削除されていない商品を検索 
    125             $where="A.del_flg = 0 AND B.del_flg = 0"; 
    126             $this->arrForm = $_POST; 
    127             if (isset($_POST['search_sex']) && !is_array($_POST['search_sex'])){ 
    128                 $this->arrForm['search_sex'] = split("-", $_POST['search_sex']); 
     111            // エラーチェック 
     112            $this->arrErr = $this->lfCheckError(); 
     113            if (!$this->arrErr){ 
     114                // 検索条件を取得 
     115                list($where, $arrval) = $this->lfGetWhere($arrForm); 
    129116            } 
    130             //エラーチェック 
    131             $this->arrErr = $this->lfCheckError(); 
    132  
    133             if (!$this->arrErr){ 
    134                 foreach ($_POST as $key => $val){ 
    135  
    136                     if($val == "") { 
    137                         continue; 
    138                     } 
    139  
    140                     switch ($key){ 
    141                     case 'search_reviewer_name': 
    142                         $val = ereg_replace(" ", "%", $val); 
    143                         $val = ereg_replace(" ", "%", $val); 
    144                         $where.= " AND reviewer_name ILIKE ? "; 
    145                         $arrval[] = "%$val%"; 
    146                         break; 
    147  
    148                     case 'search_reviewer_url': 
    149                         $val = ereg_replace(" ", "%", $val); 
    150                         $val = ereg_replace(" ", "%", $val); 
    151                         $where.= " AND reviewer_url ILIKE ? "; 
    152                         $arrval[] = "%$val%"; 
    153                         break; 
    154  
    155                     case 'search_name': 
    156                         $val = ereg_replace(" ", "%", $val); 
    157                         $val = ereg_replace(" ", "%", $val); 
    158                         $where.= " AND name ILIKE ? "; 
    159                         $arrval[] = "%$val%"; 
    160                         break; 
    161  
    162                     case 'search_product_code': 
    163                         $val = ereg_replace(" ", "%", $val); 
    164                         $val = ereg_replace(" ", "%", $val); 
    165                         $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )"; 
    166                         $arrval[] = "%$val%"; 
    167                         break; 
    168  
    169                     case 'search_sex': 
    170                         $tmp_where = ""; 
    171                         //$val=配列の中身,$element=各キーの値(1,2) 
    172                         if (is_array($val)){ 
    173                             foreach($val as $element) { 
    174                                 if($element != "") { 
    175                                     if($tmp_where == "") { 
    176                                         $tmp_where .= " AND (sex = ?"; 
    177                                     } else { 
    178                                         $tmp_where .= " OR sex = ?"; 
    179                                     } 
    180                                     $arrval[] = $element; 
    181                                 } 
    182                             } 
    183                             if($tmp_where != "") { 
    184                                 $tmp_where .= ")"; 
    185                                 $where .= " $tmp_where "; 
    186                             } 
    187                         } 
    188  
    189                         break; 
    190  
    191                     case 'search_recommend_level': 
    192                         $where.= " AND recommend_level = ? "; 
    193                         $arrval[] = $val; 
    194                         break; 
    195  
    196                     case 'search_startyear': 
    197                         if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 
    198                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); 
    199                             $where.= " AND A.create_date >= ? "; 
    200                             $arrval[] = $date; 
    201                         } 
    202                         break; 
    203  
    204                     case 'search_endyear': 
    205                         if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 
    206                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); 
    207  
    208                             $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date))); 
    209  
    210                             $where.= " AND A.create_date <= cast('$end_date' as date) "; 
    211                         } 
    212                         break; 
    213                     } 
    214  
    215                 } 
    216  
    217             } 
    218  
    219             $order = "A.create_date DESC"; 
    220  
    221             // ページ送りの処理 
    222             if(is_numeric($_POST['search_page_max'])) { 
    223                 $page_max = $_POST['search_page_max']; 
    224             } else { 
    225                 $page_max = SEARCH_PMAX; 
    226             } 
    227  
    228             if (!isset($arrval)) $arrval = array(); 
    229  
    230             $linemax = $objQuery->count($from, $where, $arrval); 
    231             $this->tpl_linemax = $linemax; 
    232  
    233             $this->tpl_pageno = 
    234                 isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; 
    235  
    236             // ページ送りの取得 
    237             $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max, 
    238                                        "fnNaviSearchPage", NAVI_PMAX); 
    239             $this->arrPagenavi = $objNavi->arrPagenavi; 
    240             $startno = $objNavi->start_row; 
    241  
    242  
    243  
    244             // 取得範囲の指定(開始行番号、行数のセット) 
    245             $objQuery->setLimitOffset($page_max, $startno); 
    246  
    247             // 表示順序 
    248             $objQuery->setOrder($order); 
    249  
    250             //検索結果の取得 
    251             $this->arrReview = $objQuery->select($select, $from, $where, $arrval); 
    252117 
    253118            //CSVダウンロード 
    254             if ($mode == 'csv'){ 
    255  
    256                 $objCSV = new SC_Helper_CSV_Ex(); 
    257                 // オプションの指定 
    258                 $option = "ORDER BY review_id"; 
    259                 // CSV出力タイトル行の作成 
    260                 $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE); 
    261                 $data = $objCSV->lfGetReviewCSV($where, '', $arrval); 
    262                 // CSVを送信する。 
    263                 list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 
    264                 $this->sendResponseCSV($fime_name, $data); 
     119            if ($this->getMode() == 'csv') { 
     120                $this->lfCsv($where, $arrval); 
    265121                exit; 
    266122            } 
     123 
     124            // 検索条件を取得 
     125            $this->arrReview = $this->lfGetRevire($arrForm, $where, $arrval); 
    267126            break; 
    268127        default: 
    269128            break; 
    270129        } 
     130 
     131        $this->arrForm = $arrForm; 
    271132    } 
    272133 
     
    282143    // 入力エラーチェック 
    283144    function lfCheckError() { 
    284         $objErr = new SC_CheckError(); 
     145        // 入力データを渡す。 
     146        $arrRet =  $this->objFormParam->getHashArray(); 
     147        $objErr = new SC_CheckError($arrRet); 
     148        $objErr->arrErr = $this->objFormParam->checkError(); 
    285149 
    286150        switch ($this->getMode()){ 
     
    300164        return $objErr->arrErr; 
    301165    } 
     166 
     167    //レビューの削除 
     168    function lfDeleteReview($review_id) { 
     169        $objQuery =& SC_Query::getSingletonInstance(); 
     170        $sqlval['del_flg'] = 1; 
     171        $objQuery->update("dtb_review", $sqlval, "review_id = ?", array($review_id)); 
     172    } 
     173 
     174    // 検索ワードの引き継ぎ 
     175    function lfSetHidden($arrForm) { 
     176        $arrHidden = array(); 
     177        foreach ($arrForm AS $key=>$val) { 
     178            if (preg_match("/^search_/", $key)) { 
     179                switch ($key){ 
     180                case 'search_sex': 
     181                    $arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 
     182                    if(!is_array($val)) { 
     183                        $arrForm[$key] = split("-", $val); 
     184                    } 
     185                    break; 
     186 
     187                default: 
     188                    $arrHidden[$key] = $val; 
     189                    break; 
     190                } 
     191            } 
     192        } 
     193        return $arrHidden; 
     194    } 
     195 
     196    /* パラメータ情報の初期化 */ 
     197    function lfInitParam() { 
     198        $this->objFormParam->addParam("投稿者名", "search_reviewer_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     199        $this->objFormParam->addParam("投稿者URL", "search_reviewer_url", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     200        $this->objFormParam->addParam("商品名", "search_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     201        $this->objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     202        $this->objFormParam->addParam("性別", "search_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     203        $this->objFormParam->addParam("おすすめレベル", "search_recommend_level", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     204        $this->objFormParam->addParam("投稿年", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     205        $this->objFormParam->addParam("投稿月", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     206        $this->objFormParam->addParam("投稿日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     207        $this->objFormParam->addParam("投稿年", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     208        $this->objFormParam->addParam("投稿月", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     209        $this->objFormParam->addParam("投稿日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     210        $this->objFormParam->addParam("最大表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     211        $this->objFormParam->addParam("ページ番号件数", "search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     212        $this->objFormParam->addParam("レビューID", "review_id", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     213    } 
     214 
     215    // CSV ファイル出力実行 
     216    function lfCsv($where, $arrval) { 
     217        $objCSV = new SC_Helper_CSV_Ex(); 
     218        // CSV出力タイトル行の作成 
     219        $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE); 
     220        $data = $objCSV->lfGetReviewCSV($where, '', $arrval); 
     221        // CSVを送信する。 
     222        list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 
     223        $this->sendResponseCSV($fime_name, $data); 
     224    } 
     225 
     226 
     227    // 検索条件の取得 
     228    function lfGetWhere($arrForm) { 
     229        //削除されていない商品を検索 
     230        $where = "A.del_flg = 0 AND B.del_flg = 0"; 
     231 
     232        foreach ($arrForm AS $key=>$val){ 
     233            if (empty($val)) continue; 
     234 
     235            switch ($key){ 
     236            case 'search_reviewer_name': 
     237                $val = mb_convert_kana($val, 's'); 
     238                $val = preg_replace("/ /", "%", $val); 
     239                $where.= " AND reviewer_name ILIKE ? "; 
     240                $arrval[] = "%$val%"; 
     241                break; 
     242 
     243            case 'search_reviewer_url': 
     244                $val = mb_convert_kana($val, 's'); 
     245                $val = preg_replace("/ /", "%", $val); 
     246                $where.= " AND reviewer_url ILIKE ? "; 
     247                $arrval[] = "%$val%"; 
     248                break; 
     249 
     250            case 'search_name': 
     251                $val = mb_convert_kana($val, 's'); 
     252                $val = preg_replace("/ /", "%", $val); 
     253                $where.= " AND name ILIKE ? "; 
     254                $arrval[] = "%$val%"; 
     255                break; 
     256 
     257            case 'search_product_code': 
     258                $val = mb_convert_kana($val, 's'); 
     259                $val = preg_replace("/ /", "%", $val); 
     260                $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )"; 
     261                $arrval[] = "%$val%"; 
     262                break; 
     263 
     264            case 'search_sex': 
     265                $tmp_where = ""; 
     266                //$val=配列の中身,$element=各キーの値(1,2) 
     267                if (is_array($val)){ 
     268                    foreach($val as $element) { 
     269                        if($element != "") { 
     270                            if($tmp_where == "") { 
     271                                $tmp_where .= " AND (sex = ?"; 
     272                            } else { 
     273                                $tmp_where .= " OR sex = ?"; 
     274                            } 
     275                            $arrval[] = $element; 
     276                        } 
     277                    } 
     278                    if($tmp_where != "") { 
     279                        $tmp_where .= ")"; 
     280                        $where .= " $tmp_where "; 
     281                    } 
     282                } 
     283 
     284                break; 
     285 
     286            case 'search_recommend_level': 
     287                $where.= " AND recommend_level = ? "; 
     288                $arrval[] = $val; 
     289                break; 
     290 
     291            case 'search_startyear': 
     292                if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 
     293                    $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); 
     294                    $where.= " AND A.create_date >= ? "; 
     295                    $arrval[] = $date; 
     296                } 
     297                break; 
     298 
     299            case 'search_endyear': 
     300                if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 
     301                    $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); 
     302                    $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date))); 
     303                    $where.= " AND A.create_date <= cast('$end_date' as date) "; 
     304                } 
     305                break; 
     306            } 
     307 
     308        } 
     309        return array($where, $arrval); 
     310    } 
     311 
     312    /* 
     313     * レビューの検索結果取得 
     314     */ 
     315    function lfGetRevire($arrForm, $where, $arrval) { 
     316        $objQuery =& SC_Query::getSingletonInstance(); 
     317 
     318        // ページ送りの処理 
     319        if(is_numeric($arrForm['search_page_max'])) { 
     320            $page_max = $arrForm['search_page_max']; 
     321        } else { 
     322            $page_max = SEARCH_PMAX; 
     323        } 
     324 
     325        if (!isset($arrval)) $arrval = array(); 
     326 
     327        $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 
     328        $linemax = $objQuery->count($from, $where, $arrval); 
     329        $this->tpl_linemax = $linemax; 
     330 
     331        $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : ""; 
     332 
     333        // ページ送りの取得 
     334        $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max, 
     335                                   "fnNaviSearchPage", NAVI_PMAX); 
     336        $this->arrPagenavi = $objNavi->arrPagenavi; 
     337        $startno = $objNavi->start_row; 
     338 
     339        // 取得範囲の指定(開始行番号、行数のセット) 
     340        $objQuery->setLimitOffset($page_max, $startno); 
     341 
     342        // 表示順序 
     343        $order = "A.create_date DESC"; 
     344        $objQuery->setOrder($order); 
     345        //検索結果の取得 
     346        //レビュー情報のカラムの取得 
     347        $col = "review_id, A.product_id, reviewer_name, sex, recommend_level, "; 
     348        $col .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; 
     349        $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 
     350        $arrReview = $objQuery->select($col, $from, $where, $arrval); 
     351 
     352        return $arrReview; 
     353    } 
     354 
     355 
    302356} 
    303357?> 
  • branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php

    r20116 r20194  
    7272    function action() { 
    7373        $objSess = new SC_Session(); 
    74         $this->objQuery = new SC_Query(); 
     74        $this->objQuery =& SC_Query::getSingletonInstance(); 
     75 
    7576        // 認証可否の判定 
    7677        SC_Utils_Ex::sfIsSuccess($objSess); 
     
    108109                    // 入力内容を引き継ぐ 
    109110                    $this->arrReview = $arrReview; 
    110                 } 
     111                } else { 
    111112                // エラー無し 
    112                 else { 
    113113                    // レビュー情報の更新 
    114114                    $this->lfRegistReviewData($arrReview, $arrRegistColumn); 
Note: See TracChangeset for help on using the changeset viewer.