Your IP : 216.73.216.218


Current Path : /home/antonen/keliauk-uk.lt/modules/mod_qlform/
Upload File :
Current File : /home/antonen/keliauk-uk.lt/modules/mod_qlform/mod_qlform.php

<?php
/**
 * @package		mod_qlform
 * @copyright	Copyright (C) 2017 ql.de All rights reserved.
 * @author 		Mareike Riegel mareike.riegel@ql.de
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

require_once(dirname(__FILE__).'/helper.php');

$input=JFactory::getApplication()->input;
$location=$params->get('location');

$obj_helper=new modQlformHelper($params,$module);
$showCaptcha=$obj_helper->captchaDefault();
$obj_helper->formControl=$params->get('formControl','jform');

$fieldModuleId=$params->get('fieldModuleId');
$moduleId=$module->id;

if(1==$params->get('bootstrap',0))JHtml::_('bootstrap.framework');

/*Xml: getting xml string from params*/
$obj_helper->addStyles();
$str_xml=$obj_helper->transformText($params->get('xml'));
simplexml_load_string($str_xml);

$obj_helper->createAdditionalFields();
if (isset($obj_helper->arrFields) AND is_array($obj_helper->arrFields)) $str_xml = $obj_helper->addFieldsToXml($str_xml,$obj_helper->arrFields,'additionalFields');

/*transform xml to form object*/
$form=$obj_helper->getForm($str_xml,$moduleId);

/*initiate captcha*/
if (1==$showCaptcha)$captcha=$obj_helper->getCaptcha();

if (1==$params->get('stylesLabelswithin','0'))$form=$obj_helper->addPlaceholder($form);
if (1==$params->get('todoDatabase'))
{
    $checkDatabase=$obj_helper->connectToDatabase();
    if(false!==$checkDatabase)$checkDatabase=$obj_helper->checkDatabase($obj_helper->obj_database,$params->get('databasetable'),$str_xml,$params->get('showDatabaseFormError'),$params->get('databaseaddcreated'));
}
if (1==$params->get('todoDatabaseExternal'))
{
    $paramsDatabaseExternal=array('driver','host','user','password','database','prefix',);
    foreach ($paramsDatabaseExternal as $k=>$v) $paramsDatabaseExternal[$v]=$params->get('databaseexternal'.$v);
    $checkDatabaseExternal=$obj_helper->connectToDatabase($paramsDatabaseExternal);
    //print_r($paramsDatabaseExternal);die;
    if(false!==$checkDatabaseExternal)$checkDatabaseExternal=$obj_helper->checkDatabase($obj_helper->obj_databaseexternal,$params->get('databaseexternaltable'),$str_xml,$params->get('showDatabaseexternalFormError'),$params->get('databaseexternaladdcreated'));
}

/*validation server site*/
if 
(
    /*JabBerwOcky for anti spam*/
    (
        0==$params->get('honeypot',0)
        OR
        (1==$params->get('honeypot',0) AND isset($_POST['JabBerwOcky']) AND ''==$_POST['JabBerwOcky'])
    )
    AND
    (
        (1==$fieldModuleId AND isset($_POST['moduleId']) AND $_POST['moduleId']==$moduleId AND isset($_POST['formSent']) AND 1==$_POST['formSent'] AND is_object($form))
        OR
        (0==$fieldModuleId AND isset($_POST['formSent']) AND 1==$_POST['formSent'] AND is_object($form))
    )
)
{
    $data=$input->getData($obj_helper->formControl);
    $obj_helper->processData=false;
    if(1==$params->get('processData',0))$obj_helper->initPreprocessing($data,$module,$form);
    if(true==$obj_helper->processData)$data=$obj_helper->processFor($data,'formDataBeforeValidation');
    if (1==$params->get('captchaadded') AND 0!=$showCaptcha AND isset($_POST['captcha'])) $data['captcha']=$_POST['captcha'];
    $dataToValidate=$data;
    $dataFiles=$input->files->get($obj_helper->formControl);
    if (is_array($dataFiles))$dataToValidate=array_merge($dataFiles,$dataToValidate);
    if(true==$obj_helper->processData)$dataToValidate=$obj_helper->processFor($dataToValidate,'formAndFileDataBeforeValidation');
    $validatedForm=$obj_helper->validate($dataToValidate);
    $form=$obj_helper->form;
    $validatedCaptcha=false;
    if (1==$showCaptcha AND $captcha instanceof JCaptcha) $validatedCaptcha=$obj_helper->checkCaptcha($captcha,$data);
    if (true==$validatedForm AND (0==$showCaptcha OR (1==$showCaptcha AND true==$validatedCaptcha))) $validated=true;
	else 
	{
        if(is_array($data) OR is_object($data)) foreach ($data as $k=>$v) if (is_string($v))$data[$k]=strip_tags(html_entity_decode($v));
        if(true==$obj_helper->processData)$data=$obj_helper->processFor($data,'beforeBindToForm');
        $success=$form->bind($data);
        $validated=false;
    }
}
if (1==$params->get('addPostToForm',0))
{
    if (isset($_POST[$obj_helper->formControl])) $array_posts[$obj_helper->formControl]=$obj_helper->subarrayToJson($_POST[$obj_helper->formControl]);
    if (isset($_POST['former'])) $array_posts['former']=$obj_helper->subarrayToJson($_POST['former']);
    if (isset($array_posts))
    {
        $array_posts=$obj_helper->stripQuotesInArrayValue($array_posts);
        $array_posts=$obj_helper->mergeSubarrays($array_posts,'former',$obj_helper->formControl);
    }
    if (isset($data) AND isset($array_posts) AND is_array($array_posts))
    {
        $data=array_merge($data,$array_posts);
    }
}

if (isset($validated) AND 1==$validated)
{
    /*FILE_UPLOAD START*/
    $obj_helper->files=$input->files->get($obj_helper->formControl);
    if((1==$params->get('fileupload_enabled',0) OR 1==$params->get('fileemail_enabled',0)) AND true==$obj_helper->checkPlgQlformuploaderExists() AND is_array($obj_helper->files) AND 0<count($obj_helper->files))
    {
        require_once(JPATH_BASE.'/plugins/system/qlformuploader/php/classes/plgQlformuploaderFiler.php');
        foreach($obj_helper->files as $k=>$v)
        {
            $obj_helper->files[$k]['current']=$obj_helper->files[$k]['tmp_name'];
            $obj_helper->files[$k]['fieldname']=$k;
        }
        $obj_helper->checkFiles();
        if (1==$params->get('fileupload_enabled'))
        {
            $obj_helper->saveFiles();
            $data['filesUploaded']=$obj_helper->getFilesUploadedData();
        }

    }

    if (1==$params->get('server_data'))
    {
        $data['server']=$obj_helper->getServerData($params->get('server_data_ip_anonymize'));
        if (1==$params->get('server_data_jsonify')) $data['server']=json_encode($data['server']);
    }

    if (1==$params->get('show_data_sent'))
	{
		$obj_helper->arrMessages[]=array('str'=>'<strong>'.JText::_('MOD_QLFORM_SHOWDATASENT_LABEL').'</strong><br />'.$obj_helper->dump($data));
	}
    $dataJsonified=$obj_helper->subarrayToJson($data);

    if (1==$params->get('todoEmail'))
	{
        if(true==$obj_helper->processData)$dataJsonified=$obj_helper->processFor($dataJsonified,'email');
        $recipient=preg_split("?\n?",$params->get('emailrecipient'));
        $mailSent=array();
        foreach ($recipient as $k=>$v)
        {
            $v=trim($v);
            if(''==$v)
            {
                unset($recipient[$k]);
                continue;
            }
            $mailSent[$k]=$obj_helper->mail($v,JText::_($params->get('emailsubject')),$dataJsonified,$form,'',$params->get('emaillabels',1));
        }
        while(list($k,$v)=each($mailSent)) if (1!=$v) unset($mailSent[$k]);
        if (count($mailSent)==count($recipient))
        {
            if(1==$params->get('emailsentdisplay',0))$obj_helper->arrMessages[]=array('str'=>JText::_('MOD_QLFORM_MAIL_SENT'));
        }
        else
        {
            $successful=count($mailSent);
            $failed=count($recipient)-count($mailSent);
            $obj_helper->arrMessages[]=array('warning'=>1, 'str'=>sprintf(JText::_('MOD_QLFORM_MAIL_SENT_ERROR_COUNT'),$successful,$failed));
        }
        if(isset($obj_helper->files) AND 1==$params->get('fileemail_enabled',0))
        {
            foreach($obj_helper->files as $k=>$v)
            {
                $dataFileUpload[$v['name']]['savedTo']=$v['current'];
                $dataFileUpload[$v['name']]['error']=$v['error'];
            }
            $data['filesSendViaEmail']=$dataFileUpload;
            unset($obj_helper->files);
        }
	}
    $dataJsonified=$obj_helper->subarrayToJson($data);

    if (1==$params->get('todoDatabase') AND true==$checkDatabase)
	{
        if(true==$obj_helper->processData)$dataJsonified=$obj_helper->processFor($dataJsonified,'database');
        if (1==$params->get('databaseaddcreated')) $dataJsonified['created']=date('Y-m-d H:i:s');
        if (1==$params->get('showDataSavedToDatabase')) $obj_helper->arrMessages[]=array('str'=>'<strong>'.JText::_('MOD_QLFORM_SHOWDATASAVEDTODATABASE_LABEL').'</strong><br />'.$obj_helper->dump($dataJsonified,'foreachstring'));
        $obj_helper->saveToDatabase($params->get('databasetable'),$dataJsonified);
	}
    if (1==$params->get('todoDatabaseExternal') AND true==$checkDatabaseExternal)
    {
        if(true==$obj_helper->processData)$dataJsonified=$obj_helper->processFor($dataJsonified,'databaseExternal');
        if (1==$params->get('databaseexternaladdcreated')) $dataJsonified['created']=date('Y-m-d H:i:s');
        if (1==$params->get('showDataSavedToDatabaseexternal')) $obj_helper->arrMessages[]=array('str'=>'<strong>'.JText::_('MOD_QLFORM_SHOWDATASAVEDTODATABASE_LABEL').'</strong><br />'.$obj_helper->dump($dataJsonified,'foreachstring'));
        $obj_helper->saveToDatabase($params->get('databaseexternaltable'),$dataJsonified,$paramsDatabaseExternal);
    }
	if (1==$params->get('todoSomethingElse'))
	{
        if(true==$obj_helper->processData)$data=$obj_helper->processFor($data,'somethingElse');
        $obj_helper->doSomethingElse($data,$module,$form);
	}
    if (1==$params->get('todoSomethingCompletelyDifferent'))
	{
        if(true==$obj_helper->processData)$data=$obj_helper->processFor($data,'completlyDifferent');
        $obj_helper->doSomethingCompletelyDifferent($data,$module,$form);
	}
    if (1==$params->get('todoJmessage'))
    {
        if(true==$obj_helper->processData)$dataJsonified=$obj_helper->processFor($dataJsonified,'jmessage');
        $obj_helper->sendJmessage($data);
    }
    if (1==$params->get('todoSendcopy') AND isset($_POST[$obj_helper->formControl]) AND isset($_POST[$obj_helper->formControl]['sendcopy']) AND 1==$_POST[$obj_helper->formControl]['sendcopy'] AND !empty($data[$params->get('sendcopyfieldname')]))
    {
        $dataWithoutServer=$data;
        if (isset($dataWithoutServer['server'])) unset($dataWithoutServer['server']);
        if(true==$obj_helper->processData)$dataWithoutServer=$obj_helper->processFor($dataWithoutServer,'sendcopy');
        $dataWithoutServer=$obj_helper->subarrayToJson($dataWithoutServer);
        $obj_helper->mail($data[$params->get('sendcopyfieldname')],JText::_('MOD_QLFORM_COPY').': '.JText::_($params->get('emailsubject')),$dataWithoutServer,$form,$params->get('sendcopypretext'),$params->get('sendcopylabels',1),1);
    }
	if (1==$params->get('locationbool') AND !empty($location))
    {
        header('HTTP/1.0 302 Found');
        header('location:'.JText::_($location));
        exit;
    }
    $obj_helper->arrMessages[]=array('str'=>$params->get('message'));
}

/*Display messages*/
if (isset($obj_helper->arrMessages) AND is_array($obj_helper->arrMessages)) $messages=$obj_helper->displayMessages($params->get('messageType'));
require JModuleHelper::getLayoutPath('mod_qlform', $params->get('layout', 'default'));