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

Revision 1328, 8.1 KB checked in by naka, 20 years ago (diff)

* empty log message *

  • 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 *, EXTRACT(EPOCH FROM news_date) AS news_date_unix 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    $objPage->selected_year = date("Y", $result[0]["news_date_unix"]);     
96    $objPage->selected_month = date("m", $result[0]["news_date_unix"]);
97    $objPage->selected_day = date("d", $result[0]["news_date_unix"]);
98    $objPage->edit_mode = "on";
99}
100
101//----¡¡¥Ç¡¼¥¿ºï½ü
102if ( $_POST['mode'] == 'delete' && is_numeric($_POST["news_id"])) {
103
104    //-- ºï½ü¤¹¤ë¿·Ãå¾ðÊó°Ê¹ß¤Îrank¤ò1¤Ä·«¤ê¾å¤²¤Æ¤ª¤¯
105    $conn->query("BEGIN");
106    $sql = "UPDATE dtb_news SET rank = rank - 1, update_date = NOW() WHERE delete = 0 AND rank > ( SELECT rank FROM dtb_news WHERE delete = 0 AND news_id = ? )";
107    $conn->query( $sql, array( $_POST['news_id']  ) );
108
109    $sql = "UPDATE dtb_news SET rank = 0, delete = 1, update_date = NOW() WHERE news_id = ?";
110    $conn->query( $sql, array( $_POST['news_id'] ) );
111    $conn->query("COMMIT");
112
113    sfReload();             //¼«Ê¬¤Ë¥ê¥À¥¤¥ì¥¯¥È¡ÊºÆÆÉ¹þ¤Ë¤è¤ë¸íưºîËɻߡË
114}
115
116//----¡¡É½¼¨½ç°Ì°Üư
117
118if ( $_POST['mode'] == 'move' && is_numeric($_POST["news_id"]) ) {
119    if ($_POST["term"] == "up") {
120        sfRankUp("dtb_news", "news_id", $_POST["news_id"]);
121    } else if ($_POST["term"] == "down") {
122        sfRankDown("dtb_news", "news_id", $_POST["news_id"]);   
123    }
124    //sf_rebuildIndex($conn);
125    sfReload();
126}
127
128//----¡¡»ØÄêɽ¼¨½ç°Ì°Üư
129if ($_POST['mode'] == 'moveRankSet') {
130    $key = "pos-".$_POST['news_id'];
131    $input_pos = mb_convert_kana($_POST[$key], "n");
132    if(sfIsInt($input_pos)) {
133        sfMoveRank("dtb_news", "news_id", $_POST['news_id'], $input_pos);
134        sfReload();
135    }
136}
137
138
139//---- Á´¥Ç¡¼¥¿¼èÆÀ
140$sql = "SELECT *, EXTRACT(EPOCH FROM news_date) as news_date_unix FROM dtb_news WHERE delete = '0' ORDER BY rank DESC";
141$objPage->list_data = $conn->getAll($sql);
142$objPage->line_max = count($objPage->list_data);
143$sql = "SELECT MAX(rank) FROM dtb_news WHERE delete = '0'";     // rank¤ÎºÇÂçÃͤò¼èÆÀ
144$objPage->max_rank = $conn->getOne($sql);
145
146$objPage->arrForm['news_select'] = 0;
147
148//----¡¡¥Ú¡¼¥¸É½¼¨
149$objView->assignobj($objPage);
150$objView->display(MAIN_FRAME);
151
152
153//function ---------------------------------------------------------------------------------------------
154
155//---- ÆþÎÏʸ»úÎó¤òÇÛÎó¤Ø
156function lfConvData( $data ){
157   
158     // ʸ»úÎó¤ÎÊÑ´¹¡Êmb_convert_kana¤ÎÊÑ´¹¥ª¥×¥·¥ç¥ó¡Ë                         
159    $arrFlag = array(
160                      "year" => "n"
161                     ,"month" => "n"
162                     ,"day" => "n"
163                     ,"url" => "a"
164                     ,"news_title" => "aKV"
165                     ,"link_method" => "n"
166                    );
167       
168    if ( is_array($data) ){
169        foreach ($arrFlag as $key=>$line) {
170            $data[$key] = mb_convert_kana($data[$key], $line);
171        }
172    }
173
174    return $data;
175}
176
177//----¡¡»ØÄê½ç°Ì¤Ø°Üư
178function sf_setRankPosition($conn, $tableName, $keyIdColumn, $keyId, $position) {
179
180    // ¼«¿È¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë
181    $conn->query("BEGIN");
182    $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId));
183
184    if( $position > $rank ) $term = "- 1";  //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤êÂ礭¤¤¾ì¹ç
185    if( $position < $rank ) $term = "+ 1";  //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤ê¾®¤µ¤¤¾ì¹ç
186
187    //--¡¡»ØÄꤷ¤¿½ç°Ì¤Î¾¦Éʤ«¤é°Üư¤µ¤»¤ë¾¦ÉʤޤǤÎrank¤ò£±¤Ä¤º¤é¤¹
188    $sql = "UPDATE $tableName SET rank = rank $term, update_date = NOW() WHERE rank BETWEEN ? AND ? AND delete = 0";
189    if( $position > $rank ) $conn->query( $sql, array( $rank + 1, $position ) );
190    if( $position < $rank ) $conn->query( $sql, array( $position, $rank - 1 ) );
191
192    //-- »ØÄꤷ¤¿½ç°Ì¤Ørank¤ò½ñ¤­´¹¤¨¤ë¡£
193    $sql  = "UPDATE $tableName SET rank = ?, update_date = NOW() WHERE $keyIdColumn = ? AND delete = 0 ";
194    $conn->query( $sql, array( $position, $keyId ) );
195    $conn->query("COMMIT");
196}
197
198//---- ÆþÎÏ¥¨¥é¡¼¥Á¥§¥Ã¥¯¡Ê½ç°Ì°ÜưÍÑ¡Ë
199function sf_errorCheckPosition($conn, $tableName, $position, $keyIdColumn, $keyId) {
200
201    $objErr = new SC_CheckError();
202    $objErr->doFunc( array("°Üư½ç°Ì", "moveposition", 4 ), array( "ZERO_CHECK", "NUM_CHECK", "EXIST_CHECK", "MAX_LENGTH_CHECK" ) );
203
204    // ¼«¿È¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë¡£
205    $rank = $conn->getOne("SELECT rank FROM $tableName WHERE $keyIdColumn = ?", array($keyId));
206    if ($rank == $position ) $objErr->arrErr["moveposition"] .= "¢¨ »ØÄꤷ¤¿°Üư½ç°Ì¤Ï¸½ºß¤Î½ç°Ì¤Ç¤¹¡£";
207   
208    // rank¤ÎºÇÂçÃͰʾå¤ÎÆþÎϤòµöÍÆ¤·¤Ê¤¤                                           
209    if( ! $objErr->arrErr["position"] ) {                               
210        $sql = "SELECT MAX( rank ) FROM " .$tableName. " WHERE delete = 0";
211        $result = $conn->getOne($sql);
212        if( $position > $result ) $objErr->arrErr["moveposition"] .= "¢¨ ÆþÎϤµ¤ì¤¿½ç°Ì¤Ï¡¢ÅÐÏ¿¿ô¤ÎºÇÂçÃͤòͤ¨¤Æ¤¤¤Þ¤¹¡£";
213    }
214
215    return $objErr->arrErr;
216}
217
218//---- ÆþÎÏ¥¨¥é¡¼¥Á¥§¥Ã¥¯
219function lfErrorCheck(){
220
221    $objErr = new SC_CheckError();
222
223    $objErr->doFunc(array("ÆüÉÕ(ǯ)", "year"), array("EXIST_CHECK"));
224    $objErr->doFunc(array("ÆüÉÕ(·î)", "month"), array("EXIST_CHECK"));
225    $objErr->doFunc(array("ÆüÉÕ(Æü)", "day"), array("EXIST_CHECK"));
226    $objErr->doFunc(array("ÆüÉÕ", "year", "month", "day"), array("CHECK_DATE"));
227    $objErr->doFunc(array("¥¿¥¤¥È¥ë", 'news_title', MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
228    $objErr->doFunc(array("ËÜʸ", 'url', URL_LEN), array("MAX_LENGTH_CHECK"));
229    $objErr->doFunc(array("ËÜʸ", 'news_comment', LTEXT_LEN), array("MAX_LENGTH_CHECK"));
230
231    return $objErr->arrErr;
232}
233
234//INSERTʸ
235function lfNewsInsert(){
236    global $conn;
237    global $registDate;
238   
239    if ($_POST["link_method"] == "") {
240        $_POST["link_method"] = 1;
241    }
242
243    $sql = "INSERT INTO dtb_news (news_date, news_title, creator_id, news_url, link_method, news_comment, rank)
244            VALUES ( ?,?,?,?,?,? , (SELECT MAX(rank) + 1 FROM dtb_news WHERE delete = '0'))";
245    $arrRegist = array($registDate, $_POST["news_title"], $_SESSION['member_id'],  $_POST["news_url"], $_POST["link_method"], $_POST["news_comment"]);
246
247    $conn->query($sql, $arrRegist);
248   
249    // ºÇ½é¤Î1·ïÌܤÎÅÐÏ¿¤Ïrank¤ËNULL¤¬Æþ¤ë¤Î¤ÇÂкö
250    $sql = "UPDATE dtb_news SET rank = 1 WHERE delete = 0 AND rank IS NULL";
251    $conn->query($sql);
252}
253
254//UPDATEʸ
255function lfNewsUpdate(){
256    global $conn;
257    global $registDate;
258   
259    if ($_POST["link_method"] == "") {
260        $_POST["link_method"] = 1;
261    }   
262
263    $sql = "UPDATE dtb_news SET news_date = ?, news_title = ?, creator_id = ?, update_date = NOW(),  news_url = ?, link_method = ?, news_comment = ? WHERE news_id = ?";
264    $arrRegist = array($registDate, $_POST['news_title'], $_SESSION['member_id'], $_POST['news_url'], $_POST["link_method"], $_POST['news_comment'], $_POST['news_id']);
265       
266    $conn->query($sql, $arrRegist);
267}
268?>
Note: See TracBrowser for help on using the repository browser.