Issues (281)

Branch: master

src/Backend/Modules/Mailmotor/Actions/Ping.php (1 issue)

1
<?php
2
3
namespace Backend\Modules\Mailmotor\Actions;
4
5
use Backend\Core\Engine\Base\ActionIndex;
6
use Backend\Core\Engine\Model;
7
use Backend\Core\Language\Language;
8
use Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettings;
9
use Backend\Modules\Mailmotor\Domain\Settings\Event\SettingsSavedEvent;
10
11
/**
12
 * This tests the api
13
 */
14
final class Ping extends ActionIndex
15
{
16
    public function execute(): void
17
    {
18
        parent::execute();
19
20
        $this->checkToken();
21
22
        // Successful API connection
23
        if ($this->ping()) {
24
            $this->redirect($this->getBackLink(['report' => 'successful-mail-engine-api-connection']));
25
        }
26
27
        $this->resetMailEngine();
28
        $this->redirect($this->getBackLink(['error' => 'wrong-mail-engine-credentials']));
29
    }
30
31
    private function ping(): bool
32
    {
33
        $gateway = $this->getContainer()->get('mailmotor.factory.public')->getSubscriberGateway();
34
35
        // don't try to ping if you aren't using a service like mailchimp or campaign monitor
36
        if (!$gateway->ping($this->getContainer()->getParameter('mailmotor.list_id'))) {
37
            return false;
38
        }
39
40
        $settings = $this->getContainer()->get('fork.settings');
41
        foreach (Language::getActiveLanguages() as $language) {
42
            $languageListId = $settings->get('Mailmotor', 'list_id_' . $language);
43
44
            // If there isn't a specific list for the language we don't need to check it
45
            if ($languageListId === null) {
46
                continue;
47
            }
48
49
            if (!$gateway->ping($languageListId)) {
50
                return false;
51
            }
52
        }
53
54
        return true;
55
    }
56
57
    private function getBackLink(array $parameters = []): string
58
    {
59
        return Model::createUrlForAction(
60
            'Settings',
61
            null,
62
            null,
63
            $parameters
64
        );
65
    }
66
67
    private function resetMailEngine(): void
68
    {
69
        $saveSettings = new SaveSettings($this->get('fork.settings'));
0 ignored issues
show
It seems like $this->get('fork.settings') can also be of type null; however, parameter $modulesSettings of Backend\Modules\Mailmoto...Settings::__construct() does only seem to accept Common\ModulesSettings, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

69
        $saveSettings = new SaveSettings(/** @scrutinizer ignore-type */ $this->get('fork.settings'));
Loading history...
70
        $saveSettings->mailEngine = 'not_implemented';
71
72
        $this->get('command_bus')->handle($saveSettings);
73
74
        $this->get('event_dispatcher')->dispatch(
75
            SettingsSavedEvent::EVENT_NAME,
76
            new SettingsSavedEvent($saveSettings)
77
        );
78
    }
79
}
80