mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/trunk@1482 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
a8af22d557
commit
5129945ad8
3 changed files with 86 additions and 49 deletions
|
|
@ -338,31 +338,65 @@
|
|||
* @brief updateAct 처리
|
||||
**/
|
||||
function _executeUpdateAct($output) {
|
||||
// 테이블 정리
|
||||
foreach($output->tables as $key => $val) {
|
||||
//$table_list[] = '`'.$this->prefix.$key.'` as '.$val;
|
||||
$table_list[] = '`'.$this->prefix.$key.'`';
|
||||
}
|
||||
$table_count = count(array_values($output->tables));
|
||||
|
||||
// 컬럼 정리
|
||||
foreach($output->columns as $key => $val) {
|
||||
if(!isset($val['value'])) continue;
|
||||
$name = $val['name'];
|
||||
$value = $val['value'];
|
||||
if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
|
||||
else {
|
||||
if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
|
||||
elseif(!$value || is_numeric($value)) $value = (int)$value;
|
||||
// 대상 테이블이 1개일 경우
|
||||
if($table_count == 1) {
|
||||
// 테이블 정리
|
||||
list($target_table) = array_keys($output->tables);
|
||||
$target_table = $this->prefix.$target_table;
|
||||
|
||||
$column_list[] = sprintf("`%s` = %s", $name, $value);
|
||||
// 컬럼 정리
|
||||
foreach($output->columns as $key => $val) {
|
||||
if(!isset($val['value'])) continue;
|
||||
$name = $val['name'];
|
||||
$value = $val['value'];
|
||||
if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
|
||||
else {
|
||||
if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
|
||||
elseif(!$value || is_numeric($value)) $value = (int)$value;
|
||||
|
||||
$column_list[] = sprintf("`%s` = %s", $name, $value);
|
||||
}
|
||||
}
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$query = sprintf("update %s set %s %s", $target_table, implode(',',$column_list), $condition);
|
||||
|
||||
// 대상 테이블이 2개일 경우 (sqlite에서 update 테이블을 1개 이상 지정 못해서 이렇게 꽁수로... 다른 방법이 있으려나..)
|
||||
} elseif($table_count == 2) {
|
||||
// 테이블 정리
|
||||
foreach($output->tables as $key => $val) {
|
||||
$table_list[$val] = $this->prefix.$val;
|
||||
}
|
||||
list($source_table, $target_table) = array_values($table_list);
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
foreach($table_list as $key => $val) {
|
||||
$condition = eregi_replace($key.'\\.', $val.'.', $condition);
|
||||
}
|
||||
|
||||
// 컬럼 정리
|
||||
foreach($output->columns as $key => $val) {
|
||||
if(!isset($val['value'])) continue;
|
||||
$name = $val['name'];
|
||||
$value = $val['value'];
|
||||
list($s_prefix, $s_column) = explode('.',$name);
|
||||
list($t_prefix, $t_column) = explode('.',$value);
|
||||
|
||||
$s_table = $table_list[$s_prefix];
|
||||
$t_table = $table_list[$t_prefix];
|
||||
$column_list[] = sprintf(' %s = (select %s from %s %s) ', $s_column, $t_column, $t_table, $condition);
|
||||
}
|
||||
|
||||
$query = sprintf('update %s set %s where exists(select * from %s %s)', $source_table, implode(',', $column_list), $target_table, $condition);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$query = sprintf("update %s set %s %s", implode(',',$table_list), implode(',',$column_list), $condition);
|
||||
|
||||
return $this->_query($query);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -375,13 +375,40 @@
|
|||
* @brief updateAct 처리
|
||||
**/
|
||||
function _executeUpdateAct($output) {
|
||||
// 대상 테이블이 2개 이상일 경우
|
||||
if(count(array_values($output->tables) > 1)) {
|
||||
$table_count = count(array_values($output->tables));
|
||||
|
||||
// 대상 테이블이 1개일 경우
|
||||
if($table_count == 1) {
|
||||
// 테이블 정리
|
||||
list($target_table) = array_keys($output->tables);
|
||||
$target_table = $this->prefix.$target_table;
|
||||
|
||||
// 컬럼 정리
|
||||
foreach($output->columns as $key => $val) {
|
||||
if(!isset($val['value'])) continue;
|
||||
$name = $val['name'];
|
||||
$value = $val['value'];
|
||||
if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
|
||||
else {
|
||||
if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
|
||||
elseif(!$value || is_numeric($value)) $value = (int)$value;
|
||||
|
||||
$column_list[] = sprintf("`%s` = %s", $name, $value);
|
||||
}
|
||||
}
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$query = sprintf("update %s set %s %s", $target_table, implode(',',$column_list), $condition);
|
||||
|
||||
// 대상 테이블이 2개일 경우 (sqlite에서 update 테이블을 1개 이상 지정 못해서 이렇게 꽁수로... 다른 방법이 있으려나..)
|
||||
} elseif($table_count == 2) {
|
||||
// 테이블 정리
|
||||
foreach($output->tables as $key => $val) {
|
||||
$table_list[$val] = $this->prefix.$val;
|
||||
}
|
||||
list($target_table) = array_values($table_list);
|
||||
list($source_table, $target_table) = array_values($table_list);
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
|
|
@ -402,31 +429,9 @@
|
|||
$column_list[] = sprintf(' %s = (select %s from %s %s) ', $s_column, $t_column, $t_table, $condition);
|
||||
}
|
||||
|
||||
$query = sprintf('update %s set %s', $target_table, implode(',', $column_list));
|
||||
|
||||
// 대상 테이블이 1개일 경우
|
||||
$query = sprintf('update %s set %s where exists(select * from %s %s)', $source_table, implode(',', $column_list), $target_table, $condition);
|
||||
} else {
|
||||
// 테이블 정리
|
||||
list($target_table) = array_keys($output->tables);
|
||||
|
||||
// 컬럼 정리
|
||||
foreach($output->columns as $key => $val) {
|
||||
if(!isset($val['value'])) continue;
|
||||
$name = $val['name'];
|
||||
$value = $val['value'];
|
||||
if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
|
||||
else {
|
||||
if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
|
||||
elseif(!$value || is_numeric($value)) $value = (int)$value;
|
||||
|
||||
$column_list[] = sprintf("`%s` = %s", $name, $value);
|
||||
}
|
||||
}
|
||||
|
||||
// 조건절 정리
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$query = sprintf("update %s set %s %s", $target_table, implode(',',$column_list), $condition);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->_prepare($query);
|
||||
|
|
|
|||
|
|
@ -351,11 +351,9 @@
|
|||
function procImporterAdminSync() {
|
||||
// 게시물정보 싱크
|
||||
$output = executeQuery('importer.updateDocumentSync');
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 댓글정보 싱크
|
||||
$output = executeQuery('importer.updateCommentSync');
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('msg_sync_completed');
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue