DEDE,[小功能]删除文章时删除缩图和内容中大图 (2008-03-13 15:25:13)

来源:互联网 发布:南京生产线仿真软件 编辑:程序博客网 时间:2024/06/06 09:10

DEDE,[小功能]删除文章时删除缩图和内容中大图

 (2008-03-13 15:25:13)
DEDE,[小功能]删除文章时删除缩图和内容中大图 (2008-03-13 15:25:13) - ☆奋力拼搏☆ - 北方的…郎转载
标签: 

互联网

 

it

 

dede

 

php

 我测试删了一篇,缩略图能删掉,文章内的大图没测试,有问题回帖!
打开dede/inc/inc_batchup.php

找到"//删除数据库的内容"
在这前面加上

  //删除缩略图
  if($arcRow['litpic']!=""){
      $dsql->ExecuteNoneQuery("Delete From #@__uploads where url='$arcRow[litpic]'");
      $truedir = GetTruePath($arcRow['siterefer'],$arcRow['sitepath']);
      $litpicfile = $truedir.$arcRow['litpic'];
      @unlink($litpicfile);
  }
  //删除大图
  $arcbodyQuery = "Select * from ".$arcRow['addtable']." where aid='$aid'";
  $arcbodyRow = $dsql->GetOne($arcbodyQuery);
  $imgsrcarray=GetImageSrc($arcbodyRow['body']);
  foreach ($imgsrcarray as $v) {
    if((trim($v)!="")&&(!eregi("^http://",$v))){
        $dsql->ExecuteNoneQuery("Delete From #@__uploads where url='$v'");
        $picfile = $truedir.$v;
        @unlink($picfile);
    }
  }

  //删除数据库的内容


第二处:
找到
  Select #@__archives.ID,#@__archives.title,#@__archives.typeid
改为:
  Select #@__archives.ID,#@__archives.title,#@__archives.typeid,#@__archives.litpic


第三处:
在文件最后加上一函数
//获得内容中的图像地址
function GetImageSrc($body){
  if( !isset($body)) return '';
  else{
    preg_match_all ("/<(img|IMG)(.*)(src|SRC)=[\"|'|]{0,}([h|\/].*(jpg|JPG|gif|GIF))[\"|'|\s]{0,}/isU",$body,$out);
    return $out[4];
  }
}
---------------------------------------------end---------------------------------------------------
方法2:
首先,在"/include"目录下建立"extend.func.php"文件. 然后,将以下内容保存在"extend.func.php"文件中,一共三个函数:
//解析body数据,获得所有图片的绝对地址 
function GetPicsTruePath($body,$litpic) 

$delfiles = array();//存储图片地址数据 
if(!empty($litpic)) 

$litpicpath = GetTruePath(); 
$litpicpath .= $litpic; 
$delfiles[] = $litpicpath;//缩略图地址 

preg_match_all("/src=["|'|S|s]([^ title="liehuo.net" |/|>]*){0,}(([^>]*).(gif|jpg|png))/isU",$body,$tmpdata); 
$picspath = array_unique($tmpdata[2]);//body中所有图片的地址 
foreach($picspath as $tmppath) 

$path = GetTruePath();//获得绝对路径 
$picpath = preg_replace("/[a-zA-z]+://[^ |/|s]*/",'',$tmppath);//去掉网址部分 
$path .=$picpath; 
$delfiles[] = $path;//保存处理后的数据 

return $delfiles; 

//获得文章Body数据 
function GetArcBody($aid) 

global $dsql; 
$query = "SELECT [url=mailto:dede_addonarticle.body]dede_addonarticle.body[/url] FROM [url=mailto:%60dede_addonarticle]`dede_addonarticle[/url]` WHERE [url=mailto:dede_addonarticle.aid]dede_addonarticle.aid[/url] = '$aid'";
$row = $dsql->GetOne($query); 
if(is_array($row)) 
return $row; 
else 
return false; 

//写入日志文件 
function WriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志 

if(empty($msg)) $savemsg="未获得消息"; 
else $savemsg = $msg; 
$errorFile = dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件 
$fp = @fopen($errorFile, 'a'); 
@fwrite($fp," {$savemsg}"); 
@fclose($fp); 


接下来打开"/dede/inc/inc_batchup.php"文件。 
1:在33行下方加入,也就是"$arcRow = $dsql->GetOne($arcQuery);"下方: 
$arcBodyRow = GetArcBody($aid); 
2:在138行下方加入,也就是"return true;"上方: 

复制代码代码如下:

//解析Body中的资源,并删除 
$willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']); 
$nowtime = time(); 
$executetime = MyDate('Y-m-d H:i:s',$nowtime);//获得执行时间 
$msg = " 文章标题:$arcRow[title]"; 
WriteToDelFiles($msg); 
if(!empty($willDelFiles)) 

foreach($willDelFiles as $file) 

if(file_exists($file) && !is_dir($file)) 

if(unlink($file)) $msg = " 位置:$file 结果:删除成功! 时间:$executetime"; 
else $msg = " 位置:$file 结果:删除失败! 时间:$executetime"; 

else $msg = " 位置:$file 结果:文件不存! 时间:$executetime"; 
WriteToDelFiles($msg); 
}//END foreach 

else 

$msg = " 未在Body中解析到数据 Body原始数据:$arcBodyRow[body] 时间:$executetime"; 
WriteToDelFiles($msg); 


0 0
原创粉丝点击