'; if ($_COOKIE["uid"]) { $uid = $_COOKIE["uid"]; } else { echo "尚未登录"; echo "

登录后才可以打开文档

"; exit; } if (isset($_GET["doc_id"]) == false) { echo "没有 文档编号"; exit; } PDO_Connect("" . _FILE_DB_FILEINDEX_); $doc_id = $_GET["doc_id"]; $query = "select * from fileindex where id= ? "; $Fetch = PDO_FetchAll($query, array($doc_id)); $iFetch = count($Fetch); if ($iFetch > 0) { //文档信息 $mbook = $Fetch[0]["book"]; $paragraph = $Fetch[0]["paragraph"]; } if (isset($_GET["channel"]) == false) { echo '
'; echo "

选择一个空白的版风存储新的文档

"; echo "
"; echo ""; PDO_Connect("" . _FILE_DB_CHANNAL_); $query = "select * from channal where owner = '{$_COOKIE["userid"]}' limit 0,100"; $Fetch = PDO_FetchAll($query); $i = 0; foreach ($Fetch as $row) { echo '
'; echo '
'; echo ''; echo '
'; echo '
' . $row["name"] . '
'; echo '
' . $row["lang"] . '
'; echo '
'; PDO_Connect("" . _FILE_DB_USER_WBW_); $query = "select count(*) from wbw_block where channal = '{$row["id"]}' and book='{$mbook}' and paragraph in ({$paragraph}) limit 0,100"; $FetchWBW = PDO_FetchOne($query); echo '
'; echo '
'; if ($FetchWBW == 0) { echo $_local->gui->blank; } else { echo $FetchWBW . $_local->gui->para; echo "open"; } echo '
'; echo '
'; PDO_Connect("" . _FILE_DB_SENTENCE_); $query = "select count(*) from sentence where channal = '{$row["id"]}' and book='{$mbook}' and paragraph in ({$paragraph}) limit 0,100"; $FetchWBW = PDO_FetchOne($query); echo '
'; echo '
'; if ($FetchWBW == 0) { echo $_local->gui->blank; } else { echo $FetchWBW . $_local->gui->para; } echo '
'; echo '
' . $row["status"] . '
'; echo '
' . $row["create_time"] . '
'; echo '
'; $i++; } echo ""; echo "
"; echo "
"; exit; } //if(isset($_GET["doc_id"])) { PDO_Connect("" . _FILE_DB_FILEINDEX_); $doc_id = $_GET["doc_id"]; $query = "select * from fileindex where id= ? "; $Fetch = PDO_FetchAll($query, array($doc_id)); $iFetch = count($Fetch); if ($iFetch > 0) { //文档信息 $orgFileInfo = $Fetch[0]; $owner = $Fetch[0]["user_id"]; $filename = $Fetch[0]["file_name"]; $title = $Fetch[0]["title"]; $tag = $Fetch[0]["tag"]; $mbook = $Fetch[0]["book"]; $paragraph = $Fetch[0]["paragraph"]; if ($owner == $uid) { //自己的文档 echo "这是自己的文档,不能复刻。"; } else { //别人的文档 //查询自己是否以前打开过 $query = "select * from fileindex where parent_id='{$doc_id}' and user_id='{$uid}' "; $FetchSelf = PDO_FetchAll($query); $iFetchSelf = count($FetchSelf); if ($iFetchSelf > 0) { //以前打开过 echo "文档已经复刻"; echo "正在打开文档"; echo ""; } else { //以前没打开过 echo "

共享的文档,正在fork...

"; echo "
"; //获取文件路径 PDO_Connect("" . _FILE_DB_USERINFO_); $query = "select userid from user where id='{$owner}'"; $FetchUid = PDO_FetchOne($query); if ($FetchUid) { //$source=$dir_user_base.$FetchUid.$dir_mydocument.$filename; //$dest=$dir_user_base.$userid.$dir_mydocument.$filename; //复制数据 //打开逐词解析数据库 $dns = "" . _FILE_DB_USER_WBW_; $dbhWBW = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true)); $dbhWBW->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); //打开译文数据库 $dns = "" . _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(); $blocks = json_decode($Fetch[0]["doc_block"]); for ($i = 0; $i < count($blocks); $i++) { switch ($blocks[$i]->type) { case 1: break; case 2: //译文 $blockid = $blocks[$i]->block_id; $query = "select * from sent_block where id= ? "; $stmt = $dbhSent->prepare($query); $stmt->execute(array($blockid)); $fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC); $newBlockId = UUID::V4(); //不复刻译文 //$newDocBlockList[]=array('type' => 2,'block_id' => $newBlockId); $arrSentBlockTransform[$fBlock[0]["id"]] = $newBlockId; if (count($fBlock) > 0) { array_push($arrSentNewBlock, array($newBlockId, $fBlock[0]["id"], $fBlock[0]["book"], $fBlock[0]["paragraph"], $_COOKIE["userid"], $fBlock[0]["lang"], $fBlock[0]["author"], $fBlock[0]["editor"], $fBlock[0]["tag"], $fBlock[0]["status"], mTime(), mTime(), )); } $query = "select * from sentence where block_id= ? "; $stmtSent = $dbhSent->prepare($query); $stmtSent->execute(array($fBlock[0]["id"])); $fBlockData = $stmtSent->fetchAll(PDO::FETCH_ASSOC); foreach ($fBlockData as $value) { array_push($arrSentNewBlockData, array(UUID::V4(), $arrSentBlockTransform[$value["block_id"]], $value["book"], $value["paragraph"], $value["begin"], $value["end"], $value["channal"], $value["tag"], $value["author"], $_COOKIE["userid"], $value["text"], $value["language"], $value["ver"], $value["status"], mTime(), mTime(), )); } break; case 3: break; case 4: break; case 5: break; case 6: #逐词解析 $blockid = $blocks[$i]->block_id; $query = "select * from wbw_block where id= ? "; $stmt = $dbhWBW->prepare($query); $stmt->execute(array($blockid)); $fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC); $newBlockId = UUID::V4(); $newDocBlockList[] = array('type' => 6, 'block_id' => $newBlockId); $arrBlockTransform[$fBlock[0]["id"]] = $newBlockId; if (count($fBlock) > 0) { array_push($arrNewBlock, array($newBlockId, $fBlock[0]["id"], $_GET["channel"], $_COOKIE["userid"], $fBlock[0]["book"], $fBlock[0]["paragraph"], $fBlock[0]["style"], $fBlock[0]["lang"], $fBlock[0]["status"], mTime(), mTime(), )); } $query = "select * from wbw where block_id= ? "; $stmtWBW = $dbhWBW->prepare($query); $stmtWBW->execute(array($fBlock[0]["id"])); $fBlockData = $stmtWBW->fetchAll(PDO::FETCH_ASSOC); foreach ($fBlockData as $value) { array_push($arrNewBlockData, array(UUID::V4(), $arrBlockTransform[$value["block_id"]], $value["book"], $value["paragraph"], $value["wid"], $value["word"], $value["data"], mTime(), mTime(), $value["status"], $_COOKIE["userid"], )); } break; case 2: break; } } //逐词解析block数据块 if (count($arrNewBlock) > 0) { $dbhWBW->beginTransaction(); $query = "INSERT INTO wbw_block ('id','parent_id','channal','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','channal','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("" . _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); $newDocId = UUID::v4(); $newDocInfo = $orgFileInfo; $newDocInfo["id"] = $newDocId; $newDocInfo["parent_id"] = $orgFileInfo["id"]; $newDocInfo["user_id"] = $_COOKIE["uid"]; $newDocInfo["doc_block"] = json_encode($newDocBlockList, JSON_UNESCAPED_UNICODE); $newData = array($newDocInfo["id"], $newDocInfo["parent_id"], $newDocInfo["user_id"], $newDocInfo["book"], $newDocInfo["paragraph"], $newDocInfo["file_name"], $newDocInfo["title"], $newDocInfo["tag"], $newDocInfo["status"], mTime(), mTime(), mTime(), $newDocInfo["file_size"], $newDocInfo["share"], $newDocInfo["doc_info"], $newDocInfo["doc_block"], mTime(), ); $stmt->execute($newData); if (!$stmt || ($stmt && $stmt->errorCode() != 0)) { $error = PDO_ErrorInfo(); echo "error - $error[2]
"; } else { //文档列表插入成功 echo "doc list updata 1 recorders."; echo "
"; echo "

复刻成功

"; echo "正在打开文档"; echo ""; } } else { echo "无效的文档id"; } } } } } echo ""; ?>