';
//Bearbeite alle möglichen Optionen die von dieser Datei durchgeführt werden können
switch ($_GET['op'])
{
//Lösche eine Nachricht mit einer speziellen ID
case 'del':
{
$sql = 'DELETE FROM mail WHERE msgto="'.$session['user']['acctid'].'" AND messageid="'.$_GET['id'].'"';
db_query($sql);
$session['message'] = '`@Die Nachricht wurde erfolgreich gelöscht.`0';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
header('Location: mail.php');
exit();
}
break;
case 'del_revoked_message':
{
$sql = 'DELETE FROM mail WHERE msgfrom="'.$session['user']['acctid'].'" AND messageid="'.$_GET['id'].'"';
db_query($sql);
$session['message'] = '`@Die Nachricht wurde erfolgreich gelöscht.`0';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
header('Location: mail.php');
exit();
}
break;
//Lösche mehrere Nachrichten
case 'process':
{
switch ($_REQUEST['process_type'])
{
//Lösche Systemmails
case 'sys':
{
$sql = 'DELETE FROM mail WHERE msgto=\''.$session['user']['acctid'].'\' AND msgfrom=0 AND archived=0';
db_query($sql);
$int_affected = db_affected_rows();
$session['message'] = '`@Alle '.$int_affected.' Systemnachrichten wurden gelöscht.`0';
header('Location: mail.php');
exit();
}
break;
//Lösche ungelesene nachrichten
case 'ugdel':
{
$sql = 'DELETE FROM mail WHERE msgto=\''.$session['user']['acctid'].'\' AND seen=0';
db_query($sql);
$int_affected = db_affected_rows();
$session['message'] = '`@Alle '.$int_affected.' ungelesenen Nachrichten wurden erfolgreich gelöscht.`0';
header('Location: mail.php');
exit();
}
break;
//Lösche gelesene Nachrichten
case 'gdel':
{
$sql = 'DELETE FROM mail WHERE msgto=\''.$session['user']['acctid'].'\' AND seen=1 AND archived=0';
db_query($sql);
$int_affected = db_affected_rows();
$session['message'] = '`@Alle '.$int_affected.' gelesenen Nachrichten wurden erfolgreich gelöscht.`0';
header('Location: mail.php');
exit();
}
break;
//Lösche alle markierten Nachrichten
case 'delete_marked':
{
//Überprüfen, ob überhaupt mehrere Nachrichten zum löschen markiert wurden
if (!is_array($_POST['msg']) || count($_POST['msg'])<1)
{
$session['message'] = '`$`bEs wurden keine Nachrichten ausgewählt, es wurde nichts gelöscht`b`0';
}
else
{
//Wenn die gewählten Nachrichten solche sind, die vom Verfasser zurückgerufen werden sollen
if($_GET['revoke_messages']==1)
{
//Lösche alle markierten Nachrichten
$sql = 'DELETE FROM mail WHERE msgfrom=\''.$session['user']['acctid'].'\' AND seen=0 AND messageid IN (\''.join('\',\'',$_POST['msg']).'\')';
}
else
{
//Lösche alle markierten Nachrichten
$sql = 'DELETE FROM mail WHERE msgto=\''.$session['user']['acctid'].'\' AND messageid IN (\''.join('\',\'',$_POST['msg']).'\')';
}
db_query($sql);
$int_affected = db_affected_rows();
$session['message'] = '`@Die '.$int_affected.' markierten Nachrichten wurden erfolgreich gelöscht.`0';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
}
header('Location: mail.php');
exit();
}
break;
//Archiviere alle markierten Nachrichten
case 'archive_marked':
{
if(getsetting('archive_yom_anabled',0) == 0)
{
$session['message'] = '`@Die Archivierung von Brieftauben ist nicht erlaubt`0';
header('Location: mail.php');
exit();
}
//Überprüfen, ob überhaupt mehrere Nachrichten zum archicieren markiert wurden
if (!is_array($_REQUEST['msg']) || count($_REQUEST['msg'])<1)
{
$session['message'] = '`$`bEs wurden keine Nachrichten ausgewählt, es wurde nichts archiviert`b`0';
}
else
{
$sql_get_archived = 'SELECT messageid FROM mail WHERE archived = 1 AND msgto = "'.$session['user']['acctid'].'"';
$int_count_archived_yom = db_num_rows(db_query($sql_get_archived));
$int_maximum_archived_yom = ($access_control->su_lvl_check(1) ? getsetting('archive_yom_mod_limit',100) : getsetting('archive_yom_limit',50));
if($int_count_archived_yom>=$int_maximum_archived_yom)
{
$session['message'] = '`@Die Archivierung ist fehl geschlagen, du hast bereits das Maximum von '.$int_maximum_archived_yom.' Brieftauben archiviert`0';
header('Location: mail.php');
exit();
}
$int_count_new_archived_yom = 0;
foreach ($_REQUEST['msg'] as $int_yom_id)
{
if($int_count_archived_yom>=$int_maximum_archived_yom)
{
$session['message'] = '`@Es konnten nicht alle Brieftauben archviert werden, da
du das Maximum von '.$int_maximum_archived_yom.' Brieftauben erreicht hast.`0';
header('Location: mail.php');
exit();
}
$sql = 'UPDATE mail SET archived = 1 , seen = 1 WHERE messageid = '.(int)$int_yom_id.' AND msgto='.$session['user']['acctid'];
$query_result = db_query($sql);
$int_count_archived_yom++;
$int_count_new_archived_yom++;
}
$session['message'] = '`@Die '.$int_count_new_archived_yom.' markierten Nachrichten wurden erfolgreich archiviert.`0';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
}
header('Location: mail.php');
exit();
}
break;
// Mails als ungelesen markieren
case 'unread_marked':
{
if(!is_array($_POST['msg']) || !count($_POST['msg']))
{
$session['message'] = '`$Es wurden keine Nachrichten ausgewählt!`0';
}
else
{
// Auf Limit checken
$str_sql = 'SELECT COUNT(*) AS c FROM mail WHERE seen=0 AND msgto='.(int)$session['user']['acctid'];
$res = db_query($str_sql);
$arr_tmp = db_fetch_assoc($res);
$int_max_unread = (int)getsetting('inboxlimit',50);
if($arr_tmp['c']+count($_POST['msg']) > $int_max_unread)
{
$session['message'] = '`$Soviele Nachrichten dürfen nicht auf ungelesen stehen - max. '.$int_max_unread.'!`0';
}
else
{
// Auf ungelesen stellen
$str_ids = implode(',',$_POST['msg']);
$str_ids = db_real_escape_string($str_ids);
$str_sql = 'UPDATE mail SET seen=0 WHERE messageid IN ('.$str_ids.') AND msgto='.(int)$session['user']['acctid'].' AND seen=1';
db_query($str_sql);
$session['message'] = '`@'.db_affected_rows().' Nachrichten wurden auf ungelesen gesetzt!`0';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
}
}
header('Location: mail.php');
exit();
}
break;
case 'message2mail':
{
if(getsetting('message2mail_activated',false)==false)
{
$session['message'] = '`$`bdiese Funktion ist abgeschaltet!`b`0';
header('Location: mail.php');
exit();
}
//Überprüfen, ob überhaupt mehrere Nachrichten zum Versand markiert wurden
if (!is_array($_POST['msg']) || count($_POST['msg'])<1)
{
$session['message'] = '`$`bEs wurden keine Nachrichten ausgewählt, es konnte somit nichts versendet werden!`b`0';
}
elseif(is_email($session['user']['emailaddress'])==false)
{
$session['message'] = '`$`bDu hast keine gültige E-Mail-Adresse hinterlegt, deswegen können Dir keine Mails zugesendet werden.`b`0';
header('Location: mail.php');
exit();
}
else
{
//Mails selektieren
$sql = 'SELECT mail.subject,mail.body,mail.sent,accounts_from.login AS msg_from, accounts_to.login AS msg_to FROM mail LEFT JOIN accounts accounts_from ON accounts_from.acctid=mail.msgfrom LEFT JOIN accounts accounts_to ON accounts_to.acctid=mail.msgto WHERE mail.messageid in (\''.join('\',\'',$_POST['msg']).'\')';
//Wenn die gewählten Nachrichten solche sind, die vom Verfasser zurückgerufen werden sollen
$query_result = db_query($sql);
$int_affected = db_affected_rows();
$str_mailbody = '';
//Mailbody erzeugen
while ($arr_message = db_fetch_assoc($query_result))
{
$str_mailbody .= '`&Datum: '.$arr_message['sent']."`n";
$str_mailbody .= '`&Von: '.$arr_message['msg_from']."`n";
$str_mailbody .= '`&An: '.$arr_message['msg_to']."`n";
$str_mailbody .= '`&Betreff: '.$arr_message['subject']."`n";
$str_mailbody .= "
";
$str_mailbody .= '`&'.nl2br($arr_message['body']);
$str_mailbody .= "";
}
db_free_result($query_result);
$str_townname = getsetting('townname','Atrahor');
$str_css = '
* {
padding:0px;
margin:0px;
}
body {
background-color:#000000;
padding:0px;
margin:0px;
}
body *{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #FFFFFF;
}'
.write_appoencode_css();
$body = '
Deine Brieftauben aus '.$str_townname.'`c`^Brieftauben-Archivierung für '.$session['user']['login'].' aus
'.$str_townname.'`^, angefertigt am '.date('d. m. Y',time()).'`c`0
';
$body .= $str_mailbody;
$body .= '';
$body = appoencode($body);
//Sollte jemand Empfangsprobleme mit 8bit-Kodierung haben muß das ganze noch durch convert.quoted-printable-encode (ab PHP 5.0) geschickt werden
$maili = getsetting('gameadminemail','');
$filename = 'tauben_'.date('dmyhis',time()).'.html';
$headers='';
$mailbody .= "Taubenarchivierung vom ".date('d. m. Y',time())."\n";
$arr_file = array();
$arr_file['content'] = $body;
$arr_file['name'] = $filename;
$arr_file['encoding'] = 'base64';
$arr_file['type'] = 'Content-type: text/html; charset=ISO-8859-1';
if(send_mail($session['user']['emailaddress'],'Brieftauben aus '.$str_townname,$mailbody,$headers,null,$maili,null,null,array($arr_file)))
{
$session['message'] = 'Die '.$int_affected.' markierten Nachrichten wurden erfolgreich an Deine Mailadresse versendet.';
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
//Lösche alle markierten Nachrichten
$sql = 'DELETE FROM mail WHERE msgto=\''.$session['user']['acctid'].'\' AND messageid IN (\''.join('\',\'',$_POST['msg']).'\')';
db_query($sql);
}
else
{
$session['message'] = '`$Leider trat beim Versenden der Mail ein Fehler auf!`0';
}
}
header('Location: mail.php');
exit();
}
break;
$session['refresh_maillink'] = true;
$session['refresh_minilink'] = true;
header('Location: mail.php');
exit();
}
}
break;
//Sende eine Mail
case 'send':
{
$str_subtitle = 'Brieftaube abschicken';
// Dieses Formular wurde bereits einmal abgeschickt
if($_POST['mailcounter'] != $session['mailcounter']) {
$session['message'] = '`@Deine Nachricht wurde gesendet!`0`n';
header('Location:mail.php');
exit;
}
$session['mailcounter'] = '';
//Wenn es sich nicht um eine Antwort auf eine Anfrage handelt
if (isset($_POST['petitionid'])==false)
{
//Wenn man eine neue nachricht sendet
if( isset($_POST['revoke_edit'])==false ){
//Suche nach dem Empfänger
$sql = 'SELECT acctid,superuser,emailaddress FROM accounts WHERE login="'.$_POST['to'].'"';
$result = db_query($sql);
//Existiert der Empfänger?
if (db_num_rows($result)>0)
{
$row1 = db_fetch_assoc($result);
//Überprüfen, ob dem Benutzer noch Mails geschickt werden können (Mailbox voll)
$sql = 'SELECT count(*) AS count FROM mail WHERE msgto="'.$row1['acctid'].'" AND seen=0 ';
$result = db_query($sql);
$row = db_fetch_assoc($result);
//Zuviele Mails in der Inbox des Empfängers
if (($row['count']>getsetting('inboxlimit',50)) || (($row1['superuser']>0) && ($row['count']>getsetting('modinboxlimit',50))))
{
$output.='Die Mailbox des Empfängers ist voll! Du kannst ihm keine Nachricht schicken.';
}
//Mail kann geschrieben werden
else
{
//Messagebody bearbeiten
$_POST['body']=str_replace('`n',"\n",$_POST['body']);
$_POST['body']=str_replace("\r\n","\n",$_POST['body']);
$_POST['body']=str_replace("\r","\n",$_POST['body']);
$_POST['body']=addslashes(substr(stripslashes($_POST['body']),0,(int)getsetting('mailsizelimit',1024)));
$_POST['body'] = closetags($_POST['body'],'`c`i`b');
if(!empty($_POST['subject']))
{
$_POST['subject']=closetags(str_replace('`n','',$_POST['subject']),'`c`i`b');
}
else
{
if(getsetting('automatic_header_generation',1) == 1)
{
$int_length = getsetting('automatic_header_length',60);
$_POST['subject'] = substr($_POST['body'],0,$int_length).'...';
}
}
//Soll die Nachricht an die Mailadresse gesendet werden?
//Wenn beim senden ein Fehler auftritt wird anschließend die Mail einfach als Taube versendet.
if(isset($_POST['yom_to_mail']) && $_POST['yom_to_mail'] == 1)
{
$str_from_name = ($_POST['yom_to_mail_server'] == 1?getsetting('teamname','Drachenserver-Team'):$session['user']['login']);
$str_from_mail = ($_POST['yom_to_mail_server'] == 1?getsetting('petitionemail','postmaster@localhost'):$session['user']['emailaddress']);
$_POST['body'] .= "\n\n\nAnmerkung:\nAntworten an diese Mailadresse werden nicht empfangen, bitte antworte ggf. per Anfrage.";
if(send_mail($row1['emailaddress'],$_POST['subject'],$_POST['body'],'',NULL,$str_from_mail,$str_from_name,NULL,array(),false))
{
$session['message'] = '`@Deine Nachricht wurde and die Mailaddresse gesendet!`0`n';
systemlog('versandte eine Mail an einen User',$session['user']['acctid'],$row1['acctid']);
header('Location:mail.php');
exit;
}
}
systemmail($row1['acctid'],$_POST['subject'],$_POST['body'],$session['user']['acctid']);
$session['message'] = '`@Deine Nachricht wurde gesendet!`0`n';
header('Location:mail.php');
exit;
}
}
//Der Empfänger konnte nicht gefunden werden
else
{
$output.='Der Empfänger konnte nicht gefunden werden. Bitte versuche es nochmal.';
}
db_free_result($result);
}
//wenn man eine gesendete nachricht editiert
else{
$msg_id = intval($_POST['id']);
$sql = 'SELECT seen FROM mail WHERE messageid="'.$msg_id.'"';
$result = db_query($sql);
$row = db_fetch_assoc($result);
if( $row ){
if( !$row['seen'] ){
$_POST['subject']=closetags(str_replace('`n','',$_POST['subject']),'`c`i`b');
$sql = 'UPDATE mail SET subject="'.addslashes($_POST['subject']).'", body="'.addslashes($_POST['body']).'" WHERE messageid="'.$msg_id.'"';
$result = db_query($sql);
$session['message'] = '`@Deine Nachricht wurde bearbeitet!`0`n';
header('Location:mail.php');
exit;
}
else{
$output.='Diese Nachricht wurde bereits gelesen!';
}
}
else{
$output.='Diese Nachricht wurde bereits gelöscht!';
}
}
}
//Es handelt sich um die Antwort auf eine Anfrage
else
{
$sql = 'SELECT count(*) AS count FROM petitionmail WHERE petitionid=\''.$_POST['petitionid'].'\' AND msgto=\''.$session['user']['acctid'].'\'';
$result = db_query($sql);
$row = db_fetch_assoc($result);
//Handelt es sich um die Anfrage des Users?
if ($row['count']==0)
{
$output .= 'Du kannst nur zu deinen eigenen Anfragen etwas schreiben!';
}
//Der User darf antworten
else
{
$_POST['subject']=closetags(str_replace('`n','',$_POST['subject']),'`c`i`b');
$_POST['body']=str_replace('`n',"\n",$_POST['body']);
$_POST['body']=str_replace("\r\n","\n",$_POST['body']);
$_POST['body']=str_replace("\r","\n",$_POST['body']);
$_POST['body']=substr($_POST['body'],0,(int)getsetting('mailsizelimit',1024));
$_POST['body'] = closetags($_POST['body'],'`c`i`b');
petitionmail($_POST['subject'],$_POST['body'],$_POST['petitionid'],$session['user']['acctid']);
$output.='Deine Nachricht wurde gesendet!`n';
}
db_free_result($result);
}
}
break;
//Zeige alle gesendeten Nachrichten des Nutzers, die noch nicht vom Empfänger gelesen wurden
case 'outbox':
{
$str_subtitle = 'Postausgang`0';
$output .= '
Hier kannst Du von Dir gesendete Brieftauben zurückrufen, wenn diese vom Empfänger noch nicht gelesen wurden`n';
//Selektiere alle Mails
$sql = 'SELECT mail.subject,mail.messageid,accounts.name,mail.msgto,mail.seen,mail.sent, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgto WHERE mail.msgfrom=\''.$session['user']['acctid'].'\' and mail.seen=0 ORDER BY mail.sent';
$result = db_query($sql);
//Anzahl der Tupel bestimmen
$int_mails = db_num_rows($result);
//Wenn mindestens eine Mail vorhanden ist
if ($int_mails>0)
{
$output.='
';
}
else
{
$output.='`iEntweder Du hast noch keine Mails versandt oder sie wurden bereits alle gelesen.`i';
}
db_free_result($result);
}
break;
//Zeige das YOM Archiv an
case 'archive':
{
$str_subtitle = 'Archivierte Brieftauben`0';
$output .= '
Manchmal haben die Nachrichten deiner Brieftauben einen besonders sentimentalen Wert für dich. Du möchtest sie nicht verlieren oder dem Verfall überlassn.
Hier kannst Du all\' jene Brieftauben speichern.`n`n';
//Selektiere alle Mails
$sql = 'SELECT mail.subject,mail.messageid,accounts.name,mail.msgfrom,mail.seen,mail.sent, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto="'.$session['user']['acctid'].'" AND mail.archived = 1 ORDER BY mail.sent DESC';
$result = db_query($sql);
//Anzahl der Tupel bestimmen
$int_mails = db_num_rows($result);
//Wenn mindestens eine Mail vorhanden ist
if ($int_mails>0)
{
$output.='';
}
else
{
$output.='`iNoch hast du keine Brieftauben archiviert.`i`n`n';
}
$output .= 'Du hast bereits '.$int_mails.' Brieftaube(n) archiviert und darfst maximal '.
( ($access_control->su_lvl_check(1))? getsetting('archive_yom_mod_limit',50):getsetting('archive_yom_limit',50) ).
' Brieftauben archivieren';
db_free_result($result);
}
break;
//Lies eine angegebene Nachricht
case 'read':
{
$str_subtitle = 'Brieftaube lesen`0';
$revoke = $_GET['revoke_messages'] == 1;
$sql_add = '1';
//Verhindern, dass man sich fremde mails anguckt! Danke @ Baras fürs melden
//by Alucard
if( $revoke )
{
$sql_add = 'mail.msgfrom='.$session['user']['acctid'];
}
else
{
$sql_add = 'mail.msgto='.$session['user']['acctid'];
}
//Hole Daten zur Mail und deren Erzeuger und Empfänger aus der DB
$sql = 'SELECT mail.*,accounts.name,accounts.acctid, petitionmail.petitionid
FROM mail
LEFT JOIN petitionmail USING(messageid)
LEFT JOIN accounts ON accounts.acctid=mail.msgfrom
WHERE mail.messageid="'.(int)$_GET['id'].'" AND '.$sql_add;
$result = db_query($sql);
if (db_num_rows($result)>0)
{
$row = db_fetch_assoc($result);
db_free_result($result);
//Setze die Mail auf den Status "gelesen", es sei denn es ist eine Mail die in der outbox lag und zurückgerufen werden soll
if($row['seen'] == 0 && !$revoke)
{
$sql = 'UPDATE mail SET seen=1 WHERE msgto=\''.$session['user']['acctid'].'\' AND messageid=\''.$row['messageid'].'\'';
db_query($sql);
}
if ((int)$row['msgfrom']==0)
{
if ((int)$row['petitionid']==0)
{
$row['name']='`^`iSystem`i`0';
}
else
{
$row['name'] = '`^`iAdmin`i`0';
}
}
$row['body'] = soap(closetags($row['body'],'`b`c`i'));
// HTML-Sonderzeichen, die Probleme machen könnten, maskieren
$row['body'] = str_replace(array('<','>'),array('<','>'),$row['body']);
if(empty($row['subject'])) {
$row['subject'] = '`iKeiner`i';
}
else {
$row['subject'] = soap(closetags($row['subject'],'`b`c`i'));
$row['subject'] = str_replace(array('<','>'),array('<','>'),$row['subject']);
$row['subject'] = stripslashes($row['subject']);
}
if( $revoke ){
$edit_subject = str_replace('`','{#96}',$row['subject']);
$edit_body = str_replace('`','{#96}',$row['body']);
$edit_body = stripslashes($edit_body);
$edit_body = htmlentities($edit_body);
$output.='';
}
}
//Die Nachricht konnte nicht gefunden werden
else
{
$output.='Diese Nachricht wurde nicht gefunden!';
}
}
break;
//Schreib eine Mail
case 'write':
{
$str_subtitle = 'Brieftaube verfassen`0';
$bool_write_allowed = true;
$subject='';
$body='';
$output.='
`$Brieftauben verfassen ist beim Demo-Zugang nicht möglich.`n';
$bool_write_allowed=false;
}
//Wenn die Mail eine Antwort auf eine vorhergehende Mail ist
if ($_GET['replyto']!='')
{
//Lade alle Infomationen über die zu beantwortende Mail
$sql = 'SELECT mail.body,mail.subject,accounts.login,accounts.name, accounts.laston,accounts.loggedin,accounts.activated,
petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto=\''.$session['user']['acctid'].'\' AND mail.messageid=\''.$_GET['replyto'].'\'';
$result = db_query($sql);
//Wenn die gesuchte Mail existiert
if (db_num_rows($result)>0)
{
$row = db_fetch_assoc($result);
db_free_result($result);
if ($row['login']=='' && (int)$row['petitionid']==0)
{
$output.='Du kannst nicht auf eine Systemnachricht antworten.`n';
$row=array();
$bool_write_allowed = false;
}
}
else
{
$output.='Die Nachricht auf die Du antworten willst existiert nicht!`n';
$bool_write_allowed = false;
}
}
//Wenn eine neue Nachricht erstellt werden soll
if ($_GET['to']!='')
{
$to = $_GET['to'];
$str_search = '
`tWem willst Du eine Brieftaube schicken?`n`n
'.form_header('mail.php?op=write','POST',false,'search_form','if(document.getElementById(\'search_sel\').selectedIndex > -1) {this.submit();} else {search();return false;}').'
'.jslib_search('document.getElementById("search_form").submit();','Übernehmen!').'
';
//Überprüfe, ob der Empfänger existiert
$sql = 'SELECT login,name,laston,loggedin,activated FROM accounts WHERE
'.(is_numeric($to) ? 'acctid='.$to : 'login="'.addslashes($_GET['to']).'"');
$result = db_query($sql);
//Wurde die Person gefunden?
if (db_num_rows($result)>0)
{
$row = db_fetch_assoc($result);
}
else
{
$output.='Diese Person konnte nicht gefunden werden`n';
$bool_write_allowed = false;
}
db_free_result($result);
}
//Wenn der Empfänger gefunden wurde
if (is_array($row))
{
//Check whether this mail is an answer to aMail, and avoid this RE: RE: RE: stuff
if ($row['subject']!='')
{
$subject=$row['subject'];
if (substr($subject,0,4)!='RE: ')
{
$subject='RE: '.$subject;
}
}
if ($row['body']!='')
{
$body="\n\n---Vorherige Botschaft---\n".$row['body'];
}
}
if ($row['petitionid']>0)
{
$output.='`2An: `^`iAdmin`i`n';
}
elseif ($row['login']!='')
{
$str_online = '';
$str_online = (user_get_online(0,$row) ? ' `@(online)`0' : ' `4(offline)`0');
$output.='
`2An: `^'.$row['name'].$str_online.'`n';
}
else
{
$output.='`2An: ';
$string = str_create_search_string(stripslashes($_POST['to']));
//$sql = 'SELECT login,name,laston,loggedin,activated FROM accounts WHERE name LIKE \''.addslashes($string).'\' AND locked=0 ORDER BY IF(login="'.addslashes($str_to).'",1,0) DESC, login ASC';
$sql = 'SELECT login,name,laston,loggedin,activated FROM accounts WHERE name LIKE \''.addslashes($string).'\' AND locked=0 ORDER BY login="'.db_real_escape_string($_POST['to']).'" DESC, login ASC';
$result = db_query($sql);
$int_result_count = db_num_rows($result);
if ($int_result_count==1)
{
$row = db_fetch_assoc($result);
$str_online = '';
$str_online = (user_get_online(0,$row) ? ' `@(online)`0' : ' `4(offline)`0');
$output.='
`^'.$row['name'].$str_online.'`n';
}
else if($int_result_count == 0) {
$output.='Diese Person konnte nicht gefunden werden`n';
$bool_write_allowed = false;
}
else
{
$output.='`n';
}
db_free_result($result);
}
if($bool_write_allowed)
{
// Doppeltes Verschicken einer Mail verhindern by talion
$session['mailcounter'] = md5(time());
// Formatierungstags in Betreff und Mail maskieren
$subject = str_replace('`','{#96}',$subject);
$body = str_replace('`','{#96}',$body);
$output.='';
$output.='`2Betreff:';
$output.=' noch '.getsetting('mailsizelimit' ,0).' Zeichen übrig.';
$output.='`n`2Text:`0`n';
$output.=' ';
$output.= $access_control->su_check(access_control::SU_RIGHT_WRITE_YOM_TO_MAIL)?'`$Sende die Brieftaube an die Mailadresse ':'';
$output.= $access_control->su_check(access_control::SU_RIGHT_WRITE_YOM_TO_MAIL)?'`n`$Verwende als Absender die Serveraddresse (sonst Deine) ':'';
$output.='`n`n';
if ($row['petitionid']>0)
{
$output.='';
}
$output.='';
}
}
break;
//Empfängersuche
case 'address':
{
$str_subtitle = 'Brieftaube senden`0';
/*$output .= '
';*/
$output .= '`0
' . form_header('mail.php?op=write') . '
`2An:`0' . jslib_autocomplete_name('to', true, true) . '
';
}
break;
case 'buch':
{
/**********************************************
*Diese Box darf nicht entfernt werden! *
*------------------------------------- *
*Adressbuch von deZent und draKarr *
*Version: 0.5 *
*www.plueschdrache.de *
*etwas verändert von talion & Alucard *
**********************************************/
$sql = "
SELECT
y.row_id
,y.player
,y.descr
,a.acctid
,a.name
,a.loggedin
,a.laston
,a.activated
,(".user_get_online().") AS online
,a.alive
FROM
yom_adressbuch y
LEFT JOIN
accounts a
ON
a.acctid=y.player
WHERE
y.acctid=".$session['user']['acctid']."
ORDER BY
online DESC
,login ASC
";
$result = db_query($sql);
$menge = db_num_rows($result);
$max_yom_contacts = getsetting('max_yom_contacts',1);
//Number of contacts left;
$yom_contacts_left = $max_yom_contacts;
$yom_contacts_left-=$menge;
$bool_online_shown = false;
$str_subtitle = 'Adressbuch`0';
// ADDRESS_PLUMI_CONTACTS
define('AD_PL_CO', 'ADDRESS_PLUMI_CONTACTS');
define('AD_PL_GU', 'ADDRESS_PLUMI_GUILD');
define('AD_PL_TE', 'ADDRESS_PLUMI_TEAM');
$bit_pl_CO = plu_mi_get_val(AD_PL_CO);
$bit_pl_GU = plu_mi_get_val(AD_PL_GU);
$bit_pl_TE = plu_mi_get_val(AD_PL_TE);
$plumi_CO_str = plu_mi(AD_PL_CO, $bit_pl_CO);
$pl_CO_ein = plu_mi_unique_id(AD_PL_CO);
$pl_CO_aus = plu_mi_unique_id(AD_PL_CO);
$output .= $plumi_CO_str. ' Kontaktliste '
. 'einblenden'
. 'ausblenden'
. ' `n'
;
if ($session['user']['guildid'])
{
$plumi_GU_str = plu_mi(AD_PL_GU, $bit_pl_GU);
$pl_GU_ein = plu_mi_unique_id(AD_PL_GU);
$pl_GU_aus = plu_mi_unique_id(AD_PL_GU);
$output .= $plumi_GU_str. ' Gildenliste '
. 'einblenden'
. 'ausblenden'
. ' `n'
;
}
if ($access_control->su_check(access_control::SU_RIGHT_GROTTO))
{
$plumi_TE_str = plu_mi(AD_PL_TE, $bit_pl_TE);
$pl_TE_ein = plu_mi_unique_id(AD_PL_TE);
$pl_TE_aus = plu_mi_unique_id(AD_PL_TE);
$output .= $plumi_TE_str. ' Teamliste '
. 'einblenden'
. 'ausblenden'
. ' `n'
;
}
$output .= '`n
';
if($yom_contacts_left>0)
{
$output .= '
`n
Neuer Kontakt
('.$yom_contacts_left.'/'.$max_yom_contacts.' frei)`n`n
';
}
else
{
$output.='`4Das Maximum von '.$max_yom_contacts.' Kontakten wurde erreicht.`0`n';
}
$output .= '
';
//$output.='`n`n';
// Bei Superusern mit entsprechendem Recht: Team anzeigen ; )
if($access_control->su_check(access_control::SU_RIGHT_GROTTO)) {
//$output .= '`n`n`n`t`bTeam:`b`0';
//$output .= '`n`0';
$output .= '
`t`b' . getsetting('teamname', '') . ':`b`0`n
';
$sql = 'SELECT a.acctid,a.name,a.loggedin,a.laston,a.activated,a.superuser
FROM accounts a
WHERE a.acctid != '.$session['user']['acctid'].' AND a.superuser>0 AND ('.user_get_online().')
ORDER BY superuser DESC, login ASC;';
$res = db_query($sql);
$int_last_su = 0;
if(!db_num_rows($res)) {
$output .= '
';
}
}
// END Teamanzeige
$output .= '';
}
break;
//Eingabe eines neuen Kontakts in das Adressbuch
case 'neuerkontakt':
{
$str_subtitle = 'Neuer Kontakt';
if ($_GET['name'])
{
$_GET['name'] = addslashes($_GET['name']);
$output .= '';
}
else
{
$output .= '`0
' . form_header('?op=neuerkontakt2') . '
`2Name:`0 ' . jslib_autocomplete_name('to', false, true) . '
';
}
}
break;
//Suche des Kontakts in der Datenbank
case 'neuerkontakt2':
{
$str_subtitle = 'Neuer Kontakt';
$sql = 'SELECT COUNT(*) AS anzahl FROM yom_adressbuch WHERE acctid='.$session['user']['acctid'];
$res = db_query($sql);
$a = db_fetch_assoc($res);
db_free_result($res);
if($a['anzahl'] >= getsetting('max_yom_contacts',1))
{
$output.='`4Du hast mit '.$a['anzahl'].' bereits das Limit von '.getsetting('max_yom_contacts',1).' Kontakten erreicht!';
}
else
{
if($_POST['to'])
{
$to = stripslashes($_POST['to']);
$output.='`2Name:`0 ';
$string = str_create_search_string($to);
$sql = 'SELECT name,acctid FROM accounts WHERE name LIKE \''.addslashes($string).'\' ORDER BY IF(login="'.addslashes($to).'",1,0) DESC, login ASC';
$result = db_query($sql);
}
else
{
$sql = 'SELECT name,acctid FROM accounts WHERE acctid='.(int)$_GET['id'];
$result = db_query($sql);
}
$output .= ' ';
}
}
}
break;
//Speichern des Kontakts im Adressbuch
case 'neuerkontakt3':
{
$str_subtitle = 'Neuer Kontakt';
$sql = 'SELECT COUNT(*) as menge FROM yom_adressbuch WHERE acctid='.$session['user']['acctid'].' AND player='.(int)$_POST['to'];
$result = db_query($sql);
$anzahl = mysql_result($result,0,'menge');
if ($anzahl>0)
{
$output.='`n`n`b`$Dieser Kontakt ist bereits gespeichert!`0`b';
}
else
{
$descr = mysql_escape_string($_POST['descr']);
$sql='INSERT INTO yom_adressbuch SET acctid='.$session['user']['acctid'].', player='.(int)$_POST['to'].', descr=\''.$descr.'\'';
db_query($sql);
$output.='`n`n`b`@Der Kontakt wurde gespeichert.`0`b';
}
}
break;
//Editieren des Kontakts, Ausgabe der Maske
case 'editkontakt1':
{
$str_subtitle = 'Adressbuch editieren';
if($_GET['row'])
{
$sql = "SELECT y.row_id,y.descr,a.name FROM yom_adressbuch y, accounts a WHERE y.row_id=".(int)$_GET['row']." AND a.acctid=y.player";
$res = db_query($sql);
if(db_num_rows($res))
{
$k = db_fetch_assoc($res);
$output.=' `2Name:`0 '.$k['name'].'`0
`n';
}
db_free_result($res);
}
}
break;
//Speichern des editierten Kontaktes
case 'editkontakt2':
{
$str_subtitle = 'Adressbuch editieren';
$descr = mysql_escape_string($_POST['descr']);
$sql='UPDATE yom_adressbuch SET descr = \''.$descr.'\' WHERE row_id='.(int)$_GET['row'];
db_query($sql);
$output.='`n`n`b`@Der Kontakt wurde gespeichert.`0`b';
}
break;
//Löschen eines Kontaktes aus dem Adressbuch
case 'delkontakt':
{
$str_subtitle = 'Kontakt aus Adressbuch löschen';
$sql='DELETE FROM yom_adressbuch WHERE row_id='.(int)$_GET['row'].' LIMIT 1 ';
db_query($sql);
$output.='`n`n`b`@Der Kontakt wurde gelöscht.`0`b';
}
break;
//Wenn keine Operation angegeben wurde
default:
{
$str_subtitle = 'Posteingang`0';
//Automatische Weiterleitung anzeigen wenn angeschaltet
if($access_control->su_check(access_control::SU_RIGHT_FORWARD_YOM_TO_SUPERUSER) && getsetting('forward_yom_admin_enable',1) && $session['user']['prefs']['forward_yom_to_superuser'] != -1 && !empty($session['user']['prefs']['forward_yom_to_superuser']))
{
$session['message'] = '`c`$Für deine Tauben ist eine Superuserweiterleitung aktiviert`0`c`n'.$session['message'];
}
//Ausgabe einer Statusnachricht wenn diese vorhanden ist
if(!empty($session['message'])) {
$output.=''.$session['message'].'`n';
//Statusnachricht löschen
unset($session['message']);
}
if(isset($session['refresh_maillink'])) {
// Mails in Hauptfenster aktualisieren
$output .= '';
unset($session['refresh_maillink']);
}
if(isset($session['refresh_minilink']) && $session['user']['prefs']['minimail']) {
// Minimails in Hauptfenster aktualisieren
$output .= '';
unset($session['refresh_minilink']);
}
$sql = 'SELECT mail.subject,mail.messageid,accounts.name,mail.msgfrom,mail.seen,mail.sent, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto='.$session['user']['acctid'].' AND mail.archived = 0 ORDER BY mail.seen,mail.sent DESC';
$result = db_query($sql);
// Anzahl der ungelesenen Nachrichten bestimmen
$int_unseen = 0;
//Anzahl der Tupel bestimmen
$int_mails = db_num_rows($result);
//Wenn mindestens eine Mail vorhanden ist
if ($int_mails>0)
{
$output.='';
}
else
{
$output.='`iDu hast momentan keine Mails!`i';
}
db_free_result($result);
//Zeige das Nachrichtenlimit an
//Für Admins
if ($access_control->su_lvl_check(1))
{
if($int_unseen>=getsetting('modinboxlimit',50))
{
$output.='`n`n`b`4Du hast '.$int_unseen.' ungelesene Nachrichten in deiner Mailbox.`nDu kannst höchstens '.getsetting('modinboxlimit',50).' ungelesene Nachrichten hier speichern. Solange Du zu viele Nachrichten hast, kann dir niemand etwas schicken!`n';
}
else
{
$output.='`n`n`iDu hast insgesamt '.$int_mails.' Nachrichten, davon '.$int_unseen.' ungelesen.`nDu kannst höchstens '.getsetting('modinboxlimit',50).' ungelesene Nachrichten hier speichern.`nNachrichten werden nach '.getsetting('modoldmail',14).' Tagen gelöscht.`i';
}
}
//Für normale Benutzer
else
{
if($int_unseen>=getsetting('inboxlimit',50))
{
$output.='`n`n`b`4Du hast '.$int_unseen.' Nachrichten in deiner Mailbox.`nDu kannst höchstens '.getsetting('inboxlimit',50).' ungelesene Nachrichten hier speichern. Solange Du zu viele Nachrichten hast, kann dir niemand etwas schicken!`n';
}
else
{
$output.='`n`n`iDu hast insgesamt '.$int_mails.' Nachrichten, davon '.$int_unseen.' ungelesen.`nDu kannst höchstens '.getsetting('inboxlimit',50).' ungelesene Nachrichten hier speichern.`nNachrichten werden nach '.getsetting('oldmail',14).' Tagen gelöscht.`i';
}
}
}
break;
}
//Header einstellen
$str_mailname = 'Taubenschlag von '.getsetting('townname','Atrahor').'';
popup_header($str_mailname, true);
$int_size_x = 700;
$int_size_y = 550;
//Erste Tabelle auf der Seite einstellen
$main_output .= '
';
//Adressbuch anzeigen wenn es eingeschaltet ist, oder wenn der User ein Admin ist
if(getsetting('show_yom_contacts',1)==1 || $access_control->su_lvl_check(1))
{
//$int_size_x+=200;
$main_output .= '
';
$main_output .= '';
//Dieser Teil hier ist lotgd.drachenserver.de spezifisch, er enthält etwas Werbung
$tail_output .= '
';
//Der gesammelte HTML Quelltext wird jetzt noch einmal durch den Parser gejagd, damit alle
//Farben und Formatierungen übernommen werden
$output = appoencode($main_output.$output.$tail_output,true);
// Maskierte Formatierungstags wieder zurückverwandeln
// Workaround, nicht optimal.
$output = str_replace('{#96}','`',$output);
//Anschließend wird die Seite geschlossen!
popup_footer(true);
?>