353 lines
11 KiB
PHP
353 lines
11 KiB
PHP
<?php
|
|
|
|
namespace inContact;
|
|
|
|
/**
|
|
* Klasa Menus
|
|
*
|
|
* @link https://krzysztof-turek.com
|
|
*
|
|
* @package tylkofotografia.pl
|
|
* @version 0.2
|
|
*/
|
|
class Shortcode
|
|
{
|
|
use Singleton;
|
|
|
|
function __construct()
|
|
{
|
|
$this->addShortcode();
|
|
}
|
|
|
|
protected function addShortcode(): void
|
|
{
|
|
add_shortcode("in-contact", [$this, "inContact"]);
|
|
}
|
|
|
|
public function inContact($atts)
|
|
{
|
|
$em_name = null;
|
|
$em_mail = null;
|
|
$em_message = null;
|
|
$class = null;
|
|
$html = null;
|
|
$error = null;
|
|
$body = null;
|
|
$telefon = null;
|
|
$mailResult = 0;
|
|
$form_submitted = $_SERVER["REQUEST_METHOD"] === "POST";
|
|
|
|
if (!empty($_POST["website"])) {
|
|
die();
|
|
}
|
|
if ($form_submitted) {
|
|
$emmsg = isset($_POST["emmsg"]) ? $_POST["emmsg"] : "";
|
|
|
|
if (!empty($_POST["em_name"])) {
|
|
$em_name = $_POST["em_name"];
|
|
} else {
|
|
$error .=
|
|
esc_html__("Please enter your name", "in-contact") .
|
|
"<br />";
|
|
}
|
|
if (!empty($_POST["em_mail"])) {
|
|
$em_mail = $_POST["em_mail"];
|
|
} else {
|
|
$error .=
|
|
esc_html__(
|
|
"Please enter your email address",
|
|
"in-contact",
|
|
) . "<br />";
|
|
}
|
|
if (!empty($_POST["em_message"])) {
|
|
$em_message = $_POST["em_message"];
|
|
} else {
|
|
$error .=
|
|
esc_html__("Please enter your message", "in-contact") .
|
|
"<br />";
|
|
}
|
|
|
|
$targetEmail =
|
|
"To: Tylkofotografia <" .
|
|
get_option("incontact-target-mail") .
|
|
">";
|
|
$mailResult = 0;
|
|
$headers = "MIME-Version: 1.0" . "\r\n";
|
|
$headers .=
|
|
"Content-type: text/html; charset=" .
|
|
get_bloginfo("charset") .
|
|
"" .
|
|
"\r\n";
|
|
$headers .= "From: " . $em_name . " <" . $em_mail . ">" . "\r\n";
|
|
$headers = [
|
|
"Content-Type: text/html; charset=UTF-8",
|
|
"From: " . $em_name . " <" . $em_mail . ">",
|
|
"Reply-To: " . $em_name . " <" . $em_mail . ">",
|
|
];
|
|
$emailTitle = __("New message from contact form", "in-contact");
|
|
$emailHeading = __("Contact details", "in-contact");
|
|
$emailNameLabel = __("Name and surname", "in-contact");
|
|
$emailEmailLabel = __("Email", "in-contact");
|
|
$emailMessageHeading = __("Message content", "in-contact");
|
|
$emailReplyLabel = __("Reply to message", "in-contact");
|
|
$emailFooter = __(
|
|
"This email was generated automatically by the website contact form.",
|
|
"in-contact",
|
|
);
|
|
$emailRights = __("All rights reserved.", "in-contact");
|
|
$body =
|
|
'<!DOCTYPE html>
|
|
<html lang="pl">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>' .
|
|
esc_html($emailTitle) .
|
|
'</title>
|
|
<style>
|
|
body {
|
|
font-family: Arial, sans-serif;
|
|
background-color: #f5f5f5;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
.container {
|
|
width: 90%;
|
|
max-width: 600px;
|
|
margin: 20px auto;
|
|
background-color: #ffffff;
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
|
}
|
|
.header {
|
|
background-color: #3a7bd5;
|
|
color: #ffffff;
|
|
padding: 20px;
|
|
text-align: center;
|
|
}
|
|
.content {
|
|
padding: 20px;
|
|
line-height: 1.6;
|
|
}
|
|
.content h2 {
|
|
margin-top: 0;
|
|
}
|
|
.footer {
|
|
background-color: #f1f1f1;
|
|
text-align: center;
|
|
padding: 10px;
|
|
font-size: 12px;
|
|
color: #777777;
|
|
}
|
|
.button {
|
|
display: inline-block;
|
|
padding: 10px 20px;
|
|
margin-top: 20px;
|
|
background-color: #3a7bd5;
|
|
color: #ffffff;
|
|
text-decoration: none;
|
|
border-radius: 5px;
|
|
}
|
|
.info {
|
|
background-color: #f9f9f9;
|
|
border-left: 4px solid #3a7bd5;
|
|
padding: 10px;
|
|
margin: 10px 0;
|
|
}
|
|
@media (max-width: 600px) {
|
|
.container {
|
|
width: 95%;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<h1>📩 ' .
|
|
esc_html($emailTitle) .
|
|
'</h1>
|
|
</div>
|
|
<div class="content">
|
|
<h2>' .
|
|
esc_html($emailHeading) .
|
|
'</h2>
|
|
<p><strong>' .
|
|
esc_html($emailNameLabel) .
|
|
':</strong> {{IMIE_NAZWISKO}}</p>
|
|
<p><strong>' .
|
|
esc_html($emailEmailLabel) .
|
|
':</strong> {{EMAIL}}</p>
|
|
|
|
|
|
<div class="info">
|
|
<h3>📬 ' .
|
|
esc_html($emailMessageHeading) .
|
|
':</h3>
|
|
<p>{{WIADOMOSC}}</p>
|
|
</div>
|
|
|
|
<a href="mailto:{{EMAIL}}" class="button">' .
|
|
esc_html($emailReplyLabel) .
|
|
'</a>
|
|
</div>
|
|
<div class="footer">
|
|
' .
|
|
esc_html($emailFooter) .
|
|
'<br>
|
|
© {{ROK}} Twoja Firma. ' .
|
|
esc_html($emailRights) .
|
|
'
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
';
|
|
$body = str_replace(
|
|
[
|
|
"{{IMIE_NAZWISKO}}",
|
|
"{{EMAIL}}",
|
|
"{{TELEFON}}",
|
|
"{{WIADOMOSC}}",
|
|
"{{ROK}}",
|
|
],
|
|
[
|
|
$em_name,
|
|
$em_mail,
|
|
$telefon,
|
|
str_replace(["\r\n", "\r", "\n"], "<br />", $em_message),
|
|
date("Y"),
|
|
],
|
|
$body,
|
|
);
|
|
$gRecaptchaResponse = isset($_POST["g-recaptcha-response"])
|
|
? $_POST["g-recaptcha-response"]
|
|
: "";
|
|
|
|
if (!empty($error)) {
|
|
$html .=
|
|
'<div class="alert alert-success" role="alert">' .
|
|
$error .
|
|
"</div>";
|
|
} elseif ($emmsg == "true") {
|
|
$secret = get_option("incontact-secret-key");
|
|
$response = null;
|
|
if (get_option("incontact-site-key") != "") {
|
|
$reCaptcha = new \ReCaptcha\ReCaptcha($secret);
|
|
$resp = $reCaptcha
|
|
->setExpectedHostname($_SERVER["SERVER_NAME"])
|
|
->verify($gRecaptchaResponse, $_SERVER["REMOTE_ADDR"]);
|
|
if ($resp->isSuccess()) {
|
|
$canSend = true;
|
|
} else {
|
|
$errors = $resp->getErrorCodes();
|
|
}
|
|
} else {
|
|
$canSend = true;
|
|
}
|
|
|
|
if ($canSend) {
|
|
$mailResult = wp_mail(
|
|
$targetEmail,
|
|
$em_name,
|
|
$body,
|
|
$headers,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
wp_enqueue_style("ContactCss", plugins_url("/css/cform.css", __FILE__));
|
|
|
|
if (get_option("incontact-site-key") != "") {
|
|
$html .=
|
|
'<script src="https://www.google.com/recaptcha/api.js"></script>
|
|
<script>
|
|
$(document).ready(function(){window.setTimeout(function(){$(".alert").fadeTo(500,0).slideUp(500,function(){$(this).remove()})},2e3)}),$(document).ready(function(){"use strict";window.addEventListener("load",function(){var t=document.getElementsByClassName("needs-validation");Array.prototype.filter.call(t,function(t){t.addEventListener("submit",function(e){!1===t.checkValidity()&&(e.preventDefault(),e.stopPropagation()),t.classList.add("was-validated")},!1)})},!1)})();
|
|
</script>' . "\n";
|
|
}
|
|
|
|
$html .= '<div class="row justify-content-md-center">
|
|
<div class="col-12">';
|
|
if ($mailResult == 1) {
|
|
$html .=
|
|
'<div class="alert alert-success" role="alert">' .
|
|
get_option("incontact-form-snd-ok") .
|
|
"</div>";
|
|
}
|
|
|
|
$html .=
|
|
'<div class="jumbotron"><form action="" class="needs-validation" novalidate method="post" id="demo-form">
|
|
<input type="hidden" name="emmsg" value="true" />
|
|
<input type="text" id="website" name="website" />
|
|
<div class="jumbotron">
|
|
<div class="form-group">
|
|
<label for="name" class="col-2 control-label">' .
|
|
get_option("incontact-form-name") .
|
|
'</label>
|
|
<div class="col-12">
|
|
<input type="text" class="form-control" id="name" name="em_name" placeholder="' .
|
|
get_option("incontact-form-ph-name") .
|
|
'" value="" required>
|
|
<div class="invalid-feedback">
|
|
' .
|
|
esc_html__("Please enter your name!", "in-contact") .
|
|
'
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="email" class="col-2 control-label">' .
|
|
get_option("incontact-form-email") .
|
|
'</label>
|
|
<div class="col-12">
|
|
<input type="email" class="form-control" id="email" name="em_mail" placeholder="' .
|
|
get_option("incontact-form-ph-email") .
|
|
'" value="" required>
|
|
<div class="invalid-feedback">
|
|
' .
|
|
esc_html__("Please enter your email address!", "in-contact") .
|
|
'
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<p class="col-2 control-label">' .
|
|
get_option("incontact-form-message") .
|
|
'</p>
|
|
<div class="col-12">
|
|
<textarea class="form-control" rows="4" name="em_message" placeholder="' .
|
|
get_option("incontact-form-ph-message") .
|
|
'" required></textarea>
|
|
<div class="invalid-feedback">
|
|
' .
|
|
esc_html__("Please enter your message!", "in-contact") .
|
|
'
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-4">
|
|
<div class="g-recaptcha" data-sitekey="' .
|
|
get_option("incontact-site-key") .
|
|
'"></div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<p></p>
|
|
<div class="col-4">
|
|
<button id="submit" name="submit" type="submit" value="Send" class="btn btn-primary">
|
|
<i class="fas fa-paper-plane"></i> ' .
|
|
esc_html__("Send", "in-contact") .
|
|
'
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div></div>';
|
|
|
|
return $html;
|
|
}
|
|
}
|