国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
7.1KB

  1. <?php
  2. if (!defined('DEDEINC')) exit('dedebiz');
  3. /**
  4. * 文档操作处理函数
  5. *
  6. * @version $id:inc_batchup.php 13:52 2010年7月9日 tianya $
  7. * @package DedeBIZ.User
  8. * @copyright Copyright (c) 2022 DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license
  10. * @link https://www.dedebiz.com
  11. */
  12. require_once(DEDEINC."/channelunit.func.php");
  13. /**
  14. * 删除文档
  15. *
  16. * @access public
  17. * @param int $aid 文档id
  18. * @return bool
  19. */
  20. function DelArc($aid)
  21. {
  22. global $dsql, $cfg_cookie_encode, $cfg_ml, $cfg_upload_switch, $cfg_medias_dir;
  23. $aid = intval($aid);
  24. //读取文档信息
  25. $arctitle = '';
  26. $arcurl = '';
  27. $arcQuery = "SELECT arc.*,ch.addtable,tp.typedir,tp.typename,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,ch.nid FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel WHERE arc.id='$aid' ";
  28. $arcRow = $dsql->GetOne($arcQuery);
  29. if (!is_array($arcRow)) {
  30. return false;
  31. }
  32. //删除数据库的内容
  33. $dsql->ExecuteNoneQuery(" DELETE FROM `#@__arctiny` WHERE id='$aid' ");
  34. if ($arcRow['addtable'] != '') {
  35. //判断删除文档附件变量是否开启;
  36. if ($cfg_upload_switch == 'Y') {
  37. //判断文档属性;
  38. switch ($arcRow['nid']) {
  39. case "image":
  40. $nid = "imgurls";
  41. break;
  42. case "article":
  43. $nid = "body";
  44. break;
  45. case "soft":
  46. $nid = "softlinks";
  47. break;
  48. case "shop":
  49. $nid = "body";
  50. break;
  51. default:
  52. $nid = "";
  53. break;
  54. }
  55. if ($nid != "") {
  56. $row = $dsql->GetOne("SELECT $nid FROM ".$arcRow['addtable']." WHERE aid = '$aid'");
  57. $licp = $dsql->GetOne("SELECT litpic FROM `#@__archives` WHERE id = '$aid'");
  58. if ($licp['litpic'] != "") {
  59. $litpic = DEDEROOT.$licp['litpic'];
  60. if (file_exists($litpic) && !is_dir($litpic)) {
  61. @unlink($litpic);
  62. }
  63. }
  64. $tmpname = '/(\\'.$cfg_medias_dir.'.+?)(\"| )/';
  65. //取出文档附件
  66. preg_match_all("$tmpname", $row["$nid"], $delname);
  67. //移出重复附件
  68. $delname = array_unique($delname['1']);
  69. foreach ($delname as $var) {
  70. $dsql->ExecuteNoneQuery("DELETE FROM `#@__uploads` WHERE url='$var' AND mid = '$cfg_ml->M_ID'");
  71. $upname = DEDEROOT.$var;
  72. if (file_exists($upname) && !is_dir($upname)) @unlink($upname);
  73. }
  74. }
  75. }
  76. $dsql->ExecuteNoneQuery("DELETE FROM `".$arcRow['addtable']."` WHERE aid='$aid' ");
  77. }
  78. $dsql->ExecuteNoneQuery(" DELETE FROM `#@__archives` WHERE id='$aid' ");
  79. $dsql->ExecuteNoneQuery("DELETE FROM `#@__feedback` WHERE aid='$aid'");
  80. $dsql->ExecuteNoneQuery("DELETE FROM `#@__member_stow` WHERE aid='$aid'");
  81. $dsql->ExecuteNoneQuery("DELETE FROM `#@__taglist ` WHERE aid='$aid'");
  82. //删除HTML
  83. if ($arcRow['ismake'] == -1 || $arcRow['arcrank'] != 0 || $arcRow['typeid'] == 0 || $arcRow['money'] > 0) {
  84. return TRUE;
  85. }
  86. $arcurl = GetFileUrl(
  87. $arcRow['id'],
  88. $arcRow['typeid'],
  89. $arcRow['senddate'],
  90. $arcRow['title'],
  91. $arcRow['ismake'],
  92. $arcRow['arcrank'],
  93. $arcRow['namerule'],
  94. $arcRow['typedir'],
  95. $arcRow['money'],
  96. $arcRow['filename']
  97. );
  98. if (!preg_match("#\?#", $arcurl)) {
  99. $htmlfile = GetTruePath().str_replace($GLOBALS['cfg_basehost'], '', $arcurl);
  100. if (file_exists($htmlfile) && !is_dir($htmlfile)) {
  101. @unlink($htmlfile);
  102. $arcurls = explode(".", $htmlfile);
  103. $sname = $arcurls[count($arcurls) - 1];
  104. $fname = preg_replace("#(\.$sname)$#", "", $htmlfile);
  105. for ($i = 2; $i <= 100; $i++) {
  106. $htmlfile = $fname."_$i".".".$sname;
  107. if (file_exists($htmlfile) && !is_dir($htmlfile)) @unlink($htmlfile);
  108. else break;
  109. }
  110. }
  111. }
  112. //删除文本文件
  113. $filename = DEDEDATA."/textdata/".(ceil($aid / 5000))."/{$aid}-".substr(md5($cfg_cookie_encode), 0, 16).".txt";
  114. if (is_file($filename)) @unlink($filename);
  115. return TRUE;
  116. }
  117. /**
  118. * 删除不带主表内容模型的数据
  119. *
  120. * @access public
  121. * @param int $aid 文档id
  122. * @return string
  123. */
  124. function DelArcSg($aid)
  125. {
  126. global $dsql, $cfg_cookie_encode, $cfg_ml, $cfg_upload_switch, $cfg_medias_dir;
  127. $aid = intval($aid);
  128. //读取文档信息
  129. $arctitle = '';
  130. $arcurl = '';
  131. $arcQuery = "SELECT arc.id,arc.typeid,arc.senddate,arc.arcrank,ch.addtable,ch.nid,tp.typedir,tp.typename,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `#@__arctiny` arc LEFT JOIN `#@__arctype` tp on tp.id=arc.typeid LEFT JOIN `#@__channeltype` ch on ch.id=arc.channel WHERE arc.id='$aid' ";
  132. $arcRow = $dsql->GetOne($arcQuery);
  133. if (!is_array($arcRow)) {
  134. return FALSE;
  135. }
  136. //删除数据库的内容
  137. $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$aid' ");
  138. $dsql->ExecuteNoneQuery("DELETE FROM `".$arcRow['addtable']."` WHERE aid='$aid' ");
  139. $dsql->ExecuteNoneQuery("DELETE FROM `#@__feedback` WHERE aid='$aid'");
  140. $dsql->ExecuteNoneQuery("DELETE FROM `#@__member_stow` WHERE aid='$aid'");
  141. $dsql->ExecuteNoneQuery("DELETE FROM `#@__taglist ` WHERE aid='$aid'");
  142. //删除HTML
  143. if ($arcRow['arcrank'] != 0 || $arcRow['typeid'] == 0) {
  144. return TRUE;
  145. }
  146. $arcurl = GetFileUrl(
  147. $arcRow['id'],
  148. $arcRow['typeid'],
  149. $arcRow['senddate'],
  150. '',
  151. 1,
  152. $arcRow['arcrank'],
  153. $arcRow['namerule'],
  154. $arcRow['typedir'],
  155. 0,
  156. ''
  157. );
  158. if (!preg_match("#\?#", $arcurl)) {
  159. $htmlfile = GetTruePath().str_replace($GLOBALS['cfg_basehost'], '', $arcurl);
  160. if (file_exists($htmlfile) && !is_dir($htmlfile)) {
  161. @unlink($htmlfile);
  162. $arcurls = explode(".", $htmlfile);
  163. $sname = $arcurls[count($arcurls) - 1];
  164. $fname = preg_replace("#(\.$sname)$#", "", $htmlfile);
  165. for ($i = 2; $i <= 100; $i++) {
  166. $htmlfile = $fname."_$i".".".$sname;
  167. if (file_exists($htmlfile) && !is_dir($htmlfile)) @unlink($htmlfile);
  168. else break;
  169. }
  170. }
  171. }
  172. //删除文本文件
  173. $filenameh = DEDEDATA."/textdata/".(ceil($aid / 5000))."/{$aid}-".substr(md5($cfg_cookie_encode), 0, 16).".txt";
  174. return TRUE;
  175. }
  176. /**
  177. * 获取真实路径
  178. *
  179. * @return string
  180. */
  181. function GetTruePath()
  182. {
  183. $truepath = $GLOBALS["cfg_basedir"];
  184. return $truepath;
  185. }