From 19a1db72df94020d797202750bf82db79a9b9e28 Mon Sep 17 00:00:00 2001 From: sgm0422 <976204163@qq.com> Date: Tue, 16 Jun 2020 14:15:22 +0800 Subject: [PATCH] * Fix user view bug. --- module/group/model.php | 6 ++++++ module/program/control.php | 1 + module/user/model.php | 13 +++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/module/group/model.php b/module/group/model.php index 64a4fbfc77..bdb90b3b49 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -387,6 +387,7 @@ class groupModel extends model */ public function updatePgmAdmin($groupID) { + $this->loadModel('user'); $this->dao->delete()->from(TABLE_USERGROUP)->where('`group`')->eq($groupID)->exec(); $members = $this->post->members ? $this->post->members : array(); @@ -400,6 +401,11 @@ class groupModel extends model $data->program = implode($programs[$account], ','); $this->dao->replace(TABLE_USERGROUP)->data($data)->exec(); + foreach($programs[$account] as $programID) + { + if(!$programID) continue; + $this->user->updateUserView($programID, 'program'); + } } if(!dao::isError()) return true; diff --git a/module/program/control.php b/module/program/control.php index bb4e20f7f0..f5dc57b1aa 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -141,6 +141,7 @@ class program extends control */ public function group($programID = 0) { + $this->session->set('program', $programID); $title = $this->lang->company->orgView . $this->lang->colon . $this->lang->group->browse; $position[] = $this->lang->group->browse; diff --git a/module/user/model.php b/module/user/model.php index 39c8310f75..84395a21c2 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1329,7 +1329,7 @@ class userModel extends model } $allProducts = $this->dao->select('id,PO,QD,RD,createdBy,acl,whitelist')->from(TABLE_PRODUCT)->where('program')->in($programs)->fetchAll('id'); - $allProjects = $this->dao->select('id,PO,PM,QD,RD,acl,whitelist')->from(TABLE_PROJECT)->where('program')->eq($programs)->fetchAll('id'); + $allProjects = $this->dao->select('id,PO,PM,QD,RD,acl,whitelist')->from(TABLE_PROJECT)->where('program')->in($programs)->fetchAll('id'); if($projectProducts === null) { $stmt = $this->dao->select('project,product')->from(TABLE_PROJECTPRODUCT)->query(); @@ -1469,7 +1469,8 @@ class userModel extends model $object = $this->dao->select('*')->from($table)->where('id')->eq($objectID)->fetch(); if($object->acl == 'open') return true; - $allGroups = $this->dao->select('account,`group`')->from(TABLE_USERGROUP)->fetchAll(); + $allGroups = $this->dao->select('account,`group`')->from(TABLE_USERGROUP)->fetchAll(); + $managePrograms = $this->dao->select('account, program')->from(TABLE_USERGROUP)->where('program')->ne('')->fetchPairs(); $userGroups = array(); foreach($allGroups as $group) { @@ -1520,9 +1521,17 @@ class userModel extends model } elseif($objectType == 'program') { + $manageProgram = zget($managePrograms, $account, ''); $hasPriv = $this->checkProjectPriv($object, $account, zget($userGroups, $account, ''), zget($teams, $objectID)); if($hasPriv and strpos(",{$userView->programs},", ",{$objectID},") === false) $userView->programs .= ",{$objectID}"; if(!$hasPriv and strpos(",{$userView->programs},", ",{$objectID},") !== false) $userView->programs = trim(str_replace(",{$objectID},", ',', ",{$userView->programs},"), ','); + if($manageProgram) + { + foreach(explode(',', $manageProgram) as $program) + { + if(strpos(",{$userView->programs},", ",{$program},") === false) $userView->programs .= ",{$program}"; + } + } $userObjects[$account]['programs'] = $userView->programs; } }