diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php index 100e705a..9d4cc2b5 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php @@ -282,7 +282,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController 'type_id' => 'required|integer', 'track_id' => 'required|integer', 'attending_media' => 'required|boolean', - 'links' => 'required|url_array', + 'links' => 'sometimes|url_array', 'extra_questions' => 'sometimes|entity_value_array', ]; diff --git a/app/Models/Foundation/Summit/Events/Presentations/Presentation.php b/app/Models/Foundation/Summit/Events/Presentations/Presentation.php index 84efefe6..d2fe74a5 100644 --- a/app/Models/Foundation/Summit/Events/Presentations/Presentation.php +++ b/app/Models/Foundation/Summit/Events/Presentations/Presentation.php @@ -69,6 +69,8 @@ class Presentation extends SummitEvent const ClassNamePresentation = 'Presentation'; + const MaxAllowedLinks = 5; + /** * @ORM\Column(name="Level", type="string") * @var string diff --git a/app/Services/Model/PresentationService.php b/app/Services/Model/PresentationService.php index 76e3af78..949da9ec 100644 --- a/app/Services/Model/PresentationService.php +++ b/app/Services/Model/PresentationService.php @@ -371,6 +371,15 @@ final class PresentationService if (isset($data['links'])) { $presentation->clearLinks(); + + if(count($data['links']) > Presentation::MaxAllowedLinks){ + throw new ValidationException(trans( + 'validation_errors.PresentationService.saveOrUpdatePresentation.MaxAllowedLinks', + [ + 'max_allowed_links' => Presentation::MaxAllowedLinks + ])); + } + foreach ($data['links'] as $link) { $presentationLink = new PresentationLink(); $presentationLink->setName(trim($link)); diff --git a/resources/lang/en/validation_errors.php b/resources/lang/en/validation_errors.php index 1c667f60..b9b4ab4a 100644 --- a/resources/lang/en/validation_errors.php +++ b/resources/lang/en/validation_errors.php @@ -83,6 +83,7 @@ return [ 'PresentationService.saveOrUpdatePresentation.notAvailableCFP' => 'type id :type_id is not a available for CFP', 'PresentationService.saveOrUpdatePresentation.trackDontBelongToSelectionPlan' => 'track :track_id does not belongs to selection plan :selection_plan_id', 'PresentationService.submitPresentation.limitReached' => 'You reached the limit :limit of presentations.', + 'PresentationService.saveOrUpdatePresentation.MaxAllowedLinks' => 'max. links quantity allowed is :max_allowed_links.', // organizations 'OrganizationService.addOrganization.alreadyExistName' => 'Organization name :name already exists!', // track tag groups