Index: trunk/kernel/include/config.php
===================================================================
diff -u -r642 -r667
--- trunk/kernel/include/config.php (.../config.php) (revision 642)
+++ trunk/kernel/include/config.php (.../config.php) (revision 667)
@@ -1,515 +1,1024 @@
-m_IsDirty=false;
- $this->adodbConnection = &GetADODBConnection();
- $this->config = array();
- $this->m_IsDefault = array();
- $this->VarType = array();
- }
-
- function SetDebugLevel($value)
- {
- }
-
-
- function Load()
- {
- if(is_object($this->adodbConnection))
- {
- LogEntry("Config Load Start\n");
- $sql = "select VariableName, VariableValue from ".GetTablePrefix()."ConfigurationValues";
- $rs = $this->adodbConnection->Execute($sql);
- unset($this->config);
- #this->config=array();
- $count=0;
- while($rs && !$rs->EOF)
- {
- $this->config[$rs->fields["VariableName"]] = $rs->fields["VariableValue"];
- $this->m_VarType[$rs->fields["VariableName"]] = 0;
- // $this->Set($rs->fields["VariableName"],$rs->fields["VariableValue"],0);
- if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
- {
- adodb_movenext($rs);
- }
- else
- $rs->MoveNext();
- $count++;
- }
- LogEntry("Config Load End - $count Variables\n");
- }
- unset($this->m_DirtyFields);
- $this->m_IsDirty=false;
- }
-
- function Get($property)
- {
- return isset($this->config[$property]) ? $this->config[$property] : '';
- }
-
- function Set($property, $value,$type=0,$force=FALSE)
- {
- if(is_array($this->config) && strlen($property)>0)
- {
- if(array_key_exists($property,$this->config))
- {
- $current = $this->config[$property];
- $changed = ($current != $value);
- }
- else
- $changed = true;
- }
- else
- $changed = false;
- $this->config[$property]=$value;
- $this->m_IsDirty = ($this->m_IsDirty or $changed or $force);
- if($changed || $force)
- {
- $this->m_DirtyFields[$property] = $value;
- }
- $this->m_VarType[$property] = $type;
- }
-
- function Save()
- {
- if($this->m_IsDirty==TRUE)
- {
- foreach($this->m_DirtyFields as $field=>$value)
- {
- if($this->m_VarType[$field]==0)
- {
-// $sql = sprintf("UPDATE ".GetTablePrefix()."ConfigurationValues SET VariableValue=%s WHERE VariableName=%s", $this->adodbConnection->qstr($value), $this->adodbConnection->qstr($field));
- $sql = 'UPDATE '.GetTablePrefix().'ConfigurationValues SET VariableValue="'.addslashes($value).'" WHERE VariableName="'.addslashes($field).'"';
- // echo $sql."
\n";
-
- $rs = $this->adodbConnection->execute($sql);
- }
- }
- }
- $this->m_IsDirty=FALSE;
- unset($this->m_DirtyFields);
- }
-
- function TimeFormat()
- {
- if($this->Get("ampm_time")=="1")
- {
- $format = "g:i:s A";
- }
- else
- $format = "H:i:s";
- return $format;
- }
-
- /* vartype should be either 1 or 2, 1 = perstant data, 2 = session data */
- function GetDirtySessionValues($VarType)
- {
- $result = array();
-
- if(is_array($this->m_DirtyFields))
- {
- foreach($this->m_DirtyFields as $property=>$values)
- {
- if($this->m_VarType[$property]==$VarType)
- $result[$property] = $values;
- }
- }
- return $result;
- }
-
- function GetConfigValues($postfix = '')
- {
- // return only varibles, that match specified criteria
- if(!$postfix) return $this->config;
- $result = Array();
- $postfix_len = $postfix ? strlen($postfix) : 0;
- foreach($this->config as $config_var => $var_value)
- {
- if( substr($config_var, - $postfix_len) == $postfix )
- $result[$config_var] = $var_value;
- }
- return $result;
- }
-}/* clsConfig */
-
-/*
-To create the configuration forms in the admin section, populate the table ConfigurationAdmin and
-ConfigurationValues.
-
- The tables are fairly straight-forward. The fields of concern in the ConfigurationValues table is
-ModuleOwner and Section. ModuleOwner should either be the module name or In-Portal for kernel related stuff.
-(Items which should appear under 'System Configuration').
-
- The Section field determines the NavMenu section the value is associated with. For example,
-in-portal:configure_general refers to items listed under System Configuration->General.
-
- In the ConfigurationAdmin table, ensure the VariableName field is the same as the one in ConfigurationValues
-(this is the field that creates the natural join.) The prompt field is the text displayed to the left of the form element
-in the table. This should contain LANGUAGE ELEMENT IDENTIFIERS that are plugged into the Language function.
-
- The element_type field describes the type of form element is associated with this item. Possible values are:
- - text : textbox
- - checkbox : a simple checkbox
- - select : creates a dropdown box. In this case, the ValueList field should be populated with a comma-separated list
- in name=value,name=value format (each element is translated to:
-
-
- To add dynamic data to this list, enclose an SQL statement with tags for example:
- SELECT FieldLabel as OptionName, FieldName as OptionValue FROM CustomField WHERE .CustomFieldType=3>
-
- note the specific field labels OptionName and OptionValue. They are required by the parser.
- use the tag to insert the system's table prefix into the sql statement as appropriate
-
-*/
-class clsConfigAdminItem
-{
- var $name;
- var $heading;
- var $prompt;
- var $ElementType;
- var $ValueList; /* comma-separated list in name=value pair format*/
- var $ValidationRules;
- var $default_value;
- var $adodbConnection;
- var $NextItem=NULL;
- var $Section;
-
- function clsConfigAdminItem($config_name=NULL)
- {
- $this->adodbConnection = &GetADODBConnection();
- if($config_name)
- $this->LoadSetting($config_name);
- }
-
- function LoadSetting($config_name)
- {
- $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) WHERE ".GetTablePrefix()."ConfigurationAdmin.VariableName='".$config_name."'";
- $rs = $this->adodbConnection->Execute($sql);
- if($rs && !$rs->EOF)
- {
- $this->name = $rs->fields["VariableName"];
- $this->heading = $rs->fields["heading"];
- $this->prompt = $rs->fields["prompt"];
- $this->ElementType = $rs->fields["element_type"];
- $this->ValidationRules=$rs->fields["validation"];
- $this->default_value = $rs->fields["VariableValue"];
- $this->ValueList=$rs->fields["ValueList"];
- $this->Section = $rs->fields["Section"];
- }
- }
-
- function explode_sql($sql)
- {
- $s = "";
-
- $rs = $this->adodbConnection->Execute($sql);
-
- while ($rs && !$rs->EOF)
- {
- if(strlen(trim($rs->fields["OptionName"]))>0 && strlen(trim($rs->fields["OptionValue"]))>0)
- {
- if(strlen($s))
- $s .= ",";
- $s .= $rs->fields["OptionName"]."="."+".$rs->fields["OptionValue"];
- }
- $rs->MoveNext();
- }
- return $s;
- }
-
- function replace_sql($string)
- {
- $string = str_replace("",GetTablePrefix(),$string);
-
- $start = strpos($string,"");
-
- while($start)
- {
- $end = strpos($string,"");
- if(!$end)
- {
- $end = strlen($string);
- }
- $len = $end - $start;
- $sql = substr($string,$start+5,$len-5);
-
- $sql_val = $this->explode_sql($sql);
- $s = substr($string,0,$start) . $sql_val . substr($string,$end+5);
-
- $string = $s;
- $start = strpos($string,"");
- }
- return $string;
- }
-
- function ItemFormElement($StartFrom=1)
- {
- global $objConfig;
- static $TabIndex;
-
- if (empty($TabIndex))
- $TabIndex = $StartFrom;
-
- $o = "";
- if($objConfig->Get($this->name)!="")
- $this->default_value = $objConfig->Get($this->name);
- $this->default_value=inp_htmlize($this->default_value);
- switch($this->ElementType)
- {
- case "text":
- $o .= "name."\" ";
- $o .= "VALUE=\"".$this->default_value."\">";
- break;
- case "checkbox":
- $o .= "name."\" tabindex=\"".($TabIndex++)."\"";
- if($this->default_value)
- {
- $o .= " CHECKED>";
- }
- else
- $o .= ">";
-
- break;
- case "password":
-
- /* To exclude config form from populating with Root (md5) password */
- if ($this->Section == "in-portal:configure_users")
- $this->default_value = "";
-
- $o .= "name."\" ";
- $o .= "VALUE=\"".$this->default_value."\">";
- break;
- case "textarea":
- $o .= "";
- break;
- case "label":
- if($this->default_value)
- {
- $o .= $this->default_value;
- }
- break;
- case "radio":
- $radioname = $this->name;
-
- $ValList = $this->replace_sql($this->ValueList);
-
- $TabIndex++;
- $localTabIndex = $TabIndex;
- $TabIndex++;
-
- $val = explode(",",$ValList);
- for($i=0;$i<=count($val);$i++)
- {
- if(strlen($val[$i]))
- {
- $parts = explode("=",$val[$i]);
- $s = $parts[1];
- if(strlen($s)==0)
- $s="";
-
- $o .= "name."\" VALUE=\"".$parts[0]."\"";
- if($this->default_value==$parts[0])
- {
- $o .= " CHECKED>";
- }
- else
- $o .= ">";
- if(substr($s,0,1)=="+")
- {
- $o .= $s;
- }
- else
- $o .= prompt_language($s);
- }
- }
-
- break;
- case "select":
- $o .= "";
- }
- return $o;
- }
-
- function GetPrompt()
- {
- $ret = prompt_language($this->prompt);
- return $ret;
- }
-}
-
-class clsConfigAdmin
-{
- var $module;
- var $section;
- var $Items;
-
- function clsConfigAdmin($module="",$section="",$Inst=FALSE)
- {
- $this->module = $module;
- $this->section = $section;
- $this->Items= array();
- if(strlen($module) && strlen($section))
- $this->LoadItems(TRUE,$Inst);
- }
-
- function Clear()
- {
- unset($this->Items);
- $this->Items = array();
- }
-
- function NumItems()
- {
- if(is_array($this->Items))
- {
- return count($this->Items);
- }
- else
- return 0;
- }
-
- function LoadItems($CheckNextItems=TRUE, $inst=FALSE)
- {
- $this->Clear();
- if(!$inst)
- {
- $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
- WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' ORDER BY DisplayOrder ASC";
- }
- else
- {
-
- $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
- WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' AND Install=1 ORDER BY DisplayOrder ASC";
- }
- if( $GLOBALS['debuglevel'] ) echo $sql."
\n";
- $adodbConnection = &GetADODBConnection();
- $rs = $adodbConnection->Execute($sql);
- while($rs && !$rs->EOF)
- {
- $data = $rs->fields;
- if(is_object($i) && $CheckNextItems)
- {
- $last = $i->prompt;
- unset($i);
- }
- $i = new clsConfigAdminItem(NULL);
- $i->name = $data["VariableName"];
- $i->default_value = $data["VariableValue"];
- $i->heading = $data["heading"];
- $i->prompt = $data["prompt"];
- $i->ElementType = $data["element_type"];
- $i->ValueList = $data["ValueList"];
- $i->ValidationRules = isset($data['validaton']) ? $data['validaton'] : '';
- $i->Section = $data["Section"];
-
- if(strlen($last)>0)
- {
- if($i->prompt==$last)
- {
- $this->Items[count($this->Items)-1]->NextItem=$i;
- }
- else
- {
- $i->NextItem=NULL;
- array_push($this->Items,$i);
- }
- }
- else
- {
- $i->NextItem=NULL;
- array_push($this->Items,$i);
- }
- //unset($i);
- $rs->MoveNext();
- }
- }
-
- function SaveItems($POSTVARS, $force=FALSE)
- {
- global $objConfig;
-
- foreach($this->Items as $i)
- {
- if($i->ElementType != "label")
- {
- if($i->ElementType != "checkbox")
- {
- $objConfig->Set($i->name,stripslashes($POSTVARS[$i->name]));
- }
- else
- {
- if($POSTVARS[$i->name]=="on")
- {
- $value=1;
- }
- else
- $value = (int)$POSTVARS[$i->name];
- $objConfig->Set($i->name,stripslashes($value),0,$force);
- }
- }
- }
- $objConfig->Save();
- }
-
- function GetHeadingList()
- {
- $res = array();
- foreach($this->Items as $i)
- {
- $res[$i->heading]=1;
- }
- reset($res);
- return array_keys($res);
- }
-
- function GetHeadingItems($heading)
- {
- $res = array();
- foreach($this->Items as $i)
- {
- if($i->heading==$heading)
- array_push($res,$i);
- }
- return $res;
- }
-}
-
-
-?>
+m_IsDirty=false;
+
+ $this->adodbConnection = &GetADODBConnection();
+
+ $this->config = array();
+
+ $this->m_IsDefault = array();
+
+ $this->VarType = array();
+
+ }
+
+
+
+ function SetDebugLevel($value)
+
+ {
+
+ }
+
+
+
+
+
+ function Load()
+
+ {
+
+ if(is_object($this->adodbConnection))
+
+ {
+
+ LogEntry("Config Load Start\n");
+
+ $sql = "select VariableName, VariableValue from ".GetTablePrefix()."ConfigurationValues";
+
+ $rs = $this->adodbConnection->Execute($sql);
+
+ unset($this->config);
+
+ #this->config=array();
+
+ $count=0;
+
+ while($rs && !$rs->EOF)
+
+ {
+
+ $this->config[$rs->fields["VariableName"]] = $rs->fields["VariableValue"];
+
+ $this->m_VarType[$rs->fields["VariableName"]] = 0;
+
+ // $this->Set($rs->fields["VariableName"],$rs->fields["VariableValue"],0);
+
+ if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
+
+ {
+
+ adodb_movenext($rs);
+
+ }
+
+ else
+
+ $rs->MoveNext();
+
+ $count++;
+
+ }
+
+ LogEntry("Config Load End - $count Variables\n");
+
+ }
+
+ unset($this->m_DirtyFields);
+
+ $this->m_IsDirty=false;
+
+ }
+
+
+
+ function Get($property)
+
+ {
+
+ return isset($this->config[$property]) ? $this->config[$property] : '';
+
+ }
+
+
+
+ function Set($property, $value,$type=0,$force=FALSE)
+
+ {
+
+ if(is_array($this->config) && strlen($property)>0)
+
+ {
+
+ if(array_key_exists($property,$this->config))
+
+ {
+
+ $current = $this->config[$property];
+
+ $changed = ($current != $value);
+
+ }
+
+ else
+
+ $changed = true;
+
+ }
+
+ else
+
+ $changed = false;
+
+ $this->config[$property]=$value;
+
+ $this->m_IsDirty = ($this->m_IsDirty or $changed or $force);
+
+ if($changed || $force)
+
+ {
+
+ $this->m_DirtyFields[$property] = $value;
+
+ }
+
+ $this->m_VarType[$property] = $type;
+
+ }
+
+
+
+ function Save()
+
+ {
+
+ if($this->m_IsDirty==TRUE)
+
+ {
+
+ foreach($this->m_DirtyFields as $field=>$value)
+
+ {
+
+ if($this->m_VarType[$field]==0)
+
+ {
+
+// $sql = sprintf("UPDATE ".GetTablePrefix()."ConfigurationValues SET VariableValue=%s WHERE VariableName=%s", $this->adodbConnection->qstr($value), $this->adodbConnection->qstr($field));
+
+ $sql = 'UPDATE '.GetTablePrefix().'ConfigurationValues SET VariableValue="'.addslashes($value).'" WHERE VariableName="'.addslashes($field).'"';
+
+ // echo $sql."
\n";
+
+
+
+ $rs = $this->adodbConnection->execute($sql);
+
+ }
+
+ }
+
+ }
+
+ $this->m_IsDirty=FALSE;
+
+ unset($this->m_DirtyFields);
+
+ }
+
+
+
+ function TimeFormat()
+
+ {
+
+ if($this->Get("ampm_time")=="1")
+
+ {
+
+ $format = "g:i:s A";
+
+ }
+
+ else
+
+ $format = "H:i:s";
+
+ return $format;
+
+ }
+
+
+
+ /* vartype should be either 1 or 2, 1 = perstant data, 2 = session data */
+
+ function GetDirtySessionValues($VarType)
+
+ {
+
+ $result = array();
+
+
+
+ if(is_array($this->m_DirtyFields))
+
+ {
+
+ foreach($this->m_DirtyFields as $property=>$values)
+
+ {
+
+ if($this->m_VarType[$property]==$VarType)
+
+ $result[$property] = $values;
+
+ }
+
+ }
+
+ return $result;
+
+ }
+
+
+
+ function GetConfigValues($postfix = '')
+
+ {
+
+ // return only varibles, that match specified criteria
+
+ if(!$postfix) return $this->config;
+
+ $result = Array();
+
+ $postfix_len = $postfix ? strlen($postfix) : 0;
+
+ foreach($this->config as $config_var => $var_value)
+
+ {
+
+ if( substr($config_var, - $postfix_len) == $postfix )
+
+ $result[$config_var] = $var_value;
+
+ }
+
+ return $result;
+
+ }
+
+}/* clsConfig */
+
+
+
+/*
+
+To create the configuration forms in the admin section, populate the table ConfigurationAdmin and
+
+ConfigurationValues.
+
+
+
+ The tables are fairly straight-forward. The fields of concern in the ConfigurationValues table is
+
+ModuleOwner and Section. ModuleOwner should either be the module name or In-Portal for kernel related stuff.
+
+(Items which should appear under 'System Configuration').
+
+
+
+ The Section field determines the NavMenu section the value is associated with. For example,
+
+in-portal:configure_general refers to items listed under System Configuration->General.
+
+
+
+ In the ConfigurationAdmin table, ensure the VariableName field is the same as the one in ConfigurationValues
+
+(this is the field that creates the natural join.) The prompt field is the text displayed to the left of the form element
+
+in the table. This should contain LANGUAGE ELEMENT IDENTIFIERS that are plugged into the Language function.
+
+
+
+ The element_type field describes the type of form element is associated with this item. Possible values are:
+
+ - text : textbox
+
+ - checkbox : a simple checkbox
+
+ - select : creates a dropdown box. In this case, the ValueList field should be populated with a comma-separated list
+
+ in name=value,name=value format (each element is translated to:
+
+
+
+
+
+ To add dynamic data to this list, enclose an SQL statement with tags for example:
+
+ SELECT FieldLabel as OptionName, FieldName as OptionValue FROM CustomField WHERE .CustomFieldType=3>
+
+
+
+ note the specific field labels OptionName and OptionValue. They are required by the parser.
+
+ use the tag to insert the system's table prefix into the sql statement as appropriate
+
+
+
+*/
+
+class clsConfigAdminItem
+
+{
+
+ var $name;
+
+ var $heading;
+
+ var $prompt;
+
+ var $ElementType;
+
+ var $ValueList; /* comma-separated list in name=value pair format*/
+
+ var $ValidationRules;
+
+ var $default_value;
+
+ var $adodbConnection;
+
+ var $NextItem=NULL;
+
+ var $Section;
+
+
+
+ function clsConfigAdminItem($config_name=NULL)
+
+ {
+
+ $this->adodbConnection = &GetADODBConnection();
+
+ if($config_name)
+
+ $this->LoadSetting($config_name);
+
+ }
+
+
+
+ function LoadSetting($config_name)
+
+ {
+
+ $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) WHERE ".GetTablePrefix()."ConfigurationAdmin.VariableName='".$config_name."'";
+
+ $rs = $this->adodbConnection->Execute($sql);
+
+ if($rs && !$rs->EOF)
+
+ {
+
+ $this->name = $rs->fields["VariableName"];
+
+ $this->heading = $rs->fields["heading"];
+
+ $this->prompt = $rs->fields["prompt"];
+
+ $this->ElementType = $rs->fields["element_type"];
+
+ $this->ValidationRules=$rs->fields["validation"];
+
+ $this->default_value = $rs->fields["VariableValue"];
+
+ $this->ValueList=$rs->fields["ValueList"];
+
+ $this->Section = $rs->fields["Section"];
+
+ }
+
+ }
+
+
+
+ function explode_sql($sql)
+
+ {
+
+ $s = "";
+
+
+
+ $rs = $this->adodbConnection->Execute($sql);
+
+
+
+ while ($rs && !$rs->EOF)
+
+ {
+
+ if(strlen(trim($rs->fields["OptionName"]))>0 && strlen(trim($rs->fields["OptionValue"]))>0)
+
+ {
+
+ if(strlen($s))
+
+ $s .= ",";
+
+ $s .= $rs->fields["OptionName"]."="."+".$rs->fields["OptionValue"];
+
+ }
+
+ $rs->MoveNext();
+
+ }
+
+ return $s;
+
+ }
+
+
+
+ function replace_sql($string)
+
+ {
+
+ $string = str_replace("",GetTablePrefix(),$string);
+
+
+
+ $start = strpos($string,"");
+
+
+
+ while($start)
+
+ {
+
+ $end = strpos($string,"");
+
+ if(!$end)
+
+ {
+
+ $end = strlen($string);
+
+ }
+
+ $len = $end - $start;
+
+ $sql = substr($string,$start+5,$len-5);
+
+
+
+ $sql_val = $this->explode_sql($sql);
+
+ $s = substr($string,0,$start) . $sql_val . substr($string,$end+5);
+
+
+
+ $string = $s;
+
+ $start = strpos($string,"");
+
+ }
+
+ return $string;
+
+ }
+
+
+
+ function ItemFormElement($StartFrom=1)
+
+ {
+
+ global $objConfig;
+
+ static $TabIndex;
+
+
+
+ if (empty($TabIndex))
+
+ $TabIndex = $StartFrom;
+
+
+
+ $o = "";
+
+ if($objConfig->Get($this->name)!="")
+
+ $this->default_value = $objConfig->Get($this->name);
+
+ $this->default_value=inp_htmlize($this->default_value);
+
+ switch($this->ElementType)
+
+ {
+
+ case "text":
+
+ $o .= "name."\" ";
+
+ $o .= "VALUE=\"".$this->default_value."\">";
+
+ break;
+
+ case "checkbox":
+
+ $o .= "name."\" tabindex=\"".($TabIndex++)."\"";
+
+ if($this->default_value)
+
+ {
+
+ $o .= " CHECKED>";
+
+ }
+
+ else
+
+ $o .= ">";
+
+
+
+ break;
+
+ case "password":
+
+
+
+ /* To exclude config form from populating with Root (md5) password */
+
+ if ($this->Section == "in-portal:configure_users")
+
+ $this->default_value = "";
+
+
+
+ $o .= "name."\" ";
+
+ $o .= "VALUE=\"".$this->default_value."\">";
+
+ break;
+
+ case "textarea":
+
+ $o .= "";
+
+ break;
+
+ case "label":
+
+ if($this->default_value)
+
+ {
+
+ $o .= $this->default_value;
+
+ }
+
+ break;
+
+ case "radio":
+
+ $radioname = $this->name;
+
+
+
+ $ValList = $this->replace_sql($this->ValueList);
+
+
+
+ $TabIndex++;
+
+ $localTabIndex = $TabIndex;
+
+ $TabIndex++;
+
+
+
+ $val = explode(",",$ValList);
+
+ for($i=0;$i<=count($val);$i++)
+
+ {
+
+ if(strlen($val[$i]))
+
+ {
+
+ $parts = explode("=",$val[$i]);
+
+ $s = $parts[1];
+
+ if(strlen($s)==0)
+
+ $s="";
+
+
+
+ $o .= "name."\" VALUE=\"".$parts[0]."\"";
+
+ if($this->default_value==$parts[0])
+
+ {
+
+ $o .= " CHECKED>";
+
+ }
+
+ else
+
+ $o .= ">";
+
+ if(substr($s,0,1)=="+")
+
+ {
+
+ $o .= $s;
+
+ }
+
+ else
+
+ $o .= prompt_language($s);
+
+ }
+
+ }
+
+
+
+ break;
+
+ case "select":
+
+ $o .= "";
+
+ }
+
+ return $o;
+
+ }
+
+
+
+ function GetPrompt()
+
+ {
+
+ $ret = prompt_language($this->prompt);
+
+ return $ret;
+
+ }
+
+}
+
+
+
+class clsConfigAdmin
+
+{
+
+ var $module;
+
+ var $section;
+
+ var $Items;
+
+
+
+ function clsConfigAdmin($module="",$section="",$Inst=FALSE)
+
+ {
+
+ $this->module = $module;
+
+ $this->section = $section;
+
+ $this->Items= array();
+
+ if(strlen($module) && strlen($section))
+
+ $this->LoadItems(TRUE,$Inst);
+
+ }
+
+
+
+ function Clear()
+
+ {
+
+ unset($this->Items);
+
+ $this->Items = array();
+
+ }
+
+
+
+ function NumItems()
+
+ {
+
+ if(is_array($this->Items))
+
+ {
+
+ return count($this->Items);
+
+ }
+
+ else
+
+ return 0;
+
+ }
+
+
+
+ function LoadItems($CheckNextItems=TRUE, $inst=FALSE)
+
+ {
+
+ $this->Clear();
+
+ if(!$inst)
+
+ {
+
+ $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
+
+ WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' ORDER BY DisplayOrder ASC";
+
+ }
+
+ else
+
+ {
+
+
+
+ $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
+
+ WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' AND Install=1 ORDER BY DisplayOrder ASC";
+
+ }
+
+ if( $GLOBALS['debuglevel'] ) echo $sql."
\n";
+
+ $adodbConnection = &GetADODBConnection();
+
+ $rs = $adodbConnection->Execute($sql);
+
+ while($rs && !$rs->EOF)
+
+ {
+
+ $data = $rs->fields;
+
+ if(is_object($i) && $CheckNextItems)
+
+ {
+
+ $last = $i->prompt;
+
+ unset($i);
+
+ }
+
+ $i = new clsConfigAdminItem(NULL);
+
+ $i->name = $data["VariableName"];
+
+ $i->default_value = $data["VariableValue"];
+
+ $i->heading = $data["heading"];
+
+ $i->prompt = $data["prompt"];
+
+ $i->ElementType = $data["element_type"];
+
+ $i->ValueList = $data["ValueList"];
+
+ $i->ValidationRules = isset($data['validaton']) ? $data['validaton'] : '';
+
+ $i->Section = $data["Section"];
+
+
+
+ if(strlen($last)>0)
+
+ {
+
+ if($i->prompt==$last)
+
+ {
+
+ $this->Items[count($this->Items)-1]->NextItem=$i;
+
+ }
+
+ else
+
+ {
+
+ $i->NextItem=NULL;
+
+ array_push($this->Items,$i);
+
+ }
+
+ }
+
+ else
+
+ {
+
+ $i->NextItem=NULL;
+
+ array_push($this->Items,$i);
+
+ }
+
+ //unset($i);
+
+ $rs->MoveNext();
+
+ }
+
+ }
+
+
+
+ function SaveItems($POSTVARS, $force=FALSE)
+
+ {
+
+ global $objConfig;
+
+
+
+ foreach($this->Items as $i)
+
+ {
+
+ if($i->ElementType != "label")
+
+ {
+
+ if($i->ElementType != "checkbox")
+
+ {
+
+ $objConfig->Set($i->name,stripslashes($POSTVARS[$i->name]));
+
+ }
+
+ else
+
+ {
+
+ if($POSTVARS[$i->name]=="on")
+
+ {
+
+ $value=1;
+
+ }
+
+ else
+
+ $value = (int)$POSTVARS[$i->name];
+
+ $objConfig->Set($i->name,stripslashes($value),0,$force);
+
+ }
+
+ }
+
+ }
+
+ $objConfig->Save();
+
+ }
+
+
+
+ function GetHeadingList()
+
+ {
+
+ $res = array();
+
+ foreach($this->Items as $i)
+
+ {
+
+ $res[$i->heading]=1;
+
+ }
+
+ reset($res);
+
+ return array_keys($res);
+
+ }
+
+
+
+ function GetHeadingItems($heading)
+
+ {
+
+ $res = array();
+
+ foreach($this->Items as $i)
+
+ {
+
+ if($i->heading==$heading)
+
+ array_push($res,$i);
+
+ }
+
+ return $res;
+
+ }
+
+}
+?>
\ No newline at end of file