getGroupQueue(); $eventQueue = $qh->getEventQueue(); $emailQueue = $qh->getEmailQueue(); // Create runners $groupRunner = new CRM_Queue_Runner([ 'title' => ts('ProPeace GroupMailinglist Runner'), 'queue' => $groupQueue, 'errorMode' => CRM_Queue_Runner::ERROR_CONTINUE, ]); $eventRunner = new CRM_Queue_Runner([ 'title' => ts('ProPeace EventMailinglist Runner'), 'queue' => $eventQueue, 'errorMode' => CRM_Queue_Runner::ERROR_CONTINUE, ]); $emailRunner = new CRM_Queue_Runner([ 'title' => ts('ProPeace EmailMailinglist Runner'), 'queue' => $emailQueue, 'errorMode' => CRM_Queue_Runner::ERROR_CONTINUE, ]); // Run runners $results = []; $continue = TRUE; while($continue) { $result = $groupRunner->runNext(false); if (!$result['is_continue']) { $continue = false; } $results['runners'][] = $result; } $groups = $qh->getGroups(); $events = $qh->getEvents(); $emails = $qh->getEmails(); // TODO: Sync groups and events just once and invoke syncing $mailingListsToSync = []; foreach ($groups as $group) { $mailingListsToSync[$group->getId()] = $group; } foreach ($events as $event) { $mailingListsToSync[$event->getId()] = $event; } foreach ($emails as $email) { $emailGroups = $email->getGroups(); $emailEvents = $email->getEvents(); foreach ($emailGroups as $group) { $mailingListsToSync[$group->getId()] = $group; } foreach ($emailEvents as $event) { $mailingListsToSync[$event->getId()] = $event; } } foreach ($mailingListsToSync as $mailingList) { $results['mailing_lists'][] = $mailingList->sync(); } return civicrm_api3_create_success($results, [], 'Mailinglist', 'Mlmmjsync'); /* throw new CRM_Core_Exception('Everyone knows that the magicword is "sesame"', 'magicword_incorrect'); */ }