Ignore:
Timestamp:
2013/02/22 20:22:51 (8 years ago)
Author:
pineray
Message:

#2160 pageクラスからdtb_newsテーブルを直接指定している箇所をなくす
新着情報管理のページクラス内の処理を他と統一する

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php

    r22567 r22581  
    8282    { 
    8383 
    84         $objDb = new SC_Helper_DB_Ex(); 
     84        $objNews = new SC_Helper_News_Ex(); 
     85 
    8586        $objFormParam = new SC_FormParam_Ex(); 
    8687        $this->lfInitParam($objFormParam); 
    8788        $objFormParam->setParam($_POST); 
    8889        $objFormParam->convParam(); 
     90 
    8991        $news_id = $objFormParam->getValue('news_id'); 
    9092 
    9193        //---- 新規登録/編集登録 
    9294        switch ($this->getMode()) { 
    93             case 'regist': 
    94                 $arrPost = $objFormParam->getHashArray(); 
     95            case 'edit': 
    9596                $this->arrErr = $this->lfCheckError($objFormParam); 
    96                 if (SC_Utils_Ex::isBlank($this->arrErr)) { 
    97                     // ニュースIDの値がPOSTされて来た場合は既存データの編集とみなし、 
    98                     // 更新メソッドを呼び出す。 
    99                     // ニュースIDが存在しない場合は新規登録を行う。 
    100                     $arrPost['link_method'] = $this->checkLinkMethod($arrPost['link_method']); 
    101                     $arrPost['news_date'] = $this->getRegistDate($arrPost); 
    102                     $member_id = $_SESSION['member_id']; 
    103                     if (strlen($news_id) > 0 && is_numeric($news_id)) { 
    104                         $this->lfNewsUpdate($arrPost,$member_id); 
    105                     } else { 
    106                         $this->lfNewsInsert($arrPost,$member_id); 
     97                if (!SC_Utils_Ex::isBlank($this->arrErr['news_id'])) { 
     98                    trigger_error('', E_USER_ERROR); 
     99                    return; 
     100                } 
     101 
     102                if (count($this->arrErr) <= 0) { 
     103                    // POST値の引き継ぎ 
     104                    $arrParam = $objFormParam->getHashArray(); 
     105                    // 登録実行 
     106                    $res_news_id = $this->doRegist($news_id, $arrParam, $objNews); 
     107                    if ($res_news_id !== FALSE) { 
     108                        // 完了メッセージ 
     109                        $news_id = $res_news_id; 
     110                        $this->tpl_onload = "alert('登録が完了しました。');"; 
    107111                    } 
    108                     $news_id = ''; 
    109                     $this->tpl_onload = "window.alert('編集が完了しました');"; 
    110                 } else { 
    111                     $this->arrForm = $arrPost; 
    112112                } 
    113                 break; 
    114             case 'search': 
    115                 if (is_numeric($news_id)) { 
    116                     list($this->arrForm) = $this->getNews($news_id); 
    117                     list($this->arrForm['year'],$this->arrForm['month'],$this->arrForm['day']) = $this->splitNewsDate($this->arrForm['cast_news_date']); 
    118                     $this->edit_mode = 'on'; 
    119                 } 
    120                 break; 
     113                // POSTデータを引き継ぐ 
     114                $this->tpl_news_id = $news_id; 
     115                break; 
     116 
     117            case 'pre_edit': 
     118                $news = $objNews->get($news_id); 
     119                list($news['year'],$news['month'],$news['day']) = $this->splitNewsDate($news['cast_news_date']); 
     120                $objFormParam->setParam($news); 
     121 
     122                // POSTデータを引き継ぐ 
     123                $this->tpl_news_id = $news_id; 
     124                break; 
     125 
    121126            case 'delete': 
    122127            //---- データ削除 
    123                 if (is_numeric($news_id)) { 
    124                     $pre_rank = $this->getRankByNewsId($news_id); 
    125                     $this->computeRankForDelete($news_id,$pre_rank); 
    126  
    127                     SC_Response_Ex::reload();             //自分にリダイレクト(再読込による誤動作防止) 
    128                 } 
    129                 break; 
    130             case 'move': 
     128                $objNews->delete($news_id); 
     129                //自分にリダイレクト(再読込による誤動作防止) 
     130                SC_Response_Ex::reload(); 
     131                break; 
     132 
    131133            //---- 表示順位移動 
    132                 if (strlen($news_id) > 0 && is_numeric($news_id) == true) { 
    133                     $term = $objFormParam->getValue('term'); 
    134                     if ($term == 'up') { 
    135                         $objDb->sfRankUp('dtb_news', 'news_id', $news_id); 
    136                     } else if ($term == 'down') { 
    137                         $objDb->sfRankDown('dtb_news', 'news_id', $news_id); 
    138                     } 
    139  
    140                     $this->objDisplay->reload(); 
    141                 } 
    142                 break; 
     134            case 'up': 
     135                $objNews->rankUp($news_id); 
     136 
     137                // リロード 
     138                SC_Response_Ex::reload(); 
     139                break; 
     140 
     141            case 'down': 
     142                $objNews->rankDown($news_id); 
     143 
     144                // リロード 
     145                SC_Response_Ex::reload(); 
     146                break; 
     147 
    143148            case 'moveRankSet': 
    144149            //---- 指定表示順位移動 
    145150                $input_pos = $this->getPostRank($news_id); 
    146151                if (SC_Utils_Ex::sfIsInt($input_pos)) { 
    147                     $objDb->sfMoveRank('dtb_news', 'news_id', $news_id, $input_pos); 
     152                    $objNews->moveRank($news_id, $input_pos); 
    148153                } 
    149                 $this->objDisplay->reload(); 
    150                 break; 
     154                SC_Response_Ex::reload(); 
     155                break; 
     156 
    151157            default: 
    152158                break; 
    153159        } 
    154160 
    155         $this->arrNews = $this->getNews(); 
    156         $this->tpl_news_id = $news_id; 
     161        $this->arrNews = $objNews->getList(); 
    157162        $this->line_max = count($this->arrNews); 
    158         $this->max_rank = $this->getRankMax(); 
    159  
     163 
     164        $this->arrForm = $objFormParam->getFormParamList(); 
    160165    } 
    161166 
     
    197202        $objFormParam->addParam('本文', 'news_comment', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
    198203        $objFormParam->addParam('別ウィンドウで開く', 'link_method', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    199         $objFormParam->addParam('ランク移動', 'term', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    200     } 
    201  
    202     /** 
    203      * 新着記事のデータの登録を行う 
    204      * @param Array $arrPost POSTデータの配列 
    205      * @param Integer $member_id 登録した管理者のID 
    206      */ 
    207     function lfNewsInsert($arrPost,$member_id) 
    208     { 
    209         $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    210  
    211         // rankの最大+1を取得する 
    212         $rank_max = $this->getRankMax(); 
    213         $rank_max = $rank_max + 1; 
    214  
    215         $table = 'dtb_news'; 
    216         $sqlval = array(); 
    217         $news_id = $objQuery->nextVal('dtb_news_news_id'); 
     204    } 
     205 
     206    /** 
     207     * 登録処理を実行. 
     208     *  
     209     * @param integer $news_id 
     210     * @param array $sqlval 
     211     * @param object $objNews 
     212     * @return multiple 
     213     */ 
     214    function doRegist($news_id, $sqlval, SC_Helper_News_Ex $objNews) 
     215    { 
    218216        $sqlval['news_id'] = $news_id; 
    219         $sqlval['news_date'] = $arrPost['news_date']; 
    220         $sqlval['news_title'] = $arrPost['news_title']; 
    221         $sqlval['creator_id'] = $member_id; 
    222         $sqlval['news_url'] = $arrPost['news_url']; 
    223         $sqlval['link_method'] = $arrPost['link_method']; 
    224         $sqlval['news_comment'] = $arrPost['news_comment']; 
    225         $sqlval['rank'] = $rank_max; 
    226         $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 
    227         $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
    228         $objQuery->insert($table, $sqlval); 
    229     } 
    230  
    231     function lfNewsUpdate($arrPost,$member_id) 
    232     { 
    233         $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    234  
    235         $table = 'dtb_news'; 
    236         $sqlval = array(); 
    237         $sqlval['news_date'] = $arrPost['news_date']; 
    238         $sqlval['news_title'] = $arrPost['news_title']; 
    239         $sqlval['creator_id'] = $member_id; 
    240         $sqlval['news_url'] = $arrPost['news_url']; 
    241         $sqlval['news_comment'] = $arrPost['news_comment']; 
    242         $sqlval['link_method'] = $arrPost['link_method']; 
    243         $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
    244         $where = 'news_id = ?'; 
    245         $arrValIn = array($arrPost['news_id']); 
    246         $objQuery->update($table, $sqlval, $where, $arrValIn); 
     217        $sqlval['creator_id'] = $_SESSION['member_id']; 
     218        $sqlval['link_method'] = $this->checkLinkMethod($sqlval['link_method']); 
     219        $sqlval['news_date'] = $this->getRegistDate($sqlval); 
     220        unset($sqlval['year'], $sqlval['month'], $sqlval['day']); 
     221        return $objNews->save($sqlval); 
    247222    } 
    248223 
     
    272247 
    273248    /** 
    274      * ニュース記事を取得する。 
    275      * @param Integer news_id ニュースID 
    276      */ 
    277     function getNews($news_id = '') 
    278     { 
    279         $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    280         $col = '*, cast(news_date as date) as cast_news_date'; 
    281         $table = 'dtb_news'; 
    282         $order = 'rank DESC'; 
    283         if (strlen($news_id) == 0) { 
    284             $where = 'del_flg = 0'; 
    285             $arrWhereVal = array(); 
    286         } else { 
    287             $where = 'del_flg = 0 AND news_id = ?'; 
    288             $arrWhereVal = array($news_id); 
    289         } 
    290         $objQuery->setOrder($order); 
    291         return $objQuery->select($col, $table, $where, $arrWhereVal); 
    292     } 
    293  
    294     /** 
    295      * 指定されたニュースのランクの値を取得する。 
    296      * @param Integer $news_id 
    297      */ 
    298     function getRankByNewsId($news_id) 
    299     { 
    300         $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    301         $col = 'rank'; 
    302         $table = 'dtb_news'; 
    303         $where = 'del_flg = 0 AND news_id = ?'; 
    304         $arrWhereVal = array($news_id); 
    305         list($rank) = $objQuery->select($col, $table, $where, $arrWhereVal); 
    306         return $rank['rank']; 
    307     } 
    308  
    309     /** 
    310      * 削除する新着情報以降のrankを1つ繰り上げる。 
    311      * @param Integer $news_id 
    312      * @param Integer $rank 
    313      */ 
    314     function computeRankForDelete($news_id,$rank) 
    315     { 
    316         SC_Helper_DB_Ex::sfDeleteRankRecord('dtb_news', 'news_id', $news_id); 
    317     } 
    318  
    319     /** 
    320249     * ニュースの日付の値をフロントでの表示形式に合わせるために分割 
    321250     * @param String $news_date 
     
    324253    { 
    325254        return explode('-', $news_date); 
    326     } 
    327  
    328     /** 
    329      * ランクの最大値の値を返す。 
    330      * @return Intger $max ランクの最大値の値 
    331      */ 
    332     function getRankMax() 
    333     { 
    334         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    335         $col = 'MAX(rank) as max'; 
    336         $table = 'dtb_news'; 
    337         $where = 'del_flg = 0'; 
    338         list($result) = $objQuery->select($col, $table, $where); 
    339         return $result['max']; 
    340255    } 
    341256 
Note: See TracChangeset for help on using the changeset viewer.