mailboxActions = [
'acy_list_subscribe' => acym_translation('ACYM_SUBSCRIBE_USER'),
'acy_list_unsubscribe' => acym_translation('ACYM_UNSUB_USER'),
];
}
/**
* Both actions offer the same list selector
*/
public function displayMailboxActionOptions(string $fieldName): void
{
$listClass = new ListClass();
?>
getAllWithIdName(),
$fieldName.'[list_id]',
null,
['class' => 'acym__select'],
'value',
'text',
null,
false,
true
); ?>
getOneById($action['acy_list_subscribe']['list_id']);
if (empty($list)) {
return;
}
$result[] = acym_translationSprintf('ACYM_SUBSCRIBE_USER_X', $list->name);
}
if (!empty($action['acy_list_unsubscribe'])) {
$list = $listClass->getOneById($action['acy_list_unsubscribe']['list_id']);
if (empty($list)) {
return;
}
$result[] = acym_translationSprintf('ACYM_UNSUB_USER_X', $list->name);
}
}
public function onAcymMailboxAction_acy_list_subscribe(&$action, &$report, &$executedActions, $mailboxHelper)
{
$userClass = new UserClass();
$user = new \stdClass();
$user->email = $mailboxHelper->_message->header->from_email;
$userDatabase = $userClass->getOneByEmail($user->email);
if (empty($userDatabase->id)) {
$user->id = $userClass->save($user);
if (empty($user->id)) {
$report[] = [
'message' => acym_translation('ACYM_ERROR_SAVING'),
'success' => false,
];
$executedActions = false;
return;
}
} else {
$user->id = $userDatabase->id;
}
$subscribed = $userClass->subscribe([$user->id], [$action['list_id']]);
if (!$subscribed) {
$report[] = [
'message' => acym_translationSprintf('ACYM_COULD_NOT_SUBSCRIBE_TO_X', $action['list_id']),
'success' => false,
];
$executedActions = false;
return;
}
$report[] = [
'message' => acym_translationSprintf('ACYM_SUBSCRIBE_USER_X', $action['list_id']),
'success' => true,
];
}
public function onAcymMailboxAction_acy_list_unsubscribe(&$action, &$report, &$executedActions, $mailboxHelper)
{
$user = new \stdClass();
$user->email = $mailboxHelper->_message->header->from_email;
$userClass = new UserClass();
$userDatabase = $userClass->getOneByEmail($user->email);
if (empty($userDatabase->id)) {
$report[] = [
'message' => acym_translationSprintf('ACYM_SEND_ERROR_USER', $mailboxHelper->_message->header->from_email),
'success' => false,
];
$executedActions = false;
return;
}
$affected = $userClass->unsubscribe([$userDatabase->id], [$action['list_id']]);
$message = $affected
? acym_translationSprintf('ACYM_UNSUB_USER_X_FROM_X', $userDatabase->email, $action['list_id'])
: acym_translationSprintf('ACYM_COULD_NOT_UNSUB_USER_X_FROM_X', $userDatabase->email, $action['list_id']);
$report[] = [
'message' => $message,
'success' => $affected,
];
$executedActions = $affected;
}
}