Skip to content

Commit

Permalink
Working on #688 Expand Forum Moderator permissions
Browse files Browse the repository at this point in the history
Adding the permissions themselves
  • Loading branch information
Starpaul20 committed Jun 14, 2014
1 parent cdff7ad commit 615e0e6
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 32 deletions.
52 changes: 44 additions & 8 deletions admin/modules/forum/management.php
Expand Up @@ -307,14 +307,25 @@
$update_array = array(
'fid' => intval($fid),
'caneditposts' => intval($mybb->input['caneditposts']),
'cansoftdeleteposts' => intval($mybb->input['cansoftdeleteposts']),
'canrestoreposts' => intval($mybb->input['canrestoreposts']),
'candeleteposts' => intval($mybb->input['candeleteposts']),
'cansoftdeletethreads' => intval($mybb->input['cansoftdeletethreads']),
'canrestorethreads' => intval($mybb->input['canrestorethreads']),
'candeletethreads' => intval($mybb->input['candeletethreads']),
'canviewips' => intval($mybb->input['canviewips']),
'canviewunapprove' => intval($mybb->input['canviewunapprove']),
'canviewdeleted' => intval($mybb->input['canviewdeleted']),
'canopenclosethreads' => intval($mybb->input['canopenclosethreads']),
'canstickunstickthreads' => intval($mybb->input['canstickunstickthreads']),
'canapproveunapprovethreads' => intval($mybb->input['canapproveunapprovethreads']),
'canapproveunapproveposts' => intval($mybb->input['canapproveunapproveposts']),
'canmanagethreads' => intval($mybb->input['canmanagethreads']),
'canmanagepolls' => intval($mybb->input['canmanagepolls']),
'canmovetononmodforum' => intval($mybb->input['canmovetononmodforum']),
'canusecustomtools' => intval($mybb->input['canusecustomtools']),
'cansoftdelete' => intval($mybb->input['cansoftdelete']),
'canrestore' => intval($mybb->input['canrestore'])
'canmanageannouncements' => intval($mybb->input['canmanageannouncements']),
'canmanagereportedposts' => intval($mybb->input['canmanagereportedposts'])
);
$db->update_query("moderators", $update_array, "mid='".intval($mybb->input['mid'])."'");

Expand Down Expand Up @@ -368,18 +379,32 @@

$moderator_permissions = array(
$form->generate_check_box('caneditposts', 1, $lang->can_edit_posts, array('checked' => $mod_data['caneditposts'], 'id' => 'caneditposts')),
$form->generate_check_box('cansoftdeleteposts', 1, $lang->can_soft_delete_posts, array('checked' => $mod_data['cansoftdeleteposts'], 'id' => 'cansoftdeleteposts')),
$form->generate_check_box('canrestoreposts', 1, $lang->can_restore_posts, array('checked' => $mod_data['canrestoreposts'], 'id' => 'canrestoreposts')),
$form->generate_check_box('candeleteposts', 1, $lang->can_delete_posts, array('checked' => $mod_data['candeleteposts'], 'id' => 'candeleteposts')),
$form->generate_check_box('cansoftdeletethreads', 1, $lang->can_soft_delete_threads, array('checked' => $mod_data['cansoftdeletethreads'], 'id' => 'cansoftdeletethreads')),
$form->generate_check_box('canrestorethreads', 1, $lang->can_restore_threads, array('checked' => $mod_data['canrestorethreads'], 'id' => 'canrestorethreads')),
$form->generate_check_box('candeletethreads', 1, $lang->can_delete_threads, array('checked' => $mod_data['candeletethreads'], 'id' => 'candeletethreads')),
$form->generate_check_box('canviewips', 1, $lang->can_view_ips, array('checked' => $mod_data['canviewips'], 'id' => 'canviewips')),
$form->generate_check_box('canviewunapprove', 1, $lang->can_view_unapprove, array('checked' => $mod_data['canviewunapprove'], 'id' => 'canviewunapprove')),
$form->generate_check_box('canviewdeleted', 1, $lang->can_view_deleted, array('checked' => $mod_data['canviewdeleted'], 'id' => 'canviewdeleted')),
$form->generate_check_box('canopenclosethreads', 1, $lang->can_open_close_threads, array('checked' => $mod_data['canopenclosethreads'], 'id' => 'canopenclosethreads')),
$form->generate_check_box('canstickunstickthreads', 1, $lang->can_stick_unstick_threads, array('checked' => $mod_data['canstickunstickthreads'], 'id' => 'canstickunstickthreads')),
$form->generate_check_box('canapproveunapprovethreads', 1, $lang->can_approve_unapprove_threads, array('checked' => $mod_data['canapproveunapprovethreads'], 'id' => 'canapproveunapprovethreads')),
$form->generate_check_box('canapproveunapproveposts', 1, $lang->can_approve_unapprove_posts, array('checked' => $mod_data['canapproveunapproveposts'], 'id' => 'canapproveunapproveposts')),
$form->generate_check_box('canmanagethreads', 1, $lang->can_manage_threads, array('checked' => $mod_data['canmanagethreads'], 'id' => 'canmanagethreads')),
$form->generate_check_box('canmanagepolls', 1, $lang->can_manage_polls, array('checked' => $mod_data['canmanagepolls'], 'id' => 'canmanagepolls')),
$form->generate_check_box('canmovetononmodforum', 1, $lang->can_move_to_other_forums, array('checked' => $mod_data['canmovetononmodforum'], 'id' => 'canmovetononmodforum')),
$form->generate_check_box('canusecustomtools', 1, $lang->can_use_custom_tools, array('checked' => $mod_data['canusecustomtools'], 'id' => 'canusecustomtools')),
$form->generate_check_box('cansoftdelete', 1, $lang->can_soft_delete, array('checked' => $mod_data['cansoftdelete'], 'id' => 'cansoftdelete')),
$form->generate_check_box('canrestore', 1, $lang->can_restore, array('checked' => $mod_data['canrestore'], 'id' => 'canrestore'))
$form->generate_check_box('canusecustomtools', 1, $lang->can_use_custom_tools, array('checked' => $mod_data['canusecustomtools'], 'id' => 'canusecustomtools'))
);

$form_container->output_row($lang->moderator_permissions, "", "<div class=\"forum_settings_bit\">".implode("</div><div class=\"forum_settings_bit\">", $moderator_permissions)."</div>");

$moderator_cp_permissions = array(
$form->generate_check_box('canmanageannouncements', 1, $lang->can_manage_announcements, array('checked' => $mod_data['canmanageannouncements'], 'id' => 'canmanageannouncements')),
$form->generate_check_box('canmanagereportedposts', 1, $lang->can_manage_reported_posts, array('checked' => $mod_data['canmanagereportedposts'], 'id' => 'canmanagereportedposts'))
);
$form_container->output_row($lang->moderator_cp_permissions, "", "<div class=\"forum_settings_bit\">".implode("</div><div class=\"forum_settings_bit\">", $moderator_cp_permissions)."</div>");

$form_container->end();

$buttons[] = $form->generate_submit_button($lang->save_mod);
Expand Down Expand Up @@ -2140,14 +2165,25 @@
"id" => $newmod['id'],
"isgroup" => $isgroup,
"caneditposts" => 1,
"cansoftdeleteposts" => 1,
"canrestoreposts" => 1,
"candeleteposts" => 1,
"cansoftdeletethreads" => 1,
"canrestorethreads" => 1,
"candeletethreads" => 1,
"canviewips" => 1,
"canviewunapprove" => 1,
"canviewdeleted" => 1,
"canopenclosethreads" => 1,
"canstickunstickthreads" => 1,
"canapproveunapprovethreads" => 1,
"canapproveunapproveposts" => 1,
"canmanagethreads" => 1,
"canmanagepolls" => 1,
"canmovetononmodforum" => 1,
"canusecustomtools" => 1,
"cansoftdelete" => 1,
"canrestore" => 1
"canmanageannouncements" => 1,
"canmanagereportedposts" => 1
);

$mid = $db->insert_query("moderators", $new_mod);
Expand Down
21 changes: 17 additions & 4 deletions inc/languages/english/admin/forum_management.lang.php
Expand Up @@ -68,14 +68,27 @@
$l['forum_desc'] = "Forum the moderator manages.";
$l['edit_mod_for'] = "Edit moderator options for \"{1}\"";
$l['can_edit_posts'] = "Can edit posts?";
$l['can_delete_posts'] = "Can delete posts?";
$l['can_soft_delete_posts'] = "Can soft delete posts?";
$l['can_restore_posts'] = "Can restore soft deleted posts?";
$l['can_delete_posts'] = "Can delete posts permanently?";
$l['can_soft_delete_threads'] = "Can soft delete threads?";
$l['can_restore_threads'] = "Can restore soft deleted threads?";
$l['can_delete_threads'] = "Can delete threads permanently?";
$l['can_view_ips'] = "Can view IPs?";
$l['can_open_close_threads'] = "Can open/close and stick/unstick threads?";
$l['can_view_unapprove'] = "Can view unapproved threads and posts?";
$l['can_view_deleted'] = "Can view deleted threads and posts?";
$l['can_open_close_threads'] = "Can open/close threads?";
$l['can_stick_unstick_threads'] = "Can stick/unstick threads?";
$l['can_approve_unapprove_threads'] = "Can approve/unapprove threads?";
$l['can_approve_unapprove_posts'] = "Can approve/unapprove posts?";
$l['can_manage_threads'] = "Can manage threads (split, move, copy, merge)?";
$l['can_manage_polls'] = "Can manage polls?";
$l['can_move_to_other_forums'] = "Can move threads to another forum this user doesn't moderate?";
$l['can_use_custom_tools'] = "Can use custom moderator tools?";
$l['can_soft_delete'] = "Can soft delete?";
$l['can_restore'] = "Can restore soft deleted post?";
$l['can_manage_announcements'] = "Can manage announcements?";
$l['can_manage_reported_posts'] = "Can manage reported posts?";
$l['moderator_cp_permissions'] = "Moderator CP Permissions";

$l['save_mod'] = "Save Moderator";

$l['no_forums'] = "There are no forums found.";
Expand Down
15 changes: 13 additions & 2 deletions install/resources/mysql_db_tables.php
Expand Up @@ -429,14 +429,25 @@
id int unsigned NOT NULL default '0',
isgroup int(1) unsigned NOT NULL default '0',
caneditposts int(1) NOT NULL default '0',
cansoftdeleteposts tinyint(1) NOT NULL default '0',
canrestoreposts tinyint(1) NOT NULL default '0',
candeleteposts int(1) NOT NULL default '0',
cansoftdeletethreads tinyint(1) NOT NULL default '0',
canrestorethreads tinyint(1) NOT NULL default '0',
candeletethreads tinyint(1) NOT NULL default '0',
canviewips int(1) NOT NULL default '0',
canviewunapprove tinyint(1) NOT NULL default '0',
canviewdeleted tinyint(1) NOT NULL default '0',
canopenclosethreads int(1) NOT NULL default '0',
canstickunstickthreads tinyint(1) NOT NULL default '0',
canapproveunapprovethreads tinyint(1) NOT NULL default '0',
canapproveunapproveposts tinyint(1) NOT NULL default '0',
canmanagethreads int(1) NOT NULL default '0',
canmanagepolls tinyint(1) NOT NULL default '0',
canmovetononmodforum int(1) NOT NULL default '0',
canusecustomtools int(1) NOT NULL default '0',
cansoftdelete int(1) NOT NULL default '0',
canrestore int(1) NOT NULL default '0',
canmanageannouncements tinyint(1) NOT NULL default '0',
canmanagereportedposts tinyint(1) NOT NULL default '0',
KEY uid (id, fid),
PRIMARY KEY (mid)
) ENGINE=MyISAM;";
Expand Down
15 changes: 13 additions & 2 deletions install/resources/pgsql_db_tables.php
Expand Up @@ -419,14 +419,25 @@
id int NOT NULL default '0',
isgroup int NOT NULL default '0',
caneditposts int NOT NULL default '0',
cansoftdeleteposts smallint NOT NULL default '0',
canrestoreposts smallint NOT NULL default '0',
candeleteposts int NOT NULL default '0',
cansoftdeletethreads smallint NOT NULL default '0',
canrestorethreads smallint NOT NULL default '0',
candeletethreads smallint NOT NULL default '0',
canviewips int NOT NULL default '0',
canviewunapprove smallint NOT NULL default '0',
canviewdeleted smallint NOT NULL default '0',
canopenclosethreads int NOT NULL default '0',
canstickunstickthreads smallint NOT NULL default '0',
canapproveunapprovethreads smallint NOT NULL default '0',
canapproveunapproveposts smallint NOT NULL default '0',
canmanagethreads int NOT NULL default '0',
canmanagepolls smallint NOT NULL default '0',
canmovetononmodforum int NOT NULL default '0',
canusecustomtools int NOT NULL default '0',
cansoftdelete int NOT NULL default '0',
canrestore int NOT NULL default '0',
canmanageannouncements smallint NOT NULL default '0',
canmanagereportedposts smallint NOT NULL default '0',
PRIMARY KEY (mid)
);";

Expand Down
15 changes: 13 additions & 2 deletions install/resources/sqlite_db_tables.php
Expand Up @@ -389,14 +389,25 @@
id int NOT NULL default '0',
isgroup int(1) NOT NULL default '0',
caneditposts int(1) NOT NULL default '0',
cansoftdeleteposts tinyint(1) NOT NULL default '0',
canrestoreposts tinyint(1) NOT NULL default '0',
candeleteposts int(1) NOT NULL default '0',
cansoftdeletethreads tinyint(1) NOT NULL default '0',
canrestorethreads tinyint(1) NOT NULL default '0',
candeletethreads tinyint(1) NOT NULL default '0',
canviewips int(1) NOT NULL default '0',
canviewunapprove tinyint(1) NOT NULL default '0',
canviewdeleted tinyint(1) NOT NULL default '0',
canopenclosethreads int(1) NOT NULL default '0',
canstickunstickthreads tinyint(1) NOT NULL default '0',
canapproveunapprovethreads tinyint(1) NOT NULL default '0',
canapproveunapproveposts tinyint(1) NOT NULL default '0',
canmanagethreads int(1) NOT NULL default '0',
canmanagepolls tinyint(1) NOT NULL default '0',
canmovetononmodforum int(1) NOT NULL default '0',
canusecustomtools int(1) NOT NULL default '0',
cansoftdelete int(1) NOT NULL default '0',
canrestore int(1) NOT NULL default '0'
canmanageannouncements tinyint(1) NOT NULL default '0',
canmanagereportedposts tinyint(1) NOT NULL default '0',
);";

$tables[] = "CREATE TABLE mybb_modtools (
Expand Down
129 changes: 115 additions & 14 deletions install/resources/upgrade29.php
Expand Up @@ -184,16 +184,6 @@ function upgrade29_dbchanges2()
$db->drop_column("usergroups", "canviewboardclosed");
}

if($db->field_exists('cansoftdelete', 'moderators'))
{
$db->drop_column("moderators", "cansoftdelete");
}

if($db->field_exists('canrestore', 'moderators'))
{
$db->drop_column("moderators", "canrestore");
}

if($db->field_exists('deletedposts', 'threads'))
{
$db->drop_column("threads", "deletedposts");
Expand All @@ -214,8 +204,6 @@ function upgrade29_dbchanges2()
$db->add_column("usergroups", "maxposts", "int NOT NULL default '0'");
$db->add_column("usergroups", "showmemberlist", "int NOT NULL default '1'");
$db->add_column("usergroups", "canviewboardclosed", "int NOT NULL default '0' AFTER candlattachments");
$db->add_column("moderators", "cansoftdelete", "int NOT NULL default '0' AFTER canusecustomtools");
$db->add_column("moderators", "canrestore", "int NOT NULL default '0' AFTER cansoftdelete");
$db->add_column("threads", "deletedposts", "int NOT NULL default '0' AFTER unapprovedposts");
$db->add_column("captcha", "used", "int NOT NULL default '0'");
break;
Expand All @@ -226,8 +214,6 @@ function upgrade29_dbchanges2()
$db->add_column("usergroups", "maxposts", "int(4) NOT NULL default '0'");
$db->add_column("usergroups", "showmemberlist", "int(1) NOT NULL default '1'");
$db->add_column("usergroups", "canviewboardclosed", "int(1) NOT NULL default '0' AFTER candlattachments");
$db->add_column("moderators", "cansoftdelete", "int(1) NOT NULL default '0' AFTER canusecustomtools");
$db->add_column("moderators", "canrestore", "int(1) NOT NULL default '0' AFTER cansoftdelete");
$db->add_column("threads", "deletedposts", "int(10) NOT NULL default '0' AFTER unapprovedposts");
$db->add_column("captcha", "used", "int(1) NOT NULL default '0'");
break;
Expand All @@ -249,6 +235,121 @@ function upgrade29_dbchanges3()
echo "<p>Performing necessary upgrade queries...</p>";
flush();

if($db->field_exists('cansoftdeleteposts', 'moderators'))
{
$db->drop_column('moderators', 'cansoftdeleteposts');
}

if($db->field_exists('canrestoreposts', 'moderators'))
{
$db->drop_column("moderators", "canrestoreposts");
}

if($db->field_exists('cansoftdeletethreads', 'moderators'))
{
$db->drop_column('moderators', 'cansoftdeletethreads');
}

if($db->field_exists('canrestorethreads', 'moderators'))
{
$db->drop_column("moderators", "canrestorethreads");
}

if($db->field_exists('candeletethreads', 'moderators'))
{
$db->drop_column("moderators", "candeletethreads");
}

if($db->field_exists('canviewunapprove', 'moderators'))
{
$db->drop_column("moderators", "canviewunapprove");
}

if($db->field_exists('canviewdeleted', 'moderators'))
{
$db->drop_column("moderators", "canviewdeleted");
}

if($db->field_exists('canstickunstickthreads', 'moderators'))
{
$db->drop_column("moderators", "canstickunstickthreads");
}

if($db->field_exists('canapproveunapprovethreads', 'moderators'))
{
$db->drop_column("moderators", "canapproveunapprovethreads");
}

if($db->field_exists('canapproveunapproveposts', 'moderators'))
{
$db->drop_column("moderators", "canapproveunapproveposts");
}

if($db->field_exists('canmanagepolls', 'moderators'))
{
$db->drop_column("moderators", "canmanagepolls");
}

if($db->field_exists('canmanageannouncements', 'moderators'))
{
$db->drop_column("moderators", "canmanageannouncements");
}

if($db->field_exists('canmanagereportedposts', 'moderators'))
{
$db->drop_column("moderators", "canmanagereportedposts");
}

switch($db->type)
{
case "pgsql":
$db->add_column("moderators", "cansoftdeleteposts", "smallint NOT NULL default '0' AFTER caneditposts");
$db->add_column("moderators", "canrestoreposts", "smallint NOT NULL default '0' AFTER cansoftdeleteposts");
$db->add_column("moderators", "cansoftdeletethreads", "smallint NOT NULL default '0' AFTER candeleteposts");
$db->add_column("moderators", "canrestorethreads", "smallint NOT NULL default '0' AFTER cansoftdeletethreads");
$db->add_column("moderators", "candeletethreads", "smallint NOT NULL default '0' AFTER canrestorethreads");
$db->add_column("moderators", "canviewunapprove", "smallint NOT NULL default '0' AFTER canviewips");
$db->add_column("moderators", "canviewdeleted", "smallint NOT NULL default '0' AFTER canviewunapprove");
$db->add_column("moderators", "canstickunstickthreads", "smallint NOT NULL default '0' AFTER canopenclosethreads");
$db->add_column("moderators", "canapproveunapprovethreads", "smallint NOT NULL default '0' AFTER canstickunstickthreads");
$db->add_column("moderators", "canapproveunapproveposts", "smallint NOT NULL default '0' AFTER canapproveunapprovethreads");
$db->add_column("moderators", "canmanagepolls", "smallint NOT NULL default '0' AFTER canmanagethreads");
$db->add_column("moderators", "canmanageannouncements", "smallint NOT NULL default '0' AFTER canusecustomtools");
$db->add_column("moderators", "canmanagereportedposts", "smallint NOT NULL default '0' AFTER canmanageannouncements");
break;
default:
$db->add_column("moderators", "cansoftdeleteposts", "tinyint(1) NOT NULL default '0' AFTER caneditposts");
$db->add_column("moderators", "canrestoreposts", "tinyint(1) NOT NULL default '0' AFTER cansoftdeleteposts");
$db->add_column("moderators", "cansoftdeletethreads", "tinyint(1) NOT NULL default '0' AFTER candeleteposts");
$db->add_column("moderators", "canrestorethreads", "tinyint(1) NOT NULL default '0' AFTER cansoftdeletethreads");
$db->add_column("moderators", "candeletethreads", "tinyint(1) NOT NULL default '0' AFTER canrestorethreads");
$db->add_column("moderators", "canviewunapprove", "tinyint(1) NOT NULL default '0' AFTER canviewips");
$db->add_column("moderators", "canviewdeleted", "tinyint(1) NOT NULL default '0' AFTER canviewunapprove");
$db->add_column("moderators", "canstickunstickthreads", "tinyint(1) NOT NULL default '0' AFTER canopenclosethreads");
$db->add_column("moderators", "canapproveunapprovethreads", "tinyint(1) NOT NULL default '0' AFTER canstickunstickthreads");
$db->add_column("moderators", "canapproveunapproveposts", "tinyint(1) NOT NULL default '0' AFTER canapproveunapprovethreads");
$db->add_column("moderators", "canmanagepolls", "tinyint(1) NOT NULL default '0' AFTER canmanagethreads");
$db->add_column("moderators", "canmanageannouncements", "tinyint(1) NOT NULL default '0' AFTER canusecustomtools");
$db->add_column("moderators", "canmanagereportedposts", "tinyint(1) NOT NULL default '0' AFTER canmanageannouncements");
break;
}

global $footer_extra;
$footer_extra = "<script type=\"text/javascript\">$(document).ready(function() { var button = $('.submit_button'); if(button) { button.val('Automatically Redirecting...'); button.prop('disabled', true); button.css('color', '#aaa'); button.css('border-color', '#aaa'); document.forms[0].submit(); } });</script>";

$output->print_contents("<p>Click next to continue with the upgrade process.</p>");
$output->print_footer("29_dbchanges4");
}

function upgrade29_dbchanges4()
{
global $cache, $output, $mybb, $db;

$output->print_header("Updating Database");

echo "<p>Performing necessary upgrade queries...</p>";
flush();


if($db->field_exists('msn', 'users'))
{
Expand Down

0 comments on commit 615e0e6

Please sign in to comment.