| Current Path : /home/antonen/keliauk-uk.lt/modules/mod_qlform/ |
| Current File : //home/antonen/keliauk-uk.lt/modules/mod_qlform/helper.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
*/
jimport( 'joomla.form.form' );
$arr_files=array('modelModqlform','modQlformCaptcha','modQlformMailer','modQlformDatabase','modQlformDatabaseExternal','modQlformMessager','modQlformSomethingElse','modQlformSomethingCompletelyDifferent','modQlformFiler','modQlformJmessages','modQlformValidation','modQlformPreprocessData',);
foreach ($arr_files as $k=>$v) if (!class_exists($v) AND file_exists($file=dirname(__FILE__).'/php/classes/'.$v.'.php')) require_once($file);
class modQlformHelper
{
public $arrMessages=array();
public $params;
public $form;
public $module;
/**
* constructor
* @param object $params
*/
function __construct($params,$module)
{
$this->params=$params;
$this->module=$module;
}
/**
* method to do something else,
* that the developer of this module could never have guessed
* @param object $data
* @param object $module
* @param object $params
* @return bool true on success, false on failure
*/
function doSomethingElse($data,$module,$form)
{
if(false==$this->checkIfCustomExists('modQlformSomethingElse'))return false;
$obj=new modQlformSomethingElse($data,$this->params,$module,$form);
if (1==$obj->doSomethingElse()) $this->arrMessages[]=array('warning'=>0, 'str'=>JText::_('MOD_QLFORM_SOMETHINGELSEWORKEDOUTFINE'));
else $this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_SOMETHINGELSEDIDNOTWORK'));
}
/**
* method to do something completely different,
*
* @param mixed $variable at your service
*/
function doSomethingCompletelyDifferent($data,$module,$form)
{
if(false==$this->checkIfCustomExists('modQlFormSomethingCompletelyDifferent'))return false;
$obj=new modQlFormSomethingCompletelyDifferent($data,$this->params,$module,$form);
if (1==$obj->doSomethingCompletelyDifferent()) $this->arrMessages[]=array('warning'=>0, 'str'=>JText::_('MOD_QLFORM_SOMETHINGCOMPLETELYDIFFERENTWORKEDOUTFINE'));
else $this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_SOMETHINGCOMPLETELYDIFFERENTDIDNOTWORK'));
}
/**
* method to turn content vor array or object to string
* that the developer of this module could never have guessed
*
* @param mixed $variable at your service
*/
function dump($data,$type='var_dump')
{
if ('var_dump'==$type)
{
ob_start();
var_dump($data);
$str_data=ob_get_contents();
ob_end_clean();
}
elseif ('foreachstring'==$type)
{
$str_data='';
foreach ($data as $k=>$v)
{
$str_data.='col['.$k.']=>'.$v.'<br />';
}
}
return $str_data;
}
/**
* method to transform string with [ and ] to xml with < and >
*
* @param string $str_content of param cell
* @return string $str_xml
*/
function transformText($str_content)
{
$str_xml=$str_content;
$str_xml=preg_replace("/\[/","<",$str_xml);
$str_xml=preg_replace("/\]/",">",$str_xml);
return $str_xml;
}
/**
* method to get and manipulize server data
*/
function getServerData($ipSecure)
{
if(1!=$ipSecure) return $_SERVER;
$this->arrServer=$_SERVER;
$arrIp=preg_split('/\./',$_SERVER['REMOTE_ADDR']);
unset($arrIp[count($arrIp)-1]);
unset($arrIp[count($arrIp)-1]);
$this->arrServer['REMOTE_ADDR']=(implode('.',$arrIp).'.x.x');
return $this->arrServer;
}
function createAdditionalFields()
{
/*adding fields*/
if(1==$this->params->get('user_id',0))$this->arrFields[]=array('name'=>'user_id','type'=>'hidden','default'=>$this->getUserData('id'),);
if(1==$this->params->get('user_email',0))$this->arrFields[]=array('name'=>'user_email','type'=>'hidden','default'=>$this->getUserData('email'),);
if(1==$this->params->get('article_id',0))$this->arrFields[]=array('name'=>'article_id','type'=>'hidden','default'=>$this->getArticleData('id'),);
if(1==$this->params->get('article_title',0))$this->arrFields[]=array('name'=>'article_title','type'=>'hidden','default'=>$this->getArticleData('title'),);
if (1==$this->params->get('captcha2',0))$this->arrFields[]=array('name'=>'captcha','type'=>'captcha','label'=>JText::_($this->params->get('captchalabel','MOD_QLFORM_CAPTCHA_LABEL')),'validate'=>'captcha');
if (1!=$this->params->get('todoSendcopy')) return;
switch($this->params->get('sendcopyType',1))
{
/*checkbox, unchecked*/
case 1:
$this->arrFields[]=array('name'=>'sendcopy','type'=>'checkbox','label'=>JText::_('MOD_QLFORM_SENDCOPY_LABEL'),'value'=>'1',);
break;
/*checkbox checked*/
case 2:
$this->arrFields[]=array('name'=>'sendcopy','type'=>'checkbox','label'=>JText::_('MOD_QLFORM_SENDCOPY_LABEL'),'value'=>'1','checked'=>'true',);
break;
/*hidden field, always*/
case 3:
$this->arrFields[]=array('name'=>'sendcopy','type'=>'hidden','default'=>'1',);
break;
}
}
/**
* method to add field to xml
*
* @param string $str_xml
* @param string $arrFields array of fields to add
* @param string $class string of fieldset class
* @return string $str_xml
*/
function addFieldsToXml($str_xml,$arrFields,$class='')
{
if (is_array($arrFields))
{
$formCloseTag='</form>';
$str_xml=str_replace($formCloseTag, '<fieldset class="'.$class.'" name="qlform'.md5(rand(0,100)).'">'.$formCloseTag,$str_xml);
foreach ($arrFields as $k=>$v)
{
$str_fieldtag='<field ';
foreach($v as $k2=>$v2) $str_fieldtag.=$k2.'="'.$v2.'" ';
$str_fieldtag.=' />'."\n";
$str_xml=str_replace($formCloseTag, $str_fieldtag.$formCloseTag,$str_xml);
}
$str_xml=str_replace($formCloseTag, '</fieldset>'.$formCloseTag,$str_xml);
}
return $str_xml;
}
/**
* method to get fields from current article
* @param string $field
* @return result field value
* see http://forum.joomla.org/viewtopic.php?t=525350
*/
function getArticleData($field)
{
$app=JFactory::getApplication();
$option=$app->input->getData('option');
$view = $app->input->getData('view');
$article_id = (string)$app->input->getData('id');
if ($option=='com_content' && $view=='article')
{
$article=JTable::getInstance('content');
$article->load($article_id);
return $article->get($field);
}
else return false;
}
/**
* method to get fields from current user
* @param string $field
* @return result field value
*/
function getUserData($field)
{
$user=JFactory::getUser();
if (""!=$user->get($field)) return $user->get($field);
else return false;
}
/**
* method to transform xml string to xml object
* @param string $str_xml
* @return object xml
*/
function getXml($str_xml)
{
return simplexml_load_string($str_xml);
}
/**
* Method to get the form based on str_xml.
*
* The base form is loaded from XML and then an event is fired
* for users plugins to extend the form with extra fields.
*
* @param array $str_xml An optional array of data for the form to interogate.
* @return mixed $form JForm object on success, false on failure
* @since 1.6
*/
public function getForm($str_xml,$id)
{
$this->obj_form=new modelModqlform();
$this->obj_form->form_name='qlform'.$id;
$this->obj_form->setFormControl($this->formControl);
$this->obj_form->str_xml=$str_xml;
$form=$this->obj_form->getForm();
if (is_object($form)) return $this->form=$form;
else $this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_NO_FORM_GIVEN'));
return false;
}
/**
* Method to get the form based on str_xml.
*
* The base form is loaded from XML and then an event is fired
* for users plugins to extend the form with extra fields.
*
* @param array $data An array of data (post data) to be validated
* @return mixed $form JForm object on success, false on failure
* @since 1.6
*/
public function validate($data)
{
/*no validation due to params*/
if(0==$this->params->get('validate',1)) return true;
if(1==$this->params->get('validate',1) OR 3==$this->params->get('validate',1)) $validated=$this->obj_form->check($data);
if(2==$this->params->get('validate',1) OR 3==$this->params->get('validate',1))
{
if(false==$this->checkIfCustomExists('modQlformValidation'))return false;
$obj_validator=new modQlformValidation($data,$this->params,$this->module,$this->form);
$validatedCustom=$obj_validator->validate();
}
if ((isset($validated) AND false==$validated) OR (isset($validatedCustom) AND false==$validatedCustom))
{
$this->arrMessages[]=array('warning'=>1,'str'=>JText::_('MOD_QLFORM_VALIDATION_FAILED'));
foreach($this->form->getErrors() as $k=>$v) $this->arrMessages[]=array('warning'=>1,'str'=>$v->getMessage());
$validated=false;
}
return $validated;
}
private function checkIfCustomExists($str)
{
if(class_exists($str)) return true;
$this->arrMessages[]=array('warning'=>1,'str'=>JText::sprintf('MOD_QLFORM_MSG_CLASSNOTFOUND',$str));
return false;
}
/**
* Method to raise Errors
*
* @param int $type type of error displayed, either via joomla or text displayes
* @since 1.6
*/
public function raiseFormErrors()
{
if (isset($this->obj_form->formErrors) AND is_array($this->obj_form->formErrors))
foreach ($this->obj_form->formErrors as $k=>$v) $this->arrMessages[]=array('warning'=>1, 'str'=>$v->getMessage());
}
/**
* Method to raise Errors
*
* @param int $type type of error displayed, either via joomla or text displayes
* @since 1.6
*/
public function displayMessages($type)
{
$obj_messager = new modQlformMessager($this->arrMessages,$type);
if (isset($obj_messager->message) AND !empty($obj_messager->message)) return $obj_messager->message;
}
/**
* Method for checking database
*
* @param string $table Name of table to save data in
* @param array $data Array of data to compare to tabel cols
*
* @return mixed array with table cols on success, false on failure
*
*/
public function connectToDatabase($paramsDatabaseExternal=array())
{
if (0==count($paramsDatabaseExternal))
{
if(!class_exists('modQlformDatabase'))return false;
$this->obj_database=new modQlformDatabase();
}
else
{
if(!class_exists('modQlformDatabase') OR !class_exists('modQlformDatabaseExternal'))return false;
$this->obj_databaseexternal=new modQlformDatabaseExternal($paramsDatabaseExternal);
}
}
/**
* Method for saving data in database
*
* @param string $database database name
* @param string $table Name of table to save data in
* @param bool $showErrors If to raise Errors or let be
*
* @return bool true on success, false on failure
*
*/
public function saveToDatabase($table,$data,$paramsDatabaseExternal=array())
{
$data=array_intersect_key($data,$this->arrTableFields);
if (0==count($paramsDatabaseExternal))$this->obj_database->save($table,$data);
else $this->obj_databaseexternal->save($table,$data);;
return true;
}
/**
* Method for checking database
*
* @param string $table Name of table to save data in
* @param array $data Array of data to compare to tabel cols
*
* @return mixed array with table cols on success, false on failure
*
*/
public function checkDatabase($obj_database,$table,$str_xml,$showErrors,$fieldCreated)
{
//echo "<pre>"; print_r($obj_database->getDatabaseName());
$checkTable=$this->checkTableExists($obj_database,$table,$showErrors);
$this->compareTableToData($this->arrTableFields,$str_xml,$showErrors,$table,$fieldCreated,$obj_database->getDatabaseName());
return $checkTable;
}
/**
* Method for checking if table exists
*
* @param string $table Name of table to save data in
* @param bool $showErrors If to raise Errors or let be
*
* @return bool truewith table cols on success, false on failure
*
*/
public function checkTableExists($obj_database,$table,$showErrors)
{
$strDatabase=$obj_database->getDatabaseName();
if(false==$obj_database->databaseExists($strDatabase))
{
$this->arrMessages[]=array('warning'=>1, 'str'=>sprintf(JText::_('MOD_QLFORM_DBNOTFOUND'),$strDatabase));
return false;
}
$table=$obj_database->getTableName($table);
$tableExists=$obj_database->tableExists($strDatabase,$table);
$this->arrTableFields=array();
if (false==$tableExists AND 1==$showErrors)
{
$this->arrMessages[]=array('warning'=>1, 'str'=>sprintf(JText::_('MOD_QLFORM_DBTABLENOTFOUND'),$table,$strDatabase));
}
if (false==$tableExists) return false;
$arrDatabase=$obj_database->getDatabaseFields($strDatabase,$table);
$this->arrTableFields=$obj_database->databaseFieldsObjectToArray($arrDatabase);
return true;
}
/**
* Method for checking if table exists
*
* @param string $table Name of table to save data in
* @param bool $showErrors If to raise Errors or let be
*
* @return bool true on success, false on failure
*
*/
public function compareTableToData($arrTableFields,$str_xml,$showErrors,$table,$fieldCreated,$strDatabase)
{
$xml=$this->getXML($str_xml);
$arrFormFields=array_flip($this->getFields($xml));
if (1==$fieldCreated)$arrFormFields['created']=0;
$arrDifference1=array_diff_key($arrFormFields,$arrTableFields);
$arrDifference2=array_diff_key($arrTableFields,$arrFormFields);
$this->arrClean=array_intersect_key ($arrFormFields,$arrTableFields);
if (1==$showErrors)
{
if (1<=count($arrDifference1) OR 1<=count($arrDifference2)) $this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_DBFORM_ERROR_TITLE'));
foreach ($arrDifference1 as $k=>$v) $this->arrMessages[]=array('warning'=>1, 'str'=>sprintf(JText::_('MOD_QLFORM_DBFORM_ERROR_DATABASE'),$k,$table,$strDatabase));
foreach ($arrDifference2 as $k=>$v) $this->arrMessages[]=array('warning'=>1, 'str'=>sprintf(JText::_('MOD_QLFORM_DBFORM_ERROR_FORM'),$k,$table,$strDatabase));
if (1<=count($arrDifference1) OR 1<=count($arrDifference2)) $this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_DBFORM_ERROR_GENERAL'));
}
return true;
}
/**
* Method for checking database
*
* @param string $table Name of table to save data in
* @param array $data Array of data to compare to tabel cols
*
* @return mixed array with table cols on success, false on failure
*
*/
public function getFields($xml)
{
if (is_object($xml->fieldset)) foreach ($xml->fieldset as $k=>$v)
{
if (is_object($v->field)) foreach ($v->field as $k2=>$v2)
{
if (isset($v2['type']) AND 'spacer'!=$v2['type']) $arr[]=(string) $v2['name'];
}
}
return $arr;
}
/**
* Method to mail
*
* @param string $recipient email address of recipient
* @param string $subject of email
* @param array $data array of post data to be sent
* @since 1.6
*/
public function mail($recipient,$subject,$data,$form,$pretext='',$labels=1,$copy=0)
{
$paramsMail=$this->mailPrepareParams($data,$copy);
$data=$this->prepareDataWithXml($data,$form,$labels);
$obj_mailer=new modQlformMailer();
if (2==$this->params->get('emailseparator','1')) $obj_mailer->separator="\n";
if (2==$this->params->get('emailseparator2','1')) $obj_mailer->separator2="\n\n";
if(''!=trim($pretext))$pretext=$this->preparePretext(JText::_($pretext),$data);
if (1==$this->params->get('fileemail_enabled',0) AND isset($this->files))$obj_mailer->files=$this->files;
$subject.=$paramsMail['emailsubject2'];
$mailSent=$obj_mailer->mail($recipient,$subject,$data,$paramsMail,$pretext,$this->params->get('emaildisplay'));
if (1==$mailSent) return true;
else
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_MAIL_SENT_ERROR'));
return false;
}
}
/**
* Method to mail
*
* @param object or array(?) $data object with data inserted in form
* @param object $form J! form object
* @param bool $labels boolean, if labels of form oder fireldnames shall be set
* @return array $dataWithLabel
*/
public function prepareDataWithXml($data,$form,$labels=1)
{
$dataWithLabel=array();
foreach ($data as $k=>$v)
{
$label=$k;
if (''!=$form->getLabel($k) AND 1==$labels) $label=str_replace(' ','',htmlspecialchars_decode(strip_tags($form->getLabel($k))));
$dataWithLabel[$k]['name']=$k;
$dataWithLabel[$k]['label']=trim($label);
$data=$v;
if(is_object($data) || is_array($data))$data=json_encode($data);
$dataWithLabel[$k]['data']=JText::_((string)$data);
}
return $dataWithLabel;
}
/**
* Method to mail
*
* @param object or array(?) $data object with data inserted in form
* @param object $form J! form object
* @param bool $labels boolean, if labels of form oder fireldnames shall be set
* @return array $dataWithLabel
*/
public function mailPrepareParams($data,$copy=0)
{
$config=new JConfig();
$arrMailParams=array();
$arrMailParams['emailrecipient']=$this->params->get('emailrecipient',$config->mailfrom);
$arrMailParams['emailsubject']=$this->params->get('emailsubject',$config->sitename);
/*generate subject from field values*/
$subjectGenerated=$this->params->get('emailsubject2','');
if (''!=trim($subjectGenerated))
{
$arrSubjectGenerated=explode(',',$subjectGenerated);
$subjectGenerated='';
foreach ($arrSubjectGenerated as $k=>$v) if (isset($data[trim($v)]))
{
$dataForSubject=$data[trim($v)];
if (is_array($dataForSubject) OR is_object($dataForSubject))$subjectGenerated.=$this->params->get('emailsubjectseparator','').(string)json_encode($dataForSubject);
else $subjectGenerated.=$this->params->get('emailsubjectseparator','').(string)$dataForSubject;
unset($dataForSubject);
}
}
else $subjectGenerated='';
$arrMailParams['emailsubject2']=$subjectGenerated;
/*set e-mail sender*/
$emailSender=$this->params->get('emailsender','');
if (''!=trim($emailSender) AND isset($data[trim($emailSender)]) AND true==$this->checkEmail($data[$emailSender])) $emailSender=$data[$emailSender];
else $emailSender=$config->mailfrom;
$arrMailParams['emailsender']=$emailSender;
/*set replyTo*/
if(0==$copy)
{
$emailReplyTo=$this->params->get('emailreplyto','');
if (''!=trim($emailReplyTo) AND isset($data[$emailReplyTo]) AND true==$this->checkEmail($data[$emailReplyTo])) $emailReplyTo=$data[$emailReplyTo];
else $emailReplyTo=$config->mailfrom;
$arrMailParams['emailreplyto']=$emailReplyTo;
}
else
{
$emailReplyTo=$this->params->get('sendcopyemailreplyto','');
if (true!=$this->checkEmail($emailReplyTo)) $emailReplyTo=$config->mailfrom;
$arrMailParams['emailreplyto']=$emailReplyTo;
}
return $arrMailParams;
}
/**
* Get captcha instance or null if not available
*
* @param JRegistry $params Extension parameters
*
* @return JCaptcha|null
*/
public function getCaptcha()
{
$plgn=$this->params->get('captcha', JFactory::getApplication()->get('captcha', '0'));
$captcha=JCaptcha::getInstance($plgn,array('namespace' => 'mod_qlform'));
if (!$captcha instanceof JCaptcha) $this->arrMessages[]=JText::_('MOD_QLFORM_MSG_CAPTCHANOTFOUND');
return $captcha;
}
public function captchaDefault()
{
$config=JFactory::getConfig();
$captchaToBeUsed=$captchaConfig=$config->get('captcha');
$showCaptcha=0;
if(''!=$captchaConfig AND ''==$this->params->get('captcha','0'))
{
$showCaptcha=1;
$captchaToBeUsed=$captchaConfig;
}
elseif(''==$this->params->get('captcha','0'))
{
$showCaptcha=1;
$captchaToBeUsed=$captchaConfig;
}
elseif('0'!==$this->params->get('captcha','0'))
{
$showCaptcha=1;
$captchaToBeUsed=$this->params->get('captcha','0');
}
$this->captchaToBeUsed=$captchaToBeUsed;
return $showCaptcha;
}
/**
* Method to check if folder exists and generates it eventually
*/
public function checkTmpQlform($folder)
{
if (!is_dir($folder))
{
mkdir($folder);
chmod($folder,0755);
}
if (!is_file($folder.'/index.html'))touch($folder.'/index.html');
$this->checkTmpQlformFiles($folder);
}
/**
* Method to check for old files and to remove them
*/
public function checkTmpQlformFiles($folder)
{
$handle=opendir($folder);
while($file=readdir($handle))
{
if ('.'!=$file AND '..'!=$file AND 'index.html'!=$file)
{
$arr=preg_split('?_?',$file);
$dateFile=substr(array_pop($arr),0,6);
if ($dateFile+1<date('ymd') AND file_exists($folder.'/'.$file))unlink($folder.'/'.$file);
}
}
closedir($handle);
}
/**
* Method to check captcha
*
* @param int $type type of error displayed, either via joomla or text displayes
* @since 1.6
*/
public function checkCaptcha($captcha,$data)
{
if (!$captcha instanceof JCaptcha)return false;
if (!$captcha->checkAnswer(isset($data['captcha']) ? $data['captcha'] : null))
{
$this->arrMessages[]=array('str'=>JText::_('MOD_QLFORM_MSG_CAPTCHAVALIDATIONFAILED'));
return false;
}
return true;
}
/**
* method to merge two subarray given
*
* @param array $array multidimensional array
* @param string $index1 index of subarray to be merged
* @param string $index2 index of second subarray to be merged
* @return mixed $mergedArray array containing elements of former subarray on success, false on failure
*/
function mergeSubarrays($array,$index1,$index2)
{
if (isset($array[$index1]) AND is_array($array[$index1]) AND isset($array[$index2]) AND is_array($array[$index2])) $mergedArray=array_merge($array[$index1],$array[$index2]);
else if (isset($array[$index1]) AND is_array($array[$index1])) $mergedArray=$array[$index1];
else if (isset($array[$index2]) AND is_array($array[$index2])) $mergedArray=$array[$index2];
else return false;
return $mergedArray;
}
/**
* method to turn subarray into string via json_encode
*
* @param array $array multidimensional array
* @return array $array array containing subarray as jsonified strings
*/
function subarrayToJson($array)
{
if(!is_array($array))return array();
if (is_array($array)) while (list($k,$v)=each($array)) if (is_array($v))
{
//foreach ($v as $k2=>$v2) $v[$k2]=($v2);
$array[$k]=json_encode($v);
}
while (list($k,$v)=each($array)) $array[$k]=json_decode($v);
return $array;
}
/**
* method to turn subarray into string via json_encode
*
* @param array $array multidimensional array
* @return array $array array containing subarray as jsonified strings
*/
function subarrayOffJson($array)
{
if (is_array($array)) while (list($k,$v)=each($array)) $array[$k]=json_decode($v);
return $array;
}
/**
* method to strip quotes in values of array
*
* @param array $array array whose values has quotes
* @return array $array array containing subarray as jsonified strings
*/
function stripQuotesInArrayValue($array)
{
//if (is_array($array)) while (list($k,$v)=each($array)) $array[$k]=preg_replace("/\"/","'",$v);
if (is_array($array)) foreach ($array as $k=>$v) $array[$k]=preg_replace("/\"/","'",$v);
return $array;
}
/**
* method to strip quotes in values of array
*
* @param array $array array whose values has quotes
* @return array $array array containing subarray as jsonified strings
*/
function sendJmessage($data)
{
$recipient=$this->params->get('jmessagerecipient',0);
$sender=$this->params->get('jmessagesender',0);
$obj_jmessager=new modQlformJmessages;
$data=$this->prepareDataWithXml($data,$this->form,$this->params->get('jmessagelabels',1));
if (0==$sender OR 0==$recipient)
{
if (0==$sender)$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_JMESSAGENOSENDER'));
if (0==$recipient)$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_JMESSAGENORECIPIENT'));
return false;
}
$obj_jmessager=new modQlformJmessages;
$message=$obj_jmessager->getDataAsString($data,$this->params->get('jmessagestringtype','json'),$this->params->get('jmessagestringseparator','#'));
$subject=JText::_($this->params->get('jmessagesubject','qlform message'));
$subject=$obj_jmessager->getSubject($subject,$data,$this->params->get('jmessagesubject2',''));
$dataToSave=$obj_jmessager->getData($recipient,$sender,$subject,$message);
$obj_jmessager->save($dataToSave);
return true;
}
/**
* method to prepare pretext by addingparagraphs and replace data value for placeholders
*
* @param string $str given as message
* @return array $data is array containing the data
*/
function preparePretext($str,$data)
{
$str.="\n\n";
if (!isset($data) OR !is_array($data)) return $str;
foreach ($data as $k=>$v)
{
if (isset($v['data'])) $str=str_replace('{*'.$k.'*}',(string)$v['data'],$str);
}
return $str;
}
/**
* Method to check validation of e-mail address
*
* @param string $str wouldbe-email address
* @return bool true on success; false on failure
*/
public function checkEmail($str)
{
$obj_mailer=new modQlformMailer();
return $obj_mailer->checkEmail($str);
}
/**
* Method to save files to webspace
*
* @param array $arr_files array of files data as given by J! input object
* @param object $params of module
* @return bool true on success; false on failure
*/
public function saveFiles()
{
/*No, you cannot make this work without the plugin.
The plugin does the upload, not the module.
But thanks for having a look at my code:-)*/
$obj_plgQlformuploaderFiler=new plgQlformuploaderFiler($this->module,$this->params,$this->form);
if (!is_array($this->files))
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_FILEUPLOAD_FILESARRAYISNOARRAY'));
return false;
}
if (0==count($this->files)) return true;
//$tmp='tmp';
//$destination=$tmp.'/'.$this->params->get('fileupload_destination','qlformuploader');
$destination=$this->params->get('fileupload_destination','qlformuploader');
$filesUploaded=0;;
foreach ($this->files as $k=>$v)
{
if(!isset($v['fileChecked']) OR true!==$v['fileChecked'])
{
$obj_plgQlformuploaderFiler->logg($v,$destination,$this->module,$this->params);
continue;
}
$arr_fileuploaded=$obj_plgQlformuploaderFiler->saveFile($v,$destination);
$filesUploaded++;
$this->files[$k]=$arr_fileuploaded;
if (4!=$v['error'])$obj_plgQlformuploaderFiler->logg($v,$destination,$this->module,$this->params);
}
$this->arrMessages[]=array('notice'=>1,'str'=>sprintf(JText::_('MOD_QLFORM_FILEUPLOAD_UPLOADSUCCESSFUL'),$filesUploaded));
return true;
}
function getFilesUploadedData()
{
$dataFilesUpload=array();
foreach($this->files as $k=>$v)
{
$dataFilesUpload[$k]=array();
$dataFilesUpload[$k]['name']=$v['name'];
$dataFilesUpload[$k]['savedTo']=$v['current'];
$dataFilesUpload[$k]['errorUploadServer']=$v['error'];
$dataFilesUpload[$k]['errorUploadFileCheck'] = 0;
if(!empty($v['errorMsg']))
{
$dataFilesUpload[$k]['errorUploadFileCheck'] = 1;
$dataFilesUpload[$k]['errorUploadFileCheckMsg'] = $v['errorMsg'];
}
}
return $dataFilesUpload;
}
/**
* Method to check validation of e-mail address
*
* @param array $arr_files array of files data as given by J! input object
* @param object $params of module
* @return bool true on success; false on failure
*/
public function checkFiles()
{
/*No, you cannot make this work without the plugin.
The plugin does the upload, not the module.
But thanks for having a look at my code:-)*/
$obj_plgQlformuploaderFiler=new plgQlformuploaderFiler($this->module,$this->params,$this->form);
/*for licence*/
if (1!=$obj_plgQlformuploaderFiler->checkLicenceAllowed())
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_FILEUPLOAD_NOTALLOWED'));
if (isset($obj_plgQlformuploaderFiler->arrMessages) AND 0<count($obj_plgQlformuploaderFiler->arrMessages)) foreach($obj_plgQlformuploaderFiler->arrMessages as $v)$this->arrMessages=$v;
return false;
}
if (!is_array($this->files))
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_FILEUPLOAD_FILESARRAYISNOARRAY'));
return false;
}
if (0==count($this->files)) return true;
$arrCheck=array();
$arrCheck['filemaxsize']=$this->params->get('fileupload_maxfilesize',10000);
$arrCheck['filetypeallowed']=explode(',',(string)$this->params->get('fileupload_filetypeallowed',''));
foreach($this->files as $k=>$v)
{
$mixChecked=$obj_plgQlformuploaderFiler->checkFile($v,$arrCheck);
$this->files[$k]['errorMsg']='';
if(true===$mixChecked)$this->files[$k]['fileChecked']=true;
else
{
$this->files[$k]['errorMsg']=$mixChecked;
$this->files[$k]['fileChecked']=false;
}
}
}
public function checkPlgQlformuploaderExists()
{
$db=JFactory::getDbo();
$db->setQuery('SELECT * FROM `#__extensions` WHERE `element`=\'qlformuploader\'');
$qlformuploader=$db->loadObject();
if (!isset($qlformuploader->extension_id))
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_FILEUPLOAD_NOEXTENSIONFOUND'));
return false;
}
if (1!=$qlformuploader->enabled)
{
$this->arrMessages[]=array('warning'=>1, 'str'=>JText::_('MOD_QLFORM_FILEUPLOAD_EXTENSIONNOTENABLED'));
return false;
}
return true;
}
public function addPlaceholder($form)
{
foreach ($form->getFieldsets() as $fieldset)
{
$fields = $form->getFieldset($fieldset->name);
foreach($fields as $field)
{
$fieldLabel=JText::_($field->getAttribute('label'));
if('true'==$field->getAttribute('required'))$fieldLabel.=' *';
$form->setFieldAttribute($field->getAttribute('name'),'hint',$fieldLabel);
}
}
return $form;
}
public function addStyles()
{
JHtml::stylesheet('mod_qlform/qlform.css', false, true, false);
if ('1'==$this->params->get('stylesActive','0')) JFactory::getDocument()->addStyleDeclaration($this->getStyles($this->params));
}
private function getStyles($params)
{
$strModuleId='mod_qlform_'.$this->module->id;
$moduleIdSelector='#'.$strModuleId;
$styles=array();;
$styles[]= $moduleIdSelector.' input,'.$moduleIdSelector.' Xbutton,'.$moduleIdSelector.' select,'.$moduleIdSelector.' textarea';
$styles[]= '{';
$styles[]= 'border-radius:'.$params->get('stylesInputborderradius','0').'px;';
$styles[]= 'border-width:'.$params->get('stylesInputborderwidth','1').'px;';
$styles[]= 'border-style:'.$params->get('stylesInputborderstyle','solid').';';
$styles[]= 'border-color:'.$params->get('stylesInputbordercolor','#666666').';';
$styles[]= 'background:'.$params->get('stylesInputbackground','#ffffff').';';
$styles[]= '}';
$styles[]= $moduleIdSelector.' input.submit';
$styles[]= '{';
$styles[]= 'border-radius:inherit;';
$styles[]= 'border-width:inherit;';
$styles[]= 'border-style:inherit;';
$styles[]= 'border-color:inherit;';
$styles[]= 'background:inherit;';
$styles[]= '}';
//$styles[]= '*{background:red!important;}';
/*ADDITIONAL STYLES START*/
if (''!=trim($params->get('stylesAdditionalstyles','')))$styles[]=$params->get('stylesAdditionalstyles','');
/*ADDITIONAL STYLES STOP*/
return implode("\n",$styles);
}
function initPreprocessing($data,$module,$form)
{
$this->processData=false;
if(true==$this->checkIfCustomExists('modQlformPreprocessData'))$this->processData=true;
else return false;
$this->obj_processor=new modQlformPreprocessData($data,$this->params,$module,$form);
}
function processFor($data,$for)
{
return $this->obj_processor->$for($data);
}
}