project.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link type="text/css" rel="stylesheet" href="css/style.css"/>
  7. <link type="text/css" rel="stylesheet" href="css/color_day.css" id="colorchange" />
  8. <link type="text/css" rel="stylesheet" href="css/style_mobile.css" media="screen and (max-width:767px)">
  9. </head>
  10. <body>
  11. <?php
  12. //工程文件操作
  13. //建立,
  14. require_once '../path.php';
  15. require_once "../public/_pdo.php";
  16. require_once "../public/function.php";
  17. require_once "../public/load_lang.php";
  18. require_once "./book_list_en.inc";
  19. require_once "../ucenter/function.php";
  20. $sLang["1"]="pali";
  21. $sLang["2"]="en";
  22. $sLang["3"]="sc";
  23. $sLang["4"]="tc";
  24. if(isset($_POST["op"])){
  25. $op=$_POST["op"];
  26. }
  27. if(isset($_GET["op"])){
  28. $op=$_GET["op"];
  29. }
  30. if(isset($_POST["data"])){
  31. $data=$_POST["data"];
  32. }
  33. else if(isset($_GET["data"])){
  34. $data=$_GET["data"];
  35. }
  36. if($_COOKIE["uid"]){
  37. $uid = $_COOKIE["uid"];
  38. $USER_ID = $_COOKIE["userid"];
  39. $USER_NAME = $_COOKIE["username"];
  40. }
  41. else{
  42. echo '<a href="../ucenter/index.php" target="_blank">'.$_local->gui->not_login.'</a>';
  43. exit;
  44. }
  45. switch($op){
  46. case "create":
  47. //判断单词数量 太大的不能加载
  48. $res=json_decode($data);
  49. $res_book = $res[0]->book;
  50. $paraList=$res[0]->parlist;
  51. $paraList=rtrim($paraList,",");
  52. $strQueryParaList=str_replace(",","','",$paraList);
  53. $strQueryParaList="('".$strQueryParaList."')";
  54. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  55. $query="SELECT sum(lenght) as sum_str FROM pali_text WHERE \"book\" = ".$PDO->quote($res_book)." AND (\"paragraph\" in {$strQueryParaList} ) ";
  56. $Fetch = PDO_FetchAll($query);
  57. if(count($Fetch)>0){
  58. if($Fetch[0]["sum_str"]>15000){
  59. echo $_local->gui->oversize_to_load;
  60. exit;
  61. }
  62. }
  63. //判断单词数量 结束
  64. if(isset($_POST["format"]) && $_POST["format"]=="db"){
  65. $res=json_decode($data);
  66. $title=$res[0]->title;
  67. $title_en=pali2english($title);
  68. $book=$res[0]->book;
  69. if(substr($book,0,1)=="p"){
  70. $book=substr($book,1);
  71. }
  72. $paragraph=$res[0]->parNum;
  73. $tag="[$title]";
  74. $paraList=$res[0]->parlist;
  75. $paraList=rtrim($paraList,",");
  76. $strQueryParaList=str_replace(",","','",$paraList);
  77. $strQueryParaList="('".$strQueryParaList."')";
  78. $aParaList=str_getcsv($paraList);
  79. $create_para=$aParaList[0];
  80. echo $strQueryParaList;
  81. echo "<textarea>";
  82. print_r($res);
  83. echo "</textarea>";
  84. $user_title=$_POST["title"];
  85. $doc_head =" <head>\n";
  86. $doc_head.=" <type>pcdsset</type>\n";
  87. $doc_head.=" <mode>package</mode>\n";
  88. $doc_head.=" <ver>1</ver>\n";
  89. $doc_head.=" <toc></toc>\n";
  90. $doc_head.=" <style></style>\n";
  91. $doc_head.=" <doc_title>$user_title</doc_title>\n";
  92. $doc_head.=" <tag>$tag</tag>\n";
  93. $doc_head.=" <book>$book</book>\n";
  94. $doc_head.=" <paragraph>$paragraph</paragraph>\n";
  95. $doc_head.=" </head>\n";
  96. for($iRes=0;$iRes<count($res);$iRes++){
  97. $get_res_type=$res[$iRes]->type;
  98. echo "iRes: $iRes,type:$get_res_type<br/>";
  99. $res_album_id=$res[$iRes]->album_id;
  100. $res_book=$res[$iRes]->book;
  101. $get_par_begin=$res[$iRes]->parNum;
  102. $language=$res[$iRes]->language;
  103. $author=$res[$iRes]->author;
  104. $db_file = _FILE_DB_RESRES_INDEX_;
  105. PDO_Connect("sqlite:$db_file");
  106. $query = "select guid,owner from 'album' where id='{$res_album_id}'";
  107. $Fetch = PDO_FetchAll($query);
  108. if(count($Fetch)>0){
  109. $res_album_guid=$Fetch[0]["guid"];
  110. $res_album_owner=$Fetch[0]["owner"];
  111. }
  112. else{
  113. $res_album_guid=UUID::v4();
  114. $res_album_owner=0;
  115. }
  116. switch($get_res_type){
  117. case "6"://逐词译模板
  118. {
  119. $album_guid = UUID::v4();
  120. $album_title = "title";
  121. $album_author = "VRI";
  122. $album_type=$get_res_type;
  123. //获取段落层级和标题
  124. $para_title=array();
  125. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  126. $query="SELECT * FROM pali_text WHERE \"book\" = ".$PDO->quote($res_book)." AND (\"paragraph\" in {$strQueryParaList} ) AND level>0 AND level<9";
  127. $sth = $PDO->prepare($query);
  128. $sth->execute();
  129. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  130. {
  131. $paragraph = $result["paragraph"];
  132. $para_title["{$paragraph}"][0]=$result["level"];
  133. $para_title["{$paragraph}"][1]=$result["text"];
  134. }
  135. $db_file = _DIR_PALICANON_TEMPLET_."/p".$res_book."_tpl.db3";
  136. PDO_Connect("sqlite:$db_file");
  137. foreach($aParaList as $iPar){
  138. $query="SELECT * FROM 'main' WHERE (\"paragraph\" = ".$PDO->quote($iPar)." ) ";
  139. $sth = $PDO->prepare($query);
  140. $sth->execute();
  141. {
  142. if(isset($para_title["{$iPar}"])){
  143. $level=$para_title["{$iPar}"][0];
  144. $title=$para_title["{$iPar}"][1];
  145. }
  146. else{
  147. $level=100;
  148. $title="";
  149. }
  150. $block_id=UUID::v4();
  151. $block_data[] = array($block_id,"",$USER_ID,$book,$iPar,"_none_","zh-cn",1);
  152. $block_list[] = array("type"=>6,"block_id"=>$block_id);
  153. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  154. {
  155. if($result["gramma"]=="?"){
  156. $wGrammar="";
  157. }
  158. else{
  159. $wGrammar=$result["gramma"];
  160. }
  161. $strXml="<word>";
  162. $strXml.="<pali>{$result["word"]}</pali>";
  163. $strXml.="<real>{$result["real"]}</real>";
  164. $wordid = "p{$result["book"]}-{$result["paragraph"]}-{$result["wid"]}";
  165. $strXml.="<id>{$wordid}</id>";
  166. $strXml.="<type s=\"0\">{$result["type"]}</type>";
  167. $strXml.="<gramma s=\"0\">{$wGrammar}</gramma>";
  168. $strXml.="<mean s=\"0\"></mean>";
  169. $strXml.="<org s=\"0\">".mb_strtolower($result["part"], 'UTF-8')."</org>";
  170. $strXml.="<om s=\"0\"></om>";
  171. $strXml.="<case s=\"0\">{$result["type"]}#{$wGrammar}</case>";
  172. $strXml.="<style>{$result["style"]}</style>";
  173. $strXml.="<status>0</status>";
  174. $strXml.="</word>";
  175. $wbw_data[] = array(UUID::v4(),$block_id,$book,$iPar,$result["wid"],$result["real"],$strXml,time(),time(),1,$USER_NAME);
  176. }
  177. }
  178. }
  179. //写入数据库
  180. // 开始一个事务,关闭自动提交
  181. PDO_Connect("sqlite:"._FILE_DB_USER_WBW_);
  182. $PDO->beginTransaction();
  183. $query="INSERT INTO wbw_block ('id','parent_id','owner','book','paragraph','style','lang','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?)";
  184. $stmt = $PDO->prepare($query);
  185. foreach($block_data as $oneParam){
  186. $stmt->execute($oneParam);
  187. }
  188. // 提交更改
  189. $PDO->commit();
  190. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  191. $error = PDO_ErrorInfo();
  192. echo "error - $error[2] <br>";
  193. }
  194. else{
  195. $count=count($block_data);
  196. echo "updata $count recorders.";
  197. }
  198. // 开始一个事务,关闭自动提交
  199. $PDO->beginTransaction();
  200. $query="INSERT INTO wbw ('id','block_id','book','paragraph','wid','word','data','modify_time','receive_time','status','owner') VALUES (?,?,?,?,?,?,?,?,?,?,?)";
  201. $stmt = $PDO->prepare($query);
  202. foreach($wbw_data as $oneParam){
  203. $stmt->execute($oneParam);
  204. }
  205. // 提交更改
  206. $PDO->commit();
  207. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  208. $error = PDO_ErrorInfo();
  209. echo "error - $error[2] <br>";
  210. }
  211. else{
  212. $count=count($block_data);
  213. echo "updata $count recorders.";
  214. }
  215. //服务器端文件列表
  216. $db_file = _FILE_DB_FILEINDEX_;
  217. PDO_Connect("sqlite:$db_file");
  218. $query="INSERT INTO fileindex ('id',
  219. 'parent_id',
  220. 'user_id',
  221. 'book',
  222. 'paragraph',
  223. 'file_name',
  224. 'title',
  225. 'tag',
  226. 'status',
  227. 'create_time',
  228. 'modify_time',
  229. 'accese_time',
  230. 'file_size',
  231. 'share',
  232. 'doc_info',
  233. 'doc_block',
  234. 'receive_time'
  235. )
  236. VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  237. $stmt = $PDO->prepare($query);
  238. $doc_id=UUID::v4();
  239. $file_name = $book . '_' . $create_para . '_' . time();
  240. $newData=array(
  241. $doc_id,
  242. "",
  243. $uid,
  244. $book,
  245. $create_para,
  246. $file_name,
  247. $user_title,
  248. $tag,
  249. 1,
  250. mTime(),
  251. mTime(),
  252. mTime(),
  253. $filesize,
  254. 0,
  255. $doc_head,
  256. json_encode($block_list, JSON_UNESCAPED_UNICODE),
  257. mTime()
  258. );
  259. $stmt->execute($newData);
  260. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  261. $error = PDO_ErrorInfo();
  262. echo "error - $error[2] <br>";
  263. }
  264. else{
  265. echo "成功新建一个文件.";
  266. }
  267. echo "<a href=\"editor.php?op=opendb&doc_id={$doc_id}\">{$_local->gui->open}</a>";
  268. }
  269. break;
  270. }
  271. }
  272. }
  273. else
  274. {
  275. if(!isset($data)){
  276. $dl_file_name=$dir_user_base.$USER_ID."/dl.json";
  277. $data=file_get_contents($dl_file_name);
  278. }
  279. $res=json_decode($data);
  280. $title=$res[0]->title;
  281. $title_en=pali2english($title);
  282. $book=$res[0]->book;
  283. if(substr($book,0,1)=="p"){
  284. $book=substr($book,1);
  285. }
  286. $paragraph=$res[0]->parNum;
  287. $tag="[$title]";
  288. $paraList=$res[0]->parlist;
  289. $paraList=rtrim($paraList,",");
  290. $strQueryParaList=str_replace(",","','",$paraList);
  291. $strQueryParaList="('".$strQueryParaList."')";
  292. $aParaList=str_getcsv($paraList);
  293. echo $strQueryParaList;
  294. echo "<textarea>";
  295. print_r($res);
  296. echo "</textarea>";
  297. if(!isset($_POST["title"])){
  298. $thisFileName=basename(__FILE__);
  299. echo "<div class='fun_block'>";
  300. echo "<h2>新建工程</h2>";
  301. echo "<form action=\"{$thisFileName}\" method=\"post\">";
  302. echo "<input type='hidden' name='op' value='{$op}'/>";
  303. echo "<input type='hidden' name='data' value='{$data}'/>";
  304. echo "Project Title:<input type='input' name='title' value='{$title}'/><br>";
  305. echo "<input type=\"checkbox\" name='new_tran' />自动新建译文<br>";
  306. echo "<input type=\"submit\" value='Load'>";
  307. echo "<select name='format'>";
  308. echo "<option value='db'>".$_local->gui->database."</option>";
  309. echo "<option value='file'>file</option>";
  310. echo "</select>";
  311. echo "</form>";
  312. echo "</div>";
  313. echo "</body>";
  314. exit;
  315. }
  316. $user_title=$_POST["title"];
  317. $create_para=$paragraph;
  318. $FileName = $book."_".$paragraph."_".time().".pcs";
  319. $sFullFileName=_DIR_USER_BASE_."/".$USER_ID._DIR_MYDOCUMENT_."/".$FileName;
  320. echo "filename:".$sFullFileName;
  321. $myfile = fopen($sFullFileName, "w") or die("Unable to open file!");
  322. $strXml="<set>\n";
  323. $doc_head =" <head>\n";
  324. $doc_head.=" <type>pcdsset</type>\n";
  325. $doc_head.=" <mode>package</mode>\n";
  326. $doc_head.=" <ver>1</ver>\n";
  327. $doc_head.=" <toc></toc>\n";
  328. $doc_head.=" <style></style>\n";
  329. $doc_head.=" <doc_title>$user_title</doc_title>\n";
  330. $doc_head.=" <tag>$tag</tag>\n";
  331. $doc_head.=" <book>$book</book>\n";
  332. $doc_head.=" <paragraph>$paragraph</paragraph>\n";
  333. $doc_head.=" </head>\n";
  334. $strXml.=$doc_head;
  335. $strXml.=" <dict></dict>\n";
  336. $strXml.=" <message></message>\n";
  337. $strXml.=" <body>\n";
  338. fwrite($myfile, $strXml);
  339. echo "count res:".count($res)."<br>";
  340. for($iRes=0;$iRes<count($res);$iRes++){
  341. $get_res_type=$res[$iRes]->type;
  342. echo "iRes: $iRes,type:$get_res_type<br/>";
  343. $res_album_id=$res[$iRes]->album_id;
  344. $res_book=$res[$iRes]->book;
  345. $get_par_begin=$res[$iRes]->parNum;
  346. $language=$res[$iRes]->language;
  347. $author=$res[$iRes]->author;
  348. $db_file = _FILE_DB_RESRES_INDEX_;
  349. PDO_Connect("sqlite:$db_file");
  350. $query = "select guid,owner from 'album' where id='{$res_album_id}'";
  351. $Fetch = PDO_FetchAll($query);
  352. if(count($Fetch)>0){
  353. $res_album_guid=$Fetch[0]["guid"];
  354. $res_album_owner=$Fetch[0]["owner"];
  355. }
  356. else{
  357. $res_album_guid=UUID::v4();
  358. $res_album_owner=0;
  359. }
  360. switch($get_res_type){
  361. case "1"://pali text
  362. {
  363. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  364. $query="SELECT * FROM pali_text WHERE \"book\" = ".$PDO->quote($res_book)." AND (\"paragraph\" in {$strQueryParaList} ) ";
  365. $sth = $PDO->prepare($query);
  366. $sth->execute();
  367. echo $query."<br/>";
  368. {
  369. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  370. {
  371. $text = $result["text"];
  372. $paragraph = $result["paragraph"];
  373. $strXml = "<block>";
  374. $strXml .= "<info>";
  375. $strXml .= "<type>palitext</type>";
  376. $strXml .= "<book>{$book}</book>";
  377. $strXml .= "<paragraph>{$result["paragraph"]}</paragraph>";
  378. $strXml .= "<album_id>{$result["album_index"]}</album_id>";
  379. $strXml .= "<album_guid>{$res_album_guid}</album_guid>";
  380. $strXml .= "<author>VRI</author>";
  381. $strXml .= "<language>pali</language>";
  382. $strXml .= "<version>4</version>";
  383. $strXml .= "<edition>CSCD4</edition>";
  384. $strXml .= "<level>{$result["level"]}</level>";
  385. $strXml .= "<id>".UUID::v4()."</id>";
  386. $strXml .= "</info>";
  387. $strXml .= "<data><text>{$result["text"]}</text></data>";
  388. $strXml .= "</block>";
  389. fwrite($myfile, $strXml);
  390. if($result["level"]>0 && $result["level"]<9){
  391. $strXml = "<block>";
  392. $strXml .= "<info>";
  393. $strXml .= "<type>heading</type>";
  394. $strXml .= "<book>{$book}</book>";
  395. $strXml .= "<paragraph>{$result["paragraph"]}</paragraph>";
  396. $strXml .= "<album_id>{$result["album_index"]}</album_id>";
  397. $strXml .= "<album_guid>{$res_album_guid}</album_guid>";
  398. $strXml .= "<author>VRI</author>";
  399. $strXml .= "<language>pali</language>";
  400. $strXml .= "<version>4</version>";
  401. $strXml .= "<edition>CSCD4</edition>";
  402. $strXml .= "<level>{$result["level"]}</level>";
  403. $strXml .= "<id>".UUID::v4()."</id>";
  404. $strXml .= "</info>";
  405. $strXml .= "<data><text>{$result["text"]}</text></data>";
  406. $strXml .= "</block>";
  407. fwrite($myfile, $strXml);
  408. }
  409. else{
  410. }
  411. }
  412. }
  413. break;
  414. }
  415. case "2"://wbw逐词解析
  416. {
  417. //$res_album_id;
  418. $album_title = "title";
  419. $album_author = $author;
  420. $album_type=$get_res_type;
  421. $db_file = _DIR_PALICANON_WBW_."/p{$res_book}_wbw.db3";
  422. $table_info="p{$res_book}_wbw_info";
  423. $table_data="p{$res_book}_wbw_data";
  424. PDO_Connect("sqlite:$db_file");
  425. foreach($aParaList as $iPar){
  426. $query="SELECT * FROM '{$table_info}' WHERE paragraph = ".$PDO->quote($iPar)." and album_id=".$PDO->quote($res_album_id);
  427. //$FetchInfo = PDO_FetchAll($query);
  428. echo $query."<br>";
  429. $sth = $PDO->prepare($query);
  430. $sth->execute();
  431. echo "para:{$iPar} row:".$sth->rowCount();
  432. if($result = $sth->fetch(PDO::FETCH_ASSOC))
  433. {
  434. $lang=$sLang["{$result["language"]}"];
  435. $info_id=$result["id"];
  436. $strXml = "<block>";
  437. $strXml .= "<info>";
  438. $strXml .= "<type>wbw</type>";
  439. $strXml .= "<book>{$res_book}</book>";
  440. $strXml .= "<paragraph>{$iPar}</paragraph>";
  441. $strXml .= "<level>{$result["level"]}</level>";
  442. $strXml .= "<title>{$result["title"]}</title>";
  443. $strXml .= "<album_id>{$res_album_id}</album_id>";
  444. $strXml .= "<album_guid>{$res_album_guid}</album_guid>";
  445. $strXml .= "<author>{$result["author"]}</author>";
  446. $strXml .= "<language>{$lang}</language>";
  447. $strXml .= "<version>{$result["version"]}</version>";
  448. $strXml .= "<edition>{$result["edition"]}</edition>";
  449. $strXml .= "<id>".UUID::v4()."</id>";
  450. $strXml .= "</info>\n";
  451. $strXml .= "<data>";
  452. fwrite($myfile, $strXml);
  453. $query="SELECT * FROM \"{$table_data}\" WHERE info_id=".$PDO->quote($info_id);
  454. $sth = $PDO->prepare($query);
  455. $sth->execute();
  456. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  457. {
  458. $wid="p{$res_book}-{$iPar}-{$result["sn"]}";
  459. $strXml="<word>";
  460. $strXml.="<pali>{$result["word"]}</pali>";
  461. $strXml.="<real>{$result["real"]}</real>";
  462. $strXml.="<id>{$wid}</id>";
  463. $strXml.="<type>{$result["type"]}</type>";
  464. $strXml.="<gramma>{$result["gramma"]}</gramma>";
  465. $strXml.="<mean>{$result["mean"]}</mean>";
  466. $strXml.="<note>{$result["note"]}</note>";
  467. $strXml.="<org>{$result["part"]}</org>";
  468. $strXml.="<om>{$result["partmean"]}</om>";
  469. $strXml.="<case>{$result["type"]}#{$result["gramma"]}</case>";
  470. $strXml.="<style>{$result["style"]}</style>";
  471. $strXml.="<enter>{$result["enter"]}</enter>";
  472. $strXml.="<status>0</status>";
  473. $strXml.="</word>\n";
  474. fwrite($myfile, $strXml);
  475. }
  476. $strXml="</data>\n</block>";
  477. fwrite($myfile, $strXml);
  478. }
  479. }
  480. break;
  481. }
  482. case "3"://translate
  483. {
  484. //打开翻译数据文件
  485. $db_file = _DIR_PALICANON_TRAN_."/p{$book}_translate.db3";
  486. PDO_Connect("sqlite:$db_file");
  487. $table="p{$book}_translate_info";
  488. //部分段落
  489. $query="SELECT * FROM {$table} WHERE paragraph in {$strQueryParaList} and album_id=$res_album_id";
  490. echo $query."<br/>";
  491. //查询翻译经文内容
  492. $FetchText = PDO_FetchAll($query);
  493. $iFetchText = count($FetchText);
  494. echo "iFetchText:{$iFetchText}<br/>";
  495. if($iFetchText>0){
  496. for($i=0;$i<$iFetchText;$i++){
  497. $currParNo = $FetchText[$i]["paragraph"];
  498. $language = $FetchText[$i]["language"];
  499. $language = $sLang["{$language}"];
  500. if($res_album_owner == $UID){
  501. $power = "write";
  502. }
  503. else{
  504. $power = "read";
  505. }
  506. //输出数据头
  507. $strXml="<block>";
  508. $strXml.="<info>";
  509. $strXml.="<type>translate</type>";
  510. $strXml.="<book>{$res_book}</book>";
  511. $strXml.="<paragraph>{$currParNo}</paragraph>";
  512. $strXml.="<album_id>{$res_album_id}</album_id>";
  513. $strXml.="<album_guid>{$res_album_guid}</album_guid>";
  514. $strXml.="<author>{$FetchText[$i]["author"]}</author>";
  515. $strXml.="<editor>{$FetchText[$i]["editor"]}</editor>";
  516. $strXml.="<language>{$language}</language>";
  517. $strXml.="<version>{$FetchText[$i]["version"]}</version>";
  518. $strXml.="<edition>{$FetchText[$i]["edition"]}</edition>";
  519. $strXml.="<level>{$FetchText[$i]["level"]}</level>";
  520. $strXml.="<readonly>0</readonly>";
  521. $strXml.="<power>{$power}</power>";
  522. $strXml.="<id>".UUID::v4()."</id>";
  523. $strXml.="</info>";
  524. $strXml.="<data>";
  525. fwrite($myfile, $strXml);
  526. //查另一个表,获取段落文本。一句一条记录。有些是一段一条记录
  527. $table_data = "p{$book}_translate_data";
  528. $query = "SELECT * FROM '{$table_data}' WHERE info_id={$FetchText[$i]["id"]}";
  529. $aParaText = PDO_FetchAll($query);
  530. //输出数据内容
  531. $par_text="";
  532. foreach($aParaText as $sent){
  533. $par_text .= "<sen><begin>{$sent["begin"]}</begin>
  534. <end>{$sent["end"]}</end>
  535. <text>{$sent["text"]}</text></sen>";
  536. }
  537. fwrite($myfile, $par_text);
  538. //段落块结束
  539. $strXml = "</data></block>";
  540. fwrite($myfile, $strXml);
  541. //获取段落文本结束。
  542. }
  543. }
  544. break;
  545. }
  546. case "4"://note
  547. break;
  548. case "5":
  549. break;
  550. case "6"://逐词译模板
  551. {
  552. $album_guid = UUID::v4();
  553. $album_title = "title";
  554. $album_author = "VRI";
  555. $album_type=$get_res_type;
  556. //获取段落层级和标题
  557. $para_title=array();
  558. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  559. $query="SELECT * FROM pali_text WHERE \"book\" = ".$PDO->quote($res_book)." AND (\"paragraph\" in {$strQueryParaList} ) AND level>0 AND level<9";
  560. $sth = $PDO->prepare($query);
  561. $sth->execute();
  562. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  563. {
  564. $paragraph = $result["paragraph"];
  565. $para_title["{$paragraph}"][0]=$result["level"];
  566. $para_title["{$paragraph}"][1]=$result["text"];
  567. }
  568. $db_file = _DIR_PALICANON_TEMPLET_."/p".$res_book."_tpl.db3";
  569. PDO_Connect("sqlite:$db_file");
  570. foreach($aParaList as $iPar){
  571. $query="SELECT * FROM 'main' WHERE (\"paragraph\" = ".$PDO->quote($iPar)." ) ";
  572. $sth = $PDO->prepare($query);
  573. $sth->execute();
  574. {
  575. if(isset($para_title["{$iPar}"])){
  576. $level=$para_title["{$iPar}"][0];
  577. $title=$para_title["{$iPar}"][1];
  578. }
  579. else{
  580. $level=100;
  581. $title="";
  582. }
  583. $strXml="<block>";
  584. $strXml.="<info>";
  585. $strXml.="<type>wbw</type>";
  586. $strXml.="<book>{$book}</book>";
  587. $strXml.="<paragraph>{$iPar}</paragraph>";
  588. $strXml.="<level>{$level}</level>";
  589. $strXml.="<title>{$title}</title>";
  590. $strXml.="<album_id>-1</album_id>";
  591. $strXml.="<album_guid>{$album_guid}</album_guid>";
  592. $strXml.="<author>{$USER_NAME}</author>";
  593. $strXml.="<editor>{$USER_NAME}</editor>";
  594. $strXml.="<language>en</language>";
  595. $strXml.="<version>1</version>";
  596. $strXml.="<edition></edition>";
  597. $strXml.="<splited>0</splited>";
  598. $strXml.="<id>".UUID::v4()."</id>";
  599. $strXml.="</info>\n";
  600. $strXml.="<data>";
  601. fwrite($myfile, $strXml);
  602. while($result = $sth->fetch(PDO::FETCH_ASSOC))
  603. {
  604. if($result["gramma"]=="?"){
  605. $wGrammar="";
  606. }
  607. else{
  608. $wGrammar=$result["gramma"];
  609. }
  610. $strXml="<word>";
  611. $strXml.="<pali>{$result["word"]}</pali>";
  612. $strXml.="<real>{$result["real"]}</real>";
  613. $strXml.="<id>{$result["wid"]}</id>";
  614. $strXml.="<type status=\"0\">{$result["type"]}</type>";
  615. $strXml.="<gramma status=\"0\">{$wGrammar}</gramma>";
  616. $strXml.="<mean status=\"0\">?</mean>";
  617. $strXml.="<org status=\"0\">".mb_strtolower($result["part"], 'UTF-8')."</org>";
  618. $strXml.="<om status=\"0\">?</om>";
  619. $strXml.="<case status=\"0\">{$result["type"]}#{$wGrammar}</case>";
  620. $strXml.="<style>{$result["style"]}</style>";
  621. $strXml.="<status>0</status>";
  622. $strXml.="</word>";
  623. fwrite($myfile, $strXml);
  624. }
  625. $strXml="</data>\n</block>";
  626. fwrite($myfile, $strXml);
  627. }
  628. }
  629. break;
  630. }
  631. }
  632. /*查询结束*/
  633. }
  634. /*
  635. 自动新建译文
  636. */
  637. if(isset($_POST["new_tran"])){
  638. $new_tran=$_POST["new_tran"];
  639. if($new_tran=="on"){
  640. $album_guid = UUID::v4();
  641. foreach($aParaList as $iPar){
  642. $strXml="<block>";
  643. $strXml.="<info>";
  644. $strXml.="<album_id>-1</album_id>";
  645. $strXml.="<album_guid>{$album_guid}</album_guid>";
  646. $strXml.="<type>translate</type>";
  647. $strXml.="<paragraph>{$iPar}</paragraph>";
  648. $strXml.="<book>{$book}</book>";
  649. $strXml.="<author>{$author}</author>";
  650. $strXml.="<language>en</language>";
  651. $strXml.="<version>0</version>";
  652. $strXml.="<edition>0</edition>";
  653. $strXml.="<id>".UUID()::v4."</id>";
  654. $strXml.="</info>";
  655. $strXml.="<data>";
  656. $strXml.="<sen><begin></begin><end></end><text>new translate</text></sen>";
  657. $strXml.="</data>";
  658. $strXml.="</block>\n";
  659. fwrite($myfile, $strXml);
  660. }
  661. }
  662. }
  663. $strXml=" </body>\n";
  664. $strXml.="</set>\n";
  665. fwrite($myfile, $strXml);
  666. fclose($myfile);
  667. echo "<p>save ok</p>";
  668. $filesize=filesize($sFullFileName);
  669. //服务器端文件列表
  670. $db_file = _FILE_DB_FILEINDEX_;
  671. PDO_Connect("sqlite:$db_file");
  672. $query="INSERT INTO fileindex ('id',
  673. 'parent_id',
  674. 'user_id',
  675. 'book',
  676. 'paragraph',
  677. 'file_name',
  678. 'title',
  679. 'tag',
  680. 'status',
  681. 'create_time',
  682. 'modify_time',
  683. 'accese_time',
  684. 'file_size',
  685. 'share',
  686. 'doc_info',
  687. 'doc_block',
  688. 'receive_time'
  689. )
  690. VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  691. $stmt = $PDO->prepare($query);
  692. $doc_id=UUID::v4();
  693. $newData=array($doc_id,
  694. "",
  695. $uid,
  696. $book,
  697. $create_para,
  698. $FileName,
  699. $user_title,
  700. $tag,
  701. 1,
  702. mTime(),
  703. mTime(),
  704. mTime(),
  705. $filesize,
  706. 0,
  707. "",
  708. "",
  709. mTime()
  710. );
  711. $stmt->execute($newData);
  712. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  713. $error = PDO_ErrorInfo();
  714. echo "error - $error[2] <br>";
  715. }
  716. else{
  717. echo "updata 1 recorders.";
  718. }
  719. echo "<a href=\"editor.php?op=open&fileid={$doc_id}\">正在跳转</a>";
  720. echo "<script>";
  721. echo "window.location.assign(\"editor.php?op=open&fileid={$doc_id}\");";
  722. echo "</script>";
  723. break;
  724. }
  725. case "open":
  726. {
  727. /*打开工程文件
  728. 三种情况
  729. 1.自己的文档
  730. 2.别人的共享文档,自己以前没有打开过。复制到自己的空间,再打开。
  731. 3.别人的共享文档,自己以前打开过。直接打开
  732. */
  733. if($_COOKIE["uid"]){
  734. $uid=$_COOKIE["uid"];
  735. }
  736. else{
  737. echo "<h3><a href='../ucenter/index.php?op=login'>{$_local->gui->login}</a>后才可以打开文档</h3>";
  738. exit;
  739. }
  740. $db_file = _FILE_DB_FILEINDEX_;
  741. PDO_Connect("sqlite:$db_file");
  742. if(isset($_GET["doc_id"])){
  743. $doc_id=$_GET["doc_id"];
  744. $query = "select * from fileindex where id='$doc_id' ";
  745. $Fetch = PDO_FetchAll($query);
  746. $iFetch=count($Fetch);
  747. if($iFetch>0){
  748. //文档信息
  749. $owner=$Fetch[0]["user_id"];
  750. $filename=$Fetch[0]["file_name"];
  751. $title=$Fetch[0]["title"];
  752. $tag=$Fetch[0]["tag"];
  753. $mbook=$Fetch[0]["book"];
  754. $paragraph=$Fetch[0]["paragraph"];
  755. $doc_head=$Fetch[0]["doc_info"];
  756. if($owner==$uid){
  757. //自己的文档
  758. echo "<h3>{$_local->gui->my_document}</h3>";
  759. $my_doc_id=$doc_id;
  760. echo "<a href=\"editor.php?op=opendb&fileid={$doc_id}\">{$_local->gui->open_doc}</a>";
  761. echo "<script>";
  762. echo "window.location.assign(\"editor.php?op=opendb&fileid={$doc_id}\");";
  763. echo "</script>";
  764. }
  765. else{
  766. //别人的文档
  767. //查询自己是否以前打开过
  768. $query = "select * from fileindex where parent_id='$doc_id' and user_id='$uid' ";
  769. $FetchSelf = PDO_FetchAll($query);
  770. $iFetchSelf=count($FetchSelf);
  771. if($iFetchSelf>0){
  772. //以前打开过
  773. echo "已经复制的文档 Already Copy";
  774. $my_doc_id=$FetchSelf[0]["id"];
  775. echo "<a href='../studio/editor.php?op=opendb&fileid={$doc_id}'>Open in Studio</a>";
  776. echo "<script>";
  777. echo "window.location.assign(\"editor.php?op=opendb&fileid={$doc_id}\");";
  778. echo "</script>";
  779. }
  780. else{
  781. //以前没打开过
  782. //询问是否打开
  783. if(isset($_GET["openin"])){
  784. $open_in=$_GET["openin"];
  785. }
  786. else{
  787. ?>
  788. <p><?php echo $_local->gui->co_doc?>,<?php echo $_local->gui->open?>?</p>
  789. <div>
  790. 文档信息:
  791. <ul>
  792. <?php
  793. $book_name=$book["p".$mbook];
  794. echo "<li>Owner:".ucenter_get($owner)."</li>";
  795. echo "<li>Title:{$title}</li>";
  796. echo "<li>Book:{$book_name}</li>";
  797. ?>
  798. </ul>
  799. </div>
  800. <p><?php echo $_local->gui->open_with?>:</p>
  801. <ul>
  802. <li style="display:none;"><a href="../pcdl/reader.php?file=<?php echo $doc_id;?>"><?php echo $_local->gui->reader;?>(<?php echo $_local->gui->read_only;?>)</a></li>
  803. <?php
  804. if(empty($doc_head)){
  805. echo '<li><a href="../studio/project.php?op=open&doc_id='.$doc_id.'&openin=editor">复制到我的空间用编辑器打开</a></li>';
  806. }
  807. else{
  808. echo '<li>'.$_local->gui->pcd_studio.'<a href="../doc/fork.php?doc_id='.$doc_id.'">'.$_local->gui->folk.$_local->gui->and.$_local->gui->edit.'</a></li>';
  809. }
  810. ?>
  811. </ul>
  812. <?php
  813. exit;
  814. }
  815. if($open_in=="editor"){
  816. //获取文件路径
  817. echo "共享的文档,复制并打开...";
  818. $db_file = _FILE_DB_USERINFO_;
  819. PDO_Connect("sqlite:$db_file");
  820. $query = "select userid from user where id='$owner'";
  821. $FetchUid = PDO_FetchOne($query);
  822. if($FetchUid){
  823. $source=_DIR_USER_BASE_."/".$FetchUid._DIR_MYDOCUMENT_."/".$filename;
  824. $dest=_DIR_USER_BASE_."/".$_COOKIE["userid"] ._DIR_MYDOCUMENT_."/".$filename;
  825. }
  826. echo "<div>源文件{$source}</div>";
  827. echo "<div>目标文件{$dest}</div>";
  828. if(copy($source,$dest)){
  829. echo "复制文件成功";
  830. $my_file_name=$filename;
  831. //插入记录到文件索引
  832. $filesize=filesize($dest);
  833. //服务器端文件列表
  834. $db_file = _FILE_DB_FILEINDEX_;
  835. PDO_Connect("sqlite:$db_file");
  836. //$query="INSERT INTO fileindex ('id','userid','parent_id','doc_id','book','paragraph','file_name','title','tag','create_time','modify_time','accese_time','file_size')
  837. // VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?)";
  838. //$stmt = $PDO->prepare($query);
  839. //$newData=array($uid,$doc_id,UUID::v4(),$mbook,$paragraph,$filename,$title,$tag,time(),time(),time(),$filesize);
  840. $query="INSERT INTO fileindex ('id',
  841. 'parent_id',
  842. 'user_id',
  843. 'book',
  844. 'paragraph',
  845. 'file_name',
  846. 'title',
  847. 'tag',
  848. 'status',
  849. 'create_time',
  850. 'modify_time',
  851. 'accese_time',
  852. 'file_size',
  853. 'share',
  854. 'doc_info',
  855. 'doc_block',
  856. 'receive_time'
  857. )
  858. VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  859. $stmt = $PDO->prepare($query);
  860. $newdoc_id=UUID::v4();
  861. $newData=array(
  862. $newdoc_id,
  863. $doc_id,
  864. $uid,
  865. $mbook,
  866. $paragraph,
  867. $filename,
  868. $title,
  869. $tag,
  870. 1,
  871. mTime(),
  872. mTime(),
  873. mTime(),
  874. $filesize,
  875. 0,
  876. "",
  877. "",
  878. mTime()
  879. );
  880. $stmt->execute($newData);
  881. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  882. $error = PDO_ErrorInfo();
  883. echo "error - $error[2] <br>";
  884. $my_doc_id="";
  885. }
  886. else{
  887. $my_doc_id = newdoc_id;
  888. echo "updata 1 recorders.";
  889. }
  890. }
  891. else{
  892. echo "复制文件失败";
  893. $my_doc_id="";
  894. }
  895. }
  896. else{
  897. echo "错误-无法识别的操作:open in:{$open_in}";
  898. $my_doc_id="";
  899. }
  900. }
  901. }
  902. /*
  903. if($my_doc_id!=""){
  904. echo "<script>";
  905. echo "window.location.assign(\"editor.php?op=open&fileid={$my_doc_id}\");";
  906. echo "</script>";
  907. }
  908. */
  909. }
  910. else{
  911. echo "未知的文档。可能该文件已经被删除。";
  912. }
  913. }
  914. }
  915. break;
  916. case "openfile":
  917. break;
  918. case "save":
  919. break;
  920. }
  921. ?>
  922. </body>