国内流行的内容管理系统(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.

193 lines
7.2KB

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