<?php
/************************************
 pragmaMx SMF-port
 Copyright (C) 2005 by A.Ellsel (Tora) - http://pragmaMx.org
 ***********************************
 This file 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/pragmamx4/SMF-port/html/modules/Forum/mx_SSI.php,v $
 $Revision: 1.7 $
 $Author: tora60 $
 $Date: 2006/01/03 08:23:28 $
************************************/

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

/// nur zur Entwicklung...
#error_reporting(E_ALL);

// We're going to want a few globals... these are all set later.
global $time_start, $maintenance, $msubject, $mmessage, $mbname, $language;
global $boardurl, $boarddir, $sourcedir, $webmaster_email, $cookiename;
global $db_server, $db_name, $db_user, $db_prefix, $db_persist, $db_error_send, $db_last_error;
global $db_connection, $modSettings, $context, $sc, $user_info, $topic, $board, $txt;
global $dbi;

if (isset($_GET['ssi_function']) && isset($ssi_function) && $_GET['ssi_function']!=$ssi_function) {
	return;
}

// Konstante definieren, mit der die pragmaMx-spezifischen Änderungen in den SMF-Datein wirksam werden
if (!defined('SMF_IN_PRAGMAMX'))
    define('SMF_IN_PRAGMAMX', 1);

// den Modulnamen ermitteln und zwischenspeichern
$mxsmf['module_name'] = basename(dirname(__file__));

// die pragmaMx spezifischen Einstellungen laden
require(dirname(__FILE__).'/config.php');

// die pragmaMx spezifischen Funktionen laden
if (!function_exists('mxSmfCleanRequest'))
	require_once(dirname(__FILE__) . '/mx_functions.php');

// versch. Konstanten für pragmaMx definieren
mxSmf_loadConstants();

// diesen Wert beim setzen der Berechtigung verwenden, anstatt PRAGMA_SMF_GROUP_GLOBALMOD
$mxsmf['group_admin_or_moderator'] = ($mxsmf['admingoups_as_admin']) ? PRAGMA_SMF_GROUP_ADMINISTR : PRAGMA_SMF_GROUP_GLOBALMOD;

// Get the forum's settings for database and file paths.
require($mxsmf['boarddir'] . '/Settings.php');

// die beiden möglichen Rückgabewerte initialisieren
$mx_ssi_content = '';
$mx_ssi_return = array();

// Den Level des aktuellen Ausgabepuffers zwischenspeichern
$temp_buff_count = ob_get_level();

// neuen Ausgabepuffer starten
ob_start();

if (!defined('SMF')) {
	// die Original SSI.php includen, hier werden dann evtl. die angegebenen Funktionen gestartet
	require_once($mxsmf['boarddir'].'/SSI.php');
} 

// die scripturl neu schreiben
$scripturl = $boardurl . '/index.php';

if (defined('SMF') && function_exists('reloadSettings')) {
	// wenn bereits included, zumindest die Einstellungen nachladen
	reloadSettings();
	// Load the user and their cookie, as well as their settings.
	loadUserSettings();
	// Load the current user's permissions....
	loadPermissions();
}

// Falls in der SSI.php Ausgaben erfolgten, diese zwischenspeichern und Ausgabepuffer beenden
$mx_ssi_content = ob_get_clean();

// in der SSI.php wird evtl. nochmal ein Ausgabepuffer gestartet, diesen hier leeren
if ($temp_buff_count < ob_get_level()) {
	ob_end_flush();
}
unset($temp_buff_count);

// Die Parameter für die SSI-Funktionen verarbeiten, wenn die Rückgabe ein 
// Array sein und keine direkte Ausgabe erfolgen soll
if (isset($ssi_function) && function_exists('ssi_' . $ssi_function) && (!$mx_ssi_content)) {
	// Ausgabe erneut puffern
	ob_start();
	// wenn Funktionsparameter übergeben wurden
	if (isset($ssi_function_arg)) {
		$args = ", '".implode("','", $ssi_function_arg)."'";
		$str = "\$mx_ssi_return = call_user_func('ssi_".$ssi_function."'".$args.");";
		eval($str);
		unset($str);
	} else {
		call_user_func('ssi_' . $ssi_function);
	}
	// Falls in der SSI.php Ausgaben erfolgten, diese zwischenspeichern und Ausgabepuffer beenden
	$mx_ssi_content = ob_get_clean();
}


// einen der beiden Rückgabewerte für pragmaMx aufbereiten und Ende...
if (count($mx_ssi_return)) {
	$mx_ssi_return  = mxSmfPrepareOutput_recursive($mx_ssi_return);
	$mx_ssi_content = '';
} else if ($mx_ssi_content) {
	$mx_ssi_content = mxSmfPrepareOutput($mx_ssi_content);
	$mx_ssi_return  = array();
}

?>