www.phplogcon.org <- * * * * Use this script at your own risk! * * ----------------------------------------------------------------- * * Common needed functions * * * * -> * * * * All directives are explained within this file * ********************************************************************* */ // --- Avoid directly accessing this file! if ( !defined('IN_PHPLOGCON') ) { die('Hacking attempt'); exit; } // --- // --- Basic Includes include($gl_root_path . 'include/constants_general.php'); include($gl_root_path . 'config.php'); include($gl_root_path . 'classes/class_template.php'); include($gl_root_path . 'include/functions_themes.php'); include($gl_root_path . 'include/functions_db.php'); include($gl_root_path . 'include/functions_config.php'); // --- // --- Define Basic vars $RUNMODE = RUNMODE_WEBSERVER; $DEBUGMODE = DEBUG_INFO; // --- Disable ARGV setting @webserver! ini_set( "register_argc_argv", "Off" ); // --- // Default language $LANG_EN = "en"; // Used for fallback $LANG = "en"; // Default language // Default Template vars $content['BUILDNUMBER'] = "0.1.101"; $content['TITLE'] = "PhpLogCon - Release " . $content['BUILDNUMBER']; // Title of the Page $content['BASEPATH'] = $gl_root_path; $content['EXTRA_METATAGS'] = ""; // --- function InitBasicPhpLogCon() { // Needed to make global global $CFG, $gl_root_path, $content; // Check RunMode first! CheckAndSetRunMode(); // Get and Set RunTime Informations InitRuntimeInformations(); // Set the default line sep SetLineBreakVar(); // Start the PHP Session StartPHPSession(); } function InitPhpLogConConfigFile() { // Needed to make global global $CFG, $gl_root_path, $content; if ( file_exists($gl_root_path . 'config.php') && GetFileLength($gl_root_path . 'config.php') > 0 ) { // Include the main config include_once($gl_root_path . 'config.php'); // Easier DB Access define('DB_CONFIG', $CFG['TBPref'] . "config"); // For ShowPageRenderStats if ( $CFG['ShowPageRenderStats'] == 1 ) { $content['ShowPageRenderStats'] = "true"; InitPageRenderStats(); } } else { // Check for installscript! if ( file_exists($content['BASEPATH'] . "install.php") ) $strinstallmsg = '

' . '
Click here to Install PhpLogCon!

' . 'See the Installation Guides for more Details!
' . 'English Installation Guide | ' . 'German Installation Guide

' . 'Also take a look to the Readme for some basics around PhpLogCon!
' . '
'; else $strinstallmsg = ""; DieWithErrorMsg( 'Error, main configuration file is missing!' . $strinstallmsg ); } } function GetFileLength($szFileName) { if ( is_file($szFileName) ) return filesize($szFileName); else return 0; } function InitPhpLogCon() { // Needed to make global global $CFG, $gl_root_path, $content; // Init Basics which do not need a database InitBasicPhpLogCon(); // Will init the config file! InitPhpLogConConfigFile(); // Establish DB Connection if ( $CFG['UseDB'] ) DB_Connect(); // Now load the Page configuration values InitConfigurationValues(); // Now Create Themes List because we haven't the config before! CreateThemesList(); // Create Language List CreateLanguageList(); // --- Enable PHP Debug Mode InitPhpDebugMode(); // --- } function InitPhpDebugMode() { global $content; // --- Set Global DEBUG Level! // HARDCODED !!! $content['gen_phpdebug'] = "yes"; if ( $content['gen_phpdebug'] == "yes" ) ini_set( "error_reporting", E_ALL ); // ALL PHP MESSAGES! else ini_set( "error_reporting", E_ERROR ); // ONLY PHP ERROR'S! // --- } function CheckAndSetRunMode() { global $RUNMODE; // Set to command line mode if argv is set! if ( !isset($_SERVER["GATEWAY_INTERFACE"]) ) $RUNMODE = RUNMODE_COMMANDLINE; } function InitRuntimeInformations() { global $content; // TODO| maybe not needed! } function CreateDebugModes() { global $content; $content['DBGMODES'][0]['DisplayName'] = STR_DEBUG_ULTRADEBUG; if ( $content['parser_debugmode'] == $content['DBGMODES'][0]['DisplayName'] ) { $content['DBGMODES'][0]['selected'] = "selected"; } else { $content['DBGMODES'][0]['selected'] = ""; } $content['DBGMODES'][1]['DisplayName'] = STR_DEBUG_DEBUG; if ( $content['parser_debugmode'] == $content['DBGMODES'][1]['DisplayName'] ) { $content['DBGMODES'][1]['selected'] = "selected"; } else { $content['DBGMODES'][1]['selected'] = ""; } $content['DBGMODES'][2]['DisplayName'] = STR_DEBUG_INFO; if ( $content['parser_debugmode'] == $content['DBGMODES'][2]['DisplayName'] ) { $content['DBGMODES'][2]['selected'] = "selected"; } else { $content['DBGMODES'][2]['selected'] = ""; } $content['DBGMODES'][3]['DisplayName'] = STR_DEBUG_WARN; if ( $content['parser_debugmode'] == $content['DBGMODES'][3]['DisplayName'] ) { $content['DBGMODES'][3]['selected'] = "selected"; } else { $content['DBGMODES'][3]['selected'] = ""; } $content['DBGMODES'][4]['DisplayName'] = STR_DEBUG_ERROR; if ( $content['parser_debugmode'] == $content['DBGMODES'][4]['DisplayName'] ) { $content['DBGMODES'][4]['selected'] = "selected"; } else { $content['DBGMODES'][4]['selected'] = ""; } } function InitFrontEndVariables() { global $content; $content['MENU_FOLDER_OPEN'] = "image=" . $content['BASEPATH'] . "images/icons/folder_closed.png"; $content['MENU_FOLDER_CLOSED'] = "overimage=" . $content['BASEPATH'] . "images/icons/folder.png"; $content['MENU_HOMEPAGE'] = "image=" . $content['BASEPATH'] . "images/icons/home.png"; $content['MENU_LINK'] = "image=" . $content['BASEPATH'] . "images/icons/link.png"; $content['MENU_PREFERENCES'] = "image=" . $content['BASEPATH'] . "images/icons/preferences.png"; $content['MENU_ADMINENTRY'] = "image=" . $content['BASEPATH'] . "images/icons/star_blue.png"; $content['MENU_ADMINLOGOFF'] = "image=" . $content['BASEPATH'] . "images/icons/exit.png"; $content['MENU_ADMINUSERS'] = "image=" . $content['BASEPATH'] . "images/icons/businessmen.png"; $content['MENU_SEARCH'] = "image=" . $content['BASEPATH'] . "images/icons/view.png"; $content['MENU_SELECTION_DISABLED'] = "image=" . $content['BASEPATH'] . "images/icons/selection.png"; $content['MENU_SELECTION_ENABLED'] = "image=" . $content['BASEPATH'] . "images/icons/selection_delete.png"; } // Lang Helper for Strings with ONE variable function GetAndReplaceLangStr( $strlang, $param1 = "", $param2 = "", $param3 = "", $param4 = "", $param5 = "" ) { $strfinal = str_replace ( "%1", $param1, $strlang ); if ( strlen($param2) > 0 ) $strfinal = str_replace ( "%1", $param2, $strfinal ); if ( strlen($param3) > 0 ) $strfinal = str_replace ( "%1", $param3, $strfinal ); if ( strlen($param4) > 0 ) $strfinal = str_replace ( "%1", $param4, $strfinal ); if ( strlen($param5) > 0 ) $strfinal = str_replace ( "%1", $param5, $strfinal ); // And return return $strfinal; } function InitConfigurationValues() { global $content, $LANG; $result = DB_Query("SELECT * FROM " . STATS_CONFIG); $rows = DB_GetAllRows($result, true, true); // If Database is enabled, try to read from database! if ( $CFG['UseDB'] ) { if ( isset($rows ) ) { for($i = 0; $i < count($rows); $i++) $content[ $rows[$i]['name'] ] = $rows[$i]['value']; } // General defaults // --- Language Handling if ( !isset($content['gen_lang']) ) { $content['gen_lang'] = "en"; } if ( VerifyLanguage($content['gen_lang']) ) $LANG = $content['gen_lang']; else { // Fallback! $LANG = "en"; $content['gen_lang'] = "en"; } // --- PHP Debug Mode if ( !isset($content['gen_phpdebug']) ) { $content['gen_phpdebug'] = "no"; } // --- // Database Version Checker! if ( $content['database_internalversion'] > $content['database_installedversion'] ) { // Database is out of date, we need to upgrade $content['database_forcedatabaseupdate'] = "yes"; } } // --- Set Defaults... // Language Handling if ( isset($_SESSION['CUSTOM_LANG']) && VerifyLanguage($_SESSION['CUSTOM_LANG']) ) { $content['user_lang'] = $_SESSION['CUSTOM_LANG']; $LANG = $content['user_lang']; } else if ( isset($content['gen_lang']) ) $content['user_lang'] = $content['gen_lang']; else // Failsave! $content['user_lang'] = "en"; // Theme Handling if ( !isset($content['web_theme']) ) { $content['web_theme'] = "default"; } if ( isset($_SESSION['CUSTOM_THEME']) && VerifyTheme($_SESSION['CUSTOM_THEME']) ) $content['user_theme'] = $_SESSION['CUSTOM_THEME']; else $content['user_theme'] = $content['web_theme']; // --- // Init other things which are needed InitFrontEndVariables(); } function SetDebugModeFromString( $facility ) { global $DEBUGMODE; switch ( $facility ) { case STR_DEBUG_ULTRADEBUG: $DEBUGMODE = DEBUG_ULTRADEBUG; break; case STR_DEBUG_DEBUG: $DEBUGMODE = DEBUG_DEBUG; break; case STR_DEBUG_INFO: $DEBUGMODE = DEBUG_INFO; break; case STR_DEBUG_WARN: $DEBUGMODE = DEBUG_WARN; break; case STR_DEBUG_ERROR: $DEBUGMODE = DEBUG_ERROR; break; } } function InitPageRenderStats() { global $gl_starttime, $querycount; $gl_starttime = microtime_float(); $querycount = 0; } function FinishPageRenderStats( &$mycontent) { global $gl_starttime, $querycount; $endtime = microtime_float(); $mycontent['PAGERENDERTIME'] = number_format($endtime - $gl_starttime, 4, '.', ''); $mycontent['TOTALQUERIES'] = $querycount; } function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function SetLineBreakVar() { // Used for some functions global $RUNMODE, $linesep; if ( $RUNMODE == RUNMODE_COMMANDLINE ) $linesep = "\r\n"; else if ( $RUNMODE == RUNMODE_WEBSERVER ) $linesep = "
"; } function CheckUrlOrIP($ip) { $long = ip2long($ip); if ( $long == -1 ) return false; else return true; } function DieWithErrorMsg( $szerrmsg ) { global $RUNMODE, $content; if ( $RUNMODE == RUNMODE_COMMANDLINE ) { print("\n\n\t\tCritical Error occured\n"); print("\t\tErrordetails:\t" . $szerrmsg . "\n"); print("\t\tTerminating now!\n"); } else if ( $RUNMODE == RUNMODE_WEBSERVER ) { print(""); print("

Critical Error occured


"); print("Errordetails:
" . $szerrmsg); print("
"); } exit; } function DieWithFriendlyErrorMsg( $szerrmsg ) { //TODO: Make with template print(""); print("

Error occured


"); print("Errordetails:
" . $szerrmsg); exit; } function InitTemplateParser() { global $page, $gl_root_path; // ----------------------------------------------- // Create Template Object and set some variables for the templates // ----------------------------------------------- $page = new Template(); $page -> set_path ( $gl_root_path . "templates/" ); } function VerifyLanguage( $mylang ) { global $gl_root_path; if ( is_dir( $gl_root_path . 'lang/' . $mylang ) ) return true; else return false; } function IncludeLanguageFile( $langfile ) { global $LANG, $LANG_EN; if ( file_exists( $langfile ) ) include( $langfile ); else { $langfile = str_replace( $LANG, $LANG_EN, $langfile ); include( $langfile ); } } function RedirectPage( $newpage ) { header("Location: $newpage"); exit; } function RedirectResult( $szMsg, $newpage ) { header("Location: result.php?msg=" . urlencode($szMsg) . "&redir=" . urlencode($newpage)); exit; } // --- BEGIN Usermanagement Function --- function StartPHPSession() { global $RUNMODE; if ( $RUNMODE == RUNMODE_WEBSERVER ) { // This will start the session if (session_id() == "") session_start(); if ( !isset($_SESSION['SESSION_STARTED']) ) $_SESSION['SESSION_STARTED'] = "true"; } } function CheckForUserLogin( $isloginpage, $isUpgradePage = false ) { global $content; if ( isset($_SESSION['SESSION_LOGGEDIN']) ) { if ( !$_SESSION['SESSION_LOGGEDIN'] ) RedirectToUserLogin(); else { $content['SESSION_LOGGEDIN'] = "true"; $content['SESSION_USERNAME'] = $_SESSION['SESSION_USERNAME']; } // New, Check for database Version and may redirect to updatepage! if ( isset($content['database_forcedatabaseupdate']) && $content['database_forcedatabaseupdate'] == "yes" && $isUpgradePage == false ) RedirectToDatabaseUpgrade(); } else { if ( $isloginpage == false ) RedirectToUserLogin(); } } function CreateUserName( $username, $password, $access_level ) { $md5pass = md5($password); $result = DB_Query("SELECT username FROM " . STATS_USERS . " WHERE username = '" . $username . "'"); $rows = DB_GetAllRows($result, true); if ( isset($rows) ) { DieWithFriendlyErrorMsg( "User $username already exists!" ); // User not created! return false; } else { // Create User $result = DB_Query("INSERT INTO " . STATS_USERS . " (username, password, access_level) VALUES ('$username', '$md5pass', $access_level)"); DB_FreeQuery($result); // Success return true; } } function CheckUserLogin( $username, $password ) { global $content, $CFG; // TODO: SessionTime and AccessLevel check $md5pass = md5($password); $sqlselect = "SELECT access_level FROM " . STATS_USERS . " WHERE username = '" . $username . "' and password = '" . $md5pass . "'"; $result = DB_Query($sqlselect); $rows = DB_GetAllRows($result, true); if ( isset($rows) ) { $_SESSION['SESSION_LOGGEDIN'] = true; $_SESSION['SESSION_USERNAME'] = $username; $_SESSION['SESSION_ACCESSLEVEL'] = $rows[0]['access_level']; $content['SESSION_LOGGEDIN'] = "true"; $content['SESSION_USERNAME'] = $username; // Success ! return true; } else { if ( $CFG['ShowDebugMsg'] == 1 ) DieWithFriendlyErrorMsg( "Debug Error: Could not login user '" . $username . "'

Sessionarray
" . var_export($_SESSION, true) . "

SQL Statement: " . $sqlselect ); // Default return false return false; } } function DoLogOff() { global $content; unset( $_SESSION['SESSION_LOGGEDIN'] ); unset( $_SESSION['SESSION_USERNAME'] ); unset( $_SESSION['SESSION_ACCESSLEVEL'] ); // Redir to Index Page RedirectPage( "index.php"); } function RedirectToUserLogin() { // TODO Referer header("Location: login.php?referer=" . $_SERVER['PHP_SELF']); exit; } function RedirectToDatabaseUpgrade() { // TODO Referer header("Location: upgrade.php"); // ?referer=" . $_SERVER['PHP_SELF']); exit; } // --- END Usermanagement Function --- ?>