Changeset 22581 for branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
- Timestamp:
- 2013/02/22 20:22:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
r22567 r22581 82 82 { 83 83 84 $objDb = new SC_Helper_DB_Ex(); 84 $objNews = new SC_Helper_News_Ex(); 85 85 86 $objFormParam = new SC_FormParam_Ex(); 86 87 $this->lfInitParam($objFormParam); 87 88 $objFormParam->setParam($_POST); 88 89 $objFormParam->convParam(); 90 89 91 $news_id = $objFormParam->getValue('news_id'); 90 92 91 93 //---- 新規登録/編集登録 92 94 switch ($this->getMode()) { 93 case 'regist': 94 $arrPost = $objFormParam->getHashArray(); 95 case 'edit': 95 96 $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('登録が完了しました。');"; 107 111 } 108 $news_id = '';109 $this->tpl_onload = "window.alert('編集が完了しました');";110 } else {111 $this->arrForm = $arrPost;112 112 } 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 121 126 case 'delete': 122 127 //---- データ削除 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 131 133 //---- 表示順位移動 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 143 148 case 'moveRankSet': 144 149 //---- 指定表示順位移動 145 150 $input_pos = $this->getPostRank($news_id); 146 151 if (SC_Utils_Ex::sfIsInt($input_pos)) { 147 $obj Db->sfMoveRank('dtb_news', 'news_id',$news_id, $input_pos);152 $objNews->moveRank($news_id, $input_pos); 148 153 } 149 $this->objDisplay->reload(); 150 break; 154 SC_Response_Ex::reload(); 155 break; 156 151 157 default: 152 158 break; 153 159 } 154 160 155 $this->arrNews = $this->getNews(); 156 $this->tpl_news_id = $news_id; 161 $this->arrNews = $objNews->getList(); 157 162 $this->line_max = count($this->arrNews); 158 $this->max_rank = $this->getRankMax(); 159 163 164 $this->arrForm = $objFormParam->getFormParamList(); 160 165 } 161 166 … … 197 202 $objFormParam->addParam('本文', 'news_comment', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 198 203 $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 { 218 216 $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); 247 222 } 248 223 … … 272 247 273 248 /** 274 * ニュース記事を取得する。275 * @param Integer news_id ニュースID276 */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_id297 */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_id312 * @param Integer $rank313 */314 function computeRankForDelete($news_id,$rank)315 {316 SC_Helper_DB_Ex::sfDeleteRankRecord('dtb_news', 'news_id', $news_id);317 }318 319 /**320 249 * ニュースの日付の値をフロントでの表示形式に合わせるために分割 321 250 * @param String $news_date … … 324 253 { 325 254 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'];340 255 } 341 256
Note: See TracChangeset
for help on using the changeset viewer.