leadingZeros($val,2); $legacy = 'LAN_CONTACT_'.$inc; // $defs[$legacy] = 'LANCONTACT_'.$inc; $defs['LANCONTACT_'.$inc] = 'LAN_CONTACT_'.$inc; } e107::getLanguage()->bcDefs($defs); $this->init(); } function init() { $pref = e107::pref(); $active = varset($pref['contact_visibility'], e_UC_PUBLIC); $contactInfo = trim(SITECONTACTINFO); $pref = e107::getPref(); if(!check_class($active) && empty($contactInfo) && empty($pref['contact_info'])) { e107::redirect(); } if(isset($_POST['send-contactus'])) { $this->processFormSubmit(); } $form = ''; $info = ''; if(deftrue('SITECONTACTINFO') || !empty($pref['contact_info'])) { $info = $this->renderContactInfo(); } if(check_class($active) && isset($pref['sitecontacts']) && $pref['sitecontacts'] != e_UC_NOBODY) { $form = $this->renderContactForm(); } elseif($active == e_UC_MEMBER && ($pref['sitecontacts'] != e_UC_NOBODY)) { $this->renderSignupRequired(); } if(!$LAYOUT = e107::getCoreTemplate('contact', 'layout')) { $LAYOUT = '{---CONTACT-INFO---} {---CONTACT-FORM---} '; } $LAYOUT = str_replace( ['{---CONTACT-FORM---}', '{---CONTACT-INFO---}'], [$form, $info], $LAYOUT ); echo e107::getParser()->parseTemplate($LAYOUT, true, e107::getScBatch('contact')); } /** * @param $sql * @return array */ private function processFormSubmit() { $sql = e107::getDb(); $sec_img = e107::getSecureImg(); $tp = e107::getParser(); $ns = e107::getRender(); $pref = e107::getPref(); $error = ""; $ignore = false; // Contact Form Filter ----- $contact_filter = e107::pref('core', 'contact_filter', ''); if(!empty($contact_filter)) { $tmp = explode("\n", $contact_filter); if(!empty($tmp)) { foreach($tmp as $filterItem) { if(strpos($_POST['body'], $filterItem) !== false) { $ignore = true; break; } } } } // --------- $sender_name = $tp->toEmail($_POST['author_name'], true, 'RAWTEXT'); $sender = check_email($_POST['email_send']); $subject = $tp->toEmail($_POST['subject'], true, 'RAWTEXT'); $body = nl2br($tp->toEmail($_POST['body'], true, 'RAWTEXT')); $email_copy = !empty($_POST['email_copy']) ? 1 : 0; // Check Image-Code if(isset($_POST['rand_num']) && ($sec_img->invalidCode($_POST['rand_num'], $_POST['code_verify']))) { $error .= LAN_CONTACT_15 . "\\n"; } // Check message body. if(strlen(trim($body)) < 15) { $error .= LAN_CONTACT_12 . "\\n"; } // Check subject line. if(isset($_POST['subject']) && strlen(trim($subject)) < 2) { $error .= LAN_CONTACT_13 . "\\n"; } if(!strpos(trim($sender), "@")) { $error .= LAN_CONTACT_11 . "\\n"; } // No errors - so proceed to email the admin and the user (if selected). if($ignore === true) { $ns->tablerender('', "
" . LAN_CONTACT_09 . "
"); // ignore and leave them none the wiser. e107::getDebug()->log("Contact form post ignored"); require_once(FOOTERF); exit; } elseif(empty($error)) { $body .= "

"; if(USER) { $body .= ""; } if(empty($_POST['contact_person']) && !empty($pref['sitecontacts'])) // only 1 person, so contact_person not posted. { if($pref['sitecontacts'] == e_UC_MAINADMIN) { $query = "user_perms = '0' OR user_perms = '0.' "; } elseif($pref['sitecontacts'] == e_UC_ADMIN) { $query = "user_admin = 1 "; } else { $query = "FIND_IN_SET(" . $pref['sitecontacts'] . ",user_class) "; } } else { $query = "user_id = " . intval($_POST['contact_person']); } if($sql->gen("SELECT user_name,user_email FROM `#user` WHERE " . $query . " LIMIT 1")) { $row = $sql->fetch(); $send_to = $row['user_email']; $send_to_name = $row['user_name']; } else { $send_to = SITEADMINEMAIL; $send_to_name = ADMIN; } // ---------------------- $CONTACT_EMAIL = e107::getCoreTemplate('contact', 'email'); unset($_POST['contact_person'], $_POST['author_name'], $_POST['email_send'], $_POST['subject'], $_POST['body'], $_POST['rand_num'], $_POST['code_verify'], $_POST['send-contactus']); if(!empty($_POST)) // support for custom fields in contact template. { foreach($_POST as $k => $v) { $body .= ""; } } $body .= "
IP:" . e107::getIPHandler()->getIP(true) . "
User:#" . USERID . " " . USERNAME . "
" . $k . ":" . $tp->toEmail($v, true, 'RAWTEXT') . "
"; if(!empty($CONTACT_EMAIL['subject'])) { $vars = array('CONTACT_SUBJECT' => $subject, 'CONTACT_PERSON' => $send_to_name); if(!empty($_POST)) // support for custom fields in contact template. { foreach($_POST as $k => $v) { $scKey = strtoupper($k); $vars[$scKey] = $tp->toEmail($v, true, 'RAWTEXT'); } } $subject = $tp->simpleParse($CONTACT_EMAIL['subject'], $vars); } // ----------------------- // Send as default sender to avoid spam issues. Use 'replyto' instead. $eml = array( 'subject' => $subject, 'sender_name' => $sender_name, 'body' => $body, 'replyto' => $sender, 'replytonames' => $sender_name, 'template' => 'default' ); $message = e107::getEmail()->sendEmail($send_to, $send_to_name, $eml) ? LAN_CONTACT_09 : LAN_CONTACT_10; // $message = (sendemail($send_to,"[".SITENAME."] ".$subject, $body,$send_to_name,$sender,$sender_name)) ? LANCONTACT_09 : LANCONTACT_10; if(isset($pref['contact_emailcopy']) && $pref['contact_emailcopy'] && $email_copy == 1) { require_once(e_HANDLER . "mail.php"); sendemail($sender, "[" . SITENAME . "] " . $subject, $body, ADMIN, $sender, $sender_name); } $ns->tablerender('', "
" . $message . "
"); } else { message_handler("P_ALERT", $error); } } /** * @return string html */ private function renderContactInfo() { $contact_shortcodes = e107::getScBatch('contact'); $CONTACT_INFO = varset($GLOBALS['CONTACT_INFO']); if(empty($CONTACT_INFO)) { $CONTACT_INFO = e107::getCoreTemplate('contact', 'info'); } $contact_shortcodes->wrapper('contact/info'); $text = e107::getParser()->parseTemplate($CONTACT_INFO, true, $contact_shortcodes); return e107::getRender()->tablerender(LAN_CONTACT_01, $text, "contact-info", true); } private function renderContactForm() { $CONTACT_FORM = varset($GLOBALS['CONTACT_FORM']); if(empty($CONTACT_FORM)) { $CONTACT_FORM = e107::getCoreTemplate('contact', 'form'); // require_once(e_THEME."templates/contact_template.php"); } $contact_shortcodes = e107::getScBatch('contact'); $contact_shortcodes->wrapper('contact/form'); $text = e107::getParser()->parseTemplate($CONTACT_FORM, true, $contact_shortcodes); if(trim($text) !== '') { return e107::getRender()->tablerender(LAN_CONTACT_02, $text, "contact-form", true); } } private function renderSignupRequired() { $srch = array("[", "]"); $repl = array("", ""); $message = LAN_CONTACT_16; // "You must be [registered] and signed-in to use this form."; e107::getRender()->tablerender(LAN_CONTACT_02, "
" . str_replace($srch, $repl, $message) . "
", "contact"); } } e107::lan('core','contact'); e107::title(LAN_CONTACT_00); e107::canonical('contact'); e107::route('contact/index'); require_once(HEADERF); new contact_front; require_once(FOOTERF);