public function canEditMetadata(ElggEntity $entity, $user_guid = 0, ElggMetadata $metadata = null)
{
if (!$entity->guid) {
// @todo cannot edit metadata on unsaved entity?
return false;
}
try {
$user = $this->entities->getUserForPermissionsCheck($user_guid);
} catch (UserFetchFailureException $e) {
return false;
}
if ($user) {
$user_guid = $user->guid;
}
// if metadata is not owned or owned by the user, then can edit
if ($metadata && ($metadata->owner_guid == 0 || $metadata->owner_guid == $user_guid)) {
$return = true;
} else {
$return = $entity->canEdit($user_guid);
}
// metadata and user may be null
$params = ['entity' => $entity, 'user' => $user, 'metadata' => $metadata];
return $this->hooks->trigger('permissions_check:metadata', $entity->getType(), $params, $return);
}