ilch Forum » Ilch Clan 1.1 » Allgemein » PM Nachrichten Automatisch Löschen

Geschlossen
  1. #1
    User Pic
    marco1978 Mitglied
    Registriert seit
    03.12.2008
    Beiträge
    116
    Beitragswertungen
    1 Beitragspunkte
    Hallo

    wie Kann man das machen das die PM Nachrichten Automatisch nach 30 Tgen oder so Gelöscht werden

    wo und was ms ich ändern?

    Ich sage schon mal Danke in voraus
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Wo, na natürlich in der Privmsg php datei

    Was, na einen code der anhand des absende Datums entscheidet ob die Datei zu löschen ist.

    Sind wir hier bei "Wünsch dir Was?"...

    1. Der entsprechende Code dafür findet sich hier im Forum, allerdings nicht fürs Msg sys sondern für den Awaycal, die Suche hätte diesen zu Tage gefördert.

    2. Sind wir hier nicht dafür da um Jeden der herkommt zu sagen was und wi wo genau hin muss damit alle seine Wünsche wahr werden.

    3. Wenn du es haben willst zeige Eigeninitiative und den Versuch es selbst zu erlernen und zu ändern. Wenns dann nicht geht, Helfen wir gern.
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Unknown|User gelöschter User
    Rock@wulf... komm' schon. Heute nicht ausgeschlafen?
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.643
    Beitragswertungen
    1195 Beitragspunkte
    DELETE FROM prefix_pm WHERE time < time()-2592000
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Nein in der Tat war ich da erst 7 min Wach.
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Unknown|User gelöschter User
    Er hat doch eigentlich nichts großes auf dem Herzen... lächeln
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    tcrack Mitglied
    Registriert seit
    31.07.2011
    Beiträge
    46
    Beitragswertungen
    0 Beitragspunkte
    Hallo Lord|Schirmer,

    ZitatZitat geschrieben von Lord|Schirmer

    DELETE FROM prefix_pm WHERE time < time()-2592000


    Wo muss ich den Code einfügen?

    Hier mal ein ganz großes Lob und ein fettes DANKESCHÖN an all diejenigen, die hier unermütlich Antworten auf unsere (ich hoffe nicht Nervenden) Fragen geben.(Y)zwinker

    Gruß Thomas

    Hier meine privmsg.php
    <?php
    // Copyright by: Manuel Staechele
    // Support: www.ilch.de
    defined ('main') or die ('no direct access');
    
    function getSDmon($time){
    	$m = date('n', $time);
    	$s = $m == 3 ? 8 : 3;
    	return substr(getDmon($m),0,$s);
    }
    
    $title = $allgAr['title'] . ' :: Forum :: Private Nachrichten';
    $hmenu = $extented_forum_menu . '<a class="smalfont" href="index.php?forum">Forum</a><b> &raquo; </b><a class="smalfont" href="index.php?forum-privmsg">Private Nachrichten</a>' . $extented_forum_menu_sufix;
    $design = new design ($title , $hmenu, 1);
    $design->header();
    
    if ($allgAr['Fpmf'] != 1) {
        echo 'Private Nachrichten wurden von dem Administrator komplet gesperrt';
        echo '<br><a href="javascript:history.back(-1)">zurück</a>';
        $design->footer(1);
    } elseif (!loggedin()) {
        echo '<br>Gäste dürfen keine Privaten Nachrichten Verschicken!';
        $tpl = new tpl ('user/login');
        $tpl->set_out('WDLINK', 'index.php', 0);
        $design->footer(1);
    } elseif (db_result(db_query("SELECT opt_pm FROM prefix_user WHERE id = " . $_SESSION['authid']), 0) == 0) {
        echo 'Im <a href="index.php?user-profil">Profil</a> einstellen das du die PrivMsg Funktion nutzen m&ouml;chtest';
        $design->footer(1);
    }
    
    $uum = $menu->get(2);
    if ($uum == 'delete' and isset($_POST['toArchiv'])) {
    	$uum = 'toArchiv';
    }
    
    switch ($uum) {
        case 'new' :
            // neue pm schreiben und eintragen
            $show_formular = true;
            $txt = '';
            $bet = '';
    
            if (isset($_POST['sub'])) {
                $txt = escape($_POST['txt'], 'textarea');
                $bet = escape($_POST['bet'], 'string');
                $name = escape($_POST['name'], 'string');
                if (1 == db_result(db_query("SELECT count(*) FROM prefix_user WHERE name = BINARY '" . $name . "'"), 0)) {
                    $show_formular = false;
                } else {
                    echo 'Dieser Empf&auml;nger konnte nicht gefunden werden';
                }
            }
    
            if ($show_formular === true) {
                $name = '';
                $empfid = 0;
                if (isset($_REQUEST['empfid'])) {
                    $empfid = escape($_REQUEST['empfid'], 'integer');
                }
                $empfid = escape($empfid, 'integer');
                if ($empfid > 0) {
                    $name = db_result(db_query("SELECT name FROM prefix_user WHERE id = " . $empfid), 0);
                }
                $ar = array (
                    'name' => $name,
                    'SMILIES' => getsmilies(),
                    'TXT' => $txt,
                    'BET' => $bet,
                    );
    
                if (isset($_REQUEST['text'])) {
                    $ar['TXT'] = unescape(escape($_REQUEST['text'], 'textarea'));
                }
                if (isset($_REQUEST['anhang'])) {
                    $x = explode("\n", unescape(escape(urldecode($_REQUEST['anhang']), 'textarea')));
                    $n = '';
                    for ($i = 0; $i <= count($x); $i++) {
                        if (empty($x[$i])) {
                            continue;
                        }
                        $n .= '> ' . $x[$i] . "\n";
                    }
                    $ar['TXT'] .= "\n\n" . $n;
                }
                if (isset($_POST['bet'])) {
                    $ar['BET'] = unescape(escape($_REQUEST['bet'], 'string'));
                }
                if (isset($_POST['re']) AND strpos ($ar['BET'], 're') === false AND strpos ($ar['BET'], 'Re') === false AND strpos ($ar['BET'], 'RE') === false) {
                    $ar['BET'] = 'Re(1): ' . $ar['BET'];
                } elseif (isset($_POST['re'])) {
                    $x = preg_replace("/re\((\d+)\):.*/i", "\\1", trim($ar['BET']));
                    if (is_numeric($x)) {
                        $x = $x + 1;
                        $ar['BET'] = preg_replace("/(re)\(\d+\):(.*)/i", "\\1(" . $x . "):\\2", $ar['BET']);
                    }
                }
    
                $tpl = new tpl ('forum/pm/new');
                $tpl->set_ar_out($ar, 0);
            } else {
                $eid = db_result(db_query("SELECT id FROM prefix_user WHERE name = BINARY '" . $name . "'"), 0);
                sendpm($_SESSION['authid'], $eid, $bet, $txt);
                wd('index.php?forum-privmsg', 'Die Nachricht wurde erfolgreich gesendet');
            }
            break;
        case 'showmsg' :
            // message anzeigen lassen
            $pid = escape($menu->get(3), 'integer');
            $soeid = ($menu->get(4) == 's' ? 'eid' : 'sid');
            $erg = db_query("SELECT a.gelesen, a.eid, a.sid, a.id, b.name, a.titel, a.time, a.txt FROM `prefix_pm` a LEFT JOIN prefix_user b ON a." . $soeid . " = b.id WHERE a.id = " . $pid);
            $row = db_fetch_assoc($erg);
            if (($row['sid'] != $_SESSION['authid'] AND $menu->get(4) == 's')
                    OR ($row['eid'] != $_SESSION['authid'] AND $menu->get(4) != 's')) {
                $design->footer(1);
            }
            if ($row['gelesen'] == 0 AND $menu->get(4) != 's') {
                db_query("UPDATE `prefix_pm` SET gelesen = 1 WHERE id = " . $pid);
            }
            $row['time'] = date('d. ',$row['time']).getDmon(date(n, $row['time'])).date(' y - H:i \U\h\r', $row['time']);
            $row['anhang'] = urlencode($row['txt']);
            $row['txt'] = bbcode(unescape($row['txt']));
            if ($menu->get(4) == 's') {
                $tpl = new tpl ('forum/pm/show_mess_send');
            } else {
                $tpl = new tpl ('forum/pm/show_mess');
            }
            $tpl->set_ar_out($row, 0);
            break;
        case 'delete' :
    		// löschen von nachrichten
            if ($menu->get(3) != '' AND $menu->get(4) == '') {
                $_POST['delids'][] = $menu->get(3);
            }elseif ($menu->get(3) != '' AND $menu->get(4) == 's') {
                $_POST['delsids'][] = $menu->get(3);
            }
            if (empty($_POST['delids']) AND empty($_POST['delsids'])) {
                echo 'Es wurde keine Nachricht zum l&ouml;schen gew&auml;hlt <br /><br />';
                echo '<a href="javascript:history.back(-1)"><b>&laquo;</b> zur&uuml;ck</a>';
            } else {
                if ((empty($_POST['delids']) AND empty($_POST['delsids'])) OR empty($_POST['sub'])) {
                    $delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
                    $s = (empty($_POST['delids'])?'':'s');
                    echo '<form action="index.php?forum-privmsg-delete" method="POST">';
                    $i = 0;
                    if (!is_array($delids)) {
                        $delids = array ($delids);
                    }
                    foreach ($delids as $a) {
                        $i++;
                        echo '<input type="hidden" name="del' . $s . 'ids[]" value="' . $a . '">';
                    }
                    echo '<div align="center"><h2>Private Nachrichten endgültig löschen</h2><br><br><br>Möchten Sie die Nachricht/en wirklich endgültig löschen ?<br><br><input type="submit" value=" Ja " name="sub"> &nbsp; &nbsp; <input type="button" value="Nein" onclick="document.location.href =\'?forum-privmsg\'"></form></div>';
                } else {
                    $delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
                    $s = (empty($_POST['delids'])?'':'s');
                    if ($s == 's') {
                    	$soeid = 'sid';
                    	$stat1 = 1;
                    	$arch = 'IF(archiv>=2,archiv-2,archiv)';
    				} else {
    					$soeid = 'eid';
    					$stat1 = -1;
    					$arch = 'IF(archiv%2=1,archiv-1,archiv)';
    				}
    				$stat2 = $stat1 * - 1;
                    $i = 0;
                    if (!is_array($delids)) {
                        $delids = Array ($delids);
                    }
                    foreach ($delids as $a) {
                        if (is_numeric($a) AND $a != 0) {
                            db_query("DELETE FROM `prefix_pm` WHERE id = " . $a . " AND " . $soeid . " = " . $_SESSION['authid'] . " AND status = " . $stat1);
                            db_query("UPDATE prefix_pm SET status = " . $stat2 . ", archiv = {$arch} WHERE id = " . $a . " AND " . $soeid . " = " . $_SESSION['authid']);
                            $i++;
                        }
                    }
                    echo '<br /><div align="center"><h2>Erfolgreich gelöscht </h2><br /><br /><a href="index.php?forum-privmsg">zum Nachrichten Eingang</a><meta http-equiv="refresh" content="5; URL=index.php?forum-privmsg"><br /><br /><a href="index.php?forum-privmsg">zum Posteingang</a>
    <br /><br /><a href="index.php?forum-privmsg-showsend">zum Postausgang</a>
    <br /><br /><a href="index.php?forum-privmsg-archiv">zum Archiv</a></div>
    ';
                }
            }
            break;
    	case 'toArchiv' :
    		// löschen von nachrichten
    		if ($menu->get(3) != '' AND $menu->get(4) == '') {
    			$_POST['delids'][] = $menu->get(3);
    		}elseif ($menu->get(3) != '' AND $menu->get(4) == 's') {
    			$_POST['delsids'][] = $menu->get(3);
    		}
    		if (empty($_POST['delids']) AND empty($_POST['delsids'])) {
    			echo 'Es wurde keine Nachricht zum Archivieren gew&auml;hlt <br /><br />';
    			echo '<a href="javascript:history.back(-1)"><b>&laquo;</b> zur&uuml;ck</a>';
    		} else {
    			$delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
    			$s = (empty($_POST['delids'])?'':'s');
    			$i = 0;
    			if (!is_array($delids)) {
    				$delids = Array ($delids);
    			}
    			foreach ($delids as $j => $a) {
    				if (intval($a) > 0) {
    					$delids[$j] = intval($a);
    				} else {
    					unset($delids[$j-$i]);
    					$i++;
    				}
    			}
    			$delids = implode(', ', $delids);
    			if ($s == 's') {
    				$qry = "UPDATE prefix_pm SET archiv = archiv + 1 WHERE id IN ({$delids}) AND eid = {$_SESSION['authid']} AND (archiv % 2) = 0";
    			} else {
    				$qry = "UPDATE prefix_pm SET archiv = archiv + 2 WHERE id IN ({$delids}) AND sid = {$_SESSION['authid']} AND archiv < 2";
    			}
    			db_query($qry);
    			echo 'Es wurd';
    			echo ($i > 1 ? 'en (' . $i . ') Nachrichten ' : 'e eine Nachricht ');
    			echo <<<HTML
    erfolgreich ins Archiv verschoben. <br /><br /><a href="index.php?forum-privmsg">zum Posteingang</a>
    <br /><a href="index.php?forum-privmsg-showsend">zum Postausgang</a>
    <br /><a href="index.php?forum-privmsg-archiv">zum Archiv</a>
    HTML;
    		}
    		break;
        case 'showsend' :
            $tpl = new tpl ('forum/pm/showsend');
            $tpl->out(0);
            $class = 'Cmite';
            $abf = "SELECT a.titel, b.name as empf, a.id, a.`time`, a.gelesen FROM `prefix_pm` a left join prefix_user b ON a.eid = b.id WHERE a.sid = " . $_SESSION['authid'] . " AND a.status >= 0 AND a.archiv < 2 ORDER BY time DESC";
            $erg = db_query($abf);
            while ($row = db_fetch_assoc($erg)) {
    $row['NEW'] = ($row['NEW'] == 0 ? '<span style="color: red; text-decoration: blink; font-weight: bold; font-style: italic;">neu</span>' : '');
                $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
                $row['class'] = $class;
                $row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
            	$row['titel'] = (trim($row['titel']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['titel']);
    			$row['NEW'] = $row['gelesen'] == 0 ? '<img src="include/images/icons/ungelesen.gif" alt="ungelesen" title="Nachricht wurde noch nicht gelesen" style="cursor:help;"/>' : '';
                $tpl->set_ar_out($row, 1);
            }
            $tpl->out(2);
            break;
        case 'archiv':
    		$tpl = new tpl ('forum/pm/archiv');
    		$tpl->out(0);
    		$class = 'Cmite';
    		//empf
    		$abf = "SELECT a.titel as BET, a.gelesen as NEW, b.name as ABS, a.id as ID, a.`time` FROM `prefix_pm` a left join prefix_user b ON a.sid = b.id WHERE a.eid = " . $_SESSION['authid'] . " AND a.status <= 0 AND a.archiv % 2 = 1 ORDER BY time DESC";
    		$erg = db_query($abf);
    		if (db_num_rows($erg)) {
    			$tpl->out(1);
    			while ($row = db_fetch_assoc($erg)) {
    $row['NEW'] = $row['gelesen'] == 0 ? '<img src="include/images/icons/ungelesen.gif" alt="ungelesen" title="Nachricht wurde noch nicht gelesen" style="cursor:help;"/>' : '';
    				$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
    				$row['BET'] = (trim($row['BET']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['BET']);
    				$row['CLASS'] = $class;
    				$row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
    				$tpl->set_ar_out($row, 2);
    			}
    			$tpl->out(3);
    		}
        	//ges
    		$abf = "SELECT a.titel, b.name as empf, a.id, a.`time`, a.gelesen FROM `prefix_pm` a left join prefix_user b ON a.eid = b.id WHERE a.sid = " . $_SESSION['authid'] . " AND a.status >= 0 AND a.archiv >= 2 ORDER BY time DESC";
    		$erg = db_query($abf);
    		if (db_num_rows($erg)) {
    			$tpl->out(4);
    			while ($row = db_fetch_assoc($erg)) {
    				$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
    				$row['titel'] = (trim($row['titel']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['titel']);
    				$row['class'] = $class;
    				$row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
    				$tpl->set_ar_out($row, 5);
    			}
    			$tpl->out(6);
    		}
    		break;
        default :
            // message übersicht.
            $tpl = new tpl ('forum/pm/show');
            $tpl->out(0);
            $class = 'Cmite';
            $abf = "SELECT a.titel as BET, a.gelesen as NEW, b.name as ABS, a.id as ID, a.`time` FROM `prefix_pm` a left join prefix_user b ON a.sid = b.id WHERE a.eid = " . $_SESSION['authid'] . " AND a.status <= 0 AND a.archiv % 2 = 0 ORDER BY time DESC";
            $erg = db_query($abf);
            while ($row = db_fetch_assoc($erg)) {
                $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
                $row['NEW'] = ($row['NEW'] == 0 ? '<span style="color: red; text-decoration: blink; font-weight: bold; font-style: italic;">neu</span>' : '');
                $row['CLASS'] = $class;
                $row['BET'] = (trim($row['BET']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['BET']);
                $row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
                $tpl->set_ar_out($row, 1);
            }
            $tpl->out(2);
            break;
    }
    $design->footer();
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.643
    Beitragswertungen
    1195 Beitragspunkte
    Evtl. vor der Zeile 102 vor der Funktion sendpm();
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    tcrack Mitglied
    Registriert seit
    31.07.2011
    Beiträge
    46
    Beitragswertungen
    0 Beitragspunkte
    Danke für deine schnelle Antwort,

    aber nach dem ich den Code eingefügt habe, kommt folgender fehler:

    Parse error: syntax error, unexpected T_STRING

    Habe es so versucht, klappt aber auch nicht :-(

    Änderung #131 bis #135

    <?php
    // Copyright by: Manuel Staechele
    // Support: www.ilch.de
    defined ('main') or die ('no direct access');
    
    function getSDmon($time){
    	$m = date('n', $time);
    	$s = $m == 3 ? 8 : 3;
    	return substr(getDmon($m),0,$s);
    }
    
    $title = $allgAr['title'] . ' :: Forum :: Private Nachrichten';
    $hmenu = $extented_forum_menu . '<a class="smalfont" href="index.php?forum">Forum</a><b> &raquo; </b><a class="smalfont" href="index.php?forum-privmsg">Private Nachrichten</a>' . $extented_forum_menu_sufix;
    $design = new design ($title , $hmenu, 1);
    $design->header();
    
    if ($allgAr['Fpmf'] != 1) {
        echo 'Private Nachrichten wurden von dem Administrator komplet gesperrt';
        echo '<br><a href="javascript:history.back(-1)">zurück</a>';
        $design->footer(1);
    } elseif (!loggedin()) {
        echo '<br>Gäste dürfen keine Privaten Nachrichten Verschicken!';
        $tpl = new tpl ('user/login');
        $tpl->set_out('WDLINK', 'index.php', 0);
        $design->footer(1);
    } elseif (db_result(db_query("SELECT opt_pm FROM prefix_user WHERE id = " . $_SESSION['authid']), 0) == 0) {
        echo 'Im <a href="index.php?user-profil">Profil</a> einstellen das du die PrivMsg Funktion nutzen m&ouml;chtest';
        $design->footer(1);
    }
    
    $uum = $menu->get(2);
    if ($uum == 'delete' and isset($_POST['toArchiv'])) {
    	$uum = 'toArchiv';
    }
    
    switch ($uum) {
        case 'new' :
            // neue pm schreiben und eintragen
            $show_formular = true;
            $txt = '';
            $bet = '';
    
            if (isset($_POST['sub'])) {
                $txt = escape($_POST['txt'], 'textarea');
                $bet = escape($_POST['bet'], 'string');
                $name = escape($_POST['name'], 'string');
                if (1 == db_result(db_query("SELECT count(*) FROM prefix_user WHERE name = BINARY '" . $name . "'"), 0)) {
                    $show_formular = false;
                } else {
                    echo 'Dieser Empf&auml;nger konnte nicht gefunden werden';
                }
            }
    
            if ($show_formular === true) {
                $name = '';
                $empfid = 0;
                if (isset($_REQUEST['empfid'])) {
                    $empfid = escape($_REQUEST['empfid'], 'integer');
                }
                $empfid = escape($empfid, 'integer');
                if ($empfid > 0) {
                    $name = db_result(db_query("SELECT name FROM prefix_user WHERE id = " . $empfid), 0);
                }
                $ar = array (
                    'name' => $name,
                    'SMILIES' => getsmilies(),
                    'TXT' => $txt,
                    'BET' => $bet,
                    );
    
                if (isset($_REQUEST['text'])) {
                    $ar['TXT'] = unescape(escape($_REQUEST['text'], 'textarea'));
                }
                if (isset($_REQUEST['anhang'])) {
                    $x = explode("\n", unescape(escape(urldecode($_REQUEST['anhang']), 'textarea')));
                    $n = '';
                    for ($i = 0; $i <= count($x); $i++) {
                        if (empty($x[$i])) {
                            continue;
                        }
                        $n .= '> ' . $x[$i] . "\n";
                    }
                    $ar['TXT'] .= "\n\n" . $n;
                }
                if (isset($_POST['bet'])) {
                    $ar['BET'] = unescape(escape($_REQUEST['bet'], 'string'));
                }
                if (isset($_POST['re']) AND strpos ($ar['BET'], 're') === false AND strpos ($ar['BET'], 'Re') === false AND strpos ($ar['BET'], 'RE') === false) {
                    $ar['BET'] = 'Re(1): ' . $ar['BET'];
                } elseif (isset($_POST['re'])) {
                    $x = preg_replace("/re\((\d+)\):.*/i", "\\1", trim($ar['BET']));
                    if (is_numeric($x)) {
                        $x = $x + 1;
                        $ar['BET'] = preg_replace("/(re)\(\d+\):(.*)/i", "\\1(" . $x . "):\\2", $ar['BET']);
                    }
                }
    
                $tpl = new tpl ('forum/pm/new');
                $tpl->set_ar_out($ar, 0);
            } else {
                $eid = db_result(db_query("SELECT id FROM prefix_user WHERE name = BINARY '" . $name . "'"), 0);
                sendpm($_SESSION['authid'], $eid, $bet, $txt);
                wd('index.php?forum-privmsg', 'Die Nachricht wurde erfolgreich gesendet');
            }
            break;
        case 'showmsg' :
            // message anzeigen lassen
            $pid = escape($menu->get(3), 'integer');
            $soeid = ($menu->get(4) == 's' ? 'eid' : 'sid');
            $erg = db_query("SELECT a.gelesen, a.eid, a.sid, a.id, b.name, a.titel, a.time, a.txt FROM `prefix_pm` a LEFT JOIN prefix_user b ON a." . $soeid . " = b.id WHERE a.id = " . $pid);
            $row = db_fetch_assoc($erg);
            if (($row['sid'] != $_SESSION['authid'] AND $menu->get(4) == 's')
                    OR ($row['eid'] != $_SESSION['authid'] AND $menu->get(4) != 's')) {
                $design->footer(1);
            }
            if ($row['gelesen'] == 0 AND $menu->get(4) != 's') {
                db_query("UPDATE `prefix_pm` SET gelesen = 1 WHERE id = " . $pid);
            }
            $row['time'] = date('d. ',$row['time']).getDmon(date(n, $row['time'])).date(' y - H:i \U\h\r', $row['time']);
            $row['anhang'] = urlencode($row['txt']);
            $row['txt'] = bbcode(unescape($row['txt']));
            if ($menu->get(4) == 's') {
                $tpl = new tpl ('forum/pm/show_mess_send');
            } else {
                $tpl = new tpl ('forum/pm/show_mess');
            }
            $tpl->set_ar_out($row, 0);
            break;
        case 'delete' :
    
    /* PM's nach 30 Tagen löschen*/ 
    $time = time(); 
    $ablauf = $time - 60; 
    db_query("DELETE FROM `prefix_pm` WHERE time < '.$ablauf.' AND status = 1 AND archiv = 0");
    
    		// löschen von nachrichten
            if ($menu->get(3) != '' AND $menu->get(4) == '') {
                $_POST['delids'][] = $menu->get(3);
            }elseif ($menu->get(3) != '' AND $menu->get(4) == 's') {
                $_POST['delsids'][] = $menu->get(3);
            }
            if (empty($_POST['delids']) AND empty($_POST['delsids'])) {
                echo 'Es wurde keine Nachricht zum l&ouml;schen gew&auml;hlt <br /><br />';
                echo '<a href="javascript:history.back(-1)"><b>&laquo;</b> zur&uuml;ck</a>';
            } else {
                if ((empty($_POST['delids']) AND empty($_POST['delsids'])) OR empty($_POST['sub'])) {
                    $delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
                    $s = (empty($_POST['delids'])?'':'s');
                    echo '<form action="index.php?forum-privmsg-delete" method="POST">';
                    $i = 0;
                    if (!is_array($delids)) {
                        $delids = array ($delids);
                    }
                    foreach ($delids as $a) {
                        $i++;
                        echo '<input type="hidden" name="del' . $s . 'ids[]" value="' . $a . '">';
                    }
                    echo '<div align="center"><h2>Private Nachrichten endgültig löschen</h2><br><br><br>Möchten Sie die Nachricht/en wirklich endgültig löschen ?<br><br><input type="submit" value=" Ja " name="sub"> &nbsp; &nbsp; <input type="button" value="Nein" onclick="document.location.href =\'?forum-privmsg\'"></form></div>';
                } else {
                    $delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
                    $s = (empty($_POST['delids'])?'':'s');
                    if ($s == 's') {
                    	$soeid = 'sid';
                    	$stat1 = 1;
                    	$arch = 'IF(archiv>=2,archiv-2,archiv)';
    				} else {
    					$soeid = 'eid';
    					$stat1 = -1;
    					$arch = 'IF(archiv%2=1,archiv-1,archiv)';
    				}
    				$stat2 = $stat1 * - 1;
                    $i = 0;
                    if (!is_array($delids)) {
                        $delids = Array ($delids);
                    }
                    foreach ($delids as $a) {
                        if (is_numeric($a) AND $a != 0) {
                            db_query("DELETE FROM `prefix_pm` WHERE id = " . $a . " AND " . $soeid . " = " . $_SESSION['authid'] . " AND status = " . $stat1);
                            db_query("UPDATE prefix_pm SET status = " . $stat2 . ", archiv = {$arch} WHERE id = " . $a . " AND " . $soeid . " = " . $_SESSION['authid']);
                            $i++;
                        }
                    }
                    echo '<br /><div align="center"><h2>Erfolgreich gelöscht </h2><br /><br /><a href="index.php?forum-privmsg">zum Nachrichten Eingang</a><meta http-equiv="refresh" content="5; URL=index.php?forum-privmsg"><br /><br /><a href="index.php?forum-privmsg">zum Posteingang</a>
    <br /><br /><a href="index.php?forum-privmsg-showsend">zum Postausgang</a>
    <br /><br /><a href="index.php?forum-privmsg-archiv">zum Archiv</a></div>
    ';
                }
            }
            break;
    	case 'toArchiv' :
    		// löschen von nachrichten
    		if ($menu->get(3) != '' AND $menu->get(4) == '') {
    			$_POST['delids'][] = $menu->get(3);
    		}elseif ($menu->get(3) != '' AND $menu->get(4) == 's') {
    			$_POST['delsids'][] = $menu->get(3);
    		}
    		if (empty($_POST['delids']) AND empty($_POST['delsids'])) {
    			echo 'Es wurde keine Nachricht zum Archivieren gew&auml;hlt <br /><br />';
    			echo '<a href="javascript:history.back(-1)"><b>&laquo;</b> zur&uuml;ck</a>';
    		} else {
    			$delids = (empty($_POST['delids'])?$_POST['delsids']:$_POST['delids']);
    			$s = (empty($_POST['delids'])?'':'s');
    			$i = 0;
    			if (!is_array($delids)) {
    				$delids = Array ($delids);
    			}
    			foreach ($delids as $j => $a) {
    				if (intval($a) > 0) {
    					$delids[$j] = intval($a);
    				} else {
    					unset($delids[$j-$i]);
    					$i++;
    				}
    			}
    			$delids = implode(', ', $delids);
    			if ($s == 's') {
    				$qry = "UPDATE prefix_pm SET archiv = archiv + 1 WHERE id IN ({$delids}) AND eid = {$_SESSION['authid']} AND (archiv % 2) = 0";
    			} else {
    				$qry = "UPDATE prefix_pm SET archiv = archiv + 2 WHERE id IN ({$delids}) AND sid = {$_SESSION['authid']} AND archiv < 2";
    			}
    			db_query($qry);
    			echo 'Es wurd';
    			echo ($i > 1 ? 'en (' . $i . ') Nachrichten ' : 'e eine Nachricht ');
    			echo <<<HTML
    erfolgreich ins Archiv verschoben. <br /><br /><a href="index.php?forum-privmsg">zum Posteingang</a>
    <br /><a href="index.php?forum-privmsg-showsend">zum Postausgang</a>
    <br /><a href="index.php?forum-privmsg-archiv">zum Archiv</a>
    HTML;
    		}
    		break;
        case 'showsend' :
            $tpl = new tpl ('forum/pm/showsend');
            $tpl->out(0);
            $class = 'Cmite';
            $abf = "SELECT a.titel, b.name as empf, a.id, a.`time`, a.gelesen FROM `prefix_pm` a left join prefix_user b ON a.eid = b.id WHERE a.sid = " . $_SESSION['authid'] . " AND a.status >= 0 AND a.archiv < 2 ORDER BY time DESC";
            $erg = db_query($abf);
            while ($row = db_fetch_assoc($erg)) {
    $row['NEW'] = ($row['NEW'] == 0 ? '<span style="color: red; text-decoration: blink; font-weight: bold; font-style: italic;">neu</span>' : '');
                $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
                $row['class'] = $class;
                $row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
            	$row['titel'] = (trim($row['titel']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['titel']);
    			$row['NEW'] = $row['gelesen'] == 0 ? '<img src="include/images/icons/ungelesen.gif" alt="ungelesen" title="Nachricht wurde noch nicht gelesen" style="cursor:help;"/>' : '';
                $tpl->set_ar_out($row, 1);
            }
            $tpl->out(2);
            break;
        case 'archiv':
    		$tpl = new tpl ('forum/pm/archiv');
    		$tpl->out(0);
    		$class = 'Cmite';
    		//empf
    		$abf = "SELECT a.titel as BET, a.gelesen as NEW, b.name as ABS, a.id as ID, a.`time` FROM `prefix_pm` a left join prefix_user b ON a.sid = b.id WHERE a.eid = " . $_SESSION['authid'] . " AND a.status <= 0 AND a.archiv % 2 = 1 ORDER BY time DESC";
    		$erg = db_query($abf);
    		if (db_num_rows($erg)) {
    			$tpl->out(1);
    			while ($row = db_fetch_assoc($erg)) {
    $row['NEW'] = $row['gelesen'] == 0 ? '<img src="include/images/icons/ungelesen.gif" alt="ungelesen" title="Nachricht wurde noch nicht gelesen" style="cursor:help;"/>' : '';
    				$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
    				$row['BET'] = (trim($row['BET']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['BET']);
    				$row['CLASS'] = $class;
    				$row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
    				$tpl->set_ar_out($row, 2);
    			}
    			$tpl->out(3);
    		}
        	//ges
    		$abf = "SELECT a.titel, b.name as empf, a.id, a.`time`, a.gelesen FROM `prefix_pm` a left join prefix_user b ON a.eid = b.id WHERE a.sid = " . $_SESSION['authid'] . " AND a.status >= 0 AND a.archiv >= 2 ORDER BY time DESC";
    		$erg = db_query($abf);
    		if (db_num_rows($erg)) {
    			$tpl->out(4);
    			while ($row = db_fetch_assoc($erg)) {
    				$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
    				$row['titel'] = (trim($row['titel']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['titel']);
    				$row['class'] = $class;
    				$row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
    				$tpl->set_ar_out($row, 5);
    			}
    			$tpl->out(6);
    		}
    		break;
        default :
            // message übersicht.
            $tpl = new tpl ('forum/pm/show');
            $tpl->out(0);
            $class = 'Cmite';
            $abf = "SELECT a.titel as BET, a.gelesen as NEW, b.name as ABS, a.id as ID, a.`time` FROM `prefix_pm` a left join prefix_user b ON a.sid = b.id WHERE a.eid = " . $_SESSION['authid'] . " AND a.status <= 0 AND a.archiv % 2 = 0 ORDER BY time DESC";
            $erg = db_query($abf);
            while ($row = db_fetch_assoc($erg)) {
                $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
                $row['NEW'] = ($row['NEW'] == 0 ? '<span style="color: red; text-decoration: blink; font-weight: bold; font-style: italic;">neu</span>' : '');
                $row['CLASS'] = $class;
                $row['BET'] = (trim($row['BET']) == '' ? ' -- kein Nachrichtentitel -- ' : $row['BET']);
                $row['time'] = date('d. ',$row['time']).getSDmon($row['time']).date(' y - H:i \U\h\r', $row['time']);
                $tpl->set_ar_out($row, 1);
            }
            $tpl->out(2);
            break;
    }
    $design->footer();
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.643
    Beitragswertungen
    1195 Beitragspunkte
    Warum Zeile 130ff ?

    '.$ablauf.' -> ".$ablauf."
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    tcrack Mitglied
    Registriert seit
    31.07.2011
    Beiträge
    46
    Beitragswertungen
    0 Beitragspunkte
    Hi,

    habe die Leerzeile bei 130 weggenommen,

    und den code so geändert, meitest du das so ?

     
    /* PM's nach 30 Tagen löschen*/ 
    $time = time(); 
    $ablauf = $time - 10; 
    db_query("DELETE FROM `prefix_pm` WHERE time < '.$ablauf.' -> ".$ablauf." AND status = 1 AND archiv = 0");



    Zuletzt modifiziert von tcrack am 27.08.2011 - 00:37:29
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.643
    Beitragswertungen
    1195 Beitragspunkte
    /* PM's nach 30 Tagen löschen*/
    $ablauf = time() - (30 * 24 * 60 * 60); // 30 Tage * 24 Stunden * 60 Minuten * 60 Sekunden
    db_query("DELETE FROM `prefix_pm` WHERE time < '" .$ablauf. "' AND status = 1 AND archiv = 0");


    Ich würde an deiner Stelle den Code wie schon erwähnt Zeile 102 vor der Funktion sendpm() setzen, somit wird das Löschen ausgeführt immer wenn jemand eine PM sendet! Evtl. könnte man noch nach UserID einschränken!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    tcrack Mitglied
    Registriert seit
    31.07.2011
    Beiträge
    46
    Beitragswertungen
    0 Beitragspunkte
    Hi und Danke für deine frühe Antwort ;-)

    aber es scheint immer noch nicht zu klappen, habe die Zeit mal auf 60 gesetzt und neue PMs verschickt, die werden aber leider immer noch nicht gelöscht :-(

    /* PM's nach 60 Sekunden löschen um es zu Testen*/ 
    $ablauf = time() - 60; // 30 Tage * 24 Stunden * 60 Minuten * 60 Sekunden 
    db_query("DELETE FROM `prefix_pm` WHERE time < '" .$ablauf. "' AND status = 1 AND archiv = 0");
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten