User Tools

  • Logged in as: anonymous (anonymous)
  • Log Out

Site Tools


This is an old revision of the document!

Issue Voting Requirements


The idea of voting is to allow users to vote on the issues that matter most to them. Given that most of the time it is good to have all features implemented and bugs fixed, users should do some choice when deciding to vote for the more important issues. Users should also be able to vote against feature requests that they believe will be of harm to the product.

Database Schema Changes

  • mantis_bug_table
    • votes_positive as integer.
    • votes_negative as integer.
  • mantis_bug_votes_table
    • issue_id
    • user_id
    • weight (can be positive or negative, typically -1 or +1), can't be 0.

Configuration Changes

  • voting_enabled (boolean, default true) - enable or disable the whole voting feature.
  • voting_place_vote_threshold (default REPORTER) - access level required for users to vote on issues.
  • voting_view_user_votes_threshold (default DEVELOPER) - access level required for users to view the users who voted and their votes.

Votes Columns

  • It should be possible to expose the positive, negative or overall votes as a column in export csv, Excel, View Issues, etc. Overall votes are positive votes minus negative votes.

View Issue Page

  • The view issues page should allow users to vote positively or negatively. Also if users have already voted before and the issue is not resolved, then they can remove their vote.
  • Display the total number of positive / negative votes (kind of thumbs-up / thumbs-down counters)
  • The list of users who voted positively or negatively are listed in the same way users monitoring the issue are listed.

The Act of Voting

  • Ensure that users can vote (i.e. have the required access level).
  • If users have voted before for this issue, and their new vote is different then remove their current vote.
  • Add a record in the votes table.
  • Update overall counters on the issue.
  • DO NOT update issue last updated timestamp (this is consistent with the bug monitor behavior). If necessary we can make this behavior configurable.
  • Update Issue History

Implementation Details

  • Deleting an issue must delete all associated votes.
  • Deleting a user must delete all associated votes, no update for last_update of the issues.
  • Implement core/vote_api.php
    • vote_add( $p_issue_id, $p_weight, $p_user_id = null )
    • vote_delete_issue_votes( $p_issue_id );
    • vote_delete_user_votes( $p_user_id );
    • vote_get_issue_votes( $p_issue_id ) - returns an array of user ids, weight.
    • vote_is_enabled( $p_project_id = ALL_PROJECTS )
    • vote_can_vote( $p_issue_id, $p_user_id = null )
    • vote_can_view_vote_details( $p_issue_id, $p_user_id = null )
  • Deleting an issue should delete all associated votes.
  • Deleting a user should delete all associated votes.

View Issues, CSV, Print Issues

Add support to the View Issues, CSV export and Print Issues page to be able to include the following columns:

  • votes_balance
  • votes_positive
  • votes_negative

Future Ideas

  • Limit the amount of votes users have
    • Users regularly get granted credits to use for voting.
    • Users get granted credits to use for voting based on certain actions (e.g. submitting an issue, adding a note, etc).
    • Users buy credits to vote.
    • Users get assigned credits manually by users above certain level.
    • Users above a certain access level bypass limits (default DEVELOPER)


Please place any feedback here.

2007-07-31 ave : I would like to vote without changing weight sometimes just to show that 'I have reviewed the issue'. How about adding an configuration option for voting with weight=0?
2007-09-02 vboctor: Should we just have one field in the bug table to carry the overall vote balance?
mantisbt/issue_voting_requirements.1188732821.txt.gz · Last modified: 2008/10/29 04:32 (external edit)