@@ -258,47 +258,67 @@ public function sendModeratorsSelectionAnnouncementBySummit(ISummit $current_sum
258258 public function sendUploadSlidesAnnouncementBySummit (ISummit $ current_summit , $ batch_size )
259259 {
260260 return $ this ->tx_manager ->transaction (function () use ($ current_summit , $ batch_size ) {
261- list ($ count , $ speakers ) = $ this ->speaker_repository ->searchSpeakerBySummitPaginatedForUploadSlidesAnnouncement ($ current_summit , 1 , $ batch_size , $ current_summit ->getExcludedTracksForUploadPresentationSlideDeck ());
261+ $ sender_service = new PresentationSpeakerUploadSlidesNotificationEmailMessageSender ();
262+
263+ $ page = 1 ;
264+ $ page_size = $ batch_size ;
265+ $ task = $ this ->batch_repository ->findByName (self ::TaskName . '_SLIDE_UPLOAD_ ' . $ current_summit ->getIdentifier ());
266+
267+ if (is_null ($ task )) {
268+ //create task
269+ $ task = $ this ->batch_task_factory ->buildBatchTask (self ::TaskName . '_SLIDE_UPLOAD_ ' . $ current_summit ->getIdentifier (), 0 , $ page );
270+ $ this ->batch_repository ->add ($ task );
271+ }
272+
273+ $ page = $ task ->getCurrentPage ();
274+ echo "Processing Page " . $ page . PHP_EOL ;
275+
276+ list ($ page , $ page_size , $ count , $ speakers ) = $ this ->speaker_repository ->searchBySummitSchedulePaginated
277+ (
278+ $ current_summit ,
279+ $ page ,
280+ $ page_size
281+ );
282+
262283 $ send = 0 ;
284+ echo sprintf ('total speakers %s - page count %s ' , $ count , count ($ speakers )).PHP_EOL ;
263285
264286 foreach ($ speakers as $ speaker ) {
265- /* @var DataList */
266287 if (!$ speaker instanceof IPresentationSpeaker) continue ;
267288
268- $ presentations = $ speaker-> PublishedPresentations ( $ current_summit -> ID );
269-
270- if (! $ presentations -> exists ()) {
271- echo "Skipping { $ speaker -> getName ()} . Has no published presentations " . PHP_EOL ;
289+ // we need an email for this speaker ...
290+ $ email = $ speaker -> getEmail ();
291+ if (empty ( $ email ) || !EmailValidator:: validEmail ( $ email )) {
292+ echo sprintf ( "Skipping %s (%s) . Has not valid email " , $ speaker -> getName (), $ speaker -> ID ) . PHP_EOL ;
272293 continue ;
273294 }
274295
275- if (!$ speaker ->Member ()->exists () || !EmailValidator::validEmail ($ speaker ->Member ()->Email )) {
276- echo $ speaker ->getName ()." ( " .$ speaker ->Member ()->Email . ") is not a valid email address. Skipping. " . PHP_EOL ;
296+ $ presentations = $ speaker ->AllPublishedPresentations ($ current_summit ->getIdentifier (), $ current_summit ->getExcludedTracksForUploadPresentationSlideDeck ());
297+
298+ if ($ presentations ->Count () == 0 ){
299+ echo sprintf ("skipping speaker %s (%s) - no published presentations available " , $ speaker ->getName (), $ speaker ->getEmail ()).PHP_EOL ;
277300 continue ;
278301 }
279302
280- $ to = $ speaker ->Member ()-> Email ;
281- $ subject = " Important Speaker Information for OpenStack Summit in { $ current_summit -> Title }" ;
282-
283- $ email = EmailFactory:: getInstance ()-> buildEmail ( ' do-not-reply@openstack.org ' , $ to , $ subject );
303+ if ( $ speaker ->hasUploadSlidesRequestEmail ( $ current_summit )){
304+ echo sprintf ( " skipping speaker %s (%s) - email already sent! " , $ speaker -> getName (), $ speaker -> getEmail ()). PHP_EOL ;
305+ continue ;
306+ }
284307
285- $ email ->setUserTemplate ("upload-presentation-slides-email " );
286- $ email ->populateTemplate ([
287- 'Speaker ' => $ speaker ,
308+ $ sender_service ->send ([
288309 'Presentations ' => $ presentations ,
289- 'Summit ' => $ current_summit
310+ 'Speaker ' => $ speaker ,
311+ 'Summit ' => $ current_summit ,
290312 ]);
291313
292- $ email ->send ();
293-
294- $ notification = new PresentationSpeakerUploadPresentationMaterialEmail ();
295- $ notification ->SpeakerID = $ speaker ->ID ;
296- $ notification ->SummitID = $ current_summit ->ID ;
297- $ notification ->SentDate = MySQLDatabase56::nowRfc2822 ();
298- $ notification ->write ();
299314 ++$ send ;
300- echo 'Email sent to ' . $ to . ' ( ' . $ speaker ->getName () . ') ' . PHP_EOL ;
315+
316+ echo sprintf ('sending email to %s ' , $ email ) . PHP_EOL ;
301317 }
318+
319+ $ task ->updatePage ($ count , $ page_size );
320+ $ task ->write ();
321+
302322 return $ send ;
303323 });
304324 }
0 commit comments