Files
FHC-Core/cis/private/kommune/index.php
T
Gerald Simane 8e9f648519
2009-01-19 07:13:55 +00:00

569 lines
22 KiB
PHP

<?php
/* Copyright (C) 2008 Technikum-Wien
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
// ---------------- Konstante
// ---------------- Datenbank - Schema der Kommune, Wettbewerbe
// Max. Wettbewerbe je Zeile am Starttemplate
if (!defined('constMaxWettbwerbeZeile')) define('constMaxWettbwerbeZeile',5 );
// Pflichteingabefelder Defaultwert
if (!defined('constEingabeFehlt')) define('constEingabeFehlt','Eingabe !' );
// HREF Parameter fuer die Include Auswahl
if (!defined('constKommuneParmSetWork')) define('constKommuneParmSetWork','userSel' );
// ------ Anzeige - Display Include HTML Datenerzeugen
// Auswahl Kommunen Template :: Anzeigenauswahl :: Definition mit constKommuneParmSetWork
if (!defined('constKommuneAnzeigeDEFAULT')) define('constKommuneAnzeigeDEFAULT','kommune_template_start');
// Anzeige Wettbewerb Team(s) in Pyramidenform
if (!defined('constKommuneAnzeigeWETTBEWERBTEAM')) define('constKommuneAnzeigeWETTBEWERBTEAM','kommune_template_pyramiden');
// Neuanlage Teamspieler zu einem Wettbewerb
if (!defined('constKommuneWartungUID')) define('constKommuneWartungUID','kommune_wartung_team' );
// Neuanlage Teamspieler zu einem Wettbewerb
if (!defined('constKommuneEinladenTEAM')) define('constKommuneEinladenTEAM','kommune_einladen_team' );
// Bildausgabe lt.Datenbank
if (!defined('constKommuneDisplayIMAGE')) define('constKommuneDisplayIMAGE','kommune_hex_img' );
// Statistik - Bestenliste - Sonstiges
if (!defined('constKommuneSTATISTIK')) define('constKommuneSTATISTIK','kommune_template_statistik' );
// XML User Liste
if (!defined('constKommuneUserXML')) define('constKommuneUserXML','kommune_user_xml' );
// ---------------- CIS Include Dateien einbinden
require_once('../../config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/globals.inc.php');
// ---------------- Datenbank-Verbindung
# include_once('../../../include/postgre_sql.class.php');
include_once('../../../include/komune_wettbewerb.class.php');
include_once('../../../include/komune_wettbewerbteam.class.php');
include_once('../../../include/komune_wettbewerbeinladungen.class.php');
include_once('../../../include/person.class.php');
include_once('../../../include/benutzer.class.php');
// Kommunen Allg.Funktionen
include_once('kommune_funktionen.inc.php');
// ---------------- Anzeige/Ausgabe Variable Initialisieren
// Initialisieren Anzeige-Variable
$showHTML='';
// Kommunen - Wettbewerb - Datenobjekt -----------------------------------------------------------------------------------------------------------
// Datenobjekt - Alle Daten je Parameter werden gesammelt fuer die neachste Funktionn
$oWettbewerb= new stdClass;
// DB Open
$oWettbewerb->sqlCONN=@pg_pconnect(CONN_STRING) or die('<div style="text-align:center;"><br />Keine Wettbewerbe zurzeit Online.<br />Bitte etwas Geduld.<br />Danke</div>');// Datenbankverbindung
// Parameter DB Schema
$oWettbewerb->sqlSCHEMA='kommune';
# $oWettbewerb->sqlSCHEMA='public';
// Parameter ClientEncode
$oWettbewerb->clientENCODE=(defined('CONN_CLIENT_ENCODING')?CONN_CLIENT_ENCODING:'LATIN9');
$oWettbewerb->clientENCODE = (isset($_REQUEST['client_encode']) ? $_REQUEST['client_encode']:$oWettbewerb->clientENCODE);
// Parameter Applikation - Template Auswahl
$oWettbewerb->workSITE = (isset($_REQUEST[constKommuneParmSetWork]) ? $_REQUEST[constKommuneParmSetWork] : constKommuneAnzeigeDEFAULT);
$oWettbewerb->workSITE = (!empty($oWettbewerb->workSITE) ? trim($oWettbewerb->workSITE):constKommuneAnzeigeDEFAULT);
// AktiverAnwender-----------------------------------------------------------------------------------------------------------
$userUID=(isset($_REQUEST['userUID']) ? $_REQUEST['userUID'] :get_uid() );
# $userUID='pam';
# $userUID='oesi';
# $userUID='ruhan';
# $userUID='kindlm';
$oWettbewerb->userUID=$userUID;
$pers=kommune_funk_benutzerperson($oWettbewerb->userUID,$oWettbewerb);
if (isset($pers->nachname)) $oWettbewerb->PersonenBenutzer[$oWettbewerb->userUID]=$pers;
// Teams -------------------------------------------------------------------------------------------------------------------
// Parameter Team (zum Wettbewerb)
$oWettbewerb->team_kurzbz=(isset($_REQUEST['team_kurzbz']) ? $_REQUEST['team_kurzbz']:'');
$oWettbewerb->team_kurzbz=(isset($_REQUEST['team_forderer']) ? $_REQUEST['team_forderer']:$oWettbewerb->team_kurzbz);
$oWettbewerb->team_kurzbz=trim($oWettbewerb->team_kurzbz);
// Spieler/Team Wartung
$oWettbewerb->team_kurzbz_old=(isset($_REQUEST['team_kurzbz_old']) ? $_REQUEST['team_kurzbz_old']:'');;
$oWettbewerb->team_kurzbz_old=trim($oWettbewerb->team_kurzbz_old);
// Einladung an Spieler/Team
$oWettbewerb->team_kurzbz_einladung=(isset($_REQUEST['einladen_team_kurzbz']) ? $_REQUEST['einladen_team_kurzbz']:'');
$oWettbewerb->team_kurzbz_einladung=(isset($_REQUEST['team_gefordert']) ? $_REQUEST['team_gefordert']:$oWettbewerb->team_kurzbz_einladung);
$oWettbewerb->team_kurzbz_einladung=(isset($_REQUEST['team_kurzbz_einladen']) ? $_REQUEST['team_kurzbz_einladen']:$oWettbewerb->team_kurzbz_einladung);
$oWettbewerb->team_kurzbz_einladung=trim($oWettbewerb->team_kurzbz_einladung);
// -------------------------------------------------------------------------------------------------------------------------
// Wettbewerb ---------------------------------------------------------------------------------------------------------------
// Parameter Wettbewerb - Type
$oWettbewerb->wbtyp_kurzbz=(isset($_REQUEST['wbtyp_kurzbz']) ? $_REQUEST['wbtyp_kurzbz']:'');
$oWettbewerb->wbtyp_kurzbz=trim($oWettbewerb->wbtyp_kurzbz);
// Parameter Wettbewerb
$oWettbewerb->wettbewerb_kurzbz=(isset($_REQUEST['wettbewerb_kurzbz']) ? $_REQUEST['wettbewerb_kurzbz']:'');
$oWettbewerb->wettbewerb_kurzbz=trim($oWettbewerb->wettbewerb_kurzbz);
// -------------------------------------------------------------------------------------------------------------------------
$oWettbewerb->WettbewerbTyp=array(); // Alle Daten des Wettbewerb
$oWettbewerb->Wettbewerb=array(); // Alle Daten des Wettbewerb
$oWettbewerb->EigeneWettbewerbe=array(); // Eigene Wettbewerbe auf UID Basis
//kommune_funk_teams
$oWettbewerb->TeamGesamt=array(); // Alle Teams in diesem Wettbewerb (=wettbewerb_kurzbz), oder Alle wenn wettbewerb_kurzbz leer ist
//kommune_funk_anwenderteams
$oWettbewerb->TeamAnwender=array(); // Alle Wettbewerbe zum angemeldeten Anwende (Alle Teams der uid)
// ----------- Team Key => team_kurzbz
//kommune_funk_teambenutzer 1x Datensatz je team_kurzbz
$oWettbewerb->Team=array(); // Alle Teams (ein DatenArray je Team Key => team_kurzbz) Achtung! nur ein Benutzer im Array (verwende TeamBenutzer) !
//kommune_funk_teambenutzer Alle Datensaetze je team_kurzbz
$oWettbewerb->TeamBenutzer=array(); // Alle Teammitglieder (ein Datensatz je Team Key => team_kurzbz)
// Match -------------------------------------------------------------------------------------------------------------------
$oWettbewerb->match_id=(isset($_REQUEST['match_id']) ? $_REQUEST['match_id']:'');
$oWettbewerb->match_id=trim($oWettbewerb->match_id);
$oWettbewerb->Einladung=array(); // Alle Daten zur Einladung
$oWettbewerb->EinladungVonTeam=array(); // Alle Teaminformation des Einladenten Teams
$oWettbewerb->EinladungAnTeam=array(); // Alle Teaminformation des Eingeladenen Teams
$oWettbewerb->Forderungen=array(); // Forderungen an Andere Teams
$oWettbewerb->Spiele=array(); // Forderungen
$oWettbewerb->Error=array(); // Fehlermeldungen
// Benutzer Personen Gen. -------------------------------------------------------------------------------------------------------------------
$oWettbewerb->PersonenBenutzer=array(); // Personendaten je Spieler ( Key => userid )
// ---------------- Kommunen Standart Include Dateien einbinden
// Anzeige Templates mittels Include Laden
if (trim($oWettbewerb->workSITE)!=constKommuneAnzeigeDEFAULT)
{
$includeFILE=strtolower($oWettbewerb->workSITE.".inc.php");
if (file_exists($includeFILE))// Check ob das Verarbeitungs-Include File vorhanden ist
include_once($includeFILE);
}
// Fuer die Bildfunktion werden keine Datenbenoetigt, und nach Verarbeitung beenden
if (trim($oWettbewerb->workSITE)==constKommuneDisplayIMAGE)
{
createIMGfromHEX(&$oWettbewerb);
exit;
}
// Fuer die Bildfunktion werden keine Datenbenoetigt, und nach Verarbeitung beenden
if (trim($oWettbewerb->workSITE)==constKommuneUserXML)
{
if (empty($userUID))
exit('<noInfo>Keine Daten </noInfo>');
exit( (isset($pers->nachname)?$pers->nachname:"$userUID falsch!"));
}
#exit($_SERVER["HTTP_REFERER"].kommune_Test($_SERVER).(isset($_SERVER["HTTP_REFERER"])? str_replace(strstr($_SERVER["HTTP_REFERER"],'?'),'?userSel='.constKommuneUserXML,$_SERVER["HTTP_REFERER"]):''));
// -------------------------------------------------------------------------------------------------------------------------
// HTML Ausgabe Datenstrom Teil I Header
$cTmpCharSet=(defined('HTML_HEADER_CHARSET')?HTML_HEADER_CHARSET:'iso-8859-1');
if (stristr($oWettbewerb->clientENCODE,"UTF8"))
$cTmpCharSet="UTF-8";
elseif (stristr($oWettbewerb->clientENCODE,"UTF16"))
$cTmpCharSet="UTF-16";
$showHTML='<?xml version="1.0" encoding="'.$cTmpCharSet.'" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.(defined('HTML_HEADER_LANGUAGE_ISO')?HTML_HEADER_LANGUAGE_ISO:'DE').'" lang="'.(defined('HTML_HEADER_LANGUAGE_ISO')?HTML_HEADER_LANGUAGE_ISO:'DE').'">
<head>
<title>Kommune '.$oWettbewerb->workSITE.'</title>
<meta name="description" content="Kommune - Wettbewerbe '.$oWettbewerb->workSITE.'" />
<meta name="keywords" content="Kommune,Wettbewerbe,'.$oWettbewerb->workSITE.'" />
<meta http-equiv="Content-Type" content="text/html;charset='.$cTmpCharSet.'" />
<meta http-equiv="expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css" />
<script language="JavaScript1.2" type="text/javascript">
<!--
function show_layer(x,obj)
{
if (document.getElementById && document.getElementById(x))
{
document.getElementById(x).style.visibility = \'visible\';
document.getElementById(x).style.display = \'inline\';
} else if (document.all && document.all[x]) {
document.all[x].visibility = \'visible\';
document.all[x].style.display=\'inline\';
} else if (document.layers && document.layers[x]) {
document.layers[x].visibility = \'show\';
document.layers[x].style.display=\'inline\';
}
if (document.getElementById && document.getElementById(x))
{
var DivHeight =document.getElementById(x).offsetHeight;
var DivWidth =document.getElementById(x).offsetWidth;
var hoch=0;
var weite=0;
if (!window.event) {
var top=document.getElementById(x).offsetTop;
var left=document.getElementById(x).offsetLeft;
var position=0;
// wenn Position Rechts und Hoehe der ID groesser der Screen Hoehe , dann Korr.
if ( (top + DivHeight) >Hoehe)
{
position=Hoehe-DivHeight;
document.getElementById(x).style.top=position + "px";
}
if ( (left + DivWidth) >Weite)
{
position=Weite-DivWidth;
// alert (Weite+" "+ DivWidth + " "+ position + " offset Left "+document.getElementById(x).offsetLeft);
document.getElementById(x).style.left=position + "px";
}
} else {
hoch=(Hoehe - ( DivHeight + window.event.clientY ))-2 ;
weite=(Weite - ( DivWidth + window.event.clientX ))-2 ;
if (hoch>0) hoch=0;
if (weite>0) weite=0;
with (window.event && document.getElementById(x).style) {
top=window.event.clientY + document.body.scrollTop+( 1 + hoch );
left=window.event.clientX + document.body.scrollLeft+( 1 + weite );
}
}
}
}
function clear_layer(wohin,obj)
{
if (obj) {
set_layer(\'\',wohin,obj);
} else if (wohin)
set_layer(\'\',wohin);
}
function hide_layer(x,obj)
{
if (document.getElementById && document.getElementById(x))
{
document.getElementById(x).style.visibility = \'hidden\';
document.getElementById(x).style.display = \'none\';
} else if (document.all && document.all[x]) {
document.all[x].visibility = \'hidden\';
document.all[x].style.display=\'none\';
} else if (document.layers && document.layers[x]) {
document.layers[x].visibility = \'hide\';
document.layers[x].style.display=\'none\';
}
}
function set_layer(was,wohin)
{
if (document.getElementById(wohin).innerHTML)
{
document.getElementById(wohin).innerHTML=was;
}
elseif (document.getElementById(wohin).value)
{
document.getElementById(wohin).value=was;
}
}
function Fensterweite () {
if (window.innerWidth) {
return window.innerWidth;
} else if (document.documentElement && document.documentElement.clientHeight) {
// Explorer 6 Strict Mode
return document.documentElement.clientWidth;
} else if (document.body && document.body.offsetWidth) {
return document.body.offsetWidth;
} else if (document.body && document.body.clientWidth) {
return document.body.clientWidth;
} else {
return 0;
}
}
function Fensterhoehe () {
if (window.innerHeight) {
return window.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
// Explorer 6 Strict Mode
return document.documentElement.clientHeight;
} else if (document.body && document.body.offsetHeight) {
return document.body.offsetHeight;
} else if (document.body && document.body.clientHeight) {
return document.body.clientHeight;
} else {
return 0;
}
}
function checkTeamAnzahl(obj,nameID,anz)
{
var ok=true;
var ii=0;
for (var i = 0; i < anz; i++) {
if (obj[nameID][i].value=="") {
obj[nameID][i].focus();
ii = i + 1;
alert("Es wurden erst "+ i +" Teamspieler eingegeben. Es muessen "+ anz +" eingegeben werden.");
return false;
}
}
return ok;
}
function doIt(userUID,nameID)
{
// alert(document.getElementById(nameID).innerHTML);
//erstellen des requests
var req = null;
try{
req = new XMLHttpRequest();
// req.http_request.overrideMimeType("text/html;"); // zu dieser Zeile siehe weiter unten
// req.http_request.overrideMimeType("text/xml;"); // zu dieser Zeile siehe weiter unten
}
catch (ms)// hier beginnt der IE Teil
{
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (nonms)
{
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{
document.getElementById(nameID).innerHTML="Browser ohne Ajax Funktion";
req = null;
}
}
}
if (req == null)
document.getElementById(nameID).innerHTML="Error creating request object!";
//anfrage erstellen (GET, url ist localhost, request ist asynchron
var callURL=\''.(isset($_SERVER["HTTP_REFERER"])?str_replace(strstr($_SERVER["HTTP_REFERER"],'?'),'',$_SERVER["HTTP_REFERER"]):'').'\';
callURL=callURL+\'?userSel='.constKommuneUserXML.'&client_encode=UTF8&userUID=\'+userUID;
req.open("GET", callURL , true);
//Beim abschliessen des request wird diese Funktion ausgefhrt
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(req.status!=200) {
document.getElementById(nameID).innerHTML=callURL+" Fehler: "+req.status;
}else{
if (document.getElementById(nameID).value)
document.getElementById(nameID).value=req.responseText;
else
document.getElementById(nameID).innerHTML=req.responseText;
}
break;
default:
if (document.getElementById(nameID).value)
document.getElementById(nameID).value="bitte warten! Suche nach "+userUID;
else
document.getElementById(nameID).innerHTML="bitte warten! Suche nach "+userUID;
break;
}
};
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send(null);
}
function neuAufbau () {
if (Weite != Fensterweite() || Hoehe != Fensterhoehe())
location.href = location.href;
}
/* berwachung von Netscape initialisieren */
if (!window.Weite && window.innerWidth) {
window.onresize = neuAufbau;
Weite = Fensterweite();
Hoehe = Fensterhoehe();
}
-->
</script>
</head>
<body id="hauptbody">
<script type="text/javascript">
<!--
/* berwachung von Internet Explorer initialisieren */
if (!window.Weite && document.body && document.body.offsetWidth)
{
window.onresize = neuAufbau;
Weite = Fensterweite();
Hoehe = Fensterhoehe();
}
// alert(Weite+ \' \'+Hoehe);
-->
</script>
';
//-------------- Datenlesen
// Daten Wettbewerb ermitteln /include kommune_funktionen.inc.php
kommune_funk_wettbewerb(&$oWettbewerb);
kommune_funk_eigene_wettbewerb(&$oWettbewerb);
kommune_funk_team_wettbewerbe(&$oWettbewerb);
// Daten Teams ermitteln /include kommune_funktionen.inc.php
kommune_funk_teams(&$oWettbewerb); // TeamGesamt
kommune_funk_anwenderteams(&$oWettbewerb); // TeamAnwender
kommune_funk_teambenutzer(&$oWettbewerb); // Team, TeamBenutzer
// Daten Anzeige und Verarbeitung
$showHTML.=showMenueFunktion($oWettbewerb);
// Fehler - Error Ausgabe
$showHTML.='<div id="errorKommune">';
for ($iTmpZehler=0;$iTmpZehler<count($oWettbewerb->Error);$iTmpZehler++)
{
if (!empty($oWettbewerb->Error[$iTmpZehler]))
$showHTML.='<p style="color: red;">'. $oWettbewerb->Error[$iTmpZehler].'</p>';
}
$showHTML.='</div>';
$showHTML.='</body></html>';
$iTmpCompress=0;
echo $encode = getenv("HTTP_ACCEPT_ENCODING");
if(ereg("gzip",$encode) || ereg("x-gzip",$encode)) {
//zlib.output_compression = 1 , zlib.output_compression_level = 9
if (@ini_get( 'zlib.output_compression' ))
{
@ini_set('zlib.output_compression_level',5);
@ob_end_clean();
@ob_start();
@ob_implicit_flush(0);
$iTmpCompress=3;
}
// ob_gzhandler() requires the zlib extension,output_handler = ,output_buffering=On
If (empty($iTmpCompress) && extension_loaded("zlib") && @ini_get('output_buffering'))
{
@ob_end_clean();
If (@ob_start('ob_gzhandler'))
{
$iTmpCompress=2;
}
}
} // Ende If HTTP_ACCEPT_ENCODING"
// output_buffering=On and not zlib extension
if (empty($iTmpCompress) && @ob_start())
{
@ob_end_clean();
$iTmpCompress=1;
}
if ($iTmpCompress==1)
{
@ob_end_flush();
}
elseif ($iTmpCompress==2)
{
@ob_end_clean();
header("Content-Encoding: gzip");
$str = ob_gzhandler ( $showHTML, 5 );
if($str===false)
exit('ob_gzhandler() returns false.');
else
exit("$str");
}
else if ($iTmpCompress==4)
{
print_r($showHTML);
$gzip_size= @ob_get_length();
$gzip_contents = @ob_get_clean(); // PHP < 4.3 use ob_get_contents() + ob_end_clean()
@ob_end_clean();
@header('Content-length: '.$gzip_size);
if(strpos(' '.$_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) {
@header('Content-Encoding: x-gzip');
} else if(strpos(' '.$_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
@header('Content-Encoding: gzip');
}
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00",
substr(gzcompress($gzip_contents, $iTmpCompressLevel), 0, - 4), // substr -4 isn't needed
pack('V', crc32($gzip_contents)), // crc32 and
pack('V', $gzip_size); // size are ignored by all the browsers i have tested
@flush();
}
else if ($iTmpCompress==3)
{
print_r($showHTML);
$gzip_size= @ob_get_length();
$gzip_contents = @ob_get_clean(); // PHP < 4.3 use ob_get_contents() + ob_end_clean()
@ob_end_clean();
@header('Content-length: '.$gzip_size);
if(strpos(' '.$_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) {
@header('Content-Encoding: x-gzip');
} else if(strpos(' '.$_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
@header('Content-Encoding: gzip');
}
// open file for writing with maximum compression
$filename="erp_". time().".gz" ;
$zp = gzopen($filename, "w9");
// write string to file
gzwrite($zp, $gzip_contents);
// close file
gzclose($zp);
// open file for reading
$zp = gzopen($filename, "r");
// read 3 char
echo gzread($zp, $gzip_size);
// output until end of the file and close it.
gzpassthru($zp);
gzclose($zp);
echo "\n";
unlink($filename);
@flush();
}
else
exit($showHTML);
?>