Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ public function __construct
),
new OA\Parameter(
name: 'filter',
description: 'Filter by id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type. Operands supported: == (equal), @@ (contains), =@ (starts with).',
description: 'Filter by id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_pending_presentations, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type. Operands supported: == (equal), @@ (contains), =@ (starts with).',
Comment thread
coderabbitai[bot] marked this conversation as resolved.

@smarcet smarcet Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@romanetar The earlier CodeRabbit thread on this line was resolved as "Addressed in commit 1dc2b14", but the description it targeted — the protected getSpeakers filter parameter at line 181 — is unchanged: it still reads 'Filter by id, first_name, last_name, email, full_name, member_id, has_accepted_presentations, etc.' while its three sibling descriptions (lines 254, 416, 536) were updated. Suggested fix: add has_pending_presentations there too, ideally the full enumerated list matching line 254 so the generated docs advertise the same filters on both routes.

in: 'query',
required: false,
schema: new OA\Schema(type: 'string')
Expand Down Expand Up @@ -311,6 +311,7 @@ function () {
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -336,6 +337,7 @@ function () {
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -411,7 +413,7 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) use ($summit) {
),
new OA\Parameter(
name: 'filter',
description: 'Filter query (supports multiple operators). Filterable fields: id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type.',
description: 'Filter query (supports multiple operators). Filterable fields: id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_pending_presentations, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type.',
in: 'query',
required: false,
schema: new OA\Schema(type: 'string')
Expand Down Expand Up @@ -451,6 +453,7 @@ public function getSpeakersActivitiesCount($summit_id)
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -477,6 +480,7 @@ public function getSpeakersActivitiesCount($summit_id)
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -529,7 +533,7 @@ public function getSpeakersActivitiesCount($summit_id)
),
new OA\Parameter(
name: 'filter',
description: 'Filter by id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type. Operands supported: == (equal), @@ (contains), =@ (starts with).',
description: 'Filter by id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_pending_presentations, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type. Operands supported: == (equal), @@ (contains), =@ (starts with).',
in: 'query',
required: false,
schema: new OA\Schema(type: 'string')
Expand Down Expand Up @@ -592,6 +596,7 @@ function () {
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -617,6 +622,7 @@ function () {
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -3189,7 +3195,7 @@ public function deleteSpeakerBigPhoto($speaker_id)
),
new OA\Parameter(
name: 'filter',
description: 'Filter speakers by id, first_name, last_name, email, full_name, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type',
description: 'Filter speakers by id, first_name, last_name, email, full_name, has_pending_presentations, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_track_group_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, has_media_upload_with_type, has_not_media_upload_with_type',
in: 'query',
required: false,
schema: new OA\Schema(type: 'string')
Expand Down Expand Up @@ -3252,6 +3258,7 @@ public function send($summit_id)
'last_name' => ['=@', '@@', '=='],
'email' => ['=@', '@@', '=='],
'full_name' => ['=@', '@@', '=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -3278,6 +3285,7 @@ public function send($summit_id)
'last_name' => 'sometimes|string',
'email' => 'sometimes|string',
'full_name' => 'sometimes|string',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ function () {
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -177,6 +178,7 @@ function () {
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -296,6 +298,7 @@ function () {
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -321,6 +324,7 @@ function () {
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -447,6 +451,7 @@ public function send($summit_id)
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand Down Expand Up @@ -475,6 +480,7 @@ public function send($summit_id)
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down Expand Up @@ -517,7 +523,7 @@ public function send($summit_id)
name: "filter",
in: "query",
required: false,
description: "Filter query (supports multiple operators). Filterable fields: id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, is_speaker, has_media_upload_with_type, has_not_media_upload_with_type.",
description: "Filter query (supports multiple operators). Filterable fields: id, not_id, first_name, last_name, email, full_name, member_id, member_user_external_id, has_pending_presentations, has_accepted_presentations, has_alternate_presentations, has_rejected_presentations, presentations_track_id, presentations_selection_plan_id, presentations_type_id, presentations_title, presentations_abstract, presentations_submitter_full_name, presentations_submitter_email, is_speaker, has_media_upload_with_type, has_not_media_upload_with_type.",
schema: new OA\Schema(type: "string", example: "has_accepted_presentations==true")
),
],
Expand Down Expand Up @@ -555,6 +561,7 @@ public function getSubmittersActivitiesCount($summit_id)
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand All @@ -581,6 +588,7 @@ public function getSubmittersActivitiesCount($summit_id)
'full_name' => 'sometimes|string',
'member_id' => 'sometimes|integer',
'member_user_external_id' => 'sometimes|integer',
'has_pending_presentations' => 'sometimes|string|in:true,false',
'has_accepted_presentations' => 'sometimes|string|in:true,false',
'has_alternate_presentations' => 'sometimes|string|in:true,false',
'has_rejected_presentations' => 'sometimes|string|in:true,false',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public function handle
'last_name' => ['=@', '@@', '=='],
'email' => ['=@', '@@', '=='],
'full_name' => ['=@', '@@', '=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ public function handle
'full_name' => ['=@', '@@', '=='],
'member_id' => ['=='],
'member_user_external_id' => ['=='],
'has_pending_presentations' => ['=='],
'has_accepted_presentations' => ['=='],
'has_alternate_presentations' => ['=='],
'has_rejected_presentations' => ['=='],
Expand Down
55 changes: 55 additions & 0 deletions app/Repositories/Summit/DoctrineMemberRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,61 @@ protected function getFilterMappings()
__p10_1.summit = :summit AND
LOWER(__c10.email) :operator LOWER(:value) )"
),
'has_pending_presentations' =>
new DoctrineSwitchFilterMapping([
'true' => new DoctrineCaseFilterMapping(
'true',
sprintf('EXISTS (
SELECT __p41.id FROM models\summit\Presentation __p41
JOIN __p41.created_by __c41 WITH __c41 = e.id
JOIN __p41.category __cat41
JOIN __p41.type __t41
LEFT JOIN __p41.selection_plan __sel_plan41
LEFT JOIN models\summit\PresentationMediaUpload __pm41 WITH __pm41.presentation = __p41
LEFT JOIN __pm41.media_upload_type __mut41
WHERE
__p41.summit = :summit
AND __p41.published = 0 '.
(!empty($extraSelectionStatusFilter)? sprintf($extraSelectionStatusFilter, '41'): ' ').
' AND NOT EXISTS (
SELECT ___sp41.id
FROM models\summit\SummitSelectedPresentation ___sp41
JOIN ___sp41.presentation ___p41
JOIN ___sp41.list ___spl41 WITH ___spl41.list_type = \'%1$s\' AND ___spl41.list_class = \'%2$s\'
WHERE ___p41.id = __p41.id
))',
SummitSelectedPresentationList::Group,
SummitSelectedPresentationList::Session
)
),
'false' => new DoctrineCaseFilterMapping(
'false',
sprintf('
NOT EXISTS (
SELECT __p41.id FROM models\summit\Presentation __p41
JOIN __p41.created_by __c41 WITH __c41 = e.id
JOIN __p41.category __cat41
JOIN __p41.type __t41
LEFT JOIN __p41.selection_plan __sel_plan41
LEFT JOIN models\summit\PresentationMediaUpload __pm41 WITH __pm41.presentation = __p41
LEFT JOIN __pm41.media_upload_type __mut41
WHERE
__p41.summit = :summit
AND __p41.published = 0 '.
(!empty($extraSelectionStatusFilter)? sprintf($extraSelectionStatusFilter, '41'): ' ').
' AND NOT EXISTS (
SELECT ___sp41.id
FROM models\summit\SummitSelectedPresentation ___sp41
JOIN ___sp41.presentation ___p41
JOIN ___sp41.list ___spl41 WITH ___spl41.list_type = \'%1$s\' AND ___spl41.list_class = \'%2$s\'
WHERE ___p41.id = __p41.id
))',
SummitSelectedPresentationList::Group,
SummitSelectedPresentationList::Session
)
),
]
),
'has_accepted_presentations' =>
new DoctrineSwitchFilterMapping([
'true' => new DoctrineCaseFilterMapping(
Expand Down
Loading
Loading