Seite 1 von 1

Wie kann ich Topic Anzahl für bestimmte User einschränken?

Verfasst: 07.03.2005 23:41
von MyLord
Hallo,

gibt es ein Mod. wo mit man bestimmten Usern eine begrenzte Anzahl von Topics pro Tag erlauben kann?

z.B. User XY darf an einem Tag nicht mehr als 5 neue Topics eröffnen.

MfG

Verfasst: 13.03.2005 13:44
von MyLord
kennt niemand so ein Mod.?

Verfasst: 28.02.2007 10:39
von MyLord
Ich habe ein User im Forum der für Antworten statt Reply [ externes Bild ] den New Topic Button benutzt. Mit bitten und erinnern komme ich leider nicht weiter.

Gibt es ein Mod womit man für bestimmte User den New Topic [ externes Bild ] Button deaktivieren oder einschränken kann? z.B. max 3-4 neue Themen pro Tag.

Verfasst: 14.04.2007 04:07
von MyLord
Da sich in den letzten 2 Jahren niemand gemeldet hat, gehe ich mal davon aus das so ein Mod. nicht existiert... :-?

Verfasst: 14.04.2007 04:17
von redbull254
Hallo und guten Morgen
mit dieser Mod kannst Du dem User das Recht entziehen, zu posten.
Geht aber nur manuell,aber besser als nichts. :wink:

Code: Alles auswählen

MOD Titlr: Special ban system
## MOD Author: emrag < emrah987@hotmail.com > (Emrah Türkmen)  www.canver.net
## MOD Description: This hack add a new field in user management to Special admin-only fields
##		    "user can post".(see the screenshots)If in a user profile you select "NO"
##		    user can login forum but can not post any topic, reply or he/she can not
##		    edit his/her old messages.Only can see the posts and can check, get or send
##		    private messages the others this hack will be very useful to warn users ;)

Verfasst: 27.07.2007 17:55
von MyLord
Also ich habe nun doch was gefunden. Damit sollte es glaub ich gehen...

Code: Alles auswählen

############################################################## 
## MOD Title: mod_new_topic_limit 
## MOD Author: Barbarella < babs@slebog.net > (N/A) N/A 
## MOD Description: Allows administrators to limit the number of new topics that users can start in a defined period 
## MOD Version: 1.0.0 
## 
## Installation Level: Intermediate 
## Installation Time: 5 Minutes 
## Files To Edit: includes/functions_post.php, includes/functions_select.php, admin/admin_board.php, 
## templates/subSilver/admin/board_config_body.tpl, language/lang_english/lang_main.php, language/lang_english/lang_admin.php
## Included Files: n/a 
############################################################## 
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the 
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code 
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered 
## in our MOD-Database, located at: http://www.phpbb.com/mods/ 
############################################################## 
## Author Notes: 
## 
############################################################## 
## MOD History: 
## 
##Ê ÊYYYY-MM-DD - Version x.x.x 
##Ê ÊÊ Ê- version notes go here 
## 
############################################################## 
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD 
############################################################## 

# 
#-----[ SQL ]------------------------------------------ 
# 

INSERT INTO `phpbb_config` VALUES('topic_limit_default','0');
INSERT INTO `phpbb_config` VALUES('topic_limit_period','0');
ALTER TABLE `phpbb_users`
	ADD `user_topic_count` SMALLINT UNSIGNED DEFAULT '0' NOT NULL,
	ADD `user_topic_period` INT UNSIGNED DEFAULT '0' NOT NULL;

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

# 
#-----[ FIND ]------------------------------------------ 
# 
	// Check username
	if (!empty($username))
	{
		$username = trim(strip_tags($username));

		if (!$userdata['session_logged_in'] || ($userdata['session_logged_in'] && $username != $userdata['username']))
		{
			include($phpbb_root_path . 'includes/functions_validate.'.$phpEx);

			$result = validate_username($username);
			if ($result['error'])
			{
				$error_msg .= (!empty($error_msg)) ? '<br />' . $result['error_msg'] : $result['error_msg'];
			}
		}
		else
		{
			$username = '';
		}
	}

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	// Check topic limit
	if ($mode == 'newtopic' && $board_config['topic_limit_default'] 
		&& $board_config['topic_limit_period'] && !$userdata['user_level'])
	{
		$timenow = time();
		if (($timenow - $userdata['user_topic_period']) < $board_config['topic_limit_period'])
		{
			// in same posting period
			if ($userdata['user_topic_count'] >= $board_config['topic_limit_default'])
			{
				// over limit
				$msg = sprintf($lang['Newtopic_limit_reached'],
					$board_config['topic_limit_default'],
					$lang['Newtopic_limit'][$board_config['topic_limit_period']],
					create_date($board_config['default_dateformat'],
						$userdata['user_topic_period']+$board_config['topic_limit_period'], $board_config['board_timezone']));
				message_die(GENERAL_MESSAGE, $msg);
			} else {
				// increment topic count
				$userdata['new_user_topic_count'] = $userdata['user_topic_count']+1;
			}
		}
		else
		{
			// start new posting period
			$userdata['new_user_topic_period'] = $timenow;
			$userdata['new_user_topic_count'] = 1;
		}
	}

# 
#-----[ FIND ]------------------------------------------ 
# 
//
// Update post stats and details
//
function update_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_id, &$user_id)
{
	global $db;

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
//
// Update post stats and details
//
function update_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_id, &$user_id)
{
	global $db,$userdata;

# 
#-----[ FIND ]------------------------------------------ 
# 
	if ($mode != 'poll_delete')
	{
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign 
			WHERE user_id = $user_id";
		if (!$db->sql_query($sql, END_TRANSACTION))
		{
			message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
		}
	}

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
	if ($mode != 'poll_delete')
	{
		$sql = "UPDATE " . USERS_TABLE . " SET user_posts = user_posts $sign";
		if ($userdata['new_user_topic_count'] || $userdata['new_user_topic_period'])
		{
			$sql .= ', user_topic_count = '.$userdata['new_user_topic_count'];
		}
		if ($userdata['new_user_topic_period'])
		{
			$sql .= ', user_topic_period = '.$userdata['new_user_topic_period'];
		}
		$sql .= " WHERE user_id = $user_id";
		if (!$db->sql_query($sql, END_TRANSACTION))
		{
			message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
		}
	}

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

# 
#-----[ FIND ]------------------------------------------ 
# 
	return $tz_select;
}

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
//
// Pick a period to limit new topics in
//
function newtopic_select($default, $select_name = 'topic_limit_period')
{
	global $lang;
	$nt_select = '<select name="' . $select_name . '">';

	if ( !isset($default) )
	{
		$default == 0;
	}
	while( list($offset, $zone) = @each($lang['Newtopic_limit']) )
	{
		$selected = ( $offset == $default ) ? ' selected="selected"' : '';
		$nt_select .= '<option value="' . $offset . '"' . $selected . '>' . $zone . '</option>';
	}
	$nt_select .= '</select>';

	return $nt_select;
}

# 
#-----[ OPEN ]------------------------------------------ 
# 
admin/admin_board.php

# 
#-----[ FIND ]------------------------------------------ 
# 
$timezone_select = tz_select($new['board_timezone'], 'board_timezone');

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
$newtopic_select = newtopic_select($new['topic_limit_period'], 'topic_limit_period');

# 
#-----[ FIND ]------------------------------------------ 
# 
	"L_RESET" => $lang['Reset'], 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	"L_NEWTOPIC_LIMIT" => $lang['Newtopic_limit_label'],
	"L_NEWTOPIC_IN" => $lang['Newtopic_in'],

# 
#-----[ FIND ]------------------------------------------ 
# 
	"COPPA_FAX" => $new['coppa_fax'])

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
	"COPPA_FAX" => $new['coppa_fax'],
	"NEWTOPIC_LIMIT_DEFAULT" => $new['topic_limit_default'],
	"NEWTOPIC_SELECT" => $newtopic_select)

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/admin/board_config_body.tpl

# 
#-----[ FIND ]------------------------------------------ 
# 
	<tr>
		<td class="row1">{L_ALLOW_NAME_CHANGE}</td>
		<td class="row2"><input type="radio" name="allow_namechange" value="1" {NAMECHANGE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="allow_namechange" value="0" {NAMECHANGE_NO} /> {L_NO}</td>
	</tr>

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	<tr>
		<td class="row1">{L_NEWTOPIC_LIMIT}</td>
		<td class="row2"><input class="post" type="text" size="5" maxlength="4" name="topic_limit_default" value="{NEWTOPIC_LIMIT_DEFAULT}" />&nbsp;{L_NEWTOPIC_IN}&nbsp;{NEWTOPIC_SELECT}</td>
	</tr>

# 
#-----[ OPEN ]------------------------------------------ 
# 
language/lang_english/lang_main.php

# 
#-----[ FIND ]------------------------------------------ 
# 
$lang['A_critical_error'] = 'A Critical Error Occurred';

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
//
// New topic limiting
//
$lang['Newtopic_limit_reached'] = 'You can\'t start more than %d new topics in any %s. You can\'t start a new topic until %s';
$lang['Newtopic_limit']['0'] = 'No limit';
$lang['Newtopic_limit']['300'] = '5 minutes';
$lang['Newtopic_limit']['900'] = '15 minutes';
$lang['Newtopic_limit']['1800'] = '30 minutes';
$lang['Newtopic_limit']['3600'] = '1 hour';
$lang['Newtopic_limit']['10800'] = '3 hours';
$lang['Newtopic_limit']['21600'] = '6 hours';
$lang['Newtopic_limit']['43200'] = '12 hours';
$lang['Newtopic_limit']['86400'] = '24 hours';
$lang['Newtopic_limit']['172800'] = '48 hours';
$lang['Newtopic_limit']['604800'] = '1 week';
$lang['Newtopic_limit']['1209600'] = '2 weeks';
$lang['Newtopic_limit']['2419200'] = '4 weeks';

# 
#-----[ OPEN ]------------------------------------------ 
# 
language/lang_english/lang_admin.php

# 
#-----[ FIND ]------------------------------------------ 
# 
$lang['Install_No_PCRE'] = 'phpBB2 Requires the Perl-Compatible Regular Expressions Module for PHP which your PHP configuration doesn\'t appear to support!';

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
//
// New topic limiting
//
$lang['Newtopic_limit_label'] = 'Limit the number of new topics a user can start';
$lang['Newtopic_in'] = 'in any';

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM 

Verfasst: 21.08.2007 17:23
von distanzcheck
Geht es damit vll. das man zwar lesen kann aber keinen neuen tread erstellen kann. Posten in vorhandenen tread sollte aber auch wie lesen funktionieren. Ist es dann für jedes Forum einzeln einstellbar ?

ist dies dafür gedacht ? und gibts das auch in deutsch ?

Dirk