issue 848 when copy document, extra vars, multi lang shoud be copied too

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@10308 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2012-03-05 01:42:11 +00:00
parent 2d755a9620
commit 51c9c66f12
2 changed files with 47 additions and 4 deletions

View file

@ -183,6 +183,23 @@
$oDB = &DB::getInstance(); $oDB = &DB::getInstance();
$oDB->begin(); $oDB->begin();
$extraVarsList = $oDocumentModel->getDocumentExtraVarsFromDB($document_srl_list);
$extraVarsListByDocumentSrl = array();
if(is_array($extraVarsList->data))
{
foreach($extraVarsList->data AS $key=>$value)
{
if(!isset($extraVarsListByDocumentSrl[$value->document_srl]))
{
$extraVarsListByDocumentSrl[$value->document_srl] = array();
}
//$extraVarsListByDocumentSrl[$value->document_srl]['var_idx'] = $value->var_idx;
//$extraVarsListByDocumentSrl[$value->document_srl]['value'] = $value->value;
array_push($extraVarsListByDocumentSrl[$value->document_srl], $value);
}
}
for($i=count($document_srl_list)-1;$i>=0;$i--) { for($i=count($document_srl_list)-1;$i>=0;$i--) {
$document_srl = $document_srl_list[$i]; $document_srl = $document_srl_list[$i];
$oDocument = $oDocumentModel->getDocument($document_srl); $oDocument = $oDocumentModel->getDocument($document_srl);
@ -192,12 +209,13 @@
$obj = $oDocument->getObjectVars(); $obj = $oDocument->getObjectVars();
if($module_srl == $obj->module_srl) if($module_srl == $obj->module_srl)
{ {
$extraVars = $oDocument->getExtraVars(); //$extraVars = $oDocument->getExtraVars();
$extraVars = $extraVarsListByDocumentSrl[$document_srl];
if(is_array($extraVars)) if(is_array($extraVars))
{ {
foreach($extraVars as $extraItem) foreach($extraVars as $extraItem)
{ {
$obj->{'extra_vars'.$extraItem->idx} = $extraItem->value; if($extraItem->var_idx >= 0) $obj->{'extra_vars'.$extraItem->var_idx} = $extraItem->value;
} }
} }
} }
@ -235,6 +253,19 @@
$oDB->rollback(); $oDB->rollback();
return $output; return $output;
} }
// copy multi language contents
if(is_array($extraVars))
{
foreach($extraVars AS $key=>$value)
{
if($value->var_idx < 0)
{
$oDocumentController->insertDocumentExtraVar($value->module_srl, $obj->document_srl, $value->var_idx, $value->value, $value->eid, $value->lang_code);
}
}
}
// Move the comments // Move the comments
if($oDocument->getCommentCount()) { if($oDocument->getCommentCount()) {
$oCommentModel = &getModel('comment'); $oCommentModel = &getModel('comment');

View file

@ -19,6 +19,18 @@
return $_SESSION['own_document'][$document_srl]; return $_SESSION['own_document'][$document_srl];
} }
function getDocumentExtraVarsFromDB($documentSrls)
{
if(!is_array($documentSrls) || count($documentSrls) == 0)
{
return new Object(-1, 'msg_invalid_request');
}
$args->document_srl = $documentSrls;
$output = executeQueryArray('document.getDocumentExtraVars', $args);
return $output;
}
/** /**
* @brief extra variables for each article will not be processed bulk select and apply the macro city * @brief extra variables for each article will not be processed bulk select and apply the macro city
**/ **/
@ -36,8 +48,8 @@
// If the document number, return detected // If the document number, return detected
if(!count($document_srls)) return; if(!count($document_srls)) return;
// Expand variables mijijeongdoen article about a current visitor to the extension of the language code, the search variable // Expand variables mijijeongdoen article about a current visitor to the extension of the language code, the search variable
$obj->document_srl = implode(',',$document_srls); //$obj->document_srl = implode(',',$document_srls);
$output = executeQueryArray('document.getDocumentExtraVars', $obj); $output = $this->getDocumentExtraVarsFromDB($document_srls);
if($output->toBool() && $output->data) { if($output->toBool() && $output->data) {
foreach($output->data as $key => $val) { foreach($output->data as $key => $val) {
if(!isset($val->value)) continue; if(!isset($val->value)) continue;