<?php
class FormulaireElementRenderer{
var $_ele;
function FormulaireElementRenderer(&$element){
$this->_ele =& $element;
}
function constructElement($form_ele_id, $admin=false, $qcm){
global $xoopsUser, $xoopsModuleConfig, $separ, $myts;
$myts =& MyTextSanitizer::getInstance();
$id_form = $this->_ele->getVar('id_form');
$ele_caption = $this->_ele->getVar('ele_caption', 'e');
$ele_caption = preg_replace('/{null}/', '', $ele_caption);
$ele_caption = stripslashes($ele_caption);
$ele_value = $this->_ele->getVar('ele_value');
$e = $this->_ele->getVar('ele_type');
// required elements have a '*' after the text
//$req = intval( $this->_ele->getVar('ele_req'));
//if ($req) $ele_caption = $ele_caption.'*';
$ele_caption = $myts->displayTarea($ele_caption);
switch ($e){
case 'text':
$ele_value[2] = eregi_replace ("’", "'", $ele_value[2]);
$ele_value[2] = stripslashes($ele_value[2]);
$ele_value[2] = $myts->displayTarea($ele_value[2]);
if( !is_object($xoopsUser) ){
$ele_value[2] = preg_replace('/{NAME}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{name}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{UNAME}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{uname}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{EMAIL}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{email}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{MAIL}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{mail}/', '', $ele_value[2]);
$ele_value[2] = preg_replace('/{DATE}/', '', $ele_value[2]);
}elseif( !$admin ){
$ele_value[2] = preg_replace('/{NAME}/', $xoopsUser->getVar('name', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{name}/', $xoopsUser->getVar('name', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{UNAME}/', $xoopsUser->getVar('uname', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{uname}/', $xoopsUser->getVar('uname', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{MAIL}/', $xoopsUser->getVar('email', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{mail}/', $xoopsUser->getVar('email', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{EMAIL}/', $xoopsUser->getVar('email', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{email}/', $xoopsUser->getVar('email', 'e'), $ele_value[2]);
$ele_value[2] = preg_replace('/{DATE}/', date("d-m-Y"), $ele_value[2]);
}
$form_ele = new XoopsFormText(
$ele_caption,
$form_ele_id,
$ele_value[0], // box width
$ele_value[1], // max width
stripslashes($ele_value[2]) // default value
);
break;
case 'textarea':
$ele_value[0] = stripslashes($ele_value[0]);
$ele_value[0] = $myts->displayTarea($ele_value[0]);
$form_ele = new XoopsFormTextArea(
$ele_caption,
$form_ele_id,
$ele_value[0], // default value
$ele_value[1], // rows
$ele_value[2] // cols
);
break;
case 'areamodif':
$ele_value[0] = stripslashes($ele_value[0]);
$ele_value[0] = $myts->displayTarea($ele_value[0]);
$form_ele = new XoopsFormLabel(
$ele_caption,
$ele_value[0]
);
break;
case 'select':
$selected = array();
$options = array();
$opt_count = 1;
while( $i = each($ele_value[2]) ){
$options[$opt_count] = $myts->stripSlashesGPC($i['key']);
if( $i['value'] > 0 ){
$selected[] = $opt_count;
}
$opt_count++;
}
if ($qcm == '1') {
$form_ele = new XoopsFormSelect(
$ele_caption,
$form_ele_id,
'',
$ele_value[0], // size
$ele_value[1] // multiple
);}
else {
$form_ele = new XoopsFormSelect(
$ele_caption,
$form_ele_id,
$selected,
$ele_value[0], // size
$ele_value[1] // multiple
);}
if( $ele_value[1] ){
$this->_ele->setVar('ele_req', 0);
}
$form_ele->addOptionArray($options);
break;
case 'checkbox':
$selected = array();
$options = array();
$opt_count = 1;
while( $i = each($ele_value) ){
$options[$opt_count] = $myts->stripSlashesGPC($i['key']);
if( $i['value'] > 0 ){
$selected[] = $opt_count;
}
$opt_count++;
}
switch($xoopsModuleConfig['delimeter']){
case 'br':
$form_ele = new XoopsFormElementTray($ele_caption, '<br />');
while( $o = each($options) ){
if ($qcm == '1') {
$t =& new XoopsFormCheckBox(
'',
$form_ele_id.'[]'
);}
else {
$t =& new XoopsFormCheckBox(
'',
$form_ele_id.'[]',
$selected
); }
$t->addOption($o['key'], $o['value']);
$form_ele->addElement($t);
}
break;
default:
if ($qcm == '1') {
$form_ele = new XoopsFormCheckBox(
$ele_caption,
$form_ele_id
); }
else {
$form_ele = new XoopsFormCheckBox(
$ele_caption,
$form_ele_id,
$selected
); }
$form_ele->addOptionArray($options);
break;
}
break;
case 'mail':
$selected = array();
$options = array();
$opt_count = 1;
while( $i = each($ele_value) ){
$options[$opt_count] = $myts->stripSlashesGPC($i['key']);
if( $i['value'] > 0 ){
$selected[] = $opt_count;
}
$opt_count++;
}
$form_ele = new XoopsFormElementTray($ele_caption, '<br />');
while( $o = each($options) ){
$t =& new XoopsFormCheckBox(
'',
$form_ele_id.'[]',
$selected
);
$o['value'] = split(" - ",$o['value']);
$t->addOption($o['key'], $o['value'][0]);
$form_ele->addElement($t);
}
break;
case 'mailunique':
case 'radio':
case 'yn':
$selected = '';
$options = array();
$opt_count = 1;
while( $i = each($ele_value) ){
switch ($e){
case 'radio':
$options[$opt_count] = $myts->stripSlashesGPC($i['key']);
$options[$opt_count] = $myts->displayTarea($options[$opt_count]);
break;
case 'mailunique':
$options[$opt_count] = $myts->stripSlashesGPC($i['key']);
$options[$opt_count] = split(" - ",$options[$opt_count]);
$options[$opt_count] = $myts->displayTarea($options[$opt_count][0]);
break;
case 'yn':
$options[$opt_count] = constant($i['key']);
$options[$opt_count] = $myts->stripSlashesGPC($options[$opt_count]);
break;
}
if( $i['value'] > 0 ){
$selected = $opt_count;
}
$opt_count++;
}
switch($xoopsModuleConfig['delimeter']){
case 'br':
$form_ele = new XoopsFormElementTray($ele_caption, '<br />');
while( $o = each($options) ){
if ($qcm == '1') {
$t =& new XoopsFormRadio(
'',
$form_ele_id
);}
else {
$t =& new XoopsFormRadio(
'',
$form_ele_id,
$selected
);}
$t->addOption($o['key'], $o['value']);
$form_ele->addElement($t);
}
break;
default:
if ($qcm == '1') {
$form_ele = new XoopsFormRadio(
$ele_caption,
$form_ele_id
);}
else {
$form_ele = new XoopsFormRadio(
$ele_caption,
$form_ele_id,
$selected
);}
$form_ele->addOptionArray($options);
break;
}
break;
case 'date':
$form_ele = new XoopsFormTextDateSelect (
$ele_caption,
$form_ele_id,
15,
strtotime($ele_value[0])
);
break;
case 'sep':
$ele_value[0]=eregi_replace('@font','',$ele_value[0]);
$ele_value[0] = $myts->xoopsCodeDecode($ele_value[0]);
$form_ele = new XoopsFormLabel(
$ele_caption,
$ele_value[0]
);
break;
case 'upload':
$form_ele = new XoopsFormElementTray($ele_caption,'');
$form_ele->addElement(new XoopsFormFile ('',$form_ele_id,$ele_value[1]));
$pds = $ele_value[1]/1024;
$form_ele->addElement(new XoopsFormLabel(' '.$pds.' ko max.',''));
break;
default:
return false;
break;
}
return $form_ele;
}
}
?>