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

205 lines
7.2KB

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