Seite 3 von 7

Verfasst: 06.09.2007 09:34
von Testusmania99
Ähm, langsam kappiere ich, warum darauf so herumgereitet wird.
Sicher, ich als Admin, blablabla, kann das ja auch alles und gereggte user können nicht antowrten. Aber das interessiert mich doch gar nicht, was ich da als Admin kann.
Wie EIngangs erklärt will ich doch, dass NUR gereggte User dort hantieren und sich einen Bereich wie ein Tagebuch aufbauen. Der "registrierte User" soll einen Thread erstellen und diesen auch weiter führen können. Andere sollen den nur lesen dürfen.
Was der Admin da macht, is mir völlig rille!!!
Die User, darauf kommt es mir an!!!

Wie gesagt, ich tat alles bisherige, wie hier beschrieben. Alles funktioniert ja auch. Nur es fehlt die Funktion für den registrierten Benutzer!!!!!!!!!!!!! Nicht der Admin. Schon gesagt, das is mir völlig egal!

Jedenfalls ging ich in der letzten Stunde noch einmal alles durch und dabei ist mir in der installations-datei folgender Eintrag aufgefallen:

Code: Alles auswählen

$auth_admin = new auth_admin(); 
Hat das damit was zu tun? Was der Admin macht, ist egal. Ich will den User ja ermöglichen, dort diese Rechte umzusetzen. Nicht Admin!!!
Müsste ich unter diesen Code also noch einen Eintrag setzen evtl.?????
Das müsste doch eigentlich dann mein Problem lösen!?

Wie gesagt, alles funzt. Aber ich habe jetzt verstanden worauf Ihr hinauswolltet. Das Recht soll jedoch für den registrierten User sein!

Mal schauen, ob da noch wer helfen mag.... ô_O


P.s.: Aus meinem Start-Thread:
- 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!

Verfasst: 06.09.2007 09:50
von gn#36
Ich weiß ehrlich gesagt nicht was du jetzt möchtest. Du hast es doch jetzt offenbar so eingestellt dass registrierte User nur auf eigene Themen antworten können. Die Installationsdatei hat überhaupt nichts mit der letztendlichen Rechtevergabe zu tun, sie vereinfacht nur das Neuanlegen des neuen Rechts, man hätte das genauso gut mit einem SQL Befehl erledigen können.
Nur es fehlt die Funktion für den registrierten Benutzer
Welche Funktion soll das sein? Funktioniert evtl. doch was nicht richtig?
Wenn du für den Admin keine Sonderstellung willst musst du auch ihm (genau wie allen anderen Berechtigungsgruppen) das antworten verbieten.

Ich glaube wir drehen uns im Kreis. Vielleicht machst du mal einen Screenshot von den relevanten Berechtigungseinstellungen und verlinkst den hier.

Verfasst: 06.09.2007 10:09
von Testusmania99
Sorry, hab mich etwas unglücklich ausgedrückt. Mit "Funktion" meinte ich mehr die Berechtigung.
Hier mal das Bild. Aber das sagt auch nicht mehr aus, als ohnehin schon mehr als genügend ausdiskutiert: ^^
Hier das Bild

Also, der Fehler kann nicht im ACP sein. Am Style kann es auch nicht liegen, da ich es auch mit dem Standard-Style "prosilver" und "Aqua Glass".

Und wenn Du mich fragst, muss irgendwas scriptmäßiges falsch sein!?

Probiere doch selbst mal aus:
http://forum.imnetzkay.de/
Dann wirst Du sehen, was ich meine. ^^

Ausserdem wollte ich Dir mal nebenbei danken, dass Du so für mich da bist. Echt voll nett von Dir!!!!!!!!!! *mal Blümchen überreich*

Verfasst: 06.09.2007 20:47
von gn#36
Testusmania99 hat geschrieben: Ausserdem wollte ich Dir mal nebenbei danken, dass Du so für mich da bist. Echt voll nett von Dir!!!!!!!!!! *mal Blümchen überreich*
Kein Ding. Hast du denn einen Testuser angelegt (oder besser gesagt 2, einen mit Antwortrechten und einen nur mit dem speziellen Recht)?
Die Berechtigung die du im Screenshot drin hast ist für Registrierte so ok, allerdings brauchst du wie gesagt noch eine andere Gruppe die dann eben andere Rechte hat (sofern du überhaupt jemandem mehr Rechte geben möchtest).

Was ist denn der Fehler der genau auftritt? Können Registrierte trotz der Einstellung auf fremde Themen antworten? Können sie auch nicht auf eigene Themen antworten? Wenn das der Fall ist verlinke doch mal kurz die posting.php (KB:datei).

Verfasst: 07.09.2007 09:45
von Testusmania99
Selbstverständlich habe ich 2 Testuser angelegt. Alles, wie bisher beschrieben. Bitte sehe Dich doch in meinem Forum um (anmelden, dann "Privatleben"). Du wirst selber sehen, dass es nicht richtig funzt. Der Link dazu befindet sich in meinem vorangegangenen Posting.
Hier der Ordner zu meiner posting.php (winrar gepackt) und der posting.txt:
http://lonelyboy.ja-nee.de/janee_test/phpbb_test/

Wie gesagt, ich habe Dir bereits alles erklärt. ^^
1.) Können Registrierte trotz der Einstellung auf fremde Themen antworten?
2.) Können sie auch nicht auf eigene Themen antworten?
1.) Nein.
2.) Richtig, sie können nicht auf eigene Themen antworten.

Wie gesagt, melde Dich fix an und Du wirst es Live erleben können. ^^

LG, Testusmania99

P.s.: Danke Dir für Deine andauernde Hilfestellung. Ohne Dich würde ich den Forumbereich aufgeben!!!!!!! :(

Verfasst: 07.09.2007 12:00
von gn#36
Ach jetzt habe ich das Problem gefunden. Die viewtopic.php setzt die Buttons abhängig davon, ob Antwortrechte bestehen oder nicht. In dem veralteten RC, in dem ich das getestet hatte war dem aber nicht so, da wurden die Buttons unabhängig von der Berechtigung zum Antworten dargestellt. Bei einem direkten Aufruf der posting.php müsste das ganze auch in deinem Forum funktionieren. Um das Verhalten der viewtopic.php zu ändern musst du zusätzlich noch diese Änderung durchführen:
öffne die viewtopic.php
suche (ca. Zeile 579)

Code: Alles auswählen

'S_DISPLAY_REPLY_INFO'	=> ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_reply'), $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
ersetze durch

Code: Alles auswählen

'S_DISPLAY_REPLY_INFO'	=> ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_gets(array('f_reply', 'f_answer_own_topics'), $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
suche (ca. Zeile 598)

Code: Alles auswählen

'U_POST_REPLY_TOPIC' 	=> ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&f=$forum_id&t=$topic_id") : '',
ersetze durch

Code: Alles auswählen

'U_POST_REPLY_TOPIC' 	=> ($auth->acl_get('f_reply', $forum_id) || ($auth->acl_get('f_answer_own_topics', $forum_id) && $topic_data['topic_poster'] == $user->data['user_id']) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&f=$forum_id&t=$topic_id") : '',
suche (ca. Zeile 1393)

Code: Alles auswählen

'U_QUOTE'			=> ($auth->acl_get('f_reply', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=quote&f=$forum_id&p={$row['post_id']}") : '',
ersetze durch

Code: Alles auswählen

'U_QUOTE'			=> ($auth->acl_get('f_reply', $forum_id) || ($auth->acl_get('f_answer_own_topics', $forum_id) && $topic_data['topic_poster'] == $user->data['user_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=quote&f=$forum_id&p={$row['post_id']}") : '',
Dadurch sollte es dann klappen.

Verfasst: 07.09.2007 13:27
von Testusmania99
Ok, ich werde es erst heuteabend orüfen können. Ich schreibe Dir dann hier noch einmal, wenn's klappt. Hoffe ich auch, dass es klappt. :D
Nochmal vielen Dank für Deine geile Mithilfe.

LG, Testusmania99

Verfasst: 07.09.2007 16:31
von igelein
ich möchte, dass auch nur der schreibende und der Admin das Thema sehen können, wie ist das möglich

Verfasst: 07.09.2007 17:06
von gn#36
Das erfordert eine weitere Berechtigung, die Vorgehensweise ist aber ähnlich:
1.Schritt: Backup!
Diese Datei ausführen (zusätzlich zu allen bisher beschriebenen Dingen):

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_view_own_topics'),
    'global'   => array()
));
?>
in der bereits angelegten Sprachdatei das hier:

Code: Alles auswählen

// Adding the permissions
$lang = array_merge($lang, array(
    'acl_f_answer_own_topics'    => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post')
)); 
ersetzen durch das:

Code: Alles auswählen

// Adding the permissions
$lang = array_merge($lang, array(
    'acl_f_answer_own_topics'    => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post'),
'acl_f_view_own_topics' => array('lang' => 'Kann eigene Themen sehen', 'cat' => 'post')
)); 
Dann in der Viewforum das hier suchen:

Code: Alles auswählen

if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
{
	if ($user->data['user_id'] != ANONYMOUS)
	{
		trigger_error('SORRY_AUTH_READ');
	}

	login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
austauschen gegen folgendes:

Code: Alles auswählen

if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
{
if($auth->acl_get('f_view_own_topics', $forum_id))
{
$view_own_topics = true;
}
	elseif ($user->data['user_id'] != ANONYMOUS)
	{
		trigger_error('SORRY_AUTH_READ');
	}
else
{
	login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
}
else
{
$view_own_topics = false;
}
Dann etwas später das hier

Code: Alles auswählen

if ($sort_days)
{
	$min_post_time = time() - ($sort_days * 86400);

	$sql = 'SELECT COUNT(topic_id) AS num_topics
		FROM ' . TOPICS_TABLE . "
		WHERE forum_id = $forum_id
			AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
			AND topic_last_post_time >= $min_post_time
		" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND topic_approved = 1');
ersetzen durch das hier:

Code: Alles auswählen

if ($sort_days)
{
	$min_post_time = time() - ($sort_days * 86400);
if($view_own_topics)
{
$view_own_sql = ' AND topic_poster = '.$user->data['user_id'] . ' ';
}
	$sql = 'SELECT COUNT(topic_id) AS num_topics
		FROM ' . TOPICS_TABLE . "
		WHERE forum_id = $forum_id
$view_own_sql
			AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
			AND topic_last_post_time >= $min_post_time
		" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND topic_approved = 1');
wenig später vor

Code: Alles auswählen

else
{
das hier einfügen:

Code: Alles auswählen

elseif($view_own_topics)
{
$sql = 'SELECT COUNT(topic_id) AS num_topics FROM ' . TOPICS_TABLE . "WHERE forum_id = $forum_id AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ") AND topic_poster = ". $user->data['user_id'] . "" . (($auth->acl_get('m_approve', $forum_id)) ? '' : ' AND topic_approved = 1');
$result = $db->sql_query($sql);
	$topics_count = (int) $db->sql_fetchfield('num_topics');
	$db->sql_freeresult($result);
}
Als nächstes noch nach

Code: Alles auswählen

// SQL array for obtaining topics/stickies
$sql_array = array(
suchen und davor einfügen:

Code: Alles auswählen

if($view_own_topics)
{
$sql_where .= ' AND t.topic_poster = '.$user->data['user_id'];
}
Soweit sollten diese Änderungen erst einmal alle Themen die der User nicht sehen darf in der Themenübersicht ausblenden. (Testen wäre hier vielleicht schon mal angebracht).

Jetzt müssen noch die direkten Aufrufe unterbunden werden, da habe ich jetzt gerade allerdings keine Zeit zu da das ebenfalls recht umfangreich ist.
Ach ja: Die Berechtigung muss so eingestellt werden, dass das Lesen des Forums verboten ist, das neue Recht aber gegeben ist. Dann sollte man in der Themenübersicht des Forums nur die eigenen Themen sehen können aber weil es noch nicht fertig ist kein Zugriff darauf möglich sein.

Verfasst: 07.09.2007 17:14
von nickvergessen
Willst du das nicht als MOD releasen?