diff --git a/Civi/Mailinglistsync/BaseMailingList.php b/Civi/Mailinglistsync/BaseMailingList.php index c928635..a5b3a15 100644 --- a/Civi/Mailinglistsync/BaseMailingList.php +++ b/Civi/Mailinglistsync/BaseMailingList.php @@ -95,7 +95,7 @@ abstract class BaseMailingList */ static protected function getCustomFields(): array { - return CustomField::get() + return CustomField::get(FALSE) ->addSelect('*') ->addWhere('custom_group_id:name', '=', static::CUSTOM_GROUP_NAME) ->execute() diff --git a/Civi/Mailinglistsync/EventMailingList.php b/Civi/Mailinglistsync/EventMailingList.php index 18af9de..d9c6ba4 100644 --- a/Civi/Mailinglistsync/EventMailingList.php +++ b/Civi/Mailinglistsync/EventMailingList.php @@ -53,7 +53,7 @@ class EventMailingList extends BaseMailingList { ->addJoin('Participant AS participant', 'INNER', ['id', '=', 'participant.contact_id'], ['participant.event_id', '=', $this->event['id']], - ['participant.status', 'IN', self::getEnabledParticipantStatus()], + ['participant.status_id', 'IN', self::getEnabledParticipantStatus()], ) ->addGroupBy('id') ->execute() @@ -93,6 +93,6 @@ class EventMailingList extends BaseMailingList { * @return ?array */ public static function getEnabledParticipantStatus(): ?array { - return MailingListSettings::get(E::SHORT_NAME . '_participant_status'); + return MailingListSettings::get('participant_status'); } } diff --git a/Civi/Mailinglistsync/QueueHelper.php b/Civi/Mailinglistsync/QueueHelper.php index 3988dbc..036ee2a 100644 --- a/Civi/Mailinglistsync/QueueHelper.php +++ b/Civi/Mailinglistsync/QueueHelper.php @@ -29,21 +29,21 @@ class QueueHelper { 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $this->eventQueue = \Civi::queue( 'propeace-mailinglist-event-queue', [ 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $this->emailQueue = \Civi::queue( 'propeace-mailinglist-email-queue', [ 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $this->groups = []; @@ -106,12 +106,14 @@ class QueueHelper { * Stores an email address in the queue helper singleton. * * @param \CRM_Queue_TaskContext $context - * @param string $email + * @param string|null $email * * @return bool */ - public static function storeEmail(\CRM_Queue_TaskContext $context, string $email): bool { - self::getInstance()->addToEmails($email); + public static function storeEmail(\CRM_Queue_TaskContext $context, ?string $email): bool { + if (!empty($email)) { + self::getInstance()->addToEmails($email); + } return TRUE; } diff --git a/LICENSE.txt b/LICENSE.txt index 41c2284..d72e56f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,5 @@ Package: de.propeace.mailinglistsync -Copyright (C) 2025, FIXME +Copyright (C) 2025, Pro Peace Licensed under the GNU Affero Public License 3.0 (below). ------------------------------------------------------------------------------- diff --git a/info.xml b/info.xml index 41e1e8b..e90cf7f 100644 --- a/info.xml +++ b/info.xml @@ -7,12 +7,12 @@ Marc Koch - koch@forumZFD.de + marc.koch@propeace.de Maintainer - + https://git.propeace.de/ProPeace/de.propeace.mailinglistsync--> https://www.gnu.org/licenses/agpl-3.0.html diff --git a/mailinglistsync.php b/mailinglistsync.php index 9850ef5..4307197 100644 --- a/mailinglistsync.php +++ b/mailinglistsync.php @@ -129,7 +129,7 @@ function mailinglistsync_civicrm_validateForm($formName, &$fields, &$files, &$fo 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -145,7 +145,7 @@ function mailinglistsync_civicrm_validateForm($formName, &$fields, &$files, &$fo 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -225,8 +225,10 @@ function mailinglistsync_civicrm_post(string $op, string $objectName, int $objec ->first()['event_id']; $mailingList = new EventMailingList($eventId); - // Check permission to alter event mailing list - if ($mailingList->isEnabled() && !CRM_Core_Permission::check('manage_event_mailinglists')) { + // Check permission to alter event mailing list if it is not a deletion + if ($op !== 'delete' + && $mailingList->isEnabled() + && !CRM_Core_Permission::check('manage_event_mailinglists')) { CRM_Core_Session::setStatus( E::ts('You do not have permission to manage event mailing lists.'), E::ts('Permission Denied'), @@ -324,7 +326,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -345,7 +347,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -372,7 +374,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -393,7 +395,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -414,7 +416,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback @@ -449,7 +451,7 @@ function mailinglistsync_civicrm_postCommit(string $op, string $objectName, int 'type' => 'SqlParallel', 'is_autorun' => FALSE, 'reset' => FALSE, - 'error' => 'drop', + 'error' => 'abort', ]); $queue->createItem(new CRM_Queue_Task( // callback