<?php // $Id:$

/**
 * maintenance for
 * mmcX from guggemahier.de
 * and for vkpMX 2.x and pragmaMX from maax-design.de
 * @version $Id$
 * @copyright 2004 by microg @ http://guggemahier.de
 *
 * Start this file with Daily Script on Shell with:
 * lynx -dump http://www.your-domain.com/maintenance.php?setpw=Your-Code
 * or:
 * with simple Webbrowser
 * http://www.your-domain.com/maintenance.php?setpw=Your-Code
 *
 **/

include("mainfile.php");

# Ohne Passwort geht gar nix
# Unbedingt ändern!!! Change Password!!
$passwort = "hier_euer_password_rein";

# Wenn leer, dann speichere keine Textdatei!
$log_pfad = "";

$subject_name = "Birthday Mailer @ ".$GLOBALS['sitename']."";
$grussformel_de = "Das Team vom <i>".$GLOBALS['sitename']."</i> wünscht Dir als treues, registriertes Mitglied unserer Community alles erdenklich Gute zu Deinem Ehrentag.\n\n<br>Gesundheit, viel Glück im neuen Lebensjahr und dass alle Wünsche in Erfüllung gehen mögen ;-)\n\n<br>Viele Grüße und vielleicht bis bald mal wieder bei www.pleite-was-nun.info!";

# soll zum Geburtstag gratuliert werden? 1 = ja, 0 = nein
$bday_mail = 1;
# sollen PM's gelöscht werden? 1 = ja, 0 = nein
$del_pms = 0;
$zeit_pm = "40";		# Wennja, wie alt dürfen die PM's sein? (In Tagen)
# Soll die Datenbank optimiert werden? 1 = ja, 0 = nein
$optimize_dbase = 0;

# Das Passwort muss passen, sonst lass es ein und mach einen Eintrag im SecLog!
if($_REQUEST['setpw'] === $passwort){
	# Timeouts nach oben setzen. Bei großen Datenbanken wird es oft problematisch mit den Timeouts!
	@set_time_limit (4000);
	@ini_set("max_execution_time",4000);
	@ignore_user_abort(1);

	if($bday_mail){
		# gratuliere zum Geburtstag
		$sql = "SELECT email, uname, (YEAR( CURRENT_DATE ) - YEAR( user_bday )) - ( RIGHT( CURRENT_DATE, 5 ) < RIGHT( user_bday, 5 ) ) AS user_age FROM ${user_prefix}_users WHERE MONTH(user_bday)=MONTH(CURRENT_DATE) AND DAYOFMONTH(user_bday)=DAYOFMONTH(CURRENT_DATE) ORDER BY user_age DESC;";
		$result = sql_query($sql);
		while (list($email, $uname, $user_age) = sql_fetch_row($result)) {
			# Wenn eine gültige eMail Adresse vorliegt versende das Mail
			if(!empty($email) or eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$email)){
				$mailsubject="".$GLOBALS['sitename']." - Geburtstagsgrüße";
				$mailtext=""
							."\n\nHallo ".$uname."!<br>\n\nHerzlichen Glückwunsch zu Deinem heutigen ".$user_age.". Geburtstag!<br>"
							."\n\n".$grussformel_de
							."";
				mxmail($email, $mailsubject, $mailtext, $adminmail, "html", "", $subject_name);
			}
		}
	}

	if($del_pms){
		# Hier löschen was älter als XX Tage in den privaten Nachrichten rumliegt
		$wassoller  = mktime(0,0,0, date("m"),date("d")-$zeit_pm,date("Y"));
		$i=0;
		$qry = "SELECT
				msg_id,
				UNIX_TIMESTAMP(msg_time) as stamp
				FROM
				${prefix}_priv_msgs
				WHERE
				UNIX_TIMESTAMP(msg_time)<='".$wassoller."';";
		$res = sql_query($qry);
		$ok = array();$i=0;
		while($list= sql_fetch_array($res)){
			# noch mal kontrollieren
			if($list[1]<=$wassoller){
				$ok[] = (int)$list[0];
			}
		}
		if (count($ok)) {
			$i = count($ok);
			$wechdamit = implode(',',$ok);
			$qry = "DELETE FROM ${prefix}_priv_msgs WHERE (msg_id IN (".$wechdamit."));";
			$res = sql_query($qry);
		}
		sql_free_result($res);
		$ergebnis[] = $i." PM delete";
	}

	if($optimize_dbase){
		# hier optimieren wir mal alles was zur Datenbank gehört ;o)
		$local_query = 'SHOW TABLE STATUS FROM '.$dbname;
		$result = sql_query($local_query);
		if ($result) {
			while ($row = sql_fetch_array($result)) {
				$local_query = 'OPTIMIZE TABLE '.$row[0];
				sql_query($local_query);
			}
		}
		sql_free_result($result);
		$ergebnis[] = "DB Optimize \"".$dbname."\" : OK -";
	}

	# SecLog schreiben und gegebenenfalls Logdatei auf dem Server
	$output = date("H:i:s")." from: ".$_REQUEST['setpw']." (".$_SERVER['REMOTE_ADDR'].")";
	foreach ($ergebnis as $key => $val) {
		$output = $output.$val;
	}
	if(!empty($log_pfad) and @readdir($log_pfad)){
		$datei = fopen($log_pfad.$dbname.".txt","a+");
		fputs($datei,$output);
		fclose($datei);
	}
	mxSecureLog("DB","Optimize Database OK - ".$_REQUEST['setpw']." (".$_SERVER['REMOTE_ADDR'].") - ".$i." PM delete");
	echo "OK";
}else{
	$output = date("H:i:s")." from: ".$_REQUEST['setpw']." (".$_SERVER['REMOTE_ADDR'].") - DB Optimize \"".$dbname."\" : ERROR\n";
	if(!empty($log_pfad) and @readdir($log_pfad)){
		$datei = fopen($log_pfad.$dbname.".txt","a+");
		fputs($datei,$output);
		fclose($datei);
	}
	mxSecureLog("DB","Optimize Database ERROR - ".$_REQUEST['setpw']." (".$_SERVER['REMOTE_ADDR'].")");
	echo "Error";
}


?>