国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

155 行
6.3KB

  1. <?php
  2. /**
  3. * 文档描述管理
  4. *
  5. * @version $Id: article_description_main.php 1 14:12 2010年7月12日Z tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022, DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. @ob_start();
  12. @set_time_limit(3600);
  13. require_once(dirname(__FILE__)."/config.php");
  14. CheckPurview('sys_Keyword');
  15. if (empty($dojob)) $dojob = '';
  16. if ($dojob == '') {
  17. include DedeInclude("templets/article_description_main.htm");
  18. exit();
  19. } else {
  20. if (empty($startdd)) $startdd = 0;
  21. if (empty($pagesize)) $pagesize = 30;
  22. if (empty($totalnum)) $totalnum = 0;
  23. if (empty($sid)) $sid = 0;
  24. if (empty($eid)) $eid = 0;
  25. if (empty($dojob)) $dojob = 'des';
  26. $table = preg_replace("#[^0-9a-zA-Z_\#@]#", "", $table);
  27. $field = preg_replace("#[^0-9a-zA-Z_\[\]]#", "", $field);
  28. $channel = intval($channel);
  29. if ($dsize > 250) $dsize = 250;
  30. $tjnum = 0;
  31. //获取自动摘要
  32. if ($dojob == 'des') {
  33. if (empty($totalnum)) {
  34. $addquery = "";
  35. if ($sid != 0) {
  36. $addquery .= " AND id>='$sid' ";
  37. }
  38. if ($eid != 0) {
  39. $addquery .= " AND id<='$eid' ";
  40. }
  41. $tjQuery = "SELECT COUNT(*) AS dd FROM #@__archives WHERE channel='{$channel}' $addquery";
  42. $row = $dsql->GetOne($tjQuery);
  43. $totalnum = $row['dd'];
  44. }
  45. if ($totalnum > 0) {
  46. $addquery = "";
  47. if ($sid != 0) {
  48. $addquery .= " AND #@__archives.id>='$sid' ";
  49. }
  50. if ($eid != 0) {
  51. $addquery .= " AND #@__archives.id<='$eid' ";
  52. }
  53. $fquery = "SELECT #@__archives.id,#@__archives.title,#@__archives.description,{$table}.{$field}
  54. FROM #@__archives LEFT JOIN {$table} ON {$table}.aid=#@__archives.id
  55. WHERE #@__archives.channel='{$channel}' $addquery LIMIT $startdd,$pagesize ; ";
  56. $dsql->SetQuery($fquery);
  57. $dsql->Execute();
  58. while ($row = $dsql->GetArray()) {
  59. $body = $row[$field];
  60. $description = $row['description'];
  61. if (strlen($description) > 10 || $description == '-') {
  62. continue;
  63. }
  64. $bodytext = preg_replace("/#p#|#e#|副标题|分页标题/isU", "", Html2Text($body));
  65. if (strlen($bodytext) < $msize) {
  66. continue;
  67. }
  68. $des = trim(addslashes(cn_substr($bodytext, $dsize)));
  69. if (strlen($des) < 3) {
  70. $des = "-";
  71. }
  72. $dsql->ExecuteNoneQuery("UPDATE #@__archives SET description='{$des}' WHERE id='{$row['id']}';");
  73. }
  74. //返回进度信息
  75. $startdd = $startdd + $pagesize;
  76. if ($totalnum > $startdd) {
  77. $tjlen = ceil(($startdd / $totalnum) * 100);
  78. } else {
  79. $tjlen = 100;
  80. ShowMsg('完成所有任务', 'javascript:;');
  81. exit();
  82. }
  83. $dvlen = $tjlen * 2;
  84. $tjsta = "<div style='width:260px;height:16px;border:1px solid #28a745;text-align:left'><div style='width:$dvlen%;height:16px;background:#28a745'></div></div>";
  85. $tjsta .= "<br>完成处理文档总数的 $tjlen %";
  86. $nurl = "article_description_main.php?totalnum=$totalnum&startdd={$startdd}&pagesize=$pagesize&table={$table}&field={$field}&dsize={$dsize}&msize={$msize}&channel={$channel}&dojob={$dojob}";
  87. ShowMsg($tjsta, $nurl, 0, 500);
  88. exit();
  89. } else {
  90. ShowMsg('完成所有任务', 'javascript:;');
  91. exit();
  92. }
  93. }//获取自动摘要代码结束
  94. //更新自动分页
  95. if ($dojob == 'page') {
  96. require_once(DEDEADMIN."/inc/inc_archives_functions.php");
  97. $addquery = "";
  98. if ($sid != 0) {
  99. $addquery .= " and aid>='$sid' ";
  100. }
  101. if ($eid != 0) {
  102. $addquery .= " and aid<='$eid' ";
  103. }
  104. //统计记录总数
  105. if ($totalnum == 0) {
  106. $sql = "SELECT COUNT(*) AS dd FROM $table WHERE 1 $addquery";
  107. $row = $dsql->GetOne($sql);
  108. $totalnum = $row['dd'];
  109. }
  110. //获取记录,并分析
  111. if ($totalnum > $startdd + $pagesize) {
  112. $limitSql = " LIMIT $startdd,$pagesize";
  113. } else if (($totalnum - $startdd) > 0) {
  114. $limitSql = " LIMIT $startdd,".($totalnum - $startdd);
  115. } else {
  116. $limitSql = "";
  117. }
  118. $tjnum = $startdd;
  119. if ($limitSql != "") {
  120. $fquery = "SELECT aid,$field FROM $table WHERE 1 $addquery $limitSql ;";
  121. $dsql->SetQuery($fquery);
  122. $dsql->Execute();
  123. while ($row = $dsql->GetArray()) {
  124. $tjnum++;
  125. $body = $row[$field];
  126. $aid = $row['aid'];
  127. if (strlen($body) < $msize) {
  128. continue;
  129. }
  130. if (!preg_match("/#p#/iU", $body)) {
  131. $body = SpLongBody($body, $cfg_arcautosp_size * 1024, "#p#分页标题#e#");
  132. $body = addslashes($body);
  133. $dsql->ExecuteNoneQuery("UPDATE $table SET $field='$body' WHERE aid='$aid' ; ");
  134. }
  135. }
  136. }//end if limit
  137. //返回进度提示
  138. if ($totalnum > 0) {
  139. $tjlen = ceil(($tjnum / $totalnum) * 100);
  140. } else {
  141. $tjlen = 100;
  142. }
  143. $dvlen = $tjlen * 2;
  144. $tjsta = "<div style='width:260px;height:16px;border:1px solid #28a745;text-align:left'><div style='width:$dvlen%;height:16px;background:#28a745'></div></div>";
  145. $tjsta .= "<br>完成处理文档总数的 $tjlen %";
  146. if ($tjnum < $totalnum) {
  147. $nurl = "article_description_main.php?totalnum=$totalnum&startdd=".($startdd + $pagesize)."&pagesize=$pagesize&table={$table}&field={$field}&dsize={$dsize}&msize={$msize}&channel={$channel}&dojob={$dojob}";
  148. ShowMsg($tjsta, $nurl, 0, 500);
  149. exit();
  150. } else {
  151. ShowMsg('完成所有任务', 'javascript:;');
  152. exit();
  153. }
  154. }//更新自动分页处理代码结束
  155. }