Elgg\UserCapabilities::canEditMetadata PHP Method

canEditMetadata() public method

If no specific metadata is passed, it returns whether the user can edit any metadata on the entity.
See also: elgg_set_ignore_access()
public canEditMetadata ( ElggEntity $entity, integer $user_guid, ElggMetadata $metadata = null ) : boolean
$entity ElggEntity Object entity
$user_guid integer The user GUID, optionally (default: logged in user)
$metadata ElggMetadata The piece of metadata to specifically check or null for any metadata
return boolean
    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);
    }