<?php include('inc/header.php'); ?>
<meta http-equiv="refresh" content="10; URL=index.php">
<h1>Settings - Main Settings</h1>
<div class="container">
<?php
	error_reporting(0);
	
	function getCurrentLogfileView($directory = '../../includes/siteContentS/security/') {

		$intTimestamp = 0;
		$strCurrentLogfile = '';

		if($dir = opendir($directory)) {
			while($fileName = readdir($dir)) {
				if(strlen($fileName) > 2) {
				
					$pathToFile = $directory . $fileName;
					
					if(filemtime($pathToFile) > $intTimestamp) {
						$intTimestamp = filemtime($pathToFile);
						$strCurrentLogfile = $fileName;
					}
					
				}
			}
			closedir($dir);
		}
		
		return str_replace('.txt', '', $strCurrentLogfile);
	}
	
	if($_GET['do'] == 'delete_logging'){
		ClearLoggingDatabase();
		echo '<div class="success">Logging Datenbank wurde geleert und verkleinert.</div>';
		$_GET['do'] = '';
	}
	
	$newpsc = @odbc_exec($odbc_connect, 'SELECT COUNT([state]) as count FROM [' . $_CONFIG['db_databases']['web'] . '].[dbo].[LOG_DONATIONS] WHERE [state] = 0');
	$newticket = @odbc_exec($odbc_connect, 'SELECT COUNT([status]) as count FROM [' . $_CONFIG['db_databases']['web'] . '].[dbo].[TICKET_THREADS] WHERE [status] = 0');
	
	if(@odbc_result($newpsc, 'count') == 1) {
		echo '<p>Es gibt eine neue <a href="donation_logs.php">Spende</a>.';
	}
	elseif(@odbc_result($newpsc, 'count') > 1) {
		echo '<p>Es gibt <a href="donation_logs.php">' . @odbc_result($newpsc, 'count') . ' neue Spendeneingänge</a>.';
	}
	else {
		echo '<p>';
	}
	
	if(@odbc_result($newpsc, 'count') > 0 AND @odbc_result($newticket, 'count') > 0) {
		echo ' Außerdem ';
	}
	elseif(@odbc_result($newticket, 'count') > 0) {
		echo ' Es ';
	}
	
	if(@odbc_result($newticket, 'count') == 1) {
		echo 'ist eine neue <a href="ticketsys.php">Supportanfrage</a> eingegangen. Bitte drum kümmern!</p>';
	}
	elseif (@odbc_result($newticket, 'count') > 1) {
		echo 'sind <a href="ticketsys.php">' . @odbc_result($newticket, 'count') . ' neue Supportanfragen</a> eingegangen. Bitte drum kümmern!</p>';
	}
	else {echo '</p>';}

	?>
<h2 id="cronjobHeading">Sitecontent</h2>
<p>
    <span style="float: left; width: 80px; font-weight: bold;">Legende:</span>
    <img src="../../images/icons/misc/1.png" width="10" /> Datei aktuell
    <img src="../../images/icons/misc/2.png" width="10"  style="margin-left: 15px;"/> Aktion innerhalb der nächsten Minute
    <img src="../../images/icons/misc/3.png" width="10"  style="margin-left: 15px;"/> Geplantes Update fehlgeschlagen, manuelle Durchführung erforderlich
    <br /><span style="font-size:11px; font-style: italic; margin-left: 80px">(manuelles Update durch Klick auf das Icon | Legende gilt nur bedingt für x SQL-Injections: Die Meldung, die bei einem Mauszeigerhover des Icons erscheint, beachten!)</span>
</p>
<table cellspacing="0">
	<thead>
		<tr>
			<td></td>
			<td>Datei</td>
			<td>Letztes Update</td>
			<td>Aktualisierung</td>
		</tr>
	</thead>
	<tbody>
	<?php
		function cronjobPathOfUpdateFile($strFileName) {
			global $_CONFIG;
			return '../../includes/' . $_CONFIG['website_cronjob_filename'] . '.php?' . $_CONFIG['website_cronjob_site'] . '=' . $strFileName;
		}
		function cronjobPathOfContentFile($strFileName, $type = '') {
			global $_CONFIG;
			if($type == 'notCheckable') {
				return '#';
			}
			else {
				return '../../includes/' . $_CONFIG['website_cronjob_folder'] . '/' . $strFileName . '.' . $_CONFIG['website_cronjob_filetype'];
			}
		}
		function cronjobCheckDateOfFile($actualFileDate, $predictionOfFileDate = '', $type, $updatePath = '') {
            if($type == 'inverted-NoManualUpdate') {
                if(time()-$actualFileDate < 10*60) {
                    return '<a href="#cronjobHeading" title="Warnung! Potentieller Angriff detektiert." alt="" rel="tooltip"><img src="../../images/icons/misc/3.png" width="10" /></a>';
                }
                elseif(time()-$actualFileDate < 60*60) {
                    return '<a href="#cronjobHeading" title="Vor mehr als 10 Minuten wurde die letzte potentiell gefährliche Eingabe erfasst." alt="" rel="tooltip"><img src="../../images/icons/misc/2.png" width="10" /></a>';
                }
                elseif(time()-$actualFileDate >= 60*60) {
                    return '<a href="#cronjobHeading" title="Seit mehr als einer Stunde wurde nun kein Angriff registriert." alt="" rel="tooltip"><img src="../../images/icons/misc/1.png" width="10" /></a>';
                }
            }
			else {
				if(time()-$actualFileDate < $predictionOfFileDate-60) {
					$nextUpdate = $actualFileDate+$predictionOfFileDate;
					return '
						<a href="' . $updatePath . '" title="Nächtes Update vorrraussichtlich am ' . date('d.m', $nextUpdate) . ' gegen ' . date('H:i', $nextUpdate) . '" alt="" rel="tooltip" target="_blank"><img src="../../images/icons/misc/1.png" width="10" /></a>';
				}
				elseif(time()-$actualFileDate < $predictionOfFileDate+60) {
					return '
						<a href="' . $updatePath . '" title="Update wird demnächst ausgeführt" alt="" rel="tooltip" target="_blank"><img src="../../images/icons/misc/2.png" width="10" /></a>';
				}
				else {
					return '
						<a href="' . $updatePath . '" title="Update überfällig. Bitte selbstständig aktualisieren und Cronjob überprüfen" alt="" rel="tooltip" target="_blank"><img src="../../images/icons/misc/3.png" width="10" /></a>';
				}
			}
		}
		function cronjobGetUpdateInterval($intTimeToNextUpdate) {
			if($intTimeToNextUpdate == 60*60*24) {
				$strUpdateInterval = 'Täglich';
			}
			elseif($intTimeToNextUpdate == 60*60) {
				$strUpdateInterval = 'Jede Stunde';
			}
			elseif($intTimeToNextUpdate == 60*30) {
				$strUpdateInterval = 'Halbstündlich';
			}
			elseif($intTimeToNextUpdate == 60*10) {
				$strUpdateInterval = 'Alle 10 Minuten';
			}
			elseif($intTimeToNextUpdate == 5*60) {
				$strUpdateInterval = 'Alle 5 Minuten';
			}
			else {
				$strUpdateInterval = 'Nach Bedarf';
			}
			return $strUpdateInterval;
		}
		function cronjobGetLinkName($strFileName, $strFileExt) {
			if($strFileName == '#') {
				return '';
			}
			else {
				return $strFileName . '.' . $strFileExt;
			}
		}
		
		$cronjobFileDataArray = array(
			// Reichenfolge eines Arrays: Bezeichnung, Dateiname, Iconvariable, Aktualisierungszeit (in s)
			array('x SQL-Injections', 'security/' . getCurrentLogfileView(), '', 'inverted-NoManualUpdate', 0),
			array('Box: Peak', 'include_boxes_peak', 'boxes_peak', 'normal', 5*60),
			array('Box: Userzahl', 'include_boxes_online', 'boxes_online', 'normal', 5*60),
			array('Site: Ranking (Spieler)', 'site_ranking_players', 'ranking_players', 'normal', 60*30),									// XX:00, XX:30
			array('Site: Ranking (GWs)', 'site_ranking_gws', 'ranking_gws', 'normal', 60*30),												// XX:00, XX:30
			array('Site: Ranking (Vote)', 'site_ranking_vote', 'ranking_vote', 'normal', 60*30),											// XX:00, XX:30
			array('Site: Ranking (Gilden)', 'site_ranking_guilds', 'ranking_guilds', 'normal', 60*60),										// XX:00, XX:30
			array('Site: Ranking (Allgemeines: Klassen)', 'site_ranking_stats_classes', 'ranking_stats_classes', 'normal', 60*60),			// XX:05
			array('Site: Ranking (Allgemeines: Globales)', 'site_ranking_stats_globals', 'ranking_stats_globals', 'normal', 60*60),			// XX:05
			array('Site: Ranking (Userzahlen)', 'site_ranking_usercnt', 'ranking_usercnt', 'normal', 60*60*24),								// 00:10
			array('x LOGGING leeren', 'db_loggingdbf_truncate', 'truncate_logging', 'normal', 60*60*24),									// 00:15
			array('Site: Ranking (Lordwahlen: Ergebnis)', 'site_ranking_election_voting', 'ranking_election_voting', 'normal', 60*60*24),	// 05:20
			array('Site: Ranking (Lordwahlen: Details)', 'site_ranking_election_detail', 'ranking_election_detail', 'normal', 60*60*24),	// 05:20
			array('Site: Downloads', 'site_download', 'download', 'normal', 60*60*24),														// 05:35
			array('Site: FAQs', 'site_faqs', 'faqs', 'normal', 60*60*24),																	// 05:35
			array('Site: News', 'site_news', 'news', 'normal', 60*60*24),																	// 05:35
			array('Site: Rules', 'site_rules', 'rules', 'normal', 60*60*24),																// 05:40
			array('Site: Team', 'site_team', 'team', 'normal', 60*60*24),																	// 05:40
			array('Site: Shop - Hauptkategorien', 'site_shop_categories_main', 'shop_categories_main', 'normal', 60*60*24),					// 05:45
			array('Site: Shop - Unterkategorien', 'site_shop_categories_sub', 'shop_categories_sub', 'normal', 60*60*24),					// 05:45
			array('Site: Shop - Itemliste', 'site_shop_itemlist', 'shop_itemlist', 'normal', 60*60*24),										// 05:50
			array('x Datenbankbackup', 'db_backup', 'database_backup', 'normal', 60*60)														// XX:55
		);
		sort($cronjobFileDataArray);
		
		foreach($cronjobFileDataArray as $cronjobFileData) {
			echo '
			<tr>
				<td>
					' . cronjobCheckDateOfFile(filemtime(cronjobPathOfContentFile($cronjobFileData[1])), $cronjobFileData[4], $cronjobFileData[3], cronjobPathOfUpdateFile($cronjobFileData[2])) . '
					' . $cronjobFileData[0] . '
				</td>
				<td>
					<a href="' . cronjobPathOfContentFile($cronjobFileData[1], $cronjobFileData[3]) . '" target="_blank" title="Seite anzeigen" rel="tooltip">' . cronjobGetLinkName($cronjobFileData[1], $_CONFIG['website_cronjob_filetype']) . '</a>
				</td>
				<td>
					' . date('d.m, H:i', filemtime(cronjobPathOfContentFile($cronjobFileData[1]))) . ' Uhr
				</td>
				<td>
					' . cronjobGetUpdateInterval($cronjobFileData[4]) . '
				</td>
			</tr>';
		}
	?>
	</tbody>
</table>
</div>
<?php include('inc/footer.php'); ?>