您现在的位置:新青网 > 科技博览 > 互联网 >

dedecms删除文章同时一起删除图片的修改方法

来源:新青网综合 责任编辑:且听风吟 发表时间:2017-12-20 21:23 

 最新dedecms5.6删除文章对应删除图片 
本代码没改dede代码!只加了删除方法到里面!覆盖就可以了!覆盖时备份好文件! 
您也可以看着对应修改!学习一下! 
在dede5.6gbk版测试成功!utf8大家自己测试 !覆盖前备份好文件
/include/extend.func.php

 

  1. <?php  
  2. function GetPicsTruePath($body,$litpic) //解析body数据,获得所有图片的绝对地址  
  3. {  
  4. $delfiles = array();//存储图片地址数据  
  5. if(!empty($litpic))  
  6. {  
  7. $litpicpath = GetTruePath();  
  8. $litpicpath .= $litpic;  
  9. $delfiles[] = $litpicpath;//缩略图地址  
  10. }  
  11. preg_match_all("/src=[\"|'|\S|\s]([^ |\/|>]*){0,}(([^>]*)\.(gif|jpg|png))/isU",$body,$tmpdata);  
  12. $picspath = array_unique($tmpdata[2]);//body中所有图片的地址  
  13. foreach($picspath as $tmppath)  
  14. {  
  15. $path = GetTruePath();//获得绝对路径  
  16. $picpath = preg_replace("/[a-zA-z]+:\/\/[^ |\/|\s]*/",'',$tmppath);//去掉网址部分  
  17. $path .=$picpath;  
  18. $delfiles[] = $path;//保存处理后的数据  
  19. }  
  20. return $delfiles;  
  21. }  
  22. function WriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志  
  23. {  
  24. if(empty($msg)) $savemsg="未获得消息";  
  25. else $savemsg = $msg;  
  26. $errorFile = dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件  
  27. $fp = @fopen($errorFile, 'a');  
  28. @fwrite($fp,"\r\n{$savemsg}");  
  29. @fclose($fp);  
  30. }  
  31. //获得文章Body数据  
  32. function GetArcBody($aid)  
  33. {  
  34. global $dsql;  
  35. $query = "SELECT dede_addonarticle.body FROM dede_addonarticle WHERE dede_addonarticle.aid = '$aid'";  
  36. $row = $dsql->GetOne($query);  
  37. if(is_array($row)) return $row;  
  38. else return false;  
  39. }  
  40. function litimgurls($imgid=0){  
  41. global $lit_imglist;  
  42. $dsql = new DedeSql(false);  
  43. //获取附加表  
  44. $row = $dsql->GetOne("SELECT c.addtable FROM dede_archives AS a LEFT JOIN dede_channeltype AS c ON a.channel=c.id where a.id='$imgid'");  
  45. $addtable = trim($row['addtable']);  
  46. //获取图片附加表imgurls字段内容进行处理  
  47. $row = $dsql->GetOne("Select imgurls From `$addtable` where aid='$imgid'");  
  48. //调用inc_channel_unit.php中ChannelUnit类  
  49. $ChannelUnit = new ChannelUnit(2,$imgid);  
  50. //调用ChannelUnit类中GetlitImgLinks方法处理缩略图  
  51. $lit_imglist = $ChannelUnit->GetlitImgLinks($row['imgurls']);  
  52. //返回结果  
  53. return $lit_imglist;  
  54. }  
  55. ?>  

\dede\inc\inc_batchup.php

 

  1. <?php  
  2. function DelArc($aid,$type='ON',$onlyfile=false)  
  3. {  
  4. global $dsql,$cfg_cookie_encode,$cfg_multi_site,$cfg_medias_dir;  
  5. global $cuserLogin,$cfg_upload_switch,$cfg_delete,$cfg_basedir;  
  6. global $admin_catalogs, $cfg_admin_channel;  
  7. if($cfg_delete == 'N') $type = 'OK';  
  8. if(empty($aid)) return ;  
  9. $aid = ereg_replace("[^0-9]", '', $aid);  
  10. $arctitle = $arcurl = '';  
  11. //查询表信息  
  12. $query = "Select ch.maintable,ch.addtable,ch.nid,ch.issystem From `dede_arctiny` arc  
  13. left join `dede_arctype` tp on tp.id=arc.typeid  
  14. left join `dede_channeltype` ch on ch.id=arc.channel where arc.id='$aid' ";  
  15. $row = $dsql->GetOne($query);  
  16. $nid = $row['nid'];  
  17. $maintable = (trim($row['maintable'])=='' ? 'dede_archives' : trim($row['maintable']));  
  18. $addtable = trim($row['addtable']);  
  19. $issystem = $row['issystem'];  
  20. //查询档案信息  
  21. if($issystem==-1)  
  22. {  
  23. $arcQuery = "Select arc.*,tp.* from `$addtable` arc left join `dede_arctype` tp on arc.typeid=tp.id where arc.aid='$aid' ";  
  24. }  
  25. else  
  26. {  
  27. $arcQuery = "Select arc.*,tp.*,arc.id as aid from `$maintable` arc left join `dede_arctype` tp on arc.typeid=tp.id where arc.id='$aid' ";  
  28. }  
  29. $arcRow = $dsql->GetOne($arcQuery);  
  30. $arcBodyRow = GetArcBody($aid);  
  31. //检测权限  
  32. if(!TestPurview('a_Del,sys_ArcBatch'))  
  33. {  
  34. if(TestPurview('a_AccDel'))  
  35. {  
  36. if( !in_array($arcRow['typeid'], $admin_catalogs) && (count($admin_catalogs) != 0 || $cfg_admin_channel != 'all') )  
  37. {  
  38. return false;  
  39. }  
  40. }  
  41. else if(TestPurview('a_MyDel'))  
  42. {  
  43. if($arcRow['mid'] != $cuserLogin->getUserID())  
  44. {  
  45. return false;  
  46. }  
  47. }  
  48. else  
  49. {  
  50. return false;  
  51. }  
  52. }  
  53. //$issystem==-1 是单表模型,不使用回收站  
  54. if($issystem == -1) $type = 'OK';  
  55. if(!is_array($arcRow)) return false;  
  56. /** 删除到回收站 **/  
  57. if($cfg_delete == 'Y' && $type == 'ON')  
  58. {  
  59. $dsql->ExecuteNoneQuery("Update `$maintable` set arcrank='-2' where id='$aid' ");  
  60. $dsql->ExecuteNoneQuery("Update `dede_arctiny` set `arcrank` = '-2' where id = '$aid'; ");  
  61. }  
  62. else  
  63. {  
  64. //删除数据库记录  
  65. if(!$onlyfile)  
  66. {  
  67. //删除相关附件  
  68. if($cfg_upload_switch == 'Y')  
  69. {  
  70. $dsql->Execute("me", "SELECT * FROM `dede_uploads` WHERE arcid = '$aid'");  
  71. while($row = $dsql->GetArray('me'))  
  72. {  
  73. $addfile = $row['url'];  
  74. $aid = $row['aid'];  
  75. $dsql->ExecuteNoneQuery("Delete From `dede_uploads` where aid = '$aid' ");  
  76. $upfile = $cfg_basedir.$addfile;  
  77. if(@file_exists($upfile)) @unlink($upfile);  
  78. }  
  79. }  
  80. $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$aid'");  
  81. if($addtable != '')  
  82. {  
  83. $dsql->ExecuteNoneQuery("Delete From `$addtable` where aid='$aid' ");  
  84. }  
  85. if($issystem != -1)  
  86. {  
  87. $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$aid' ");  
  88. }  
  89. $dsql->ExecuteNoneQuery("Delete From `dede_feedback` where aid='$aid' ");  
  90. $dsql->ExecuteNoneQuery("Delete From `dede_member_stow` where aid='$aid' ");  
  91. $dsql->ExecuteNoneQuery("Delete From `dede_taglist` where aid='$aid' ");  
  92. $dsql->ExecuteNoneQuery("Delete From `dede_erradd` where aid='$aid' ");  
  93. }  
  94. //删除文本数据  
  95. $filenameh = DEDEDATA."/textdata/".(ceil($aid/5000))."/{$aid}-".substr(md5($cfg_cookie_encode),0,16).".txt";  
  96. if(@is_file($filenameh)) @unlink($filenameh);  
  97. }  
  98. if(empty($arcRow['money'])) $arcRow['money'] = 0;  
  99. if(empty($arcRow['ismake'])) $arcRow['ismake'] = 1;  
  100. if(empty($arcRow['arcrank'])) $arcRow['arcrank'] = 0;  
  101. if(empty($arcRow['filename'])) $arcRow['filename'] = '';  
  102. //删除HTML  
  103. if($arcRow['ismake']==-1 || $arcRow['arcrank']!=0 || $arcRow['typeid']==0 || $arcRow['money']>0)  
  104. {  
  105. return true;  
  106. }  
  107. //强制转换非多站点模式,以便统一方式获得实际HTML文件  
  108. $GLOBALS['cfg_multi_site'] = 'N';  
  109. $arcurl = GetFileUrl($arcRow['aid'],$arcRow['typeid'],$arcRow['senddate'],$arcRow['title'],$arcRow['ismake'],  
  110. $arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename']);  
  111. if(!ereg("\?", $arcurl))  
  112. {  
  113. $htmlfile = GetTruePath().str_replace($GLOBALS['cfg_basehost'],'',$arcurl);  
  114. if(file_exists($htmlfile) && !is_dir($htmlfile))  
  115. {  
  116. @unlink($htmlfile);  
  117. $arcurls = explode(".", $htmlfile);  
  118. $sname = $arcurls[count($arcurls)-1];  
  119. $fname = ereg_replace("(\.$sname)$", "", $htmlfile);  
  120. for($i=2; $i<=100; $i++)  
  121. {  
  122. $htmlfile = $fname."_{$i}.".$sname;  
  123. if( @file_exists($htmlfile) ) @unlink($htmlfile);  
  124. else break;  
  125. }  
  126. }  
  127. }  
  128. //解析Body中的资源,并删除  
  129. $willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);  
  130. $nowtime = time();  
  131. $executetime = MyDate('Y-m-d H:i:s',$nowtime);//获得执行时间  
  132. $msg = "\r\n文章标题:$arcRow[title]";  
  133. WriteToDelFiles($msg);  
  134. if(!empty($willDelFiles))  
  135. {  
  136. foreach($willDelFiles as $file)  
  137. {  
  138. if(file_exists($file) && !is_dir($file))  
  139. {  
  140. if(unlink($file)) $msg = "\r\n位置:$file\r\n结果:删除成功!\r\n时间:$executetime";  
  141. else $msg = "\r\n位置:$file\r\n结果:删除失败!\r\n时间:$executetime";  
  142. }  
  143. else $msg = "\r\n位置:$file\r\n结果:文件不存!\r\n时间:$executetime";  
  144. WriteToDelFiles($msg);  
  145. }//END foreach  
  146. }  
  147. else  
  148. {  
  149. $msg = "\r\n未在Body中解析到数据\r\nBody原始数据:$arcBodyRow[body]\r\n时间:$executetime";  
  150. WriteToDelFiles($msg);  
  151. }  
  152. return true;  
  153. }  
  154. //获取真实路径  
  155. function GetTruePath($siterefer='', $sitepath='')  
  156. {  
  157. $truepath = $GLOBALS['cfg_basedir'];  
  158. return $truepath;  
  159. }  
  160. ?>  

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    验证码:点击我更换图片

    图文推荐

    • 暴风云推出国内首家开放式VR全景视频云
    • 谷登电商,传统农批市场新引擎!
    • 从淘宝联手网上厨房举办2016年货节看电商转型
    • 2015北京测试服务业发展高峰论坛圆满落幕
    • 共建智能制造生态圈 鼎捷"互联网+工业40战略"发布
    • 中国互联网那些曾经闻名遐迩的落败者
    • 中美等国警方联合查处数百万会员儿童色,情网站
    • 买家网购给了差评 卖家寄牌位诅咒(图)
    • 用HTML5构建高性能视差网站
    关于我们- 联系我们 - 合作服务- 友情链接 - 网站地图
    Copyright © 2010-2019 新青网 版权所有
    京ICP备:14001513号 京公网安备:11010802020992号