Ignore:
Timestamp:
2013/05/02 18:11:36 (8 years ago)
Author:
h_yoshimoto
Message:

#2236 2.12.3リリース以降の2.12-devへのコミット差し戻し

File:
1 edited

Legend:

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

    r22581 r22796  
    3232 * @version $Id$ 
    3333 */ 
    34 class LC_Page_Admin_Contents extends LC_Page_Admin_Ex  
    35 { 
     34class LC_Page_Admin_Contents extends LC_Page_Admin_Ex { 
    3635 
    3736    // }}} 
     
    4342     * @return void 
    4443     */ 
    45     function init() 
    46     { 
     44    function init() { 
    4745        parent::init(); 
    4846        $this->tpl_mainpage = 'contents/index.tpl'; 
     
    6866     * @return void 
    6967     */ 
    70     function process() 
    71     { 
     68    function process() { 
    7269        $this->action(); 
    7370        $this->sendResponse(); 
     
    7976     * @return void 
    8077     */ 
    81     function action() 
    82     { 
    83  
    84         $objNews = new SC_Helper_News_Ex(); 
    85  
     78    function action() { 
     79 
     80        $objDb = new SC_Helper_DB_Ex(); 
    8681        $objFormParam = new SC_FormParam_Ex(); 
    8782        $this->lfInitParam($objFormParam); 
    8883        $objFormParam->setParam($_POST); 
    8984        $objFormParam->convParam(); 
    90  
    9185        $news_id = $objFormParam->getValue('news_id'); 
    9286 
    9387        //---- 新規登録/編集登録 
    9488        switch ($this->getMode()) { 
    95             case 'edit': 
     89            case 'regist': 
     90                $arrPost = $objFormParam->getHashArray(); 
    9691                $this->arrErr = $this->lfCheckError($objFormParam); 
    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('登録が完了しました。');"; 
     92                if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     93                    // ニュースIDの値がPOSTされて来た場合は既存データの編集とみなし、 
     94                    // 更新メソッドを呼び出す。 
     95                    // ニュースIDが存在しない場合は新規登録を行う。 
     96                    $arrPost['link_method'] = $this->checkLinkMethod($arrPost['link_method']); 
     97                    $arrPost['news_date'] = $this->getRegistDate($arrPost); 
     98                    $member_id = $_SESSION['member_id']; 
     99                    if (strlen($news_id) > 0 && is_numeric($news_id)) { 
     100                        $this->lfNewsUpdate($arrPost,$member_id); 
     101                    } else { 
     102                        $this->lfNewsInsert($arrPost,$member_id); 
    111103                    } 
    112                 } 
    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  
     104                    $news_id = ''; 
     105                    $this->tpl_onload = "window.alert('編集が完了しました');"; 
     106                } else { 
     107                    $this->arrForm = $arrPost; 
     108                } 
     109                break; 
     110            case 'search': 
     111                if (is_numeric($news_id)) { 
     112                    list($this->arrForm) = $this->getNews($news_id); 
     113                    list($this->arrForm['year'],$this->arrForm['month'],$this->arrForm['day']) = $this->splitNewsDate($this->arrForm['cast_news_date']); 
     114                    $this->edit_mode = 'on'; 
     115                } 
     116                break; 
    126117            case 'delete': 
    127118            //---- データ削除 
    128                 $objNews->delete($news_id); 
    129                 //自分にリダイレクト(再読込による誤動作防止) 
    130                 SC_Response_Ex::reload(); 
    131                 break; 
    132  
     119                if (is_numeric($news_id)) { 
     120                    $pre_rank = $this->getRankByNewsId($news_id); 
     121                    $this->computeRankForDelete($news_id,$pre_rank); 
     122 
     123                    SC_Response_Ex::reload();             //自分にリダイレクト(再読込による誤動作防止) 
     124                } 
     125                break; 
     126            case 'move': 
    133127            //---- 表示順位移動 
    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  
     128                if (strlen($news_id) > 0 && is_numeric($news_id) == true) { 
     129                    $term = $objFormParam->getValue('term'); 
     130                    if ($term == 'up') { 
     131                        $objDb->sfRankUp('dtb_news', 'news_id', $news_id); 
     132                    } else if ($term == 'down') { 
     133                        $objDb->sfRankDown('dtb_news', 'news_id', $news_id); 
     134                    } 
     135 
     136                    $this->objDisplay->reload(); 
     137                } 
     138                break; 
    148139            case 'moveRankSet': 
    149140            //---- 指定表示順位移動 
    150141                $input_pos = $this->getPostRank($news_id); 
    151142                if (SC_Utils_Ex::sfIsInt($input_pos)) { 
    152                     $objNews->moveRank($news_id, $input_pos); 
    153                 } 
    154                 SC_Response_Ex::reload(); 
    155                 break; 
    156  
     143                    $objDb->sfMoveRank('dtb_news', 'news_id', $news_id, $input_pos); 
     144 
     145                    $this->objDisplay->reload(); 
     146                } 
     147                break; 
    157148            default: 
    158149                break; 
    159150        } 
    160151 
    161         $this->arrNews = $objNews->getList(); 
     152        $this->arrNews = $this->getNews(); 
     153        $this->tpl_news_id = $news_id; 
    162154        $this->line_max = count($this->arrNews); 
    163  
    164         $this->arrForm = $objFormParam->getFormParamList(); 
     155        $this->max_rank = $this->getRankMax(); 
     156 
    165157    } 
    166158 
     
    170162     * @return void 
    171163     */ 
    172     function destroy() 
    173     { 
     164    function destroy() { 
    174165        parent::destroy(); 
    175166    } 
     
    180171     * @return Array エラー内容 
    181172     */ 
    182     function lfCheckError(&$objFormParam) 
    183     { 
     173    function lfCheckError(&$objFormParam) { 
    184174        $objErr = new SC_CheckError_Ex($objFormParam->getHashArray()); 
    185175        $objErr->arrErr = $objFormParam->checkError(); 
     
    192182     * @param Object $objFormParam 
    193183     */ 
    194     function lfInitParam(&$objFormParam) 
    195     { 
     184    function lfInitParam(&$objFormParam) { 
    196185        $objFormParam->addParam('news_id', 'news_id'); 
    197186        $objFormParam->addParam('日付(年)', 'year', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     
    202191        $objFormParam->addParam('本文', 'news_comment', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
    203192        $objFormParam->addParam('別ウィンドウで開く', 'link_method', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    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     { 
     193        $objFormParam->addParam('ランク移動', 'term', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     194    } 
     195 
     196    /** 
     197     * 新着記事のデータの登録を行う 
     198     * @param Array $arrPost POSTデータの配列 
     199     * @param Integer $member_id 登録した管理者のID 
     200     */ 
     201    function lfNewsInsert($arrPost,$member_id) { 
     202        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     203 
     204        // rankの最大+1を取得する 
     205        $rank_max = $this->getRankMax(); 
     206        $rank_max = $rank_max + 1; 
     207 
     208        $table = 'dtb_news'; 
     209        $sqlval = array(); 
     210        $news_id = $objQuery->nextVal('dtb_news_news_id'); 
    216211        $sqlval['news_id'] = $news_id; 
    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); 
     212        $sqlval['news_date'] = $arrPost['news_date']; 
     213        $sqlval['news_title'] = $arrPost['news_title']; 
     214        $sqlval['creator_id'] = $member_id; 
     215        $sqlval['news_url'] = $arrPost['news_url']; 
     216        $sqlval['link_method'] = $arrPost['link_method']; 
     217        $sqlval['news_comment'] = $arrPost['news_comment']; 
     218        $sqlval['rank'] = $rank_max; 
     219        $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 
     220        $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
     221        $objQuery->insert($table, $sqlval); 
     222    } 
     223 
     224    function lfNewsUpdate($arrPost,$member_id) { 
     225        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     226 
     227        $table = 'dtb_news'; 
     228        $sqlval = array(); 
     229        $sqlval['news_date'] = $arrPost['news_date']; 
     230        $sqlval['news_title'] = $arrPost['news_title']; 
     231        $sqlval['creator_id'] = $member_id; 
     232        $sqlval['news_url'] = $arrPost['news_url']; 
     233        $sqlval['news_comment'] = $arrPost['news_comment']; 
     234        $sqlval['link_method'] = $arrPost['link_method']; 
     235        $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
     236        $where = 'news_id = ?'; 
     237        $arrValIn = array($arrPost['news_id']); 
     238        $objQuery->update($table, $sqlval, $where, $arrValIn); 
    222239    } 
    223240 
     
    227244     * @return string 登録日を示す文字列 
    228245     */ 
    229     function getRegistDate($arrPost) 
    230     { 
     246    function getRegistDate($arrPost) { 
    231247        $registDate = $arrPost['year'] .'/'. $arrPost['month'] .'/'. $arrPost['day']; 
    232248        return $registDate; 
     
    238254     * @return int 
    239255     */ 
    240     function checkLinkMethod($link_method) 
    241     { 
     256    function checkLinkMethod($link_method) { 
    242257        if (strlen($link_method) == 0) { 
    243258            $link_method = 1; 
     
    247262 
    248263    /** 
     264     * ニュース記事を取得する。 
     265     * @param Integer news_id ニュースID 
     266     */ 
     267    function getNews($news_id = '') { 
     268        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     269        $col = '*, cast(news_date as date) as cast_news_date'; 
     270        $table = 'dtb_news'; 
     271        $order = 'rank DESC'; 
     272        if (strlen($news_id) == 0) { 
     273            $where = 'del_flg = 0'; 
     274            $arrWhereVal = array(); 
     275        } else { 
     276            $where = 'del_flg = 0 AND news_id = ?'; 
     277            $arrWhereVal = array($news_id); 
     278        } 
     279        $objQuery->setOrder($order); 
     280        return $objQuery->select($col, $table, $where, $arrWhereVal); 
     281    } 
     282 
     283    /** 
     284     * 指定されたニュースのランクの値を取得する。 
     285     * @param Integer $news_id 
     286     */ 
     287    function getRankByNewsId($news_id) { 
     288        $objQuery = $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     289        $col = 'rank'; 
     290        $table = 'dtb_news'; 
     291        $where = 'del_flg = 0 AND news_id = ?'; 
     292        $arrWhereVal = array($news_id); 
     293        list($rank) = $objQuery->select($col, $table, $where, $arrWhereVal); 
     294        return $rank['rank']; 
     295    } 
     296 
     297    /** 
     298     * 削除する新着情報以降のrankを1つ繰り上げる。 
     299     * @param Integer $news_id 
     300     * @param Integer $rank 
     301     */ 
     302    function computeRankForDelete($news_id,$rank) { 
     303        SC_Helper_DB_Ex::sfDeleteRankRecord('dtb_news', 'news_id', $news_id); 
     304    } 
     305 
     306    /** 
    249307     * ニュースの日付の値をフロントでの表示形式に合わせるために分割 
    250308     * @param String $news_date 
    251309     */ 
    252     function splitNewsDate($news_date) 
    253     { 
     310    function splitNewsDate($news_date) { 
    254311        return explode('-', $news_date); 
     312    } 
     313 
     314    /** 
     315     * ランクの最大値の値を返す。 
     316     * @return Intger $max ランクの最大値の値 
     317     */ 
     318    function getRankMax() { 
     319        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     320        $col = 'MAX(rank) as max'; 
     321        $table = 'dtb_news'; 
     322        $where = 'del_flg = 0'; 
     323        list($result) = $objQuery->select($col, $table, $where); 
     324        return $result['max']; 
    255325    } 
    256326 
     
    260330     * @param Integer $news_id 
    261331     */ 
    262     function getPostRank($news_id) 
    263     { 
     332    function getPostRank($news_id) { 
    264333        if (strlen($news_id) > 0 && is_numeric($news_id) == true) { 
    265334            $key = 'pos-' . $news_id; 
Note: See TracChangeset for help on using the changeset viewer.