Seite 1 von 7

Tagebuch?

Verfasst: 05.09.2007 13:33
von Testusmania99
Hallo!
Zum einen, "nein", ich möchte kein Mod, kein Blog und nichts, was dem ähnelt.

- Was möchte ich?
Ich möchte im phpbb3 (rc5) ein Forum so einrichten, dass die registrierten Benutzer einen Thread erstellen können, welchen nur SIE benutzen und nur eigene Beiträge erstellen können.
Andere dürfen NUR lesen!

- Beispiele?
Im Woltlab-Forum (ab 2.3.x) kann man ein Forum so einstellen, dass mein Vorhaben funktioniert. Nur Themen-Ersteller können in ihren eigenen Themen antworten, andere nur lesen.

- Geht das überhaupt?
Soviel ich bereits gehört habe, ging das mit dem phpbb2 überhaupt nicht und auch andere Forensoftware hat sich dabei ausgeklingt. Derzeit soll das nur Woltlab unterstützen.

Kann man inzwischen irgendwie mit einer Hintertür (mod???) das so einrichten, wie ich das gerne hätte?

Ich wäre um jede Hilfe sehr erfreut.

LG, Testusmania99

P.s.:
SuFu hat nicht das ausgeworfen, was ICH gerne hätte. (andere vlt auch gerne hätten?)

Verfasst: 05.09.2007 14:24
von gn#36
Das lässt sich mit beiden Systemen (sowohl phpbb2 als auch phpbb3) realisieren. Wie das mit phpbb2 geht findest du in diesem Thema. Du musst dann nach Einbau des Mods lediglich die Berechtigungen so einstellen, dass lesen eben erlaubt ist, aber Antworten nur bei eigenen Themen.

Ein bereits existierender Mod für phpbb3 ist mir hierfür allerdings noch nicht bekannt, hierfür müsste allerdings Ähnliches passieren wie für das phpbb2: Es gibt ein neues Recht welches in der posting.php dann abgefragt wird.

Hierzu eine PHP Datei mit diesem Inhalt auf den Server laden, ausführen und wieder löschen (ins Stammverzeichnis des Forums):

Code: Alles auswählen

<?php
// Setup $auth_admin class so we can add permission options
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
$auth_admin = new auth_admin();

// Add permissions
$auth_admin->acl_add_option(array(
    'local'      => array('f_answer_own_topics'),
    'global'   => array()
));
?>
Dann eine neue Sprachdatei mit folgendem Inhalt in languages/{deine_sprache(n)}/mods/ anlegen mit dem Namen permissions_viewself.php
In dieser Datei steht dann das hier:

Code: Alles auswählen

<?php
/**
* DO NOT CHANGE
*/
if (empty($lang) || !is_array($lang))
{
    $lang = array();
}

// Adding the permissions
$lang = array_merge($lang, array(
    'acl_f_answer_own_topics'    => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post')
));
?>
Damit sollte die Berechtigung schon mal im ACP auswählbar sein und du kannst das Berechtigungssystem so einstellen, dass Antworten verboten ist, aber Antworten auf eigene Posts erlaubt (neue Themen auch erlaubt).

Dann muss noch die posting.php angepasst werden:

Suche nach

Code: Alles auswählen

case 'reply':
		if ($auth->acl_get('f_reply', $forum_id))
		{
			$is_authed = true;
		}
und füge direkt danach ein:

Code: Alles auswählen

elseif($auth->acl_get('f_answer_own_topics', $forum_id))
{
if($post_data['topic_poster'] == $user->data['user_id'])
{
$is_authed = true;
}
}
Eigentlich sollte es so dann funktionieren, bitte vorher ein vollständiges Backup machen, da ich das nicht getestet habe.

Verfasst: 05.09.2007 14:27
von nickvergessen
Oder warte hierrauf:
[DEV] Author Viewable Only MOD
Der soll das was du willst, als AddOn erhalten

Verfasst: 05.09.2007 14:37
von Testusmania99
Vielen Dank an Euch beide!!! Ich werde die php-scripterei gleich mal ausprobieren. Gleichzeitig warte ich dann noch auf den Mod.

Vielen Dank!!!!

EDIT:
WIe heisst denn die erste php-datei, welche ich ins stammverzeichnis laden soll???

Verfasst: 05.09.2007 14:41
von redbull254
Hallo,erstmal :wink:

ich denke mal, die kannst Du nennen, wie Du willst, weil Du die ja nur in der Adressleiste aufrufen musst.

Verfasst: 05.09.2007 15:21
von Testusmania99
Muss ich wohl auf den Mod warten.
Habe alles getestet mit den php's. Ausser dass ich es anwählen konnte in kryptischer sprache, dass man nur selbst antworten kann, wars das auch schon. wat soll's. Hab ja zeit. ^^

Dennoch danke, für die großen Bemühungen!

Verfasst: 05.09.2007 15:57
von gn#36
Dann hast du was beim Einbau falsch gemacht. Ich habe es zum Test jetzt einmal exakt so eingebaut und ausgeführt wie oben angegeben und es klappt (inklusive Sprachdaten).

Verfasst: 05.09.2007 16:01
von Testusmania99
Ok, ich hab dann wohl was falsch gemacht -.-"

Hättest Du was dagegen, wenn Du mir die entsprechenden Daten hier im Anhang übermitteln könntest??? Möglichst mit Ordnern.

Das wäre sogar hilfreich für die anderen. *find*

LG, Testusmania99

Verfasst: 05.09.2007 16:56
von gn#36
Ich fürchte da sind noch andere Dinge verändert in der posting.php, so dass ich das Risiko an der Stelle nicht eingehen würde, das könnte zu seltsamen Fehlern führen (oder auch ganz offensichtlichen).

Ich habe die Anleitung jetzt vielleicht noch mal etwas deutlicher gemacht:

Erstelle diese Datei mit beliebigem Namen und führe sie im Stammverzeichnis des Forums aus:

Code: Alles auswählen

<?php
// Setup $auth_admin class so we can add permission options
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
$auth_admin = new auth_admin();

// Add permissions
$auth_admin->acl_add_option(array(
    'local'      => array('f_answer_own_topics'),
    'global'   => array()
));
?>
Lösche die Datei wieder.

Erstelle eine weitere neue Datei mit dem Namen "permissions_answer_own_topics.php"
lege diese Datei im Verzeichnis language/de/mods (und allen anderen Sprachdateiverzeichnissen die du evtl. im ACP verwendest) an und fülle sie mit folgendem Inhalt:

Code: Alles auswählen

<?php
/**
* DO NOT CHANGE
*/
if (empty($lang) || !is_array($lang))
{
    $lang = array();
}

// Adding the permissions
$lang = array_merge($lang, array(
    'acl_f_answer_own_topics'    => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post')
));
?>
Jetzt findest du im Adminbereich bei den Berechtigungen in der Rubrik "Beiträge" den Eintrag "Kann eigene Themen beantworten" (recht weit oben). Ist das nicht so, ist etwas schief gelaufen und du solltest dir die obigen Schritte noch einmal ganz genau ansehen. Hier setzt du die Berechtigung "Kann eigene Themen beantworten" auf ja, während du "Kann auf Themen antworten" auf nein setzen musst, ansonsten können alle User weiterhin antworten.

Diese Berechtigung musst du für alle Gruppen entsprechend setzen.

Dann muss noch die posting.php angepasst werden:

Suche nach

Code: Alles auswählen

case 'reply':
		if ($auth->acl_get('f_reply', $forum_id))
		{
			$is_authed = true;
		}
und füge direkt danach ein:

Code: Alles auswählen

elseif($auth->acl_get('f_answer_own_topics', $forum_id))
{
if($post_data['topic_poster'] == $user->data['user_id'])
{
$is_authed = true;
}
}
Eigentlich sollte es so dann funktionieren.

Verfasst: 05.09.2007 17:38
von Testusmania99
Ok, das ist schonmal wesentlich besser.
Nun.....
language/de/mods
Pack ich da die Datei rein, gibs nen üblen phpfehler im acp.

Und die posting.php kommt unter "/de" dann rein?

Weil es bei mir NICHT funzt, kann es daran liegen dass ich einen anderen Style benutze?. Sollte doch eigentlich nicht daran liegen... o_O

LG, Testusmania99


P.s.: Dein TUT ist perfekt erklärt. Gratulation. Nur der Fehler liegt dann wohl an mir oder meinem Style. -.-