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

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