2010-10-24 03:12:37 +04:00
< ? php
2016-09-04 04:19:48 +03:00
require_once ( 'init.php' );
require_once ( 'ParameterParser.php' );
2016-07-31 22:04:33 +03:00
/***************************************************************************
*
* Error handling functions
*
*/
2016-09-04 04:19:48 +03:00
function chksql ( $oSql , $sMsg = " Database request failed " )
{
if ( ! PEAR :: isError ( $oSql )) return $oSql ;
header ( 'HTTP/1.0 500 Internal Server Error' );
header ( 'Content-type: text/html; charset=utf-8' );
$sSqlError = $oSql -> getMessage ();
echo <<< INTERNALFAIL
< html >
< head >< title > Internal Server Error </ title ></ head >
< body >
< h1 > Internal Server Error </ h1 >
< p > Nominatim has encountered an internal error while accessing the database .
This may happen because the database is broken or because of a bug in
the software . If you think it is a bug , feel free to report
it over on < a href = " https://github.com/twain47/Nominatim/issues " >
Github </ a >. Please include the URL that caused the problem and the
complete error details below .</ p >
< p >< b > Message :</ b > $sMsg </ p >
< p >< b > SQL Error :</ b > $sSqlError </ p >
< p >< b > Details :</ b > < pre >
2016-07-31 22:04:33 +03:00
INTERNALFAIL ;
2016-09-08 04:16:22 +03:00
if ( CONST_Debug ) {
2016-09-04 04:19:48 +03:00
var_dump ( $oSql );
2016-09-08 04:16:22 +03:00
} else {
2016-09-04 04:19:48 +03:00
echo " <pre> \n " . $oSql -> getUserInfo () . " </pre> " ;
}
echo " </pre></p></body></html> " ;
exit ;
}
function failInternalError ( $sError , $sSQL = false , $vDumpVar = false )
{
header ( 'HTTP/1.0 500 Internal Server Error' );
header ( 'Content-type: text/html; charset=utf-8' );
echo " <html><body><h1>Internal Server Error</h1> " ;
echo '<p>Nominatim has encountered an internal error while processing your request. This is most likely because of a bug in the software.</p>' ;
echo " <p><b>Details:</b> " . $sError , " </p> " ;
echo '<p>Feel free to file an issue on <a href="https://github.com/twain47/Nominatim/issues">Github</a>. Please include the error message above and the URL you used.</p>' ;
2016-09-08 04:16:22 +03:00
if ( CONST_Debug ) {
2016-09-04 04:19:48 +03:00
echo " <hr><h2>Debugging Information</h2><br> " ;
2016-09-08 04:16:22 +03:00
if ( $sSQL ) {
2016-09-04 04:19:48 +03:00
echo " <h3>SQL query</h3><code> " . $sSQL . " </code> " ;
}
2016-09-08 04:16:22 +03:00
if ( $vDumpVar ) {
2016-09-04 04:19:48 +03:00
echo " <h3>Result</h3> <code> " ;
var_dump ( $vDumpVar );
echo " </code> " ;
}
}
echo " \n </body></html> \n " ;
exit ;
}
function userError ( $sError )
{
header ( 'HTTP/1.0 400 Bad Request' );
header ( 'Content-type: text/html; charset=utf-8' );
echo " <html><body><h1>Bad Request</h1> " ;
echo '<p>Nominatim has encountered an error with your request.</p>' ;
echo " <p><b>Details:</b> " . $sError . " </p> " ;
echo '<p>If you feel this error is incorrect feel file an issue on <a href="https://github.com/twain47/Nominatim/issues">Github</a>. Please include the error message above and the URL you used.</p>' ;
echo " \n </body></html> \n " ;
exit ;
}
2016-07-31 22:04:33 +03:00
/***************************************************************************
* HTTP Reply header setup
*/
2010-10-24 03:12:37 +04:00
2016-09-08 04:16:22 +03:00
if ( CONST_NoAccessControl ) {
2016-09-04 04:19:48 +03:00
header ( " Access-Control-Allow-Origin: * " );
header ( " Access-Control-Allow-Methods: OPTIONS,GET " );
2016-09-08 04:16:22 +03:00
if ( ! empty ( $_SERVER [ 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' ])) {
2016-09-04 04:19:48 +03:00
header ( " Access-Control-Allow-Headers: " . $_SERVER [ 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' ]);
}
}
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'OPTIONS' ) exit ;
if ( CONST_Debug ) header ( 'Content-type: text/html; charset=utf-8' );
2012-12-10 05:36:33 +04:00