source: temp/trunk/html/admin/contents/index.php @ 4746

Revision 4746, 8.3 KB checked in by kakinaka, 20 years ago (diff)

blank

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?php
2
3require_once("../require.php");
4
5//---- ǧ¾Ú²ÄÈݤÎȽÄê
6$objSess = new SC_Session();
7sfIsSuccess($objSess);
8
9//---- ¥Ú¡¼¥¸É½¼¨¥¯¥é¥¹
10class LC_Page {
11   
12    var $arrSession;
13    var $tpl_mainpage;
14    var $sub_navipage;
15    var $regist_data;
16    var $arrYear;
17    var $arrMonth;
18    var $arrDate;
19    var $selected_year;
20    var $selected_month;
21    var $selected_day;
22    var $list_data;
23    var $max_rank;
24    var $edit_mode;
25    var $news_title;
26    var $news_date_unix;
27    var $news_url;
28    var $link_method;
29   
30    function LC_Page() {
31        $this->tpl_mainpage = 'contents/index.tpl';
32        $this->tpl_subnavi = 'contents/subnavi.tpl';
33        $this->tpl_subno = "index";
34        $this->tpl_mainno = 'contents';
35        $this->selected_year = date("Y");
36        $this->selected_month = date("n");
37        $this->selected_day = date("j");
38        $this->tpl_subtitle = '¿·Ãå¾ðÊó´ÉÍý';
39    }
40}
41
42
43//---- ¥Ú¡¼¥¸½é´üÀßÄê
44$conn = new SC_DbConn();
45$objPage = new LC_Page();
46$objView = new SC_AdminView();
47$objDate = new SC_Date(ADMIN_NEWS_STARTYEAR);
48
49//----¡¡ÆüÉÕ¥×¥ë¥À¥¦¥óÀßÄê
50$objPage->arrYear = $objDate->getYear();
51$objPage->arrMonth = $objDate->getMonth();
52$objPage->arrDay = $objDate->getDay();
53
54//----¡¡¿·µ¬ÅÐÏ¿/ÊÔ½¸ÅÐÏ¿
55if ( $_POST['mode'] == 'regist'){
56    $_POST = lfConvData($_POST);
57
58    if ($objPage->arrErr = lfErrorCheck()) {        // ÆþÎÏ¥¨¥é¡¼¤Î¥Á¥§¥Ã¥¯
59        foreach($_POST as $key => $val) {
60            $objPage->$key = $val;
61        }
62        $objPage->selected_year = $_POST["year"];
63        $objPage->selected_month = $_POST["month"];
64        $objPage->selected_day = $_POST["day"];
65
66    } else {
67       
68        if (isset($_POST['link_method']) == ""){
69            $_POST['link_method'] = 1;
70        }
71       
72        $registDate = $_POST['year'] ."/". $_POST['month'] ."/". $_POST['day'];
73
74        //-- ÊÔ½¸ÅÐÏ¿
75        if (strlen($_POST["news_id"]) > 0 && is_numeric($_POST["news_id"])) {
76
77            lfNewsUpdate();
78
79        //--¡¡¿·µ¬ÅÐÏ¿
80        } else {
81            lfNewsInsert();
82        }
83
84        $objPage->tpl_onload = "window.alert('ÊÔ½¸¤¬´°Î»¤·¤Þ¤·¤¿');";
85    }
86}
87
88//----¡¡ÊÔ½¸¥Ç¡¼¥¿¼èÆÀ
89if ($_POST["mode"] == "search" && is_numeric($_POST["news_id"])) {
90    $sql = "SELECT *, cast(substring(news_date,1, 10) as date) as cast_news_date FROM dtb_news WHERE news_id = ? ";
91    $result = $conn->getAll($sql, array($_POST["news_id"]));
92    foreach($result[0] as $key => $val ){
93        $objPage->$key = $val;
94    }
95    $arrData = split("-",$result[0]["cast_news_date"]);
96   
97    sfprintr($arrData);
98
99    $objPage->selected_year = $arrData[0];
100    $objPage->selected_month =$arrData[1];
101    $objPage->selected_day =  $arrData[2];
102
103    $objPage->edit_mode = "on";
104}
105
106//----¡¡¥Ç¡¼¥¿ºï½ü
107if ( $_POST['mode'] == 'delete' && is_numeric($_POST["news_id"])) {
108
109    //-- ºï½ü¤¹¤ë¿·Ãå¾ðÊó°Ê¹ß¤Îrank¤ò1¤Ä·«¤ê¾å¤²¤Æ¤ª¤¯
110    $conn->query("BEGIN");
111    $sql = "UPDATE dtb_news SET rank = rank - 1, update_date = NOW() WHERE del_flg = 0 AND rank > ( SELECT rank FROM dtb_news WHERE del_flg = 0 AND news_id = ? )";
112    $conn->query( $sql, array( $_POST['news_id']  ) );
113
114    $sql = "UPDATE dtb_news SET rank = 0, del_flg = 1, update_date = NOW() WHERE news_id = ?";
115    $conn->query( $sql, array( $_POST['news_id'] ) );
116    $conn->query("COMMIT");
117
118    sfReload();             //¼«Ê¬¤Ë¥ê¥À¥¤¥ì¥¯¥È¡ÊºÆÆÉ¹þ¤Ë¤è¤ë¸íưºîËɻߡË
119}
120
121//----¡¡É½¼¨½ç°Ì°Üư
122
123if ( $_POST['mode'] == 'move' && is_numeric($_POST["news_id"]) ) {
124    if ($_POST["term"] == "up") {
125        sfRankUp("dtb_news", "news_id", $_POST["news_id"]);
126    } else if ($_POST["term"] == "down") {
127        sfRankDown("dtb_news", "news_id", $_POST["news_id"]);   
128    }
129    //sf_rebuildIndex($conn);
130    sfReload();
131}
132
133//----¡¡»ØÄêɽ¼¨½ç°Ì°Üư
134if ($_POST['mode'] == 'moveRankSet') {
135    $key = "pos-".$_POST['news_id'];
136    $input_pos = mb_convert_kana($_POST[$key], "n");
137    if(sfIsInt($input_pos)) {
138        sfMoveRank("dtb_news", "news_id", $_POST['news_id'], $input_pos);
139        sfReload();
140    }
141}
142
143
144//---- Á´¥Ç¡¼¥¿¼èÆÀ
145//$sql = "SELECT *, EXTRACT(EPOCH FROM news_date) as news_date_unix FROM dtb_news WHERE del_flg = '0' ORDER BY rank DESC";
146$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";
147$objPage->list_data = $conn->getAll($sql);
148$objPage->line_max = count($objPage->list_data);
149$sql = "SELECT MAX(rank) FROM dtb_news WHERE del_flg = '0'";        // rank¤ÎºÇÂçÃͤò¼èÆÀ
150$objPage->max_rank = $conn->getOne($sql);
151
152$objPage->arrForm['news_select'] = 0;
153
154//----¡¡¥Ú¡¼¥¸É½¼¨
155$objView->assignobj($objPage);
156$objView->display(MAIN_FRAME);
157
158
159//function ---------------------------------------------------------------------------------------------
160
161//---- ÆþÎÏʸ»úÎó¤òÇÛÎó¤Ø
162function lfConvData( $data ){
163   
164     // ʸ»úÎó¤ÎÊÑ´¹¡Êmb_convert_kana¤ÎÊÑ´¹¥ª¥×¥·¥ç¥ó¡Ë                         
165    $arrFlag = array(
166                      "year" => "n"
167                     ,"month" => "n"
168                     ,"day" => "n"
169                     ,"url" => "a"
170                     ,"news_title" => "aKV"
171                     ,"news_comment" => "aKV"
172                     ,"link_method" => "n"
173                    );
174       
175    if ( is_array($data) ){
176        foreach ($arrFlag as $key=>$line) {
177            $data[$key] = mb_convert_kana($data[$key], $line);
178        }
179    }
180
181    return $data;
182}
183
184//----¡¡»ØÄê½ç°Ì¤Ø°Üư
185function sf_setRankPosition($conn, $tableName, $keyIdColumn, $keyId, $position) {
186
187    // ¼«¿È¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë
188    $conn->query("BEGIN");
189    $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId));
190
191    if( $position > $rank ) $term = "- 1";  //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤êÂ礭¤¤¾ì¹ç
192    if( $position < $rank ) $term = "+ 1";  //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤ê¾®¤µ¤¤¾ì¹ç
193
194    //--¡¡»ØÄꤷ¤¿½ç°Ì¤Î¾¦Éʤ«¤é°Üư¤µ¤»¤ë¾¦ÉʤޤǤÎrank¤ò£±¤Ä¤º¤é¤¹
195    $sql = "UPDATE $tableName SET rank = rank $term, update_date = NOW() WHERE rank BETWEEN ? AND ? AND del_flg = 0";
196    if( $position > $rank ) $conn->query( $sql, array( $rank + 1, $position ) );
197    if( $position < $rank ) $conn->query( $sql, array( $position, $rank - 1 ) );
198
199    //-- »ØÄꤷ¤¿½ç°Ì¤Ørank¤ò½ñ¤­´¹¤¨¤ë¡£
200    $sql  = "UPDATE $tableName SET rank = ?, update_date = NOW() WHERE $keyIdColumn = ? AND del_flg = 0 ";
201    $conn->query( $sql, array( $position, $keyId ) );
202    $conn->query("COMMIT");
203}
204
205//---- ÆþÎÏ¥¨¥é¡¼¥Á¥§¥Ã¥¯¡Ê½ç°Ì°ÜưÍÑ¡Ë
206function sf_errorCheckPosition($conn, $tableName, $position, $keyIdColumn, $keyId) {
207
208    $objErr = new SC_CheckError();
209    $objErr->doFunc( array("°Üư½ç°Ì", "moveposition", 4 ), array( "ZERO_CHECK", "NUM_CHECK", "EXIST_CHECK", "MAX_LENGTH_CHECK" ) );
210
211    // ¼«¿È¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë¡£
212    $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId));
213    if ($rank == $position ) $objErr->arrErr["moveposition"] .= "¢¨ »ØÄꤷ¤¿°Üư½ç°Ì¤Ï¸½ºß¤Î½ç°Ì¤Ç¤¹¡£";
214   
215    // rank¤ÎºÇÂçÃͰʾå¤ÎÆþÎϤòµöÍÆ¤·¤Ê¤¤                                           
216    if( ! $objErr->arrErr["position"] ) {                               
217        $sql = "SELECT MAX( rank ) FROM " .$tableName. " WHERE del_flg = 0";
218        $result = $conn->getOne($sql);
219        if( $position > $result ) $objErr->arrErr["moveposition"] .= "¢¨ ÆþÎϤµ¤ì¤¿½ç°Ì¤Ï¡¢ÅÐÏ¿¿ô¤ÎºÇÂçÃͤòͤ¨¤Æ¤¤¤Þ¤¹¡£";
220    }
221
222    return $objErr->arrErr;
223}
224
225//---- ÆþÎÏ¥¨¥é¡¼¥Á¥§¥Ã¥¯
226function lfErrorCheck(){
227
228    $objErr = new SC_CheckError();
229
230    $objErr->doFunc(array("ÆüÉÕ(ǯ)", "year"), array("EXIST_CHECK"));
231    $objErr->doFunc(array("ÆüÉÕ(·î)", "month"), array("EXIST_CHECK"));
232    $objErr->doFunc(array("ÆüÉÕ(Æü)", "day"), array("EXIST_CHECK"));
233    $objErr->doFunc(array("ÆüÉÕ", "year", "month", "day"), array("CHECK_DATE"));
234    $objErr->doFunc(array("¥¿¥¤¥È¥ë", 'news_title', MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
235    $objErr->doFunc(array("ËÜʸ", 'url', URL_LEN), array("MAX_LENGTH_CHECK"));
236    $objErr->doFunc(array("ËÜʸ", 'news_comment', LTEXT_LEN), array("MAX_LENGTH_CHECK"));
237
238    return $objErr->arrErr;
239}
240
241//INSERTʸ
242function lfNewsInsert(){
243    global $conn;
244    global $registDate;
245   
246    if ($_POST["link_method"] == "") {
247        $_POST["link_method"] = 1;
248    }
249
250    $sql = "INSERT INTO dtb_news (news_date, news_title, creator_id, news_url, link_method, news_comment, rank)
251            VALUES ( ?,?,?,?,?,? , (SELECT MAX(rank) + 1 FROM dtb_news WHERE del_flg = '0'))";
252    $arrRegist = array($registDate, $_POST["news_title"], $_SESSION['member_id'],  $_POST["news_url"], $_POST["link_method"], $_POST["news_comment"]);
253
254    $conn->query($sql, $arrRegist);
255   
256    // ºÇ½é¤Î1·ïÌܤÎÅÐÏ¿¤Ïrank¤ËNULL¤¬Æþ¤ë¤Î¤ÇÂкö
257    $sql = "UPDATE dtb_news SET rank = 1 WHERE del_flg = 0 AND rank IS NULL";
258    $conn->query($sql);
259}
260
261//UPDATEʸ
262function lfNewsUpdate(){
263    global $conn;
264    global $registDate;
265   
266    if ($_POST["link_method"] == "") {
267        $_POST["link_method"] = 1;
268    }   
269
270    $sql = "UPDATE dtb_news SET news_date = ?, news_title = ?, creator_id = ?, update_date = NOW(),  news_url = ?, link_method = ?, news_comment = ? WHERE news_id = ?";
271    $arrRegist = array($registDate, $_POST['news_title'], $_SESSION['member_id'], $_POST['news_url'], $_POST["link_method"], $_POST['news_comment'], $_POST['news_id']);
272       
273    $conn->query($sql, $arrRegist);
274}
275?>
Note: See TracBrowser for help on using the repository browser.