From 77a0d87dfcfa0e59c156ebe06210835d5e51154b Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 12 Apr 2007 10:24:19 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@1117 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 10 ++++++ classes/db/DBCubrid.class.php | 35 +++++++++++++------ classes/db/DBMysql.class.php | 2 +- classes/db/DBMysql_innodb.class.php | 2 +- classes/db/DBSqlite2.class.php | 2 +- classes/db/DBSqlite3_pdo.class.php | 2 +- classes/display/DisplayHandler.class.php | 3 ++ classes/xml/XmlQueryParser.class.php | 21 ++++++++--- modules/file/file.controller.php | 14 +++----- .../file/tpl/print_uploaded_file_list.html | 7 ++++ 10 files changed, 69 insertions(+), 29 deletions(-) create mode 100644 modules/file/tpl/print_uploaded_file_list.html diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 08034710c..2a5cfceac 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -260,6 +260,16 @@ return new Object(); } + /** + * @brief 컬럼의 타입을 구해옴 + * 컬럼의 경우 a.b 와 같이 되어 있는 경우가 있어서 별도 함수가 필요 + **/ + function getColumnType($column_type_list, $name) { + if(strpos($name,'.')===false) return $column_type_list[$name]; + list($prefix, $name) = explode('.',$name); + return $column_type_list[$name]; + } + /** * @brief 이름, 값, operation, type으로 값을 변경 * like, like_prefix의 경우 value자체가 변경됨 diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index c1770a81d..32629d4f8 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -91,7 +91,7 @@ **/ function close() { if(!$this->isConnected()) return; - cubrid_commit($this->fd); + @cubrid_commit($this->fd); @cubrid_disconnect($this->fd); } @@ -309,6 +309,7 @@ function getCondition($output) { if(!$output->conditions) return; + $condition = ""; foreach($output->conditions as $key => $val) { $sub_condition = ''; foreach($val['condition'] as $k =>$v) { @@ -317,15 +318,19 @@ $name = $v['column']; $operation = $v['operation']; $value = $v['value']; - $type = $output->column_type[$name]; + $type = $this->getColumnType($output->column_type,$name); $pipe = $v['pipe']; $value = $this->getConditionValue($name, $value, $operation, $type); + if(!$value) $value = $v['value']; + if(strpos($name,'.')===false) $name = '"'.$name.'"'; $str = $this->getConditionPart($name, $value, $operation); + if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; } + if($sub_condition) { if($condition && $val['pipe']) $condition .= ' '.$val['pipe'].' '; $condition .= '('.$sub_condition.')'; @@ -349,14 +354,15 @@ foreach($output->columns as $key => $val) { $name = $val['name']; $value = $val['value']; - if($output->column_type[$name]!='number') { + if($this->getColumnType($output->column_type,$name)!='number') { $value = "'".$this->addQuotes($value)."'"; if(!$value) $value = 'null'; } else { if(!$value) $value = 0; } - $column_list[] = '"'.$name.'"'; + if(strpos($name,'.')===false) $column_list[] = '"'.$name.'"'; + else $column_list[] = $name; $value_list[] = $value; } @@ -376,12 +382,15 @@ // 컬럼 정리 foreach($output->columns as $key => $val) { if(!isset($val['value'])) continue; + $name = $val['name']; + $value = $val['value']; - if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'"; + if($this->getColumnType($output->column_type,$name)!='number') $value = "'".$this->addQuotes($value)."'"; else $value = (int)$value; - $column_list[] = sprintf('"%s" = %s', $name, $value); + if(strpos($name,'.')===false) $name = '"'.$name.'"'; + $column_list[] = sprintf('%s = %s', $name, $value); } // 조건절 정리 @@ -435,8 +444,14 @@ if($alias) $column_list[] = sprintf('"%s" as "%s"', $name, $alias); else $column_list[] = sprintf('"%s"',$name); } else { - if($alias) $column_list[] = sprintf('%s as "%s"', $name, $alias); - else $column_list[] = sprintf('%s',$name); + if(strpos($name,'.')!=false) { + list($prefix, $name) = explode('.',$name); + if($alias) $column_list[] = sprintf('%s."%s" as "%s"', $prefix, $name, $alias); + else $column_list[] = sprintf('%s."%s"',$prefix,$name); + } else { + if($alias) $column_list[] = sprintf('%s as "%s"', $name, $alias); + else $column_list[] = sprintf('%s',$name); + } } } $columns = implode(',',$column_list); @@ -473,7 +488,7 @@ require_once('./classes/page/PageHandler.class.php'); // 전체 개수를 구함 - $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); + $count_query = sprintf('select count(*) as "count" from %s %s', implode(',',$table_list), $condition); $result = $this->_query($count_query); $count_output = $this->_fetch($result); $total_count = (int)$count_output->count; @@ -501,7 +516,7 @@ if(count($index_list)) $query .= ' order by '.implode(',',$index_list); } - $query = sprintf('%s for ordery_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s for orderby_num() between %d and %d', $query, $start_count, $list_count); $result = $this->_query($query); if($this->isError()) { diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index f39561c62..22dd225b1 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -288,7 +288,7 @@ $type = $output->column_type[$name]; $pipe = $v['pipe']; - $value = $this->getConditionValue($name, $value, $operation, $type); + if(strpos($value,'.')===false) $value = $this->getConditionValue($name, $value, $operation, $type); $str = $this->getConditionPart($name, $value, $operation); if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index ccd51d932..e9f090a16 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -297,7 +297,7 @@ $type = $output->column_type[$name]; $pipe = $v['pipe']; - $value = $this->getConditionValue($name, $value, $operation, $type); + if(strpos($value,'.')===false) $value = $this->getConditionValue($name, $value, $operation, $type); $str = $this->getConditionPart($name, $value, $operation); if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; diff --git a/classes/db/DBSqlite2.class.php b/classes/db/DBSqlite2.class.php index 5744a3e5b..6685cddfa 100644 --- a/classes/db/DBSqlite2.class.php +++ b/classes/db/DBSqlite2.class.php @@ -292,7 +292,7 @@ $type = $output->column_type[$name]; $pipe = $v['pipe']; - $value = $this->getConditionValue($name, $value, $operation, $type); + if(strpos($value,'.')===false) $value = $this->getConditionValue($name, $value, $operation, $type); $str = $this->getConditionPart($name, $value, $operation); if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; diff --git a/classes/db/DBSqlite3_pdo.class.php b/classes/db/DBSqlite3_pdo.class.php index e8e9366d2..9d417474e 100644 --- a/classes/db/DBSqlite3_pdo.class.php +++ b/classes/db/DBSqlite3_pdo.class.php @@ -319,7 +319,7 @@ $type = $output->column_type[$name]; $pipe = $v['pipe']; - $value = $this->getConditionValue($name, $value, $operation, $type); + if(strpos($value,'.')===false) $value = $this->getConditionValue($name, $value, $operation, $type); $str = $this->getConditionPart($name, $value, $operation); if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 5ac5a5268..7d788dbfa 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -18,6 +18,9 @@ * @brief 모듈객체를 받아서 content 출력 **/ function printContent(&$oModule) { + + if(!$oModule->getTemplateFile()) return; + // header 출력 $this->_printHeader(); diff --git a/classes/xml/XmlQueryParser.class.php b/classes/xml/XmlQueryParser.class.php index 345d2350c..a14bdfb98 100644 --- a/classes/xml/XmlQueryParser.class.php +++ b/classes/xml/XmlQueryParser.class.php @@ -40,11 +40,22 @@ // 테이블을 찾아서 컬럼의 속성을 구함 $table_file = sprintf('./modules/%s/schemas/%s.xml', $module, $table_name); - $table_xml = FileHandler::readFile($table_file); - $table_obj = parent::parse($table_xml); - if($table_obj->table) { - foreach($table_obj->table->column as $k => $v) { - $buff .= sprintf('$output->column_type["%s"] = "%s";%s', $v->attrs->name, $v->attrs->type, "\n"); + if(!file_exists($table_file)) { + $searched_list = FileHandler::readDir('./modules'); + $searched_count = count($searched_list); + for($i=0;$i<$searched_count;$i++) { + $table_file = sprintf('./modules/%s/schemas/%s.xml', $searched_list[$i], $table_name); + if(file_exists($table_file)) break; + } + } + + if(file_exists($table_file)) { + $table_xml = FileHandler::readFile($table_file); + $table_obj = parent::parse($table_xml); + if($table_obj->table) { + foreach($table_obj->table->column as $k => $v) { + $buff .= sprintf('$output->column_type["%s"] = "%s";%s', $v->attrs->name, $v->attrs->type, "\n"); + } } } } diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index aa4e98b28..72f83953d 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -251,16 +251,11 @@ $buff .= sprintf("parent.editor_insert_uploaded_file(\"%d\", \"%d\",\"%s\", \"%d\", \"%s\", \"%s\", \"%s\");\n", $upload_target_srl, $file_info->file_srl, $file_info->source_filename, $file_info->file_size, FileHandler::filesize($file_info->file_size), $file_info->direct_download=='Y'?$uploaded_filename:'', $file_info->sid); } - header("Content-Type: text/html; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - header("Cache-Control: no-store, no-cache, must-revalidate"); - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); + Context::set('upload_target_srl', $upload_target_srl); + Context::set('buff', $buff); - $buff = sprintf("", $upload_target_srl, $buff); - print $buff; - exit(); + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('print_uploaded_file_list.html'); } /** @@ -327,7 +322,6 @@ header("Content-Transfer-Encoding: binary\n"); fpassthru($fp); - exit(); } } diff --git a/modules/file/tpl/print_uploaded_file_list.html b/modules/file/tpl/print_uploaded_file_list.html new file mode 100644 index 000000000..17ee82d4b --- /dev/null +++ b/modules/file/tpl/print_uploaded_file_list.html @@ -0,0 +1,7 @@ +