Seite 1 von 1

Konstante erschaffen, mit Bezug zu ForenID

Verfasst: 01.08.2010 23:44
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.

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

Verfasst: 02.08.2010 07:23
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

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

Verfasst: 02.08.2010 07:36
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") : '',

Re: Konstante erschaffen, mit Bezug zu ForenID

Verfasst: 02.08.2010 10:05
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 -->

Re: Konstante erschaffen, mit Bezug zu ForenID

Verfasst: 02.08.2010 12:43
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);