<?php
/**
 * This file is part of
 * pragmaMx - Web Content Management System.
 * Copyright by pragmaMx Developer Team - http://www.pragmamx.org
 *
 * pragmaMx 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 3 of the License, or
 * (at your option) any later version.
 *
 * $Revision: 1.14.2.4.2.9 $
 * $Author: tora60 $
 * $Date: 2009/04/26 10:36:54 $
 */

defined('mxMainFileLoaded') or die('access denied');

/**
 * 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('PMX_BASE_PATH'           , '/');
// define('MX_SESSION_NAME'          , 'mxSessid');
// define('MX_SAFECOOKIE_NAME_ADMIN' , 'mxAdmin');
// define('MX_SAFECOOKIE_NAME_USER'  , 'mxUser');
// 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');

/**
 * 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;

define('PMX_CONFIGFILE' , PMX_REAL_BASE_DIR . DS . 'config.php');

/* prefix um die Blöcke vom News-Modul zu identifizieren */
define('MX_NEWSBLOCK_PREFIX', 'block-vkp_News_');

/* 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');

/* der Fallback-Name für die erste Usergruppe */
define('MX_FIRSTGROUPNAME', 'User');

/* PHP-Version ermitteln, nicht veraendern !!!!! */
define('MX_PHP_VERSION', intval(str_replace('.', '', PHP_VERSION)));

/* falls keine Standardgruppe angegeben wurde... nicht veraendern !!!!! */
$default_group = (empty($default_group)) ? 1 : intval($default_group);

/* 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');

/**
 * nur wenn die mod.php aufgerufen wurde ist die Funktion aus der mx_modrewrite.php
 * hier bereits vorhanden, dann die uebergabeparameter aus der mod.php behandeln.
 */
if (function_exists('mxUndoModRewrite')) {
    mxUndoModRewrite();
}

/**
 * folgende Funktion ausführen :)
 */
mxdefinepath();

/**
 * in Funktion gekapselt, um die Variablen nicht in den globalen scope zu kopieren ;)
 */
function mxdefinepath()
{
    /* versch. Servervariablen prüfen und neu initialisieren */
    /* remote Adresse "cleanen" */
    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';
    }
    // wenn leer, einfach die IP verwenden
    $_SERVER['REMOTE_HOST'] = strip_tags((empty($_SERVER['REMOTE_HOST'])) ? $_SERVER['REMOTE_ADDR'] : $_SERVER['REMOTE_HOST']);
    // da kann ja sonst was kommen...
    $_SERVER['HTTP_USER_AGENT'] = strip_tags($_SERVER['HTTP_USER_AGENT']);
    // referer gibts nicht auf allen Servern
    $_SERVER['HTTP_REFERER'] = strip_tags((!isset($_SERVER['HTTP_REFERER'])) ? getenv('HTTP_REFERER') : $_SERVER['HTTP_REFERER']);
    // k.A. warum, aber wir hatten da schon Hosts mit slashes drumrum...
    $_SERVER['HTTP_HOST'] = strtolower(trim($_SERVER['HTTP_HOST'], ' /:;.'));

    /* Pfade ermitteln etc. */
    $info_request_uri = pathinfo((isset($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : '');
    $info_script_name = pathinfo($_SERVER['SCRIPT_NAME']);

    $scriptpath = str_replace(DS, '/', realpath(dirname($_SERVER['SCRIPT_FILENAME'])));

    $basepath = str_replace(DS, '/', PMX_REAL_BASE_DIR);
    // just the subfolder part between <installation_path> and the page
    $scriptpath = substr($scriptpath, strlen($basepath));
    $rootpath = str_replace(DS, '/', $info_script_name['dirname']);

    // we subtract the subfolder part from the end of <installation_path>, leaving us with just <installation_path> :)
    if ($scriptpath !== false) {
        $rootpath = str_replace('//', '/', substr($rootpath, 0, - strlen($scriptpath)) . '/');
        $scriptpath = trim($scriptpath, '/') . '/';
    } else {
        $rootpath = str_replace('//', '/', $rootpath . '/');
        $scriptpath = '';
    }

    /**
     * verschiedene absolute Pfade zu Systemordnern definieren. Alle hier
     * generierten Pfade muessen ohne Slash am Ende sein!
     */

    /* zur Abwaertskompatibilitaet */
    define('MX_DOC_ROOT', PMX_REAL_BASE_DIR); // deprecated!
    define('MX_CRYPTEDDIR', 'includes'); // deprecated!

    /* Ordner mit den Administrationsdateien */
    define('PMX_ADMIN_DIR', PMX_REAL_BASE_DIR . DS . 'admin');

    /* Ordner mit dynamischen Inhalten (Logdatein, Cache, etc.) */
    define('PMX_DYNADATA_DIR', PMX_REAL_BASE_DIR . DS . 'dynadata');

    /* Ordner mit den Systemdateien fuer die HTML-Ausgabe (view) */
    define('PMX_LAYOUT_DIR', PMX_REAL_BASE_DIR . DS . 'layout');

    /* Ordner mit den Modulen */
    define('PMX_MODULES_DIR', PMX_REAL_BASE_DIR . DS . 'modules');

    /* Ordner mit den System-Bloecken */
    define('PMX_BLOCKS_DIR', PMX_REAL_BASE_DIR . DS . 'blocks');

    /* Ordner mit den Themes */
    define('PMX_THEMES_DIR', PMX_REAL_BASE_DIR . DS . 'themes');

    /* Ordner mit den Bildchen */
    define('PMX_IMAGE_DIR', PMX_REAL_BASE_DIR . DS . 'images');

    /* Ordner mit den Systemsprachen */
    define('PMX_LANGUAGE_DIR', PMX_REAL_BASE_DIR . DS . 'language');

    /* Ordner mit den Themes */
    define('PMX_SETUP_DIR', PMX_REAL_BASE_DIR . DS . 'setup');

    /* Ordner mit Standard Javascripten */
    define('PMX_JAVASCRIPT_DIR', PMX_SYSTEM_DIR . DS . 'javascript');

    /**
     * verschiedene relative Pfade zu Systemordnern definieren. Alle hier
     * generierten Pfade muessen MIT Slash am Ende sein!
     */

    /* der wichtigste Pfad: zum mx-Root */
    define('PMX_BASE_PATH', $rootpath);

    /* Ordner mit den Systemdateien */
    define('PMX_SYSTEM_PATH', $rootpath . 'includes/');

    /* Ordner mit den Administrationsdateien */
    define('PMX_ADMIN_PATH', $rootpath . 'admin/');

    /* Ordner mit dynamischen Inhalten (Logdatein, Cache, etc.) */
    define('PMX_DYNADATA_PATH', $rootpath . 'dynadata/');

    /* Ordner mit den Systemdateien fuer die HTML-Ausgabe (view) */
    define('PMX_LAYOUT_PATH', $rootpath . 'layout/');

    /* Ordner mit den Modulen */
    define('PMX_MODULES_PATH', $rootpath . 'modules/');

    /* Ordner mit den Themes */
    define('PMX_THEMES_PATH', $rootpath . 'themes/');

    /* Ordner mit den Bildchen */
    define('PMX_IMAGE_PATH', $rootpath . 'images/');

    /* Ordner mit Standard Javascripten */
    define('PMX_JAVASCRIPT_PATH', PMX_SYSTEM_PATH . 'javascript/');

    /* das aktuelle Verzeichnis */
    define('PMX_CURRENTSCRIPT_PATH', $rootpath . $scriptpath);

    $bad_request_uri = @strpos($info_request_uri['basename'], $info_script_name['basename']) !== 0;

    /* REQUEST_URI kann auf manchen Servern nicht verfügbar sein, z.B. IIS */
    /* bzw. durch ungueltige Parameter oder mod_rewrite verfaelscht sein */
    if ($bad_request_uri || !isset($_SERVER['QUERY_STRING'])) {
        if (isset($_POST['name'])) {
            $_GET['name'] = $_POST['name'];
        }
        $querystring = '';
        if (count($_GET)) {
            foreach ($_GET as $key => $value) {
                $parts[$key] = "{$key}={$value}";
            }
            $querystring = implode('&', $parts);
        }
        $_SERVER['REQUEST_URI'] = $info_script_name['basename'] . '?' . $querystring;
        $_SERVER['QUERY_STRING'] = $querystring;
    }

    $server = $_SERVER['HTTP_HOST'];
    $proto = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off' || strtolower($_SERVER['HTTPS']) == 'on'))? 'https://' : 'http://';

    if (!defined('PMX_HOME_URL')) {
        // ohne slash, entspricht $nukeurl
        define('PMX_HOME_URL' , trim($proto . $server . PMX_BASE_PATH, ' .;/:'));
    }

    /* folgende nur noch zur Abwaertskompatibilitaet mit alten Modulen */
    define('MX_COOKIE_PATH', PMX_BASE_PATH); // Pfad, ausgehend vom document-root, ohne slashes
    define('MX_BASE_URL', PMX_HOME_URL . '/'); // z.B. für URL in mails
    define('MX_HOME_URL', PMX_HOME_URL); // ohne slash, entspricht $nukeurl
    define('MX_ROOT_DIR', '/' . trim(PMX_BASE_PATH, ' .;/:')); // Pfad, ausgehend vom document-root
    define('MX_BASE_URI', MX_ROOT_DIR); // Pfad, ausgehend vom document-root

    define('MX_REMOTE_ADDR', $_SERVER['REMOTE_ADDR']);
    define('MX_REMOTE_HOST', $_SERVER['REMOTE_HOST']);
    define('MX_USER_AGENT', $_SERVER['HTTP_USER_AGENT']);
}

?>
