$assignments * @param array $userGroupIds */ public function select(array $assignments, array $userGroupIds, ?int $defaultTemplateId): ?int { $groups = array_flip($userGroupIds); $best = null; foreach ($assignments as $a) { if (! isset($groups[$a['group_id']])) { continue; } if ($best === null || $a['priority'] > $best['priority'] || ($a['priority'] === $best['priority'] && $a['id'] < $best['id'])) { $best = $a; } } return $best['template_id'] ?? $defaultTemplateId; } }