Hallo,
ich beziehe mich zunächst mal auf den Thread
http://www.pragmamx.org/Forum-topic-21405.html
Das klappt ja auch ohne Probleme
Nun möchte ich einer Benutzergruppe eine bestimmte Seite des vwar Moduls zuweisen.
(Bitte jetzt keine Hinweise auf die diversen Sicherheitslücken, das ist mir bewußt aber ich habe keine Alternative)
Ich habe also in der index.php folgende Änderungen vorgenommen
/**
* einen Modulnamen verpassen
*/
$name = mxGetMainModuleName();
define("MX_MODULE", $name);
in
/**
/**
* einen Modulnamen verpassen
*/
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 3) {
$name = 'vwar';
}
}
if (!isset($name)) {
$name = mxGetMainModuleName();
}
define("MX_MODULE", $name);
Nun lautet der Link den ich nutzen will aber
http://www.tld/modules.php?name=vwar&file=member
Nun kann ich natürlich nicht vwar&file=member eintragen weil es ja nur das Modul vwar gibt.
Hat da vielleicht jemand eine Idee ?
Theoretisch sollte sollte das wie folgt funktioniern:
Erweiter die Zeilen
/**
/**
* einen Modulnamen verpassen
*/
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 3) {
$name = 'vwar';
}
}
if (!isset($name)) {
$name = mxGetMainModuleName();
}
define("MX_MODULE", $name);
$modfile = "modules/" . $name . "/index.php";
$op = "modload";
$file = "index";
mal auf das
/**
/**
* einen Modulnamen verpassen
*/
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 3) {
$name = 'vwar';
}
}
if (!isset($name)) {
$name = mxGetMainModuleName();
}
define("MX_MODULE", $name);
if (MX_IS_USER && $uinf['user_ingroup'] == 3) {
$modfile = "modules/" . $name . "/member.php";
$op = "modload";
$file = "member";
} else {
$modfile = "modules/" . $name . "/index.php";
$op = "modload";
$file = "index";
}
Das funktioniert schon sehr gut. :thumbup:
Ich verstehs nur noch ned so ganz. :red:
Wie müßte es beispielsweise mit diesem (noch längeren) Pfad aussehen.
modules.php?name=vwar&file=war&action=nextaction
Hab es in meinem jugendlichen Leichtsinn mal so ausprobiert
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 12) {
$name = 'vwar';
}
}
if (!isset($name)) {
$name = mxGetMainModuleName();
}
define("MX_MODULE", $name);
if (MX_IS_USER && $uinf['user_ingroup'] == 12) {
$modfile = "modules/" . $name . "/war.php";
$op = "modload";
$file = "war";
$action = "nextaction";
} else {
$modfile = "modules/" . $name . "/index.php";
$op = "modload";
$file = "index";
}
Das $action = "nextaction"; scheint aber nichts zu bewirken.
Gibt es denn im Modulverzeichnis eine Datei "war.php"?? In der mir vorliegenden Version 1.5 für Nuke7.6v1 gibt es die nämlich nicht. ;)
Demnach müsste der Aufruf so aussehen:
Zitatmodules.php?name=vwar&action=nextaction
und dein Code theoretisch so
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 12) {
$name = 'vwar';
}
}
if (!isset($name)) {
$name = mxGetMainModuleName();
}
define("MX_MODULE", $name);
if (MX_IS_USER && $uinf['user_ingroup'] == 12) {
$action = "nextaction";
} else {
$modfile = "modules/" . $name . "/index.php";
$op = "modload";
$file = "index";
}Falls die Variable $action auf diesem Weg nicht ans Moduls durchgereicht werden sollte, dann musste die in der
index.php des Moduls definieren. Vor der Zeile
// ################################### display wars ###################################
fügst Du dann das ein
if (MX_IS_USER) {
$uinf = mxGetUserData();
if ($uinf['user_ingroup'] == 12) {
$GPC['action'] = 'nextaction';
}
}Wie erwähnt, ist alles Theorie, da ich zwar die oben genannte Version als Source besitze, das Modul jedoch nicht installiert habe und somit auch keine Tests durchführen kann.
Ja die Datei gibts. :)
Die Links stehen hier
http://www.vwar.de/FAQ_DE.html#4_1
Deine erste Lösung ging leider nicht. Ich versuchs mal mit der Variante direkt im Modul.
Edit: Die Variante direkt in der index.php des Moduls funktioniert. Daaaanke :thumbup:
Nochmal zur Ergänzung falls jemand was Ähnliches vorhat und ich doch noch einen Fehler festgestellt habe.
Die Änderungen müssen in der normalen index.php und in der jeweils angesprochenen Datei des Moduls (hier war.php - nicht index.php des Moduls) vorgenommen werden.
Die Anzeige als Startseite funktioniert nach den vorgenommenen Änderungen zwar, allerdings lassen sich dann die normalen Funktionen des VWAR Moduls auf dieser Seite nicht mehr nutzen.
Im konkreten Fall kann man sich nicht mehr von Wars an bzw. abmelden. Das kann natürlich nicht Sinn der Sache sein.
Die Lösung des Problems ist jedoch ganz einfach möglich. Die geänderte Datei des VWAR Moduls (hier war.php) speichert man unter einem anderen Namen bsp. war_start.php ab und setzt diese als Startseite in der normalen index.php ein.
Schon funktioniert wieder Alles und man hat seine Startseite.
Nochmal danke für die Hilfe. :thumbup: