diff --git a/module/group/control.php b/module/group/control.php index 5f5de74cde..ba79ae8d38 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -401,7 +401,8 @@ class group extends control */ public function managePrivPackage() { - $this->view->title = $this->lang->group->managePrivPackage; + $this->view->title = $this->lang->group->managePrivPackage; + $this->view->packagesTreeList = $this->group->getPrivPackageTreeList(); $this->display(); } diff --git a/module/group/model.php b/module/group/model.php index b88faa44ba..ea4be1c3ee 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -793,7 +793,7 @@ class groupModel extends model } /** - * Ge priv package by ID. + * Get priv package by ID. * * @param int $packageID * @access public @@ -804,6 +804,18 @@ class groupModel extends model return $this->dao->findById($packageID)->from(TABLE_PRIVPACKAGE)->fetch(); } + /** + * Get priv packages by module. + * + * @param string $module + * @access public + * @return void + */ + public function getPrivPackagesByModule($module) + { + return $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('module')->eq($module)->fetchAll('id'); + } + /** * Get priv modules. * @@ -815,9 +827,9 @@ class groupModel extends model { $this->loadModel('setting'); + $tree = array(); $views = empty($viewName) ? $this->setting->getItem("owner=system&module=priv&key=views") : $viewName; $views = explode(',', $views); - $modules = array(); foreach($views as $view) { @@ -836,6 +848,65 @@ class groupModel extends model return $modules; } + /** + * Get priv package tree list. + * + * @access public + * @return void + */ + public function getPrivPackageTreeList() + { + $this->loadModel('setting'); + + $views = empty($viewName) ? $this->setting->getItem("owner=system&module=priv&key=views") : $viewName; + $views = explode(',', $views); + + $modules = array(); + foreach($views as $viewIndex => $view) + { + $this->app->loadLang($view); + $viewID = $view . 'View'; + $treeView = new stdclass(); + $treeView->id = $viewID; + $treeView->name = $this->lang->{$view}->common; + $treeView->path = ",{$viewID},"; + $treeView->grade = 1; + $treeView->order = $viewIndex; + $tree[$viewID] = $treeView; + + $viewModules = $this->setting->getItem("owner=system&module=priv&key={$view}Modules"); + if(empty($viewModules)) continue; + + $viewModules = explode(',', $viewModules); + foreach($viewModules as $moduleIndex => $module) + { + $this->app->loadLang($module); + + $treeModule = new stdclass(); + $treeModule->id = $module; + $treeModule->name = $this->lang->{$module}->common; + $treeModule->path = ",{$viewID},{$module},"; + $treeModule->grade = 2; + $treeModule->order = $moduleIndex; + $tree[$module] = $treeModule; + + $packages = $this->getPrivPackagesByModule($module); + foreach($packages as $packageID => $package) + { + $treePackage = new stdclass(); + $treePackage->id = $packageID; + $treePackage->name = $package->name; + $treePackage->path = ",{$viewID},{$module},{$packageID},"; + $treePackage->grade = 3; + $treePackage->order = $package->order; + $tree[$packageID] = $treePackage; + } + } + } + + return $tree; + } + /** * Init Privs. *