Anzeige aller Beiträge der letzten 48 Stunden

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
gsxfan
Mitglied
Beiträge: 562
Registriert: 29.11.2007 11:43
Wohnort: Mittelhessen

Re: Anzeige aller Beiträge der letzten 48 Stunden

Beitrag von gsxfan »

Prima. Das mit GPL ist mir schon klar, aber ich frage lieber nach.

Ok, hier meine Änderungen für die Anzeige der Beiträge der letzten 3/6/12/24 Stunden. Mod wäre dazu vielleicht zuviel gesagt.

Zu ändernde Dateien:

/search.php
/include/functions.php
/language/de/common.php
/style/<style_name>/template/overall_header.html

Öffne search.php, suche nach:

Code: Alles auswählen

$sort_days		= request_var('st', 0)
Füge danach in eine Leerzeile ein:

Code: Alles auswählen

$sort_hours		= request_var('st2', 0);
Suche:

Code: Alles auswählen

case 'newposts':
                $l_search_title = $user->lang['SEARCH_NEW'];
                // force sorting
                $show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics';
                $sort_key = 't';
                $sort_dir = 'd';
                $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
                $sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC');

                gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
                $s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = '';

                if ($show_results == 'posts')
                {
                    $sql = 'SELECT p.post_id
                        FROM ' . POSTS_TABLE . ' p
                        WHERE p.post_time > ' . $user->data['user_lastvisit'] . "
                            $m_approve_fid_sql
                            " . ((sizeof($ex_fid_ary)) ? ' AND ' . $db->sql_in_set('p.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                    $field = 'post_id';
                }
                else
                {
                    $sql = 'SELECT t.topic_id
                        FROM ' . TOPICS_TABLE . ' t
                        WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . '
                            AND t.topic_moved_id = 0
                            ' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
                            ' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                    $field = 'topic_id';
                }
            break;
 
Füge in eine Leerzeile danach ein:

Code: Alles auswählen

case 'newposts12':
                $l_search_title = $user->lang['SEARCH_NEW'];
                // force sorting
                $show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics';
                $sort_key = 't';
                $sort_dir = 'd';
                $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
                $sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC');
                gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
                $s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = '';
                $sort_days = 1;
                $sort_hours = request_var('st2', 0);
                $select_days = ($sort_days) ? (time() - ($sort_hours)) : $user->data['user_lastvisit'];
                if ($show_results == 'posts')
                {
                    $sql = 'SELECT p.post_id
                        FROM ' . POSTS_TABLE . ' p
                        WHERE p.post_time > ' . $select_days . "
                            $m_approve_fid_sql
                            " . ((sizeof($ex_fid_ary)) ? ' AND ' . $db->sql_in_set('p.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                    $field = 'post_id';
                }
                else
                {
                    $sql = 'SELECT t.topic_id
                        FROM ' . TOPICS_TABLE . ' t
                        WHERE t.topic_last_post_time > ' . $select_days . '
                            AND t.topic_moved_id = 0
                            ' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
                            ' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                    $field = 'topic_id';
                }
            break; 
Speichern und schließen.
Öffne functions.php, suche nach:

Code: Alles auswählen

	'U_SEARCH_NEW'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'),
Füge in eine Leerzeile danach ein:

Code: Alles auswählen

		'U_SEARCH_NEW24'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts12&st2=86400'),
		'U_SEARCH_NEW12'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts12&st2=43200'),
		'U_SEARCH_NEW6'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts12&st2=21600'),
		'U_SEARCH_NEW3'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts12&st2=10800'),
Speichern und schließen.

Öffne /language/de/common.php, suche nach:

Code: Alles auswählen

'SETTINGS'					=> 'Einstellungen',
Füge in einer Leerzeile danach ein:

Code: Alles auswählen

'SHOW_LAST_POSTS'   => 'Zeige letzte Beiträge: ',
Speichern und schließen. Das gleiche für andere Sprachverzeichnisse ausführen.

Öffne /style/<style_name>/template/overall_header.html und füge an gewünschter Stelle ein:

Code: Alles auswählen

	<td align="right">
	{L_SHOW_LAST_POSTS}<a href="{U_SEARCH_NEW3}">3h</a> | <a href="{U_SEARCH_NEW6}">6h</a> | <a href="{U_SEARCH_NEW12}">12h</a> | <a href="{U_SEARCH_NEW24}">24h</a> 	
</td>
Speichern und schließen. Da ich ein tabellenbasierenden Style verwende, muss das für andere entsprechend angepasst werden.

Zur Erklärung:
Bin halt nicht der Coder vor dem Herrn und es gibt damit keine tolle Erweiterung fürs ACP zum Konfigurieren, ich brauch die auch nicht. Im phpBB2 Forum hatte ich den Mod auch drin, aber die Einstellungen der Suchzeiten nach der Einrichtung nie wieder verändert.
Die unterschiedlichen Suchzeiten ergeben sich durch die Vorgaben in der functions.php, ganz am Ende der zusätzlichen Einträge wird der Wert mit z.B. st2=10800 = 10800 Sekunden = 3 Stunden vorgegeben.
Der Codeschnipsel von Miriam arbeitete mit Tagen, das war mir halt zuwenig. Ich möchte gerne auf einen Blick sehen, was in den letzten Stunden ablief. In der search.php wird nun mit (time() - ($sort_hours)) die Anzahl der mit st2 definierten Sekunden von der aktuellen Zeit abgezogen und die in diesem Zeitraum aufgelaufenen Beiträge werden angezeigt.

Comments welcome....vielleicht kann man das auch viel einfacher lösen. Oder es hat Sicherheitslücken.
Enduros putzen ist wie Bücher verbrennen.
Das GSX1100G-Forum
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“