ormDefs = $ormDefs; $this->metadata = $metadata; } /** * Get an entity field that stores an owner-user (or multiple users). * Must be link or linkMulitple field. NULL means no owner. */ public function get(string $entityType): ?string { $value = $this->metadata->get(['aclDefs', $entityType, 'readOwnerUserField']); if ($value) { return $value; } $defs = $this->ormDefs->getEntity($entityType); if ( $defs->hasField(self::FIELD_ASSIGNED_USERS) && $defs->getField(self::FIELD_ASSIGNED_USERS)->getType() === 'linkMultiple' && $defs->hasRelation(self::FIELD_ASSIGNED_USERS) && $defs->getRelation(self::FIELD_ASSIGNED_USERS)->getForeignEntityType() === 'User' ) { return self::FIELD_ASSIGNED_USERS; } if ( $defs->hasField(self::FIELD_ASSIGNED_USER) && $defs->getField(self::FIELD_ASSIGNED_USER)->getType() === 'link' && $defs->hasRelation(self::FIELD_ASSIGNED_USER) && $defs->getRelation(self::FIELD_ASSIGNED_USER)->getForeignEntityType() === 'User' ) { return self::FIELD_ASSIGNED_USER; } if ( $defs->hasField(self::FIELD_CREATED_BY) && $defs->getField(self::FIELD_CREATED_BY)->getType() === 'link' && $defs->hasRelation(self::FIELD_CREATED_BY) && $defs->getRelation(self::FIELD_CREATED_BY)->getForeignEntityType() === 'User' ) { return self::FIELD_CREATED_BY; } return null; } }