=ip2long($_SERVER['REMOTE_ADDR'])){ $ip=true; }else{ $ip=false; } } return $ip; } $app = JFactory::getApplication(); $jinput = $app->input; $model = $this->getModel(); // check if website uses CloudFlare and set IP if (in_ip_range('204.93.240.0','204.93.240.255') || in_ip_range('204.93.177.0','204.93.177.255') || in_ip_range('199.27.128.0','199.27.135.255') || in_ip_range('173.245.48.0','173.245.63.255') || in_ip_range('103.22.200.0','103.22.203.255') || in_ip_range('141.101.64.0','141.101.127.255') || in_ip_range('108.162.192.0','108.162.255.255') || in_ip_range('190.93.240.0','190.93.255.255')) { $site_ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } else{ $site_ip = $_SERVER['REMOTE_ADDR']; } // get the parameters $params = JComponentHelper::getParams('com_alfcontact'); $redirect_option = $params->get('redirect_option', 1); $redirect_url = $params->get('url', ''); $verbose = $params->get('verbose', 1); $html = $params->get('mailformat', 1); $site = $params->get('fromsite', 0); $sitename = $app->get('fromname'); $siteaddress = $app->get('mailfrom'); if ($html) { $sep = "
"; $line = "
"; } else { $sep = PHP_EOL; $line = PHP_EOL . '-------------------------------------------------------------------------------' . PHP_EOL; } //Variable ophalen die verstuurd zijn via URL $name = $jinput->getString('name','', 'post'); $email = $jinput->getString('email','', 'post'); $emailto_id = $jinput->getInt('emailto_id', 99); $subject = $jinput->getString('subject','','post'); $message = $jinput->getString('message','','post'); $copy = $jinput->getBool('copy', 0); $extravalues= $jinput->getString('extravalues','','post'); //Store form data in the session $app->setUserState('com_alfcontact.name', $name); $app->setUserState('com_alfcontact.email', $email); $app->setUserState('com_alfcontact.emailto_id', $emailto_id); $app->setUserState('com_alfcontact.subject', $subject); $app->setUserState('com_alfcontact.message', $message); $app->setUserState('com_alfcontact.copy', $copy); //check the security measures if (!$model->CheckCaptcha()) { JError::raiseWarning("0", JText::_('COM_ALFCONTACT_WRONG_CAPTCHA')); $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=alfcontact', false)); return false; } // field validation - we trim the input to prevent whitespace-only values if (!trim($name)) { JError::raiseWarning("0", JText::_('COM_ALFCONTACT_INVALID_NAME')); $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=alfcontact', false)); return false; } if (!preg_match('/^[a-zA-Z0-9._-]+(\\+[a-zA-Z0-9._-]+)*@([a-zA-Z0-9.-]+\\.)+[a-zA-Z0-9.-]{2,4}$/', $email)) { JError::raiseWarning("0", JText::_('COM_ALFCONTACT_INVALID_EMAIL')); $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=alfcontact', false)); return false; } if (!trim($subject)) { JError::raiseWarning("0", JText::_('COM_ALFCONTACT_INVALID_SUBJECT')); $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=alfcontact', false)); return false; } if (!trim($message)) { JError::raiseWarning("0", JText::_('COM_ALFCONTACT_INVALID_MESSAGE')); $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=alfcontact', false)); return false; } //get email address coresponding to ID number if ($emailto_id == '99') { $emailto = $siteaddress; } else { $db = JFactory::getDBO(); $query = "SELECT * FROM #__alfcontact WHERE id =". (int) $emailto_id; $db->setQuery( $query ); $rows = $db->loadObjectList(); $emailto = $rows[0]->email; $bcc = $rows[0]->bcc; $prefix = $rows[0]->prefix; $optfields = $rows[0]->extra; //Adding prefix to subject $subject = $prefix.' '.$subject; } //Split multiple email addresses into an array $recipients = explode("\n", $emailto); // Add information from the extra fields if applicable $fields_array = explode("\r\n", $optfields); $values_array = explode('#', $extravalues); unset($values_array[0]); $extra_array = array_combine($fields_array, $values_array); if (count($extra_array) > 0){ $extramsg = ''; foreach ($extra_array as $key => $value) { $extramsg = $extramsg . $key . ' ' . $value . $line; } $message = $extramsg . $sep . $message; } // send copy if requested if ($copy) { $copySubject = JText::_('COM_ALFCONTACT_COPYOFMESSAGE').' '.$sitename ; $mail = JFactory::getMailer(); $mail->addRecipient($email); $mail->setSender($siteaddress, $sitename); $mail->setSubject($copySubject); $mail->setBody($message); if ($html) { $mail->IsHTML(True); //$mail->setBody(nl2br($message)); } $sent = $mail->Send(); } //Add an infomation banner to the top of the contacts message. if ($verbose) { $header = JText::_('COM_ALFCONTACT_DETAILS_HEADER') . $sep; $header = $header . $line; $header = $header . JText::_('COM_ALFCONTACT_DETAILS_NAME') . " " . $name . $sep; $header = $header . JText::_('COM_ALFCONTACT_DETAILS_EMAIL') . " " . $email . $sep; $header = $header . JText::_('COM_ALFCONTACT_DETAILS_IP') . " " . $site_ip . $sep; $header = $header . JText::_('COM_ALFCONTACT_DETAILS_BROWSER') . " " .$_SERVER['HTTP_USER_AGENT'] . $sep; $header = $header . $line; $message = $header . $message; } //send mail $mail = JFactory::getMailer(); foreach($recipients as $value) { $mail->addRecipient($value); } if(!empty($bcc)){ //Split multiple bcc addresses into an array $bccs = explode("\n", $bcc); foreach($bccs as $value) { $mail->addBCC($value); } } if ($site) { $mail->setSender(array($siteaddress, $name)); } else { $mail->setSender(array($email, $name)); } $mail->setSubject($subject); $mail->setBody($message); $mail->addReplyTo($email, $name); if ($html) { $mail->IsHTML(True); //$mail->setBody($message); //$mail->setBody(nl2br($message)); } $sent = $mail->Send(); //Clear session variables $app->setUserState('com_alfcontact.name', null); $app->setUserState('com_alfcontact.email', null); $app->setUserState('com_alfcontact.emailto_id', null); $app->setUserState('com_alfcontact.subject', null); $app->setUserState('com_alfcontact.message', null); $app->setUserState('com_alfcontact.copy', null); //redirect switch ($redirect_option) { case 2: $this->setRedirect(JURI::current()); break; case 3: $this->setRedirect(JRoute::_('index.php?option=com_alfcontact&view=response')); break; case 4: $this->setRedirect($redirect_url); break; default:$this->setRedirect(JRoute::_(JURI::root())); break; } } }