@@ -263,13 +263,21 @@ public function editStream(Request $request, Response $response, array $args): R
263263 $ parentEvent = $ this ->eventRepository ->selectByUserAndId ($ user , $ charityStream ->charity_event_id );
264264 }
265265
266+ // Liste des events accessibles pour le lien stream ↔ event
267+ if ($ user ->role === 'ADMIN ' ) {
268+ $ availableEvents = $ this ->eventRepository ->selectList ();
269+ } else {
270+ $ availableEvents = $ this ->eventRepository ->selectListByUser ($ user );
271+ }
272+
266273 $ donationUrl = $ _SERVER ['HA_URL ' ] . '/associations/ ' . $ charityStream ->organization_slug . '/formulaires/ ' . $ charityStream ->form_slug ;
267274 $ routeParser = RouteContext::fromRequest ($ request )->getRouteParser ();
268275
269276 $ data = [
270277 "logged " => true ,
271278 "charityStream " => $ charityStream ,
272279 "parentEvent " => $ parentEvent ,
280+ "availableEvents " => $ availableEvents ,
273281 "donationGoalWidget " => $ donationGoalWidget ,
274282 "alertBoxWidget " => $ alertBoxWidget ,
275283 "alertBoxWidgetPictureUrl " => ($ alertBoxWidget && $ alertBoxWidget ->image ) ? $ this ->fileManager ->getPictureUrl ($ alertBoxWidget ->image ) : null ,
@@ -280,6 +288,7 @@ public function editStream(Request $request, Response $response, array $args): R
280288 "widgetDonationGoalUrl " => $ _SERVER ['WEBSITE_DOMAIN ' ] . $ routeParser ->urlFor ('app_stream_widget_donation ' , ["id " => $ guid ]),
281289 "widgetAlertBoxUrl " => $ _SERVER ['WEBSITE_DOMAIN ' ] . $ routeParser ->urlFor ('app_stream_widget_alert ' , ["id " => $ guid ]),
282290 "widgetCardUrl " => $ _SERVER ['WEBSITE_DOMAIN ' ] . $ routeParser ->urlFor ('app_stream_widget_card ' , ["id " => $ guid ]),
291+ "messages " => $ this ->messages ->getMessages (),
283292 ];
284293
285294 return $ this ->view ->render ($ response , 'stream/edit.html.twig ' , $ data );
@@ -304,6 +313,24 @@ public function editStreamPost(Request $request, Response $response, array $args
304313 $ this ->streamRepository ->update ($ charityStream , $ updateData );
305314 }
306315
316+ if (isset ($ body ['link_event ' ])) {
317+ $ eventId = !empty ($ body ['event_id ' ]) ? (int ) $ body ['event_id ' ] : null ;
318+ if ($ eventId ) {
319+ $ event = $ this ->eventRepository ->selectByUserAndId ($ user , $ eventId );
320+ if ($ event ) {
321+ $ this ->streamRepository ->updateEventLink ($ charityStream , $ event ->id );
322+ $ this ->messages ->addMessage ('success ' , 'Stream lié à l \'événement « ' . $ event ->title . ' » ' );
323+ } else {
324+ $ this ->messages ->addMessage ('error ' , 'Événement introuvable ou non autorisé ' );
325+ }
326+ }
327+ }
328+
329+ if (isset ($ body ['unlink_event ' ])) {
330+ $ this ->streamRepository ->updateEventLink ($ charityStream , null );
331+ $ this ->messages ->addMessage ('success ' , 'Stream délié de son événement ' );
332+ }
333+
307334 if (isset ($ body ['save_alert_box ' ])) {
308335 $ uploadedFiles = $ request ->getUploadedFiles ();
309336 $ image = isset ($ uploadedFiles ['image ' ]) && $ uploadedFiles ['image ' ]->getSize () > 0
0 commit comments