diff --git a/module/action/lang/de.php b/module/action/lang/de.php index f4a7199288..5214eafede 100644 --- a/module/action/lang/de.php +++ b/module/action/lang/de.php @@ -162,6 +162,7 @@ $lang->action->objectTypes['repo'] = 'Repo'; $lang->action->objectTypes['dataview'] = 'Data View'; $lang->action->objectTypes['privlang'] = 'Priv'; $lang->action->objectTypes['scene'] = 'Scene'; +$lang->action->objectTypes['privpackage'] = 'Priv Package'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 573afc3ba2..4aada15413 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -162,6 +162,7 @@ $lang->action->objectTypes['repo'] = 'Repo'; $lang->action->objectTypes['dataview'] = 'Data View'; $lang->action->objectTypes['privlang'] = 'Priv'; $lang->action->objectTypes['scene'] = 'Scene'; +$lang->action->objectTypes['privpackage'] = 'Priv Package'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php index fcec4f79be..458690ad55 100644 --- a/module/action/lang/fr.php +++ b/module/action/lang/fr.php @@ -162,6 +162,7 @@ $lang->action->objectTypes['repo'] = 'Repo'; $lang->action->objectTypes['dataview'] = 'Data View'; $lang->action->objectTypes['privlang'] = 'Priv'; $lang->action->objectTypes['scene'] = 'Scene'; +$lang->action->objectTypes['privpackage'] = 'Priv Package'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 6996d80c6d..0335e8a451 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -162,6 +162,7 @@ $lang->action->objectTypes['repo'] = '代码库'; $lang->action->objectTypes['dataview'] = '中间表'; $lang->action->objectTypes['privlang'] = '权限'; $lang->action->objectTypes['scene'] = '场景'; +$lang->action->objectTypes['privpackage'] = '权限包'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); diff --git a/module/execution/model.php b/module/execution/model.php index fb92c42f96..6895d02cb3 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -5784,11 +5784,6 @@ class executionModel extends model $post = $_POST; $_POST = array(); - $extendFields = $this->getExtendFields(); - foreach(array_keys($extendFields) as $field) - { - if(isset($post[$field])) $_POST[$field] = $post[$field]; - } $_POST['project'] = $projectID; $_POST['name'] = $project->name; @@ -5843,11 +5838,6 @@ class executionModel extends model $post = $_POST; $_POST = array(); - $extendFields = $this->getExtendFields(); - foreach(array_keys($extendFields) as $field) - { - if(isset($post[$field])) $_POST[$field] = $post[$field]; - } $_POST['project'] = $projectID; $_POST['name'] = $project->name; @@ -6037,23 +6027,4 @@ class executionModel extends model } return $sortedExecutions; } - - /** - * Get Extend Fields in workflow. - * - * @param string $module - * @access public - * @return array - */ - public function getExtendFields($module = 'project') - { - $extendFields = $this->dao->select('field') - ->from(TABLE_WORKFLOWFIELD) - ->where('module')->eq('project') - ->andWhere('buildin')->eq(0) - ->andWhere('role')->eq('custom') - ->fetchPairs('field'); - - return $extendFields; - } } diff --git a/module/group/control.php b/module/group/control.php index 6539e1abd1..4fbc88f405 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -509,25 +509,24 @@ class group extends control if($browseType == 'bycard') { $privs = $this->group->getPrivsListByView($view); - $privPackages = $this->group->getPrivPackagePairs(); - $privLang = $this->group->getPrivLangPairs(); + $privs = $this->group->transformPrivLang($privs); + $privPackages = $this->group->getPrivManagerPairs('package'); $privList = array(); foreach($privs as $privID => $priv) { - if(!isset($privList[$priv->module])) $privList[$priv->module] = array(); - if(!isset($privList[$priv->module][$priv->package])) $privList[$priv->module][$priv->package] = array(); - $privList[$priv->module][$priv->package][$priv->id] = $priv; + if(!isset($privList[$priv->parentCode])) $privList[$priv->parentCode] = array(); + if(!is_array($privList[$priv->parentCode])) $privList[$priv->parentCode] = array(); + if(!isset($privList[$priv->parentCode][$priv->parent])) $privList[$priv->parentCode][$priv->parent] = array(); + $privList[$priv->parentCode][$priv->parent][$priv->key] = $priv; } - $this->view->privLang = $privLang; $this->view->privPackages = $privPackages; } else { $privList = $browseType != 'bysearch' ? $this->group->getPrivsListByView($view) : $this->group->getPrivsListBySearch($paramID); - - foreach($privList as $privID => $priv) if(!$this->group->checkMenuModule($view, $priv->module)) unset($privList[$privID]); + $privs = $this->group->transformPrivLang($privList); /* Pager. */ $this->app->loadClass('pager', $static = true); @@ -552,7 +551,7 @@ class group extends control $this->view->title = $this->lang->group->editManagePriv; $this->view->browseType = $browseType; $this->view->privList = $privList; - $this->view->packages = $this->group->getPrivPackagePairs($view); + $this->view->packages = $this->group->getPrivManagerPairs('package'); $this->view->moduleLang = $moduleLang; $this->view->modulePackages = $this->group->getModuleAndPackageTree(); $this->view->view = $view; @@ -613,7 +612,7 @@ class group extends control } $this->view->title = $this->lang->group->createPrivPackage; - $this->view->modules = $this->group->getPrivModules(); + $this->view->modules = $this->group->getPrivManagerPairs('module', '', 'name', true); $this->display(); } @@ -639,7 +638,7 @@ class group extends control $this->view->title = $this->lang->group->editPrivPackage; $this->view->privPackage = $this->group->getPrivPackageByID($privPackageID); - $this->view->modules = $this->group->getPrivModules(); + $this->view->modules = $this->group->getPrivManagerPairs('module', '', 'name', true); $this->view->actions = $this->loadModel('action')->getList('privpackage', $privPackageID); $this->view->users = $this->loadModel('user')->getPairs(); $this->display(); @@ -657,25 +656,12 @@ class group extends control { $orders = $_POST['orders']; if(empty($orders)) return false; - if($type == 'view') + + $orders = explode(',', $orders); + + foreach($orders as $index => $id) { - $orders = str_replace('View,', ',', $orders); - $orders = trim($orders, ','); - $this->loadModel('setting')->setItem("system.priv.views", $orders); - } - if($type == 'module') - { - $orders = trim($orders, ','); - $parentID = rtrim($parentID, 'View'); - $this->loadModel('setting')->setItem("system.priv.{$parentID}Modules", $orders); - } - if($type == 'package') - { - $orders = explode(',', $orders); - foreach($orders as $index => $id) - { - if(!empty($id)) $this->dao->update(TABLE_PRIVPACKAGE)->set('order')->eq(($index + 1) * 5)->where('id')->eq($id)->exec(); - } + if(!empty($id)) $this->dao->update(TABLE_PRIVMANAGER)->set('order')->eq(($index + 1) * 5)->where('id')->eq($id)->exec(); } } @@ -695,7 +681,7 @@ class group extends control else { $privPackage = $this->group->getPrivPackageByID($privPackageID); - $this->group->deletePrivPackage($privPackageID); + $this->group->deletePrivPackage($privPackageID, $privPackage->parent); if(!dao::isError()) $this->loadModel('action')->create('privpackage', $privPackageID, 'deleted', '', zget($privPackage, 'name')); return print(js::reload('parent')); @@ -724,16 +710,20 @@ class group extends control } $privs = $this->group->getPrivByIdList($privIdList); + $privs = $this->group->transformPrivLang($privs); $modules = array(); foreach($privs as $priv) $modules[$priv->module] = $priv->module; $modulePrivs = $this->group->getPrivByModule($modules); $packageIdList = array(); - foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs))); + foreach($modulePrivs as $packagePrivs) + { + $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs))); + } $this->view->privs = $privs; $this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true); - $this->view->packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name'); + $this->view->packages = $this->group->getPrivManagerPairs('package', current($modules)); $this->view->modulePrivs = $modulePrivs; $this->view->type = $type; $this->display(); @@ -787,7 +777,7 @@ class group extends control $this->view->privs = $privs; $this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true); - $this->view->packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name'); + $this->view->packages = $this->group->getPrivManagerPairs('package', current($modules)); $this->view->modulePrivs = $modulePrivs; $this->view->type = $type; $this->display('group', 'addrelation'); @@ -806,12 +796,9 @@ class group extends control { if(is_string($privIdList)) $privIdList = explode(',', $privIdList); - $modulePrivs = $this->group->getPrivByModule($module); - $packageIdList = array(); - foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs))); - - $modules = $this->group->getMenuModules(null, true); - $packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name'); + $modulePrivs = $this->group->getPrivByModule($module); + $modules = $this->group->getMenuModules(null, true); + $packages = $this->group->getPrivManagerPairs('package', $module); $tree = "