diff --git a/module/gitlab/control.php b/module/gitlab/control.php index ff79158464..c79fb1d468 100644 --- a/module/gitlab/control.php +++ b/module/gitlab/control.php @@ -468,8 +468,8 @@ class gitlab extends control } /* Get gitlab users data. */ - $gitlabUserList = $this->gitlab->apiGetUsers($gitlabID); - $gitlabUsers = array(''=>''); + $gitlabUserList = $this->gitlab->apiGetUsers($gitlabID, true); + $gitlabUsers = array(''=>''); foreach($gitlabUserList as $gitlabUser) { $gitlabUsers[$gitlabUser->id] = $gitlabUser->realname; diff --git a/module/gitlab/model.php b/module/gitlab/model.php index a194e46ced..97c95fa3e2 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -451,10 +451,11 @@ class gitlabModel extends model * Get gitlab user list. * * @param int $gitlabID + * @param bool $onlyLinked * @access public * @return array */ - public function apiGetUsers($gitlabID) + public function apiGetUsers($gitlabID, $onlyLinked = false) { /* GitLab API '/users' can only return 20 users per page in default, so we use a loop to fetch all users. */ $page = 1; @@ -478,17 +479,23 @@ class gitlabModel extends model if(!$response) return array(); + /* Get linked users. */ + $linkedUsers = array(); + if($onlyLinked) $linkedUsers = $this->getUserIdAccountPairs($gitlabID); + $users = array(); foreach($response as $gitlabUser) { - $user = new stdclass; - $user->id = $gitlabUser->id; - $user->realname = $gitlabUser->name; - $user->account = $gitlabUser->username; - $user->email = $gitlabUser->email; - $user->avatar = $gitlabUser->avatar_url; - $user->createdAt = $gitlabUser->created_at; - $user->lastActivityOn = $gitlabUser->last_activity_on; + if(!isset($linkedUsers[$gitlabUser->id])) continue; + + $user = new stdclass; + $user->id = $gitlabUser->id; + $user->realname = $gitlabUser->name; + $user->account = $gitlabUser->username; + $user->email = $gitlabUser->email; + $user->avatar = $gitlabUser->avatar_url; + $user->createdAt = $gitlabUser->created_at; + $user->lastActivityOn = $gitlabUser->last_activity_on; $users[] = $user; } @@ -2121,7 +2128,7 @@ class gitlabModel extends model /* Check whether the user has been bind. */ if($user->account) { - $zentaoBindUser = $this->dao->select('account')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('account')->eq($user->account)->fetch(); + $zentaoBindUser = $this->dao->select('account,openID')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('account')->eq($user->account)->fetch(); $changeBind = (!$zentaoBindUser or $zentaoBindUser->openID != $user->id) ? true : false; if($zentaoBindUser && $changeBind) { diff --git a/module/gitlab/view/browse.html.php b/module/gitlab/view/browse.html.php index de475d25e6..5c07ebe49c 100644 --- a/module/gitlab/view/browse.html.php +++ b/module/gitlab/view/browse.html.php @@ -47,8 +47,8 @@