* [story #70333] improve UI for converting old doc to new format.
This commit is contained in:
+27
-8
@@ -803,39 +803,58 @@ class docModel extends model
|
||||
|
||||
$docs = $this->dao->select('t1.*,t2.title,t2.content,t2.type as contentType,t2.rawContent,t1.version')->from(TABLE_DOC)->alias('t1')
|
||||
->leftJoin(TABLE_DOCCONTENT)->alias('t2')->on('t1.id=t2.doc && t1.version=t2.version')
|
||||
->where('t2.type')->eq('doc')
|
||||
->where('t2.type')->in(array('doc', 'html'))
|
||||
->andWhere('t1.status')->ne('draft')
|
||||
->andWhere('t2.rawContent')->in(null)
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->fetchAll('id', false);
|
||||
|
||||
$newDocs = array();
|
||||
$oldDocs = array();
|
||||
foreach($docs as $doc)
|
||||
{
|
||||
if($doc->contentType == 'doc' && empty($doc->rawContent) && !empty($doc->content)) $newDocs[] = $doc->id;
|
||||
if($doc->contentType == 'html' && !empty($doc->content)) $oldDocs[] = $doc->id;
|
||||
}
|
||||
return array('doc' => $newDocs);
|
||||
return array('doc' => $newDocs, 'html' => $oldDocs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 迁移文档,设置新编辑器文档的 html。
|
||||
* Migrate doc, set doc html generated by new editor.
|
||||
* 迁移文档,设置新编辑器文档的 html,以及迁移老文档为新文档。
|
||||
* Migrate doc, set doc html generated by new editor, and migrate old doc to new doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param int $version
|
||||
* @param string $html
|
||||
* @param string $content
|
||||
*/
|
||||
public function migrateDoc(int $docID, int $version, ?string $html): bool
|
||||
public function migrateDoc(int $docID, int $version, ?string $content): bool
|
||||
{
|
||||
$docContent = $this->dao->select('*')->from(TABLE_DOCCONTENT)->where('doc')->eq($docID)->andWhere('version')->eq($version)->fetch();
|
||||
if(empty($docContent)) return false;
|
||||
|
||||
if($docContent->type == 'doc')
|
||||
if($docContent->type == 'html')
|
||||
{
|
||||
$newDocContent = clone $docContent;
|
||||
$newDocContent->version = $docContent->version + 1;
|
||||
$newDocContent->type = 'doc';
|
||||
$newDocContent->rawContent = empty($content) ? json_encode(array('$migrate' => 'html', '$data' => $docContent->content)) : $content;
|
||||
unset($newDocContent->id);
|
||||
|
||||
$this->dao->insert(TABLE_DOCCONTENT)->data($newDocContent)->exec();
|
||||
$this->dao->update(TABLE_DOC)->set('version')->eq($newDocContent->version)->where('id')->eq($docID)->exec();
|
||||
$this->loadModel('action')->create('doc', $docID, 'convertDoc', sprintf($this->lang->doc->docConvertComment, "#$docContent->version"));
|
||||
}
|
||||
elseif($docContent->type == 'doc')
|
||||
{
|
||||
if(empty($content))
|
||||
{
|
||||
$link = helper::createLink('doc', 'view', "docID=$docContent->doc");
|
||||
$content = sprintf($this->lang->doc->previewNotAvailable, "<a href='$link' target='_blank'>#$docContent->doc $docContent->title</a>");
|
||||
}
|
||||
$rawContent = empty($docContent->rawContent) ? $docContent->content : $docContent->rawContent;
|
||||
$this->dao->update(TABLE_DOCCONTENT)
|
||||
->set('rawContent')->eq($rawContent)
|
||||
->set('content')->eq($html)
|
||||
->set('content')->eq($content)
|
||||
->where('id')->eq($docContent->id)
|
||||
->exec();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user