diff --git a/composer.lock b/composer.lock index 9e5b78f3..e54c4d2d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "df70d8e5b96f789fd164572b5a7db038", - "content-hash": "ba3f2d8bdc3845c508fb819b8798e1b7", + "hash": "32e7c4bb62548c162dba362c8149ddca", + "content-hash": "a5f26e77067173509da633ec4820cfd5", "packages": [ { "name": "bd808/monolog-udp2log-handler", @@ -549,88 +549,1092 @@ } ], "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, { "name": "jakub-onderka/php-parallel-lint", "version": "v0.9.2", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Parallel-Lint.git", - "reference": "2ead2e4043ab125bee9554f356e0a86742c2d4fa" + "url": "https://github.com/JakubOnderka/PHP-Parallel-Lint.git", + "reference": "2ead2e4043ab125bee9554f356e0a86742c2d4fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Parallel-Lint/zipball/2ead2e4043ab125bee9554f356e0a86742c2d4fa", + "reference": "2ead2e4043ab125bee9554f356e0a86742c2d4fa", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "jakub-onderka/php-console-highlighter": "~0.3", + "nette/tester": "~1.3" + }, + "suggest": { + "jakub-onderka/php-console-highlighter": "Highlight syntax in code snippet" + }, + "bin": [ + "parallel-lint" + ], + "type": "library", + "autoload": { + "classmap": [ + "./" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "description": "This tool check syntax of PHP files about 20x faster than serial check.", + "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", + "time": "2015-12-15 10:42:16" + }, + { + "name": "mediawiki/mediawiki-codesniffer", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/mediawiki-tools-codesniffer.git", + "reference": "6b713bcbb9c20a3bdad76f9477458c9b4ae0773b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/mediawiki-tools-codesniffer/zipball/6b713bcbb9c20a3bdad76f9477458c9b4ae0773b", + "reference": "6b713bcbb9c20a3bdad76f9477458c9b4ae0773b", + "shasum": "" + }, + "require": { + "php": ">= 5.5.9", + "squizlabs/php_codesniffer": "2.6.0" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.9.*", + "mikey179/vfsstream": "~1.6", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "description": "MediaWiki CodeSniffer Standards", + "homepage": "https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP", + "keywords": [ + "codesniffer", + "mediawiki" + ], + "time": "2016-05-28 01:08:59" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27 11:43:31" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-06-10 09:48:41" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-06-10 07:14:17" + }, + { + "name": "phpspec/prophecy", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2016-06-07 08:13:47" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06 15:47:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2015-06-21 13:08:43" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2016-05-12 18:03:57" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-09-15 10:49:45" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.26", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc1d8cd5b5de11625979125c5639347896ac2c74", + "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2016-05-17 03:09:28" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02 06:51:40" + }, + { + "name": "sebastian/comparator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-07-26 15:48:44" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Parallel-Lint/zipball/2ead2e4043ab125bee9554f356e0a86742c2d4fa", - "reference": "2ead2e4043ab125bee9554f356e0a86742c2d4fa", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "jakub-onderka/php-console-highlighter": "~0.3", - "nette/tester": "~1.3" + "phpunit/phpunit": "~4.8" }, - "suggest": { - "jakub-onderka/php-console-highlighter": "Highlight syntax in code snippet" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } }, - "bin": [ - "parallel-lint" + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" ], + "time": "2015-12-08 07:14:41" + }, + { + "name": "sebastian/environment", + "version": "1.3.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716", + "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, "autoload": { "classmap": [ - "./" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "BSD-3-Clause" ], "authors": [ { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "This tool check syntax of PHP files about 20x faster than serial check.", - "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", - "time": "2015-12-15 10:42:16" + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-05-17 03:18:57" }, { - "name": "mediawiki/mediawiki-codesniffer", - "version": "v0.7.2", + "name": "sebastian/exporter", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/wikimedia/mediawiki-tools-codesniffer.git", - "reference": "6b713bcbb9c20a3bdad76f9477458c9b4ae0773b" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-tools-codesniffer/zipball/6b713bcbb9c20a3bdad76f9477458c9b4ae0773b", - "reference": "6b713bcbb9c20a3bdad76f9477458c9b4ae0773b", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e", "shasum": "" }, "require": { - "php": ">= 5.5.9", - "squizlabs/php_codesniffer": "2.6.0" + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "0.9.*", - "mikey179/vfsstream": "~1.6", - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~4.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "BSD-3-Clause" ], - "description": "MediaWiki CodeSniffer Standards", - "homepage": "https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP", + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "codesniffer", - "mediawiki" + "export", + "exporter" ], - "time": "2016-05-28 01:08:59" + "time": "2015-06-21 07:55:53" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12 03:26:01" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-11-11 19:50:13" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21 13:59:46" }, { "name": "squizlabs/php_codesniffer", @@ -709,6 +1713,104 @@ "standards" ], "time": "2016-04-03 22:58:34" + }, + { + "name": "symfony/yaml", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "eca51b7b65eb9be6af88ad7cc91685f1556f5c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/eca51b7b65eb9be6af88ad7cc91685f1556f5c9a", + "reference": "eca51b7b65eb9be6af88ad7cc91685f1556f5c9a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2016-05-26 21:46:24" + }, + { + "name": "webmozart/assert", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", + "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2015-08-24 13:29:44" } ], "aliases": [], diff --git a/public_html/css/index.css b/public_html/css/index.css index 9fafde5e..a717dc15 100644 --- a/public_html/css/index.css +++ b/public_html/css/index.css @@ -77,6 +77,8 @@ .row-container { align-items: center; + /*border-bottom: 1px dashed darkgrey;*/ + /*padding: 20px 10px;*/ padding: 10px; } @@ -121,6 +123,10 @@ /*border: 1px solid blue;*/ } +.diff-div-timestamp { + white-space: nowrap; +} + .report-div { /*border: 1px solid green;*/ } @@ -156,3 +162,20 @@ h1 { /*border: 1px solid green;*/ display: inline-block; } + +.status-div-reviewer { + margin-top: 10px; + white-space: nowrap; + display: none; + text-align: center; +} + +.none { + display: none; +} + +/* make anchor tags with empty href unclickable */ +a[href=''] { + color: inherit; + pointer-events: none; +} diff --git a/public_html/js/index.js b/public_html/js/index.js index 263c36f8..e559694d 100644 --- a/public_html/js/index.js +++ b/public_html/js/index.js @@ -4,39 +4,47 @@ * @param val string Save value 'fixed' or 'false' */ function saveState( id, val ) { - buttonId = null; - unusedButtonId = null; - buttonClass = null; - unusedButtonClass = null; - if ( val == 'fixed' ) { - buttonId = '#success' + id; - unusedButtonId = '#danger' + id; - buttonClass = 'success'; - unusedButtonClass = 'danger'; - } else if ( val == 'false' ) { - buttonId = '#danger' + id; - unusedButtonId = '#success' + id; - unusedButtonClass = 'success'; - buttonClass = 'danger'; - } - $( buttonId ).removeClass( 'btn-' + buttonClass ).addClass( 'btn-' + buttonClass + '-clicked' ).blur(); - $( unusedButtonId ).removeClass( 'btn-' + unusedButtonClass ).addClass( 'btn-secondary' ).prop( 'disabled', 'disabled' ).blur(); + var buttonId, unusedButtonId, buttonClass, unusedButtonClass; - $.get( 'review/add', - { id: id, val: val } - ).done( function ( ret ) { - console.log( ret ); - if ( ret == 'false' ) { - $( buttonId ).addClass( 'btn-' + buttonClass ).removeClass( 'btn-' + buttonClass + '-clicked' ).blur(); - $( unusedButtonId ).removeClass( 'btn-secondary' ).prop( 'disabled', false ).addClass( 'btn-' + unusedButtonClass ); - alert( 'There was an error in connecting to database.' ); - } else if ( ret == 'Unauthorized' ) { - alert( 'You need to be logged in to be able to review.' ); - $( buttonId ).addClass( 'btn-' + buttonClass ).removeClass( 'btn-' + buttonClass + '-clicked' ).blur(); - $( unusedButtonId ).removeClass( 'btn-secondary' ).prop( 'disabled', false ).addClass( 'btn-' + unusedButtonClass ); - } - } - ); + if ( val === 'fixed' ) { + buttonId = '#success' + id; + unusedButtonId = '#danger' + id; + buttonClass = 'success'; + unusedButtonClass = 'danger'; + } else if ( val === 'false' ) { + buttonId = '#danger' + id; + unusedButtonId = '#success' + id; + unusedButtonClass = 'success'; + buttonClass = 'danger'; + } + $( buttonId ).removeClass( 'btn-' + buttonClass ).addClass( 'btn-' + buttonClass + '-clicked' ).blur(); + $( unusedButtonId ).removeClass( 'btn-' + unusedButtonClass ).addClass( 'btn-secondary' ).prop( 'disabled', 'disabled' ).blur(); + + $.ajax( { + url: 'review/add', + data: { + id: id, + val: val + }, + dataType: 'json' + } ).done( function ( ret ) { + if ( ret.user ) { + $reviewerNode = $( '.status-div-reviewer-' + id ); + $reviewerNode.find( '.reviewer-link' ).prop( 'href', ret.userpage ).text( ret.user ); + $reviewerNode.find( '.reviewer-timestamp' ).text( ret.timestamp ); + $reviewerNode.fadeIn( 'slow' ); + $( unusedButtonId ).removeClass( 'btn-secondary' ).prop( 'disabled', true ).addClass( 'btn-' + unusedButtonClass ); + } else { + if ( ret.error === 'Unauthorized' ) { + alert( 'You need to be logged in to be able to review.' ); + } else { + alert( 'There was an error in connecting to database.' ); + } + $( buttonId ).addClass( 'btn-' + buttonClass ).removeClass( 'btn-' + buttonClass + '-clicked' ).blur(); + $( unusedButtonId ).removeClass( 'btn-secondary' ).prop( 'disabled', false ).addClass( 'btn-' + unusedButtonClass ); + } + } + ); } /** @@ -47,36 +55,32 @@ function saveState( id, val ) { * @param diffId Oldid of diff */ function toggleComparePane( id, index, copyvio, diffId ) { - var compareDiv = '#comp' + id + '-' + index; - $( compareDiv ).slideToggle( 500 ); - $.ajax( - { - type: 'GET', - url: 'https://tools.wmflabs.org/copyvios/api.json', - data: { - oldid: diffId, - url: copyvio, - action: 'compare', - project: 'wikipedia', - lang: 'en', - format: 'json', - detail: 'true' - }, - dataType: 'json', - jsonpCallback: 'callback', - success: function ( ret ) { - console.log( 'XHR Success' ); - if ( ret.detail ) { - $( compareDiv ).find( '.compare-pane-left' ).html( ret.detail.article ); - $( compareDiv ).find( '.compare-pane-right' ).html( ret.detail.source ); - } else { - $( compareDiv ).find( '.compare-pane-left' ).html( 'Error! API returned no data.' ); - $( compareDiv ).find( '.compare-pane-right' ).html( 'Error! API returned no data.' ); - } - }, - error: function () { - console.log( 'XHR Fail' ); - } - } - ); + var compareDiv = '#comp' + id + '-' + index; + $( compareDiv ).slideToggle( 500 ); + $.ajax( + { + type: 'GET', + url: 'https://tools.wmflabs.org/copyvios/api.json', + data: { + oldid: diffId, + url: copyvio, + action: 'compare', + project: 'wikipedia', + lang: 'en', + format: 'json', + detail: 'true' + }, + dataType: 'json', + jsonpCallback: 'callback' + } ).done( function ( ret ) { + console.log( 'XHR Success' ); + if ( ret.detail ) { + $( compareDiv ).find( '.compare-pane-left' ).html( ret.detail.article ); + $( compareDiv ).find( '.compare-pane-right' ).html( ret.detail.source ); + } else { + $( compareDiv ).find( '.compare-pane-left' ).html( 'Error! API returned no data.' ); + $( compareDiv ).find( '.compare-pane-right' ).html( 'Error! API returned no data.' ); + } + } + ); } diff --git a/public_html/templates/base.html b/public_html/templates/base.html index db875a89..f4b3cf78 100644 --- a/public_html/templates/base.html +++ b/public_html/templates/base.html @@ -2,89 +2,89 @@ - CopyPatrol - {% block stylesheets %} - - - {% endblock %} - {% block scripts %} - - - - - {% endblock %} + CopyPatrol + {% block stylesheets %} + + + {% endblock %} + {% block scripts %} + + + + + {% endblock %}
-
-

CopyPatrol

- {% if user %} - - Logout
- You are logged in as {{ user.name }} -
- {% else %} - - Login - - {% endif %} -
- {% block banners %} -
- - Hello! This is a web-version of Plagiabot. Database writes for this tool are now - enabled. You can start conducting reviews after you log in. You can drop your feedback - here. -
- {% block flashes %} - {% if flash|default(false) %} - {% if flash.error|default(false) %} -
- - {{ flash.error }} -
- {% endif %} - {% if flash.success|default(false) %} -
- - {{ flash.info }} -
- {% endif %} - {% if flash.warning|default(false) %} -
- - {{ flash.info }} -
- {% endif %} - {% if flash.info|default(false) %} -
- - {{ flash.info }} -
- {% endif %} - {% endif %} - {% endblock flashes %} - {% endblock %} - {% block rowheader %} -
-
Page
-
Diff
-
Editor
-
Wikiprojects
-
Review
-
- {% endblock %} -
- {% block records %} - {% endblock %} -
+
+

CopyPatrol

+ {% if user %} + + Logout
+ You are logged in as {{ user.name }} +
+ {% else %} + + Login + + {% endif %} +
+ {% block banners %} +
+ + Hello! This is a web-version of Plagiabot. Database writes for this tool are now + enabled. You can start conducting reviews after you log in. You can drop your feedback + here. +
+ {% block flashes %} + {% if flash|default(false) %} + {% if flash.error|default(false) %} +
+ + {{ flash.error }} +
+ {% endif %} + {% if flash.success|default(false) %} +
+ + {{ flash.info }} +
+ {% endif %} + {% if flash.warning|default(false) %} +
+ + {{ flash.info }} +
+ {% endif %} + {% if flash.info|default(false) %} +
+ + {{ flash.info }} +
+ {% endif %} + {% endif %} + {% endblock flashes %} + {% endblock %} + {% block rowheader %} +
+
Page
+
Diff
+
Editor
+
Wikiprojects
+
Review
+
+ {% endblock %} +
+ {% block records %} + {% endblock %} +
diff --git a/public_html/templates/index.html b/public_html/templates/index.html index 9364b45e..6b31f2fb 100644 --- a/public_html/templates/index.html +++ b/public_html/templates/index.html @@ -1,98 +1,116 @@ {% extends "base.html" %} +{% import _self as macros %} + +{% macro reviewer_node( row ) %} +
+ Reviewed by + + {{ row.status_user }} +
+ {{ row.review_timestamp }} +
+
+{% endmacro %} {% block records %} - {% if records is not empty %} - {% for row in records %} -
-
- {{ row.page_title }} -
-
- Diff
- - {{ row.diff_timestamp }} - -
-
- {% if row.editor %} - {{ row.editor }}
- - Talk | - Contributions
- Edit count: {{ row.editcount }} -
- {% else %} - -
- Editor not found -
- {% endif %} -
-
- {% if row.wikiprojects is not empty %} - {% for wp in row.wikiprojects %} - {{ wp }} - {% endfor %} - {% endif %} -
-
- {% if row.status == 'fixed' %} - - - {% elseif row.status == 'false' %} - - - {% elseif row.status == NULL %} - - - {% endif %} -
-
- - {% endfor %} - {% endif %} + {% if records is not empty %} + {% for row in records %} +
+
+ +
+ Diff
+ + {{ row.diff_timestamp }} + +
+
+ {% if row.editor %} + {{ row.editor }}
+ + Talk | + Contributions
+ Edit count: {{ row.editcount }} +
+ {% else %} + +
+ Editor not found +
+ {% endif %} +
+
+ {% if row.wikiprojects is not empty %} + {% for wp in row.wikiprojects %} + {{ wp }} + {% endfor %} + {% endif %} +
+
+ {% if row.status == 'fixed' %} + + + {% elseif row.status == 'false' %} + + + {% elseif row.status == NULL %} + + + {% endif %} + {{ macros.reviewer_node( row ) }} +
+
+
+ + {% endfor %} + {% endif %} {% endblock %} \ No newline at end of file diff --git a/src/Controllers/AuthHandler.php b/src/Controllers/AuthHandler.php index ddfca12a..fdf25367 100644 --- a/src/Controllers/AuthHandler.php +++ b/src/Controllers/AuthHandler.php @@ -110,7 +110,7 @@ protected function handleCallback() { $accessToken = $this->oauth->complete( $token, $verifyCode ); $user = $this->manager->getUserData( $accessToken ); $this->authManager->login( $user ); - $this->flash( 'info', 'You are now succesfully logged in as ' . $user->getName() . '. Please note that + $this->flash( 'info', 'You are now successfully logged in as ' . $user->getName() . '. Please note that this tool is set up to credit users for their reviews. Your username will be assocated with your reviews, be publicly visible and retained indefinitely' ); } catch ( \Exception $e ) { diff --git a/src/Controllers/CopyPatrol.php b/src/Controllers/CopyPatrol.php index 880838e7..e7206ad8 100644 --- a/src/Controllers/CopyPatrol.php +++ b/src/Controllers/CopyPatrol.php @@ -108,6 +108,11 @@ protected function handleGet() { $records[$key]['editor_page_dead'] = false; $records[$key]['editor_talk_dead'] = false; } + $records[$key]['reviewed'] = $record['status_user'] ? true : false; + if ( $records[$key]['reviewed'] ) { + $records[$key]['reviewed_by_url'] = $this->getUserPage( $record['status_user'] ); + $records[$key]['review_timestamp'] = $this->formatTimestamp( $record['review_timestamp'] ); + } $records[$key]['wikiprojects'] = $this->wikiprojectDao->getWikiProjects( $record['page_title'] ); $records[$key]['page_title'] = $this->removeUnderscores( $record['page_title'] ); $cleanWikiprojects = array(); @@ -156,7 +161,7 @@ public function getReportLink( $ithenticateId ) { */ public function formatTimestamp( $datetime ) { $datetime = strtotime( $datetime ); - return date( 'd-m-y h:m:s', $datetime ); + return date( 'Y-m-d h:m', $datetime ); } diff --git a/src/Controllers/Review.php b/src/Controllers/Review.php index 3ae6b1db..d413af28 100644 --- a/src/Controllers/Review.php +++ b/src/Controllers/Review.php @@ -23,7 +23,7 @@ use Wikimedia\Slimapp\Controller; -class Review extends Controller { +class Review extends CopyPatrol { /** * @param \Slim\Slim $slim Slim application @@ -36,7 +36,26 @@ public function __construct( \Slim\Slim $slim = null ) { protected function handleGet() { $id = $this->request->get( 'id' ); $val = $this->request->get( 'val' ); - $ret = $this->dao->insertCopyvioAssessment( $id, $val ); - echo $ret; + + $userData = $this->authManager->getUserData(); + $user = $userData ? $userData->getName() : NULL; + + // Get current UTC time as ISO 8601 timestamp. + $timestamp = gmdate( 'c' ); + + $ret = $this->dao->insertCopyvioAssessment( $id, $val, $user, $timestamp ); + + // Return JSON with username and review timestamp if review was successful + if ( $ret === true ) { + echo json_encode( array( + 'user' => $user, + 'userpage' => $this->getUserPage( $user ), + 'timestamp' => $this->formatTimestamp( $timestamp ) + ) ); + } else { + echo json_encode( array( + 'error' => $ret + )); + } } } \ No newline at end of file diff --git a/src/Dao/PlagiabotDao.php b/src/Dao/PlagiabotDao.php index 2781f6b4..f67a64e3 100644 --- a/src/Dao/PlagiabotDao.php +++ b/src/Dao/PlagiabotDao.php @@ -64,16 +64,20 @@ public function getPlagiarismRecords( $n = 50 ) { /** * @param $value string Value of the state saved by user * @param $ithenticateId int Ithenticate ID of the report + * @param $user string the reviewer's username + * @param $timestamp date timestamp of when the review took place * @return true|false depending on query success/fail */ - public function insertCopyvioAssessment( $ithenticateId, $value ) { + public function insertCopyvioAssessment( $ithenticateId, $value, $user, $timestamp ) { $sql = self::concat( 'UPDATE copyright_diffs', - 'SET status = :status', + 'SET status = :status, status_user = :status_user, review_timestamp = :review_timestamp', 'WHERE ithenticate_id = :id' ); return $this->update( $sql, [ 'status' => $value, + 'status_user' => $user, + 'review_timestamp' => $timestamp, 'id' => $ithenticateId ] ); }