'', 'from' => ['name' => '', 'email' => ''], 'message' => '', 'subject' => ''];
private array $unraveled = [];
private array $form = ['form' => '', 'answer' => '', 'colorError' => ''];
private array $formField = [];
public function __construct()
{
}
private function sendEmail(): bool
{
$this->unravel($this->suppress('sent'));
$this->generateEmailMessage();
$oMailer = new PHPMailer();
$oMailer->CharSet = "UTF-8";
$oMailer->AddAddress($this->email['adresses']);
$oMailer->From = $this->email['from']['email'];
$oMailer->FromName = $this->email['from']['name'];
$oMailer->Subject = $this->email['subject'];
$oMailer->Body = $this->email['message'];
if ($oMailer->send()) {
return true;
}
return false;
}
private function unravel($toUnravel, $prefix = ''): void
{
foreach ($toUnravel as $key => $value) {
if (is_array($value)) {
$this->unravel($value, $key . ' ');
} else {
$this->unraveled["{$prefix}{$key}"] = $value;
}
}
}
private function add2Message($key, $value) {
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ', 25 - strlen($key));
$this->email['message'] .= "$value\n";
}
}
private function generateEmailMessage() {
if ($this->unraveled)
foreach ($this->unraveled as $key => $value) {
$this->add2Message($key, $value);
}
}
private function suppress() {
$fields = [];
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key, $suppress) === false)
$fields[$key] = $value;
}
return $fields;
}
public function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
public function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
public function setEmailFrom($email, $name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
public function setForm($form) {
$this->form['form'] = $form;
}
public function setAnswer($answer) {
$this->form['answer'] = $answer;
}
public function setBackgroundError($color) {
$this->form['colorError'] = $color;
}
public function formInterpretation(&$form) {
$fields = explode('###', $form);
$field = [];
for ($i = 1; $i < count($fields); $i = $i + 2) {
$attributte = explode(';', trim($fields[$i]));
foreach ($attributte as $attribute) {
$nameValue = explode(':', trim($attribute));
if ($nameValue[0] != 'option' && $nameValue[0] != 'optionvalue') {
$field["{$fields[$i]}"]["{$nameValue[0]}"] = $nameValue[1];
} else {
$field["{$fields[$i]}"]["{$nameValue[0]}"][] = $nameValue[1];
}
}
}
return $field;
}
public function formOutput($sent = false) {
echo '
';
}
public function formField($attribute, $sent) {
$style = '';
$value = '';
$parameter = "name=\"{$attribute['name']}\"";
if ($sent && !$this->formFieldCorrect($attribute))
$style = "style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
if (!empty($attribute['size']))
$parameter .= " size=\"{$attribute['size']}\"";
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size']))
$parameter .= " size=\"{$attribute['size']}\"";
if (!empty($attribute['value']))
$value = $attribute['value'];
if (!empty($_POST["{$attribute['name']}"]))
$value = $_POST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'captcha':
if ($sent) {
$captcha = @$_POST['ct_captcha'];
$capId = @$_POST['captcha_id'];
$securimage = new Securimage();
if ($securimage->check($captcha) == false) {
echo '';
}
}
// show captcha HTML using Securimage::getCaptchaHtml()
$options = [];
$options['input_name'] = 'ct_captcha'; // change name of input element for form post input_text
$options['input_text'] = mi18n("Zeichen eingeben");
$options['input_required'] = false;
if (!empty($_SESSION['ctform']['captcha_error'])) {
// error html to show in captcha output
$options['error_html'] = $_SESSION['ctform']['captcha_error'];
}
echo "