|
<?php |
|
|
|
namespace Kanboard\Helper; |
|
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserHelper extends Base |
|
{ |
|
public function getTheme() |
|
{ |
|
return $this->userSession->getTheme(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasSubtaskListActivated() |
|
{ |
|
return $this->userSession->hasSubtaskListActivated(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasNotifications() |
|
{ |
|
return $this->userUnreadNotificationModel->hasNotifications($this->userSession->getId()); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getInitials($name) |
|
{ |
|
$initials = ''; |
|
|
|
foreach (explode(' ', $name, 2) as $string) { |
|
$initials .= mb_substr($string, 0, 1, 'UTF-8'); |
|
} |
|
|
|
return mb_strtoupper($initials, 'UTF-8'); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getFullname(array $user = array()) |
|
{ |
|
$user = empty($user) ? $this->userSession->getAll() : $user; |
|
return $user['name'] ?: $user['username']; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getId() |
|
{ |
|
return $this->userSession->getId(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function isCurrentUser($user_id) |
|
{ |
|
return $this->userSession->getId() == $user_id; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function isAdmin() |
|
{ |
|
return $this->userSession->isAdmin(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getRoleName($role = '') |
|
{ |
|
return $this->role->getRoleName($role ?: $this->userSession->getRole()); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getUsersGroupNames($userID) |
|
{ |
|
$groupsList = array_column($this->groupMemberModel->getGroups($userID), 'name'); |
|
$limitedList = $groupsList; |
|
$total = count($groupsList); |
|
|
|
if ($total > 0 && SHOW_GROUP_MEMBERSHIPS_IN_USERLIST_WITH_LIMIT > 0) { |
|
$limitedList = array_slice($groupsList, 0 , SHOW_GROUP_MEMBERSHIPS_IN_USERLIST_WITH_LIMIT); |
|
} |
|
|
|
return [ |
|
'full_list' => $groupsList, |
|
'limited_list' => $limitedList, |
|
'has_groups' => $total > 0, |
|
'total' => $total, |
|
'shown' => count($limitedList), |
|
]; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasAccess($controller, $action) |
|
{ |
|
if (! $this->userSession->isLogged()) { |
|
return false; |
|
} |
|
|
|
$key = 'app_access:'.$controller.$action; |
|
$result = $this->memoryCache->get($key); |
|
|
|
if ($result === null) { |
|
$result = $this->applicationAuthorization->isAllowed($controller, $action, $this->userSession->getRole()); |
|
$this->memoryCache->set($key, $result); |
|
} |
|
|
|
return $result; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasProjectAccess($controller, $action, $project_id) |
|
{ |
|
$key = 'project_access:'.$controller.$action.$project_id; |
|
$result = $this->memoryCache->get($key); |
|
|
|
if ($result === null) { |
|
$result = $this->helper->projectRole->checkProjectAccess($controller, $action, $project_id); |
|
$this->memoryCache->set($key, $result); |
|
} |
|
|
|
return $result; |
|
} |
|
} |
|
|