Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Änderung der Login-Zeit / Neue Beiträge
#1
Hallo zusammen,

ich würde dem angemeldeten User gerne die Möglichkeit geben, seine "Neuen Beiträge" nicht nur in Bezug auf seinen letzten Login anzubieten. Statt dessen würde ich ihm auf einer separaten Seite gerne die Möglichkeit geben, einen bestimmten Tag in der Vergangenheit auszuwählen (z.B. über DropDown), damit er alle Beiträge ab diesem Datum sehen kann.

Zunächst dachte ich, eine "eigene Seite" inkl. Template zu erstellen, mit deren Hilfe sich ein angemeldeter User seine letzte Login-Zeit um X Tage zurück setzen kann.

Wegen der notwendigen Änderung in der DB-Tabelle bin ich mir nicht sicher, ob ich "lastvisit" oder" "lastactive" bzw. beide ändern muss. Bezieht sich "lastactive" auf den Zeitpunkt, an dem der User seinen letzten Beitrag geschrieben hat? Und hat so eine Änderung ggf. auch Auswirkungen auf Beiträge, die der User nach zurück gesetzter Login-Zeit quasi erst später geschrieben hat?

Ich weiß nicht, ob das der richtige Weg ist oder ob es da etwas besseres gibt (vielleicht sogar ein Plugin?). Würde mich freuen, wenn mir jemand Tipps geben könnte.

Dank Euch schon mal im Voraus! Wink

Edit:
oder kann ich evtl. diesen Code umschreiben (inkl. neuem action-Parameter) und statt $mybb->input['days'] eine $_POST-Variable übergeben?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#2
Für das was du vorhast sind keine Codeänderungen nötig. Der Funktion zur Anzeige der Beiträge der letzten 24 Stunden kannst du die Tage einfach übergeben: search.php?action=getdaily&days=x

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
tja, warum kompliziert, wenn es auch einfach(er) geht.... Wink

Habe das nun über ein neues Template und eine eigene Seite umgesetzt (erreichbar über einen Link im Welcome-Block), damit die User per DropDown-Liste bei den Beiträgen und den Themen bis zu 30 Tage zurückblicken können. Kam richtig gut an! Big Grin

Danke Michael für diese Tipp!
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#4
hätt ich auch gern Smile
Zitieren
#5
ich kann das die Tage mal hier reinsetzen, wie ich das bei mir gelöst habe. Wink

Edit:

So, nachfolgend mal die Beschreibung und die notwendigen Dateien. Für mögliche Verbesserungsvorschläge
bin ich natürlich dankbar. Insbesondere, wenn es um das Thema Sicherheit gehen sollte.... Wink

Im root-Verzeichnis "/forum" werden die beiden Dateien searchcustom.php und searchcustom_do.php gespeichert.
Im ACP ist ein neues Template mit dem Namen "old_threads_themes" in dem jeweils genutzten Template zu erstellen. Darin ist
der u.a. Inhalt der "Ungl_Beitraege_Template.txt" einzufügen.

Den Link zu der nun neu erzeugten Seite habe ich unter anderem in dem Template "header_welcomeblock_member" wie folgt eingefügt:

dort, nach der Zeile
PHP-Code:
<a href="{$mybb->settings['bburl']}/search.php?action=getdaily">{$lang->welcome_todaysposts}</a
folgende Zeile einfügen
PHP-Code:
| <a href="{$mybb->settings['bburl']}/searchcustom.php">{$lang->overview}</a

Der Link kann natürlich auch an einer anderen Stelle eingesetzt werden. Ich wollte es nur so haben, dass Gäste diese Seite nicht aufrufen können. Deshalb übrigens auch die zusätzliche Abfrage in den beiden php-Dateien. Wink

In der jeweiligen global.lang.php (deutsch_du und deutsch_sie) ist folgende Änderung notwendig:

nach
PHP-Code:
$l['welcome_todaysposts'] = "Heutige Beitr&auml;ge ansehen"

folgende Zeile einfügen
PHP-Code:
$l['overview'] = "Ungel. Beitr&auml;ge"

Wenn andere Sprachen genutzt werden, entsprechend auch in den jeweiligen global.lang.php-Dateien Änderungen vornehmen.

Das u.a. Bild zeigt, wie die Seite dann aussieht.

Das war es eigentlich schon.....wenn ich nicht doch noch was vergessen habe. Wink


Angehängte Dateien Thumbnail(s)
   

.php   searchcustom.php (Größe: 418 Bytes / Downloads: 4)
.php   searchcustom_do.php (Größe: 648 Bytes / Downloads: 3)
.txt   Ungl_Beitraege_Template.txt (Größe: 1,35 KB / Downloads: 7)
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#6
Hallo,

sensationell, ich habe genau das gestern auf ideas.mybboard.com gepostet. Dabei gibt es das schon als "Hack". Hattest du nie Lust, das als Plugin zu veröffentlichen?

Ichmöchte selbst ein Plugin veröffentlichen ->
https://www.mybb.de/forum/thread-12109.html

und denke, dass das hier auch ned so schwer wäre.
Ich hab das selbst einmal in Perl für mein altes Ikonboard programmiert, das ist allerdings schon sechs Jahre her. Big Grin

Gibt es Neuigkeiten zu dieser Modifikation?
EDIT: seh ich das flasch, oder gibt es die Funktion "getdailythreads" ned?
Zitieren
#7
FraGezeichen schrieb:seh ich das flasch, oder gibt es die Funktion "getdailythreads" ned?
Da hast Du recht! Hat bisher noch niemand gemerkt, dass ich vergessen habe, eine Codeänderung zu erwähnen. Wink

In der search.php ist der Code
PHP-Code:
elseif($mybb->input['action'] == "getdaily")
{
    if(
$mybb->input['days'] < 1)
    {
        
$days 1;
    }
    else
    {
        
$days intval($mybb->input['days']);
    }
    
$datecut TIME_NOW-(86400*$days);

    
$where_sql "t.lastpost >='".$datecut."'";

    if(
$mybb->input['fid'])
    {
        
$where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'";
    }
    else if(
$mybb->input['fids'])
    {
        
$fids explode(','$mybb->input['fids']);
        foreach(
$fids as $key => $fid)
        {
            
$fids[$key] = intval($fid);
        }
        
        if(!empty(
$fids))
        {
            
$where_sql .= " AND t.fid IN (".implode(','$fids).")";
        }
    }
    
    
$unsearchforums get_unsearchable_forums();
    if(
$unsearchforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($unsearchforums)";
    }
    
$inactiveforums get_inactive_forums();
    if(
$inactiveforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($inactiveforums)";
    }


    
$sid md5(uniqid(microtime(), 1));
    
$searcharray = array(
        
"sid" => $db->escape_string($sid),
        
"uid" => $mybb->user['uid'],
        
"dateline" => TIME_NOW,
        
"ipaddress" => $db->escape_string($session->ipaddress),
        
"threads" => '',
        
"posts" => '',
        
"resulttype" => "threads",
        
"querycache" => $db->escape_string($where_sql),
        
"keywords" => ''
    
);

    
$plugins->run_hooks("search_do_search_process");
    
$db->insert_query("searchlog"$searcharray);
    
redirect("search.php?action=results&sid=".$sid$lang->redirect_searchresults);

durch diesen Code
PHP-Code:
elseif($mybb->input['action'] == "getdaily")
{
    if(
$mybb->input['days'] < 1)
    {
        
$days 1;
    }
    else
    {
        
$days intval($mybb->input['days']);
    }
    
$datecut TIME_NOW-(86400*$days);

    
$where_sql "t.lastpost >='".$datecut."'";

    if(
$mybb->input['fid'])
    {
        
$where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'";
    }
    else if(
$mybb->input['fids'])
    {
        
$fids explode(','$mybb->input['fids']);
        foreach(
$fids as $key => $fid)
        {
            
$fids[$key] = intval($fid);
        }
        
        if(!empty(
$fids))
        {
            
$where_sql .= " AND t.fid IN (".implode(','$fids).")";
        }
    }
    
    
$unsearchforums get_unsearchable_forums();
    if(
$unsearchforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($unsearchforums)";
    }
    
$inactiveforums get_inactive_forums();
    if(
$inactiveforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($inactiveforums)";
    }


    
$sid md5(uniqid(microtime(), 1));
    
$searcharray = array(
        
"sid" => $db->escape_string($sid),
        
"uid" => $mybb->user['uid'],
        
"dateline" => TIME_NOW,
        
"ipaddress" => $db->escape_string($session->ipaddress),
        
"threads" => '',
        
"posts" => '',
        
"resulttype" => "threads",
        
"querycache" => $db->escape_string($where_sql),
        
"keywords" => ''
    
);

    
$plugins->run_hooks("search_do_search_process");
    
$db->insert_query("searchlog"$searcharray);
    
redirect("search.php?action=results&sid=".$sid$lang->redirect_searchresults);
}
elseif(
$mybb->input['action'] == "getdailythreads")
{
    if(
$mybb->input['days'] < 1)
    {
        
$days 1;
    }
    else
    {
        
$days intval($mybb->input['days']);
    }
    
$datecut time()-(86400*$days);

    
$where_sql "t.dateline >='".$datecut."'";

    if(
$mybb->input['fid'])
    {
        
$where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'";
    }
    
    
$unsearchforums get_unsearchable_forums();
    if(
$unsearchforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($unsearchforums)";
    }
    
$inactiveforums get_inactive_forums();
    if(
$inactiveforums)
    {
        
$where_sql .= " AND t.fid NOT IN ($inactiveforums)";
    }


    
$sid md5(uniqid(microtime(), 1));
    
$searcharray = array(
        
"sid" => $db->escape_string($sid),
        
"uid" => $mybb->user['uid'],
        
"dateline" => time(),
        
"ipaddress" => $db->escape_string($session->ipaddress),
        
"threads" => '',
        
"posts" => '',
        
"searchtype" => "titles",
        
"resulttype" => "threads",
        
"querycache" => $db->escape_string($where_sql),
    );

    
$plugins->run_hooks("search_do_search_process");
    
$db->insert_query("searchlog"$searcharray);
    
redirect("search.php?action=results&sid=".$sid$lang->redirect_searchresults);

zu ersetzen. Das gilt für 1.4.4.


Nachtrag

Noch ein Hinweis zur Verwendung in der Version 1.2:

Hier sind die o.a. Zeilen
PHP-Code:
$db->insert_query("searchlog"$searcharray); 
durch
PHP-Code:
$db->insert_query(TABLE_PREFIX."searchlog"$searcharray); 
zu ersetzen.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#8
Ähm, sicher?
Ich möcht aber nicht gerne die getdaily Funktion an sich verlieren, sollte ich da nicht eher Deinen Code Schnipsel hinzufügen, statt das Andere zu ersetzen?

Danke auf alle Fälle für das Teil, gefällt mir gut!
Zitieren
#9
Sorry, da ist wohl bei copy&paste was schief gegangen. Blush

Hab den Code oben korrigiert. Die getdaily-Abfrage soll natürlich nicht verloren gehen. Wink
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#10
Hihi, jetzt hab ich das aber ned wirklich verstanden, was Firefox da gemacht hat, der hat Deine Codebox live aktualisiert oder so, denn während ich den Code noch durchgesucht habe, hat er sich verändert und hat gestimmt. Ich dacht, ich seh Stimmen Big GrinBig Grin
Aso, und noch eine Frage, natürlich ohne es probiert zu haben: worin besteht der unterschied zwischen den letzten Themen und den letzten Beiträgen? Kommen da ned die gleichen Ergebnisse?
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Änderung der Forum-Team Anzeige bzw. der Mitgliederliste sebastian3288 2 1.713 25.03.2008, 09:29
Letzter Beitrag: Dave
  Änderung nach Login! SweetySchnuffel 1 1.442 11.03.2007, 17:03
Letzter Beitrag: Michael