最新的dedecms5.6删除了删除图片对应的文章。这个代码没有改变dede代码!只添加了删除方法!盖住它!覆盖时备份文件!
最新dedecms5.6删除文章对应删除图片本代码没改dede代码!只加了删除方法到里面!覆盖就可以了!覆盖时备份好文件!
您也可以看着对应修改!学习一下!
在dede5.6gbk版测试成功!utf8大家自己测试!覆盖前备份好文件
/include/extend.func.php
复制代码代码如下:
<?php
functionGetPicsTruePath($body,$litpic)//解析body数据,获得所有图片的绝对地址
{
$delfiles=array();//存储图片地址数据
if(!empty($litpic))
{
$litpicpath=GetTruePath();
$litpicpath.=$litpic;
$delfiles[]=$litpicpath;//缩略图地址
}
preg_match_all("/src=[\"|'|\S|\s]([^|\/|>]*){0,}(([^>]*)\.(gif|jpg|png))/isU",$body,$tmpdata);
$picspath=array_unique($tmpdata);//body中所有图片的地址
foreach($picspathas$tmppath)
{
$path=GetTruePath();//获得绝对路径
$picpath=preg_replace("/[a-zA-z]+:\/\/[^|\/|\s]*/",'',$tmppath);//去掉网址部分
$path.=$picpath;
$delfiles[]=$path;//保存处理后的数据
}
return$delfiles;
}
functionWriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志
{
if(empty($msg))$savemsg="未获得消息";
else$savemsg=$msg;
$errorFile=dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件
$fp=@fopen($errorFile,'a');
@fwrite($fp,"\r\n{$savemsg}");
@fclose($fp);
}
//获得文章Body数据
functionGetArcBody($aid)
{
global$dsql;
$query="SELECTdede_addonarticle.bodyFROMdede_addonarticleWHEREdede_addonarticle.aid='$aid'";
$row=$dsql->GetOne($query);
if(is_array($row))return$row;
elsereturnfalse;
}
functionlitimgurls($imgid=0){
global$lit_imglist;
$dsql=newDedeSql(false);
//获取附加表
$row=$dsql->GetOne("SELECTc.addtableFROMdede_archivesASaLEFTJOINdede_channeltypeAScONa.channel=c.idwherea.id='$imgid'");
$addtable=trim($row['addtable']);
//获取图片附加表imgurls字段内容进行处理
$row=$dsql->GetOne("SelectimgurlsFrom`$addtable`whereaid='$imgid'");
//调用inc_channel_unit.php中ChannelUnit类
$ChannelUnit=newChannelUnit(2,$imgid);
//调用ChannelUnit类中GetlitImgLinks方法处理缩略图
$lit_imglist=$ChannelUnit->GetlitImgLinks($row['imgurls']);
//返回结果
return$lit_imglist;
}
?>
\dede\inc\inc_batchup.php
复制代码代码如下:
<?php
functionDelArc($aid,$type='ON',$onlyfile=false)
{
global$dsql,$cfg_cookie_encode,$cfg_multi_site,$cfg_medias_dir;
global$cuserLogin,$cfg_upload_switch,$cfg_delete,$cfg_basedir;
global$admin_catalogs,$cfg_admin_channel;
if($cfg_delete=='N')$type='OK';
if(empty($aid))return;
$aid=ereg_replace("[^0-9]",'',$aid);
$arctitle=$arcurl='';
//查询表信息
$query="Selectch.maintable,ch.addtable,ch.nid,ch.issystemFrom`dede_arctiny`arc
leftjoin`dede_arctype`tpontp.id=arc.typeid
leftjoin`dede_channeltype`chonch.id=arc.channelwherearc.id='$aid'";
$row=$dsql->GetOne($query);
$nid=$row['nid'];
$maintable=(trim($row['maintable'])==''?'dede_archives':trim($row['maintable']));
$addtable=trim($row['addtable']);
$issystem=$row['issystem'];
//查询档案信息
if($issystem==-1)
{
$arcQuery="Selectarc.*,tp.*from`$addtable`arcleftjoin`dede_arctype`tponarc.typeid=tp.idwherearc.aid='$aid'";
}
else
{
$arcQuery="Selectarc.*,tp.*,arc.idasaidfrom`$maintable`arcleftjoin`dede_arctype`tponarc.typeid=tp.idwherearc.id='$aid'";
}
$arcRow=$dsql->GetOne($arcQuery);
$arcBodyRow=GetArcBody($aid);
//检测权限
if(!TestPurview('a_Del,sys_ArcBatch'))
{
if(TestPurview('a_AccDel'))
{
if(!in_array($arcRow['typeid'],$admin_catalogs)&&(count($admin_catalogs)!=0||$cfg_admin_channel!='all'))
{
returnfalse;
}
}
elseif(TestPurview('a_MyDel'))
{
if($arcRow['mid']!=$cuserLogin->getUserID())
{
returnfalse;
}
}
else
{
returnfalse;
}
}
//$issystem==-1是单表模型,不使用回收站
if($issystem==-1)$type='OK';
if(!is_array($arcRow))returnfalse;
/**删除到回收站**/
if($cfg_delete=='Y'&&$type=='ON')
{
$dsql->ExecuteNoneQuery("Update`$maintable`setarcrank='-2'whereid='$aid'");
$dsql->ExecuteNoneQuery("Update`dede_arctiny`set`arcrank`='-2'whereid='$aid';");
}
else
{
//删除数据库记录
if(!$onlyfile)
{
//删除相关附件
if($cfg_upload_switch=='Y')
{
$dsql->Execute("me","SELECT*FROM`dede_uploads`WHEREarcid='$aid'");
while($row=$dsql->GetArray('me'))
{
$addfile=$row['url'];
$aid=$row['aid'];
$dsql->ExecuteNoneQuery("DeleteFrom`dede_uploads`whereaid='$aid'");
$upfile=$cfg_basedir.$addfile;
if(@file_exists($upfile))@unlink($upfile);
}
}
$dsql->ExecuteNoneQuery("DeleteFrom`dede_arctiny`whereid='$aid'");
if($addtable!='')
{
$dsql->ExecuteNoneQuery("DeleteFrom`$addtable`whereaid='$aid'");
}
if($issystem!=-1)
{
$dsql->ExecuteNoneQuery("DeleteFrom`dede_archives`whereid='$aid'");
}
$dsql->ExecuteNoneQuery("DeleteFrom`dede_feedback`whereaid='$aid'");
$dsql->ExecuteNoneQuery("DeleteFrom`dede_member_stow`whereaid='$aid'");
$dsql->ExecuteNoneQuery("DeleteFrom`dede_taglist`whereaid='$aid'");
$dsql->ExecuteNoneQuery("DeleteFrom`dede_erradd`whereaid='$aid'");
}
//删除文本数据
$filenameh=DEDEDATA."/textdata/".(ceil($aid/5000))."/{$aid}-".substr(md5($cfg_cookie_encode),0,16).".txt";
if(@is_file($filenameh))@unlink($filenameh);
}
if(empty($arcRow['money']))$arcRow['money']=0;
if(empty($arcRow['ismake']))$arcRow['ismake']=1;
if(empty($arcRow['arcrank']))$arcRow['arcrank']=0;
if(empty($arcRow['filename']))$arcRow['filename']='';
//删除HTML
if($arcRow['ismake']==-1||$arcRow['arcrank']!=0||$arcRow['typeid']==0||$arcRow['money']>0)
{
returntrue;
}
//强制转换非多站点模式,以便统一方式获得实际HTML文件
$GLOBALS['cfg_multi_site']='N';
$arcurl=GetFileUrl($arcRow['aid'],$arcRow['typeid'],$arcRow['senddate'],$arcRow['title'],$arcRow['ismake'],
$arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename']);
if(!ereg("\?",$arcurl))
{
$htmlfile=GetTruePath().str_replace($GLOBALS['cfg_basehost'],'',$arcurl);
if(file_exists($htmlfile)&&!is_dir($htmlfile))
{
@unlink($htmlfile);
$arcurls=explode(".",$htmlfile);
$sname=$arcurls[count($arcurls)-1];
$fname=ereg_replace("(\.$sname)$","",$htmlfile);
for($i=2;$i<=100;$i++)
{
$htmlfile=$fname."_{$i}.".$sname;
if(@file_exists($htmlfile))@unlink($htmlfile);
elsebreak;
}
}
}
//解析Body中的资源,并删除
$willDelFiles=GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);
$nowtime=time();
$executetime=MyDate('Y-m-dH:i:s',$nowtime);//获得执行时间
$msg="\r\n文章标题:$arcRow[title]";
WriteToDelFiles($msg);
if(!empty($willDelFiles))
{
foreach($willDelFilesas$file)
{
if(file_exists($file)&&!is_dir($file))
{
if(unlink($file))$msg="\r\n位置:$file\r\n结果:删除成功!\r\n时间:$executetime";
else$msg="\r\n位置:$file\r\n结果:删除失败!\r\n时间:$executetime";
}
else$msg="\r\n位置:$file\r\n结果:文件不存!\r\n时间:$executetime";
WriteToDelFiles($msg);
}//ENDforeach
}
else
{
$msg="\r\n未在Body中解析到数据\r\nBody原始数据:$arcBodyRow[body]\r\n时间:$executetime";
WriteToDelFiles($msg);
}
returntrue;
}
//获取真实路径
functionGetTruePath($siterefer='',$sitepath='')
{
$truepath=$GLOBALS['cfg_basedir'];
return$truepath;
}
?>
修改后的文件打包下载
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)