storeRedirectListing(true); } public function prepareToolbar(array &$data, string $element = 'bounces'): void { $toolbarHelper = new ToolbarHelper(); if ($element === 'bounces') { $toolbarHelper->addButton( 'ACYM_CONFIGURE', [ 'data-task' => 'config', 'id' => 'acym__bounce__button__config', 'type' => 'button', ], 'settings' ); $toolbarHelper->addButton( 'ACYM_RESET_DEFAULT_RULES', [ 'data-task' => 'reinstall', 'type' => 'button', 'data-confirmation-message' => 'ACYM_ARE_YOU_SURE', ], 'repeat' ); $toolbarHelper->addButton('ACYM_RUN_BOUNCE_HANDLING', ['data-task' => 'test'], 'play_arrow'); $toolbarHelper->addButton('ACYM_CREATE', ['data-task' => 'rule', 'type' => 'submit'], 'add', true); $remindMe = json_decode($this->config->get('remindme', '[]'), true); $messageIdentifier = 'bounce_rules_'.UpdateHelper::BOUNCE_VERSION; if (!in_array($messageIdentifier, $remindMe) && $this->config->get('bounceVersion', 0) < UpdateHelper::BOUNCE_VERSION) { $message = acym_translation('ACYM_NEW_BOUNCE_RULES'); $message .= ''; $message .= acym_translation('ACYM_DO_NOT_REMIND_ME'); $message .= ''; acym_enqueueMessage($message, 'info', false); } } else { $toolbarHelper = new ToolbarHelper(); $toolbarHelper->addSearchBar($data['search'], 'mailboxes_search', 'ACYM_SEARCH'); $toolbarHelper->addButton(acym_translation('ACYM_CREATE'), ['data-task' => 'mailboxAction'], 'add', true); $data['toolbar'] = $toolbarHelper; } $data['toolbar'] = $toolbarHelper; } public function bounces(): void { $data = []; $data['workflowHelper'] = new WorkflowHelper(); if (!acym_level(ACYM_ENTERPRISE)) { acym_setVar('layout', 'splashscreen'); $data['isEnterprise'] = false; } $this->prepareToolbar($data); parent::display($data); } public function ajaxSetOrdering(): void { $order = json_decode(acym_getVar('string', 'order'), true); if (empty($order)) { $order = []; } $i = 1; $error = false; foreach ($order as $rule) { $query = 'UPDATE #__acym_rule SET `ordering` = '.intval($i).' WHERE `id` = '.intval($rule); $error = acym_query($query) < 0 || $error; $i++; } acym_sendAjaxResponse('', [], !$error); } public function test(): void { $ruleClass = new RuleClass(); if ($ruleClass->getOrderingNumber() < 1) { acym_enqueueMessage(acym_translation('ACYM_NO_RULES'), 'error'); $this->listing(); return; } acym_increasePerf(); $bounceHelper = new BounceHelper(); $bounceHelper->report = true; if ($bounceHelper->init() && $bounceHelper->connect()) { $this->runBounce = true; } else { $errors = $bounceHelper->getErrors(); if (!empty($errors)) { acym_enqueueMessage($errors, 'error'); $errorString = implode(' ', $errors); $port = $this->config->get('bounce_port'); if (preg_match('#certificate#i', $errorString) && !$this->config->get('bounce_certif', false)) { acym_enqueueMessage(acym_translationSprintf('ACYM_YOU_MAY_TURN_ON_OPTION', ''.acym_translation('ACYM_SELF_SIGNED_CERTIFICATE').''), 'warning'); } elseif (!empty($port) && !in_array($port, ['993', '143', '110'])) { acym_enqueueMessage(acym_translation('ACYM_BOUNCE_WRONG_PORT'), 'warning'); } } } $this->listing(); } public function process(): void { acym_increasePerf(); $bounceHelper = new BounceHelper(); $bounceHelper->report = true; if (!$bounceHelper->init()) { return; } if (!$bounceHelper->connect()) { acym_display($bounceHelper->getErrors(), 'error'); return; } $disp = "\n
\n\n"; $disp .= '