/**
  * Manage repository users
  *
  * @param void
  * @return null
  */
 function repository_users()
 {
     if ($this->active_repository->isNew()) {
         flash_error('Repository does not exist');
         $this->redirectToReferer(SOURCE_MODULE_PATH);
     }
     // if
     if (!$this->active_repository->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN);
     }
     // if
     $this->wireframe->addPageAction(lang('Browse repository'), $this->active_repository->getBrowseUrl(), null);
     $this->wireframe->addPageAction(lang('Commit History'), $this->active_repository->getHistoryUrl());
     $source_users = SourceUsers::findByRepository($this->active_repository);
     $distinct_repository_users = $this->active_repository->getDistinctUsers();
     // loop through already mapped users and remove them from repository users
     foreach ($source_users as $source_user) {
         $mapped_user_key = array_search($source_user->getRepositoryUser(), $distinct_repository_users);
         if ($mapped_user_key !== false) {
             unset($distinct_repository_users[$mapped_user_key]);
         }
         // if
     }
     // foreach
     $this->smarty->assign(array('source_users' => $source_users, 'repository_users' => $distinct_repository_users, 'system_users' => ProjectUsers::findByProject($this->active_project), 'repository_user_add_url' => assemble_url('repository_user_add', array('project_id' => $this->active_project->getId(), 'repository_id' => $this->active_repository->getId()))));
 }
 /**
  * Get CreatedBy information
  *
  * @param Repository $repository
  * @return User
  */
 function getCreatedBy($repository = null)
 {
     if (is_null($repository)) {
         $repository = Repositories::findById($this->getParentId());
         $repository->mapped_users = SourceUsers::findByRepository($repository);
     }
     // if
     if (isset($repository->mapped_users[$this->getCreatedByName()]) && instance_of($repository->mapped_users[$this->getCreatedByName()], 'SourceUser')) {
         $source_user = $repository->mapped_users[$this->getCreatedByName()];
         if (instance_of($source_user->system_user, 'User')) {
             return $source_user->system_user;
         }
         // if
     }
     // if
     return parent::getCreatedBy();
 }
 /**
  * Get mapped user
  *
  * @param string $repository_user
  * return mixed
  */
 function getMappedUser($repository_user)
 {
     if (!is_foreachable($this->mapped_users)) {
         $this->mapped_users = SourceUsers::findByRepository($this);
     }
     // if
     if (isset($this->mapped_users[$repository_user]) && instance_of($this->mapped_users[$repository_user], 'SourceUser')) {
         $source_user = $this->mapped_users[$repository_user];
         if (instance_of($source_user->system_user, 'User')) {
             return $source_user->system_user;
         }
         // if
     }
     // if
     return new AnonymousUser($repository_user, '*****@*****.**');
 }