Konstante erschaffen, mit Bezug zu ForenID

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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.
Antworten
Benutzeravatar
7emper5i
Ehemaliger Übersetzer
Beiträge: 1473
Registriert: 11.04.2009 13:31
Wohnort: Köln
Kontaktdaten:

Konstante erschaffen, mit Bezug zu ForenID

Beitrag von 7emper5i »

Hallo zusammen,

Ich benötige Hilfe bei einem php-Error.

Hintergrund:

Ich versuche mich im Umschreiben eines vorhandenen Mods, welcher Moderatoren und Administratoren die Möglichkeit erteilt, eine Datei aufzurufen, die erkennt, wer wie oft einen Beitrag las.

Eingebaut wurde diese in der Schnellmoderation.


Der Quellcode ist:

Code: Alles auswählen

$topic_mod .= ($auth->acl_get('m_tracker', $forum_id) && $topic_data['forum_topic_tracker']) ? '<option value="topic_view_tracker">' . $user->lang['TOPIC_VIEW_TRACKER'] . '</option>' : '';

Um die Funktion auch woanders im Forum zu nutzen, habe ich versucht, ihr eine Konstante zuzuweisen, nennen wir sie U_STASI :wink: (Wortspiel von einem Bekannten :roll: ),
und füge diese Codezeile an passender Stelle in die functions.php

Code: Alles auswählen

'U_STASI'				=> ($auth->acl_get('m_tracker', $forum_id) && $topic_data['forum_topic_tracker']) ? append_sid("{$phpbb_root_path}topic_view_tracker.$phpEx"),

Sobald die Zeile eingefügt und abgeschickt ist, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Parse error: syntax error, unexpected T_VARIABLE in /var/www/web9/html/forum/includes/functions.php on line 4201
Die Line entspricht dem Fremdcode.

Im Vergleich zu anderen Codezeilen fällt mir kein signifikanter Unterschied auf, so dass ich selber ratlos vorm Berg steh.
Natürlich hab ich schon Tante Google bemüht, aber die allgemeingültigen Aussagen helfen mir im speziellen Fall nicht weiter.
Zuletzt geändert von 7emper5i am 02.08.2010 08:10, insgesamt 1-mal geändert.
Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17411
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: "unexpected T_VARIABLE" (Überschrift wird noch angepasst

Beitrag von Dr.Death »

Moin,

der "ELSE" Zweig fehlt ;-)

Beispiel:

Code: Alles auswählen

if ($bedingung == true)
{
    $ergebnis = "wahr";
}
else
{
    $ergebnis = "unwahr";
}
Das gleiche in Kurzform:

Code: Alles auswählen

$ergebnis = ($bedingung == true) ? "wahr" : "unwahr";
Bei Dir fehlt das "ELSE", wenn die Bedingung nicht erfüllt ist:

Code: Alles auswählen

: '' 

Code: Alles auswählen

'U_STASI'            => ($auth->acl_get('m_tracker', $forum_id) && $topic_data['forum_topic_tracker']) ? append_sid("{$phpbb_root_path}topic_view_tracker.$phpEx") : '',
Siehe auch : http://www.phpbar.de/w/If_then_else_mit_%3F
Benutzeravatar
7emper5i
Ehemaliger Übersetzer
Beiträge: 1473
Registriert: 11.04.2009 13:31
Wohnort: Köln
Kontaktdaten:

Re: "unexpected T_VARIABLE" (Überschrift wird noch angepasst

Beitrag von 7emper5i »

Moin Doc,

und Danke.

Ohne zu wissen, was ich genau tue, hatte ich ein ähnliches Konstrukt bereits einmal erschaffen, wo ich dann aber wohl woanders einen Fehler gehabt haben muss.

Ein paar Zeilen weiter drunter, wurde ja die Konstante für das ACP definiert, welche meinem gewünschten Ergebnis sehr nah kommt:

Code: Alles auswählen

		'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_root_path}adm/index.$phpEx", false, true, $user->session_id) : '')
Irgendwo muss ich da um die Uhrzeit gestern einen Fehlerteufel eingebaut haben...,
Danke für den Link zum schlau lesen, mein php für Dummies erreicht mehr und mehr seine Grenzen :D


Ich erinnere mich wieder dunkel daran, warum ich gestern abend die auch wieder weggenommen habe.

1. Ich hab zwar keine Fehlermeldung bekommen, aber
2. sie waren primär nicht zielführend, für mich als Laien mit gefährlichem Halbwissen.

Ich hab die Zuweisung :'' wieder rausgenommen, da diese im Zusammenspiel mit der restlichen Zeile mir beim "hovern" und klicken des Buttons nur einen Backlink auf das eigentliche Thema ausgegeben hat.
Ein Klick auf den Link hat mich also, so wie auch jetzt, nicht zum neuen php-Dokument im root-Verzeichnis geführt und dieses gleichzeitig mit der Information über meine aktuelle Foren-ID gefüttert, so wie ich es eigentlich angegeben habe, sondern es hat mich einfach wieder zum Thema geleitet, bzw gar nichts gemacht:

http://yourdomain.com/viewtopic.php?f=2&t=1

Ein Abändern der auth->acl_get in ('a_') um auf Nummer sicher zu gehen, dass der Admin es wirklich darf, hab ich auch schon probiert. Ohne Erfolg.

Code: Alles auswählen

'U_STASI'            => ($auth->acl_get('m_tracker', $forum_id) && $topic_data['forum_topic_tracker']) ? append_sid("{$phpbb_root_path}topic_view_tracker.$phpEx") : '',
Zuletzt geändert von 7emper5i am 02.08.2010 10:32, insgesamt 1-mal geändert.
Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17411
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Konstante erschaffen, mit Bezug zu ForenID

Beitrag von Dr.Death »

Hi,


Du solltest die Variable U_STASI nun noch im Template abfangen.....

Code: Alles auswählen

'U_STASI'            => ($auth->acl_get('m_tracker', $forum_id) && $topic_data['forum_topic_tracker']) ? append_sid("{$phpbb_root_path}topic_view_tracker.$phpEx") : false,
Setze die Variable auf "false" und baue darauf hin eine einfache Abfrage im Template ein:

Code: Alles auswählen

<!-- IF U_STASI -->
    hier deine U_STASI Code
<!-- ENDIF -->
Benutzeravatar
djchrisnet
Mitglied
Beiträge: 1275
Registriert: 29.06.2007 15:52
Wohnort: Elmshorn
Kontaktdaten:

Re: Konstante erschaffen, mit Bezug zu ForenID

Beitrag von djchrisnet »

Viel wichtiger noch als das ist, dass du in page_header die variable $topic_data lädst

Dies tust du mit

Code: Alles auswählen

global $topic_data;
Desweiteren wird page_header natürlich überall aufgerufen, die variable $topic_data gibt es aber nur auf einer seite.

deshalb musst du vorher prüfen, ob sie existiert mit

Code: Alles auswählen

isset($topic_data['forum_topic_tracker'])
tut sie dies nicht, müssen wir sie erstellen
Zusamengefasst heißt das:

Code: Alles auswählen

global $topic_data;
$template->assign_var('U_STASI', ($auth->acl_get('m_tracker', $forum_id) && isset($topic_data['forum_topic_tracker'])) ? append_sid("{$phpbb_root_path}topic_view_tracker.$phpEx") : false);
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“