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

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