';
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 "
";
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 "";
?>