Merge branch 'master' into admin
This commit is contained in:
commit
d8bcc58d22
|
@ -1,3 +1,5 @@
|
||||||
|
bin/configuration-test-generator export-ignore
|
||||||
|
bin/icon-test export-ignore
|
||||||
doc/ export-ignore
|
doc/ export-ignore
|
||||||
tst/ export-ignore
|
tst/ export-ignore
|
||||||
img/browserstack.svg export-ignore
|
img/browserstack.svg export-ignore
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# PrivateBin version history
|
# PrivateBin version history
|
||||||
|
|
||||||
* **1.4.1 (not yet released)**
|
* **1.5 (not yet released)**
|
||||||
* ADDED: script for data storage backend migrations (#1012)
|
* ADDED: script for data storage backend migrations (#1012)
|
||||||
* ADDED: script for administrative tasks: deleting pastes (#274), removing empty directories (#277), purging expired pastes (#276) & statistics (#319)
|
* ADDED: script for administrative tasks: deleting pastes (#274), removing empty directories (#277), purging expired pastes (#276) & statistics (#319)
|
||||||
* ADDED: Translations for Turkish, Slovak, Greek and Thai
|
* ADDED: Translations for Turkish, Slovak, Greek and Thai
|
||||||
* ADDED: S3 Storage backend (#994)
|
* ADDED: S3 Storage backend (#994)
|
||||||
* ADDED: Jdenticons as an option for comment icons (#793)
|
* ADDED: Jdenticons as an option for comment icons (#793)
|
||||||
* CHANGED: Avoid `SUPER` privilege for setting the `sql_mode` for MariaDB/MySQL (#919)
|
* CHANGED: Avoid `SUPER` privilege for setting the `sql_mode` for MariaDB/MySQL (#919)
|
||||||
* CHANGED: Upgrading libraries to: zlib 1.2.13
|
* CHANGED: Upgrading libraries to: DOMpurify 2.4.6, jQuery 3.6.1, Showdown 2.1.0 & zlib 1.2.13
|
||||||
* FIXED: Revert to CREATE INDEX without IF NOT EXISTS clauses, to support MySQL (#943)
|
* FIXED: Revert to CREATE INDEX without IF NOT EXISTS clauses, to support MySQL (#943)
|
||||||
* FIXED: Apply table prefix to indexes as well, to support multiple instances sharing a single database (#943)
|
* FIXED: Apply table prefix to indexes as well, to support multiple instances sharing a single database (#943)
|
||||||
* FIXED: YOURLS integration via new proxy, storing signature in configuration (#725)
|
* FIXED: YOURLS integration via new proxy, storing signature in configuration (#725)
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
* DANGER: Too many options/settings and too high max iteration setting may trigger
|
* DANGER: Too many options/settings and too high max iteration setting may trigger
|
||||||
* a fork bomb. Please save your work before executing this script.
|
* a fork bomb. Please save your work before executing this script.
|
||||||
*/
|
*/
|
||||||
include 'Bootstrap.php';
|
|
||||||
|
define('PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
|
include PATH . 'tst' . DIRECTORY_SEPARATOR . 'Bootstrap.php';
|
||||||
|
|
||||||
$vd = array('view', 'delete');
|
$vd = array('view', 'delete');
|
||||||
$vcd = array('view', 'create', 'delete');
|
$vcd = array('view', 'create', 'delete');
|
||||||
|
@ -392,7 +394,7 @@ class ConfigurationTestGenerator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$code .= '}' . PHP_EOL;
|
$code .= '}' . PHP_EOL;
|
||||||
file_put_contents('ConfigurationCombinationsTest.php', $code);
|
file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'tst' . DIRECTORY_SEPARATOR . 'ConfigurationCombinationsTest.php', $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -428,6 +430,8 @@ class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase
|
||||||
Helper::confBackup();
|
Helper::confBackup();
|
||||||
$this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
|
$this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
|
||||||
$this->_model = new Filesystem(array('dir' => $this->_path));
|
$this->_model = new Filesystem(array('dir' => $this->_path));
|
||||||
|
ServerSalt::setStore($this->_model);
|
||||||
|
TrafficLimiter::setStore($this->_model);
|
||||||
$this->reset();
|
$this->reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// change this, if your php files and data is outside of your webservers document root
|
// change this, if your php files and data is outside of your webservers document root
|
||||||
define('PATH', '..' . DIRECTORY_SEPARATOR);
|
define('PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
|
|
||||||
define('PUBLIC_PATH', __DIR__ . DIRECTORY_SEPARATOR);
|
define('PUBLIC_PATH', __DIR__ . DIRECTORY_SEPARATOR);
|
||||||
require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
|
@ -9,6 +10,10 @@ require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
use PrivateBin\Configuration;
|
use PrivateBin\Configuration;
|
||||||
use PrivateBin\Model;
|
use PrivateBin\Model;
|
||||||
|
|
||||||
|
// third argument in getopt requires PHP >= 7.1
|
||||||
|
if (version_compare(PHP_VERSION, '7.1.0') < 0) {
|
||||||
|
dieerr('migrate requires php 7.1 or above to work. Sorry.');
|
||||||
|
}
|
||||||
|
|
||||||
$longopts = array(
|
$longopts = array(
|
||||||
"delete-after",
|
"delete-after",
|
||||||
|
@ -171,9 +176,9 @@ function helpexit ()
|
||||||
print("migrate.php - Copy data between PrivateBin backends
|
print("migrate.php - Copy data between PrivateBin backends
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
php migrate.php [--delete-after] [--delete-during] [-f] [-n] [-v] srcconfdir
|
migrate [--delete-after] [--delete-during] [-f] [-n] [-v] srcconfdir
|
||||||
[<dstconfdir>]
|
[<dstconfdir>]
|
||||||
php migrate.php [-h]
|
migrate [-h]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--delete-after delete data from source after all pastes and comments have
|
--delete-after delete data from source after all pastes and comments have
|
|
@ -48,11 +48,6 @@
|
||||||
"identicon",
|
"identicon",
|
||||||
"jdenticon"
|
"jdenticon"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"docs": "https://jdenticon.com/php-api.html",
|
|
||||||
"issues": "https://github.com/dmester/jdenticon-php/issues",
|
|
||||||
"source": "https://github.com/dmester/jdenticon-php"
|
|
||||||
},
|
|
||||||
"time": "2022-10-30T17:15:02+00:00"
|
"time": "2022-10-30T17:15:02+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -110,20 +105,6 @@
|
||||||
"range",
|
"range",
|
||||||
"subnet"
|
"subnet"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/mlocati/ip-lib/issues",
|
|
||||||
"source": "https://github.com/mlocati/ip-lib/tree/1.18.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/sponsors/mlocati",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://paypal.me/mlocati",
|
|
||||||
"type": "other"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2022-01-13T18:05:33+00:00"
|
"time": "2022-01-13T18:05:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -173,11 +154,6 @@
|
||||||
"pseudorandom",
|
"pseudorandom",
|
||||||
"random"
|
"random"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"email": "info@paragonie.com",
|
|
||||||
"issues": "https://github.com/paragonie/random_compat/issues",
|
|
||||||
"source": "https://github.com/paragonie/random_compat"
|
|
||||||
},
|
|
||||||
"time": "2022-02-16T17:07:03+00:00"
|
"time": "2022-02-16T17:07:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -230,10 +206,6 @@
|
||||||
"identicon",
|
"identicon",
|
||||||
"image"
|
"image"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/yzalis/Identicon/issues",
|
|
||||||
"source": "https://github.com/yzalis/Identicon/tree/master"
|
|
||||||
},
|
|
||||||
"abandoned": true,
|
"abandoned": true,
|
||||||
"time": "2019-10-14T09:30:57+00:00"
|
"time": "2019-10-14T09:30:57+00:00"
|
||||||
}
|
}
|
||||||
|
@ -241,34 +213,32 @@
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/instantiator",
|
"name": "doctrine/instantiator",
|
||||||
"version": "1.0.5",
|
"version": "1.4.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/instantiator.git",
|
"url": "https://github.com/doctrine/instantiator.git",
|
||||||
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
|
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
|
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
|
||||||
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
|
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3,<8.0-DEV"
|
"php": "^7.1 || ^8.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"athletic/athletic": "~0.1.8",
|
"doctrine/coding-standard": "^9",
|
||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"ext-phar": "*",
|
"ext-phar": "*",
|
||||||
"phpunit/phpunit": "~4.0",
|
"phpbench/phpbench": "^0.16 || ^1",
|
||||||
"squizlabs/php_codesniffer": "~2.0"
|
"phpstan/phpstan": "^1.4",
|
||||||
|
"phpstan/phpstan-phpunit": "^1",
|
||||||
|
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||||
|
"vimeo/psalm": "^4.22"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.0.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
||||||
|
@ -282,42 +252,42 @@
|
||||||
{
|
{
|
||||||
"name": "Marco Pivetta",
|
"name": "Marco Pivetta",
|
||||||
"email": "ocramius@gmail.com",
|
"email": "ocramius@gmail.com",
|
||||||
"homepage": "http://ocramius.github.com/"
|
"homepage": "https://ocramius.github.io/"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
||||||
"homepage": "https://github.com/doctrine/instantiator",
|
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"constructor",
|
"constructor",
|
||||||
"instantiate"
|
"instantiate"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2022-03-03T08:28:38+00:00"
|
||||||
"issues": "https://github.com/doctrine/instantiator/issues",
|
|
||||||
"source": "https://github.com/doctrine/instantiator/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2015-06-14T21:17:01+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.7.0",
|
"version": "1.11.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
|
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
|
||||||
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
|
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^5.6 || ^7.0"
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"doctrine/collections": "<1.6.8",
|
||||||
|
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/collections": "^1.0",
|
"doctrine/collections": "^1.6.8",
|
||||||
"doctrine/common": "^2.6",
|
"doctrine/common": "^2.13.3 || ^3.2.2",
|
||||||
"phpunit/phpunit": "^4.1"
|
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -340,43 +310,34 @@
|
||||||
"object",
|
"object",
|
||||||
"object graph"
|
"object graph"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2022-03-03T13:19:32+00:00"
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.x"
|
|
||||||
},
|
|
||||||
"time": "2017-10-19T19:58:43+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
"version": "1.0.1",
|
"version": "2.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
||||||
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
|
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||||
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.5"
|
"php": "^7.2 || ^8.0"
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpunit/phpunit": "^4.6"
|
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.0.x-dev"
|
"dev-2.x": "2.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"phpDocumentor\\Reflection\\": [
|
"phpDocumentor\\Reflection\\": "src/"
|
||||||
"src"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
@ -398,94 +359,92 @@
|
||||||
"reflection",
|
"reflection",
|
||||||
"static analysis"
|
"static analysis"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2020-06-27T09:03:43+00:00"
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2017-09-11T18:02:19+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
"name": "phpdocumentor/reflection-docblock",
|
||||||
"version": "3.3.2",
|
"version": "5.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||||
"reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
|
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
|
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||||
"reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
|
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^5.6 || ^7.0",
|
"ext-filter": "*",
|
||||||
"phpdocumentor/reflection-common": "^1.0.0",
|
"php": "^7.2 || ^8.0",
|
||||||
"phpdocumentor/type-resolver": "^0.4.0",
|
"phpdocumentor/reflection-common": "^2.2",
|
||||||
"webmozart/assert": "^1.0"
|
"phpdocumentor/type-resolver": "^1.3",
|
||||||
|
"webmozart/assert": "^1.9.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"mockery/mockery": "^0.9.4",
|
"mockery/mockery": "~1.3.2",
|
||||||
"phpunit/phpunit": "^4.4"
|
"psalm/phar": "^4.8"
|
||||||
},
|
|
||||||
"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.",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/3.x"
|
|
||||||
},
|
|
||||||
"time": "2017-11-10T14:09:06+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpdocumentor/type-resolver",
|
|
||||||
"version": "0.4.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
|
||||||
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
|
|
||||||
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^5.5 || ^7.0",
|
|
||||||
"phpdocumentor/reflection-common": "^1.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "^0.9.4",
|
|
||||||
"phpunit/phpunit": "^5.2||^4.8.24"
|
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.0.x-dev"
|
"dev-master": "5.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"phpDocumentor\\Reflection\\": [
|
"phpDocumentor\\Reflection\\": "src"
|
||||||
"src/"
|
}
|
||||||
]
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mike van Riel",
|
||||||
|
"email": "me@mikevanriel.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jaap van Otterdijk",
|
||||||
|
"email": "account@ijaap.nl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||||
|
"time": "2021-10-19T17:43:47+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpdocumentor/type-resolver",
|
||||||
|
"version": "1.6.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||||
|
"reference": "77a32518733312af16a44300404e945338981de3"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
||||||
|
"reference": "77a32518733312af16a44300404e945338981de3",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0",
|
||||||
|
"phpdocumentor/reflection-common": "^2.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-tokenizer": "*",
|
||||||
|
"psalm/phar": "^4.8"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-1.x": "1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"phpDocumentor\\Reflection\\": "src"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
@ -498,11 +457,8 @@
|
||||||
"email": "me@mikevanriel.com"
|
"email": "me@mikevanriel.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"support": {
|
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
"time": "2022-03-15T21:29:03+00:00"
|
||||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2017-07-14T14:27:02+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpspec/prophecy",
|
"name": "phpspec/prophecy",
|
||||||
|
@ -565,43 +521,39 @@
|
||||||
"spy",
|
"spy",
|
||||||
"stub"
|
"stub"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpspec/prophecy/issues",
|
|
||||||
"source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
|
|
||||||
},
|
|
||||||
"time": "2020-03-05T15:02:03+00:00"
|
"time": "2020-03-05T15:02:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "4.0.8",
|
"version": "4.0.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
|
"reference": "ca060f645beeddebedb1885c97bf163e93264c35"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca060f645beeddebedb1885c97bf163e93264c35",
|
||||||
"reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
|
"reference": "ca060f645beeddebedb1885c97bf163e93264c35",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-dom": "*",
|
|
||||||
"ext-xmlwriter": "*",
|
|
||||||
"php": "^5.6 || ^7.0",
|
"php": "^5.6 || ^7.0",
|
||||||
"phpunit/php-file-iterator": "^1.3",
|
"phpunit/php-file-iterator": "~1.3",
|
||||||
"phpunit/php-text-template": "^1.2",
|
"phpunit/php-text-template": "~1.2",
|
||||||
"phpunit/php-token-stream": "^1.4.2 || ^2.0",
|
"phpunit/php-token-stream": "^1.4.2 || ^2.0",
|
||||||
"sebastian/code-unit-reverse-lookup": "^1.0",
|
"sebastian/code-unit-reverse-lookup": "~1.0",
|
||||||
"sebastian/environment": "^1.3.2 || ^2.0",
|
"sebastian/environment": "^1.3.2 || ^2.0",
|
||||||
"sebastian/version": "^1.0 || ^2.0"
|
"sebastian/version": "~1.0|~2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-xdebug": "^2.1.4",
|
"ext-xdebug": ">=2.1.4",
|
||||||
"phpunit/phpunit": "^5.7"
|
"phpunit/phpunit": "^5.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-xdebug": "^2.5.1"
|
"ext-dom": "*",
|
||||||
|
"ext-xdebug": ">=2.4.0",
|
||||||
|
"ext-xmlwriter": "*"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
|
@ -632,12 +584,7 @@
|
||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2017-02-23T07:38:02+00:00"
|
||||||
"irc": "irc://irc.freenode.net/phpunit",
|
|
||||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/4.0"
|
|
||||||
},
|
|
||||||
"time": "2017-04-02T07:44:40+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
|
@ -684,11 +631,6 @@
|
||||||
"filesystem",
|
"filesystem",
|
||||||
"iterator"
|
"iterator"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"irc": "irc://irc.freenode.net/phpunit",
|
|
||||||
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
|
|
||||||
},
|
|
||||||
"time": "2017-11-27T13:52:08+00:00"
|
"time": "2017-11-27T13:52:08+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -730,10 +672,6 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"template"
|
"template"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
|
|
||||||
},
|
|
||||||
"time": "2015-06-21T13:50:34+00:00"
|
"time": "2015-06-21T13:50:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -783,37 +721,33 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"timer"
|
"timer"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/php-timer/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2017-02-26T11:10:40+00:00"
|
"time": "2017-02-26T11:10:40+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-token-stream",
|
"name": "phpunit/php-token-stream",
|
||||||
"version": "1.4.12",
|
"version": "2.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
||||||
"reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
|
"reference": "791198a2c6254db10131eecfe8c06670700904db"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
|
||||||
"reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
|
"reference": "791198a2c6254db10131eecfe8c06670700904db",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"php": ">=5.3.3"
|
"php": "^7.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "~4.2"
|
"phpunit/phpunit": "^6.2.4"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.4-dev"
|
"dev-master": "2.0-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -836,12 +770,8 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"tokenizer"
|
"tokenizer"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/php-token-stream/tree/1.4"
|
|
||||||
},
|
|
||||||
"abandoned": true,
|
"abandoned": true,
|
||||||
"time": "2017-12-04T08:55:13+00:00"
|
"time": "2017-11-27T05:48:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
|
@ -923,10 +853,6 @@
|
||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/5.7.27"
|
|
||||||
},
|
|
||||||
"time": "2018-02-01T05:50:59+00:00"
|
"time": "2018-02-01T05:50:59+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -986,11 +912,6 @@
|
||||||
"mock",
|
"mock",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"irc": "irc://irc.freenode.net/phpunit",
|
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.4"
|
|
||||||
},
|
|
||||||
"abandoned": true,
|
"abandoned": true,
|
||||||
"time": "2017-06-30T09:13:00+00:00"
|
"time": "2017-06-30T09:13:00+00:00"
|
||||||
},
|
},
|
||||||
|
@ -1037,16 +958,6 @@
|
||||||
],
|
],
|
||||||
"description": "Looks up which function or method a line of code belongs to",
|
"description": "Looks up which function or method a line of code belongs to",
|
||||||
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/sebastianbergmann",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-11-30T08:15:22+00:00"
|
"time": "2020-11-30T08:15:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1111,10 +1022,6 @@
|
||||||
"compare",
|
"compare",
|
||||||
"equality"
|
"equality"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/comparator/tree/1.2"
|
|
||||||
},
|
|
||||||
"time": "2017-01-29T09:50:25+00:00"
|
"time": "2017-01-29T09:50:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1167,10 +1074,6 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"diff"
|
"diff"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/diff/tree/1.4"
|
|
||||||
},
|
|
||||||
"time": "2017-05-22T07:24:03+00:00"
|
"time": "2017-05-22T07:24:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1221,10 +1124,6 @@
|
||||||
"environment",
|
"environment",
|
||||||
"hhvm"
|
"hhvm"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/environment/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-11-26T07:53:53+00:00"
|
"time": "2016-11-26T07:53:53+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1292,10 +1191,6 @@
|
||||||
"export",
|
"export",
|
||||||
"exporter"
|
"exporter"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/exporter/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-11-19T08:54:04+00:00"
|
"time": "2016-11-19T08:54:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1347,10 +1242,6 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"global state"
|
"global state"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/global-state/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/global-state/tree/1.1.1"
|
|
||||||
},
|
|
||||||
"time": "2015-10-12T03:26:01+00:00"
|
"time": "2015-10-12T03:26:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1397,10 +1288,6 @@
|
||||||
],
|
],
|
||||||
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
||||||
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2017-02-18T15:18:39+00:00"
|
"time": "2017-02-18T15:18:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1454,10 +1341,6 @@
|
||||||
],
|
],
|
||||||
"description": "Provides functionality to recursively process PHP variables",
|
"description": "Provides functionality to recursively process PHP variables",
|
||||||
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-11-19T07:33:16+00:00"
|
"time": "2016-11-19T07:33:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1500,10 +1383,6 @@
|
||||||
],
|
],
|
||||||
"description": "Provides a list of PHP built-in functions that operate on resources",
|
"description": "Provides a list of PHP built-in functions that operate on resources",
|
||||||
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/resource-operations/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2015-07-28T20:34:47+00:00"
|
"time": "2015-07-28T20:34:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1547,28 +1426,27 @@
|
||||||
],
|
],
|
||||||
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
||||||
"homepage": "https://github.com/sebastianbergmann/version",
|
"homepage": "https://github.com/sebastianbergmann/version",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/version/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/version/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-10-03T07:35:21+00:00"
|
"time": "2016-10-03T07:35:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.19.0",
|
"version": "v1.26.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
|
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
||||||
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
|
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.3"
|
"php": ">=7.1"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"ext-ctype": "*"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-ctype": "For best performance"
|
"ext-ctype": "For best performance"
|
||||||
|
@ -1576,7 +1454,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.19-dev"
|
"dev-main": "1.26-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
|
@ -1613,48 +1491,31 @@
|
||||||
"polyfill",
|
"polyfill",
|
||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2022-05-24T11:49:31+00:00"
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-10-23T09:01:57+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
"version": "v3.4.47",
|
"version": "v4.4.45",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/yaml.git",
|
"url": "https://github.com/symfony/yaml.git",
|
||||||
"reference": "88289caa3c166321883f67fe5130188ebbb47094"
|
"reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094",
|
"url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d",
|
||||||
"reference": "88289caa3c166321883f67fe5130188ebbb47094",
|
"reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^5.5.9|>=7.0.8",
|
"php": ">=7.1.3",
|
||||||
"symfony/polyfill-ctype": "~1.8"
|
"symfony/polyfill-ctype": "~1.8"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/console": "<3.4"
|
"symfony/console": "<3.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/console": "~3.4|~4.0"
|
"symfony/console": "^3.4|^4.0|^5.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/console": "For validating YAML files using the lint command"
|
"symfony/console": "For validating YAML files using the lint command"
|
||||||
|
@ -1682,53 +1543,41 @@
|
||||||
"homepage": "https://symfony.com/contributors"
|
"homepage": "https://symfony.com/contributors"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Symfony Yaml Component",
|
"description": "Loads and dumps YAML files",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"time": "2022-08-02T15:47:23+00:00"
|
||||||
"source": "https://github.com/symfony/yaml/tree/v3.4.47"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-10-24T10:57:07+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
"version": "1.9.1",
|
"version": "1.10.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/webmozarts/assert.git",
|
"url": "https://github.com/webmozarts/assert.git",
|
||||||
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
|
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||||
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^5.3.3 || ^7.0 || ^8.0",
|
"php": "^7.2 || ^8.0",
|
||||||
"symfony/polyfill-ctype": "^1.8"
|
"symfony/polyfill-ctype": "^1.8"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"phpstan/phpstan": "<0.12.20",
|
"phpstan/phpstan": "<0.12.20",
|
||||||
"vimeo/psalm": "<3.9.1"
|
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
|
"phpunit/phpunit": "^8.5.13"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.10-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Webmozart\\Assert\\": "src/"
|
"Webmozart\\Assert\\": "src/"
|
||||||
|
@ -1750,11 +1599,7 @@
|
||||||
"check",
|
"check",
|
||||||
"validate"
|
"validate"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2021-03-09T10:59:23+00:00"
|
||||||
"issues": "https://github.com/webmozarts/assert/issues",
|
|
||||||
"source": "https://github.com/webmozarts/assert/tree/1.9.1"
|
|
||||||
},
|
|
||||||
"time": "2020-07-08T17:02:28+00:00"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -1765,6 +1610,5 @@
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "^5.6.0 || ^7.0 || ^8.0"
|
"php": "^5.6.0 || ^7.0 || ^8.0"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": []
|
||||||
"plugin-api-version": "2.3.0"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,14 +10,14 @@ global.fs = require('fs');
|
||||||
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
||||||
|
|
||||||
// application libraries to test
|
// application libraries to test
|
||||||
global.$ = global.jQuery = require('./jquery-3.6.0');
|
global.$ = global.jQuery = require('./jquery-3.6.1');
|
||||||
global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
|
global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
|
||||||
global.zlib = require('./zlib-1.2.13').zlib;
|
global.zlib = require('./zlib-1.2.13').zlib;
|
||||||
require('./prettify');
|
require('./prettify');
|
||||||
global.prettyPrint = window.PR.prettyPrint;
|
global.prettyPrint = window.PR.prettyPrint;
|
||||||
global.prettyPrintOne = window.PR.prettyPrintOne;
|
global.prettyPrintOne = window.PR.prettyPrintOne;
|
||||||
global.showdown = require('./showdown-2.0.3');
|
global.showdown = require('./showdown-2.1.0');
|
||||||
global.DOMPurify = require('./purify-2.3.6');
|
global.DOMPurify = require('./purify-2.4.6');
|
||||||
global.baseX = require('./base-x-4.0.0').baseX;
|
global.baseX = require('./base-x-4.0.0').baseX;
|
||||||
global.Legacy = require('./legacy').Legacy;
|
global.Legacy = require('./legacy').Legacy;
|
||||||
require('./bootstrap-3.4.1');
|
require('./bootstrap-3.4.1');
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -289,11 +289,11 @@ class Database extends AbstractData
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$row = $this->_select(
|
$row = $this->_select(
|
||||||
'SELECT * FROM "' . $this->_sanitizeIdentifier('paste') .
|
'SELECT "dataid" FROM "' . $this->_sanitizeIdentifier('paste') .
|
||||||
'" WHERE "dataid" = ?', array($pasteid), true
|
'" WHERE "dataid" = ?', array($pasteid), true
|
||||||
);
|
);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$row = false;
|
return false;
|
||||||
}
|
}
|
||||||
return (bool) $row;
|
return (bool) $row;
|
||||||
}
|
}
|
||||||
|
@ -486,19 +486,13 @@ class Database extends AbstractData
|
||||||
*/
|
*/
|
||||||
protected function _getExpiredPastes($batchsize)
|
protected function _getExpiredPastes($batchsize)
|
||||||
{
|
{
|
||||||
$pastes = array();
|
$statement = $this->_db->prepare(
|
||||||
$rows = $this->_select(
|
|
||||||
'SELECT "dataid" FROM "' . $this->_sanitizeIdentifier('paste') .
|
'SELECT "dataid" FROM "' . $this->_sanitizeIdentifier('paste') .
|
||||||
'" WHERE "expiredate" < ? AND "expiredate" != ? ' .
|
'" WHERE "expiredate" < ? AND "expiredate" != ? ' .
|
||||||
($this->_type === 'oci' ? 'FETCH NEXT ? ROWS ONLY' : 'LIMIT ?'),
|
($this->_type === 'oci' ? 'FETCH NEXT ? ROWS ONLY' : 'LIMIT ?')
|
||||||
array(time(), 0, $batchsize)
|
|
||||||
);
|
);
|
||||||
if (is_array($rows) && count($rows)) {
|
$statement->execute(array(time(), 0, $batchsize));
|
||||||
foreach ($rows as $row) {
|
return $statement->fetchAll(PDO::FETCH_COLUMN, 0);
|
||||||
$pastes[] = $row['dataid'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $pastes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -506,10 +500,9 @@ class Database extends AbstractData
|
||||||
*/
|
*/
|
||||||
public function getAllPastes()
|
public function getAllPastes()
|
||||||
{
|
{
|
||||||
$pastes = $this->_db->_query(
|
return $this->_db->query(
|
||||||
'SELECT "dataid" FROM "' . $this->_sanitizeIdentifier('paste') . '"'
|
'SELECT "dataid" FROM "' . $this->_sanitizeIdentifier('paste') . '"'
|
||||||
)->fetchAll(PDO::FETCH_COLUMN, 0);
|
)->fetchAll(PDO::FETCH_COLUMN, 0);
|
||||||
return $pastes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -22,6 +22,22 @@ use PrivateBin\Json;
|
||||||
*/
|
*/
|
||||||
class Filesystem extends AbstractData
|
class Filesystem extends AbstractData
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* glob() pattern of the two folder levels and the paste files under the
|
||||||
|
* configured path. Needs to return both files with and without .php suffix,
|
||||||
|
* so they can be hardened by _prependRename(), which is hooked into exists().
|
||||||
|
*
|
||||||
|
* > Note that wildcard patterns are not regular expressions, although they
|
||||||
|
* > are a bit similar.
|
||||||
|
*
|
||||||
|
* @link https://man7.org/linux/man-pages/man7/glob.7.html
|
||||||
|
* @const string
|
||||||
|
*/
|
||||||
|
const PASTE_FILE_PATTERN = DIRECTORY_SEPARATOR . '[a-f0-9][a-f0-9]' .
|
||||||
|
DIRECTORY_SEPARATOR . '[a-f0-9][a-f0-9]' . DIRECTORY_SEPARATOR .
|
||||||
|
'[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]' .
|
||||||
|
'[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]*';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* first line in paste or comment files, to protect their contents from browsing exposed data directories
|
* first line in paste or comment files, to protect their contents from browsing exposed data directories
|
||||||
*
|
*
|
||||||
|
@ -340,63 +356,24 @@ class Filesystem extends AbstractData
|
||||||
*/
|
*/
|
||||||
protected function _getExpiredPastes($batchsize)
|
protected function _getExpiredPastes($batchsize)
|
||||||
{
|
{
|
||||||
$pastes = array();
|
$pastes = array();
|
||||||
$firstLevel = array_filter(
|
$count = 0;
|
||||||
scandir($this->_path),
|
$time = time();
|
||||||
'PrivateBin\Data\Filesystem::_isFirstLevelDir'
|
foreach ($this->_getPasteIterator() as $file) {
|
||||||
);
|
if ($file->isDir()) {
|
||||||
if (count($firstLevel) > 0) {
|
continue;
|
||||||
// try at most 10 times the $batchsize pastes before giving up
|
}
|
||||||
for ($i = 0, $max = $batchsize * 10; $i < $max; ++$i) {
|
$pasteid = $file->getBasename('.php');
|
||||||
$firstKey = array_rand($firstLevel);
|
if ($this->exists($pasteid)) {
|
||||||
$secondLevel = array_filter(
|
$data = $this->read($pasteid);
|
||||||
scandir($this->_path . DIRECTORY_SEPARATOR . $firstLevel[$firstKey]),
|
if (
|
||||||
'PrivateBin\Data\Filesystem::_isSecondLevelDir'
|
array_key_exists('expire_date', $data['meta']) &&
|
||||||
);
|
$data['meta']['expire_date'] < $time
|
||||||
|
) {
|
||||||
// skip this folder in the next checks if it is empty
|
$pastes[] = $pasteid;
|
||||||
if (count($secondLevel) == 0) {
|
++$count;
|
||||||
unset($firstLevel[$firstKey]);
|
if ($count >= $batchsize) {
|
||||||
continue;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
$secondKey = array_rand($secondLevel);
|
|
||||||
$path = $this->_path . DIRECTORY_SEPARATOR .
|
|
||||||
$firstLevel[$firstKey] . DIRECTORY_SEPARATOR .
|
|
||||||
$secondLevel[$secondKey];
|
|
||||||
if (!is_dir($path)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$thirdLevel = array_filter(
|
|
||||||
array_map(
|
|
||||||
function ($filename) {
|
|
||||||
return strlen($filename) >= 20 ?
|
|
||||||
substr($filename, 0, -4) :
|
|
||||||
$filename;
|
|
||||||
},
|
|
||||||
scandir($path)
|
|
||||||
),
|
|
||||||
'PrivateBin\\Model\\Paste::isValidId'
|
|
||||||
);
|
|
||||||
if (count($thirdLevel) == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$thirdKey = array_rand($thirdLevel);
|
|
||||||
$pasteid = $thirdLevel[$thirdKey];
|
|
||||||
if (in_array($pasteid, $pastes)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->exists($pasteid)) {
|
|
||||||
$data = $this->read($pasteid);
|
|
||||||
if (
|
|
||||||
array_key_exists('expire_date', $data['meta']) &&
|
|
||||||
$data['meta']['expire_date'] < time()
|
|
||||||
) {
|
|
||||||
$pastes[] = $pasteid;
|
|
||||||
if (count($pastes) >= $batchsize) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -409,38 +386,12 @@ class Filesystem extends AbstractData
|
||||||
*/
|
*/
|
||||||
public function getAllPastes()
|
public function getAllPastes()
|
||||||
{
|
{
|
||||||
$pastes = array();
|
$pastes = array();
|
||||||
$subdirs = scandir($this->_path);
|
foreach ($this->_getPasteIterator() as $file) {
|
||||||
if ($subdirs === false) {
|
if ($file->isFile()) {
|
||||||
dieerr('Unable to list directory ' . $this->_path);
|
$pastes[] = $file->getBasename('.php');
|
||||||
}
|
|
||||||
$subdirs = preg_grep('/^[^.].$/', $subdirs);
|
|
||||||
|
|
||||||
foreach ($subdirs as $subdir) {
|
|
||||||
$subpath = $this->_path . DIRECTORY_SEPARATOR . $subdir;
|
|
||||||
|
|
||||||
$subsubdirs = scandir($subpath);
|
|
||||||
if ($subsubdirs === false) {
|
|
||||||
dieerr('Unable to list directory ' . $subpath);
|
|
||||||
}
|
|
||||||
$subsubdirs = preg_grep('/^[^.].$/', $subsubdirs);
|
|
||||||
foreach ($subsubdirs as $subsubdir) {
|
|
||||||
$subsubpath = $subpath . DIRECTORY_SEPARATOR . $subsubdir;
|
|
||||||
|
|
||||||
$files = scandir($subsubpath);
|
|
||||||
if ($files === false) {
|
|
||||||
dieerr('Unable to list directory ' . $subsubpath);
|
|
||||||
}
|
|
||||||
$files = preg_grep('/\.php$/', $files);
|
|
||||||
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if (substr($file, 0, 4) === $subdir . $subsubdir) {
|
|
||||||
$pastes[] = substr($file, 0, strlen($file) - 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $pastes;
|
return $pastes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,28 +432,17 @@ class Filesystem extends AbstractData
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that the given element is a valid first level directory.
|
* Get an iterator matching paste files.
|
||||||
|
*
|
||||||
|
* Note that creating the iterator issues the glob() call, so we can't pre-
|
||||||
|
* generate this object before files that should get matched exist.
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @param string $element
|
* @return \GlobIterator
|
||||||
* @return bool
|
|
||||||
*/
|
*/
|
||||||
private function _isFirstLevelDir($element)
|
private function _getPasteIterator()
|
||||||
{
|
{
|
||||||
return $this->_isSecondLevelDir($element) &&
|
return new \GlobIterator($this->_path . self::PASTE_FILE_PATTERN);
|
||||||
is_dir($this->_path . DIRECTORY_SEPARATOR . $element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check that the given element is a valid second level directory.
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @param string $element
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
private function _isSecondLevelDir($element)
|
|
||||||
{
|
|
||||||
return (bool) preg_match('/^[a-f0-9]{2}$/', $element);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -67,7 +67,9 @@ class GoogleCloudStorage extends AbstractData
|
||||||
$this->_client = class_exists('StorageClientStub', false) ?
|
$this->_client = class_exists('StorageClientStub', false) ?
|
||||||
new \StorageClientStub(array()) :
|
new \StorageClientStub(array()) :
|
||||||
new StorageClient(array('suppressKeyFileNotice' => true));
|
new StorageClient(array('suppressKeyFileNotice' => true));
|
||||||
$this->_bucket = $this->_client->bucket($bucket);
|
if (isset($bucket)) {
|
||||||
|
$this->_bucket = $this->_client->bucket($bucket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* @link https://github.com/PrivateBin/PrivateBin
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
* @license http://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
* @version 1.4.0
|
* @version 1.4.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* Visual Hash implementation in php4+GD,
|
* Visual Hash implementation in php4+GD,
|
||||||
* stripped down and modified version for PrivateBin
|
* stripped down and modified version for PrivateBin
|
||||||
*
|
*
|
||||||
* @link http://sebsauvage.net/wiki/doku.php?id=php:vizhash_gd
|
* @link https://sebsauvage.net/wiki/doku.php?id=php:vizhash_gd
|
||||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
* @version 0.0.5 beta PrivateBin 1.4.0
|
* @version 0.0.5 beta PrivateBin 1.4.0
|
||||||
|
@ -166,7 +166,7 @@ class Vizhash16x16
|
||||||
* Gradient function
|
* Gradient function
|
||||||
*
|
*
|
||||||
* taken from:
|
* taken from:
|
||||||
* http://www.supportduweb.com/scripts_tutoriaux-code-source-41-gd-faire-un-degrade-en-php-gd-fonction-degrade-imagerie.html
|
* @link https://www.supportduweb.com/scripts_tutoriaux-code-source-41-gd-faire-un-degrade-en-php-gd-fonction-degrade-imagerie.html
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @param resource $img
|
* @param resource $img
|
||||||
|
|
|
@ -42,7 +42,7 @@ if ($SYNTAXHIGHLIGHTING) :
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<noscript><link type="text/css" rel="stylesheet" href="css/noscript.css" /></noscript>
|
<noscript><link type="text/css" rel="stylesheet" href="css/noscript.css" /></noscript>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/jquery-3.6.0.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/jquery-3.6.1.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous"></script>
|
||||||
<?php
|
<?php
|
||||||
if ($QRCODE) :
|
if ($QRCODE) :
|
||||||
?>
|
?>
|
||||||
|
@ -67,11 +67,11 @@ if ($SYNTAXHIGHLIGHTING) :
|
||||||
endif;
|
endif;
|
||||||
if ($MARKDOWN) :
|
if ($MARKDOWN) :
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/showdown-2.0.3.js" integrity="sha512-vcfjvW3UKHD/4vlQx804cqWK88jFmjsWRsZ8/u5YEcyHB1IituxrXDU7TvdqsFVsMnxpE/UIEo25/SYW+puWHw==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/showdown-2.1.0.js" integrity="sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==" crossorigin="anonymous"></script>
|
||||||
<?php
|
<?php
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/purify-2.3.6.js" integrity="sha512-N1GGPjbqLbwK821ZN7C925WuTwU4aDxz2CEEOXQ6/s6m6MBwVj8fh5fugiE2hzsm0xud3q7jpjZQ4ILnpMREYQ==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/purify-2.4.6.js" integrity="sha512-+jcx+EqNbaFT4OHS86zGwU1SNAAZ7hG2pJlwMpXoe9AvTp37BrXMQ29g2GhdyQHTvYWaNlTQIkWXYM0Lvt8GiQ==" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-0he/s7UnjLf2pxLH+EIGImaUBhVzpngrL5PId/QB2FcstucrPUPOhQpqJcGvtmVPyuXckiktEwwrz4Sn4Mi3Tw==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-0he/s7UnjLf2pxLH+EIGImaUBhVzpngrL5PId/QB2FcstucrPUPOhQpqJcGvtmVPyuXckiktEwwrz4Sn4Mi3Tw==" crossorigin="anonymous"></script>
|
||||||
<!-- icon -->
|
<!-- icon -->
|
||||||
|
|
|
@ -21,7 +21,7 @@ if ($SYNTAXHIGHLIGHTING):
|
||||||
endif;
|
endif;
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/jquery-3.6.0.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/jquery-3.6.1.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous"></script>
|
||||||
<?php
|
<?php
|
||||||
if ($QRCODE):
|
if ($QRCODE):
|
||||||
?>
|
?>
|
||||||
|
@ -45,11 +45,11 @@ if ($SYNTAXHIGHLIGHTING):
|
||||||
endif;
|
endif;
|
||||||
if ($MARKDOWN):
|
if ($MARKDOWN):
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/showdown-2.0.3.js" integrity="sha512-vcfjvW3UKHD/4vlQx804cqWK88jFmjsWRsZ8/u5YEcyHB1IituxrXDU7TvdqsFVsMnxpE/UIEo25/SYW+puWHw==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/showdown-2.1.0.js" integrity="sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==" crossorigin="anonymous"></script>
|
||||||
<?php
|
<?php
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/purify-2.3.6.js" integrity="sha512-N1GGPjbqLbwK821ZN7C925WuTwU4aDxz2CEEOXQ6/s6m6MBwVj8fh5fugiE2hzsm0xud3q7jpjZQ4ILnpMREYQ==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/purify-2.4.6.js" integrity="sha512-+jcx+EqNbaFT4OHS86zGwU1SNAAZ7hG2pJlwMpXoe9AvTp37BrXMQ29g2GhdyQHTvYWaNlTQIkWXYM0Lvt8GiQ==" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-0he/s7UnjLf2pxLH+EIGImaUBhVzpngrL5PId/QB2FcstucrPUPOhQpqJcGvtmVPyuXckiktEwwrz4Sn4Mi3Tw==" crossorigin="anonymous"></script>
|
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-0he/s7UnjLf2pxLH+EIGImaUBhVzpngrL5PId/QB2FcstucrPUPOhQpqJcGvtmVPyuXckiktEwwrz4Sn4Mi3Tw==" crossorigin="anonymous"></script>
|
||||||
<!-- icon -->
|
<!-- icon -->
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
use PrivateBin\Data\Database;
|
||||||
|
use PrivateBin\Data\Filesystem;
|
||||||
|
|
||||||
|
class MigrateTest extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
protected $_model_1;
|
||||||
|
|
||||||
|
protected $_model_2;
|
||||||
|
|
||||||
|
protected $_path;
|
||||||
|
|
||||||
|
protected $_path_instance_1;
|
||||||
|
|
||||||
|
protected $_path_instance_2;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
/* Setup Routine */
|
||||||
|
$this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
|
||||||
|
$this->_path_instance_1 = $this->_path . DIRECTORY_SEPARATOR . 'instance_1';
|
||||||
|
$this->_path_instance_2 = $this->_path . DIRECTORY_SEPARATOR . 'instance_2';
|
||||||
|
if (!is_dir($this->_path)) {
|
||||||
|
mkdir($this->_path);
|
||||||
|
}
|
||||||
|
mkdir($this->_path_instance_1);
|
||||||
|
mkdir($this->_path_instance_1 . DIRECTORY_SEPARATOR . 'cfg');
|
||||||
|
mkdir($this->_path_instance_2);
|
||||||
|
mkdir($this->_path_instance_2 . DIRECTORY_SEPARATOR . 'cfg');
|
||||||
|
$options = parse_ini_file(CONF_SAMPLE, true);
|
||||||
|
$options['purge']['limit'] = 0;
|
||||||
|
$options['model_options']['dir'] = $this->_path_instance_1 . DIRECTORY_SEPARATOR . 'data';
|
||||||
|
$this->_model_1 = new Filesystem($options['model_options']);
|
||||||
|
Helper::createIniFile($this->_path_instance_1 . DIRECTORY_SEPARATOR . 'cfg' . DIRECTORY_SEPARATOR . 'conf.php', $options);
|
||||||
|
|
||||||
|
$options['model'] = array(
|
||||||
|
'class' => 'Database',
|
||||||
|
);
|
||||||
|
$options['model_options'] = array(
|
||||||
|
'dsn' => 'sqlite:' . $this->_path_instance_2 . DIRECTORY_SEPARATOR . 'test.sq3',
|
||||||
|
'usr' => null,
|
||||||
|
'pwd' => null,
|
||||||
|
'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
|
||||||
|
);
|
||||||
|
$this->_model_2 = new Database($options['model_options']);
|
||||||
|
Helper::createIniFile($this->_path_instance_2 . DIRECTORY_SEPARATOR . 'cfg' . DIRECTORY_SEPARATOR . 'conf.php', $options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tearDown()
|
||||||
|
{
|
||||||
|
/* Tear Down Routine */
|
||||||
|
Helper::rmDir($this->_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testMigrate()
|
||||||
|
{
|
||||||
|
if (version_compare(PHP_VERSION, '7.1.0') < 0) {
|
||||||
|
return; // skip test on unsupported PHP versions
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_model_1->delete(Helper::getPasteId());
|
||||||
|
$this->_model_2->delete(Helper::getPasteId());
|
||||||
|
|
||||||
|
// storing paste & comment
|
||||||
|
$this->_model_1->create(Helper::getPasteId(), Helper::getPaste());
|
||||||
|
$this->_model_1->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), Helper::getComment());
|
||||||
|
|
||||||
|
// migrate files to database
|
||||||
|
$output = null;
|
||||||
|
$exit_code = 255;
|
||||||
|
exec('php ' . PATH . 'bin' . DIRECTORY_SEPARATOR . 'migrate --delete-after ' . $this->_path_instance_1 . DIRECTORY_SEPARATOR . 'cfg ' . $this->_path_instance_2 . DIRECTORY_SEPARATOR . 'cfg', $output, $exit_code);
|
||||||
|
$this->assertEquals(0, $exit_code, 'migrate script exits 0');
|
||||||
|
$this->assertFalse($this->_model_1->exists(Helper::getPasteId()), 'paste removed after migrating it');
|
||||||
|
$this->assertFalse($this->_model_1->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment removed after migrating it');
|
||||||
|
$this->assertTrue($this->_model_2->exists(Helper::getPasteId()), 'paste migrated');
|
||||||
|
$this->assertTrue($this->_model_2->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment migrated');
|
||||||
|
|
||||||
|
// migrate back to files
|
||||||
|
$exit_code = 255;
|
||||||
|
exec('php ' . PATH . 'bin' . DIRECTORY_SEPARATOR . 'migrate ' . $this->_path_instance_2 . DIRECTORY_SEPARATOR . 'cfg ' . $this->_path_instance_1 . DIRECTORY_SEPARATOR . 'cfg', $output, $exit_code);
|
||||||
|
$this->assertEquals(0, $exit_code, 'migrate script exits 0');
|
||||||
|
$this->assertTrue($this->_model_1->exists(Helper::getPasteId()), 'paste migrated back');
|
||||||
|
$this->assertTrue($this->_model_1->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment migrated back');
|
||||||
|
}
|
||||||
|
}
|
|
@ -259,7 +259,10 @@ class ModelTest extends PHPUnit_Framework_TestCase
|
||||||
$paste = $model->getPaste();
|
$paste = $model->getPaste();
|
||||||
$paste->setData($pasteData);
|
$paste->setData($pasteData);
|
||||||
$paste->store();
|
$paste->store();
|
||||||
$paste->exists();
|
$this->assertTrue($paste->exists(), 'paste exists before creating comment');
|
||||||
|
|
||||||
|
$comment = $paste->getComment(Helper::getPasteId());
|
||||||
|
$comment->setData($commentData);
|
||||||
|
|
||||||
$db = new PDO(
|
$db = new PDO(
|
||||||
$options['model_options']['dsn'],
|
$options['model_options']['dsn'],
|
||||||
|
@ -271,8 +274,9 @@ class ModelTest extends PHPUnit_Framework_TestCase
|
||||||
$statement->execute();
|
$statement->execute();
|
||||||
$statement->closeCursor();
|
$statement->closeCursor();
|
||||||
|
|
||||||
$comment = $paste->getComment(Helper::getPasteId());
|
if (version_compare(PHP_VERSION, '7.2.0') < 0) {
|
||||||
$comment->setData($commentData);
|
throw new Exception('For some reason, this test stopped working in PHP < 7.2', 70);
|
||||||
|
}
|
||||||
$comment->store();
|
$comment->store();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
<phpunit bootstrap="Bootstrap.php" colors="true">
|
<phpunit bootstrap="Bootstrap.php" colors="true">
|
||||||
<testsuite name="PrivateBin Test Suite">
|
<testsuite name="PrivateBin Test Suite">
|
||||||
<directory suffix=".php">./</directory>
|
<directory suffix=".php">./</directory>
|
||||||
<exclude>ConfigurationTestGenerator.php</exclude>
|
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<filter>
|
<filter>
|
||||||
<whitelist>
|
<whitelist>
|
||||||
|
|
|
@ -37,130 +37,57 @@ namespace Composer\Autoload;
|
||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
* @see https://www.php-fig.org/psr/psr-0/
|
* @see http://www.php-fig.org/psr/psr-0/
|
||||||
* @see https://www.php-fig.org/psr/psr-4/
|
* @see http://www.php-fig.org/psr/psr-4/
|
||||||
*/
|
*/
|
||||||
class ClassLoader
|
class ClassLoader
|
||||||
{
|
{
|
||||||
/** @var ?string */
|
|
||||||
private $vendorDir;
|
|
||||||
|
|
||||||
// PSR-4
|
// PSR-4
|
||||||
/**
|
|
||||||
* @var array[]
|
|
||||||
* @psalm-var array<string, array<string, int>>
|
|
||||||
*/
|
|
||||||
private $prefixLengthsPsr4 = array();
|
private $prefixLengthsPsr4 = array();
|
||||||
/**
|
|
||||||
* @var array[]
|
|
||||||
* @psalm-var array<string, array<int, string>>
|
|
||||||
*/
|
|
||||||
private $prefixDirsPsr4 = array();
|
private $prefixDirsPsr4 = array();
|
||||||
/**
|
|
||||||
* @var array[]
|
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
|
||||||
private $fallbackDirsPsr4 = array();
|
private $fallbackDirsPsr4 = array();
|
||||||
|
|
||||||
// PSR-0
|
// PSR-0
|
||||||
/**
|
|
||||||
* @var array[]
|
|
||||||
* @psalm-var array<string, array<string, string[]>>
|
|
||||||
*/
|
|
||||||
private $prefixesPsr0 = array();
|
private $prefixesPsr0 = array();
|
||||||
/**
|
|
||||||
* @var array[]
|
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
|
||||||
private $fallbackDirsPsr0 = array();
|
private $fallbackDirsPsr0 = array();
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $useIncludePath = false;
|
private $useIncludePath = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string[]
|
|
||||||
* @psalm-var array<string, string>
|
|
||||||
*/
|
|
||||||
private $classMap = array();
|
private $classMap = array();
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $classMapAuthoritative = false;
|
private $classMapAuthoritative = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var bool[]
|
|
||||||
* @psalm-var array<string, bool>
|
|
||||||
*/
|
|
||||||
private $missingClasses = array();
|
private $missingClasses = array();
|
||||||
|
|
||||||
/** @var ?string */
|
|
||||||
private $apcuPrefix;
|
private $apcuPrefix;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var self[]
|
|
||||||
*/
|
|
||||||
private static $registeredLoaders = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ?string $vendorDir
|
|
||||||
*/
|
|
||||||
public function __construct($vendorDir = null)
|
|
||||||
{
|
|
||||||
$this->vendorDir = $vendorDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string[]
|
|
||||||
*/
|
|
||||||
public function getPrefixes()
|
public function getPrefixes()
|
||||||
{
|
{
|
||||||
if (!empty($this->prefixesPsr0)) {
|
if (!empty($this->prefixesPsr0)) {
|
||||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array[]
|
|
||||||
* @psalm-return array<string, array<int, string>>
|
|
||||||
*/
|
|
||||||
public function getPrefixesPsr4()
|
public function getPrefixesPsr4()
|
||||||
{
|
{
|
||||||
return $this->prefixDirsPsr4;
|
return $this->prefixDirsPsr4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array[]
|
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
|
||||||
public function getFallbackDirs()
|
public function getFallbackDirs()
|
||||||
{
|
{
|
||||||
return $this->fallbackDirsPsr0;
|
return $this->fallbackDirsPsr0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array[]
|
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
|
||||||
public function getFallbackDirsPsr4()
|
public function getFallbackDirsPsr4()
|
||||||
{
|
{
|
||||||
return $this->fallbackDirsPsr4;
|
return $this->fallbackDirsPsr4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string[] Array of classname => path
|
|
||||||
* @psalm-return array<string, string>
|
|
||||||
*/
|
|
||||||
public function getClassMap()
|
public function getClassMap()
|
||||||
{
|
{
|
||||||
return $this->classMap;
|
return $this->classMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $classMap Class to filename map
|
* @param array $classMap Class to filename map
|
||||||
* @psalm-param array<string, string> $classMap
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function addClassMap(array $classMap)
|
public function addClassMap(array $classMap)
|
||||||
{
|
{
|
||||||
|
@ -175,11 +102,9 @@ class ClassLoader
|
||||||
* Registers a set of PSR-0 directories for a given prefix, either
|
* Registers a set of PSR-0 directories for a given prefix, either
|
||||||
* appending or prepending to the ones previously set for this prefix.
|
* appending or prepending to the ones previously set for this prefix.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix
|
* @param string $prefix The prefix
|
||||||
* @param string[]|string $paths The PSR-0 root directories
|
* @param array|string $paths The PSR-0 root directories
|
||||||
* @param bool $prepend Whether to prepend the directories
|
* @param bool $prepend Whether to prepend the directories
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function add($prefix, $paths, $prepend = false)
|
public function add($prefix, $paths, $prepend = false)
|
||||||
{
|
{
|
||||||
|
@ -222,13 +147,11 @@ class ClassLoader
|
||||||
* Registers a set of PSR-4 directories for a given namespace, either
|
* Registers a set of PSR-4 directories for a given namespace, either
|
||||||
* appending or prepending to the ones previously set for this namespace.
|
* appending or prepending to the ones previously set for this namespace.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
* @param string[]|string $paths The PSR-4 base directories
|
* @param array|string $paths The PSR-4 base directories
|
||||||
* @param bool $prepend Whether to prepend the directories
|
* @param bool $prepend Whether to prepend the directories
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function addPsr4($prefix, $paths, $prepend = false)
|
public function addPsr4($prefix, $paths, $prepend = false)
|
||||||
{
|
{
|
||||||
|
@ -272,10 +195,8 @@ class ClassLoader
|
||||||
* Registers a set of PSR-0 directories for a given prefix,
|
* Registers a set of PSR-0 directories for a given prefix,
|
||||||
* replacing any others previously set for this prefix.
|
* replacing any others previously set for this prefix.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix
|
* @param string $prefix The prefix
|
||||||
* @param string[]|string $paths The PSR-0 base directories
|
* @param array|string $paths The PSR-0 base directories
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function set($prefix, $paths)
|
public function set($prefix, $paths)
|
||||||
{
|
{
|
||||||
|
@ -290,12 +211,10 @@ class ClassLoader
|
||||||
* Registers a set of PSR-4 directories for a given namespace,
|
* Registers a set of PSR-4 directories for a given namespace,
|
||||||
* replacing any others previously set for this namespace.
|
* replacing any others previously set for this namespace.
|
||||||
*
|
*
|
||||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
* @param string[]|string $paths The PSR-4 base directories
|
* @param array|string $paths The PSR-4 base directories
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setPsr4($prefix, $paths)
|
public function setPsr4($prefix, $paths)
|
||||||
{
|
{
|
||||||
|
@ -315,8 +234,6 @@ class ClassLoader
|
||||||
* Turns on searching the include path for class files.
|
* Turns on searching the include path for class files.
|
||||||
*
|
*
|
||||||
* @param bool $useIncludePath
|
* @param bool $useIncludePath
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setUseIncludePath($useIncludePath)
|
public function setUseIncludePath($useIncludePath)
|
||||||
{
|
{
|
||||||
|
@ -339,8 +256,6 @@ class ClassLoader
|
||||||
* that have not been registered with the class map.
|
* that have not been registered with the class map.
|
||||||
*
|
*
|
||||||
* @param bool $classMapAuthoritative
|
* @param bool $classMapAuthoritative
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||||
{
|
{
|
||||||
|
@ -361,8 +276,6 @@ class ClassLoader
|
||||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||||
*
|
*
|
||||||
* @param string|null $apcuPrefix
|
* @param string|null $apcuPrefix
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setApcuPrefix($apcuPrefix)
|
public function setApcuPrefix($apcuPrefix)
|
||||||
{
|
{
|
||||||
|
@ -383,44 +296,25 @@ class ClassLoader
|
||||||
* Registers this instance as an autoloader.
|
* Registers this instance as an autoloader.
|
||||||
*
|
*
|
||||||
* @param bool $prepend Whether to prepend the autoloader or not
|
* @param bool $prepend Whether to prepend the autoloader or not
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function register($prepend = false)
|
public function register($prepend = false)
|
||||||
{
|
{
|
||||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||||
|
|
||||||
if (null === $this->vendorDir) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($prepend) {
|
|
||||||
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
|
||||||
} else {
|
|
||||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
|
||||||
self::$registeredLoaders[$this->vendorDir] = $this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregisters this instance as an autoloader.
|
* Unregisters this instance as an autoloader.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function unregister()
|
public function unregister()
|
||||||
{
|
{
|
||||||
spl_autoload_unregister(array($this, 'loadClass'));
|
spl_autoload_unregister(array($this, 'loadClass'));
|
||||||
|
|
||||||
if (null !== $this->vendorDir) {
|
|
||||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the given class or interface.
|
* Loads the given class or interface.
|
||||||
*
|
*
|
||||||
* @param string $class The name of the class
|
* @param string $class The name of the class
|
||||||
* @return true|null True if loaded, null otherwise
|
* @return bool|null True if loaded, null otherwise
|
||||||
*/
|
*/
|
||||||
public function loadClass($class)
|
public function loadClass($class)
|
||||||
{
|
{
|
||||||
|
@ -429,8 +323,6 @@ class ClassLoader
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -475,21 +367,6 @@ class ClassLoader
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
|
||||||
*
|
|
||||||
* @return self[]
|
|
||||||
*/
|
|
||||||
public static function getRegisteredLoaders()
|
|
||||||
{
|
|
||||||
return self::$registeredLoaders;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $class
|
|
||||||
* @param string $ext
|
|
||||||
* @return string|false
|
|
||||||
*/
|
|
||||||
private function findFileWithExtension($class, $ext)
|
private function findFileWithExtension($class, $ext)
|
||||||
{
|
{
|
||||||
// PSR-4 lookup
|
// PSR-4 lookup
|
||||||
|
@ -561,10 +438,6 @@ class ClassLoader
|
||||||
* Scope isolated include.
|
* Scope isolated include.
|
||||||
*
|
*
|
||||||
* Prevents access to $this/self from included files.
|
* Prevents access to $this/self from included files.
|
||||||
*
|
|
||||||
* @param string $file
|
|
||||||
* @return void
|
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
function includeFile($file)
|
function includeFile($file)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
|
||||||
'IPLib\\Address\\AddressInterface' => $vendorDir . '/mlocati/ip-lib/src/Address/AddressInterface.php',
|
'IPLib\\Address\\AddressInterface' => $vendorDir . '/mlocati/ip-lib/src/Address/AddressInterface.php',
|
||||||
'IPLib\\Address\\AssignedRange' => $vendorDir . '/mlocati/ip-lib/src/Address/AssignedRange.php',
|
'IPLib\\Address\\AssignedRange' => $vendorDir . '/mlocati/ip-lib/src/Address/AssignedRange.php',
|
||||||
'IPLib\\Address\\IPv4' => $vendorDir . '/mlocati/ip-lib/src/Address/IPv4.php',
|
'IPLib\\Address\\IPv4' => $vendorDir . '/mlocati/ip-lib/src/Address/IPv4.php',
|
||||||
|
@ -53,6 +52,7 @@ return array(
|
||||||
'Jdenticon\\Rendering\\ColorTheme' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/ColorTheme.php',
|
'Jdenticon\\Rendering\\ColorTheme' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/ColorTheme.php',
|
||||||
'Jdenticon\\Rendering\\IconGenerator' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/IconGenerator.php',
|
'Jdenticon\\Rendering\\IconGenerator' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/IconGenerator.php',
|
||||||
'Jdenticon\\Rendering\\ImagickRenderer' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
'Jdenticon\\Rendering\\ImagickRenderer' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
||||||
|
'Jdenticon\\Rendering\\ImagickRendererLine' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
||||||
'Jdenticon\\Rendering\\InternalPngRenderer' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php',
|
'Jdenticon\\Rendering\\InternalPngRenderer' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php',
|
||||||
'Jdenticon\\Rendering\\Point' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/Point.php',
|
'Jdenticon\\Rendering\\Point' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/Point.php',
|
||||||
'Jdenticon\\Rendering\\Rectangle' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/Rectangle.php',
|
'Jdenticon\\Rendering\\Rectangle' => $vendorDir . '/jdenticon/jdenticon/src/Rendering/Rectangle.php',
|
||||||
|
|
|
@ -13,24 +13,19 @@ class ComposerAutoloaderInitDontChange
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return \Composer\Autoload\ClassLoader
|
|
||||||
*/
|
|
||||||
public static function getLoader()
|
public static function getLoader()
|
||||||
{
|
{
|
||||||
if (null !== self::$loader) {
|
if (null !== self::$loader) {
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
require __DIR__ . '/platform_check.php';
|
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitDontChange', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitDontChange', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitDontChange', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitDontChange', 'loadClassLoader'));
|
||||||
|
|
||||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
require __DIR__ . '/autoload_static.php';
|
require_once __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInitDontChange::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInitDontChange::getInitializer($loader));
|
||||||
} else {
|
} else {
|
||||||
|
@ -65,16 +60,11 @@ class ComposerAutoloaderInitDontChange
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $fileIdentifier
|
|
||||||
* @param string $file
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function composerRequireDontChange($fileIdentifier, $file)
|
function composerRequireDontChange($fileIdentifier, $file)
|
||||||
{
|
{
|
||||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
|
||||||
|
|
||||||
require $file;
|
require $file;
|
||||||
|
|
||||||
|
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,6 @@ class ComposerStaticInitDontChange
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $classMap = array (
|
public static $classMap = array (
|
||||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
|
||||||
'IPLib\\Address\\AddressInterface' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/AddressInterface.php',
|
'IPLib\\Address\\AddressInterface' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/AddressInterface.php',
|
||||||
'IPLib\\Address\\AssignedRange' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/AssignedRange.php',
|
'IPLib\\Address\\AssignedRange' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/AssignedRange.php',
|
||||||
'IPLib\\Address\\IPv4' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/IPv4.php',
|
'IPLib\\Address\\IPv4' => __DIR__ . '/..' . '/mlocati/ip-lib/src/Address/IPv4.php',
|
||||||
|
@ -93,6 +92,7 @@ class ComposerStaticInitDontChange
|
||||||
'Jdenticon\\Rendering\\ColorTheme' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/ColorTheme.php',
|
'Jdenticon\\Rendering\\ColorTheme' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/ColorTheme.php',
|
||||||
'Jdenticon\\Rendering\\IconGenerator' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/IconGenerator.php',
|
'Jdenticon\\Rendering\\IconGenerator' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/IconGenerator.php',
|
||||||
'Jdenticon\\Rendering\\ImagickRenderer' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
'Jdenticon\\Rendering\\ImagickRenderer' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
||||||
|
'Jdenticon\\Rendering\\ImagickRendererLine' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php',
|
||||||
'Jdenticon\\Rendering\\InternalPngRenderer' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php',
|
'Jdenticon\\Rendering\\InternalPngRenderer' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php',
|
||||||
'Jdenticon\\Rendering\\Point' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/Point.php',
|
'Jdenticon\\Rendering\\Point' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/Point.php',
|
||||||
'Jdenticon\\Rendering\\Rectangle' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/Rectangle.php',
|
'Jdenticon\\Rendering\\Rectangle' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Rendering/Rectangle.php',
|
||||||
|
|
|
@ -21,6 +21,15 @@ class SuperSampleBuffer
|
||||||
const IDX_G = 3;
|
const IDX_G = 3;
|
||||||
const IDX_B = 4;
|
const IDX_B = 4;
|
||||||
|
|
||||||
|
private $samples;
|
||||||
|
private $samplesPerPixel;
|
||||||
|
|
||||||
|
private $pixelOffset;
|
||||||
|
private $subPixelOffset;
|
||||||
|
|
||||||
|
private $width;
|
||||||
|
private $used;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a color buffer keeping an average color out of several
|
* Creates a color buffer keeping an average color out of several
|
||||||
* color samples per pixel.
|
* color samples per pixel.
|
||||||
|
|
Loading…
Reference in New Issue