The web interface for Plagiabot (authored by @eranroz)
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This is a web interface for Plagiabot's Copyright RC feed.

Build Status

To install locally

  1. Clone the repository and run composer install.
  2. Edit the .env file that was created by composer.
    1. Get Oauth tokens by registering a new consumer on Meta at Special:OAuthConsumerRegistration.
    2. To use Redis caching, also add REDIS_HOST and REDIS_PORT; without these, a local filesystem cache will be used.
  3. Make the cache/ directory writable by the web server.
  4. Rewrite your routing, if needed.
    For Lighttpd, use this in your .lighttpd.conf:
    url.rewrite-if-not-file += ( "(.*)" => "/copypatrol/index.php/$0" )

    Or for Apache, this (in .htaccess at the root of the project):
    DirectorySlash Off
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^public_html(.*)$ public_html/index.php$1 [L]
  5. Open up an SSH tunnel to access the databases on Tool Labs (substitute your own username).
    $ ssh -L 4711:enwiki.web.db.svc.eqiad.wmflabs:3306 -L 4712:tools-db:3306 -N

This application makes of use the Wikimedia-slimapp library and uses Twig as its templating engine.

To add a new translation message:

  1. Add it to en.json
  2. Update the qqq.json documentation accordingly
  3. Call it in Twig as {{ '<message-key>'|message }}. If the message contains any HTML, you'll need to append the |raw filter after message.
  4. To use a translation message in JavaScript, add it as a global variable in templates/base.html. Then simply access it in the JS.
  5. To get a message in PHP, use $this->i18nContext->message( '<message-key>' )

Available languages

CopyPatrol is able to work with any languages that are supported by iThenticate. This list is available at and the corresponding list of messages in i18n/*.json should be updated periodically (there is no automatic process for this).