Skip to content

Commit

Permalink
Merge pull request #1667 from PaulBender/feature-1586
Browse files Browse the repository at this point in the history
Feature #1586 Delete Reputation permission
  • Loading branch information
Destroy666x committed Jan 5, 2015
2 parents 838dec7 + 5e1c298 commit 62c1db9
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 4 deletions.
3 changes: 3 additions & 0 deletions admin/modules/user/groups.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"showforumteam" => 0,
"usereputationsystem" => 1,
"cangivereputations" => 1,
"candeletereputations" => 1,
"reputationpower" => 1,
"maxreputationsday" => 5,
"maxreputationsperuser" => 5,
Expand Down Expand Up @@ -867,6 +868,7 @@
"showforumteam" => (int)$mybb->input['showforumteam'],
"usereputationsystem" => (int)$mybb->input['usereputationsystem'],
"cangivereputations" => (int)$mybb->input['cangivereputations'],
"candeletereputations" => (int)$mybb->input['candeletereputations'],
"reputationpower" => (int)$mybb->input['reputationpower'],
"maxreputationsday" => (int)$mybb->input['maxreputationsday'],
"maxreputationsperuser" => (int)$mybb->input['maxreputationsperuser'],
Expand Down Expand Up @@ -1096,6 +1098,7 @@
$reputation_options = array(
$form->generate_check_box("usereputationsystem", 1, $lang->show_reputations, array("checked" => $mybb->input['usereputationsystem'])),
$form->generate_check_box("cangivereputations", 1, $lang->can_give_reputation, array("checked" => $mybb->input['cangivereputations'])),
$form->generate_check_box("candeletereputations", 1, $lang->can_delete_own_reputation, array("checked" => $mybb->input['candeletereputations'])),
"{$lang->points_to_award_take}<br /><small class=\"input\">{$lang->points_to_award_take_desc}</small><br />".$form->generate_numeric_field('reputationpower', $mybb->input['reputationpower'], array('id' => 'reputationpower', 'class' => 'field50')),
"{$lang->max_reputations_perthread}<br /><small class=\"input\">{$lang->max_reputations_perthread_desc}</small><br />".$form->generate_numeric_field('maxreputationsperthread', $mybb->input['maxreputationsperthread'], array('id' => 'maxreputationsperthread', 'class' => 'field50')),
"{$lang->max_reputations_daily}<br /><small class=\"input\">{$lang->max_reputations_daily_desc}</small><br />".$form->generate_numeric_field('maxreputationsday', $mybb->input['maxreputationsday'], array('id' => 'maxreputationsday', 'class' => 'field50'))
Expand Down
1 change: 1 addition & 0 deletions inc/languages/english/admin/user_groups.lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
$l['max_recipients_desc'] = "Maximum number of recipients a user can send a private message to at one time. If empty, users can send private messages to an unlimited number of recipients.";
$l['show_reputations'] = "Show reputations for users in this group?";
$l['can_give_reputation'] = "Can give reputations to users?";
$l['can_delete_own_reputation'] = "Can delete own given reputations?";
$l['points_to_award_take'] = "Points to Award/Take Away:";
$l['points_to_award_take_desc'] = "Here you need to enter the number of points to give or take away on each reputation given by users of this group.";
$l['max_reputations_daily'] = "Maximum Reputations Allowed Per Day:";
Expand Down
1 change: 1 addition & 0 deletions install/resources/mysql_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -997,6 +997,7 @@
showforumteam tinyint(1) NOT NULL default '0',
usereputationsystem tinyint(1) NOT NULL default '0',
cangivereputations tinyint(1) NOT NULL default '0',
candeletereputations tinyint(1) NOT NULL default '0',
reputationpower int unsigned NOT NULL default '0',
maxreputationsday int unsigned NOT NULL default '0',
maxreputationsperuser int unsigned NOT NULL default '0',
Expand Down
1 change: 1 addition & 0 deletions install/resources/pgsql_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,7 @@
showforumteam smallint NOT NULL default '0',
usereputationsystem smallint NOT NULL default '0',
cangivereputations smallint NOT NULL default '0',
candeletereputations smallint NOT NULL default '0',
reputationpower int NOT NULL default '0',
maxreputationsday int NOT NULL default '0',
maxreputationsperuser int NOT NULL default '0',
Expand Down
1 change: 1 addition & 0 deletions install/resources/sqlite_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,7 @@
showforumteam tinyint(1) NOT NULL default '0',
usereputationsystem tinyint(1) NOT NULL default '0',
cangivereputations tinyint(1) NOT NULL default '0',
candeletereputations tinyint(1) NOT NULL default '0',
reputationpower int unsigned NOT NULL default '0',
maxreputationsday int unsigned NOT NULL default '0',
maxreputationsperuser int unsigned NOT NULL default '0',
Expand Down
18 changes: 18 additions & 0 deletions install/resources/upgrade32.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,24 @@ function upgrade32_dbchanges()
echo "<p>Performing necessary upgrade queries...</p>";
flush();

if($db->field_exists('candeletereputations', 'usergroups'))
{
$db->drop_column("usergroups", "candeletereputations");
}

switch($db->type)
{
case "pgsql":
$db->add_column("usergroups", "candeletereputations", "smallint NOT NULL default '0' AFTER cangivereputations");
break;
case "sqlite":
$db->add_column("usergroups", "candeletereputations", "tinyint(1) NOT NULL default '0'");
break;
default:
$db->add_column("usergroups", "candeletereputations", "tinyint(1) NOT NULL default '0' AFTER cangivereputations");
break;
}

// delete forumpermissions belonging to a deleted forum
$db->delete_query("forumpermissions", "fid NOT IN(SELECT fid FROM {$db->table_prefix}forums)");

Expand Down
7 changes: 7 additions & 0 deletions install/resources/usergroups.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
<showforumteam><![CDATA[0]]></showforumteam>
<usereputationsystem><![CDATA[0]]></usereputationsystem>
<cangivereputations><![CDATA[0]]></cangivereputations>
<candeletereputations><![CDATA[0]]></candeletereputations>
<reputationpower><![CDATA[0]]></reputationpower>
<maxreputationsday><![CDATA[0]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -148,6 +149,7 @@
<showforumteam><![CDATA[0]]></showforumteam>
<usereputationsystem><![CDATA[1]]></usereputationsystem>
<cangivereputations><![CDATA[1]]></cangivereputations>
<candeletereputations><![CDATA[1]]></candeletereputations>
<reputationpower><![CDATA[1]]></reputationpower>
<maxreputationsday><![CDATA[5]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -235,6 +237,7 @@
<showforumteam><![CDATA[1]]></showforumteam>
<usereputationsystem><![CDATA[1]]></usereputationsystem>
<cangivereputations><![CDATA[1]]></cangivereputations>
<candeletereputations><![CDATA[1]]></candeletereputations>
<reputationpower><![CDATA[1]]></reputationpower>
<maxreputationsday><![CDATA[10]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -323,6 +326,7 @@
<showforumteam><![CDATA[1]]></showforumteam>
<usereputationsystem><![CDATA[1]]></usereputationsystem>
<cangivereputations><![CDATA[1]]></cangivereputations>
<candeletereputations><![CDATA[1]]></candeletereputations>
<reputationpower><![CDATA[2]]></reputationpower>
<maxreputationsday><![CDATA[0]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -410,6 +414,7 @@
<showforumteam><![CDATA[0]]></showforumteam>
<usereputationsystem><![CDATA[0]]></usereputationsystem>
<cangivereputations><![CDATA[0]]></cangivereputations>
<candeletereputations><![CDATA[0]]></candeletereputations>
<reputationpower><![CDATA[0]]></reputationpower>
<maxreputationsday><![CDATA[0]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -497,6 +502,7 @@
<showforumteam><![CDATA[1]]></showforumteam>
<usereputationsystem><![CDATA[1]]></usereputationsystem>
<cangivereputations><![CDATA[1]]></cangivereputations>
<candeletereputations><![CDATA[1]]></candeletereputations>
<reputationpower><![CDATA[1]]></reputationpower>
<maxreputationsday><![CDATA[10]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down Expand Up @@ -584,6 +590,7 @@
<showforumteam><![CDATA[0]]></showforumteam>
<usereputationsystem><![CDATA[0]]></usereputationsystem>
<cangivereputations><![CDATA[0]]></cangivereputations>
<candeletereputations><![CDATA[0]]></candeletereputations>
<reputationpower><![CDATA[0]]></reputationpower>
<maxreputationsday><![CDATA[0]]></maxreputationsday>
<candisplaygroup><![CDATA[1]]></candisplaygroup>
Expand Down
11 changes: 7 additions & 4 deletions reputation.php
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@
if(!empty($mybb->input['delete']))
{
// Only administrators, super moderators, as well as users who gave a specifc vote can delete one.
if($mybb->usergroup['cancp'] != 1 && $mybb->usergroup['issupermod'] != 1 && $existing_reputation['adduid'] != $mybb->user['uid'])
if($mybb->usergroup['issupermod'] != 1 && ($mybb->usergroup['candeletereputations'] != 1 || $existing_reputation['adduid'] != $mybb->user['uid'] || $mybb->user['uid'] == 0))
{
error_no_permission();
}
Expand Down Expand Up @@ -428,7 +428,10 @@
$vote_button = $lang->update_vote;
$comments = htmlspecialchars_uni($existing_reputation['comments']);

eval("\$delete_button = \"".$templates->get("reputation_add_delete")."\";");
if($mybb->usergroup['issupermod'] == 1 || ($mybb->usergroup['candeletereputations'] == 1 && $existing_reputation['adduid'] == $mybb->user['uid'] && $mybb->user['uid'] != 0))
{
eval("\$delete_button = \"".$templates->get("reputation_add_delete")."\";");
}
}
// Otherwise we're adding an entirely new reputation for this user.
else
Expand Down Expand Up @@ -530,7 +533,7 @@
$existing_reputation = $db->fetch_array($query);

// Only administrators, super moderators, as well as users who gave a specifc vote can delete one.
if($mybb->usergroup['cancp'] != 1 && $mybb->usergroup['issupermod'] != 1 && $existing_reputation['adduid'] != $mybb->user['uid'])
if($mybb->usergroup['issupermod'] != 1 && ($mybb->usergroup['candeletereputations'] != 1 || $existing_reputation['adduid'] != $mybb->user['uid'] || $mybb->user['uid'] == 0))
{
error_no_permission();
}
Expand Down Expand Up @@ -954,7 +957,7 @@

// Does the current user have permission to delete this reputation? Show delete link
$delete_link = '';
if($mybb->usergroup['cancp'] == 1 || $mybb->usergroup['issupermod'] == 1 || ($mybb->usergroup['cangivereputations'] == 1 && $reputation_vote['adduid'] == $mybb->user['uid'] && $mybb->user['uid'] != 0))
if($mybb->usergroup['issupermod'] == 1 || ($mybb->usergroup['candeletereputations'] == 1 && $reputation_vote['adduid'] == $mybb->user['uid'] && $mybb->user['uid'] != 0))
{
eval("\$delete_link = \"".$templates->get("reputation_vote_delete")."\";");
}
Expand Down

0 comments on commit 62c1db9

Please sign in to comment.