03.04.2010, 16:56
Den Beitrag habe ich zwar schon hier gepostet, möchte ihn aber auch hier einsetzen. Vielleicht kann es jemand brauchen.
Im ACP kann unter Beitragserstellung in der Konfiguration die Bearbeitungszeit eingestellt werden, während der User ihre Beiträge editieren können.
In meinem Fall wollte ich aber einer bestimmten Usergruppe eine davon abweichende Bearbeitungszeit einräumen. Mit nachfolgenden Codeänderungen kann das realsisiert werden.
In den nachfolgenden Zeilen wurde für die Usergruppe 11 eine Bearbeitungszeit von 30 Minuten eingeräumt.
Suche in der editpost.php nach
und ersetze es durch
Suche in der xmlhttp.php
und innerhalb dieser if-Abfrage nach
und ersetze es durch
Sollen die o.a. Codeänderung für mehrere Usergruppen gelten, wäre folgende Anpassung notwendig:
Ersetze
durch
und
durch
und
durch
Im ACP kann unter Beitragserstellung in der Konfiguration die Bearbeitungszeit eingestellt werden, während der User ihre Beiträge editieren können.
In meinem Fall wollte ich aber einer bestimmten Usergruppe eine davon abweichende Bearbeitungszeit einräumen. Mit nachfolgenden Codeänderungen kann das realsisiert werden.
In den nachfolgenden Zeilen wurde für die Usergruppe 11 eine Bearbeitungszeit von 30 Minuten eingeräumt.
Suche in der editpost.php nach
PHP-Code:
if(!is_moderator($fid, "caneditposts"))
{
if($thread['closed'] == 1)
{
error($lang->redirect_threadclosed);
}
if($forumpermissions['caneditposts'] == 0)
{
error_no_permission();
}
if($mybb->user['uid'] != $post['uid'])
{
error_no_permission();
}
// Edit time limit
$time = TIME_NOW;
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($mybb->settings['edittimelimit']*60)))
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
error($lang->edit_time_limit);
}
}
PHP-Code:
if(!is_moderator($fid, "caneditposts"))
{
// Zeit in Minuten, in der Beiträge innerhalb der entspr. Usergruppe bearbeitet werden können
$gid_edittime = 30;
// entspr. Usergruppe
$gid_usergroup = 11;
if($thread['closed'] == 1)
{
error($lang->redirect_threadclosed);
}
if($forumpermissions['caneditposts'] == 0)
{
error_no_permission();
}
if($mybb->user['uid'] != $post['uid'])
{
error_no_permission();
}
// Edit time limit
$time = TIME_NOW;
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($mybb->settings['edittimelimit']*60)) && $mybb->user['usergroup'] != $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
error($lang->edit_time_limit);
}
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($gid_edittime*60)) && $mybb->user['usergroup'] == $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $gid_edittime);
error($lang->edit_time_limit);
}
}
Suche in der xmlhttp.php
PHP-Code:
else if($mybb->input['action'] == "edit_post")
PHP-Code:
// If this user is not a moderator with "caneditposts" permissions.
if(!is_moderator($forum['fid'], "caneditposts"))
{
// Thread is closed - no editing allowed.
if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_message);
}
// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0 || $mybb->user['suspendposting'] == 1)
{
xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->settings['edittimelimit']*60)))
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
xmlhttp_error($lang->edit_time_limit);
}
}
PHP-Code:
// If this user is not a moderator with "caneditposts" permissions.
if(!is_moderator($forum['fid'], "caneditposts"))
{
// Zeit in Minuten, in der Beiträge innerhalb der entspr. Usergruppe bearbeitet werden können
$gid_edittime = 30;
// entspr. Usergruppe
$gid_usergroup = 11;
// Thread is closed - no editing allowed.
if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_message);
}
// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0 || $mybb->user['suspendposting'] == 1)
{
xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->settings['edittimelimit']*60)) && $mybb->user['usergroup'] != $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
xmlhttp_error($lang->edit_time_limit);
}
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($gid_edittime*60)) && $mybb->user['usergroup'] == $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $gid_edittime);
xmlhttp_error($lang->edit_time_limit);
}
}
Sollen die o.a. Codeänderung für mehrere Usergruppen gelten, wäre folgende Anpassung notwendig:
Ersetze
PHP-Code:
// entspr. Usergruppe
$gid_usergroup = 11;
PHP-Code:
// entspr. Usergruppen durch ein Komma trennen
$gid_usergroup = array(11,12);
PHP-Code:
$mybb->user['usergroup'] != $gid_usergroup
PHP-Code:
!in_array($mybb->user['usergroup'], $gid_usergroup)
PHP-Code:
$mybb->user['usergroup'] == $gid_usergroup
PHP-Code:
in_array($mybb->user['usergroup'], $gid_usergroup)