Files
OMS/app/desktop/controller/recycle.php
2025-12-28 23:13:25 +08:00

148 lines
5.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class desktop_ctl_recycle extends desktop_controller{
var $workground = 'desktop_ctl_recycle';
var $limit = '400';
function index(){
if(!kernel::single('desktop_user')->has_permission('recycle')){
header('Content-Type:text/html; charset=utf-8');
echo app::get('desktop')->_("您无权操作");exit;
}
$this->finder('desktop_mdl_recycle',array(
'title'=>app::get('desktop')->_('回收站'),
'use_buildin_recycle'=>false,'use_buildin_filter'=>true,
));
}
function recycle_show($item_type=null,$page=1){
$filter = array();
$pagelimit = 20;
if($item_type&&$item_type!='_ALL_') $filter['item_type'] = $item_type;
$o = $this->app->model('recycle');
$this->pagedata['item_type'] = $o->get_item_type();
$count = $o->count(null,$filter,0,-1);
$this->pagedata['items'] = $o->getList('*',$filter,$pagelimit*($page-1),$pagelimit);
$this->pagedata['pager'] = array(
'current'=>$page,
'total'=>ceil($count/$pagelimit),
'link'=>'index.php?app=desktop&ctl=recycle&act=recycle_show&p[0]='.$item_type.'&p[1]=%s',
//'link'=>'index.php?ctl=default&act=recycle&p[0]='.$item_type.'p[1]='.$page,
'token'=>time()
);
$this->display('common/recycle.html');
}
function recycle_processtype(){
$this->pagedata['options'] = array('add'=>app::get('desktop')->_('重新生成唯一性的字段后新增'),'none'=>app::get('desktop')->_('不做恢复处理'));
$this->display('common/recycle_processtype.html');
}
function recycle_restore(){
$this->begin('javascript:finderGroup["'.$_GET['finder_id'].'"].unselectAll();finderGroup["'.$_GET['finder_id'].'"].refresh();');
$oRecycle = $this->app->model('recycle');
//edit by jiaolei
$filter = $this->_get_filter();
$rows = $oRecycle->getList('*',$filter,0,-1);
$restore_type = $_POST['restore_type']?$_POST['restore_type']:'cover';
foreach($rows as $row){
$object_name = $row['item_type'];
$app_key = $row['app_key'];
$data = ($row['item_sdf']);
$app = app::get($app_key);
$o = $app->model($object_name);
if($o->count(array($o->schema['idColumn']=>$data[$o->schema['idColumn']]))){
unset($data[$o->schema['idColumn']]);
}
if(method_exists($o, 'pre_restore')){
if(!$o->pre_restore($data,$restore_type)){
$this->end(false,app::get('desktop')->_('恢复失败'));
return false;
}
}
if($data['need_delete'] || !method_exists($o, 'pre_restore')){
if(!isset($data[$o->schema['idColumn']]) && $restore_type == 'none'){
$this->end(false,app::get('desktop')->_('恢复失败'));
return false;
}else{
if($o->save($data)){
$oRecycle->delete(array('item_id'=>$row['item_id']));
}
}
}
if(method_exists($o, 'suf_restore')){
if(!$o->suf_restore($data)){
$this->end(false,app::get('desktop')->_('恢复失败'));
return false;
}
}
unset($data[$o->idColumn]);
}
$this->end(true,app::get('desktop')->_('恢复成功'));
}
function recycle_delete(){
$this->begin('javascript:finderGroup["'.$_GET['finder_id'].'"].unselectAll();finderGroup["'.$_GET['finder_id'].'"].refresh();');
$o = $this->app->model('recycle');
$filter = $this->_get_filter(); //
$count = $o->count($filter);
$times = ceil($count/$this->limit);
for($i=0;$i<$times;$i++){
$rows = $o->getList('*',$filter,0,$this->limit);
foreach($rows as $row){
$object_name = $row['item_type'];
$app_key = $row['app_key'];
$object_full_name = $row['app_key'].'_mdl_'.$row['item_type'];
$data = ($row['item_sdf']);
$app = app::get($app_key);
$obj = $app->model($object_name);
if(method_exists($obj, 'pre_delete')){
if(!$obj->pre_delete($data)){
$this->end(false,app::get('desktop')->_('删除失败'));
return false;
}
}
$o->delete(array('item_id'=>$row['item_id']));
if(method_exists($obj, 'suf_delete')){
if(!$obj->suf_delete($data[$obj->schema['idColumn']])){
$this->end(false,app::get('desktop')->_('删除失败'));
return false;
}
}
}
}
$this->end(true,app::get('desktop')->_('删除成功'));
}
/*
* return filter
* @author 矫雷
*/
private function _get_filter()
{
$filter = array('item_id'=>$_POST['item_id']);
if( $_POST['isSelectedAll']=='_ALL_' )
$filter = array("item_id|bthan"=>0);
return $filter;
}
#End Func
}