Servus,
Da wir auf unserem Server den Sourcecode nicht freigegeben haben, haben wir uns entschlossen ab und zu ein paar Skripte zu veröffentlichen.
Erstmal der wichtigste Grund, warum wir den Sourcecode nicht (mehr) freigeben.
1. Wir haben sehr sehr viele Änderungen am Kern von Logd 0.97 vorgenommen. Der absolute Großteil unserer Skripte ist nicht mehr unter der aktuellen 0.97er Version lauffähig.
Das folgende Skript ergänzt die "Ye Olde Mail" um ein recht simples Adressbuch.... Aber immernoch besser als KEIN Adressbuch ;-)
Jetzt gehts los ;-)
----------------------
[php]
++++++++++++++++
+Datenbank-Teil+
++++++++++++++++
Neue Tabelle erstellen
CREATE TABLE `mailadressen` (
`row_id` int(11) NOT NULL auto_increment,
`acctid` int(11) NOT NULL default '0',
`player` varchar(255) NOT NULL default '',
`descr` varchar(80) NOT NULL default '',
PRIMARY KEY (`row_id`),
KEY `acctid` (`acctid`)
);
++++++++++++++++
+ Datei-Teil +
++++++++++++++++
Datei: newstyle.css
###################
ändere Wert:
a.motd {...
width: 150px;
...}
a:hover.motd {...
width: 150px;
...}
a.hotmotd {...
width: 150px;
...}
Datei: mail.php
################
suche:
-------
output("`c<a href='mail.php' class='motd'>Inbox</a>
<a href='mail.php?op=address' class='motd'>Mail schreiben</a>",true);
// (oder so ähnlich, ca. Zeile 35)
ergänze:
---------
output("<a href='mail.php?op=buch' class='motd'>Adressbuch</a>`c`n`n",true); //
http://www.plueschdrache.de Adressbuch
suche:
------
popup_footer();
ergänze davor:
--------------
elseif ($HTTP_GET_VARS[op] == 'buch'){ // Adressbuch
/**********************************************
*Diese Box darf nicht entfernt werden! *
*------------------------------------- *
*Adressbuch von deZent und draKarr *
*Version: 0.5 *
*www.plueschdrache.de *
**********************************************/
$sql ="SELECT DISTINCT player, descr FROM mailadressen WHERE acctid=".$session[user][acctid]." ORDER BY player;";
$result=mysql_query($sql);
$menge =mysql_num_rows($result);
output("`c`bAdressbuch`b`c`n`n");
output("<table>",true);
for ($i=0;$i<$menge;$i++){
output("<tr><td><a href='mail.php?op=write&to=".mysql_result($result,$i,"player")."'>» </a></td>
<td><a href='mail.php?op=write&to=".mysql_result($result,$i,"player")."'>".mysql_result($result,$i,"player")."</a></td>
<td> </td>
<td> ".mysql_result($result,$i,"descr")."</td>
</tr> ",true);
}
if (!$menge){
output("`n`$ Du hast noch keine Kontakte gespeichert`7`n");}
output("</table>",true);
output("`n`n");
output("<a href='mail.php?op=neuerkontakt' class='motd'>neuer Kontakt</a>
<a href='mail.php?op=delkontakt' class='motd'>Kontakt löschen</a>",true);
}elseif ($HTTP_GET_VARS[op] == 'neuerkontakt'){
output("<form action='mail.php?op=neuerkontakt2' method='POST'>",true);
output("`b`2Name:`b`n");
output("`2<u>A</u>n: <input name='to' accesskey='a' value='".$_GET[name]."'> <input type='submit' class='button' value='Kontakt suchen'></form>",true);
}elseif ($HTTP_GET_VARS[op] == 'neuerkontakt2'){
output("`2Name: ");
$string="%";
for ($x=0;$x<strlen($_POST['to']);$x++){
$string .= substr($_POST['to'],$x,1)."%";
}
$sql = "SELECT login,name FROM accounts WHERE name LIKE '".addslashes($string)."' AND locked=0 ORDER BY login";
$result = db_query($sql);
output("<form action='mail.php?op=neuerkontakt3' method='POST'>",true);
if (db_num_rows($result)==1){
$row = db_fetch_assoc($result);
output("<input type='hidden' name='to' value=\"".HTMLEntities($row[login])."\">",true);
output("`^$row[name]`n");
}else{
output("<select name='to'>",true);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
output("<option value=\"".HTMLEntities($row[login])."\">",true);
output(preg_replace("/[`]./","",$row[name]));
}
output("</select><br>`n",true);
}
output("<br>Beschreibung [max.80]:<input type='text' name='descr' maxlenght='80' size='13'>",true);
output("<br><br><input type='submit' name='s1' value='Kontakt speichern'>`n",true);
output("</form>`n",true);
}elseif ($HTTP_GET_VARS[op] == 'neuerkontakt3'){
$sql = "SELECT COUNT(*) as menge FROM mailadressen WHERE player='".$HTTP_POST_VARS[to]."'";
$result = mysql_query($sql);
$anzahl = mysql_result($result,0,"menge");
if ($menge>0){
output("<font size=+1>Dieser Kontakt ist bereits gespeichert!",true);
}
else{
$descr = mysql_escape_string($HTTP_POST_VARS[descr]);
$sql="INSERT INTO mailadressen (row_id, acctid, player, descr)
VALUES (NULL, ".$session[user][acctid].", '".$HTTP_POST_VARS[to]."', '".$descr."')";
mysql_query($sql);
output("<font size=+1>Der Kontakt wurde gespeichert.</font>",true);
}
output("<a href='mail.php?op=neuerkontakt' class='motd'>neuer Kontakt</a>
<a href='mail.php?op=delkontakt' class='motd'>Kontakt löschen</a>",true);
}elseif ($HTTP_GET_VARS[op] == 'delkontakt'){
$sql ="SELECT DISTINCT row_id,player FROM mailadressen WHERE acctid=".$session[user][acctid]." ORDER BY player;";
$result=mysql_query($sql);
$menge =mysql_num_rows($result);
output("`c`bAdresse löschen`b`c`n`n");
for ($i=0;$i<$menge;$i++){
output("<a href='mail.php?op=delkontakt2&row=".mysql_result($result,$i,"row_id")."'>`$[del] </a>`7 ".mysql_result($result,$i,"player")."<br>",true);
}
}elseif ($HTTP_GET_VARS[op] == 'delkontakt2'){
$sql="DELETE FROM mailadressen WHERE row_id='".$HTTP_GET_VARS[row]."' LIMIT 1 ";
mysql_query($sql);
output("`$<font size+1>Kontakt gelöscht!</font>",true);
}
[/php]
$this->bbcode_second_pass_code('', '
++++++++++++++++
+ REST +
++++++++++++++++
Bekannte Probleme:
------------------
1. Man muss das Fenster in dem die mail angezeigt wird aktualisieren (F5), damit die neue CSS Datei geladen wird.
-> Abhilfe: Datei in newstyle2.css umbenennen, und in der common.php verändern
2. Funzt "nur" in MySQL Datenbanken, da ich schlicht und ergreifend die "mysql_" Befehle anstatt der "db_" Befehle benutzt habe.
--> Abhilfe: einfach ändern.
3. Kann sein, dass ich nicht alle Eingaben gegen Hochkommas usw abgesichert habe. Auf meinem Server kamen jedoch noch keine Beanstandungen.
Grundlagen :
------------
Die Hinweise auf www.plueschdrache.de, deZent, draKarr dürfen nicht entfernt werden.
Falls sich jemand die Mühe macht das Teil in die 0.98er Version zu portieren, kann er dies gerne tun.
Falls du bereits ein Adressbuch hast, bzw. in der aktuellen 0.97er / 0.98er Version bereits ein Adressbuch integriert ist... ja dann sollte ich mal wieder öfters die neuen Versionen anschauen ;-)
')
Dies ist (leider) keine 100% Einbau-Anleitung, da ich zZ keinen orginalen logd-Server zum testen habe. Bei Problemen bitte melden.
Gruß,
deZent, draKarr
P.S. Ihr solltet bei den "User-löschen" - Funktionen auch das Adressbuch löschen lassen! ( müsste an ca.3 Stellen im Ur-Logd sein.)
Einfach [php]
$sql="DELETE FROM mailadressen WHERE acctid='.$zuloeschende_acctid.' OR player ='.$zuloeschende_acctid.' ;";
mysql_query($sql);[/php]