<?php
/*
* @$Header: /var/cvsroot/reconfig/build.php,v 1.5 2014/11/06 13:04:39 giuseppe Exp $
*/
/*
Copyright (C) 2014- Giuseppe Lucarelli <giu.lucarelli@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
header('Content-type: text/html; charset=UTF-8');
ini_set('display_errors', 1);
error_reporting(~0);
require_once('class.reconfig.php');
class REConf extends REConfig {
function Array2Xml(&$xml,&$item,$tag,$parent='') {
if(!is_numeric($tag))
$xml.=(strlen($xml > 0) ? "\n" : '').'<'.$tag.">\n";
else
$xml.=(strlen($xml > 0) ? "\n" : '').'<'.$parent.">\n";
foreach($item as $k=>$v) {
if(is_array($v)) {
$this->Array2Xml($xml,$v,$k,$tag);
} else {
if(strlen($v) > 0)
$xml.="<$k>$v</$k>\n";
}
}
if(!is_numeric($tag))
$xml.='</'.$tag.">\n";
else
$xml.='</'.$parent.">\n";
}
function BuildXml(&$item) {
$xml='';
$this->Array2Xml($xml,$item,'item');
$xml=preg_replace(array(
'/\$/',
'/(<regexp>)(?:[[:space:]]|)(<regexp>)/imsU',
'/(<\/regexp>)(?:[[:space:]]|)(<\/regexp>)/imsU',
'/(<out>)(?:[[:space:]]|)(<out>)/imsU',
'/(<\/out>)(?:[[:space:]]|)(<\/out>)/imsU',
'/(<pattern>)(?:[[:space:]]|)(<pattern>)/imsU',
'/(<\/pattern>)(?:[[:space:]]|)(<\/pattern>)/imsU',
'/(<pattern>)((?:[[:space:]]|).*)(<\/pattern>)/imsU'
),array('\\\$','\1','\1','\1','\1','\1','\1','\1<![CDATA[\2]]>\3'),$xml);
return $xml;
}
function BuildHtml() {
global $REC,$HTML;
$item=array('type'=>$_POST['widgettype'],'name'=>$_POST['elname']);
if(strlen($_POST['elcode']) > 0) {
$item['code']=$_POST['elcode'];
$item['in']=false;
}
if(strlen($_POST['elparms']) > 0) {
$item['parms']=$_POST['elparms'];
}
if(strlen($_POST['ellabel']) > 0) $item['label']=$_POST['ellabel'];
if(strlen($_POST['elattrs']) > 0) {
$el=str_replace("\r",'',$_POST['elattrs']);
$el=explode("\n",$el);
foreach($el as $e) {
$pos=strpos($e,':');
$key=substr($e,0,$pos);
$val=substr($e,$pos+1);
$item['attrs'][$key]=trim($val);
}
}
if(strlen($_POST['ellowercase']) > 0 && strcasecmp('not set',$_POST['ellowercase']))
$item['lowercase']=filter_var($_POST['ellowercase'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['eluppercase']) > 0 && strcasecmp('not set',$_POST['eluppercase']))
$item['uppercase']=filter_var($_POST['eluppercase'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elencode']) > 0 && strcasecmp('not set',$_POST['elencode']))
$item['encode']=filter_var($_POST['elencode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elvalue']) > 0 && strcasecmp('not set',$_POST['elvalue']))
$item['value']=$_POST['elvalue'];
if(!strcasecmp('select',$_POST['widgettype'])
|| !strcasecmp('radio',$_POST['widgettype'])
|| !strcasecmp('checkbox',$_POST['widgettype'])) {
if(strlen($_POST['elselbycode']) > 0 && strcasecmp('not set',$_POST['elselbycode']))
$item['selbycode']=filter_var($_POST['elselbycode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['eldisplay']) > 0 && strcasecmp('not set',$_POST['eldisplay']))
$item['display']=$_POST['eldisplay'];
}
if(strlen($_POST['elevent']) > 0) {
$event=array();
$el=str_replace("\r",'',$_POST['elevent']);
$el=explode("\n",$el);
foreach($el as $e) {
$pos=strpos($e,':');
$key=substr($e,0,$pos);
$val=substr($e,$pos+1);
$item['event'][$key]=trim($val);
}
}
if(isset($_POST['elvalues']) && !strcasecmp('show',$_POST['elvalues'])) {
$values=array();
if(strlen($_POST['elvalues_list']) > 0) {
$el=str_replace("\r",'',$_POST['elvalues_list']);
$el=explode("\n",$el);
foreach($el as $e) {
$pos=strpos($e,':');
$key=substr($e,0,$pos);
$val=substr($e,$pos+1);
$item['values'][$key]=trim($val);
}
}
}
if(isset($_POST['elhtml']) && !strcasecmp('show',$_POST['elhtml'])) {
$html=array();
if(strlen($_POST['elhtml_prepend']) > 0)
$html['prepend']=$_POST['elhtml_prepend'];
if(strlen($_POST['elhtml_append']) > 0)
$html['append']=$_POST['elhtml_append'];
$item['html']=$html;
}
if(isset($_POST['elin']) && !strcasecmp('show',$_POST['elin'])) {
$in=array();
if(strlen($_POST['elin_group']) > 0)
$in['group']=$_POST['elin_group'];
if(strlen($_POST['elin_depth']) > 0)
$in['depth']=$_POST['elin_depth'];
if(strlen($_POST['elin_target']) > 0)
$in['target']=$_POST['elin_target'];
if(strlen($_POST['elin_func']) > 0)
$in['func']=$_POST['elin_func'];
if(strlen($_POST['elin_encode']) > 0 && strcasecmp('not set',$_POST['elin_encode']))
$in['encode']=filter_var($_POST['elin_encode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elin_utf8_decode']) > 0 && strcasecmp('not set',$_POST['elin_utf8_decode']))
$in['utf8_decode']=filter_var($_POST['elin_utf8_decode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elin_lowercase']) > 0 && strcasecmp('not set',$_POST['elin_lowercase']))
$in['lowercase']=filter_var($_POST['elin_lowercase'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elin_uppercase']) > 0 && strcasecmp('not set',$_POST['elin_uppercase']))
$in['uppercase']=filter_var($_POST['elin_uppercase'],FILTER_VALIDATE_BOOLEAN);
if(isset($_POST['elin_type'])) {
$in['type']=$_POST['elin_type'];
if(!strcasecmp('file',$_POST['elin_type'])) {
if(isset($_POST['elin_file_path']) && strlen($_POST['elin_file_path']) > 0) {
$in['path']=$_POST['elin_file_path'];
}
} else {
if(isset($_POST['elin_sql_driver']) && strlen($_POST['elin_sql_driver']) > 0)
$in['driver']=$_POST['elin_sql_driver'];
$in['dbhost']='localhost';
if(isset($_POST['elin_sql_host']) && strlen($_POST['elin_sql_host']) > 0)
$in['dbhost']=$_POST['elin_sql_host'];
if(isset($_POST['elin_sql_dbname']) && strlen($_POST['elin_sql_dbname']) > 0)
$in['dbname']=$_POST['elin_sql_dbname'];
if(isset($_POST['elin_sql_dbuser']) && strlen($_POST['elin_sql_dbuser']) > 0)
$in['dbuser']=$_POST['elin_sql_dbuser'];
$in['dbpass']='';
if(isset($_POST['elin_sql_dbpass']) && strlen($_POST['elin_sql_dbpass']) > 0)
$in['dbpass']=$_POST['elin_sql_dbpass'];
if(isset($_POST['elin_sql_query']) && strlen($_POST['elin_sql_query']) > 0)
$in['query']=$_POST['elin_sql_query'];
if(isset($_POST['elin_sql_column']) && strlen($_POST['elin_sql_column']) > 0) {
if(preg_match('/(.*)=>(.*)/',$_POST['elin_sql_column'],$matches,PREG_OFFSET_CAPTURE)) {
$in['column']=array($matches[1][0]=>$matches[2][0]);
} else {
$in['column']=$_POST['elin_sql_column'];
}
}
if(strlen($_POST['elin_sql_rstype']) > 0 && strcasecmp('not set',$_POST['elin_sql_rstype']))
$in['rstype']=$_POST['elin_sql_rstype'];
}
}
if(isset($_POST['elin_regexp']) && !strcasecmp('show',$_POST['elin_regexp'])) {
$regexp=array();
if(isset($_POST['elin_regexp_key0']) && strlen($_POST['elin_regexp_key0']) > 0)
$regexp['key']=$_POST['elin_regexp_key0'];
if(isset($_POST['elin_regexp_pattern0']) && strlen($_POST['elin_regexp_pattern0']) > 0)
$regexp['pattern']=$_POST['elin_regexp_pattern0'];
if(isset($_POST['elin_regexp_func0']) && strlen($_POST['elin_regexp_func0']) > 0
&& !strcasecmp('split',$_POST['elin_regexp_func0']))
$regexp['func']=$_POST['elin_regexp_func0'];
$in['regexp']=array($regexp);
$regexp=array();
if(isset($_POST['elin_regexp_key1']) && strlen($_POST['elin_regexp_key1']) > 0)
$regexp['key']=$_POST['elin_regexp_key1'];
if(isset($_POST['elin_regexp_pattern1']) && strlen($_POST['elin_regexp_pattern1']) > 0)
$regexp['pattern']=$_POST['elin_regexp_pattern1'];
if(isset($_POST['elin_regexp_func1']) && strlen($_POST['elin_regexp_func1']) > 0
&& !strcasecmp('split',$_POST['elin_regexp_func1']))
$regexp['func']=$_POST['elin_regexp_func1'];
if(isset($regexp['pattern']))
$in['regexp'][]=$regexp;
$regexp=array();
if(isset($_POST['elin_regexp_key2']) && strlen($_POST['elin_regexp_key2']) > 0)
$regexp['key']=$_POST['elin_regexp_key2'];
if(isset($_POST['elin_regexp_pattern2']) && strlen($_POST['elin_regexp_pattern2']) > 0)
$regexp['pattern']=$_POST['elin_regexp_pattern2'];
if(isset($_POST['elin_regexp_func2']) && strlen($_POST['elin_regexp_func2']) > 0
&& !strcasecmp('split',$_POST['elin_regexp_func2']))
$regexp['func']=$_POST['elin_regexp_func2'];
if(isset($regexp['pattern']))
$in['regexp'][]=$regexp;
}
$item['in']=$in;
}
if(isset($_POST['elout']) && !strcasecmp('show',$_POST['elout'])
&& isset($_POST['elout_asin'])) {
$out=array();
if(strlen($_POST['elout_group']) > 0)
$out['group']=$_POST['elout_group'];
if(strlen($_POST['elout_depth']) > 0)
$out['depth']=$_POST['elout_depth'];
if(strlen($_POST['elout_target']) > 0)
$out['target']=$_POST['elout_target'];
if(strlen($_POST['elout_func']) > 0)
$out['func']=$_POST['elout_func'];
if(strlen($_POST['elout_encode']) > 0 && strcasecmp('not set',$_POST['elout_encode']))
$out['encode']=filter_var($_POST['elout_encode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elout_utf8_decode']) > 0 && strcasecmp('not set',$_POST['elout_utf8_decode']))
$out['utf8_decode']=filter_var($_POST['elout_utf8_decode'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elout_lowercase']) > 0 && strcasecmp('not set',$_POST['elout_lowercase']))
$out['lowercase']=filter_var($_POST['elout_lowercase'],FILTER_VALIDATE_BOOLEAN);
if(strlen($_POST['elout_uppercase']) > 0 && strcasecmp('not set',$_POST['elout_uppercase']))
$out['uppercase']=filter_var($_POST['elout_uppercase'],FILTER_VALIDATE_BOOLEAN);
if(isset($_POST['elout_type'])) {
$out['type']=$_POST['elout_type'];
if(!strcasecmp('file',$_POST['elout_type'])) {
if(isset($_POST['elout_file_path']) && strlen($_POST['elout_file_path']) > 0) {
$out['path']=$_POST['elout_file_path'];
}
} else {
if(isset($_POST['elout_sql_driver']) && strlen($_POST['elout_sql_driver']) > 0)
$out['driver']=$_POST['elout_sql_driver'];
if(isset($_POST['elout_sql_host']) && strlen($_POST['elout_sql_host']) > 0)
$out['dbhost']=$_POST['elout_sql_host'];
if(isset($_POST['elout_sql_dbname']) && strlen($_POST['elout_sql_dbname']) > 0)
$out['dbname']=$_POST['elout_sql_dbname'];
if(isset($_POST['elout_sql_dbuser']) && strlen($_POST['elout_sql_dbuser']) > 0)
$out['dbuser']=$_POST['elout_sql_dbuser'];
$out['dbpass']='';
if(isset($_POST['elout_sql_dbpass']) && strlen($_POST['elout_sql_dbpass']) > 0)
$out['dbpass']=$_POST['elout_sql_dbpass'];
if(isset($_POST['elout_sql_query']) && strlen($_POST['elout_sql_query']) > 0)
$out['query']=$_POST['elout_sql_query'];
if(isset($_POST['elout_sql_column']) && strlen($_POST['elout_sql_column']) > 0)
$out['column']=$_POST['elout_sql_column'];
if(strlen($_POST['elout_sql_rstype']) > 0 && strcasecmp('not set',$_POST['elout_sql_rstype']))
$out['rstype']=$_POST['elout_sql_rstype'];
}
}
if(isset($_POST['elout_regexp']) && !strcasecmp('show',$_POST['elout_regexp'])) {
$regexp=array();
if(isset($_POST['elout_regexp_key0']) && strlen($_POST['elout_regexp_key0']) > 0)
$regexp['key']=$_POST['elout_regexp_key0'];
if(isset($_POST['elout_regexp_pattern0']) && strlen($_POST['elout_regexp_pattern0']) > 0)
$regexp['pattern']=$_POST['elout_regexp_pattern0'];
if(isset($_POST['elout_regexp_func0']) && strlen($_POST['elout_regexp_func0']) > 0
&& !strcasecmp('split',$_POST['elout_regexp_func0']))
$regexp['func']=$_POST['elout_regexp_func0'];
$out['regexp']=array($regexp);
$regexp=array();
if(isset($_POST['elout_regexp_key1']) && strlen($_POST['elout_regexp_key1']) > 0)
$regexp['key']=$_POST['elout_regexp_key1'];
if(isset($_POST['elout_regexp_pattern1']) && strlen($_POST['elout_regexp_pattern1']) > 0)
$regexp['pattern']=$_POST['elout_regexp_pattern1'];
if(isset($_POST['elout_regexp_func1']) && strlen($_POST['elout_regexp_func1']) > 0
&& !strcasecmp('split',$_POST['elout_regexp_func1']))
$regexp['func']=$_POST['elout_regexp_func1'];
if(isset($regexp['pattern']))
$out['regexp'][]=$regexp;
$regexp=array();
if(isset($_POST['elout_regexp_key2']) && strlen($_POST['elout_regexp_key2']) > 0)
$regexp['key']=$_POST['elout_regexp_key2'];
if(isset($_POST['elout_regexp_pattern2']) && strlen($_POST['elout_regexp_pattern2']) > 0)
$regexp['pattern']=$_POST['elout_regexp_pattern2'];
if(isset($_POST['elout_regexp_func2']) && strlen($_POST['elout_regexp_func2']) > 0
&& !strcasecmp('split',$_POST['elout_regexp_func2']))
$regexp['func']=$_POST['elout_regexp_func2'];
if(isset($regexp['pattern']))
$out['regexp'][]=$regexp;
}
$item['out']=$out;
}
if((isset($_POST['elin']) && !strcasecmp('show',$_POST['elin']))
&& (!isset($_POST['elout']) || strcasecmp('show',$_POST['elout']))) {
$item['out']=false;
}
$HTML=array('dright_show'=>array($item));
$HTML['dright_code']=(!strcasecmp('array',$_POST['out-format']) ?
stripslashes(var_export($item,true)) :
$this->BuildXml($item));
}
};
$REC = new REConf();
if(!strcasecmp('none',$_POST['widgettype']) && strlen($_POST['dright_code_area']) > 0) {
if(!strcasecmp('array',$_POST['out-format'])) {
$HTML['dright_code']=str_replace("\\\$","\$",
str_replace("\\\\","\\",
var_export($REC->XmlConvert($_POST['dright_code_area']),true)));
} else {
eval('$xml='.$_POST['dright_code_area'].';');
$HTML['dright_code']=str_replace("\\\\","\\",$REC->BuildXml($xml));
}
} else {
$HTML = array();
$REC->BuildHtml();
if($REC->Init($HTML['dright_show'],'dright_show',true) === true) {
}
}
echo json_encode($HTML);
|