转换pcs 到数据库格式";
$dir = _DIR_USER_BASE_.'/'.$_COOKIE["userid"]._DIR_MYDOCUMENT_;
PDO_Connect("sqlite:"._FILE_DB_FILEINDEX_);
$query = "select file_name, doc_info, modify_time from fileindex where id='".$_GET["doc_id"]."' ";
$Fetch = PDO_FetchAll($query);
if(count($Fetch)>0){
$file_modify_time = $Fetch[0]["modify_time"];
if(empty($Fetch[0]["doc_info"])){
$file = $dir.'/'.$Fetch[0]["file_name"];
}
else{
echo "已经是数据库格式了。无需转换";
}
}
else{
echo "文件不存在";
exit;
}
$xml = simplexml_load_file($file);
$xml_head = $xml->xpath('//head')[0];
$strHead = "
";
$strHead .= "{$xml_head->type}";
$strHead .= "{$xml_head->mode}";
$strHead .= "{$xml_head->ver}";
$strHead .= "{$xml_head->toc}";
$strHead .= "";
$strHead .= "{$xml_head->doc_title}";
$strHead .= "{$xml_head->tag}";
$strHead .= "{$xml_head->book}";
$strHead .= "{$xml_head->paragraph}";
$strHead .= "";
$dataBlock = $xml->xpath('//block');
{
//复制数据
//打开逐词解析数据库
$dns = "sqlite:"._FILE_DB_USER_WBW_;
$dbhWBW = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
$dbhWBW->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
//打开译文数据库
$dns = "sqlite:"._FILE_DB_SENTENCE_;
$dbhSent = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
$dbhSent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
//逐词解析新数据数组
$arrNewBlock = array();
$arrNewBlockData = array();
$arrBlockTransform = array();
//译文新数据数组
$arrSentNewBlock = array();
$arrSentNewBlockData = array();
$arrSentBlockTransform = array();
$newDocBlockList=array();
foreach($dataBlock as $block){
switch($block->info->type){
case "translate":
echo "wbw:".$block->info->book."
";
break;
case "wbw":
echo "translate:".$block->info->book."
";
break;
}
}
foreach($dataBlock as $block) {
switch($block->info->type){
case 1:
break;
case "translate":
//译文
$blockid = sprintf("%s",$block->info->id);
$newDocBlockList[]=array('type' => 2,'block_id' => $blockid);
$arrSentBlockTransform["{$blockid}"] = $blockid;
//if(count($fBlock)>0)
{
array_push( $arrSentNewBlock,array($blockid,
"",
$block->info->book,
$block->info->paragraph,
$_COOKIE["userid"],
$block->info->language,
$block->info->author,
"",
"",
"1",
$file_modify_time,
mTime()
));
}
foreach($block->data->children() as $sen){
if(isset($sen->begin)){
$sent_begin=$sen->begin;
}
else{
$sent_begin="";
}
if(isset($sen->end)){
$sent_end=$sen->end;
}
else{
$sent_end="";
}
if(isset($sen->text)){
$paraText=$sen->text;
if( $block->info->level>0 && $block->info->level<8){
$toc.=$sen->text;
}
}
array_push( $arrSentNewBlockData,array(UUID::V4(),
$blockid,
$block->info->book,
$block->info->paragraph,
$sent_begin,
$sent_end,
"",
$block->info->author,
$_COOKIE["userid"],
$paraText,
$block->info->language,
"1",
"7",
$file_modify_time,
mTime()
));
}
break;
case "wbw":
$blockid = sprintf("%s",$block->info->id);
$newDocBlockList[]=array('type' => 6,'block_id' => $blockid);
$arrBlockTransform["{$blockid}"] = $blockid;
{
array_push( $arrNewBlock,array($blockid,
"",
$_COOKIE["userid"],
$block->info->book,
$block->info->paragraph,
"",
$block->info->language,
"",
$file_modify_time,
mTime()
));
}
$currWordId = "";
$currWordReal = "";
$currWordStatus = "";
$sWordData = "";
$iWordCount = 0;
foreach($block->data->children() as $word){
$word_id = explode("-",$word->id)[2];
$arrWordId = explode("_",$word_id);
$realWordId = $arrWordId[0];
if($realWordId != $currWordId){
if($iWordCount>0){
array_push( $arrNewBlockData,array(UUID::V4(),
$blockid,
$block->info->book,
$block->info->paragraph,
$currWordId,
$currWordReal,
$sWordData,
$file_modify_time,
mTime(),
$currWordStatus,
$_COOKIE["userid"]
));
$sWordData = "";
}
$currWordId = $realWordId;
$currWordReal = $word->real;
$currWordStatus = $word->status;
}
$sWordData .= "";
$sWordData .= "{$word->pali}";
$sWordData .= "{$word->real}";
$sWordData .= "{$word->id}";
$sWordData .= "{$word->type}";
$sWordData .= "{$word->gramma}";
$sWordData .= "{$word->mean}";
$sWordData .= "{$word->org}";
$sWordData .= "{$word->om}";
$sWordData .= "{$word->case}";
$sWordData .= "{$word->note}";
$sWordData .= "";
$sWordData .= "{$word->status}";
$sWordData .= "{$word->parent}";
if(isset($word->bmc)){
$sWordData .= "{$word->bmc}";
}
if(isset($word->bmt)){
$sWordData .= "{$word->bmt}";
}
if(isset($word->un)){
$sWordData .= "{$word->un}";
}
if(isset($word->lock)){
$sWordData .= "{$word->lock}";
}
$sWordData .= "";
$iWordCount++;
}
array_push( $arrNewBlockData,array(UUID::V4(),
$blockid,
$block->info->book,
$block->info->paragraph,
$word_id,
$word->real,
$sWordData,
$file_modify_time,
mTime(),
$word->status,
$_COOKIE["userid"]
));
break;
case 2:
break;
}
}
//逐词解析block数据块
if(count($arrNewBlock)>0){
$dbhWBW->beginTransaction();
$query="INSERT INTO wbw_block ('id','parent_id','owner','book','paragraph','style','lang','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?)";
$stmtNewBlock = $dbhWBW->prepare($query);
foreach($arrNewBlock as $oneParam){
$stmtNewBlock->execute($oneParam);
}
// 提交更改
$dbhWBW->commit();
if (!$stmtNewBlock || ($stmtNewBlock && $stmtNewBlock->errorCode() != 0)) {
$error = $dbhWBW->errorInfo();
echo "error - $error[2]
";
}
else{
//逐词解析block块复刻成功
$count=count($arrNewBlock);
echo "wbw block $count recorders.
";
}
}
if(count($arrNewBlockData)>0){
// 开始一个事务,逐词解析数据 关闭自动提交
$dbhWBW->beginTransaction();
$query="INSERT INTO wbw ('id','block_id','book','paragraph','wid','word','data','modify_time','receive_time','status','owner') VALUES (?,?,?,?,?,?,?,?,?,?,?)";
$stmtWbwData = $dbhWBW->prepare($query);
foreach($arrNewBlockData as $oneParam){
$stmtWbwData->execute($oneParam);
}
// 提交更改
$dbhWBW->commit();
if (!$stmtWbwData || ($stmtWbwData && $stmtWbwData->errorCode() != 0)) {
$error = $dbhWBW->errorInfo();
echo "error - $error[2]
";
}
else{
//逐词解析 数据 复刻成功
$count=count($arrNewBlockData);
echo "new wbw $count recorders.";
}
}
//译文 block数据块
if(count($arrSentNewBlock)>0){
$dbhSent->beginTransaction();
$query="INSERT INTO sent_block ('id','parent_id','book','paragraph','owner','lang','author','editor','tag','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmtSentNewBlock = $dbhSent->prepare($query);
foreach($arrSentNewBlock as $oneParam){
//print_r($oneParam);
$stmtSentNewBlock->execute($oneParam);
}
// 提交更改
$dbhSent->commit();
if (!$stmtSentNewBlock || ($stmtSentNewBlock && $stmtSentNewBlock->errorCode() != 0)){
$error = $dbhSent->errorInfo();
echo "error - $error[2]
";
}
else{
//译文 block块复刻成功
$count=count($arrNewBlock);
echo "wbw block $count recorders.
";
}
}
if(count($arrSentNewBlockData)>0){
// 开始一个事务,逐词解析数据 关闭自动提交
$dbhSent->beginTransaction();
$query="INSERT INTO sentence ('id','block_id','book','paragraph','begin','end','tag','author','editor','text','language','ver','status','modify_time','receive_time') VALUES (? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?, ?)";
$stmtSentData = $dbhSent->prepare($query);
foreach($arrSentNewBlockData as $oneParam){
$stmtSentData->execute($oneParam);
}
// 提交更改
$dbhSent->commit();
if (!$stmtSentData || ($stmtSentData && $stmtSentData->errorCode() != 0)) {
$error = $dbhSent->errorInfo();
echo "error - $error[2]
";
}
else{
//译文 数据 复刻成功
$count=count($arrSentNewBlockData);
echo "new translation $count recorders.";
}
}
//插入记录到文件索引
$filesize=0;
//服务器端文件列表
PDO_Connect("sqlite:"._FILE_DB_FILEINDEX_);
$query="INSERT INTO fileindex ('id',
'parent_id',
'user_id',
'book',
'paragraph',
'file_name',
'title',
'tag',
'status',
'create_time',
'modify_time',
'accese_time',
'file_size',
'share',
'doc_info',
'doc_block',
'receive_time'
)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $PDO->prepare($query);
$query="UPDATE 'fileindex' SET 'doc_info' = ? , 'doc_block' = ? WHERE id = ? ";
$stmt = $PDO->prepare($query);
$newData=array(
$strHead,
json_encode($newDocBlockList, JSON_UNESCAPED_UNICODE),
$_GET["doc_id"]
);
$stmt->execute($newData);
if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
$error = PDO_ErrorInfo();
echo "error - $error[2]
";
}
else{
//文档列表插入成功
echo "doc list updata 1 recorders.";
echo "在编辑器中打开";
}
}
?>