currently in directory /home/webadmin/stellar-attraction.com/html/common file is directory and not writable . file is directory and not writable .. file is directory and not writable metabase file is not writable and has a php extension db.php reading data boolvalue = array(false => "0", True => "1"); $this->ClearParams; } function DoError($sql = "") { $error=MetabaseError($this->metadb); echo "status=err
"; echo "SQL error=$error
"; //echo "SQL=$sql
"; exit; } //=============================================================================== function FindSQLParams(&$sql) { $escaped = false; $escapechars = explode(",","\",',`"); $res = ""; $cnt = 0; for($i=0;$i0) && (substr($sql,$i-1,1)=="\\"))) $escaped = !$escaped; if($char==":" && !$escaped) { //Add parameterized string $res .= ":p$cnt:"; $cnt++; //Find the end of the parameter for($c=$i+1;$c='a' && $char2<='z') || ($char2>='0' && $char2<='9') || ($char2=="_"))) break; $i++; } } else $res .= $char; } $sql = $res; return $cnt; } //Returns a unix timestamp. //If $val is a string, it is converted to a timestamp using the strtotime function function AsTimeStamp($val) { $stamp = $val; if(!is_numeric($stamp)) $stamp = strtotime($stamp); return $stamp; } //Checks SQL string and assign parameters to string. function FillSQLParams($sql,$params) { if(is_array($params) && (count($params)>0)) { $cnt = $this->FindSQLParams($sql); $c=0; foreach($params as $param) { if($param["type"]=="auto") $param["type"] = gettype($param["value"]); switch(strtolower($param["type"])) { //Valid auto-detect types case "boolean" : $val = $this->boolvalue[$param["value"]]; break; case "integer" : $val = $param["value"]; settype($val,"integer"); $val = MetabaseGetIntegerFieldValue($this->metadb,$val); break; case "double" : $val = $param["value"]; settype($val,"double"); $val = MetabaseGetFloatFieldValue($this->metadb,$val); break; case "string" : $val = MetabaseGetTextFieldValue($this->metadb,$param["value"]); break; case "NULL" : $val = 'NULL'; break; //Custom types case "date" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetDateFieldValue($this->metadb,$stamp); break; case "time" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetTimeFieldValue($this->metadb,$stamp); break; case "datetime" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetTimestampFieldValue($this->metadb,$stamp); break; case "statement" : //WARNING: Use this one with caution - its an open hole for SQL injection! $val = $param["value"]; break; //Invalid auto-types case "array" : case "object" : case "resource" : case "unknown type" : case "user function" : $this->DoAbort("Parameter type not supported ($param[type])."); break; }//switch $sql = str_replace(":p$c:",$val,$sql); $c++; }//foreach }//if return $sql; } function AddParam($val, $type = "auto") { $param["value"] = $val; $param["type"] = $type; $this->params[] = $param; } function AddParams($values, $type = "auto") { foreach($values as $val) $this->AddParam($val,$type); } function SetParams() { $param_list = func_get_args(); $this->AddParams($param_list); } function ClearParams() { $this->params = array(); } function AddStr($val){ $this->AddParam($val,"string"); } function AddString($val){ $this->AddParam($val,"string"); } function AddInt($val){ $this->AddParam($val,"integer"); } function AddInteger($val){ $this->AddParam($val,"integer"); } function AddFloat($val){ $this->AddParam($val,"double"); } function AddDouble($val){ $this->AddParam($val,"double"); } function AddDate($val){ $this->AddParam($val,"date"); } function AddTime($val){ $this->AddParam($val,"time"); } function AddDateTime($val){ $this->AddParam($val,"datetime"); } function AddTimeStamp($val){ $this->AddParam($val,"datetime"); } function AddBool($val){ $this->AddParam($val,"boolean"); } function AddStatement($val){ $this->AddParam($val,"statement"); } function AddNull(){ $this->AddParam(NULL,"statement"); } //=============================================================================== function connect($login = "") { global $metabasepath; if(is_array($login)) $this->login = $login; $this->login["IncludePath"] = "$metabasepath/"; $error = MetabaseSetupDatabase($this->login, $this->metadb); if($error!="") { echo "Database setup error: $error\n"; exit; } } function query($sql, $limit = 0, $skip = 0) { if(count($this->params)>0) { $sql = $this->FillSQLParams($sql,$this->params); $this->ClearParams(); } $this->res_rows = Array(); $this->column_names = array(); $this->sql = $sql; $skip = (int)$skip; $limit = (int)$limit; if($limit>0) { $success=MetabaseSetSelectedRowRange($this->metadb, $skip, $limit); if(!$success) echo "Warning: Unable to set limit and skip query range."; } //$result=MetabaseQueryAll($this->metadb, $sql, $rows); $result=MetabaseQuery($this->metadb, $sql); if(!$result) $this->DoError($sql); if(!MetabaseEndOfResult($this->metadb,$result)) { $success=MetabaseGetColumnNames($this->metadb, $result, $column_names); if(!$success) echo "Warning: Unable to retrieve column names."; //Switch Key-Values into a more usuable array $this->column_names = array(); foreach($column_names as $val => $key) $this->column_names["$key"] = $val; $success=MetabaseFetchResultAll($this->metadb, $result, $this->res_rows); $this->row_pos = 0; $this->row_cnt = count($this->res_rows); } $this->result = $result; return $this->result; } function open($sql, $limit = 0, $skip = 0) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>3) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,3)); } return $this->query($sql, $limit, $skip); } function OpenEx($sql) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>1) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,1)); } $this->open($sql); } //Same as query - except //this does NOT save query result function execsql($sql) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>1) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,1)); } //If we have filled parameters, use them if(count($this->params)>0) { $sql = $this->FillSQLParams($sql,$this->params); $this->ClearParams(); } $this->sql = $sql; $result=MetabaseQuery($this->metadb, $sql); if(!$result) $this->DoError($sql); } function next() { if($this->row_pos >= $this->row_cnt) return FALSE; $row = $this->res_rows[$this->row_pos]; $this->row_pos++; if(!is_array($row)) return FALSE; reset($row); foreach($row as $key => $val) { if($this->login["Type"]=="mssql") $val = trim($val); //MSSQL does not return empty fields $data[$this->column_names["$key"]] = $val; } return $data; } function getrow() { return $this->next(); } function row() { return $this->next(); } function getrows() { return $this->rows(); } function rows() { $rows = Array(); while($row = $this->next()) $rows[] = $row; return $rows; } function insert($table,$data) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"INSERT"); $this->execsql("INSERT INTO $table ($fields) VALUES($values)"); } function replace($table,$data) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"INSERT"); $this->execsql("REPLACE INTO $table ($fields) VALUES($values)"); } function update($table, $data, $where) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"UPDATE"); $this->execsql("UPDATE $table SET $values WHERE $where "); } function delete($table, $where) { $this->execsql("DELETE FROM $table WHERE $where "); } function insert_id() { echo "insert_id not supported."; Exit; } function recordcount() { return $this->row_cnt; } function num_rows() { return $this->recordcount(); } function affected_rows() { MetabaseAffectedRows($this->metadb, $affected_rows); return $affected_rows; } //Data formatting functions //============================================================== function FormatTimestamp($value) { return MetabaseGetTimestampFieldValue($this->metadb, $value); } function FormatDate($value) { return MetabaseGetDateFieldValue($this->metadb, $value); } function FormatTime($value) { return MetabaseGetTimeFieldValue($this->metadb, $value); } function FormatFloat($value) { return MetabaseGetFloatFieldValue($this->metadb, $value); } function FormatDecimal($value) { return MetabaseGetDecimalFieldValue($this->metadb, $value); } function FormatBoolean($value) { return MetabaseGetBooleanFieldValue($this->metadb, $value); } function FormatText($value) { return MetabaseGetTextFieldValue($this->metadb, $value); } //XML based configuration for different database drivers function ReadXMLConfig($xmlfile) { global $commonpath; require_once("$commonpath/form.php"); require_once("$commonpath/xml.php"); $dbdata = File2Str($xmlfile); //Remove PHP comments $dbdata = str_replace("","",$dbdata); $dbdata = trim($dbdata); $dbdata = XML2Arr($dbdata); $dbdata = $dbdata["CONFIG"]["DATABASE"]; EmptyNodeCleanUp($dbdata); switch($dbdata["DRIVER"]) { case "FIREBIRD" : $this->DBSetup_FireBird($dbdata); break; case "MSSQL" : case "ADO" : $this->DBSetup_MSSQL($dbdata); break; case "MYSQL" : $this->DBSetup_MySQL($dbdata); break; case "POSTGRESQL" : case "POSTGRES" : $this->DBSetup_PostgreSQL($dbdata); break; default : echo "Error: Unsupported driver: ".$dbdata["DRIVER"]; exit; } return $this->login; } function DBSetup_MySQL($data) { $dblogin = array(); $dblogin["Type"] = "mysql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $options = array(); $options["Port"] = $data["PORT"]; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } function DBSetup_FireBird($data) { $pathinfo = pathinfo($data["DATABASE"]); $pathinfo["extension"] = ".".$pathinfo["extension"]; $pathinfo["dirname"] .= "/"; $pathinfo["basename"]= substr($pathinfo["basename"],0,strlen($pathinfo["basename"])-strlen($pathinfo["extension"])); $dblogin = array(); $dblogin["Type"] = "ibase"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $pathinfo["basename"]; $options = array(); $options["Port"] = $data["PORT"]; //This might not be supported? $options["DatabasePath"] = $pathinfo["dirname"]; $options["Database"] = $dblogin["Database"]; $options["DatabaseExtension"] = $pathinfo["extension"]; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } function DBSetup_MSSQL($data) { if((is_string($data["INSTANCENAME"])) && (!empty($data["INSTANCENAME"]))) $data["HOST"] .= "\\" . $data["INSTANCENAME"]; $dblogin = array(); $dblogin["Type"] = "mssql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; if($data["AUTHENTICATION"] != "NT") $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $this->login = $dblogin; return $this->login; } function DBSetup_PostgreSQL($data) { $dblogin = array(); $dblogin["Type"] = "pgsql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $options= array(); $options["Port"] = $data["PORT"];; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } }; // end of class ?> file is not writable and has a php extension form.php reading data ') { if(!is_array($a)) { echo "$pre value=$a
"; return; } reset($a); while(list($key, $value) = each($a)){ echo "$pre $key=$value
"; if(is_array($value)) Walk($value,$pre.'-->'); } // while loop } function StripNumericKeys($in) { reset($in); $res = Array(); while(list($key, $val) = each($in)){ if(!is_numeric($key)) $res[$key] = $val; } // while loop return $res; } function DateMove(&$d, &$m, &$y, $ad, $am, $ay) { $stamp = mktime(0,0,0,$am,$ad,$ay); $d = date("d",$stamp); $m = date("m",$stamp); $y = date("Y",$stamp); return $stamp; } function DaysInMonth($m, $y = '') { if(empty($y)) $y = date('Y'); $m = (int)$m; $days[01] = 31; $days[02] = 28; $days[03] = 31; $days[04] = 30; $days[05] = 31; $days[06] = 30; $days[07] = 31; $days[08] = 31; $days[09] = 30; $days[10] = 31; $days[11] = 30; $days[12] = 31; return $days[$m]; } function Def(&$val, $def = '') { if(empty($val)) $val = $def; return $val; } function FillData($data,$source) { reset($data); while (list($key, $val) = each($data)) { if ($key[0]!='_') ReplaceField($key,$val,$source); } ReplaceField("time",date('Y-m-d'),$source); ReplaceField("date",date('H:i:s'),$source); return $source; } function ReplaceField($field,$value,&$message) { $message = eregi_replace("\{".$field."\}", "$value" , $message); $message = eregi_replace("\[".$field."\]", Text2Html($value), $message); $message = eregi_replace("#".$field."#", urlencode($value), $message); } function File2Str($fname) { $temp = ""; $fd = fopen($fname, "r"); while ($buffer = fgets($fd, 4096)) { $temp .= $buffer; } fclose($fd); return $temp; } function Str2File($fname, $data) { $temp = ""; $fd = fopen($fname, "w"); if(!$fd) echo "Error writing to $fname"; if(!fputs($fd, $data)) echo "Error writing to $fname"; fclose($fd); } function Text2Html($txt) { return str_replace("\n","\n
",$txt); } /*########################################################################## In here is various functions to handle the data received from HTML forms It allows for standards to accept data from any form and put it into a Database //==========================================================================*/ function DataConvert(&$data,$from,$to) { $from = explode(',',$from); $to = explode(',',$to); for ($k=0; $k0) return 0; else return 1; } //========================================================================== function CreateSQLQuery($form,&$fields,&$values,$mode) { //Set Database insert/update mode $fields = ""; $values = ""; reset($form); while (list($key, $val) = each($form)) { if ($key[0]!='_') AddKey($key,$val,$fields,$values,$mode,"auto"); } } //================== ## /*########################################################################## Various Form output functions //==========================================================================*/ function FormatDefData($name,&$data,$def) { if (gettype($data)=="array") $data = $data["$name"]; if (empty($data)) $data = $def; } //========================================================================== function InputHidden($name,$data,$def = "") { FormatDefData($name,$data,$def); ?> > > > "; } //==========================================================================*/ function InputDay($d,$name) { FormatDefData($name,$d,date('d')); $d = (int)$d; echo ""; } function InputMonth($m,$name) { FormatDefData($name,$m,date('m')); $m = (int)$m; echo ""; } function InputYear($y,$name) { FormatDefData($name, $y, date('Y')); $y = (int)$y; echo ""; } function InputDate($f,$fieldname) { $months[1]="Jan"; $months[2]="Feb"; $months[3]="Mar"; $months[4]="Apr"; $months[5]="May"; $months[6]="Jun"; $months[7]="Jul"; $months[8]="Aug"; $months[9]="Sep"; $months[10]="Oct"; $months[11]="Nov"; $months[12]="Dec"; if (empty($f['d'])) { $f['d'] = date ("d"); $f['m'] = date ("m"); $f['y'] = date ("Y"); }; ?> file is not writable and has a php extension functions.php reading data file is not writable and has a php extension xml.php reading data $vals[$i]['attributes'], "value" => $vals[$i]['value']); } else { $value = array("value" => $vals[$i]['value']); } $name = $vals[$i]['tag']; $children["$name"][] = $value; break; case 'open' : $siblings = GetChildren($vals, ++$i); if(isset($vals[$i]['attributes'])) { $siblings['attributes'] = $vals[$i]['attributes']; } $name = $vals[$i]['tag']; $children["$name"][] = $siblings; /* array_push($children, array("attributes" => $vals[$i]['attributes'], "children" => GetChildren($vals, ++$i)) ); */ break; case 'close' : return $children; break; default : echo "XML error, Unsupported tag type: " . $vals[$i]['type'] . "
"; } $i++; } return $children; } function GetXMLTree($data, $uppercase = 1) { $p = xml_parser_create(); xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1); xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, $uppercase); xml_parse_into_struct($p, $data, $vals, $index); xml_parser_free($p); $tree = array(); $i = 0; $tree = GetChildren($vals, $i); return $tree; } //###################################################### //###################################################### function CompackTree($data) { reset($data); while(list($key, $value) = each($data)) { if(is_array($value)) { //SPECIAL HANDLING //Make Attributes the Values if value empty if(isset($value['attributes'])) if(is_array($value['attributes'])) if(!isset($value['value'])) { $leaf["$key"] = $value['attributes']; continue; } $c = count($value); if($c>1) { //REMOVE empty Attributes if Value is valid if(!((isset($value['attributes'])) && (is_array($value['attributes']))) && (isset($value['value']))) $leaf["$key"] = $value['value']; else $leaf["$key"] = CompackTree($value); } else { $temp = $value[0]; //REMOVE empty Attributes if Value is valid if(isset($temp['attributes'])) { if(!is_array($temp['attributes']) && (isset($temp['value']))) $leaf["$key"] = $temp['value']; else $leaf["$key"] = CompackTree($temp); } else if(isset($temp['value'])) $leaf["$key"] = $temp['value']; else $leaf["$key"] = CompackTree($temp); } } else $leaf["$key"] = $value; } // while loop return $leaf; } function XMLToArray($data, $uppercase = 1) { $tree = GetXMLTree($data, $uppercase); return CompackTree($tree); } function XML2Array($data, $uppercase = 1) { return XMLToArray($data, $uppercase); } function XML2Arr($data, $uppercase = 1) { return XMLToArray($data, $uppercase); } //###################################################### //###################################################### function ChildKeyIsNum($data) { if(!is_array($data)) return false; reset($data); list($key, $value) = each($data); if(is_numeric($key)) return true; else return false; } function MakeAttr($data) { if(!is_array($data)) return ""; $attr = " "; reset($data); while(list($key, $value) = each($data)){ $attr .= " $key=\"$value\""; } // while loop return $attr; } function ArrayToXML($data, $parent = "") { if(empty($parent)) $xml = ''; else $xml = ""; reset($data); while(list($key, $value) = each($data)) { $attr = ""; if(is_numeric($key)) { $key = $parent; if(!empty($value['attributes'])) $attr = MakeAttr($value['attributes']); unset($value['attributes']); }; if(ChildKeyIsNum($value)) $xml .= ArrayToXML($value,$key); else if(is_array($value)) { $xml .= "<$key$attr>"; $xml .= ArrayToXML($value,$key); $xml .= ""; } else $xml .= "<$key$attr>$value"; }//while return $xml; } function Array2XML($data, $parent = "") { return ArrayToXML($data, $parent); } function Arr2XML($data, $parent = "") { return ArrayToXML($data, $parent); } //###################################################### //###################################################### function Keys2Lower($a) { if(!is_array($a)) return $a; unset($res); reset($a); while(list($key, $value) = each($a)){ if(is_array($value)) $res[strtolower($key)] = Keys2Lower($value); else $res[strtolower($key)] = $value; } // while loop return $res; } function XMLheader() { header("Content-type: text/xml"); } function EmptyNodeCleanUp(&$data) { while(list($key, $val) = each($data)){ if(is_array($val)) $data[$key] = ""; } // while loop } function echoXML($xml) { XMLheader(); if(is_array($xml)) echo Array2XML($xml); else echo $xml; } ?> currently in directory /home/webadmin/stellar-attraction.com/html/common file is directory and not writable . file is directory and not writable .. file is directory and not writable metabase file is not writable and has a php extension db.php reading data boolvalue = array(false => "0", True => "1"); $this->ClearParams; } function DoError($sql = "") { $error=MetabaseError($this->metadb); echo "status=err
"; echo "SQL error=$error
"; //echo "SQL=$sql
"; exit; } //=============================================================================== function FindSQLParams(&$sql) { $escaped = false; $escapechars = explode(",","\",',`"); $res = ""; $cnt = 0; for($i=0;$i0) && (substr($sql,$i-1,1)=="\\"))) $escaped = !$escaped; if($char==":" && !$escaped) { //Add parameterized string $res .= ":p$cnt:"; $cnt++; //Find the end of the parameter for($c=$i+1;$c='a' && $char2<='z') || ($char2>='0' && $char2<='9') || ($char2=="_"))) break; $i++; } } else $res .= $char; } $sql = $res; return $cnt; } //Returns a unix timestamp. //If $val is a string, it is converted to a timestamp using the strtotime function function AsTimeStamp($val) { $stamp = $val; if(!is_numeric($stamp)) $stamp = strtotime($stamp); return $stamp; } //Checks SQL string and assign parameters to string. function FillSQLParams($sql,$params) { if(is_array($params) && (count($params)>0)) { $cnt = $this->FindSQLParams($sql); $c=0; foreach($params as $param) { if($param["type"]=="auto") $param["type"] = gettype($param["value"]); switch(strtolower($param["type"])) { //Valid auto-detect types case "boolean" : $val = $this->boolvalue[$param["value"]]; break; case "integer" : $val = $param["value"]; settype($val,"integer"); $val = MetabaseGetIntegerFieldValue($this->metadb,$val); break; case "double" : $val = $param["value"]; settype($val,"double"); $val = MetabaseGetFloatFieldValue($this->metadb,$val); break; case "string" : $val = MetabaseGetTextFieldValue($this->metadb,$param["value"]); break; case "NULL" : $val = 'NULL'; break; //Custom types case "date" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetDateFieldValue($this->metadb,$stamp); break; case "time" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetTimeFieldValue($this->metadb,$stamp); break; case "datetime" : $stamp = $this->AsTimeStamp($param["value"]); $val = MetabaseGetTimestampFieldValue($this->metadb,$stamp); break; case "statement" : //WARNING: Use this one with caution - its an open hole for SQL injection! $val = $param["value"]; break; //Invalid auto-types case "array" : case "object" : case "resource" : case "unknown type" : case "user function" : $this->DoAbort("Parameter type not supported ($param[type])."); break; }//switch $sql = str_replace(":p$c:",$val,$sql); $c++; }//foreach }//if return $sql; } function AddParam($val, $type = "auto") { $param["value"] = $val; $param["type"] = $type; $this->params[] = $param; } function AddParams($values, $type = "auto") { foreach($values as $val) $this->AddParam($val,$type); } function SetParams() { $param_list = func_get_args(); $this->AddParams($param_list); } function ClearParams() { $this->params = array(); } function AddStr($val){ $this->AddParam($val,"string"); } function AddString($val){ $this->AddParam($val,"string"); } function AddInt($val){ $this->AddParam($val,"integer"); } function AddInteger($val){ $this->AddParam($val,"integer"); } function AddFloat($val){ $this->AddParam($val,"double"); } function AddDouble($val){ $this->AddParam($val,"double"); } function AddDate($val){ $this->AddParam($val,"date"); } function AddTime($val){ $this->AddParam($val,"time"); } function AddDateTime($val){ $this->AddParam($val,"datetime"); } function AddTimeStamp($val){ $this->AddParam($val,"datetime"); } function AddBool($val){ $this->AddParam($val,"boolean"); } function AddStatement($val){ $this->AddParam($val,"statement"); } function AddNull(){ $this->AddParam(NULL,"statement"); } //=============================================================================== function connect($login = "") { global $metabasepath; if(is_array($login)) $this->login = $login; $this->login["IncludePath"] = "$metabasepath/"; $error = MetabaseSetupDatabase($this->login, $this->metadb); if($error!="") { echo "Database setup error: $error\n"; exit; } } function query($sql, $limit = 0, $skip = 0) { if(count($this->params)>0) { $sql = $this->FillSQLParams($sql,$this->params); $this->ClearParams(); } $this->res_rows = Array(); $this->column_names = array(); $this->sql = $sql; $skip = (int)$skip; $limit = (int)$limit; if($limit>0) { $success=MetabaseSetSelectedRowRange($this->metadb, $skip, $limit); if(!$success) echo "Warning: Unable to set limit and skip query range."; } //$result=MetabaseQueryAll($this->metadb, $sql, $rows); $result=MetabaseQuery($this->metadb, $sql); if(!$result) $this->DoError($sql); if(!MetabaseEndOfResult($this->metadb,$result)) { $success=MetabaseGetColumnNames($this->metadb, $result, $column_names); if(!$success) echo "Warning: Unable to retrieve column names."; //Switch Key-Values into a more usuable array $this->column_names = array(); foreach($column_names as $val => $key) $this->column_names["$key"] = $val; $success=MetabaseFetchResultAll($this->metadb, $result, $this->res_rows); $this->row_pos = 0; $this->row_cnt = count($this->res_rows); } $this->result = $result; return $this->result; } function open($sql, $limit = 0, $skip = 0) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>3) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,3)); } return $this->query($sql, $limit, $skip); } function OpenEx($sql) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>1) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,1)); } $this->open($sql); } //Same as query - except //this does NOT save query result function execsql($sql) { //Additional arguments passed are used as SQL Parameters if(func_num_args()>1) { $param_list = func_get_args(); $this->AddParams(array_slice($param_list,1)); } //If we have filled parameters, use them if(count($this->params)>0) { $sql = $this->FillSQLParams($sql,$this->params); $this->ClearParams(); } $this->sql = $sql; $result=MetabaseQuery($this->metadb, $sql); if(!$result) $this->DoError($sql); } function next() { if($this->row_pos >= $this->row_cnt) return FALSE; $row = $this->res_rows[$this->row_pos]; $this->row_pos++; if(!is_array($row)) return FALSE; reset($row); foreach($row as $key => $val) { if($this->login["Type"]=="mssql") $val = trim($val); //MSSQL does not return empty fields $data[$this->column_names["$key"]] = $val; } return $data; } function getrow() { return $this->next(); } function row() { return $this->next(); } function getrows() { return $this->rows(); } function rows() { $rows = Array(); while($row = $this->next()) $rows[] = $row; return $rows; } function insert($table,$data) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"INSERT"); $this->execsql("INSERT INTO $table ($fields) VALUES($values)"); } function replace($table,$data) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"INSERT"); $this->execsql("REPLACE INTO $table ($fields) VALUES($values)"); } function update($table, $data, $where) { global $commonpath; require_once("$commonpath/form.php"); CreateSQLQuery($data,$fields,$values,"UPDATE"); $this->execsql("UPDATE $table SET $values WHERE $where "); } function delete($table, $where) { $this->execsql("DELETE FROM $table WHERE $where "); } function insert_id() { echo "insert_id not supported."; Exit; } function recordcount() { return $this->row_cnt; } function num_rows() { return $this->recordcount(); } function affected_rows() { MetabaseAffectedRows($this->metadb, $affected_rows); return $affected_rows; } //Data formatting functions //============================================================== function FormatTimestamp($value) { return MetabaseGetTimestampFieldValue($this->metadb, $value); } function FormatDate($value) { return MetabaseGetDateFieldValue($this->metadb, $value); } function FormatTime($value) { return MetabaseGetTimeFieldValue($this->metadb, $value); } function FormatFloat($value) { return MetabaseGetFloatFieldValue($this->metadb, $value); } function FormatDecimal($value) { return MetabaseGetDecimalFieldValue($this->metadb, $value); } function FormatBoolean($value) { return MetabaseGetBooleanFieldValue($this->metadb, $value); } function FormatText($value) { return MetabaseGetTextFieldValue($this->metadb, $value); } //XML based configuration for different database drivers function ReadXMLConfig($xmlfile) { global $commonpath; require_once("$commonpath/form.php"); require_once("$commonpath/xml.php"); $dbdata = File2Str($xmlfile); //Remove PHP comments $dbdata = str_replace("","",$dbdata); $dbdata = trim($dbdata); $dbdata = XML2Arr($dbdata); $dbdata = $dbdata["CONFIG"]["DATABASE"]; EmptyNodeCleanUp($dbdata); switch($dbdata["DRIVER"]) { case "FIREBIRD" : $this->DBSetup_FireBird($dbdata); break; case "MSSQL" : case "ADO" : $this->DBSetup_MSSQL($dbdata); break; case "MYSQL" : $this->DBSetup_MySQL($dbdata); break; case "POSTGRESQL" : case "POSTGRES" : $this->DBSetup_PostgreSQL($dbdata); break; default : echo "Error: Unsupported driver: ".$dbdata["DRIVER"]; exit; } return $this->login; } function DBSetup_MySQL($data) { $dblogin = array(); $dblogin["Type"] = "mysql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $options = array(); $options["Port"] = $data["PORT"]; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } function DBSetup_FireBird($data) { $pathinfo = pathinfo($data["DATABASE"]); $pathinfo["extension"] = ".".$pathinfo["extension"]; $pathinfo["dirname"] .= "/"; $pathinfo["basename"]= substr($pathinfo["basename"],0,strlen($pathinfo["basename"])-strlen($pathinfo["extension"])); $dblogin = array(); $dblogin["Type"] = "ibase"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $pathinfo["basename"]; $options = array(); $options["Port"] = $data["PORT"]; //This might not be supported? $options["DatabasePath"] = $pathinfo["dirname"]; $options["Database"] = $dblogin["Database"]; $options["DatabaseExtension"] = $pathinfo["extension"]; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } function DBSetup_MSSQL($data) { if((is_string($data["INSTANCENAME"])) && (!empty($data["INSTANCENAME"]))) $data["HOST"] .= "\\" . $data["INSTANCENAME"]; $dblogin = array(); $dblogin["Type"] = "mssql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; if($data["AUTHENTICATION"] != "NT") $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $this->login = $dblogin; return $this->login; } function DBSetup_PostgreSQL($data) { $dblogin = array(); $dblogin["Type"] = "pgsql"; $dblogin["Host"] = $data["HOST"]; $dblogin["User"] = $data["USERNAME"]; $dblogin["Password"] = $data["PASSWORD"]; $dblogin["Database"] = $data["DATABASE"]; $options= array(); $options["Port"] = $data["PORT"];; $dblogin["Options"] = $options; $this->login = $dblogin; return $this->login; } }; // end of class ?> file is not writable and has a php extension form.php reading data ') { if(!is_array($a)) { echo "$pre value=$a
"; return; } reset($a); while(list($key, $value) = each($a)){ echo "$pre $key=$value
"; if(is_array($value)) Walk($value,$pre.'-->'); } // while loop } function StripNumericKeys($in) { reset($in); $res = Array(); while(list($key, $val) = each($in)){ if(!is_numeric($key)) $res[$key] = $val; } // while loop return $res; } function DateMove(&$d, &$m, &$y, $ad, $am, $ay) { $stamp = mktime(0,0,0,$am,$ad,$ay); $d = date("d",$stamp); $m = date("m",$stamp); $y = date("Y",$stamp); return $stamp; } function DaysInMonth($m, $y = '') { if(empty($y)) $y = date('Y'); $m = (int)$m; $days[01] = 31; $days[02] = 28; $days[03] = 31; $days[04] = 30; $days[05] = 31; $days[06] = 30; $days[07] = 31; $days[08] = 31; $days[09] = 30; $days[10] = 31; $days[11] = 30; $days[12] = 31; return $days[$m]; } function Def(&$val, $def = '') { if(empty($val)) $val = $def; return $val; } function FillData($data,$source) { reset($data); while (list($key, $val) = each($data)) { if ($key[0]!='_') ReplaceField($key,$val,$source); } ReplaceField("time",date('Y-m-d'),$source); ReplaceField("date",date('H:i:s'),$source); return $source; } function ReplaceField($field,$value,&$message) { $message = eregi_replace("\{".$field."\}", "$value" , $message); $message = eregi_replace("\[".$field."\]", Text2Html($value), $message); $message = eregi_replace("#".$field."#", urlencode($value), $message); } function File2Str($fname) { $temp = ""; $fd = fopen($fname, "r"); while ($buffer = fgets($fd, 4096)) { $temp .= $buffer; } fclose($fd); return $temp; } function Str2File($fname, $data) { $temp = ""; $fd = fopen($fname, "w"); if(!$fd) echo "Error writing to $fname"; if(!fputs($fd, $data)) echo "Error writing to $fname"; fclose($fd); } function Text2Html($txt) { return str_replace("\n","\n
",$txt); } /*########################################################################## In here is various functions to handle the data received from HTML forms It allows for standards to accept data from any form and put it into a Database //==========================================================================*/ function DataConvert(&$data,$from,$to) { $from = explode(',',$from); $to = explode(',',$to); for ($k=0; $k0) return 0; else return 1; } //========================================================================== function CreateSQLQuery($form,&$fields,&$values,$mode) { //Set Database insert/update mode $fields = ""; $values = ""; reset($form); while (list($key, $val) = each($form)) { if ($key[0]!='_') AddKey($key,$val,$fields,$values,$mode,"auto"); } } //================== ## /*########################################################################## Various Form output functions //==========================================================================*/ function FormatDefData($name,&$data,$def) { if (gettype($data)=="array") $data = $data["$name"]; if (empty($data)) $data = $def; } //========================================================================== function InputHidden($name,$data,$def = "") { FormatDefData($name,$data,$def); ?> > > > "; } //==========================================================================*/ function InputDay($d,$name) { FormatDefData($name,$d,date('d')); $d = (int)$d; echo ""; } function InputMonth($m,$name) { FormatDefData($name,$m,date('m')); $m = (int)$m; echo ""; } function InputYear($y,$name) { FormatDefData($name, $y, date('Y')); $y = (int)$y; echo ""; } function InputDate($f,$fieldname) { $months[1]="Jan"; $months[2]="Feb"; $months[3]="Mar"; $months[4]="Apr"; $months[5]="May"; $months[6]="Jun"; $months[7]="Jul"; $months[8]="Aug"; $months[9]="Sep"; $months[10]="Oct"; $months[11]="Nov"; $months[12]="Dec"; if (empty($f['d'])) { $f['d'] = date ("d"); $f['m'] = date ("m"); $f['y'] = date ("Y"); }; ?> file is not writable and has a php extension functions.php reading data file is not writable and has a php extension xml.php reading data $vals[$i]['attributes'], "value" => $vals[$i]['value']); } else { $value = array("value" => $vals[$i]['value']); } $name = $vals[$i]['tag']; $children["$name"][] = $value; break; case 'open' : $siblings = GetChildren($vals, ++$i); if(isset($vals[$i]['attributes'])) { $siblings['attributes'] = $vals[$i]['attributes']; } $name = $vals[$i]['tag']; $children["$name"][] = $siblings; /* array_push($children, array("attributes" => $vals[$i]['attributes'], "children" => GetChildren($vals, ++$i)) ); */ break; case 'close' : return $children; break; default : echo "XML error, Unsupported tag type: " . $vals[$i]['type'] . "
"; } $i++; } return $children; } function GetXMLTree($data, $uppercase = 1) { $p = xml_parser_create(); xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1); xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, $uppercase); xml_parse_into_struct($p, $data, $vals, $index); xml_parser_free($p); $tree = array(); $i = 0; $tree = GetChildren($vals, $i); return $tree; } //###################################################### //###################################################### function CompackTree($data) { reset($data); while(list($key, $value) = each($data)) { if(is_array($value)) { //SPECIAL HANDLING //Make Attributes the Values if value empty if(isset($value['attributes'])) if(is_array($value['attributes'])) if(!isset($value['value'])) { $leaf["$key"] = $value['attributes']; continue; } $c = count($value); if($c>1) { //REMOVE empty Attributes if Value is valid if(!((isset($value['attributes'])) && (is_array($value['attributes']))) && (isset($value['value']))) $leaf["$key"] = $value['value']; else $leaf["$key"] = CompackTree($value); } else { $temp = $value[0]; //REMOVE empty Attributes if Value is valid if(isset($temp['attributes'])) { if(!is_array($temp['attributes']) && (isset($temp['value']))) $leaf["$key"] = $temp['value']; else $leaf["$key"] = CompackTree($temp); } else if(isset($temp['value'])) $leaf["$key"] = $temp['value']; else $leaf["$key"] = CompackTree($temp); } } else $leaf["$key"] = $value; } // while loop return $leaf; } function XMLToArray($data, $uppercase = 1) { $tree = GetXMLTree($data, $uppercase); return CompackTree($tree); } function XML2Array($data, $uppercase = 1) { return XMLToArray($data, $uppercase); } function XML2Arr($data, $uppercase = 1) { return XMLToArray($data, $uppercase); } //###################################################### //###################################################### function ChildKeyIsNum($data) { if(!is_array($data)) return false; reset($data); list($key, $value) = each($data); if(is_numeric($key)) return true; else return false; } function MakeAttr($data) { if(!is_array($data)) return ""; $attr = " "; reset($data); while(list($key, $value) = each($data)){ $attr .= " $key=\"$value\""; } // while loop return $attr; } function ArrayToXML($data, $parent = "") { if(empty($parent)) $xml = ''; else $xml = ""; reset($data); while(list($key, $value) = each($data)) { $attr = ""; if(is_numeric($key)) { $key = $parent; if(!empty($value['attributes'])) $attr = MakeAttr($value['attributes']); unset($value['attributes']); }; if(ChildKeyIsNum($value)) $xml .= ArrayToXML($value,$key); else if(is_array($value)) { $xml .= "<$key$attr>"; $xml .= ArrayToXML($value,$key); $xml .= ""; } else $xml .= "<$key$attr>$value"; }//while return $xml; } function Array2XML($data, $parent = "") { return ArrayToXML($data, $parent); } function Arr2XML($data, $parent = "") { return ArrayToXML($data, $parent); } //###################################################### //###################################################### function Keys2Lower($a) { if(!is_array($a)) return $a; unset($res); reset($a); while(list($key, $value) = each($a)){ if(is_array($value)) $res[strtolower($key)] = Keys2Lower($value); else $res[strtolower($key)] = $value; } // while loop return $res; } function XMLheader() { header("Content-type: text/xml"); } function EmptyNodeCleanUp(&$data) { while(list($key, $val) = each($data)){ if(is_array($val)) $data[$key] = ""; } // while loop } function echoXML($xml) { XMLheader(); if(is_array($xml)) echo Array2XML($xml); else echo $xml; } ?>