wenn du den Status auf 2 setzt, um eine gelöschte PM zu kennzeichnen, dann wird sie ja nicht "wirklich" gelöscht...
PM System
Einklappen
X
-
wenn du den Status auf 2 setzt, um eine gelöschte PM zu kennzeichnen, dann wird sie ja nicht "wirklich" gelöscht...
Die "gelöschten" Mails werden aus dem Posteingang/Ausgang entfernt, bleiben aber in der Datenbank.
Ich kann ja nie vorher wissen, wer von den beiden (Empfänger oder Absender) die Mail als erstes löscht. Er würde Sie ja dann auch aus dem Posteingang/Ausgang des anderen killen
Die Mails werden bei uns 3 Monate aufbewahrt und dann per script entgültig gelöscht.
Kommentar
-
Jo, das wäre möglich, AAAABER
dann hätte ich ja momentan anstelle von 10.721 *denk* 21441 Einträge in der db. Und das in nur 3 Monaten. Nee, dann lieber ein feld mehr
Wir behalten die Sachen weil wir den Usern ne Statistik anbieten und wir wollen später noch ein Mail to POP3 anbieten, dort sollen alle Mails (nicht älter als 3 Monate) per Mail an den User geschickt werden können. Deswegen nicht wirklich löschen.
Kommentar
-
asoo, aber das hört sich mal echt geil an.
Ich brauche auch nochn PM System für die Seite meiner Schule...
irgendwann werde ich damit beginnen, erstmal muss das Usermanagement hinhauen ^^
kannst ja mal ab und zu deinen Fortschritt posten
Kommentar
-
Ich will das mal zusammenfassen oder versuchen
Da das Script schon ziemlich speziell an unsere Seite angepasst wurde, wäre es sinnlos den ganzen Code hier zu Posten.
Die User loggen sich bei unserem System ein und haben logischerweise eine UserId.
Wenn ein User nun eine Mail schreibt, wird ein Datensatz wie folgt aufgebaut:
PHP-Code:$sqlinsert=" insert into ".$table."ShortMesseages
(`MesseageId`, `MesseageToId`, `MesseageFromId`,`Timestamp`,`Messeage`, `FromStatus`, `ToStatus`,`typ`)
VALUES
('', '$UserId', '$SessionUser', '$time', '$Messeage','gesendet', 'ungelesen','telegramm')";
Werden im Posteingang mit unterschiedlichen Symbolen gekennzeichnet
Im Postfach selektiere ich die Mails dann:
PHP-Code:$sqla ="Select * From ".$table."ShortMesseages where MesseageFromId = '$SessionUser' and FromStatus <> 'gelöscht' order by 'timestamp' DESC";
$sqle ="Select * From ".$table."ShortMesseages where MesseageToId = '$SessionUser' and ToStatus <> 'gelöscht' order by 'timestamp' DESC";
Wenn ein User eine Mail liest, setze ich beide Statis auf gelesen.
Löscht einer der beiden User diese Mail, wird der entsprechende Status auf gelöscht gesetzt.
Direkt nach dem Login des Users auf unsere Seite, geht ein Popupfenster auf, wenn er NAchrichten in seiner Abwesenheit bekommen hat (Du hast XX neue Mails)
Bekommt er eine Mail wärend er eingeloggt ist, popt direkt die Mail auf.
Die andere Sache mit dem Alle mails auf POP3 schicken ist ja kein Problem. Mit der $Sessionuser kann ich mittels leftjoin die Emailadresse auslesen.
Danach wird der ganze Posteingang oder Postausgang in eine Variable gepackt und anschließend in den Text der Mail gepflanzt.
Das löschscript starte ich wohl noch von Hand, die drei Monate sind ja noch nicht ganz rum. Da kann ich ja anhand des Timestamps aus der db einfach alle Mails löschen, die älter als 3 Monate sind.
Das ist quasi schon die ganze Kunst.
Hoffe, das war einigemraßen verständlich
Kommentar
-
ok ich mach das aber jetz ein wenig besser
ich hab jetzt nen papierkorb gebastelt wo alle gelöschten nachrichten drinnen sind (die mit status 2). dann hab ich ein neues feld gemacht namens deltime, dieses wird mit dem timestamp gefüllt, wann die nachricht in den papierkorb wandert. dann kann man mittels knopfdruck die nachricht wiederherstellen (also status auf 1 setzen). dann wird nach einer bestimmten zeit der status auf 3 gesetzt, also ganz gelöscht wobei die pm ja noch da ist und daraus kann man dann ne echte statistik machen...
ps: bei peacie ist nämlcih die statistik dann verfälscht wenn die nachrichten dann endgültig gelöscht werden...
[edit] hab noch nen fehler in der select abfrage: es sollte alle gelöschten kommen, also dort wo ich der sender bin und der sendstatus auf 2 is, und dort wo ich der empfänger bni und der empfängerstatus auf 2 is.. das ergebnis is 0 obwohl 2 datensätze so aussehen...
hier die abfrage:
Code:("SELECT pmID FROM ".$prefix."_pms WHERE (senderID = '$user[userID]' AND sendstatus = '2') AND (recID = '$user[userID]' AND recstatus = '2')"
[edit2] schon draufgekommen, es gehört OR in der mitteZuletzt geändert von 3Dfx; 25.08.2004, 14:10.
Kommentar
Kommentar