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

登录后才可以打开文档

"; exit; } if(isset($_GET["para"])){ $_para = json_decode($_GET["para"]); } else{ echo "没有 para 编号"; exit; } if (isset($_GET["src_channel"]) == false) { echo "没有 channel 编号"; exit; } //文档信息 $mbook = $_GET["book"]; $paragraph = implode(",",$_para); if (isset($_GET["dest_channel"]) == false) { echo '
'; echo "

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

"; echo "
原有版本中相同段落的数据将被覆盖
"; 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; PDO_Connect( _FILE_DB_USER_WBW_); foreach ($Fetch as $row) { echo '
'; echo '
'; echo ''; echo '
'; echo '
' . $row["name"] . '
'; echo '
' . $row["lang"] . '
'; echo '
'; $query = "select count(*) from "._TABLE_USER_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 '
' . $row["status"] . '
'; echo '
' . $row["create_time"] . '
'; echo '
'; $i++; } echo ""; echo "
"; echo "
"; exit; } PDO_Connect( _FILE_DB_USER_WBW_); $channelInfo= new Channal($redis); $srcPower = (int)$channelInfo->getPower($_GET["src_channel"]); { { if ($srcPower == 30) { //自己的文档 echo "这是自己的文档,不能复刻。"; } else { //别人的文档 //查询以前自己是否曾经复刻 $query = "SELECT * from "._TABLE_USER_WBW_BLOCK_." where parent_channel=? and owner=? "; $FetchSelf = PDO_FetchAll($query,array($_GET["src_channel"],$_COOKIE["userid"])); $iFetchSelf = count($FetchSelf); if ($iFetchSelf > 0) { //以前打开过 echo "文档已经复刻"; echo "正在打开文档"; echo ""; } else { //以前没打开过 echo "

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

"; echo "
"; { //复制数据 //打开逐词解析数据库 $dns = _FILE_DB_USER_WBW_; $dbhWBW = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true)); $dbhWBW->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); //逐词解析新数据数组 $arrNewBlock = array(); $arrNewBlockData = array(); $arrBlockTransform = array(); $blocks = $_para; for ($i = 0; $i < count($blocks); $i++) { $query = "SELECT id from "._TABLE_USER_WBW_BLOCK_." where book= ? and paragraph = ? and channal = ? "; $stmt = $dbhWBW->prepare($query); $stmt->execute(array($_GET["book"],$iPara,$_GET["dest_channel"])); $fDest = $stmt->fetch(PDO::FETCH_ASSOC); if($fDest){ #旧的逐词解析数据块wbw_block id $destId = $fDest["id"]; } #逐词解析 $iPara = $blocks[$i]; $query = "SELECT * from "._TABLE_USER_WBW_BLOCK_." where book= ? and paragraph = ? and channal = ? "; $stmt = $dbhWBW->prepare($query); $stmt->execute(array($_GET["book"],$iPara,$_GET["src_channel"])); $fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC); if(isset($destId)){ $newBlockId = $destId; } else{ $newBlockId = UUID::V4(); } $arrBlockTransform[$fBlock[0]["id"]] = $newBlockId; if (count($fBlock) > 0) { array_push($arrNewBlock, array($newBlockId, "", $_GET["dest_channel"], $_GET["src_channel"], $_COOKIE["userid"], $fBlock[0]["book"], $fBlock[0]["paragraph"], $fBlock[0]["style"], $fBlock[0]["lang"], $fBlock[0]["status"], mTime(), mTime(), mTime() )); } $query = "SELECT * from "._TABLE_USER_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"], )); } } # 查找目标block是否存在 //删除旧的逐词解析block数据块 $query = "DELETE from "._TABLE_USER_WBW_BLOCK_." where paragraph = ? AND book = ? AND channal = ? "; $stmt = $dbhWBW->prepare($query); $stmt->execute(array($iPara,$_GET["book"],$_GET["dest_channel"])); //新增逐词解析block数据块 if (count($arrNewBlock) > 0) { $dbhWBW->beginTransaction(); $query = "INSERT INTO "._TABLE_USER_WBW_BLOCK_." ('id','parent_id','channal','parent_channel','owner','book','paragraph','style','lang','status','modify_time','receive_time','create_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]
"; exit; } else { //逐词解析block块复刻成功 $count = count($arrNewBlock); echo "wbw block $count recorders.
"; } } //删除逐词解析数据块 if(isset($destId)){ $query = "DELETE from "._TABLE_USER_WBW_." where block_id = ? "; $stmt = $dbhWBW->prepare($query); $stmt->execute($destId); } if (count($arrNewBlockData) > 0) { // 开始一个事务,逐词解析数据 关闭自动提交 $dbhWBW->beginTransaction(); $query = "INSERT INTO "._TABLE_USER_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]
"; exit; } else { //逐词解析 数据 复刻成功 $count = count($arrNewBlockData); echo "new wbw $count recorders."; } } { //成功 echo "doc list updata 1 recorders."; echo "
"; echo "

复刻成功

"; echo "正在打开文档"; echo ""; } } } } } } echo ""; ?>