
DEDEDMS同时删除文章和附件的修改方法。用DEDEDMS的朋友可以参考一下。
首先添加两个函数复制代码代码如下:
/*
根据文档id获取文档的body部分
*/
functiongetArcBody($arcid)
{
global$dsql;
if(empty($arcid))return;
$body='';
$query="selectarc.*,ch.addtable,ch.fieldsetfrom`dede_arctiny`asarcleftjoin`dede_channeltype`aschonarc.channel=ch.idwherearc.id=$arcid";
$row=$dsql->GetOne($query);
if(empty($row))return;
$addtable=$row['addtable'];
$fieldset=$row['fieldset'];
include_once(DEDEINC.'./dedetag.class.php');
$dtp=newDedeTagParse();
$dtp->SetNameSpace('field','<','>');
$dtp->LoadSource($fieldset);
if(is_array($dtp->CTags))
{
foreach($dtp->CTagsas$tid=>$tag)
{
if($tag->GetAtt('type')=='htmltext')
{
$body=$tag->GetName();
break;
}
}
}
if(!empty($body))
{
$query="select$bodyfrom`$addtable`whereaid=$arcid";
$row=$dsql->GetOne($query);
$body=$row[$body];
return$body;
}
return;
}
/*
解析文档内容的本地图片图片
*/
functionget_img_from_body($body)
{
$result=array();
if(empty($body))
return$result;
preg_match_all('/\ssrc=([\"|\'])([^\1]*?)\.(gif|jpg|jpeg|png)\1/',$body,$res);
if(!empty($res))
{
foreach($res[2]as$k=>$v)
{
$result[]=$v.'.'.$res[$k];
}
}
return$result;
}
把这段代码贴到include/common.func.php后面,
接着打开后台(假设使用默认的dede作为后台)dede/inc/inc_batchup.php文件,
在第22行添加代码如下:
$body=getArcBody($aid);
接在在第139行,就是在
returntrue;
上面一行加上下面的代码
复制代码代码如下:
if($body)
{
$img_arr=get_img_from_body($body);
if(!empty($img_arr))
{
foreach($img_arras$v)
{
$img_file=GetTruePath().str_replace($GLOBALS['cfg_basehost'],'',$v);
if(file_exists($img_file)&&!is_dir($img_file))
@unlink($img_file);
}
}
}
这样就可以实现删除文档的时候删除字段为“htmltext”类型的中的本地图片了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)