Experimental error reporting for XML-RPC and SOAP ...

This commit is contained in:
jengo 2001-11-29 19:55:37 +00:00
parent 6330681793
commit 64d0fc337e

View File

@ -43,6 +43,10 @@
// PostgreSQL changed somethings from 6.x -> 7.x // PostgreSQL changed somethings from 6.x -> 7.x
var $db_version; var $db_version;
// For our error handling
var $xmlrpc = False;
var $soap = False;
function ifadd($add, $me) function ifadd($add, $me)
{ {
if('' != $add) if('' != $add)
@ -55,6 +59,16 @@
function db($query = '') function db($query = '')
{ {
$this->query($query); $this->query($query);
if (ereg('xmlrpc.php',$GLOBALS['PHP_SELF']))
{
$this->xmlrpc = True;
}
if (ereg('soap.php',$GLOBALS['PHP_SELF']))
{
$this->soap = True;
}
} }
function connect() function connect()
@ -193,7 +207,7 @@
/* printf("<br>Debug: query = %s<br>\n", $Query_String); */ /* printf("<br>Debug: query = %s<br>\n", $Query_String); */
$this->Query_ID = pg_Exec($this->Link_ID, $Query_String); $this->Query_ID = @pg_Exec($this->Link_ID, $Query_String);
$this->Row = 0; $this->Row = 0;
$this->Error = pg_ErrorMessage($this->Link_ID); $this->Error = pg_ErrorMessage($this->Link_ID);
@ -463,31 +477,75 @@
print $this->Record[$Name]; print $this->Record[$Name];
} }
function halt($msg, $line = "", $file = "") function halt($msg, $line = '', $file = '')
{ {
if($this->Halt_On_Error == "no") if ($this->Halt_On_Error == 'no')
{ {
return; return;
} }
/* Just in case there is a table currently locked */
$this->unlock();
printf("<b>Database error:</b> %s<br>\n", $msg); /* Just in case there is a table currently locked */
printf("<b>PostgreSQL Error</b>: %s (%s)<br>\n", $this->transaction_abort();
$this->Errno,
$this->Error);
if ($this->xmlrpc || $this->soap)
{
$s = sprintf("Database error: %s\n", $msg);
$s .= sprintf("PostgreSQL Error: %s\n\n (%s)\n\n",$this->Errno,$this->Error);
}
else
{
$s = sprintf("<b>Database error:</b> %s<br>\n", $msg);
$s .= sprintf("<b>PostgreSQL Error</b>: %s (%s)<br>\n",$this->Errno,$this->Error);
}
if ($file) if ($file)
{ {
printf("<br><b>File:</b> %s",$file); if ($this->xmlrpc || $this->soap)
{
$s .= sprintf("File: %s\n",$file);
}
else
{
$s .= sprintf("<br><b>File:</b> %s",$file);
}
} }
if ($line) if ($line)
{ {
printf("<br><b>Line:</b> %s",$line); if ($this->xmlrpc || $this->soap)
{
$s .= sprintf("Line: %s\n",$line);
}
else
{
$s .= sprintf("<br><b>Line:</b> %s",$line);
}
} }
if ($this->Halt_On_Error == 'yes') if ($this->Halt_On_Error == 'yes')
{ {
echo '<p><b>Session halted.</b>'; if (! $this->xmlrpc && ! $this->soap)
{
$s .= '<p><b>Session halted.</b>';
}
}
if ($this->xmlrpc || $this->soap)
{
$r = CreateObject('phpgwapi.xmlrpcresp',
CreateObject('phpgwapi.xmlrpcval'),
$GLOBALS['xmlrpcerr']['unknown_method'],
$s
);
$payload = "<?xml version=\"1.0\"?>\n" . $r->serialize();
Header("Content-type: text/xml\r\nContent-length: " . strlen($payload));
print $payload;
$GLOBALS['phpgw']->common->phpgw_exit(False);
}
else
{
echo $s;
$GLOBALS['phpgw']->common->phpgw_exit(True); $GLOBALS['phpgw']->common->phpgw_exit(True);
} }
} }