
Code: Select all
###############################################
## Hack Title: Improved disallow editing/deleting administrator posts
## Hack Version: 1.0.0
## Author: aboyd
## Website: http://www.outshine.com/forums/
## Description: Moderators cannot edit nor delete posts by administrators.
## Compatibility: 2.0.19
##
## Installation Level: Easy
## Installation Time: 5
##
## Files To Edit: 3
## modcp.php
## posting.php
## language/lang_english/lang_main.php
##
## Included Files: 0
##
## History:
## 1.0.0: Initial release.
##
## Author Notes:
## This was a hack by Freakin' Booty, but it wasn't EasyMod compliant, and
## phpBB 2.0.19 changed some things so that this wouldn't install. All I've
## done is make it EasyMod compliant, and compatible with phpBB 2.0.19.
##
## Support: http://www.outshine.com/forums
## Copyright: ©2003-04 Freakin' Booty ;-P - Disallow editing/deleting admin posts 0.0.2
##
###############################################
## You downloaded this hack from phpBBHacks.com, the #1 source for phpBB related downloads.
## Please visit http://www.phpbbhacks.com/forums for support.
###############################################
##
###############################################
## This hack is released under the GPL License.
## This hack can be freely used, but not distributed, without permission.
## Intellectual Property is retained by the hack author(s) listed above.
###############################################
#
#-----[ OPEN ]--------------------------------------------
#
modcp.php
#
#-----[ FIND ]--------------------------------------------
#
# 2.0.4 - 2.0.11
#
case 'delete':
if (!$is_auth['auth_delete'])
{
message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_delete'], $is_auth['auth_delete_type']));
}
#
#-----[ AFTER, ADD ]--------------------------------------
#
if( $userdata['user_level'] != ADMIN )
{
$topics_sql = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? implode(',', $HTTP_POST_VARS['topic_id_list']) : $topic_id;
$sql = "SELECT t.topic_id
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u
WHERE u.user_id = t.topic_poster
AND u.user_level = " . ADMIN . "
AND t.topic_id IN ($topics_sql)";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not retrieve topics list', '', __LINE__, __FILE__, $sql);
}
if( $db->sql_numrows($result) > 0 )
{
message_die(GENERAL_MESSAGE, $lang['Not_auth_edit_delete_admin']);
}
}
#
#-----[ OPEN ]--------------------------------------------
#
posting.php
#
#-----[ FIND ]--------------------------------------------
#
if ( empty($post_id) )
{
message_die(GENERAL_MESSAGE, $lang['No_post_id']);
}
#
#-----[ AFTER, ADD ]--------------------------------------
#
if( $userdata['user_level'] != ADMIN && ($mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete') )
{
$sql = "SELECT u.user_level
FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE p.post_id = $post_id
AND p.poster_id = u.user_id
AND u.user_level = " . ADMIN;
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not retrieve post information', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
message_die(GENERAL_MESSAGE, $lang['Not_auth_edit_delete_admin']);
}
}
#
#-----[ OPEN ]--------------------------------------------
#
# Make sure to edit this file for every language installed
#
language/lang_english/lang_main.php
#
#-----[ FIND ]--------------------------------------------
#
//
// That's all, Folks!
// -------------------------------------------------
#
#-----[ BEFORE, ADD ]-------------------------------------
#
//
// Disallow editing/deleting administrator posts
//
$lang['Not_auth_edit_delete_admin'] = 'You cannot edit/delete an administrator\'s posts, sorry.';
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------
#
Yes, that's one option, but a rather extensive one. The logging of every edit will cause your database to increase a hell of a lot. Then having to check them etc ..mtrs wrote:Why not installing Prime Post Revisions mod, so all the edits will be logged. Then, you can track what your mods edited.
Code: Select all
'from' => '',
Code: Select all
'group_id' => '',
Code: Select all
'user_colour' =>
Code: Select all
'group_id' => $row['group_id'],
Code: Select all
'U_EDIT' => (!$user->data['is_registered']
Code: Select all
(!$user->data['is_registered']
Code: Select all
|| ($user_cache[$poster_id]['group_id'] == '5' && $user->data['group_id'] <> '5')
Code: Select all
$sql = 'SELECT f.*, t.*, p.*, u.username, u.username_clean
Code: Select all
u.username_clean
Code: Select all
, u.group_id
Code: Select all
if ($mode == 'edit' && !$auth->acl_get('m_edit', $forum_id)
Code: Select all
!$auth->acl_get('m_edit', $forum_id)
Code: Select all
|| ($post_data['group_id'] == '5' && $user->data['group_id'] <> '5')
Code: Select all
{
Code: Select all
if ($post_data['group_id'] == '5' && $user->data['group_id'] <> '5')
{
trigger_error('You can not edit an Administrators posts');
}