Brauche Hilfe beim "Switch-Basteln"
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Brauche Hilfe beim "Switch-Basteln"
Hallo zusammen!
Kann mir jemand helfen einen Switch zu basteln, der den "neues Thema"-Button in viewforum und viewtopic nur anzeigt, wenn im entsprechenden Forum alle Themen geschlossen sind?
Gruß,
kaiste
Kann mir jemand helfen einen Switch zu basteln, der den "neues Thema"-Button in viewforum und viewtopic nur anzeigt, wenn im entsprechenden Forum alle Themen geschlossen sind?
Gruß,
kaiste
- cYbercOsmOnauT
- Ehemaliges Teammitglied
- Beiträge: 3820
- Registriert: 18.02.2004 23:02
- Wohnort: Göttingen
- Kontaktdaten:
Erste Frage: Reicht es Dir, wenn die Buttons einfach nur verschwinden, oder soll auch ein Umgehen über Direktlinks neue Themen zu posten verhindert werden?
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
- cYbercOsmOnauT
- Ehemaliges Teammitglied
- Beiträge: 3820
- Registriert: 18.02.2004 23:02
- Wohnort: Göttingen
- Kontaktdaten:
Ich schau mal, dass ich im Laufe des Tages etwas Zeit frei machen kann um Dir zu helfen. 

• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
- cYbercOsmOnauT
- Ehemaliges Teammitglied
- Beiträge: 3820
- Registriert: 18.02.2004 23:02
- Wohnort: Göttingen
- Kontaktdaten:
Also zuerst erzeugst Du in der phpbb_config eine neue Zeile mit dem Namen closed_forums. Und als Wert fügst Du die ids aller Foren ein, bei denen es so sein soll, das neue Themen nur geöffnet werden können, wenn alle anderen geschlossen sind. Die ids werden getrennt mit Kommata. Beispiel: 12,24,51
Dann nimmst Du den folgenden Codeblock
und fügst ihn im viewforum.php unter
ein. Ebenso fügst Du denselben Codeblock im viewtopic.php unter
ein. Nun müssen wir noch die Templates anpassen.
Im viewforum_body.tpl suche nach (das nun bezieht sich auf subSilver)
und ersetze diese Zeile durch
Im viewtopic_body.tpl suche nach
ersetze es durch
Das wärs. Fehlt nur noch die Sperre bei neuen Postings. Im posting.php suche nach
darunter füge ein
Diese Modifikation ist ungetestet. Will heissen, ich habe es aus dem Kopf programmiert. Sollte jedoch so wie es da steht funktionieren.
Grüße,
Tekin
Dann nimmst Du den folgenden Codeblock
Code: Alles auswählen
if ( in_array($forum_id, explode(',', $board_config['closed_forums'])) )
{
// Existiert mindestens 1 offenes Thema in diesem Forum?
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE forum_id = $forum_id AND topic_status = 0 LIMIT 1";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Konnte Daten über offene Topics im Forum nicht ermitteln', '', __FILE__, __LINE__, $sql);
}
if ( !$db->sql_numrows($result) )
{
// Keine Treffer, also wird das Thema-Button angezeigt
$template->assign_block_vars('switch_show_button', array());
}
}
else
{
$template->assign_block_vars('switch_show_button', array());
}
Code: Alles auswählen
// End header
//
Code: Alles auswählen
$forum_id = intval($forum_topic_data['forum_id']);
Im viewforum_body.tpl suche nach (das nun bezieht sich auf subSilver)
Code: Alles auswählen
<td align="left" valign="middle" width="50"><a href="{U_POST_NEW_TOPIC}"><img src="{POST_IMG}" border="0" alt="{L_POST_NEW_TOPIC}" /></a></td>
Code: Alles auswählen
<td align="left" valign="middle" width="50">
<!-- BEGIN switch_show_button -->
<a href="{U_POST_NEW_TOPIC}"><img src="{POST_IMG}" border="0" alt="{L_POST_NEW_TOPIC}" /></a>
<!-- END switch_show_button -->
</td>
Code: Alles auswählen
<td align="left" valign="bottom" nowrap="nowrap"><span class="nav"><a href="{U_POST_NEW_TOPIC}"><img src="{POST_IMG}" border="0" alt="{L_POST_NEW_TOPIC}" align="middle" /></a> <a href="{U_POST_REPLY_TOPIC}"><img src="{REPLY_IMG}" border="0" alt="{L_POST_REPLY_TOPIC}" align="middle" /></a></span></td>
Code: Alles auswählen
<td align="left" valign="bottom" nowrap="nowrap"><span class="nav">
<!-- BEGIN switch_show_button -->
<a href="{U_POST_NEW_TOPIC}"><img src="{POST_IMG}" border="0" alt="{L_POST_NEW_TOPIC}" align="middle" /></a>
<!-- END switch_show_button -->
<a href="{U_POST_REPLY_TOPIC}"><img src="{REPLY_IMG}" border="0" alt="{L_POST_REPLY_TOPIC}" align="middle" /></a></span></td>
Code: Alles auswählen
case 'newtopic':
if ( empty($forum_id) )
{
message_die(GENERAL_MESSAGE, $lang['Forum_not_exist']);
}
Code: Alles auswählen
if ( in_array($forum_id, explode(',', $board_config['closed_forums'])) )
{
// Existiert mindestens 1 offenes Thema in diesem Forum?
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE forum_id = $forum_id AND topic_status = 0 LIMIT 1";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Konnte Daten über offene Topics im Forum nicht ermitteln', '', __FILE__, __LINE__, $sql);
}
if ( $db->sql_numrows($result) )
{
// Keine Treffer, also wird das Thema-Button angezeigt
message_die(GENERAL_ERROR, 'Du darfst nur neue Themen starten, wenn alle anderen Themen dieses Forums geschlossen sind.');
}
}
Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Hallo Tekin!
Erstmal vielen Dank für die Arbeit, die du dir gemacht hast. Ich war nur länger nicht mehr hier und hab's erst heute gelesen.
Wäre auch gegangen, wenn der Switch grundsätzlich in allen Foren gilt. Macht aber nix. Ich klopf halt einmal eine Reihe von 1 bis x in die closed_forums und nehm bei Bedarf eine id raus.
Am Wochenende werd deinen Code mal einbauen und schauen was passiert. Vorher werd ich wahrscheinlich keine Zeit dafür finden:(
Nun aber nochmal DANKEDANKEDANKE und
bis demnächst!
kaiste
Erstmal vielen Dank für die Arbeit, die du dir gemacht hast. Ich war nur länger nicht mehr hier und hab's erst heute gelesen.
Wäre auch gegangen, wenn der Switch grundsätzlich in allen Foren gilt. Macht aber nix. Ich klopf halt einmal eine Reihe von 1 bis x in die closed_forums und nehm bei Bedarf eine id raus.
Am Wochenende werd deinen Code mal einbauen und schauen was passiert. Vorher werd ich wahrscheinlich keine Zeit dafür finden:(
Nun aber nochmal DANKEDANKEDANKE und
bis demnächst!
kaiste
funktioniert, Danke!
Hallo Tekin!
Leider bin ich jetzt erst dazu gekommen, deinen Code in mein Board einzubauen. Nichtsdestotrotz funktioniert es genau wie es soll. Hab auch nix anderes erwartet
Nochmal ein herzliches Dankeschön!!!
Noch ne Frage:
Ich möchte ja, dass dieser Switch grundsätzlich für alle Foren gilt, muss dafür aber vorab ne ganze Liste Foren-IDs in die DB klopfen. Verlangsamt das irgendwann das Board? Gibt's eine simplere Lösung? Zusatzinfo: Beim 1. Boardaufruf nach 0.00 Uhr, werden grundsätzlich alle Themen vom Vortag geschlossen.
Vielleicht hast Du ja noch nen Tip für mich...
Viele Grüße und Frohe Rest-Ostern!
Stephan
Leider bin ich jetzt erst dazu gekommen, deinen Code in mein Board einzubauen. Nichtsdestotrotz funktioniert es genau wie es soll. Hab auch nix anderes erwartet

Noch ne Frage:
Ich möchte ja, dass dieser Switch grundsätzlich für alle Foren gilt, muss dafür aber vorab ne ganze Liste Foren-IDs in die DB klopfen. Verlangsamt das irgendwann das Board? Gibt's eine simplere Lösung? Zusatzinfo: Beim 1. Boardaufruf nach 0.00 Uhr, werden grundsätzlich alle Themen vom Vortag geschlossen.
Vielleicht hast Du ja noch nen Tip für mich...
Viele Grüße und Frohe Rest-Ostern!
Stephan
- cYbercOsmOnauT
- Ehemaliges Teammitglied
- Beiträge: 3820
- Registriert: 18.02.2004 23:02
- Wohnort: Göttingen
- Kontaktdaten:
Ändere in allen drei Codeblöcken die If-Zeile von
auf
Sobald Du nun die Zelle closed_forums komplett leer lässt, gilt die Sperre für das gesamte Board.
Wichtig: Das empty muss links vom in_array in der if stehen, sonst siehst Du mit großer Wahrscheinlichkeit eine PHP Fehlermeldung wenn Du das Feld closed_forums leerst.
Grüße,
Tekin
P.S.: Warst ja richtig schnell mit der Umsetzung.
:D
Code: Alles auswählen
if ( in_array($forum_id, explode(',', $board_config['closed_forums'])) )
Code: Alles auswählen
if ( empty($board_config['closed_forums']) || in_array($forum_id, explode(',', $board_config['closed_forums'])) )
Wichtig: Das empty muss links vom in_array in der if stehen, sonst siehst Du mit großer Wahrscheinlichkeit eine PHP Fehlermeldung wenn Du das Feld closed_forums leerst.
Grüße,
Tekin
P.S.: Warst ja richtig schnell mit der Umsetzung.

Zuletzt geändert von cYbercOsmOnauT am 05.04.2008 01:39, insgesamt 1-mal geändert.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Probleme
Hallo noch mal,
leider klappt irgendwas mit den letzten Änderungen nicht. An viewforum scheint's nicht zu liegen, das geht. Nur kann ich jetzt keine Topics mehr aufrufen. Hab alle Änderungen nochmal überprüft, auch den Codeblock aus der offensichtlich funktionierenden viewforum in die viewtopic kopiert. Ohne Erfolg. Mein IE7 spuckt mir beim Aufruf eines Topics einen internen Serverfehler (HTTP 500) aus.
Ne Idee?
Gruß,
Stephan
P.S. Schnell umgesetzt, nicht wahr
Mein Board ist nicht online!
leider klappt irgendwas mit den letzten Änderungen nicht. An viewforum scheint's nicht zu liegen, das geht. Nur kann ich jetzt keine Topics mehr aufrufen. Hab alle Änderungen nochmal überprüft, auch den Codeblock aus der offensichtlich funktionierenden viewforum in die viewtopic kopiert. Ohne Erfolg. Mein IE7 spuckt mir beim Aufruf eines Topics einen internen Serverfehler (HTTP 500) aus.
Ne Idee?
Gruß,
Stephan
P.S. Schnell umgesetzt, nicht wahr


Mein Board ist nicht online!
- cYbercOsmOnauT
- Ehemaliges Teammitglied
- Beiträge: 3820
- Registriert: 18.02.2004 23:02
- Wohnort: Göttingen
- Kontaktdaten:
HTTP 500 ist nun aber sehr suspekt. Denn der kann von meinem Code eigentlich nicht herrühren. Fehlerhafter Code würde höchstens eine PHP Fehlermeldung zum Vorschein bringen.
Beisst sich meine Modifikation vielleicht mit anderen, die Du bereits installiert hast? Achja, diesen Zusatz darfst Du in der if vom posting.php nicht hinzu fügen.
Beisst sich meine Modifikation vielleicht mit anderen, die Du bereits installiert hast? Achja, diesen Zusatz darfst Du in der if vom posting.php nicht hinzu fügen.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
• Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu