grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026<?php
/**
 * JoomlaBuff module Anyform
 * @package mod_jb_anyform
 * @copyright Copyright (C) 2014 - 2019 JoomlaBuff http://joomlabuff.com. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 * @websites http://joomlabuff.com
 * @support Forum - http://joomlabuff.com/forum/index.html
 */
defined ( '_JEXEC' ) or die ();
class ModJBAnyformHelper {
	
	/**
	 * Method to return module params
	 * 
	 * @param unknown $inputs        	
	 */
	public static function getModuleParams($inputs) {
		$module = JModuleHelper::getModule ( 'jb_anyform', $inputs ['module_title'] );
		$params = new JRegistry ();
		return $params->loadString ( $module->params );
	}
	/**
	 * Method to send Mail
	 */
	public static function getAnyFormDataAjax() {
		
		// Check for request forgeries.
		JSession::checkToken () or jexit ( JText::_ ( 'JINVALID_TOKEN' ) );
		
		// ajax submit
		$inputs = JFactory::getApplication ()->input->get ( 'jbanyform', array (), 'ARRAY' );
		
		// validate the inputs
		$errors = self::getValidatedData ( $inputs );
		
		// if errors exists show the response
		if (! empty ( $errors )) {
			self::showResponse ( 0, 'warning', array_values ( $errors ) );
		} else {
			self::sendMailToAdmin ( $inputs );
			if (isset ( $inputs ['send_copy'] ) && $inputs ['send_copy']) {
				self::sendMailcopy ( $inputs );
			}
			
			self::showResponse ( 1, 'success', array (
					JText::_ ( 'JB_ANYFORM_NOTIFY_SUCCESS_MESSAGE' ) 
			) );
		}
	}
	
	/**
	 * Display captcha
	 *
	 * @param string $event        	
	 * @param string $value        	
	 */
	public static function captcha($event, $value = '') {
		// import the captcha plugin
		JPluginHelper::importPlugin ( 'captcha', JFactory::getConfig ()->get ( 'captcha' ) );
		$dispatcher = JEventDispatcher::getInstance ();
		if ($event == 'onDisplay') {
			$dispatcher->trigger ( 'onInit', 'capt' );
			return $dispatcher->trigger ( 'onDisplay', array (
					'capt',
					'capt',
					'' 
			) );
		}
		if ($event == 'onCheckAnswer') {
			return $dispatcher->trigger ( 'onCheckAnswer', $value );
		}
	}
	
	/**
	 * Method to sendMailcopy
	 *
	 * @param array $data        	
	 * @param JRegistry $params        	
	 */
	public static function sendMailcopy($data) {
		$app = JFactory::getApplication ();
		
		$config = JFactory::getConfig ();
		if (version_compare ( JVERSION, '3.0', 'ge' )) {
			$sitename = $config->get ( 'sitename' );
		} else {
			$sitename = $config->getValue ( 'config.sitename' );
		}
		
		
		// get the current module params
		$params = self::getModuleParams ( $data );
		$mailfrom = $app->get ( 'mailfrom' );
		$fromname = $app->get ( 'fromname' );
		$sitename = $app->get ( 'sitename' );
		$name = $data ['name'];
		$email = JStringPunycode::emailToPunycode ( $data ['email'] );
		$subject = $data ['subject'];
		// Prepare email body
		$prefix = JText::sprintf ( 'JB_ANYFORM_ENQUIRY_TEXT',$sitename);
		// $body = $prefix . "\n" . $name . ' <' . $email . '>' . "\r\n\r\n" . stripslashes ( $body );
		
		$subject = isset ( $data ['subject'] ) ? $data ['subject'] : $mailfrom . ' ' . $prefix;
		$body = "\n" .JText::_ ( 'JB_ANYFORM_MAIL_FROM' ) .':' . $fromname . ' <' . $mailfrom . '>';
		
		if (isset ( $data ['phone'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_PHONE' ) . ' :' . $data ['phone'];
		}
		
		if (isset ( $data ['deparment'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DEPARTMENT' ) . ' :' . $data ['deparment'];
		}
				
		if (isset ( $data ['website'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_WEBSITE' ) . ' :' . $data ['website'];
		}
				
		if (isset ( $data ['date'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_DATE' ) . ' :' . $data ['date'];
		}
		
		if (isset ( $data ['no_of_guest'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_ENTER_FIELDNAME_NUMBER_OF_GUEST' ) . ':' . $data ['no_of_guest'];
		}
		
		if (isset ( $data ['message'] ) && ! empty ( $data ['message'] )) {
			$msg = preg_replace ( '#<script(.*?)>(.*?)</script>#is', '', $data ['message'] );
			$body .= "\n" . $msg;
		}
		
		$body =  stripslashes ( $body );
		
		$copy_fromname = isset ( $data ['name'] ) ? $data ['name'] : '';
		$copy_mailfrom = JStringPunycode::emailToPunycode ( $data ['email'] );		
		$copytext = "\n".JText::sprintf ( 'JB_ANYFORM_COPYTEXT_OF', $copy_fromname, $sitename );
		$copytext .= $body;
		$copysubject = JText::sprintf ( 'JB_ANYFORM_COPY_SUBJECT_OF',$subject );
		$copytext .= "\n" .JText::sprintf ( 'JB_ANYFORM_EMAIL_THANKS' ,$sitename );
		//echo $copysubject;
		//print_r($copytext); exit;
		$mail = JFactory::getMailer ();
		$mail->addRecipient ( $email );
		$mail->addReplyTo ( array (
				$email,
				$name 
		) );
		$mail->setSender ( array (
				$mailfrom,
				$fromname 
		) );
		$mail->setSubject ( $copysubject );
		$mail->setBody ( $copytext );
		$sent = $mail->Send ();
	}
	
	public static function sendMailToAdmin($data) {
		$jInput = JFactory::getApplication ()->input;
		
		foreach ( $data as $key => &$value ) {
			$value = self::cleanInput ( $value );
		}
		// get the current module params
		$params = self::getModuleParams ( $data );
		
		$admin_email = $params->get ( 'to_email' );
		
		if (empty ( $admin_email )) {
			if (version_compare ( JVERSION, '3.0', 'ge' )) {
				$admin_email = $config->get ( 'mailfrom' );
				$admin_fromname = $config->get ( 'fromname' );
			} else {
				$admin_email = $config->getValue ( 'config.mailfrom' );
				$admin_fromname = $config->getValue ( 'config.fromname' );
			}
		}
		
		$config = JFactory::getConfig ();
		if (version_compare ( JVERSION, '3.0', 'ge' )) {
			$sitename = $config->get ( 'sitename' );
		} else {
			$sitename = $config->getValue ( 'config.sitename' );
		}
		
		$bcc_email = $params->get ( 'to_bcc_email', '' );
		$cc_email = $params->get ( 'to_cc_email', '' );
		$ip_remote = $jInput->server->get ( 'REMOTE_ADDR' );
		$fromname = isset ( $data ['name'] ) ? $data ['name'] : '';
		$mailfrom = JStringPunycode::emailToPunycode ( $data ['email'] );
		
		// Prepare email body
		$prefix = JText::sprintf ( 'JB_ANYFORM_ENQUIRY_TEXT', $sitename );
		
		$subject = isset ( $data ['subject'] ) ? $data ['subject'] : $mailfrom . ' ' . $prefix;
		
		if (isset ( $data ['askQuestion'] )) {
			  $subject =    JText::sprintf ( 'JB_ANYFORM_ASKQUETION_SUBJECT', JUri::base () , $mailfrom);
		}
		
		$body = $prefix . $fromname . ' <' . $mailfrom . '>';
		
		if (isset ( $data ['phone'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_PHONE' ) . ' :' . $data ['phone'];
		}
		
		if (isset ( $data ['deparment'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DEPARTMENT' ) . ' :' . $data ['deparment'];
		}
		
		if (isset ( $data ['website'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_WEBSITE' ) . ' :' . $data ['website'];
		}
		
		
		
		if (isset ( $data ['date'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_DISPLAY_DATE' ) . ' :' . $data ['date'];
		}
		
		if (isset ( $data ['no_of_guest'] )) {
			$body .= "\n" . JText::_ ( 'JB_ANYFORM_ENTER_FIELDNAME_NUMBER_OF_GUEST' ) . ':' . $data ['no_of_guest'];
		}
		
		if (isset ( $data ['message'] ) && ! empty ( $data ['message'] )) {
			$msg = preg_replace ( '#<script(.*?)>(.*?)</script>#is', '', $data ['message'] );
			$body .= "\n" . $msg;
		}
		$body.= "\n" .JText::sprintf ( 'JB_ANYFORM_EMAIL_THANKS' ,$sitename );
		//print_r($body);
		$mail_body = "\r\n\r\n" . stripslashes ( $body );
		 //print_r($mail_body);
		//exit;
		$mail = JFactory::getMailer ();
		
		$mail->addRecipient ( $admin_email );
		$mail->addReplyTo ( $mailfrom, $fromname );
		if (isset ( $cc ))
			$mail->addCC ( $cc_email );
		if (isset ( $bcc_email ))
			$mail->addBCC ( $bcc_email );
		$mail->setSender ( array (
				$mailfrom,
				$fromname 
		) );
		$mail->setSubject ( $sitename . ': ' . $subject );
		$mail->setBody ( $mail_body );
		return $mail->Send ();
	}
	

	/**
	 * Method to validate data
	 * 
	 * @param array $post        	
	 * @return $errors
	 */
	public static function getValidatedData($post) {
		$errors = array ();
		if (empty ( $post ['name'] )) {
			// $sender_email = $post['email'];
			$errors ['name'] = JText::_ ( 'JB_ANYFORM_MISSING_NAME_FIELD' );
		}
		 
		if (empty ( $post ['email'] )) {
			$errors ['email'] = JText::_ ( 'JB_ANYFORM_MISSING_EMAIL_ID' );
		}
		
		if (isset ( $post ['email'] ) && ! JMailHelper::isEmailAddress ( $post ['email'] )) {
			$errors ['email'] = JText::_ ( 'JB_ANYFORM_MISSING_EMAIL_ID' );
		}
		
		if (isset ( $post ['phone'] )) {
			if (! preg_match ( "/^[1-9][0-9]*$/", $post ['phone'] )) {
				$errors ['phone'] = JText::_ ( 'JB_ANYFORM_INVALID_PHONE' );
			}
		}
		
		if (! isset ( $post ['askQuestion'] )) {
			if (isset ( $post ['subject'] ) && empty ( $post ['subject'] )) {
				$errors ['subject'] = JText::_ ( 'JB_ANYFORM_MISSING_SUBJECT' );
			}
		} else {
			if (empty ( $post ['phone'] )) {
				$errors ['phone'] = JText::_ ( 'JB_ANYFORM_MISSING_PHONE' );
			} else {
				if (! preg_match ( "/^[1-9][0-9]*$/", $post ['phone'] )) {
					$errors ['phone'] = JText::_ ( 'JB_ANYFORM_INVALID_PHONE' );
				}
			}
		}
		
		if (empty ( $post ['message'] )) {
			$errors ['message'] = JText::_ ( 'JB_ANYFORM_MISSING_MESSAGE' );
		}
		
		if (isset ( $post ['captcha_enabled'] ) && ! isset ( $_POST ['g-recaptcha-response'] )) {
			$errors ['captcha'] = JText::_ ( 'JB_ANYFORM_INVALID_CAPTCHA' );
		}
		
		if (isset ( $post ['captcha_enabled'] )) {
			$res = self::captcha ( 'onCheckAnswer', $_POST ['g-recaptcha-response'] );
			if (! $res [0]) {
				$errors ['captcha'] = JText::_ ( 'JB_ANYFORM_INVALID_CAPTCHA' );
			}
		}
		
		return $errors;
	}
	
	/**
	 * Method to show response
	 *
	 * @param boolean $status        	
	 * @param string $message        	
	 * @param array $warnings        	
	 */
	protected static function showResponse($status, $message, $warnings = array()) {
		$response = ( object ) array (
				'status' => $status,
				'message' => $message,
				'warnings' => $warnings 
		);
		JFactory::getDocument ()->setMimeEncoding ( 'application/json' );
		echo json_encode ( $response );
		JFactory::getApplication ()->close ();
	}
	
	/**
	 * Method to clean input
	 *
	 * @param unknown $input
	 */
	public static function cleanInput($input) {
		return htmlentities ( is_array ( $input ) ? implode ( ',