<?php
/**
 * pragmaMx  Content Management System
 * Copyright (c) 2005 pragmaMx Dev Team - http://pragmaMx.org
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * $Source: /home/www/dps3311/home/cvsroot/pragmamx/html/includes/mx_baseconfig.php,v $
 * $Revision: 1.8.4.10 $
 * $Author: tora60 $
 * $Date: 2006/12/12 20:05:46 $
 */
###############################################
function yaheader($uinfo=""){
        global $ThemeSel;
 
  $ThemeSel = mxGetTheme();
 require_once("themes/$ThemeSel/theme.php");
     include("includes/javascript.php");
     echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
     echo "<html>\n<head>\n";
    echo "<meta http-equiv=\"Page-Enter\" content=\"revealTrans(Duration=0.1,Transition=23)\">\n";
        echo "<meta http-equiv=\"expires\" content=\"0\">\n";
 echo "<meta http-equiv=\"pragma\" content=\"no-cache\">\n";
   echo "<title>".$GLOBALS['sitename']." :: ".$uinfo['uname']."'s Profil</title>\n";
      echo "<LINK REL=\"StyleSheet\" HREF=\"themes/$ThemeSel/style/style.css\" TYPE=\"text/css\">\n";
     if (@file_exists("themes/$ThemeSel/style/style.php")) {
         echo "<LINK REL=\"StyleSheet\" HREF=\"themes/$ThemeSel/style/style.php\" TYPE=\"text/css\">\n";
             }
 }
 
###############################################
function yabody(){ # schliesst <head> und oeffnet <body>
   global $bgcolor1, $textcolor1;
    echo "\n</head>\n<body text='$textcolor1' link='$textcolor1' style='background-color: $bgcolor1; color: $textcolor1; margin: 0;'>\n";
 }
 
###############################################
function yafooter() {
  echo "</body>\n</html>";
    }
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

/**
 * diese Zeile zur Modulentwicklung einkommentieren oder den Debug-Mode
 * einschalten, gleiches Resultat
 */
// error_reporting(E_ALL);
/**
 * Session-Konfiguration
 * DIESE WERTE BITTE NUR VERAENDERN, WENN SIE WISSEN WAS SIE TUN !!
 * Halten Sie vorher unbedingt Rücksprache mit dem Support-Team.
 * http://www.pragmamx.de/
 * weitere Informationen auch:
 * http://www.dclp-faq.de/ch/ch-version4_session.html
 * http://www.php.net/manual/de/ref.session.php
 */

/**
 * Folgendes wird vom System generiert, kann aber bei Bedarf frei geändert
 * werden verschiedene Sicherheitsfunktionen werden dadurch aber abgeschwaecht !
 * diese Optionen sind nützlich, wenn mehrere mx-Portale auf einer Domain laufen
 */
// define('MX_SESSION_NAME'          , 'mxSessid');
// define('MX_SAFECOOKIE_NAME_ADMIN' , 'mxAdmin');
// define('MX_SAFECOOKIE_NAME_USER'  , 'mxUser');
// define('MX_COOKIE_DOMAIN'         , 'your.domain.tld');
// define('MX_COOKIE_PATH'           , '/');
// define('MX_SESSION_DBTABLE'       , $prefix.'_sys_session');
// define('MX_SESSION_VARPREFIX'     , 'mxSV');
$vkpInactiveMins = (empty($vkpInactiveMins)) ? (int)$vkpInactiveMins : 5; # Standard 5 Minuten
define("MX_SETINACTIVE_MINS", $vkpInactiveMins * 60);
unset($vkpInactiveMins);

$vkpSessLifetime = (isset($vkpSessLifetime)) ? $vkpSessLifetime : 30;
define("MX_COOKIE_LIFETIME", (empty($vkpSessLifetime)) ? 0 : $vkpSessLifetime * 24 * 60 * 60);

$vkpSessLifetime = (empty($vkpSessLifetime)) ? 0.25 : $vkpSessLifetime;
define("MX_SESSION_LIFETIME", $vkpSessLifetime * 24 * 60 * 60); # Standard 6 Stunden
unset($vkpSessLifetime);

/**
 * die Sessionlifetime für nicht-User / nicht-Admins in Sekunden
 */
define("MX_SESSION_LIFETIME_NOUSER", '1440');

/**
 * der Session Garbage Collection Wert in %, muss immer grösser als 0 sein!!
 */
define("MX_SESSION_GARBAGE", 10);

/**
 * ENDE Session-Konfiguration
 */

/**
 * change this to receive email on each config.php change,
 * 1 = send email an hide checkbox, 0 = send if checkbox is checked
 */
$mxSendConfig = 0;

/**
 * prefix um die Blöcke vom News-Modul zu identifizieren
 */
define("MX_NEWSBLOCK_PREFIX", "block-vkp_News_");

/**
 * PHP-Version ermitteln, nicht verändern !!!!!
 */
define("MX_PHP_VERSION", intval(str_replace(".", "", PHP_VERSION)));

/**
 * falls keine Standardgruppe angegeben wurde... nicht verändern !!!!!
 */
$default_group = (empty($default_group)) ? 1 : intval($default_group);

/**
 * Definition für die Standard Avatar Folder
 */
define("MX_PATH_AVATAR", "images/forum/avatar");

/**
 * Definition für die User Avatar Folder
 */
define("MX_PATH_MEMBERAVATAR", "images/forum/member_avatar");

/**
 * beim Login Gross/Kleinschreibung im Usernamen beachten
 */
$mxLoginCaseSensiTive = true;

/**
 * HTML-Tags, die immer im Request ausgefiltert werden (mxSecureValue)
 */
$mxBadHtmlTags = array('script', 'frame', 'iframe', 'object', 'meta', 'applet', 'link', 'embed');

/**
 * Konfiguration der System-Zeitzone
 * verfuegbar ab php 5.1.x, weitere Info, siehe hier: 
 *      http://www.php.net/manual/de/function.date-default-timezone-set.php
 *      http://www.php.net/manual/de/timezones.php
 */
if (function_exists('date_default_timezone_set')) {
    date_default_timezone_set(@date_default_timezone_get());
} 
setlocale(LC_ALL, $locale);

/**
 * in Funktion gekapselt, um die Variablen nicht in den globalen scope zu kopieren ;)
 */
function mxdefinepath()
{ 
    // versch. Servervariablen prüfen
    // k.A. warum, aber wir hatten da schon Hosts mit slashes drumrum...
    $_SERVER['HTTP_HOST'] = strtolower(trim((!isset($_SERVER['HTTP_HOST'])) ? getenv('HTTP_HOST') : $_SERVER['HTTP_HOST'], ' /:;.'));
    $_SERVER['SCRIPT_NAME'] = (!isset($_SERVER['SCRIPT_NAME'])) ? getenv('SCRIPT_NAME') : $_SERVER['SCRIPT_NAME'];
    $_SERVER['PATH_INFO'] = (!isset($_SERVER['PATH_INFO'])) ? getenv('PATH_INFO') : $_SERVER['PATH_INFO'];
    $_SERVER['HTTP_USER_AGENT'] = (!isset($_SERVER['HTTP_USER_AGENT'])) ? getenv('HTTP_USER_AGENT') : $_SERVER['HTTP_USER_AGENT'];
    $_SERVER['REMOTE_ADDR'] = (!isset($_SERVER['REMOTE_ADDR'])) ? getenv('REMOTE_ADDR') : $_SERVER['REMOTE_ADDR'];
    $_SERVER['REMOTE_HOST'] = (!isset($_SERVER['REMOTE_HOST'])) ? getenv('REMOTE_HOST') : $_SERVER['REMOTE_HOST'];
    $_SERVER['REMOTE_HOST'] = (empty($_SERVER['REMOTE_HOST'])) ? $_SERVER['REMOTE_ADDR'] : $_SERVER['REMOTE_HOST'];
    $_SERVER['REQUEST_URI'] = (!isset($_SERVER['REQUEST_URI'])) ? getenv('REQUEST_URI') : $_SERVER['REQUEST_URI'];
    $_SERVER['HTTP_REFERER'] = (!isset($_SERVER['HTTP_REFERER'])) ? strip_tags(getenv('HTTP_REFERER')) : strip_tags($_SERVER['HTTP_REFERER']);
    /**
     * REQUEST_URI kann auf manchen Servern nicht verfügbar sein, z.B. IIS
     */
    if (empty($_SERVER['REQUEST_URI'])) {
        if (isset($_POST['name'])) {
            $_GET['name'] = $_POST['name'];
        } 
        if (count($_GET)) {
            foreach ($_GET as $key => $value) {
                $parts[$key] = $key . "=" . $value;
            } 
        } 
        $requri = (isset($parts)) ? $_SERVER['PHP_SELF'] . "?" . implode("&", $parts) : $_SERVER['PHP_SELF'];
        $_SERVER["REQUEST_URI"] = $requri;
    } 

    $server = $_SERVER['HTTP_HOST'];
    $proto = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off' || strtolower($_SERVER['HTTPS']) == 'on'))? 'https://' : 'http://';
    /**
     * den mx-Root anhand der URL ermitteln
     */ 
    // REQUEST_URI in Bestandteile zerlegen, wegen evtl. übergebenen URL's das Protokol und den Host mit reinnehmen
    $arr = @parse_url($proto . $server . $_SERVER["REQUEST_URI"]); 
    // sicherstellen, dass ein Pfad vorhanden ist
    $cookiepath = (empty($arr['path'])) ? '/' : $arr['path']; 
    // folgendes nur wenn auch ein Pfad vorhanden
    if ($cookiepath != '/') {
        // den enthaltenen Pfad in Einzelteile aufsplitten
        $arr = preg_split('#[\\\/]{1,}#', trim($cookiepath, '\\/')); 
        // den letzten Teil des Pfades auslesen
        $file = array_pop($arr); 
        // ermitteln, ob der letzte Teil ein Dateiname ist
        if (!preg_match('#([^/]\.php[345]*)|([^/]\.html?)$#i', $file)) {
            // wenn kein Dateiname, den letzten Teil des Pfades wieder an das Array anfügen (wird von array_pop entfernt)
            array_push($arr, $file);
        } 
        // den Pfad, mit slashes wieder zusammensetzen
        $cookiepath = '/' . implode('/', $arr) . '/';
    } 
    // evtl. doppelt vorhandene slashes vereinzeln, es bleibt auf jeden Fall am Anfang und Ende ein slash stehen
    $cookiepath = str_replace('//', '/', $cookiepath);

    if (!defined("MX_COOKIE_PATH")) define("MX_COOKIE_PATH" , $cookiepath);
    if (!defined("MX_COOKIE_DOMAIN")) define("MX_COOKIE_DOMAIN", preg_replace('#^www\.#i', '', $server));
    if (!defined("MX_BASE_URI")) define("MX_BASE_URI" , '/' . trim($cookiepath, ' .;/:')); // Pfad, ausgehend vom document-root
    if (!defined("MX_BASE_URL")) define("MX_BASE_URL" , $proto . $server . $cookiepath); // z.B. für URL in mails
    if (!defined("MX_HOME_URL")) define("MX_HOME_URL" , trim(MX_BASE_URL, ' .;/:')); // entspricht $nukeurl
    if (!defined("MX_ROOT_DIR")) define("MX_ROOT_DIR" , MX_BASE_URI); // komp. mit 2.2
} 

/**
 * Beschreibung
 */
function mxIniGet($cfgname)
{
    if (@is_callable('ini_get')) {
        return @ini_get($cfgname);
    } else {
        return @get_cfg_var($cfgname);
    } 
} 

/**
 * hier kann ein anderer OutputHandler zugefuegt werden, als Alternative zu ob_gzhandler
 */
function mxGetOutputHandler()
{
    global $mxUseGzipCompression;
    if (!empty($mxUseGzipCompression)) {
        $mxUseGzipCompression = 0;
        if ((extension_loaded("zlib")) && (!mxIniGet("zlib.output_compression")) && (mxIniGet('output_handler') != 'ob_gzhandler') && (!headers_sent())) {
            if (@strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
                $mxUseGzipCompression = 1;
                return 'ob_gzhandler';
            } 
        } 
    } 
    return "";
} 

/**
 * vorige Funktion ausführen :)
 */
mxdefinepath();

/**
 * versch. Konstanten
 */
if (!preg_match('#^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$#', $_SERVER['REMOTE_ADDR'])) {
    $_SERVER['REMOTE_ADDR'] = '0.0.0.0';
} 
define('MX_REMOTE_ADDR', $_SERVER['REMOTE_ADDR']);
define('MX_REMOTE_HOST', strip_tags($_SERVER['REMOTE_HOST']));
define('MX_USER_AGENT', strip_tags($_SERVER['HTTP_USER_AGENT']));
define('MX_CRYPTEDDIR', 'includes');

/**
 * zur Kompatibilitaet mit phpNuke Modulen, die Versionsnummer auf 5.6 setzen, überschreibt evtl die config.php
 */
$Version_Num = '5.6';

/**
 * Testausgaben:
 */
return;

print ('<pre>
MX_BASE_URI      = ' . MX_BASE_URI . '
MX_BASE_URL      = ' . MX_BASE_URL . '
MX_COOKIE_PATH   = ' . MX_COOKIE_PATH . '
MX_COOKIE_DOMAIN = ' . MX_COOKIE_DOMAIN . '
MX_HOME_URL      = ' . MX_HOME_URL . '
');
print_r($_SERVER);
print('</pre>');
