http://blog.sina.com.cn/s/blog_3f1a25310100en47.html
其实之前在1.5版就已经把这个功能做出来了
现在2.0版出来了 花了几个礼拜把网站升级到2.0
其他功能基本升级完毕,还剩下回收站
由于之前没有记录修改的过程,所以这次把修改的过程记录下来备用
由于客服部门的需要,要记录后台删除的情况
也就是说管理员在后台删除图片啦,日志啦,相册啦都要能够记录下来
需要记录是谁在什么时候删除的
当然了 这个功能不开放给普通用户,只有站点管理员和信息管理员删除的资料才进回收站
而且除了这两类用户也不能看到回收站
根据客服部门的意见,已删除的资料暂时不需要恢复功能,删了就删了,基本没有误操作,所有删除的记录只是为了报备清理黄毒的
在一里我已经修改了class_mysql.php,而且已经初步实现了备份删除的这个过程,接下来就是让回收站在后台显示出来
为了美观 我已经把动态(feed)改成了 动态 把 评论/留言 改成了 评论
接下来就开始修改管理后台使得不需要另外创建页面直接拿现有的页面显示回收站的内容
在这里我们需要修改一个全局函数function tname($name)
它是用来获取到表名的
通过对uchome文件中的'admincp.php'关键字的查找,我们发现牵涉到的居然有600个左右文件,意味着和管理后台的很多功能写死了只能通过admincp.php这个文件来操作例如提交表单的时候等等
所以就无法另建一个admincp_1 之类的文件来作为回收站而必须继续使用admincp.php
所以我们引入一个参数 act 通过URL来传递实现回收站的功能
我们之前在class_mysql.php里也已经将这个参数带入了
那么接下来就只有通过修改tname()这个函数来实现拉取 ***_del 表中的数据
我们需要拉取的表有27个 所以依然需要做好限制因为其他一些必须的系统表也是通过这个函数来获取真实表名的比如adminsession 等
这个函数保存在 function_common.php 里
修改后的function tname如下:
//获取到表名
function tname($name) {
global $_SC;
$TableNames = array('album' , 'blog' , 'blogfield' , 'clickuser' , 'comment' , 'docomment' , 'doing' , 'event' , 'eventinvite' , 'eventpic' , 'feed' , 'mtag' , 'mtaggame' , 'mtaginvite' , 'pic' , 'poll' , 'pollfield' , 'polloption' , 'polluser' , 'post' , 'report' , 'share' , 'tag' , 'tagblog' , 'tagspace' , 'thread' , 'userevent');
if ( $_GET["act"]=="recycled" && in_array($name , $TableNames) && (preg_match("/admincp\.php/", $_SERVER['PHP_SELF']) ? true : preg_match("/admincp\.php/", empty($_SERVER['HTTP_REFERER'])?'' : $_SERVER['HTTP_REFERER'])) ){
return $_SC['tablepre'].$name.'_del';
}else
return $_SC['tablepre'].$name;
}
修改完保存后进入管理后台,我们来尝试一下,访问admincp.php?ac=post&act=recycled
可以看到回收站里的内容了
接下来就是在左侧的菜单里加上回收站的链接
修改 admincp/tpl/side.htm 把批量管理部分修改成如下
<div class="block style1">
<h2>批量管理</h2>
<ul class="folder">
<!--{loop $acs[3] $value}-->
<li><!--{if $ac==$value && $_GET[act]<>'recycled'}--><strong><!--{/if}--><a href="?ac=$value<!--{if $act == 'recycled'}-->&act=show<!--{/if}-->">{$_TPL[menunames][$value]}</a><!--{if $ac==$value}--></strong><!--{/if}-->
<!--{if $menus[1] && $ac==$value && $_GET[act]=='recycled'}--><strong><a href="?ac=$value&act=recycled">回收站</a></strong><!--{elseif $menus[1]}--><a href="?ac=$value&act=recycled">回收站</a><!--{/if}--></li>
<!--{/loop}-->
<!--{loop $acs[1] $value}-->
<!--{if $menus[1][$value]}-->
<li><!--{if $ac==$value && $_GET[act]<>'recycled'}--><strong><!--{/if}--><a href="?ac=$value<!--{if $act == 'recycled'}-->&act=show<!--{/if}-->">{$_TPL[menunames][$value]}</a><!--{if $ac==$value && $_GET[act]<>'recycled'}--></strong><!--{/if}-->
<!--{if $menus[1] && ($value=='mtag' || $value=='tag' || $value=='event') && $ac==$value && $_GET[act]=='recycled'}--><strong><a href="?ac=$value&act=recycled">回收站</a></strong><!--{elseif $menus[1] && ($value=='mtag' || $value=='tag' || $value=='event')}--><a href="?ac=$value&act=recycled">回收站</a><!--{/if}-->
</li>
<!--{/if}-->
<!--{/loop}-->
</ul>
</div>
刷新缓存后就可以看到 在 站点管理员 或者信息管理员登陆后的批量管理导航部分就增加了 回收站的链接
点击后即可看到回收站里的资料了 |