Changeset 22796 for branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
- Timestamp:
- 2013/05/02 18:11:36 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
r22581 r22796 32 32 * @version $Id$ 33 33 */ 34 class LC_Page_Admin_Contents extends LC_Page_Admin_Ex 35 { 34 class LC_Page_Admin_Contents extends LC_Page_Admin_Ex { 36 35 37 36 // }}} … … 43 42 * @return void 44 43 */ 45 function init() 46 { 44 function init() { 47 45 parent::init(); 48 46 $this->tpl_mainpage = 'contents/index.tpl'; … … 68 66 * @return void 69 67 */ 70 function process() 71 { 68 function process() { 72 69 $this->action(); 73 70 $this->sendResponse(); … … 79 76 * @return void 80 77 */ 81 function action() 82 { 83 84 $objNews = new SC_Helper_News_Ex(); 85 78 function action() { 79 80 $objDb = new SC_Helper_DB_Ex(); 86 81 $objFormParam = new SC_FormParam_Ex(); 87 82 $this->lfInitParam($objFormParam); 88 83 $objFormParam->setParam($_POST); 89 84 $objFormParam->convParam(); 90 91 85 $news_id = $objFormParam->getValue('news_id'); 92 86 93 87 //---- 新規登録/編集登録 94 88 switch ($this->getMode()) { 95 case 'edit': 89 case 'regist': 90 $arrPost = $objFormParam->getHashArray(); 96 91 $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); 111 103 } 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; 126 117 case 'delete': 127 118 //---- データ削除 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': 133 127 //---- 表示順位移動 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; 148 139 case 'moveRankSet': 149 140 //---- 指定表示順位移動 150 141 $input_pos = $this->getPostRank($news_id); 151 142 if (SC_Utils_Ex::sfIsInt($input_pos)) { 152 $obj News->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; 157 148 default: 158 149 break; 159 150 } 160 151 161 $this->arrNews = $objNews->getList(); 152 $this->arrNews = $this->getNews(); 153 $this->tpl_news_id = $news_id; 162 154 $this->line_max = count($this->arrNews); 163 164 $this->arrForm = $objFormParam->getFormParamList(); 155 $this->max_rank = $this->getRankMax(); 156 165 157 } 166 158 … … 170 162 * @return void 171 163 */ 172 function destroy() 173 { 164 function destroy() { 174 165 parent::destroy(); 175 166 } … … 180 171 * @return Array エラー内容 181 172 */ 182 function lfCheckError(&$objFormParam) 183 { 173 function lfCheckError(&$objFormParam) { 184 174 $objErr = new SC_CheckError_Ex($objFormParam->getHashArray()); 185 175 $objErr->arrErr = $objFormParam->checkError(); … … 192 182 * @param Object $objFormParam 193 183 */ 194 function lfInitParam(&$objFormParam) 195 { 184 function lfInitParam(&$objFormParam) { 196 185 $objFormParam->addParam('news_id', 'news_id'); 197 186 $objFormParam->addParam('日付(年)', 'year', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); … … 202 191 $objFormParam->addParam('本文', 'news_comment', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 203 192 $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'); 216 211 $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); 222 239 } 223 240 … … 227 244 * @return string 登録日を示す文字列 228 245 */ 229 function getRegistDate($arrPost) 230 { 246 function getRegistDate($arrPost) { 231 247 $registDate = $arrPost['year'] .'/'. $arrPost['month'] .'/'. $arrPost['day']; 232 248 return $registDate; … … 238 254 * @return int 239 255 */ 240 function checkLinkMethod($link_method) 241 { 256 function checkLinkMethod($link_method) { 242 257 if (strlen($link_method) == 0) { 243 258 $link_method = 1; … … 247 262 248 263 /** 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 /** 249 307 * ニュースの日付の値をフロントでの表示形式に合わせるために分割 250 308 * @param String $news_date 251 309 */ 252 function splitNewsDate($news_date) 253 { 310 function splitNewsDate($news_date) { 254 311 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']; 255 325 } 256 326 … … 260 330 * @param Integer $news_id 261 331 */ 262 function getPostRank($news_id) 263 { 332 function getPostRank($news_id) { 264 333 if (strlen($news_id) > 0 && is_numeric($news_id) == true) { 265 334 $key = 'pos-' . $news_id;
Note: See TracChangeset
for help on using the changeset viewer.