<?php

require_once( './core.php' );

if( !isset( $user ) || !$user->can_access( 'activation' ) ) access_error();

if(isset($_REQUEST['action'])===false) $_REQUEST['action'] = '';

// 1. switch
switch($_REQUEST['action']) {
	case "commit_edit_forbidden_name":
		// zeige Liste der verbotenen Namen
		$MySQL->query(sprintf("UPDATE server.verboteneNamen set grund='%s', lastchangedby = %d WHERE id = %d", me_escape($_REQUEST['reason']), $user->ID, intval($_REQUEST['id'])));
		$Smarty->assign("text", "Der Eintrag wurde geändert!");
		$_REQUEST['action'] = "displayForbiddenNames";
	break;
	case "commit_delete_forbidden_name":
		$MySQL->query(sprintf("UPDATE server.verboteneNamen SET lastchangedby = %d, status = 9 WHERE id = %d", $user->ID, intval($_REQUEST['id'])));
		$Smarty->assign("text", "Der Eintrag wurde gelöscht!");
		$_REQUEST['action'] = "displayForbiddenNames";
	break;
	case "commit_add_forbidden_name":
		if($MySQL->num_rows($MySQL->query(sprintf("SELECT name FROM server.verbotenenamen WHERE name= '%s' AND status != 9", me_escape($_REQUEST['name']))))==0) {
			if(strlen($_REQUEST['name']) >=3 && strlen($_REQUEST['name'])<=25) {
				if(strlen($_REQUEST['reason']) < 10 OR 	strlen($_REQUEST['reason']) > 255) {
					$form_errors[] = 'Bitte einen Grund eintragen (10-250 Zeichen)';
				} else {
					// Speichern	
					$MySQL->query(sprintf("INSERT INTO server.verbotenenamen SET name = '%s', grund = '%s', lastchangedby = %d, lastchanged = NOW()", me_escape($_REQUEST['name']), me_escape($_REQUEST['reason']), $user->ID));					
					$Smarty->assign('text', "Name '".$_REQUEST['name']."' erfolgreich eingetragen!");
					if(isset($_REQUEST['nobox'])) {
						// kommt nicht über Popup der Freischaltung sondern von Verbotene Namen administrieren
						$_REQUEST['action'] = 'displayForbiddenNames';
						break;
					} else {
						$Smarty->display( 'blank.tpl' );
						die();
					}
				}		
			} else {
				$form_errors[] = 'Der Name darf nur Buchstaben und Leerzeichen enthalten und muss 3-16 Zeichen lang sein.';
			}
		} else {
			$form_errors[] = 'Der Name steht bereits auf der Liste.';
		}
		// ein Fehler ist aufgetreten
		$Smarty->assign('form_errors', $form_errors);
		$Smarty->assign('name', $_REQUEST['name']);
		$Smarty->assign('reason', $_REQUEST['reason']);
		if(isset($_REQUEST['nobox'])) {
			$_REQUEST['action'] = 'displayForbiddenNames';
			break;	
		} else {
			$Smarty->display( 'char_activation_forbidden_name.tpl' );
			die();
		}
	break;
	case "commit_restore_forbidden_name":
		$MySQL->query(sprintf("UPDATE server.verboteneNamen SET lastchangedby = %d, status = 1 WHERE id = %d", $user->ID, intval($_REQUEST['id'])));
		$Smarty->assign("text", "Der Eintrag wurde wiederhergestellt!");
		$_REQUEST['action'] = "displayForbiddenNames";
	break;
	case "eval_actions":
		ignore_user_abort(true);
		$_REQUEST['action'] = "char_view";
		
		$charid = intval($_REQUEST['charid']);
		if(strlen($_REQUEST['aktivierungskommentar'])<20 && (isset($_REQUEST['no_text']) && $_REQUEST['send_form'] == "Annehmen")===false) {
			$form_errors[] = 'Bitte eine Nachricht an den Spieler eingeben (mindestens 20 Zeichen)';
		}		
		
		$MySQL->query("START TRANSACTION");
		$char = $MySQL->query_first(sprintf("SELECT name, accountid, level, profession_1, aktiviert, aktivierungszeitpunkt, cst, lastchange, chartype, testserver FROM server.chars WHERE charid = %d", intval($charid)));
		if($char['level']!=1) {
			$MySQL->query("ROLLBACK");
			error("Char hat falschen Level!", true);
		}
		if($char['accountid']==$user->ID && $char['chartype'] == 'player' && $char['testserver'] == 0 && ($user->rank < 13 AND $user->ID != 767)) {
			// versucht, seinen eigenen Char zu aktivieren
			// TODO; gibt keine LogException hier
			$MySQL->query("ROLLBACK");
			error("Du darfst deinen eigenen Char nicht aktivieren oder löschen.", true);
//			throw new LogException("Versuch, den eigenen Char ($charid) zu aktivieren");
		}
		
		if($_REQUEST['lastchange'] != $char['lastchange']) {
		 	$form_errors[] = 'Der Spieler hat in der Zwischenzeit den Char bearbeitet!';
		}
		if($char['aktiviert'] == 1) {
			$form_errors[] = 'Der Char wurde bereits aktiviert!';
		}
		if($char['aktiviert'] == 9) {
			$form_errors[] = 'Der Char wurde bereits abgelehnt oder gelöscht.';
		}
		if($_REQUEST['aktivierungszeitpunkt'] != $char['aktivierungszeitpunkt']) {
			$form_errors[] = 'Ein anderer Freischalter hat den Char in der Zwischenzeit bearbeitet!';
		}
		switch($_REQUEST['send_form']) {
			case "Annehmen":
				// Aktivierung durchführen
				if($user->password != md5($_POST['acc_password'])) {
					// TODO: Logging
					$form_errors[] = 'Falsches oder nicht eingegebenes Passwort!';
				}
				
				if(strlen($char['name'])<3 or strlen($char['name']) > 25) {
					$form_errors[] = 'Problem mit dem Namen!';
				} 
				if($char['cst'] > 0 AND $_REQUEST['warning_checkbox'] != 'on') {
					$form_errors[] = 'Bitte auf geklaute Charstory &uuml;berpr&uuml;fen!';
				}
				if($MySQL->num_rows($MySQL->query(sprintf("SELECT name FROM server.verbotenenamen WHERE name ='%s' AND status != 9", me_escape($char['name']))))>0) {
					$form_errors[] = 'Name steht mittlerweile auf der Liste der verbotenen Namen!';
				}
				if( isset($form_errors) && count( $form_errors ) > 0 ) {
					$MySQL->query("ROLLBACK");
					$Smarty->assign( 'form_errors', $form_errors );
				}
				else {
					// Charakter aktivieren
					// Gold löschen
					$MySQL->query(sprintf("DELETE FROM server.startitems WHERE charid = %d AND herstellungsid IN (1898, 1899, 1900)", $charid));	
					$MySQL->query(sprintf("INSERT INTO server.startitems SET charid = %d, herstellungsid = 1899, anzahl = 3, equipped = 0, not_sellable = 0", $charid));
					$MySQL->query(sprintf("INSERT INTO server.startitems SET charid = %d, herstellungsid = 1900, anzahl = 200, equipped = 0, not_sellable = 0", $charid));
					// Gold testen
					list( $silber ) = $MySQL->query_first(sprintf("SELECT anzahl FROM server.startitems WHERE charid = %d AND herstellungsid = 1899", $charid));
					list( $kupfer ) = $MySQL->query_first(sprintf("SELECT anzahl FROM server.startitems WHERE charid = %d AND herstellungsid = 1900", $charid));
					if($silber != 3 OR $kupfer != 200) {
						$MySQL->query("ROLLBACK");
						error("Fehler beim Gold - bitte Aurax Bescheid geben", true);
					}
					
					// Ausbildungseinheit testen und für die 1. Profession vergeben
					// TODO
					$MySQL->query(sprintf("DELETE FROM server.ausbildungseinheiten WHERE charid = %d", intval($charid)));
					list( $ausbildungseinheiten) = $MySQL->query_first(sprintf("SELECT COUNT(*) FROM server.ausbildungseinheiten WHERE charid = %d", intval($charid)));
					
					if($ausbildungseinheiten != 0) {
						// gab schon mal Ausbildungseinheiten => nonsense
						$MySQL->query("ROLLBACK");
						error("Hat schon Ausbildungen erhalten - bitte Aurax Bescheid geben", true);
					}
					$MySQL->query(sprintf("INSERT INTO server.ausbildungseinheiten SET charid = %d, profession = %d, lerneinheiten = %d", intval($charid), $char['profession_1'], 2));
					
					$MySQL->query(sprintf("UPDATE server.chars SET aktiviert = 1, aktiviert_von = %d, aktivierungszeitpunkt = NOW() WHERE charid = %d AND aktiviert != 1", $user->ID, intval($charid)));
					$MySQL->query(sprintf("INSERT INTO server.activation_messages SET charid = %d, message = '%s', lastchanged = NOW(), lastchangedby = %d", intval($charid), me_escape($_REQUEST['aktivierungskommentar']), $user->ID));
					// Mulflags setzen
					$MySQL->query(sprintf("UPDATE server.accounts SET mulflags = '2' WHERE accountid = %d AND mulflags = 0", $char['accountid']));				
					
					// Daten zum Freischaltzeitpunkt sichern
					$MySQL->query(sprintf("DELETE FROM server.char_archive WHERE charid = %d AND level = 1", intval($charid)));
					$MySQL->query(sprintf("INSERT INTO server.char_archive (SELECT * FROM server.chars WHERE charid = %d)", intval($charid)));

					$MySQL->query("COMMIT");
					// TODO: Logging
					// Nachricht auf der HP verschicken
					$MySQL->query(sprintf("INSERT INTO messages SET sender = %d, receiver = %d, time = '".time()."', subject = 'Freischaltungsnachricht', message = 'Dein Char %s wurde freigeschaltet!\n\n%s'", $user->ID, $char['accountid'], me_escape($char['name']), me_escape($_REQUEST['aktivierungskommentar'])));
					// E-Mail schicken
					list( $email, $acc_name ) = $MySQL->query_first(sprintf("SELECT email, name FROM server.accounts WHERE accountid = %d", $char['accountid']));
					$mailenv = array();
		        	$mailenv['acc_name'] = $acc_name;
		        	$mailenv['name'] = $char['name'];
		        	$mailenv['aktivierungskommentar'] = $_REQUEST['aktivierungskommentar'];
					if( send_mail( $email, 'char_activation' ) )
        				$message = "Der Char '".$char['name']."' wurde aktiviert.";
        			else {
        				// TODO: Logging
        				$message = "Der Char '".$char['name']."' wurde aktiviert. Es konnte allerdings keine E-Mail an den Spieler geschickt werden.";
        			}
        			$_REQUEST['action']= '';
				}
			break;
			case "Ablehnen":
				// Charakter ablehnen und l&ouml;schen
				if($user->password != md5($_POST['del_password'])) {
					// TODO: Logging
					$form_errors[] = 'Falsches oder nicht eingegebenes Passwort!';
				}
				
				if(isset($_REQUEST['delete_checkbox']) && $_REQUEST['delete_checkbox'] == 'on' AND (strlen($_REQUEST['short_report'])<10 or strlen($_REQUEST['short_report'])>255)) {
					$form_errors[] = 'Fallmitteilung muss zwischen 10 und 255 Zeichen haben!';
				}
				if(isset($_REQUEST['delete_checkbox']) && $_REQUEST['delete_checkbox'] != 'on' AND strlen($_REQUEST['short_report'])>0) {
					$form_errors[] = 'Bitte die Angaben zum Fall &uuml;berpr&uuml;fen!';
				}
			
				if( isset($form_errors) && count( $form_errors ) > 0 ) {
					$MySQL->query("ROLLBACK");
					$Smarty->assign( 'form_errors', $form_errors );
				}
				else {
					$MySQL->query(sprintf("UPDATE server.chars SET aktiviert = 9, aktiviert_von = %d, aktivierungszeitpunkt = NOW() WHERE charid = %d AND aktiviert != 1", $user->ID, $charid));
					$MySQL->query(sprintf("INSERT INTO server.activation_messages SET charid = %d, message = '%s', lastchanged = NOW(), lastchangedby = %d", $charid, me_escape($_REQUEST['aktivierungskommentar']), $user->ID));
					$MySQL->query("COMMIT");
					if(isset($_REQUEST['delete_checkbox']) && $_REQUEST['delete_checkbox'] == 'on') {
						// Fall anlegen
						// TODO: Logging
						$MySQL->query(sprintf("INSERT INTO server.cases SET accountid = %d, charid = %d, responsible = %d, case_type = 'Activation', filed = NOW(), filed_by = %d, lastchanged = NOW(), categories = 'Sonstiges', short_report = '%s' ", $char['accountid'], $charid, $user->ID, $user->ID, me_escape($_REQUEST['short_report'])));
					}
					
					// TODO: Logging
					// Nachricht auf der HP verschicken
					$MySQL->query(sprintf("INSERT INTO messages SET sender = %d, receiver = %d, time = '".time()."', subject = 'Dein Char wurde abgelehnt', message = 'Dein Char %s wurde abgelehnt und gelöscht!\n\n%s'", $user->ID, $char['accountid'], me_escape($char['name']), me_escape($_REQUEST['aktivierungskommentar'])));
					// E-Mail schicken
					list( $email, $acc_name ) = $MySQL->query_first(sprintf("SELECT email, name FROM server.accounts WHERE accountid = %d", $char['accountid']));
					$mailenv = array();
		        	$mailenv['acc_name'] = $acc_name;
		        	$mailenv['name'] = $char['name'];
		        	$mailenv['aktivierungskommentar'] = $_REQUEST['aktivierungskommentar'];
					if( send_mail( $email, 'char_activation_denied' ) )
        				$message = "Der Char '".$char['name']."' wurde gel&ouml;scht.";
        			else {
        				// TODO: Logging
        				$message = "Der Char '".$char['name']."' wurde gel&ouml;scht;. Es konnte allerdings keine E-Mail an den Spieler geschickt werden.";
        			}
        			$_REQUEST['action']= '';
				}
			break;
			case "Zurückstellen":
				if( isset($form_errors) && count( $form_errors ) > 0 ) {
					$MySQL->query("ROLLBACK");
					$Smarty->assign( 'form_errors', $form_errors );
				}
				else {
					// Zurückstellen
					//TODO Transaktion hier aktiv
					$MySQL->query(sprintf("UPDATE server.chars SET aktiviert = 2, aktiviert_von = %d, aktivierungszeitpunkt = NOW(), anzahl_zurueckstellungen = anzahl_zurueckstellungen+1 WHERE charid = %d AND aktiviert != 1", $user->ID, intval($charid)));
					$MySQL->query(sprintf("INSERT INTO server.activation_messages SET charid = %d, message = '%s', lastchanged = NOW(), lastchangedby = %d", $charid, me_escape($_REQUEST['aktivierungskommentar']), $user->ID));
					
					// Daten zum Freischaltzeitpunkt sichern
					$MySQL->query(sprintf("DELETE FROM server.char_archive WHERE charid = %d AND level = 1", intval($charid)));
					$MySQL->query(sprintf("INSERT INTO server.char_archive (SELECT * FROM server.chars WHERE charid = %d)", intval($charid)));
					
					$MySQL->query("COMMIT");

					// Nachricht auf der HP verschicken
					$MySQL->query(sprintf("INSERT INTO messages SET sender = %d, receiver = %d, time = '".time()."', subject = 'Dein Char wurde zur&uuml;ckgestellt', message = 'Dein Char %s wurde zurückgestellt. Bitte bearbeite deinen Char entsprechend und melde ihn erneut zur Freischaltung an!\n\n%s'", $user->ID, $char['accountid'], me_escape($char['name']), me_escape($_REQUEST['aktivierungskommentar'])));
					// E-Mail schicken
					list( $email, $acc_name ) = $MySQL->query_first(sprintf("SELECT email, name FROM server.accounts WHERE accountid = %d", $char['accountid']));
					$mailenv = array();
		        	$mailenv['acc_name'] = $acc_name;
		        	$mailenv['name'] = $char['name'];
		        	$mailenv['aktivierungskommentar'] = $_REQUEST['aktivierungskommentar'];
					if( send_mail( $email, 'char_activation_returned' ) )
        				$message = "Der Char '".$char['name']."' wurde zur&uuml;ckgestellt.";
        			else {
        				// TODO: Logging
        				$message = "Der Char '".$char['name']."' wurde zur&uuml;ckgestellt. Es konnte allerdings keine E-Mail an den Spieler geschickt werden.";
        			}
        			
        			$_REQUEST['action']= '';
				}
			
			break;
			default:
				// TODO: Logging
				error('Ein unbekannter Fehler ist aufgetreten!', true);
		}
	ignore_user_abort(false);
	if(isset($message)) $Smarty->assign('message', $message);
	break;
	default:
	
	break;
}
// 2. switch
switch($_REQUEST['action']) {
	case "displayForbiddenNames": 
		// status = 9 => nicht mehr gültig
		$verboteneNamen = $MySQL->fetch_complete("SELECT verbotenenamen.*, accounts.name as accname, (SELECT COUNT(*) FROM server.chars WHERE aktiviert = 1 AND testserver = 0 AND chartype = 'player' AND name = verbotenenamen.name) as kv FROM server.verbotenenamen LEFT JOIN server.accounts ON verbotenenamen.lastchangedby = accounts.accountid ORDER BY name");
		$Smarty->assign('verboteneNamen', $verboteneNamen);
		$page['content'] = $Smarty->fetch('forbiddenNamesList.tpl');
	break;
	case "edit_forbidden_name":
		$verbotenerName = $MySQL->query_first(sprintf("SELECT * FROM server.verbotenenamen WHERE id = %d AND status != 9", intval($_REQUEST['id'])));
		if(count($verbotenerName)==0) {
			error("Wurde nicht gefunden", true);
		}
		$Smarty->assign('verbotenerName', $verbotenerName);
		$page['content'] = $Smarty->fetch('forbiddenNameEdit.tpl');
	break;	
	case "add_forbidden_name":
		$Smarty->assign('name', $_REQUEST['name']);
		$Smarty->display( 'char_activation_forbidden_name.tpl' );
	die();
	case "get_activation_text":	
		if($_REQUEST['charid']>0) {
			$texte = $MySQL->fetch_complete(sprintf("SELECT server.activation_messages.*, server.accounts.name as name FROM server.activation_messages LEFT JOIN server.accounts on server.activation_messages.lastchangedby = server.accounts.accountid WHERE server.activation_messages.charid = %d ORDER BY server.activation_messages.lastchanged DESC", intval($_REQUEST['charid'])));
			$Smarty->assign('texte', $texte);
			$Smarty->display( 'char_activation_messages.tpl' );
		}
	die();
	case "char_view":	
		$charid = intval($_REQUEST['charid']);
		$char = $MySQL->query_first(sprintf("SELECT * FROM server.chars WHERE charid = %d", $charid));
		if(isset($char['name'])===false) {
			error('Char wurde nicht gefunden', true);
		}	
		//$_SESSION['old_char'] = $MySQL->query_first("SELECT * FROM server.char_creation WHERE charid = '$charid'");
		
		require_once('lib/char.cls.php');
		try {
			$char = new Char((int)$_REQUEST['charid'], (int)$char['accountid'], false, (bool)$char['testserver'], true);
		} catch(IException $e) {
			// TODO
			echo $e->getNotice();
			die();
		}
		// Änderungen für den Freischalter
		$oldchar = $MySQL->query_first(sprintf("SELECT * FROM server.char_archive WHERE charid = %d", $charid));
		if($char->get('name') != $oldchar['name']) $Smarty->assign('chg_name', $oldchar['name']);  
		if($char->get('profession_1') != $oldchar['profession_1']) $Smarty->assign('chg_profession_1', $oldchar['profession_1']);  
		if($char->get('dyn_profil') != $oldchar['dyn_profil']) $Smarty->assign('chg_dyn_profil', $oldchar['dyn_profil']);  
		if($char->get('fix_profil') != $oldchar['fix_profil']) $Smarty->assign('chg_fix_profil', $oldchar['fix_profil']);  
		
		
		// ========================== 1:1 aus char.php; TODO irgendwann mal besser =======================
		// hole Charakterdaten aus dem Objekt		
		$reflection = new ReflectionClass($char);
		$defaults = $reflection->getdefaultProperties();
		
		
		
		foreach($defaults as $prop_name => $propvalue) {
			$char_out[$prop_name] = $char->get($prop_name);
		}
		$char_out['mode'] = 'activation';
		$fragenprep = $MySQL->fetch_complete(sprintf("SELECT * FROM server.chargen_fragen WHERE %s_mw > 0 ORDER BY ordernr, id", $char_out['volk']));
				$fragensammlung = array();
				$order = array();
				$random = array();
				foreach($fragenprep as $item) {
					$forder[] = $item['id'];
					$anzeige = false;
					switch($item[$char_out['volk'].'_mw']) {
						case 1:
							$random[] = $item['id'];
							$pflicht = true;
							$anzeige = false;
							break;
						case 2:
							$pflicht = true;
							
							break;
						case 3:
							$pflicht = false;
								
							break;
						default:
							logError();
					}
					$fragensammlung[$item['id']] = array("id" => $item['id'], "frage" => $item['frage'], "antwort" => null, "pflicht" => $pflicht, "anzeige" => $anzeige, "kriterium" => $item['kriterium']);
				}
				
					$antwortenprep = $MySQL->fetch_complete(sprintf("SELECT * FROM server.chargen_antworten WHERE charid = %d AND version = 'current'", $char->get('charid')));
//echo sprintf("SELECT * FROM server.chargen_antworten WHERE charid = %d AND version = 'current'", $char->get('charid'));
					foreach($antwortenprep as $fragenitem) {
							$fragensammlung[$fragenitem['id']]['anzeige'] = true;
							$fragensammlung[$fragenitem['id']]['antwort'] = $fragenitem['antwort'];
							
					}
				
				
				$Smarty->assign('fragensammlung', $fragensammlung);
		
		// Werte mit Text-Informationen ergänzen
		list ($char_out['volk']) = $MySQL->query_first(sprintf("SELECT bezeichnung FROM server.voelker WHERE id = %d", $char_out['volk']));
		
		// Erstelle Liste für Professionen
		$professionsstufe = array("Anfänger", "Lehrling", "Geselle", "Meister", "Großmeister");
		$char_out['professionen'] = '';
		for($i=1;$i<=3;$i++) {
			if(isset($char_out['profession_'.$i]['id']) AND $char_out['profession_'.$i]['stufe']>0) {
				list ($profession) = $MySQL->query_first(sprintf("SELECT bezeichnung FROM server.professionen WHERE id = %d", $char_out['profession_'.$i]['id']));
				$char_out['professionen'] .= $profession." (".$professionsstufe[$char_out['profession_'.$i]['stufe']].")<br />";
			} else break;
		}
		
		
		// Werte für Statlimits einfügen
		foreach($char_out['stats'] as $stat => $value) {
			$stats_out[$stat]['bezeichnung'] = $stat;
			$stats_out[$stat]['min'] = $char_out['min_stats'][$stat];
			$stats_out[$stat]['wert'] = $value;
			$stats_out[$stat]['max'] = $char_out['max_stats'][$stat];
			
			$stats_out[$stat]['a'] = 4*$stats_out[$stat]['min']; 
			$stats_out[$stat]['b'] = 4*($stats_out[$stat]['wert']-$stats_out[$stat]['min']); 
			$stats_out[$stat]['c'] = 4*($stats_out[$stat]['max']-$stats_out[$stat]['wert']);
			$stats_out[$stat]['d'] = 4*(100-$stats_out[$stat]['max']);
		}
		
		// Werte für Skilllimits einfügen
		foreach($char_out['skills'] as $skill => $value) {
			$skills_out[$skill]['bezeichnung'] = $skill;
			$skills_out[$skill]['min'] = $char_out['min_skills'][$skill];
			$skills_out[$skill]['wert'] = $value;
			$skills_out[$skill]['max'] = $char_out['max_skills'][$skill];
			
			$skills_out[$skill]['a'] = 20*$skills_out[$skill]['min']; 
			$skills_out[$skill]['b'] = 20*($skills_out[$skill]['wert']-$skills_out[$skill]['min']); 
			$skills_out[$skill]['c'] = 20*($skills_out[$skill]['max']-$skills_out[$skill]['wert']);
			$skills_out[$skill]['d'] = 20*(20-$skills_out[$skill]['max']);
		}
		
		// ENDE====================== 1:1 aus char.php; TODO irgendwann mal besser ===================ENDE
		
		// Hübsche Bildchen für Charstorytheft-Detector
		if($char_out['cst'] > 5) {
			for($i=1;$i<=$char_out['cst'];$i++) {
				$char_out['cst_images'] .= "<img src=\"images/error.png\" width=\"16\" height=\"16\" title=\"Wahrscheinlich Geklaut\" alt=\"OK\" />";
			}
		}
		elseif($char_out['cst'] > 1) {
			for($i=1;$i<=$char_out['cst'];$i++) {
				$char_out['cst_images'] .= "<img src=\"images/warning.png\" width=\"16\" height=\"16\" title=\"Vermutlich Geklaut\" alt=\"OK\" />";
			}
		}
		else {
			for($i=0;$i<=$char_out['cst'];$i++) {
				$char_out['cst_images'] = "<img src=\"images/ok.png\" width=\"16\" height=\"16\" title=\"Vermutlich in Ordnung\" alt=\"OK\" />";
			}
		}
		
		// Accountname Charbesitzer holen
		list($char_out['account_name']) = $MySQL->query_first(sprintf("SELECT name FROM server.accounts WHERE accountid =%d", $char_out['accountid']));
		
		// Accountname Zurücksteller
		if($char_out['aktiviert_von']>0)
			list($char_out['zuruecksteller']) = $MySQL->query_first(sprintf("SELECT name FROM server.accounts WHERE accountid =%d", $char_out['aktiviert_von']));
		
		
		// Fälle holen
		list($char_out['filed']) =  $MySQL->query_first(sprintf("SELECT COUNT(*) FROM server.cases WHERE accountid  =%d AND case_type='Activation'", $char_out['accountid']));
		
		$Smarty->assign('page_title', "Charfreischaltung &raquo; Char freischalten &raquo; ".$char_out['name']);
		$Smarty->assign('page_title_long', "Charfreischaltung &raquo; Char freischalten &raquo; ".$char_out['name']);
		$Smarty->assign('page_title_site', "Char freischalten '".$char_out['name']."'");
		$Smarty->assign('clength', strlen($char_out['charstory']));
		
		$Smarty->assign('char', $char_out);
		$Smarty->assign('stats', $stats_out);
		$Smarty->assign('skills', $skills_out);
		$Smarty->assign('clength', strlen($char_out['charstory']));
		
		
		
		
		if(isset($_REQUEST['aktivierungskommentar'])) $Smarty->assign('aktivierungskommentar', $_REQUEST['aktivierungskommentar']);
		if(isset($_REQUEST['short_report'])) $Smarty->assign('short_report', $_REQUEST['short_report']);
		$Smarty->assign('imgurl', get_chargump_url($char->get('charid'), $char->get('accountid')));
		$page['content'] = $Smarty->fetch('char_display.tpl');
		
	break;
	default:
		// letztes Betreten der Freischaltungs-Übersicht speichern
		//$MySQL->query(sprintf("INSERT INTO last_visited (accountid, area, last_visited) VALUES (%d, 'activation', NOW()) ON DUPLICATE KEY UPDATE last_visited = NOW()", $user->ID));
	
		$char_list_prepare = $MySQL->fetch_complete("SELECT charid, name, testserver, chartype, accountid, volk, profession_1, aktiviert_von, aktivierungszeitpunkt, UNIX_TIMESTAMP(aktivierungszeitpunkt) as aktv_secs, anzahl_zurueckstellungen, cst, filed, lastchange, UNIX_TIMESTAMP(lastchange) as lastchanged_secs FROM server.chars WHERE aktiviert = 0");
		
		// TODO: check letztes Betreten & CO
		$char_list = array();
		foreach((array)$char_list_prepare as $charitem) {
			if($charitem['anzahl_zurueckstellungen'] > 0) {
				list ($charitem['aktiviert_von']) = $MySQL->query_first(sprintf("SELECT name FROM server.accounts WHERE accountid = %d", $charitem['aktiviert_von']));
				list ($last_visit) = $MySQL->query_first(sprintf("SELECT UNIX_TIMESTAMP(last_visited) FROM last_visited WHERE accountid = %d", $charitem['aktiviert_von']));
				$time_left = time() - $charitem['lastchanged_secs'];
				if(time() - $last_visit > $settings['activation_open_not_visited'] OR $time_left > $settings['activation_open']) $charitem['open'] = true;
			} else {
				if(time() - $charitem['aktv_secs'] > $settings['activation_open_not_visited'] ) $charitem['open'] = true;
			}
			list ($charitem['accountname']) = $MySQL->query_first(sprintf("SELECT name FROM server.accounts WHERE accountid = %d", $charitem['accountid']));
			list ($charitem['volk']) = $MySQL->query_first(sprintf("SELECT bezeichnung FROM server.voelker WHERE id = %d", $charitem['volk']));
			list ($charitem['profession_1']) = $MySQL->query_first(sprintf("SELECT bezeichnung FROM server.professionen WHERE id = %d", $charitem['profession_1']));
			list ($charitem['activated_chars']) = $MySQL->query_first(sprintf("SELECT COUNT(*) FROM server.chars WHERE accountid = %d AND aktiviert = 1", $charitem['accountid']));
			$char_list[] = $charitem; 
		}
		$Smarty->assign('char_list', $char_list);
		$page['content'] = $Smarty->fetch('char_activation.tpl');
	
}
$Smarty->assign( 'page', $page );
$Smarty->display( 'main.tpl' );
?>