登录后才可以打开文档 "; exit; } PDO_Connect("sqlite:"._FILE_DB_FILEINDEX_); if(isset($_GET["doc_id"])){ $doc_id=$_GET["doc_id"]; $query = "select * from fileindex where id='{$doc_id}' "; $Fetch = PDO_FetchAll($query); $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("sqlite:"._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 = "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(); $blocks = json_decode($Fetch[0]["doc_block"]); for ($i=0;$itype){ 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["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"], $_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','owner','book','paragraph','style','lang','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?)"; $stmtNewBlock = $dbhWBW->prepare($query); foreach($arrNewBlock as $oneParam){ //print_r($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); $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"; } } } } } ?>