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

Revision 1328, 11.4 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");
4require_once(ROOT_DIR."data/include/csv_output.inc");
5
6class LC_Page {
7    var $arrForm;
8    var $arrHidden;
9
10    function LC_Page() {
11        $this->tpl_mainpage = 'contents/csv_sql.tpl';
12        $this->tpl_subnavi = 'contents/subnavi.tpl';
13        $this->tpl_subno = 'csv';
14        $this->tpl_subno_csv = 'csv_sql';
15        $this->tpl_mainno = "contents";
16        $this->tpl_subtitle = 'CSV½ÐÎÏÀßÄê';
17    }
18}
19
20$objPage = new LC_Page();
21$objView = new SC_AdminView();
22
23$objPage->arrSubnavi = $arrSubnavi;
24$objPage->arrSubnaviName = $arrSubnaviName;
25
26// ǧ¾Ú²ÄÈݤÎȽÄê
27$objSess = new SC_Session();
28sfIsSuccess($objSess);
29
30// SQL_ID¤Î¼èÆÀ
31if ($_POST['sql_id'] != "") {
32    $sql_id = $_POST['sql_id'];
33}elseif($_GET['sql_id'] != ""){
34    $sql_id = $_GET['sql_id'];
35}else{
36    $sql_id = "";
37}
38
39$mode = $_POST['mode'];
40
41switch($_POST['mode']) {
42    // ¥Ç¡¼¥¿¤ÎÅÐÏ¿
43    case "confirm":
44        //$code = mb_internal_encoding();
45        //sfprintr($code);
46
47        // ¥¨¥é¡¼¥Á¥§¥Ã¥¯
48        $objPage->arrErr = lfCheckError($_POST);
49       
50        if (count($objPage->arrErr) <= 0){
51            // ¥Ç¡¼¥¿¤Î¹¹¿·
52            $sql_id = lfUpdData($sql_id, $_POST);
53            // ´°Î»¥á¥Ã¥»¡¼¥¸É½¼¨
54            $objPage->tpl_onload = "alert('ÅÐÏ¿¤¬´°Î»¤·¤Þ¤·¤¿¡£');";
55        }
56        break;
57   
58    // ³Îǧ²èÌÌ
59    case "preview":
60        // SQLʸɽ¼¨
61        $sql = "SELECT \n" . $_POST['sql'];
62        $objPage->sql = $sql;
63       
64        // ¥¨¥é¡¼É½¼¨
65        $objErrMsg = lfCheckSQL($_POST);
66        if ($errMsg != "") {
67            $errMsg = $objErrMsg->message . "\n" . $objErrMsg->userinfo;
68        }
69        $objPage->sqlerr = $errMsg;
70
71        $objPage->objView = $objView;
72       
73        // ²èÌ̤Îɽ¼¨
74        $objView->assignobj($objPage);
75        $objView->display('contents/csv_sql_view.tpl');
76        exit;
77        break;
78
79    // ¿·µ¬ºîÀ®
80    case "new_page":
81        header("location: ./csv_sql.php");
82        break;
83       
84    // ¥Ç¡¼¥¿ºï½ü
85    case "delete":
86        lfDelData($sql_id);
87        header("location: ./csv_sql.php");
88        break;
89       
90    case "csv_output":
91        // CSV½ÐÎϥǡ¼¥¿¼èÆÀ
92        $arrCsvData = lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));
93       
94        $objQuery = new SC_Query();
95        $arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['sql']);
96       
97        if (count($arrCsvOutputData) > 0) {
98           
99            $arrKey = array_keys(sfSwapArray($arrCsvOutputData));
100            foreach($arrKey as $data) {
101                if ($i != 0) $header .= ", ";
102                $header .= $data;
103                $i ++;
104            }
105            $header .= "\n";
106
107            $data = lfGetCSVData($arrCsvOutputData, $arrKey);
108            // CSV½ÐÎÏ
109            sfCSVDownload($header.$data);
110            exit;
111        break;
112        }else{
113            $objPage->tpl_onload = "alert('½ÐÎϥǡ¼¥¿¤¬¤¢¤ê¤Þ¤»¤ó¡£');";
114            $sql_id = "";
115            $_POST="";
116        }
117        break;
118}
119
120// mode ¤¬ confirm °Ê³°¤Î¤È¤­¤Ï´°Î»¥á¥Ã¥»¡¼¥¸¤Ï½ÐÎϤ·¤Ê¤¤
121if ($mode != "confirm" and $mode != "csv_output") {
122    $objPage->tpl_onload = "";
123}
124
125// ÅÐÏ¿ºÑ¤ßSQL°ìÍ÷¼èÆÀ
126$arrSqlList = lfGetSqlList();
127
128// ÊÔ½¸ÍÑSQL¥Ç¡¼¥¿¤Î¼èÆÀ
129if ($sql_id != "") {
130    $arrSqlData = lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
131}
132
133// ¥Æ¡¼¥Ö¥ë°ìÍ÷¤ò¼èÆÀ¤¹¤ë
134$arrTableList = lfGetTableList();
135$arrTableList = sfSwapArray($arrTableList);
136
137// ¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¥Æ¡¼¥Ö¥ë¤ò¼èÆÀ¤¹¤ë
138if ($_POST['selectTable'] == ""){
139    $selectTable = $arrTableList['relname'][0];
140}else{
141    $selectTable = $_POST['selectTable'];
142}
143
144// ¥«¥é¥à°ìÍ÷¤ò¼èÆÀ¤¹¤ë
145$arrColList = lfGetColumnList($selectTable);
146$arrColList =  sfSwapArray($arrColList);
147
148// ¥Æ¥ó¥×¥ì¡¼¥È¤Ë½ÐÎϤ¹¤ë¥Ç¡¼¥¿¤ò¥»¥Ã¥È
149$objPage->arrSqlList = $arrSqlList;                                                             // SQL°ìÍ÷
150$objPage->arrTableList = sfarrCombine($arrTableList['relname'], $arrTableList['description']);  // ¥Æ¡¼¥Ö¥ë°ìÍ÷
151$objPage->arrColList = sfarrCombine($arrColList['attname'],$arrColList['description']);         // ¥«¥é¥à°ìÍ÷
152$objPage->selectTable = $selectTable;                                                           // ÁªÂò¤µ¤ì¤Æ¤¤¤ë¥Æ¡¼¥Ö¥ë
153$objPage->sql_id = $sql_id;                                                                     // ÁªÂò¤µ¤ì¤Æ¤¤¤ëSQL
154
155// POST¤µ¤ì¤¿¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤¹¤ë
156if (count($_POST) > 0) {
157    $arrSqlData[0]['name'] = $_POST['name'];
158    $arrSqlData[0]['sql'] = $_POST['sql'];
159}
160$objPage->arrSqlData = $arrSqlData[0];                                                          // ÁªÂò¤µ¤ì¤Æ¤¤¤ëSQL¥Ç¡¼¥¿
161
162// ²èÌ̤Îɽ¼¨
163$objView->assignobj($objPage);
164$objView->display(MAIN_FRAME);
165
166//---------------------------------------------------------------------------------------------------------------------------------------------------------
167/**************************************************************************************************************
168 * ´Ø¿ô̾   ¡§lfGetTableList
169 * ½èÍýÆâÍÆ ¡§¥Æ¡¼¥Ö¥ë°ìÍ÷¤ò¼èÆÀ¤¹¤ë
170 * °ú¿ô     ¡§¤Ê¤·
171 * Ìá¤êÃÍ ¡¡¡§¼èÆÀ·ë²Ì
172 **************************************************************************************************************/
173function lfGetTableList(){
174    $objQuery = new SC_Query();
175    $arrRet = array();      // ·ë²Ì¼èÆÀÍÑ
176   
177    $sql = "";
178    $sql .= " SELECT";
179    $sql .= "     c.relname ,";
180    $sql .= "     c.relname || ':' ||obj_description(c.oid) as description";
181    $sql .= " FROM";
182    $sql .= "     pg_class c,";
183    $sql .= "     pg_user u";
184    $sql .= " WHERE";
185    $sql .= "     c.relowner = u.usesysid AND";
186    $sql .= "     relname IN (SELECT";
187    $sql .= "                     tablename";
188    $sql .= "                 FROM";
189    $sql .= "                     pg_tables";
190    $sql .= "                 WHERE";
191    $sql .= "                     tableowner=? ";
192    $sql .= "                 )";
193    $sql .= " ORDER BY c.relname ";
194    $arrRet = $objQuery->getAll($sql, array(DB_USER));
195   
196    return $arrRet;
197}
198
199
200/**************************************************************************************************************
201 * ´Ø¿ô̾   ¡§lfGetColunmList
202 * ½èÍýÆâÍÆ ¡§¥Æ¡¼¥Ö¥ë¤Î¥«¥é¥à°ìÍ÷¤ò¼èÆÀ¤¹¤ë
203 * °ú¿ô     ¡§$selectTable¡§¥Æ¡¼¥Ö¥ë̾¾Î
204 * Ìá¤êÃÍ ¡¡¡§¼èÆÀ·ë²Ì
205 **************************************************************************************************************/
206function lfGetColumnList($selectTable){
207    $objQuery = new SC_Query();
208    $arrRet = array();      // ·ë²Ì¼èÆÀÍÑ
209   
210    $sql = "";
211    $sql .= " SELECT";
212    $sql .= "     a.attname,";
213    $sql .= "     a.attnum as fldnum, ";
214    $sql .= "     (select case count(description) when 0 then a.attname else (select a.attname || ':' || description from pg_description where a.attrelid=objoid and a.attnum=objsubid ) end from pg_description where a.attrelid=objoid and a.attnum=objsubid ) as description ";
215    $sql .= " FROM";
216    $sql .= "     pg_class c,";
217    $sql .= "         pg_attribute a left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid) ";
218    $sql .= " ";
219    $sql .= " WHERE";
220    $sql .= "     (c.relname=?) AND";
221    $sql .= "     (c.oid=a.attrelid) AND";
222    $sql .= "     a.attnum > 0";
223    $sql .= " ORDER BY";
224    $sql .= "     fldnum";
225    $sql .= " ";
226    $arrRet = $objQuery->getAll($sql, array($selectTable));
227
228    return $arrRet;
229   
230}
231
232/**************************************************************************************************************
233 * ´Ø¿ô̾   ¡§lfGetSqlList
234 * ½èÍýÆâÍÆ ¡§ÅÐÏ¿ºÑ¤ßSQL°ìÍ÷¤ò¼èÆÀ¤¹¤ë
235 * °ú¿ô1    ¡§$where¡§Where¶ç
236 * °ú¿ô2    ¡§$arrData¡§¹Ê¤ê¹þ¤ß¥Ç¡¼¥¿
237 * Ìá¤êÃÍ ¡¡¡§¼èÆÀ·ë²Ì
238 **************************************************************************************************************/
239function lfGetSqlList($where = "" , $arrData = array()){
240    $objQuery = new SC_Query();
241    $arrRet = array();      // ·ë²Ì¼èÆÀÍÑ
242   
243    $sql = "";
244    $sql .= " SELECT";
245    $sql .= "     sql_id,";
246    $sql .= "     name,";
247    $sql .= "     sql,";
248    $sql .= "     update_date,";
249    $sql .= "     create_date";
250    $sql .= " FROM";
251    $sql .= "     dtb_csv_sql";
252   
253    // Where¶ç¤Î»ØÄ꤬¤¢¤ì¤Ð·ë¹ç¤¹¤ë
254    if ($where != "") {
255        $sql .= " $where ";
256    }else{
257        $sql .= " ORDER BY sql_id ";
258    }
259    $sql .= " ";
260
261    // ¥Ç¡¼¥¿¤ò°ú¿ô¤ÇÅϤµ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¥»¥Ã¥È¤¹¤ë
262    if (count($arrData) > 0) {
263        $arrRet = $objQuery->getall($sql, $arrData);
264    }else{
265        $arrRet = $objQuery->getall($sql);
266    }
267
268    return $arrRet;
269   
270}
271
272/**************************************************************************************************************
273 * ´Ø¿ô̾   ¡§lfUpdCsvOutput
274 * ½èÍýÆâÍÆ ¡§ÆþÎϹàÌܤΥ¨¥é¡¼¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
275 * °ú¿ô     ¡§POST¥Ç¡¼¥¿
276 * ÌáÃÍ     ¡§¥¨¥é¡¼ÆâÍÆ
277 **************************************************************************************************************/
278function lfCheckError($data){
279    $objErr = new SC_CheckError();
280    $objErr->doFunc( array("̾¾Î", "name"), array("EXIST_CHECK") );
281    $objErr->doFunc( array("SQLʸ", "sql"), array("EXIST_CHECK") );
282   
283    // SQL¤ÎÂÅÅöÀ­¥Á¥§¥Ã¥¯
284    if ($objErr->arrErr['sql'] == "") {
285        $objsqlErr = lfCheckSQL($data);
286        if ($objsqlErr != "") {
287            $objErr->arrErr["sql"] = "SQLʸ¤¬ÉÔÀµ¤Ç¤¹¡£SQLʸ¤ò¸«Ä¾¤·¤Æ¤¯¤À¤µ¤¤";
288        }
289    }
290   
291    return $objErr->arrErr;
292
293}
294
295/**************************************************************************************************************
296 * ´Ø¿ô̾   ¡§lfCheckSQL
297 * ½èÍýÆâÍÆ ¡§ÆþÎϤµ¤ì¤¿SQLʸ¤¬Àµ¤·¤¤¤«¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
298 * °ú¿ô     ¡§POST¥Ç¡¼¥¿
299 * ÌáÃÍ     ¡§¥¨¥é¡¼ÆâÍÆ
300 **************************************************************************************************************/
301function lfCheckSQL($data){
302    $err = "";
303    $objDbConn = new SC_DbConn();
304    $sql = "SELECT " . $data['sql'] . " ";
305    $ret = $objDbConn->conn->query($sql);
306    if ($objDbConn->conn->isError($ret)){
307        $err = $ret;
308    }
309
310    return $err;
311}
312
313function lfprintr($data){
314    print_r($data);
315}
316
317/**************************************************************************************************************
318 * ´Ø¿ô̾   ¡§lfUpdData
319 * ½èÍýÆâÍÆ ¡§DB¤Ë¥Ç¡¼¥¿¤òÊݸ¤¹¤ë
320 * °ú¿ô1    ¡§$sql_idޥޥޥ¹¹¿·¤¹¤ë¥Ç¡¼¥¿¤ÎSQL_ID
321 * °ú¿ô2    ¡§$arrDataޥޥޥ¹¹¿·¥Ç¡¼¥¿
322 * Ìá¤êÃÍ   ¡§$sql_id:SQL_ID¤òÊÖ¤¹
323 **************************************************************************************************************/
324function lfUpdData($sql_id = "", $arrData = array()){
325    $objQuery = new SC_Query();     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
326    $sql = "";                      // ¥Ç¡¼¥¿¼èÆÀSQLÀ¸À®ÍÑ
327    $arrRet = array();              // ¥Ç¡¼¥¿¼èÆÀÍÑ(¹¹¿·È½Äê)
328    $arrVal = array();              // ¥Ç¡¼¥¿¹¹¿·
329
330    // sql_id ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤ÏUPDATE
331    if ($sql_id != "") {
332        // ¸ºß¥Á¥§¥Ã¥¯
333        $arrSqlData = lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
334        if (count($arrSqlData) > 0) {
335            // ¥Ç¡¼¥¿¹¹¿·
336            $sql = "UPDATE dtb_csv_sql SET name = ?, sql = ?, update_date = now() WHERE sql_id = ? ";
337            $arrVal= array($arrData['name'], $arrData['sql'], $sql_id);
338        }else{
339            // ¥Ç¡¼¥¿¤Î¿·µ¬ºîÀ®
340            $sql_id = "";
341            $sql = "INSERT INTO dtb_csv_sql (name, sql) values (?, ?) ";
342            $arrVal= array($arrData['name'], $arrData['sql']);
343           
344        }
345    }else{
346        // ¥Ç¡¼¥¿¤Î¿·µ¬ºîÀ®
347        $sql = "INSERT INTO dtb_csv_sql (name, sql) values (?, ?) ";
348        $arrVal= array($arrData['name'], $arrData['sql']);
349    }
350    // SQL¼Â¹Ô 
351    $arrRet = $objQuery->query($sql,$arrVal);
352   
353    // ¿·µ¬ºîÀ®»þ¤Ï$sql_id¤ò¼èÆÀ
354    if ($sql_id == "") {
355        $arrNewData = lfGetSqlList(" ORDER BY create_date DESC");
356        $sql_id = $arrNewData[0]['sql_id'];
357    }
358   
359    return $sql_id;
360}
361
362
363/**************************************************************************************************************
364 * ´Ø¿ô̾   ¡§lfDelData
365 * ½èÍýÆâÍÆ ¡§¥Ç¡¼¥¿¤òºï½ü¤¹¤ë
366 * °ú¿ô1    ¡§$sql_idޥޥޥºï½ü¤¹¤ë¥Ç¡¼¥¿¤ÎSQL_ID
367 * Ìá¤êÃÍ   ¡§¼Â¹Ô·ë²Ì¡¡TRUE¡§À®¸ù FALSE¡§¼ºÇÔ
368 **************************************************************************************************************/
369function lfDelData($sql_id = ""){
370    $objQuery = new SC_Query();     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
371    $sql = "";                      // ¥Ç¡¼¥¿¼èÆÀSQLÀ¸À®ÍÑ
372    $Ret = false;                   // ¼Â¹Ô·ë²Ì
373
374    // sql_id ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Î¤ß¼Â¹Ô
375    if ($sql_id != "") {
376        // ¥Ç¡¼¥¿¤Îºï½ü
377        $sql = "DELETE FROM dtb_csv_sql WHERE sql_id = ? ";
378        // SQL¼Â¹Ô 
379        $ret = $objQuery->query($sql,array($sql_id));
380    }else{
381        $ret = false;
382    }
383
384    // ·ë²Ì¤òÊÖ¤¹
385    return $ret;
386}
387
388
389//---- CSV½ÐÎÏÍѥǡ¼¥¿¼èÆÀ
390function lfGetCSVData( $array, $arrayIndex){   
391    for ($i=0; $i<count($array); $i++){
392        for ($j=0; $j<count($array[$i]); $j++ ){
393            if ( $j > 0 ) $return .= ",";
394            $return .= "\"";           
395            if ( $arrayIndex ){
396                $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\""; 
397            } else {
398                $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\"";
399            }
400        }
401        $return .= "\n";           
402    }
403   
404    return $return;
405}
406
Note: See TracBrowser for help on using the repository browser.