Seite 1 von 1

mitgliederliste erst nach bestimmter beitragsanzahl zu sehen

Verfasst: 16.01.2005 16:09
von yks
hallo,

in der suche leider nichts dergleichen fand :
gibt es ein mod, daß die ansicht einzelner php-dateien, insbesondere der mitgliederliste, auch für registrierte und eingeloggte user erst nach einer bestimmten anzahl an geposteten beiträgen ermöglicht ?
(bezogen auf board 2.0.11)

danke + viele grüße, yks

Verfasst: 16.01.2005 21:49
von andreasOymann
memberlist.php:

suche

Code: Alles auswählen

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_VIEWMEMBERS);
init_userprefs($userdata);
//
// End session management
//
füge danach ein

Code: Alles auswählen

if ( $userdata['user_posts'] <= 10 )
{
	message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); 
}
Der Wert 10 bestimmt die Anzahl der Posts, die ein User mindestens haben muss.

A.

Verfasst: 17.01.2005 07:38
von yks
super, vielen dank andreas :)

und noch eine frage : wie kann man bestimmte user ids zusätzlich zu der beitragsregelung von der ansicht der memberlist ausnehmen ?

und keine ahnung, ob das genauso leicht geht :
kann man auch bei der search.php für 'user mit betragszahl < x' die suche nach nur einem nick verhindern ?

sorry, aber grübele hier bißchen über ein prob, deswegen.

viele grüße, yks

Verfasst: 17.01.2005 17:08
von andreasOymann
ja, beides geht. Bin leider erst Donnerstag wieder zuhause an meinem Rechner, werde dir dann was fertig machen... ist etwas komplexer als obige Code-Zeile.

Andreas

Verfasst: 19.01.2005 21:08
von yks
hi andreas,

schade, dachte, hätte schon etwas, habe hier mal gefragt, würde es etwas vereinfachern und du hättest dir etwas arbeit sparen können - leider noch keine antwort kam.

das mit der gruppe wäre mmn die praktischste lösung.
werden morgen dort nochmal nachhaken.
dann bliebe nur noch die suche offen.

viele grüße, yks

Verfasst: 20.01.2005 00:44
von andreasOymann
für die Geschichte mit der memberlist:

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/functions.php 

# 
#-----[ FIND ]------------------------------------------ 
# 
?> 

# 
#-----[ BEFORE, ADD ]------------------------------------------- 
# 
function member_of($group_id, &$userdata) 
{ 
        global $db; 
        if ( !$userdata['session_logged_in'] ) 
        { 
                return false; 
        } 
        if ( isset($userdata['user_member_of_' . $group_id]) ) 
        { 
                return $userdata['user_member_of_' . $group_id]; 
        } 
        $sql = "SELECT count(*) AS num FROM " . USER_GROUP_TABLE . " 
                WHERE user_id = '" . $userdata['user_id'] . "' AND user_pending = 0 AND group_id IN ( " . $group_id . " )"; 
          if ( !($result = $db->sql_query($sql)) ) 
        { 
                message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql); 
        } 
        $row = $db->sql_fetchrow($result); 
        if ( $row['num'] > 0 ) 
        { 
                return $userdata['user_member_of_' . $group_id] = true; 
        } 
        return $userdata['user_member_of_' . $group_id] = false; 
} 

# 
#-----[ OPEN ]------------------------------------------ 
# 
memberlist.php 

# 
#-----[ FIND ]------------------------------------------ 
# 
// End session management 
// 

# 
#-----[ AFTER, ADD ]------------------------------------------- 
# 
if ( member_of('123', $userdata) ) 
{ 
  message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); 
}
In die Gruppe 123 kommen alle User, die die memberlist NICHT sehen sollen.
Erstelle die Gruppe dieser User und passe im obigen Code die Gruppen-ID an...

A.

kurze Frage noch: Sind die User, die die memberlist nicht sehen sollen, die gleichen, die nicht nach einem Nick suchen dürfen???
Sollen sie NUR nach einem Nick nicht suchen dürfen oder auch in Kombination mit einer Eingabe bei "Begriff" nicht suchen dürfen???
Wenn die Suche nach einem Nick grundsätzlich nicht erlaubt sein soll für bestimmte User, wäre es sinnvoll, das Suchfeld von vorneherein auszublenden...

Verfasst: 21.01.2005 07:09
von yks
hi andreas,

SUPER :)

zu deinen fragen :
Sind die User, die die memberlist nicht sehen sollen, die gleichen, die nicht nach einem Nick suchen dürfen???
ja, genau.
Sollen sie NUR nach einem Nick nicht suchen dürfen oder auch in Kombination mit einer Eingabe bei "Begriff" nicht suchen dürfen???
das verwenden des oberen suchfeldes nach begriffen ist ok.
denke, das würde zu krass werden, wenn man dort die suche nach nicks auch noch unterbinden wollte.
Wenn die Suche nach einem Nick grundsätzlich nicht erlaubt sein soll für bestimmte User, wäre es sinnvoll, das Suchfeld von vorneherein auszublenden...
stimmt eigentlich.

frage, ob das dann so ginge :
einbau des ersten snippets, damit für alle user gilt, erst ab bestimmter beitragszahl kann man die memberlist sehen
plus
einbau des zweiten, womit man noch eine gruppe definieren kann.

vertragen die beiden sich zusammen ?

und bzgl dem suchfeld "autor suchen", keine ahnung, ob es ginge, daß dieses dann gar nicht erst auftaucht, bis a) die beitragszahl erreicht ist oder b) wenn jemand in der gruppe ist.
denke, das wäre optimal.

vor allem vielen dank für deine mühe !

viele grüße, yks

Verfasst: 21.01.2005 12:17
von andreasOymann
Nach Einbau der obigen beiden Snippets öffne die search.php und suche:

Code: Alles auswählen

if ( isset($HTTP_POST_VARS['search_author']) || isset($HTTP_GET_VARS['search_author']))
{
	$search_author = ( isset($HTTP_POST_VARS['search_author']) ) ? $HTTP_POST_VARS['search_author'] : $HTTP_GET_VARS['search_author'];
	$search_author = phpbb_clean_username($search_author);
füge danach ein:

Code: Alles auswählen

	if ( ( $userdata['user_posts'] <= 10 ) || ( member_of('123', $userdata) ) )
	{ 
	   message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); 
	} 
so daß der Code-Block fogendermaßen aussieht:

Code: Alles auswählen

if ( isset($HTTP_POST_VARS['search_author']) || isset($HTTP_GET_VARS['search_author']))
{
	$search_author = ( isset($HTTP_POST_VARS['search_author']) ) ? $HTTP_POST_VARS['search_author'] : $HTTP_GET_VARS['search_author'];
	$search_author = phpbb_clean_username($search_author);
	if ( ( $userdata['user_posts'] <= 10 ) || ( member_of('123', $userdata) ) )
	{ 
	   message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); 
	} 
}
else
{
	$search_author = '';
}
Damit ist die Nicksuche für alle User < 10 Posts sowie alle User der Gruppe "123" unterbunden.

Für das Ausblenden der Suche im Formular suche in der search.php:

Code: Alles auswählen

//
// Output the basic page
//
$page_title = $lang['Search'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
füge davor ein:

Code: Alles auswählen

if ( ($userdata['user_posts'] > 10) && (!member_of('123', $userdata)) )
{ 
	$template->assign_block_vars('search_nick', array());
} 
öffne die search_body.tpl und suche:

Code: Alles auswählen

	<tr> 
		<td class="row1" colspan="2"><span class="gen">{L_SEARCH_AUTHOR}:</span><br /><span class="gensmall">{L_SEARCH_AUTHOR_EXPLAIN}</span></td>
		<td class="row2" colspan="2" valign="middle"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_author" size="30" /></span></td>
	</tr>
füge davor ein:

Code: Alles auswählen

<!-- BEGIN search_nick -->
füge danach ein:

Code: Alles auswählen

<!-- END search_nick -->
A.

Verfasst: 22.01.2005 22:26
von yks
hallo andreas,

vielen dank ! :))
habe es vorhin im testforum eingebaut und getestet, klappt prima :)
und das mit dem suchfeld-weg finde ich auch freundlicher als das 'nicht-berechtigt'.

bin nun noch etwas am überlegen, da gruppenmitglieder ja die gruppen-mitgliederliste sehen können - wäre in dieser gruppe nicht unbedingt nötig, aber wäre dann wohl eh wieder ein anderes thema.

bin erstmal begeistert und danke dir vielmals für deine mühe !

wünsch dir ein schönes wochenende, viele grüße, yks

Verfasst: 13.04.2005 06:08
von yks
hallo,

nur zur sicherheit fragen wollte :
wenn ich die suche nach autor eh ausblende, brauche ich den code zum unterbinden der suche nach autor doch eigentlich nicht - oder ist es besser ihn trotzdem drin zu lassen ?

danke :) viele grüße, yks