ecstore删除流程分析

来源:互联网 发布:教学过程最优化理论 编辑:程序博客网 时间:2024/05/21 06:41

1、最终删除的地方

在app/desktop/lib/system/recycle.php文件中dorecycle方法

2、model中的方法,自定义删除前后的操作,一般位于app/app名称/model文件夹中,参考系统自带的会员处理

(1)pre_recycle方法,删除前的操作

(2)suf_recycle方法,删除后的操作

(3)title_recycle方法,进入回收站中显示的标题

##进回收站前操作  function pre_recycle($data){     $falg = true;     foreach($data as $val){         if($val['advance']>0)         {             $this->recycle_msg = '会员账户有余额,不能删除';             $falg = false;             break;         }     }     return $falg;}

3、进入回收站

public function title_recycle($sdf)    {    if(!$sdf) return ;    if($sdf['pam_account']['mobile']){    $login_name = $sdf['pam_account']['mobile']['login_account'];    }    if($sdf['pam_account']['email']){    $login_name =  $sdf['pam_account']['email']['login_account'];    }    if($sdf['pam_account']['local']){    $login_name =  $sdf['pam_account']['local']['login_account'];    }    return $login_name;    }


4、dorecycle方法

function dorecycle($mdl_name,$filter=null){        $oRecycle = app::get('desktop')->model('recycle');        list($app_id,$table) = explode('_mdl_',$mdl_name);        $o = app::get($app_id)->model($table);        $recycle_item = array();        $recycle_item['drop_time'] = time();        $recycle_item['item_type'] = $o->table_name();        $dbschema = $o->get_schema();        $textColumn = $dbschema['textColumn'];        $pkey = $dbschema['idColumn'];        foreach($dbschema['columns'] as $k=>$col){            if($col['is_title']&&$col['sdfpath']){                $textColumn = $col['sdfpath'];                break;            }        }        $rows = $o->getList('*',$filter,0,-1);        if(method_exists($o, 'pre_recycle')){            if(!$o->pre_recycle($rows)){                return false;            }        }        $menus = app::get('desktop')->model('menus');        $permission_id = $menus->permissionId($_GET);        foreach($rows as $k=>$v){            $pkey_value = $v[$pkey];            $v = $o->dump($v[$pkey],'*','delete');            $recycle_item['item_sdf'] = $v;            $recycle_item['app_key'] = $app_id;            $recycle_item['item_title'] = $v[$textColumn];            if(method_exists($o,'title_recycle'))            $recycle_item['item_title'] = $o->title_recycle($v);            $tmp = $recycle_item;            $tmp['permission'] = $permission_id;            $return = $oRecycle->save($tmp);            unset($tmp[$pkey]);            $o->delete(array($pkey=>$pkey_value));            #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓记录管理员操作日志@lujy↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓            if($obj_operatorlogs = kernel::service('operatorlog.system')){                if(method_exists($obj_operatorlogs,'dorecycle')){                    $obj_operatorlogs->dorecycle($v);                }            }            #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑记录管理员操作日志@lujy↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑        }        if(method_exists($o, 'suf_recycle')){            if(!$o->suf_recycle($_POST)){                return false;            }        }        $services = kernel::serviceList('desktop_finder_callback.' . get_class($o));        foreach($services AS $service){            if(method_exists($service, 'recycle')){                $service->recycle($_POST);            }        }        return true;    }

还可以注册services进行更多的处理。






0 0