2004-12-12 03:51:51 +00:00
< ? php
/*************************************************/
/* Main Include Library for Application Database */
/*************************************************/
2004-03-15 16:22:00 +00:00
2004-12-23 01:09:20 +00:00
// get modules
2005-01-15 06:02:01 +00:00
ini_set ( " memory_limit " , " 64M " );
2005-02-07 23:56:32 +00:00
require ( BASE . " include/config.php " );
require ( BASE . " include/util.php " );
require ( BASE . " include/user.php " );
require ( BASE . " include/session.php " );
require ( BASE . " include/menu.php " );
require ( BASE . " include/html.php " );
2004-12-29 18:43:30 +00:00
require ( BASE . " include/db.php " );
2004-03-15 16:22:00 +00:00
2006-06-26 00:44:44 +00:00
/* if magic quotes are enabled make sure the user disables them */
/* otherwise they will see all kinds of odd effects that are difficult */
/* to track down */
if ( get_magic_quotes_gpc ())
{
echo " <b>Please disable the magic quotes GPC PHP setting. See <a href= \" http://us2.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc \" > this page</a> for more information</b><br/><br/> " ;
echo " AppDB php code assumes magic quotes are disabled.<br/><br/> " ;
echo " Magic quotes are a bad idea for a few reasons.<br/><br/> " ;
echo " First is that php calls <b>addslashes()</b> on all \$ _POST, \$ _REQUEST and cookie variables " ;
echo " if magic quotes is enabled. " ;
echo " Ooooooh you say.<br/> " ;
echo " <i> \" Aren't magic quotes a convienent way to protect my php code from sql injection attacks? \" </i><br/><br/> " ;
echo " No! <b>addslashes()</b> isn't adequate. You should use <b>mysql_real_escape_string()</b> or some other function " ;
echo " that will handle multi-byte characters. See <a href= \" http://shiflett.org/archive/184 \" >this article</a> " ;
echo " for a way to exploit <b>addslash()</b>ed parameters.<br/><br/> " ;
echo " A second reason is that with magic quotes enabled, due to the use of <b>mysql_real_escape_string()</b> to " ;
echo " protect from sql injection attacks we'll end up with variables that have been addslash()ed and " ;
echo " <b>mysql_real_escape_string()</b>ed. So you end up having to call stripslashes() on EVERY variable. " ;
exit ;
}
2004-03-15 16:22:00 +00:00
// create arrays
$sidebar_func_list = array ();
$help_list = array ();
function apidb_help_add ( $desc , $id )
{
global $help_list ;
$help_list [] = array ( $desc , $id );
}
2004-12-23 01:09:20 +00:00
// return url with docroot prepended
2004-03-15 16:22:00 +00:00
function apidb_url ( $path )
{
2004-12-23 01:09:20 +00:00
return BASE . $path ;
2004-03-15 16:22:00 +00:00
}
2004-12-23 01:09:20 +00:00
// return FULL url with docroot prepended
2004-03-15 16:22:00 +00:00
function apidb_fullurl ( $path = " " )
{
2004-12-23 01:09:20 +00:00
return BASE . $path ;
2004-03-15 16:22:00 +00:00
}
2005-07-27 02:10:56 +00:00
function appdb_fullpath ( $path )
2004-03-15 16:22:00 +00:00
{
2005-07-27 02:10:56 +00:00
/* IE : we know this file is in / yyy / xxx / include , we want to get the / yyy / xxx
/* so we call dirname on this file path twice */
$fullpath = dirname ( dirname ( __FILE__ )) . " // " . $path ;
/* get rid of potential double slashes due to string concat */
return str_replace ( " // " , " / " , $fullpath );
2004-03-15 16:22:00 +00:00
}
/*
* output the common apidb header
*/
function apidb_header ( $title = 0 )
{
2005-01-30 23:12:48 +00:00
$realname = $_SESSION [ 'current' ] -> sRealname ;
2004-03-15 16:22:00 +00:00
// Set Page Title
$page_title = $title ;
if ( $title )
2004-12-12 03:51:51 +00:00
$title = " - $title " ;
2004-03-15 16:22:00 +00:00
// Display Header
2005-02-07 23:56:32 +00:00
include ( BASE . " include/header.php " );
2004-03-15 16:22:00 +00:00
// Display Sidebar
echo " <table width='100%' border=0 cellspacing=0 cellpadding=0> \n " ;
echo " <tr valign='top'> \n " ;
echo " <td width=150> \n " ;
apidb_sidebar ();
echo " </td> \n " ;
echo " <td width='100%'> \n " ;
2004-12-18 01:54:23 +00:00
echo html_frame_start ( $page_title , '100%' );
2004-03-15 16:22:00 +00:00
// Display Status Messages
dumpmsgbuffer ();
}
/*
* output the common apidb footer
*/
function apidb_footer ()
{
echo html_frame_end ();
//Close Sidebar and Content Well
2004-03-24 15:58:57 +00:00
echo " <br></td></tr></table> \n " ;
2004-03-15 16:22:00 +00:00
// Display Footer
2004-12-10 01:07:45 +00:00
if ( ! isset ( $header_disabled ))
2004-03-15 16:22:00 +00:00
include ( BASE . " include/ " . " footer.php " );
}
/*
* output the sidebar , calls all functions registered with apidb_sidebar_add
*/
function apidb_sidebar ()
{
global $sidebar_func_list ;
//TURN on GLOBAL ADMIN MENU
2005-01-30 23:12:48 +00:00
if ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
2004-03-15 16:22:00 +00:00
{
2005-02-07 23:56:32 +00:00
include ( BASE . " include/sidebar_admin.php " );
2004-12-12 03:51:51 +00:00
apidb_sidebar_add ( " global_admin_menu " );
2005-08-05 22:07:41 +00:00
} else if ( $_SESSION [ 'current' ] -> isMaintainer ()) /* if the user maintains anything, add their menus */
{
include ( BASE . " include/sidebar_maintainer_admin.php " );
apidb_sidebar_add ( " global_maintainer_admin_menu " );
2004-03-15 16:22:00 +00:00
}
// Login Menu
2005-02-07 23:56:32 +00:00
include ( BASE . " include/sidebar_login.php " );
2004-03-15 16:22:00 +00:00
apidb_sidebar_add ( " global_sidebar_login " );
// Main Menu
2005-02-07 23:56:32 +00:00
include ( BASE . " include/sidebar.php " );
2004-03-15 16:22:00 +00:00
apidb_sidebar_add ( " global_sidebar_menu " );
//LOOP and display menus
for ( $i = 0 ; $i < sizeof ( $sidebar_func_list ); $i ++ )
{
2004-12-12 03:51:51 +00:00
$func = $sidebar_func_list [ $i ];
$func ();
2004-03-15 16:22:00 +00:00
}
}
2004-12-12 03:51:51 +00:00
/**
* register a sidebar menu function
2004-03-15 16:22:00 +00:00
* the supplied function is called when the sidebar is built
*/
function apidb_sidebar_add ( $funcname )
{
global $sidebar_func_list ;
array_unshift ( $sidebar_func_list , $funcname );
}
function apidb_image ( $name )
{
2004-12-23 01:09:20 +00:00
return BASE . " images/ $name " ;
2004-03-15 16:22:00 +00:00
}
2004-12-12 03:51:51 +00:00
/**
2004-03-15 16:22:00 +00:00
* display an error page
*/
function errorpage ( $text = null , $message = null )
{
if ( ! $text ) {
2004-12-12 03:51:51 +00:00
$text = " You must be logged in to perform that operation. " ;
2004-03-15 16:22:00 +00:00
}
2005-07-10 02:22:21 +00:00
header ( " HTTP/1.0 404 Object not found or user is not logged in " );
2004-03-15 16:22:00 +00:00
apidb_header ( " Oops " );
echo " <div align=center><font color=red><b> $text </b></font></div> \n " ;
echo " <p> $message </p> \n " ;
apidb_footer ();
}
2004-12-12 03:51:51 +00:00
/**
2004-03-15 16:22:00 +00:00
* redirect to $url
*/
function redirect ( $url )
{
2005-02-04 02:49:09 +00:00
header ( " Location: " . $url );
exit ;
2004-03-15 16:22:00 +00:00
}
2004-12-12 03:51:51 +00:00
/**
2005-01-29 00:43:41 +00:00
* redirect back to referrer , or else to the main page
2004-03-15 16:22:00 +00:00
*/
function redirectref ( $url = null )
{
if ( ! $url )
2004-12-12 03:51:51 +00:00
$url = $_SERVER [ 'HTTP_REFERER' ];
2004-03-15 16:22:00 +00:00
if ( ! $url )
2004-12-12 03:51:51 +00:00
$url = apidb_fullurl ();
2004-03-15 16:22:00 +00:00
redirect ( $url );
}
2005-07-10 02:22:21 +00:00
/**
* format a date as required for HTTP by RFC 2068 sec 3.3 . 1
*/
function fHttpDate ( $iDate ) {
return gmdate ( " D, d M Y H:i:s " , $iDate ) . " GMT " ;
}
/**
* parse all the date formats required by HTTP 1.1 into PHP time values
*/
function pHttpDate ( $sDate ) {
$iDate = strtotime ( $sDate );
if ( $iDate != - 1 ) return $iDate ;
/* the RFC also requires asctime() format... */
$aTs = strptime ( $sDate , " %a %b %e %H:%M:%S %Y " );
$iDate = gmmktime ( $aTs [ 2 ], $aTs [ 1 ], $aTs [ 0 ], $aTs [ 4 ], $aTs [ 3 ], $aTs [ 5 ], 0 );
return $iDate ;
}
2004-03-15 16:22:00 +00:00
2004-12-12 03:51:51 +00:00
/**
2004-03-15 16:22:00 +00:00
* msgs will be displayed on the Next page view of the same user
*/
function addmsg ( $text , $color = " black " )
{
2005-01-15 06:02:01 +00:00
global $hAppdbLink ;
2006-06-27 19:16:27 +00:00
if ( ! is_resource ( $hAppdbLink ))
{
// The last argument makes sure we are really opening a new connection
$hAppdbLink = mysql_connect ( APPS_DBHOST , APPS_DBUSER , APPS_DBPASS , true );
mysql_select_db ( APPS_DB , $hAppdbLink );
}
2004-03-15 16:22:00 +00:00
if ( $color )
2004-12-12 03:51:51 +00:00
$text = " <font color=' $color '> $text </font> \n " ;
2004-03-15 16:22:00 +00:00
2006-06-27 19:16:27 +00:00
$sQuery = " INSERT INTO sessionMessages VALUES (null, null, '?', '?') " ;
if ( ! query_parameters ( $sQuery , session_id (), $text ))
2005-01-15 06:02:01 +00:00
{
2006-06-27 19:16:27 +00:00
echo " An error has occurred in addmsg() " ;
2005-01-15 06:02:01 +00:00
echo $text ;
}
2004-03-15 16:22:00 +00:00
}
2004-12-12 03:51:51 +00:00
/**
2004-03-15 16:22:00 +00:00
* output msg_buffer and clear it .
*/
function dumpmsgbuffer ()
{
2006-06-27 19:16:27 +00:00
$hResult = query_parameters ( " SELECT * FROM sessionMessages WHERE sessionId = '?' " , session_id ());
2006-06-21 01:04:12 +00:00
if ( ! $hResult )
2004-12-12 03:51:51 +00:00
return ;
2004-03-15 16:22:00 +00:00
2006-06-21 01:04:12 +00:00
while ( $oRow = mysql_fetch_object ( $hResult ))
2004-12-12 03:51:51 +00:00
{
echo html_frame_start ( " " , " 300 " , " " , 5 );
2006-06-21 01:04:12 +00:00
echo " <div align=center> $oRow->message </div> " ;
2004-12-12 03:51:51 +00:00
echo html_frame_end ( " " );
2004-03-15 16:22:00 +00:00
echo " <br> \n " ;
2004-12-12 03:51:51 +00:00
}
2004-03-15 16:22:00 +00:00
2006-06-27 19:16:27 +00:00
query_parameters ( " DELETE FROM sessionMessages WHERE sessionId = '?' " , session_id ());
2004-03-15 16:22:00 +00:00
}
2004-12-23 01:08:21 +00:00
2005-01-12 16:22:55 +00:00
/**
2005-01-30 23:12:48 +00:00
* Init Session ( stores user info in session )
2004-12-13 03:50:02 +00:00
*/
$session = new session ( " whq_appdb " );
$session -> register ( " current " );
2005-01-30 23:12:48 +00:00
if ( ! isset ( $_SESSION [ 'current' ])) $_SESSION [ 'current' ] = new User ();
2004-12-18 01:56:08 +00:00
// if we are debugging we need to see all errors
2005-01-30 23:12:48 +00:00
if ( $_SESSION [ 'current' ] -> showDebuggingInfos ()) error_reporting ( E_ALL ^ E_NOTICE );
2004-03-15 16:22:00 +00:00
?>