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 >>