User:Robchurch/Work queue

Idea originated with Brion and seems quite sane.

Thoughts

 * Trusted users can queue pages and files for deletion
 * Maintains links to discussion
 * Could set up the discussion when enqueued using a boilerplate
 * Could add a proper banner in the UI when viewing a page?
 * Informs the creator of the page that it's up for deletion
 * Avoids the whole "no-one told me" culture
 * Might inform all recent editors?
 * Could use Brion's evil plans for notification mechanism?
 * Sysops can remove the item from the queue
 * Sysops review a list of expired items and finalise the deletion with one click
 * Creator/editors etc. are notified
 * Anyone else "watching" the item is notified
 * Logs, tracking pages, reports and other goodies

This would be close in terms of process to the English Wikipedia's "speedy deletion" system, or "proposed deletion". Controversial deletions can (and should) still go through a longer discussion process.

Things to address

 * Notification : In an ideal world, this will use the multiple notification queue Brion would like to see added

Schema
This table holds the queue data.

CREATE TABLE deletion_queue (

-- Queue item identifier dq_id UNSIGNED INT NOT NULL AUTO_INCREMENT,

-- Associated page -- [FK to page.page_id] dq_page UNSIGNED INT NOT NULL,

-- Proposer dq_proposer UNSIGNED INT NOT NULL, dq_proposer_text VARCHAR(255) NOT NULL,

-- Timestamp of proposal (and expiration? do we need this?) dq_timestamp VARCHAR(14) BINARY NOT NULL, dq_expires VARCHAR(14) BINARY NOT NULL,

-- Reason for proposal (do we want to retain this here? it could just go on the discussion page) dq_reason BLOB NOT NULL,

-- Discussion page -- [FK to page.page_id] dq_talk UNSIGNED INT NOT NULL,

PRIMARY KEY ( dq_id ), KEY ( dq_page, dq_timestamp, dq_expires ), KEY ( dq_proposer, dq_proposer_text )

);

This table maintains a "watchlist" for people who are to be notified of changes to the queue item. The creator (and perhaps other editors) are added to this when the queue item is created, and other users can add themselves if interested.

CREATE TABLE deletion_watchers (

-- Row identifier dw_id UNSIGNED INT NOT NULL AUTO_INCREMENT,

-- Associated queue item -- [FK to deletion_queue.dq_id] dw_item UNSIGNED INT NOT NULL,

-- User identifier -- [FK to user.user_id] dw_user UNSIGNED INT NOT NULL,

PRIMARY KEY ( dw_id ), KEY ( dw_user ), KEY ( dw_item )

);