ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Code Hack Requests / Link "neue Beiträge seit letztem Besuch"


Seite 1 von 3 – nächste Seite >>

Criss schrieb am 30.07.2003 um 19:04 Uhr

Auf der Startseite gibt es ja den Link "Aktive threads von heute anzeigen". Ich würde aber viel lieber einen Link mit den "Neue Beiträge seit dem letzten Besuch" haben der immer die neusten Beiträge auflistet die seit dem letzten Besuch gemacht wurden.

Wäre das möglich, und wenn ja wie?

Vielen Dank für die Hilfe

gfc schrieb am 30.07.2003 um 19:46 Uhr

möglich an sich wäre es... das müsste via Suchfunktion geregelt werden, welcher der Timeparameter richtig übergeben wird...

aber das wird n grösserer Hack, sprich ich setz mich mal dran, wenn ich zeit habe.. diese woche wirds sicher nichts mehr..

seikeinfloh schrieb am 30.07.2003 um 20:09 Uhr

hi!

Hast du dir schonmal den Link angeschaut für aktive Threads von Heute???

Es wird ja nicht schwer sein kurz den letzten Login einzutragen in solch einen Link - einfach den aktive Threads von Heute kopieren und die Variable im Template und im Code ändern. Fertig!

mfg floh

Criss schrieb am 30.07.2003 um 21:42 Uhr

Hallo,

habe herausgefunden, das es eine Tabelle lastvisited gibt, in der boardid, userid, und lastvisitedtime enthalten ist.
Daraus rauslesen, wann der letzte Besuch war und das Vergleichen mit der Tabelle post Feld posttime und dann alle anzeigen wo
post(posttime) >= lastvisited(lastvisitedtime)
Hoffe das hilft euch und Ihr könnt was basteln. Bin da leider nicht fit drin.

Screw Driver schrieb am 01.08.2003 um 20:10 Uhr

Wäre eine sinnvolle Ergänzung. Sollte sogar Standard werden da das einfach praktisch ist.

theDon schrieb am 01.08.2003 um 21:24 Uhr

Screw Driver postete
Sollte sogar Standard werden da das einfach praktisch ist.

gut, dass nicht die hackautoren darübe entscheiden, was standard wird.
so eine funktion ist einfach überflüßig, weil sämtliche neuen posts ja in den boards als neu markiert werden.

Screw Driver schrieb am 01.08.2003 um 21:27 Uhr

Komisch, dass dann so grosse Projekte wie das phpBB diese sehr nützliche Funktion haben. ich will mich nicht immer duch alle Foren klicken um zu sehen wo es welche neuen Posts gibt.

Dr.HDi schrieb am 01.08.2003 um 22:47 Uhr

search.php

von

elseif( $searchfor == "lastthreads" )
    {
        $where[] = "(thread.threadtime)>" . (time() - (60 * 60 * 24 * intval($days)));
    }

nach

elseif( $searchfor == "lastthreads" )
    {
        $where[] = "(thread.threadtime)>" . (time() - (60 * 60 * 24 * intval($days)));
    }
        // msp/dr.hdi 10.06.2003 - Beitraege seit letztem Besuch
    elseif( $searchfor == "lastvisit" )
    {
                if( $g_user[userid] <= 0 )
                {
            message("Fehler", "Sie müssen angemeldet sein, um diese Funktion nutzen zu können.");
                }

        $r_lastvisit = thwb_query("SELECT MAX(lastvisitedtime) FROM ".$pref."lastvisited WHERE userid=".$g_user[userid]." ORDER BY lastvisitedtime DESC");
        $lastvisit = mysql_fetch_array($r_lastvisit);

        $where[] = "(thread.threadtime)>(" . $lastvisit['MAX(lastvisitedtime)'] . ")";
    }

ändern.

Den Link

search.php?startsearch=1&searchfor=lastvisit

irgendwo sinnvoll in mail.html plazieren - That's all.

Damit dieses Feature sinnvolle Ergebnisse liefert, solltet Ihr regelmäßig unten rechts auf der Hauptseite

[ Alle Boards als gelesen markieren ]

drücken, damit der "Timestamp" für alle Boards stimmt.

Criss schrieb am 01.08.2003 um 23:13 Uhr

Vielen Dank,

habe es eingebaut und es funkt.
Kann man dies den eigentlich auch als Vorschlag fürs nächste Release machen?

theDon schrieb am 02.08.2003 um 00:15 Uhr

Screw Driver postete
Komisch, dass dann so grosse Projekte wie das phpBB diese sehr nützliche Funktion haben. ich will mich nicht immer duch alle Foren klicken um zu sehen wo es welche neuen Posts gibt.

Komisch, dass dann so grosse Projekte wie das phpBB so dermaßen langsam sind. ich will nicht immer stundenlang warten um zu sehen wo es welche neuen Posts gibt.

Screw Driver schrieb am 02.08.2003 um 01:01 Uhr

theDon postete
Komisch, dass dann so grosse Projekte wie das phpBB so dermaßen langsam sind. ich will nicht immer stundenlang warten um zu sehen wo es welche neuen Posts gibt.

<ironie>Sehr geiler Beitrag *klatsch*</ironie>

Luki schrieb am 12.08.2003 um 16:10 Uhr

Damit dieses Feature sinnvolle Ergebnisse liefert, solltet Ihr regelmäßig unten rechts auf der Hauptseite

[ Alle Boards als gelesen markieren ]

wenn man das irgendwie ausmerzen könnte, wäre das gigantisch und ein Posting im Hackforum wert!

gfc schrieb am 12.08.2003 um 19:26 Uhr

Luki postete

Damit dieses Feature sinnvolle Ergebnisse liefert, solltet Ihr regelmäßig unten rechts auf der Hauptseite

[ Alle Boards als gelesen markieren ]

wenn man das irgendwie ausmerzen könnte, wäre das gigantisch und ein Posting im Hackforum wert!

diese funktion funktioniert eh gar ned recht.. muss mal schauen, so was sollte man automatisch updaten lassen!

Luki schrieb am 12.08.2003 um 20:48 Uhr

recht hast du! mir ist dieses gelesen system auch schon seit langem ein Dorn im Auge!

theDon schrieb am 12.08.2003 um 21:31 Uhr

tja, mich störts nicht. und im gegensatz zu euch habe ich write access fürs cvs.

gfc schrieb am 12.08.2003 um 21:56 Uhr

@don: schön für dich und danke für die mithilfe

@luki: ich habs glaub gefunden:

./inc/header.inc.php bei zeile ca 220 muss die else funktion so aussehen

else
{
    $option[] = '<a href="pm.php">Private Messages</a>';
    $option[] = '<a href="editprofile.php">Profil</a>';
    $g_user['groupids'] = substr($g_user['groupids'], 1, strlen($g_user['groupids']) - 2);

thwb_query("UPDATE $pref"."lastvisited SET lastvisitedtime='".time()."' WHERE userid='$g_user[userid]'");
    
    
    if( !$g_user['userbanned'] )
    {
        $option[] = '<a href="logout.php">Logout</a>';
    }
}

statt

else
{
    $option[] = '<a href="pm.php">Private Messages</a>';
    $option[] = '<a href="editprofile.php">Profil</a>';
    $g_user['groupids'] = substr($g_user['groupids'], 1, strlen($g_user['groupids']) - 2);

    header('Location: index.php');
    
    if( !$g_user['userbanned'] )
    {
        $option[] = '<a href="logout.php">Logout</a>';
    }
}

gfc schrieb am 12.08.2003 um 22:10 Uhr

ok, denkfehler meinerseits ;)

wenn man das obere macht, dann liefert die suche keine ergebnisse.. weil sie lastvisited vergleicht, dass aber beim login wieder auf Jetzt gesetzt wird ;)

aber das query

thwb_query("UPDATE $pref"."lastvisited SET lastvisitedtime='".time()."' WHERE userid='$g_user[userid]'");

geht wenigstens einwandfrei.. jetzt müsste man nur nen passenderen Ort finden..

theDon schrieb am 12.08.2003 um 22:30 Uhr

gfc postete
@don: schön für dich und danke für die mithilfe

es war eigtl darauf bezogen, dass die devs entscheiden, was ins board reinkommt und was nicht. mir gehts halt einfach auf die nerven, dass ich an jeder ecke lese `das ist was für 2.82', `das sollte rein' etc. gerade beim unread-management ist schon oft genug gesagt worden `it's not a bug, it's a feature.'

Luki schrieb am 12.08.2003 um 23:09 Uhr

hehe, ist halt keine Demokratie, da das ganze Board noch keine Polls hat, aber die sollten ja seit 2.7 schon dabei sein =)

THWB it's not a bug, it's a feature

naja ich finde das THWB anscheinend trotzdem toll, sonst hätte ich es wohl nicht.

@gfc
was du alles realisierst! R E S P E C T !

gfc schrieb am 13.08.2003 um 10:19 Uhr

Luki postete

@gfc
was du alles realisierst! R E S P E C T !

danke für die Blumen, aber realisiert ist es immer noch nicht! Denn mir fällt kein passender Ort ein.. wenn du es bei showtopics einbaust, is es auch scheisse, da du dann die Ansicht genau einmal ankucken kannst.. index geht auch nicht.. es müsste irgendwo bei ausloggen passieren, was aber auch scheisse ist, da sich viele gar nie ausloggen sondern einfach den Browser schliessen ;)

anyway, ich such weiter

@don: so versteht man sich falsch :) und ich finds gut, dass nicht ALLES ins board reinkommt, sondern man select wählen kann.. praktisch wäre halt ein passendes Hackmanagement, aber das wird in nem anderen thread diskutiert :)

Dr.HDi schrieb am 13.08.2003 um 13:01 Uhr

Die Funktion [ Alle Boards als gelesen markieren ] müßte einfach automatisch für alle User, die seit 5min. nichts mehr gemacht haben in einem Shellscript ausgeführt werden (über cron [Linux]/ Tasks [Windoof]). Wenn dieses zyklisch alle paar Minuten ausgeführt wird, braucht man [ Alle Boards als gelesen markieren ] in mail.html nicht mehr.
Andere Datenbanksysteme - wie z.B. M$ SQL Server - haben eine eigene Shell für Datenbanktasks und machen es dem DB-Programmierer ein wenig einfacher soetwas zu realisieren. Da MySQL soetwas (noch) nicht unterstützt, muss es eben wie oben beschrieben lösen.

Any other suggestions ?

theDon schrieb am 13.08.2003 um 13:26 Uhr

ehm, was soll das bringen?

foo postet.
2 min später postet bar.
3 min später werden für foo alle boards als gelesen markiert.
foo kriegt den post von bar nicht als neu angezeigt.

._°

Luki schrieb am 13.08.2003 um 13:30 Uhr

...einfach die Zeit der letzten Aktion auf dem Board abspeichern, also des letzten Clicks - thats it!

Crown Jobs haben nur wenige und die Workarounds zocken fleissig Ressourcen!

Dr.HDi schrieb am 13.08.2003 um 14:14 Uhr

@theDon:

Natürlich muss das Update pro User erfolgen.

If you recall:

CREATE TABLE `tb_lastvisited` (
  `boardid` int(10) unsigned NOT NULL default '0',
  `userid` int(10) unsigned NOT NULL default '0',
  `lastvisitedtime` int(10) unsigned NOT NULL default '0',
  KEY `useridboardid` (`userid`,`boardid`)
) TYPE=MyISAM;

Primärschlüssel userid, boardid !!! Die Einträge werden pro User geführt.

Also ein Loop über alle user, die seit 5 min. nix gemacht haben und (vgl. misc.php)

UPDATE $pref"."lastvisited SET lastvisitedtime='".time()."' WHERE userid='$einerdieseruser[userid]'

Dieser Update nur 1x über Informationen aus tb_online, dann funzt es :)

[edit]
@Luki:
Pro Click ein Update -> Performancekiller !!!
[/edit]

gfc schrieb am 13.08.2003 um 14:21 Uhr

ich glaub ich habs :)

funktioniert aber nur, wenn ihr diesen Hack http://hacks.slware.com/tboard/showtopic.php?threadid=422&highlight=lastvisited bereits eingebaut habt..

dann einfach die
index.php auf ca zeile 88 ändern:

// lastvisited
if( $g_user['userid'] )
{
    $a_lastvisited = array();
    $r_lastvisited = thwb_query("SELECT boardid, lastvisitedtime FROM ".$pref."lastvisited WHERE userid=$g_user[userid]");
    while( $lastvisited = mysql_fetch_array($r_lastvisited) )
    {
        $a_lastvisited[$lastvisited['boardid']] = $lastvisited['lastvisitedtime'];
    }
    if( time() - 1800 > $lastvisited['lastvisitedtime'] )
    {
    thwb_query("UPDATE $pref"."lastvisited SET lastvisitedtime='".time()."' WHERE userid='$g_user[userid]'");
    }
}

sollte es aussehen..

aber bin mir ned ganz sicher ob auch tut..

aber ich habe mir nun eine ganz andere Lösung ausgedacht!

und zwar hab ich Hdi's arbeit verändert:

elseif( $searchfor == "lastvisit" )
    {
                if( $g_user[userid] <= 0 )
                {
            message("Fehler", "Sie müssen angemeldet sein, um diese Funktion nutzen zu können.");
                }

        $r_lastvisit = thwb_query("SELECT MAX(lastvisitedtime) FROM ".$pref."lastvisited WHERE userid=".$g_user[userid]." ORDER BY lastvisitedtime DESC");
        $lastvisit = mysql_fetch_array($r_lastvisit);

        $where[] = "(thread.threadtime)>(" . $g_user['userlastpost'] . ")";
    }

und zwar wird nun nicht nach dem letzten besuch gesucht, sondern nach allen Posts, die aktueller sind als der letzte Post des eingeloggten User!

Seite 1 von 3 – nächste Seite >>