广

织梦CMS教程

  • 帝国cms教程
  • 织梦CMS教程
  • PHP CMS教程
  • ECSHOP教程
  • WordPress教程
  • Discuz教程
  • CMS学习

    DEDECMS删除文章同时也删除附件和图片

    2018-04-02 20:50:40 次阅读 稿源:互联网
    广告

    DEDECMS默认情况下删除文章,附件中的图片是不会删除的,本文就实现在删除文章同时也删除附件和图片!dedecms5.7SP1亲测可用。

    打开include/extend.func.php文件,在最后添加以下代码:

    1. //解析body数据,获得所有图片的绝对地址 
    2. function GetPicsTruePath($body,$litpic
    3.   $delfiles = array();//存储图片地址数据 
    4.   if(!empty($litpic)) 
    5.   { 
    6.     $litpicpath = GetTruePath(); 
    7.     $litpicpath .= $litpic
    8.     $delfiles[] = $litpicpath;//缩略图地址 
    9.   } 
    10.   preg_match_all("/src=[/"|'|/S|/s]([^ |//|>]*){0,}(([^>]*)/.(gif|jpg|png))/isU",$body,$tmpdata); 
    11.   $picspath = array_unique($tmpdata[2]);//body中所有图片的地址 
    12.   foreach($picspath as $tmppath
    13.   { 
    14.     $path = GetTruePath();//获得绝对路径 
    15.     $picpath = preg_replace("/[a-zA-z]+:////[^ |//|/s]*/",'',$tmppath);//去掉网址部分 
    16.     $path .=$picpath
    17.     $delfiles[] = $path;//保存处理后的数据 
    18.   } 
    19.   return $delfiles
    20. //获得文章Body数据  
    21. function GetArcBody($aid)  
    22. {  
    23. global $dsql;  
    24. $query = "SELECT js_addonarticle.body FROM #@__addonarticle WHERE #@__addonarticle.aid = '$aid'";  
    25. $row = $dsql->GetOne($query);  
    26. if(is_array($row))  
    27. return $row;  
    28. else  
    29. return false;  
    30. //mobantianxia.cn修改于2010.01.28 
    31. //写入日志文件  
    32. function WriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志  
    33. {  
    34. if(empty($msg)) $savemsg="未获得消息";  
    35. else $savemsg = $msg;  
    36. $errorFile = dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件  
    37. $fp = @fopen($errorFile'a');  
    38. @fwrite($fp," {$savemsg}");  
    39. @fclose($fp);  

    打开dede/inc/inc_batchup.php文件,找到:

    1. $arcRow = $dsql->GetOne($arcQuery); 

    在下边添加:

    1. $arcBodyRow = GetArcBody($aid); 

    找到:

    1. return TRUE; 

    在这句话上边添加:

    1. //解析Body中的资源,并删除  
    2. $willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);  
    3. $nowtime = time();  
    4. $executetime = MyDate('Y-m-d H:i:s',$nowtime);//获得执行时间  
    5. $msg = " 文章标题:$arcRow[title]";  
    6. WriteToDelFiles($msg);  
    7. if(!empty($willDelFiles))  
    8. {  
    9. foreach($willDelFiles as $file)  
    10. {  
    11. if(file_exists($file) && !is_dir($file))  
    12. {  
    13. if(unlink($file)) $msg = " 位置:$file 结果:删除成功! 时间:$executetime";  
    14. else $msg = " 位置:$file 结果:删除失败! 时间:$executetime";  
    15. //mobantianxia.cn修改于2010.01.28  
    16. else $msg = " 位置:$file 结果:文件不存! 时间:$executetime";  
    17. WriteToDelFiles($msg);  
    18. }//END foreach  
    19. }  
    20. else  
    21. {  
    22. $msg = " 未在Body中解析到数据 Body原始数据:$arcBodyRow[body] 时间:$executetime";  
    23. WriteToDelFiles($msg);  

    到此功能实现就结束了,在dedecms5.7SP1上测试通过。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告