Browse Source

Add additional check on action registrations

- Minor refactor

Signed-off-by: Christopher Ng <chrng8@gmail.com>
pull/29482/head
Christopher Ng 4 years ago
parent
commit
ee1c6eefb4
  1. 32
      lib/private/Profile/ProfileManager.php

32
lib/private/Profile/ProfileManager.php

@ -92,6 +92,7 @@ class ProfileManager {
*/
private const PROFILE_PROPERTIES = [
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_AVATAR,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_DISPLAYNAME,
IAccountManager::PROPERTY_HEADLINE,
@ -150,6 +151,11 @@ class ProfileManager {
}
}
if (in_array($action->getId(), self::PROFILE_PROPERTIES, true)) {
$this->logger->error('Cannot register action with ID: ' . $action->getId() . ', as it is used by a core account property.');
return;
}
// Add action to associative array of actions
$this->actions[$action->getId()] = $action;
}
@ -252,16 +258,26 @@ class ProfileManager {
// Add account properties
foreach (self::PROFILE_PROPERTIES as $property) {
$profileParameters[$property] =
$this->isParameterVisible($targetUser, $visitingUser, $property)
// Explicitly set to null when value is empty string
? ($account->getProperty($property)->getValue() ?: null)
: null;
switch ($property) {
case IAccountManager::PROPERTY_ADDRESS:
case IAccountManager::PROPERTY_BIOGRAPHY:
case IAccountManager::PROPERTY_DISPLAYNAME:
case IAccountManager::PROPERTY_HEADLINE:
case IAccountManager::PROPERTY_ORGANISATION:
case IAccountManager::PROPERTY_ROLE:
$profileParameters[$property] =
$this->isParameterVisible($targetUser, $visitingUser, $property)
// Explicitly set to null when value is empty string
? ($account->getProperty($property)->getValue() ?: null)
: null;
break;
case IAccountManager::PROPERTY_AVATAR:
// Add avatar visibility
$profileParameters['isUserAvatarVisible'] = $this->isParameterVisible($targetUser, $visitingUser, $property);
break;
}
}
// Add avatar visibility
$profileParameters['isUserAvatarVisible'] = $this->isParameterVisible($targetUser, $visitingUser, IAccountManager::PROPERTY_AVATAR);
// Add actions
$profileParameters['actions'] = array_map(
function (ILinkAction $action) {

Loading…
Cancel
Save