<?php
$REGISTRATION_INFORMATION = "
<h3>Registration information</h3>
<p>
{{usertable}}
</p>
";

$WELCOME_TEMPLATE = (object)[
        "subject" => "[" . $SERVICE_ACRONYM . "] Thank you for your " . $SERVICE_ACRONYM . " registration",
        "text"    => "Thank for registering at " . $SERVICE_ACRONYM . " .",
        "html" => "<html><body>
                <p>Dear {{full_name}},</p>
                <p>Thank for registering at " . $SERVICE_ACRONYM . " .</p>"
                . $REGISTRATION_INFORMATION . "
                <p>
                <p>Best regards,</p>
                <p>" . $SERVICE_ACRONYM . " team</p>
        </body></html>"
];

$MAIL_TEMPLATE = (object)[
        "subject" => "[" . $SERVICE_ACRONYM . "] Confirm your email address",
        "text"    => "To complete your registration please paste this to your browser: {{url}}",
        "html" => "<html><body>
                <p>Dear {{full_name}},</p>
                <p>Please check the information below and click on the confirm button to complete your " . $SERVICE_ACRONYM . " registration:</p>"
                . $REGISTRATION_INFORMATION . "
                <p>
                If you did not request this registration, please ignore this email.
                If you find errors in the information above, please ignore this email and repeat the registration process.
                </p>
                <a style='display: inline-block; outline: 0; cursor: pointer;
                padding: 5px 16px;
                font-size: 14px;
                font-weight: bold;
                text-decoration: none;
                line-height: 20px;
                vertical-align: middle;
                border: 1px solid;
                border-radius: 6px;
                color: #ffffff;
                background-color: #2ea44f;
                border-color: #1b1f2326;
                box-shadow: rgba(27, 31, 35, 0.04) 0px 1px 0px 0px, rgba(255, 255, 255, 0.25) 0px 1px 0px 0px inset;
                transition: 0.2s cubic-bezier(0.3, 0, 0.5, 1);
                transition-property: color, background-color, border-color;
                :hover {
                    background-color: #2c974b;
                    border-color: #1b1f2326;
                    transition-duration: 0.1s;
                }
            ' href='{{url}}'>Confirm " . $SERVICE_ACRONYM . " registration</a>
            <p>Best regards,</p>
                <p>" . $SERVICE_ACRONYM . " team</p>
        </body></html>"
];


$RECOVERY_EMAIL_TEMPLATE = (object)[
        "subject" => "[" . $SERVICE_ACRONYM . "] Reset password for your " . $SERVICE_ACRONYM . " account",
        "text"    => "Seems you requested a password reset. If that wasn't you please ignore this message. Otherwise go to this url to change your password: {{url}}",
        "html"    => "<html><body><h3>Forgot your " . $SERVICE_ACRONYM . " password?</h3>
                <p>It seems that you requested a password reset. If that wasn't you please ignore this message. Otherwise click the button below to reset your password</p>
                <a style='
                display: inline-block;
                outline: none;
                cursor: pointer;
                font-weight: bold;
                text-decoration: none;
                border-radius: 3px;
                padding: 12px 24px;
                border: 0;
                color: #fff;
                background: #ff5000;
                line-height: 1.15;
                font-size: 14px;
                :hover {
                    transition: all .1s ease;
                    box-shadow: 0 0 0 0 #fff, 0 0 0 3px #1de9b6;
                }
            ' href='{{url}}'>Reset your " . $SERVICE_ACRONYM . " password</a>
        </body></html>"
];


// Add the support email there
$PASSWORD_CHANGED_EMAIL_TEMPLATE = (object)[
        "subject" => "[" . $SERVICE_ACRONYM . "] Your " . $SERVICE_ACRONYM . " password was changed",
        "text"    => "Your password was changed successfully. If this wasn't you please contact support",
        "html"    => "<html><body>
                <h3>" . $SERVICE_ACRONYM . " password changed</h3><p>Your password was changed successfully. If this wasn't you please contact support.</p>
        </body></html>"
];
