<?php
    return function($kirby, $pages, $page) {

        $alert = null;

        if ($kirby->request()->is('POST') && get('submit')) {

            // check the honeypot
            if (empty(get('website')) === false) {
                go($page->url());
            }

            $data = [
                'name'  => get('name'),
                'email' => get('email'),
                'text'  => get('text')
            ];

            $rules = [
                'name'  => ['required', 'minLength' => 3],
                'email' => ['required', 'email'],
                'text'  => ['required', 'minLength' => 3, 'maxLength' => 3000],
            ];

            $messages = [
                'name'  => 'Bitte geben Sie einen Namen ein.',
                'email' => 'Bitte geben Sie eine gültige E-Mail-Adresse ein.',
                'text'  => 'Bitte geben Sie einen Text ein, der zwischen 3 und 3000 Zeichen lang ist.'
            ];

            // some of the data is invalid
            if ($invalid = invalid($data, $rules, $messages)) {
                $alert = $invalid;

                // the data is fine, let's send the email
            } else {
                try {
                    $kirby->email([
                        'template' => 'email',
                        'from'     => 'webmaster@schachfreunde-badsteben.de',
                        'replyTo'  => $data['email'],
                        'to'       => 'info@feigel.it',
                        'subject'  => esc($data['name']) . ' hat eine Nachricht über das Kontaktformular gesendet',
                        'data'     => [
                            'text'   => esc($data['text']),
                            'sender' => esc($data['name'])
                        ]
                    ]);

                } catch (Exception $error) {
                    if (option('debug')):
                        $alert['error'] = 'Beim Versenden ist ein Fehler aufgetreten:<br /> <strong>' . $error->getMessage() . '</strong>';
                    else:
                        $alert['error'] = 'Beim Versenden ist ein Fehler aufgetreten!';
                    endif;
                }

                // no exception occurred, let's send a success message
                if (empty($alert) === true) {
                    $success = 'Ihre Nachricht wurde gesendet! Wir werden uns bald bei Ihnen melden.';
                    $data = [];
                }
            }
        }

        return [
            'alert'   => $alert,
            'data'    => $data ?? false,
            'success' => $success ?? false
        ];
    };