Changeset 15659


Ignore:
Timestamp:
2007/09/10 13:19:15 (13 years ago)
Author:
nanasess
Message:

クラス化に伴う修正

Location:
branches/feature-module-update
Files:
4 added
1 edited

Legend:

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

    r15532 r15659  
    55 * http://www.lockon.co.jp/ 
    66 */ 
    7 require_once("../require.php"); 
    87 
    9 //---- 認証可否の判定 
    10 $objSess = new SC_Session(); 
    11 sfIsSuccess($objSess); 
     8// {{{ requires 
     9require_once("../../require.php"); 
     10require_once(CLASS_PATH . "page_extends/admin/contents/LC_Page_Admin_Contents_Ex.php"); 
    1211 
    13 //---- ページ表示クラス 
    14 class LC_Page { 
    15      
    16     var $arrSession; 
    17     var $tpl_mainpage; 
    18     var $sub_navipage; 
    19     var $regist_data; 
    20     var $arrYear; 
    21     var $arrMonth; 
    22     var $arrDate; 
    23     var $selected_year; 
    24     var $selected_month; 
    25     var $selected_day; 
    26     var $list_data; 
    27     var $max_rank; 
    28     var $edit_mode; 
    29     var $news_title; 
    30     var $news_date_unix; 
    31     var $news_url; 
    32     var $link_method; 
    33      
    34     function LC_Page() { 
    35         $this->tpl_mainpage = 'contents/index.tpl'; 
    36         $this->tpl_subnavi = 'contents/subnavi.tpl'; 
    37         $this->tpl_subno = "index"; 
    38         $this->tpl_mainno = 'contents'; 
    39         $this->selected_year = date("Y"); 
    40         $this->selected_month = date("n"); 
    41         $this->selected_day = date("j"); 
    42         $this->tpl_subtitle = '新着情報管理'; 
    43     } 
    44 } 
     12// }}} 
     13// {{{ generate page 
    4514 
    46  
    47 //---- ページ初期設定 
    48 $conn = new SC_DbConn(); 
    49 $objPage = new LC_Page(); 
    50 $objView = new SC_AdminView(); 
    51 $objDate = new SC_Date(ADMIN_NEWS_STARTYEAR); 
    52  
    53 //---- 日付プルダウン設定 
    54 $objPage->arrYear = $objDate->getYear(); 
    55 $objPage->arrMonth = $objDate->getMonth(); 
    56 $objPage->arrDay = $objDate->getDay(); 
    57  
    58 //---- 新規登録/編集登録 
    59 if ( $_POST['mode'] == 'regist'){ 
    60     $_POST = lfConvData($_POST); 
    61  
    62     if ($objPage->arrErr = lfErrorCheck()) {        // 入力エラーのチェック 
    63         foreach($_POST as $key => $val) { 
    64             $objPage->$key = $val; 
    65         } 
    66         $objPage->selected_year = $_POST["year"]; 
    67         $objPage->selected_month = $_POST["month"]; 
    68         $objPage->selected_day = $_POST["day"]; 
    69  
    70     } else { 
    71          
    72         if (isset($_POST['link_method']) == ""){ 
    73             $_POST['link_method'] = 1; 
    74         } 
    75          
    76         $registDate = $_POST['year'] ."/". $_POST['month'] ."/". $_POST['day']; 
    77  
    78         //-- 編集登録 
    79         if (strlen($_POST["news_id"]) > 0 && is_numeric($_POST["news_id"])) { 
    80  
    81             lfNewsUpdate(); 
    82  
    83         //-- 新規登録 
    84         } else { 
    85             lfNewsInsert(); 
    86         } 
    87  
    88         $objPage->tpl_onload = "window.alert('編集が完了しました');"; 
    89     } 
    90 } 
    91  
    92 //---- 編集データ取得 
    93 if ($_POST["mode"] == "search" && is_numeric($_POST["news_id"])) { 
    94     $sql = "SELECT *, cast(substring(news_date,1, 10) as date) as cast_news_date FROM dtb_news WHERE news_id = ? "; 
    95     $result = $conn->getAll($sql, array($_POST["news_id"])); 
    96     foreach($result[0] as $key => $val ){ 
    97         $objPage->$key = $val; 
    98     } 
    99     $arrData = split("-",$result[0]["cast_news_date"]); 
    100      
    101     $objPage->selected_year = $arrData[0]; 
    102     $objPage->selected_month =$arrData[1]; 
    103     $objPage->selected_day =  $arrData[2]; 
    104  
    105     $objPage->edit_mode = "on"; 
    106 } 
    107  
    108 //---- データ削除 
    109 if ( $_POST['mode'] == 'delete' && is_numeric($_POST["news_id"])) { 
    110      
    111     // rankを取得 
    112     $pre_rank = $conn->getone(" SELECT rank FROM dtb_news WHERE del_flg = 0 AND news_id = ? ", array( $_POST['news_id']  )); 
    113  
    114     //-- 削除する新着情報以降のrankを1つ繰り上げておく 
    115     $conn->query("BEGIN"); 
    116     $sql = "UPDATE dtb_news SET rank = rank - 1, update_date = NOW() WHERE del_flg = 0 AND rank > ?"; 
    117     $conn->query( $sql, array( $pre_rank  ) ); 
    118  
    119     $sql = "UPDATE dtb_news SET rank = 0, del_flg = 1, update_date = NOW() WHERE news_id = ?"; 
    120     $conn->query( $sql, array( $_POST['news_id'] ) ); 
    121     $conn->query("COMMIT"); 
    122  
    123     sfReload();             //自分にリダイレクト(再読込による誤動作防止) 
    124 } 
    125  
    126 //---- 表示順位移動 
    127  
    128 if ( $_POST['mode'] == 'move' && is_numeric($_POST["news_id"]) ) { 
    129     if ($_POST["term"] == "up") { 
    130         sfRankUp("dtb_news", "news_id", $_POST["news_id"]); 
    131     } else if ($_POST["term"] == "down") { 
    132         sfRankDown("dtb_news", "news_id", $_POST["news_id"]);    
    133     } 
    134     //sf_rebuildIndex($conn); 
    135     sfReload(); 
    136 } 
    137  
    138 //---- 指定表示順位移動 
    139 if ($_POST['mode'] == 'moveRankSet') { 
    140     $key = "pos-".$_POST['news_id']; 
    141     $input_pos = mb_convert_kana($_POST[$key], "n"); 
    142     if(sfIsInt($input_pos)) { 
    143         sfMoveRank("dtb_news", "news_id", $_POST['news_id'], $input_pos); 
    144         sfReload(); 
    145     } 
    146 } 
    147  
    148  
    149 //---- 全データ取得 
    150 $sql = "SELECT *, cast(substring(news_date,1, 10) as date) as cast_news_date FROM dtb_news WHERE del_flg = '0' ORDER BY rank DESC"; 
    151 $objPage->list_data = $conn->getAll($sql); 
    152 $objPage->line_max = count($objPage->list_data); 
    153 $sql = "SELECT MAX(rank) FROM dtb_news WHERE del_flg = '0'";        // rankの最大値を取得 
    154 $objPage->max_rank = $conn->getOne($sql); 
    155  
    156 $objPage->arrForm['news_select'] = 0; 
    157  
    158 //---- ページ表示 
    159 $objView->assignobj($objPage); 
    160 $objView->display(MAIN_FRAME); 
    161  
    162  
    163 //function ---------------------------------------------------------------------------------------------  
    164  
    165 //---- 入力文字列を配列へ 
    166 function lfConvData( $data ){ 
    167      
    168      // 文字列の変換(mb_convert_kanaの変換オプション)                          
    169     $arrFlag = array( 
    170                       "year" => "n" 
    171                      ,"month" => "n" 
    172                      ,"day" => "n" 
    173                      ,"url" => "a" 
    174                      ,"news_title" => "aKV" 
    175                      ,"news_comment" => "aKV" 
    176                      ,"link_method" => "n" 
    177                     ); 
    178          
    179     if ( is_array($data) ){ 
    180         foreach ($arrFlag as $key=>$line) { 
    181             $data[$key] = mb_convert_kana($data[$key], $line); 
    182         } 
    183     } 
    184  
    185     return $data; 
    186 } 
    187  
    188 //---- 指定順位へ移動 
    189 function sf_setRankPosition($conn, $tableName, $keyIdColumn, $keyId, $position) { 
    190  
    191     // 自身のランクを取得する 
    192     $conn->query("BEGIN"); 
    193     $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId));  
    194  
    195     if( $position > $rank ) $term = "- 1";  //入れ替え先の順位が入れ換え元の順位より大きい場合 
    196     if( $position < $rank ) $term = "+ 1";  //入れ替え先の順位が入れ換え元の順位より小さい場合 
    197  
    198     //-- 指定した順位の商品から移動させる商品までのrankを1つずらす 
    199     $sql = "UPDATE $tableName SET rank = rank $term, update_date = NOW() WHERE rank BETWEEN ? AND ? AND del_flg = 0"; 
    200     if( $position > $rank ) $conn->query( $sql, array( $rank + 1, $position ) ); 
    201     if( $position < $rank ) $conn->query( $sql, array( $position, $rank - 1 ) ); 
    202  
    203     //-- 指定した順位へrankを書き換える。 
    204     $sql  = "UPDATE $tableName SET rank = ?, update_date = NOW() WHERE $keyIdColumn = ? AND del_flg = 0 "; 
    205     $conn->query( $sql, array( $position, $keyId ) ); 
    206     $conn->query("COMMIT"); 
    207 } 
    208  
    209 //---- 入力エラーチェック(順位移動用) 
    210 function sf_errorCheckPosition($conn, $tableName, $position, $keyIdColumn, $keyId) { 
    211  
    212     $objErr = new SC_CheckError(); 
    213     $objErr->doFunc( array("移動順位", "moveposition", 4 ), array( "ZERO_CHECK", "NUM_CHECK", "EXIST_CHECK", "MAX_LENGTH_CHECK" ) ); 
    214  
    215     // 自身のランクを取得する。 
    216     $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId)); 
    217     if ($rank == $position ) $objErr->arrErr["moveposition"] .= "※ 指定した移動順位は現在の順位です。"; 
    218      
    219     // rankの最大値以上の入力を許容しない                                            
    220     if( ! $objErr->arrErr["position"] ) {                                 
    221         $sql = "SELECT MAX( rank ) FROM " .$tableName. " WHERE del_flg = 0"; 
    222         $result = $conn->getOne($sql); 
    223         if( $position > $result ) $objErr->arrErr["moveposition"] .= "※ 入力された順位は、登録数の最大値を超えています。"; 
    224     } 
    225  
    226     return $objErr->arrErr; 
    227 } 
    228  
    229 //---- 入力エラーチェック 
    230 function lfErrorCheck(){ 
    231  
    232     $objErr = new SC_CheckError(); 
    233  
    234     $objErr->doFunc(array("日付(年)", "year"), array("EXIST_CHECK")); 
    235     $objErr->doFunc(array("日付(月)", "month"), array("EXIST_CHECK")); 
    236     $objErr->doFunc(array("日付(日)", "day"), array("EXIST_CHECK")); 
    237     $objErr->doFunc(array("日付", "year", "month", "day"), array("CHECK_DATE")); 
    238     $objErr->doFunc(array("タイトル", 'news_title', MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); 
    239     $objErr->doFunc(array("本文", 'url', URL_LEN), array("MAX_LENGTH_CHECK")); 
    240     $objErr->doFunc(array("本文", 'news_comment', LTEXT_LEN), array("MAX_LENGTH_CHECK")); 
    241  
    242     return $objErr->arrErr; 
    243 } 
    244  
    245 //INSERT文 
    246 function lfNewsInsert(){ 
    247     global $conn; 
    248     global $registDate; 
    249      
    250     if ($_POST["link_method"] == "") { 
    251         $_POST["link_method"] = 1; 
    252     } 
    253      
    254     //rankの最大+1を取得する 
    255     $rank_max = $conn->getone("SELECT MAX(rank) + 1 FROM dtb_news WHERE del_flg = '0'"); 
    256  
    257     $sql = "INSERT INTO dtb_news (news_date, news_title, creator_id, news_url, link_method, news_comment, rank, create_date, update_date) 
    258             VALUES ( ?,?,?,?,?,?,?,now(),now())"; 
    259     $arrRegist = array($registDate, $_POST["news_title"], $_SESSION['member_id'],  $_POST["news_url"], $_POST["link_method"], $_POST["news_comment"], $rank_max); 
    260  
    261     $conn->query($sql, $arrRegist); 
    262      
    263     // 最初の1件目の登録はrankにNULLが入るので対策 
    264     $sql = "UPDATE dtb_news SET rank = 1 WHERE del_flg = 0 AND rank IS NULL"; 
    265     $conn->query($sql); 
    266 } 
    267  
    268 function lfNewsUpdate(){ 
    269     global $conn; 
    270     global $registDate; 
    271  
    272     if ($_POST["link_method"] == "") { 
    273         $_POST["link_method"] = 1; 
    274     }    
    275  
    276     $sql = "UPDATE dtb_news SET news_date = ?, news_title = ?, creator_id = ?, update_date = NOW(),  news_url = ?, link_method = ?, news_comment = ? WHERE news_id = ?"; 
    277     $arrRegist = array($registDate, $_POST['news_title'], $_SESSION['member_id'], $_POST['news_url'], $_POST["link_method"], $_POST['news_comment'], $_POST['news_id']); 
    278          
    279     $conn->query($sql, $arrRegist);  
    280 } 
     15$objPage = new LC_Page_Admin_Contents_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    28119?> 
Note: See TracChangeset for help on using the changeset viewer.