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

209 lines
7.3KB

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