<?php

class InpCustomFieldsHelper extends kDBBase {
	
	function GetValuesHash($values_list)
	{
		$optionValuesStr = $this->ParseConfigSQL($values_list);
		$optionValuesTmp=explode(',', $optionValuesStr);	
		$optionValues=array();
		foreach ($optionValuesTmp as $optionValue){
			list($key, $val) = @explode("=", $optionValue);
			
			if (substr($val,0,1)=="+")
				$val = substr($val, 1);
			else
				$val = $this->Application->Phrase($val);
			
			$optionValues[$key]=$val;
		}
		return $optionValues;
	}

	function ParseConfigSQL($valueString){
		$string = trim(str_replace("<PREFIX>",TABLE_PREFIX,$valueString));

		preg_match_all("|\{(.*)\}|U", $string, $embedded_vars, PREG_SET_ORDER);
		
		/*
		<SQL> in ValueList now can use globally available variables.
		Usage: {$_POST['variable']|what to output if $_POST['variable'] is set}
		e.g. $_POST['variable']='Hello'
		Will output: what to output if Hello is set
		*/
		
		if (sizeof($embedded_vars)>0){
			for ($i=0; $i<sizeof($embedded_vars); $i++){
				$embedded_var = $embedded_vars[$i][1];
				$embedded_var_src = $embedded_vars[$i][0];
				
				list($var_name, $pattern) = explode('|', $embedded_var);
				eval('$var_value = (isset('.$var_name.')?'.$var_name.':false);');
				
				if ($var_value !== false){
					$pattern = str_replace($var_name, $var_value, $pattern);
					$string = str_replace($embedded_var_src, $pattern, $string);
				}
				else {
					$string = str_replace($embedded_var_src, '', $string);
				}
				
				
			}
		}		
		
		$start = strpos($string,"<SQL");
		
		if (substr($string,$start+4,1)=="+"){
			$plus = '+';
		}
		else {
			$plus = '';
		}
				
		while($start){
			$skip_length = 5 + strlen($plus);
			
			$end = strpos($string,"</SQL>");
			if(!$end){
				$end = strlen($string);
			}
			$len = $end - $start;
			$sql = substr($string,$start+$skip_length,$len-$skip_length);
			
			$sql_val = $this->QueryConfigSQL($sql, $plus);
			
			/*if ($start>0 && $sql_val!='') 
		  		$sql_val=",".$sql_val;*/
		  	if ($end < strlen($string)-$skip_length-1 && $sql_val!='')
		  		$sql_val.=",";			
			
		  	$chunk1=substr($string,0,$start);
		  	$chunk2=substr($string,$end+$skip_length+1);
			$s = $chunk1.$sql_val.$chunk2;
			
			
			$string = $s;
			
			$start = strpos($string,"<SQL");
			
			if (substr($string,$start+4,1)=="+"){
				$plus = '+';
			}
			else {
				$plus = '';
			}
			 
		}
		return $string;
	}

	function QueryConfigSQL($sql, $plus = '')
	{
		$db =& $this->Application->GetADODBConnection();

		$valArray=$db->Query($sql);
		for ($i=0; $i<sizeof($valArray); $i++){
			$valArray[$i] = $valArray[$i]['OptionName']."=".$plus.$valArray[$i]['OptionValue'];
			$valArray[$i] = str_replace(',', ';', $valArray[$i]);
		}
		return implode(',', $valArray);
	}
	
	
}

?>