<?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); } } ?>