aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Fuhse <fuhse@data-quest.de>2021-12-13 15:46:41 +0000
committerRasmus Fuhse <fuhse@data-quest.de>2021-12-13 15:46:41 +0000
commitc5419123d53da2656e6cec6d7bc3c77f936b73d8 (patch)
tree4d37722352a4427777ea9f2fabf499bb9ed8f6a9
parent9ccf095bd2c597eef1ffb2c0557b1ca7e1d6b60c (diff)
Resolve "StEP00358 Schnittstelle zum OER Portal Niedersachsen"
-rw-r--r--app/controllers/course/timesrooms.php2
-rwxr-xr-xapp/controllers/oer/endpoints.php4
-rwxr-xr-xapp/controllers/oer/mymaterial.php15
-rwxr-xr-xapp/views/oer/mymaterial/edit.php9
-rw-r--r--cli/twillo_generate_keys.php36
-rw-r--r--composer.json16
-rw-r--r--composer.lock2844
-rw-r--r--db/migrations/5.1.13_add_twillo_support.php164
-rw-r--r--lib/bootstrap-autoload.php18
-rw-r--r--lib/classes/TwilloConnector.php274
-rwxr-xr-xlib/models/OERMaterial.php27
-rw-r--r--vendor/edu-sharing-plugin/edu-sharing-auth-helper.php101
-rw-r--r--vendor/edu-sharing-plugin/edu-sharing-helper-abstract.php43
-rw-r--r--vendor/edu-sharing-plugin/edu-sharing-helper-base.php42
-rw-r--r--vendor/edu-sharing-plugin/edu-sharing-helper.php47
-rw-r--r--vendor/edu-sharing-plugin/edu-sharing-node-helper.php175
-rw-r--r--vendor/edu-sharing-plugin/example/example-api.php59
-rw-r--r--vendor/edu-sharing-plugin/example/example.php49
-rw-r--r--vendor/edu-sharing-plugin/example/index.html120
-rw-r--r--vendor/edu-sharing-plugin/readme.md1
20 files changed, 2119 insertions, 1927 deletions
diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php
index 486d7b0..3e11e62 100644
--- a/app/controllers/course/timesrooms.php
+++ b/app/controllers/course/timesrooms.php
@@ -1057,7 +1057,7 @@ class Course_TimesroomsController extends AuthenticatedController
$end_semester = $this->course->semesters;
}
- $this->start_weeks = $this->course->start_semester->getStartWeeks($this->course->duration_time);
+ $this->start_weeks = $end_semester[count($end_semester) - 1]->getStartWeeks();
if (!empty($end_semester)) {
$this->end_semester_weeks = [];
diff --git a/app/controllers/oer/endpoints.php b/app/controllers/oer/endpoints.php
index f193139..552a757 100755
--- a/app/controllers/oer/endpoints.php
+++ b/app/controllers/oer/endpoints.php
@@ -131,6 +131,7 @@ class Oer_EndpointsController extends StudipController
];
$data['data'] = $material->toArray();
unset($data['data']['material_id']);
+ unset($data['data']['uri_hash']);
$data['users'] = [];
foreach ($material->users as $userdata) {
$user = $userdata['external_contact']
@@ -242,7 +243,8 @@ class Oer_EndpointsController extends StudipController
'player_url' => $material['player_url'],
'tool' => $material['tool'],
'structure' => ($material['structure'] ? $material['structure']->getArrayCopy() : null),
- 'license' => $material['license']
+ 'license' => $material['license'],
+ 'uri' => $material['uri']
],
'users' => $users,
'topics' => $topics,
diff --git a/app/controllers/oer/mymaterial.php b/app/controllers/oer/mymaterial.php
index bb83bca..6f6f4c3 100755
--- a/app/controllers/oer/mymaterial.php
+++ b/app/controllers/oer/mymaterial.php
@@ -8,7 +8,6 @@ class Oer_MymaterialController extends AuthenticatedController
{
parent::before_filter($action, $args);
PageLayout::setTitle(_('Lernmaterialien'));
-
}
public function index_action()
@@ -36,6 +35,7 @@ class Oer_MymaterialController extends AuthenticatedController
return;
} elseif (Request::isPost()) {
$was_new = $material->isNew();
+ $was_on_twillo = (bool) $material['published_id_on_twillo'];
$material->setData(Request::getArray('data'));
$material['host_id'] = null;
$material['license_identifier'] = Request::get('license', 'CC-BY-SA-4.0');
@@ -131,6 +131,19 @@ class Oer_MymaterialController extends AuthenticatedController
$material->pushDataToIndexServers();
+ if (Config::get()->OERCAMPUS_ENABLE_TWILLO && TwilloConnector::getTwilloUserID()) {
+ if (Request::bool('publish_on_twillo') || $_SESSION['NEW_OER']['publish_on_twillo']) {
+ //upload it to twillo.de
+ $succes_or_error = $material->uploadToTwillo($material);
+ if (is_string($succes_or_error)) {
+ PageLayout::postWarning(_('Konnte Material nicht zu twillo.de hochladen.'), [$succes_or_error]);
+ }
+ } elseif ($was_on_twillo) {
+ //remove it from twillo.de if able
+ $material->deleteFromTwillo();
+ }
+ }
+
unset($_SESSION['NEW_OER']);
PageLayout::postSuccess(_('Lernmaterial erfolgreich gespeichert.'));
diff --git a/app/views/oer/mymaterial/edit.php b/app/views/oer/mymaterial/edit.php
index 5b20618..434414f 100755
--- a/app/views/oer/mymaterial/edit.php
+++ b/app/views/oer/mymaterial/edit.php
@@ -238,6 +238,15 @@
value="<?= htmlReady($template['module_id']) ?>">
<? endif ?>
+ <? if (Config::get()->OERCAMPUS_ENABLE_TWILLO && TwilloConnector::getTwilloUserID()) : ?>
+ <input type="hidden" name="publish_on_twillo" value="0">
+ <label style="margin-top: 20px;">
+ <input type="checkbox"
+ name="publish_on_twillo"
+ value="1"<?= $material['published_id_on_twillo'] ? " checked" : "" ?>>
+ <?= _('Auf twillo.de veröffentlichen') ?>
+ </label>
+ <? endif ?>
</fieldset>
<? if (!Config::get()->OER_DISABLE_LICENSE) : ?>
diff --git a/cli/twillo_generate_keys.php b/cli/twillo_generate_keys.php
new file mode 100644
index 0000000..0d1f5d1
--- /dev/null
+++ b/cli/twillo_generate_keys.php
@@ -0,0 +1,36 @@
+#!/usr/bin/env php
+<?php
+require_once 'studip_cli_env.inc.php';
+
+$app_id = str_replace(" ", "-", Config::get()->UNI_NAME_CLEAN);
+
+$privatekey = @file_get_contents('../config/twillo-private.key');
+
+if (!$privatekey) {
+ $key = EduSharingHelper::generateKeyPair();
+ $success = file_put_contents(
+ '../config/twillo.properties.xml',
+ EduSharingHelper::generateEduAppXMLData($app_id, $key['publickey'])
+ );
+ if ($success !== false) {
+ file_put_contents(
+ '../config/twillo-private.key',
+ $key['privatekey']
+ );
+ Config::get()->store('OERCAMPUS_TWILLO_APPID', $app_id);
+ echo "Wrote config/twillo.properties.xml file. Next steps:
+
+- Send the file config/twillo.properties.xml to the twillo.de administrators support.twillo@tib.eu . If they ask you to change the app-ID, you can do this in the system at Admin -> System -> Configuration by editing the config value OERCAMPUS_TWILLO_APPID.
+- Leave the config/twillo-private.key file as it is in the config folder. This file is important for the API to work.
+- You need to either have or create a datafield for users which contains the DFN-AAI-ID of a person. Without this ID in the datafield a user cannot upload to twillo.de due to technical restrictions.
+- Copy the datafield_id of this datafield (you find this in the DB-table datafields). In Stud.IP go to Admin -> System -> Configuration and edit the config value OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD. What you inserted, should look like 6a9ee3ca3685d2551698a3dc6f0f0eff.
+- Once the twillo.de adminstrators received your file and registered your Stud.IP, you can enable the connection to twillo: Go to Admin -> System -> Configuration and edit the config value OERCAMPUS_ENABLE_TWILLO and switch it on.
+
+There you go. From now on all your users with a given DFN-AAI-ID should be able to upload their OERs to twillo.de.
+";
+ } else {
+ echo "No permission to write into folder config. Cannot save private and public keys.\n";
+ }
+} else {
+ echo "Private key already exists. Remove it or be happy that it is there.\n";
+}
diff --git a/composer.json b/composer.json
index 50b3f8a..9412161 100644
--- a/composer.json
+++ b/composer.json
@@ -7,18 +7,21 @@
"require-dev": {
"adlawson/vfs": "~0.12.1",
"camspiers/json-pretty": "~1.0.2",
+ "codeception/codeception": "4.0.2",
"monolog/monolog": "~1.21.0",
"php-http/curl-client": "~1.7.0",
- "woohoolabs/yang": "2.3.2",
- "codeception/codeception": "~4.1.21",
- "codeception/module-asserts": "^1.3"
+ "phpunit/phpunit": "6.5.14",
+ "woohoolabs/yang": "~0.9.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-asserts": "^1.1"
},
"require": {
"php": "^7.2",
"guzzlehttp/psr7": "~1.4.2",
- "neomerx/json-api": "4.0.1",
+ "neomerx/json-api": "~1.0.9",
+ "slim/slim": "~3.12.3",
"spomky-labs/otphp": "^8.3.3",
- "tuupola/cors-middleware": "1.2.1",
+ "tuupola/cors-middleware": "~0.5.2",
"tecnickcom/tcpdf": "^6.3",
"scssphp/scssphp": "^1.4",
"symfony/yaml": "^3.4",
@@ -45,6 +48,7 @@
"opis/json-schema": "^1.0",
"slim/psr7": "1.4",
"slim/slim": "4.7.1",
- "php-di/php-di": "6.3.4"
+ "php-di/php-di": "6.3.4",
+ "league/oauth2-client": "^2.6"
}
}
diff --git a/composer.lock b/composer.lock
index 440bb70..50c988c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "98af1effd6c2da72cc51ac552e851451",
+ "content-hash": "470f6b148b8f1f3421c22c149df783a0",
"packages": [
{
"name": "algo26-matthias/idna-convert",
@@ -275,34 +275,94 @@
"time": "2020-06-29T00:56:53+00:00"
},
{
- "name": "fig/http-message-util",
- "version": "1.1.5",
+ "name": "gossi/docblock",
+ "version": "v1.6",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-message-util.git",
- "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765"
+ "url": "https://github.com/gossi/docblock.git",
+ "reference": "d7e2f299279f5aebbfddeef1c119e26bef4bc7e9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765",
- "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765",
+ "url": "https://api.github.com/repos/gossi/docblock/zipball/d7e2f299279f5aebbfddeef1c119e26bef4bc7e9",
+ "reference": "d7e2f299279f5aebbfddeef1c119e26bef4bc7e9",
"shasum": ""
},
"require": {
- "php": "^5.3 || ^7.0 || ^8.0"
+ "phootwork/collection": "^1.5",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7",
+ "sami/sami": "^4|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "gossi\\docblock\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Thomas Gossmann",
+ "homepage": "http://gos.si"
+ }
+ ],
+ "description": "PHP Docblock parser and generator. An API to read and write Docblocks.",
+ "keywords": [
+ "docblock",
+ "generator",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/gossi/docblock/issues",
+ "source": "https://github.com/gossi/docblock/tree/master"
+ },
+ "time": "2017-07-01T18:10:54+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.4",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "psr/log": "^1.0"
},
"suggest": {
- "psr/http-message": "The package containing the PSR-7 interfaces"
+ "psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "6.3-dev"
}
},
"autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
"psr-4": {
- "Fig\\Http\\Message\\": "src/"
+ "GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -311,52 +371,61 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
}
],
- "description": "Utility classes and constants for use with PSR-7 (psr/http-message)",
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
"keywords": [
+ "client",
+ "curl",
+ "framework",
"http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
+ "http client",
+ "rest",
+ "web service"
],
"support": {
- "issues": "https://github.com/php-fig/http-message-util/issues",
- "source": "https://github.com/php-fig/http-message-util/tree/1.1.5"
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/master"
},
- "time": "2020-11-24T22:02:12+00:00"
+ "time": "2018-04-22T15:46:56+00:00"
},
{
- "name": "gossi/docblock",
- "version": "v1.6",
+ "name": "guzzlehttp/promises",
+ "version": "v1.3.1",
"source": {
"type": "git",
- "url": "https://github.com/gossi/docblock.git",
- "reference": "d7e2f299279f5aebbfddeef1c119e26bef4bc7e9"
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/gossi/docblock/zipball/d7e2f299279f5aebbfddeef1c119e26bef4bc7e9",
- "reference": "d7e2f299279f5aebbfddeef1c119e26bef4bc7e9",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"shasum": ""
},
"require": {
- "phootwork/collection": "^1.5",
- "php": ">=5.6"
+ "php": ">=5.5.0"
},
"require-dev": {
- "phpunit/phpunit": "^5.7",
- "sami/sami": "^4|^3"
+ "phpunit/phpunit": "^4.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "gossi\\docblock\\": "src"
- }
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -364,21 +433,20 @@
],
"authors": [
{
- "name": "Thomas Gossmann",
- "homepage": "http://gos.si"
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
}
],
- "description": "PHP Docblock parser and generator. An API to read and write Docblocks.",
+ "description": "Guzzle promises library",
"keywords": [
- "docblock",
- "generator",
- "parser"
+ "promise"
],
"support": {
- "issues": "https://github.com/gossi/docblock/issues",
- "source": "https://github.com/gossi/docblock/tree/master"
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/master"
},
- "time": "2017-07-01T18:10:54+00:00"
+ "time": "2016-12-20T10:07:11+00:00"
},
{
"name": "guzzlehttp/psr7",
@@ -596,6 +664,76 @@
"time": "2019-10-25T12:34:43+00:00"
},
{
+ "name": "league/oauth2-client",
+ "version": "2.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/oauth2-client.git",
+ "reference": "badb01e62383430706433191b82506b6df24ad98"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/badb01e62383430706433191b82506b6df24ad98",
+ "reference": "badb01e62383430706433191b82506b6df24ad98",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "^6.0 || ^7.0",
+ "paragonie/random_compat": "^1 || ^2 || ^9.99",
+ "php": "^5.6 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpunit/phpunit": "^5.7 || ^6.0 || ^9.3",
+ "squizlabs/php_codesniffer": "^2.3 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\OAuth2\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alex Bilbie",
+ "email": "hello@alexbilbie.com",
+ "homepage": "http://www.alexbilbie.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Woody Gilk",
+ "homepage": "https://github.com/shadowhand",
+ "role": "Contributor"
+ }
+ ],
+ "description": "OAuth 2.0 Client Library",
+ "keywords": [
+ "Authentication",
+ "SSO",
+ "authorization",
+ "identity",
+ "idp",
+ "oauth",
+ "oauth2",
+ "single sign on"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/oauth2-client/issues",
+ "source": "https://github.com/thephpleague/oauth2-client/tree/2.6.0"
+ },
+ "time": "2020-10-28T02:03:40+00:00"
+ },
+ {
"name": "mishal/iless",
"version": "2.2.0",
"source": {
@@ -713,37 +851,36 @@
},
{
"name": "neomerx/json-api",
- "version": "v4.0.1",
+ "version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/neomerx/json-api.git",
- "reference": "0e45254a4574a3118e0ed663312b43aca23b89c7"
+ "reference": "c911b7494496e79f9de72ee40d6a2b791caaf95b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/neomerx/json-api/zipball/0e45254a4574a3118e0ed663312b43aca23b89c7",
- "reference": "0e45254a4574a3118e0ed663312b43aca23b89c7",
+ "url": "https://api.github.com/repos/neomerx/json-api/zipball/c911b7494496e79f9de72ee40d6a2b791caaf95b",
+ "reference": "c911b7494496e79f9de72ee40d6a2b791caaf95b",
"shasum": ""
},
"require": {
- "php": ">=7.1.0"
+ "php": ">=5.5.0",
+ "psr/http-message": "^1.0",
+ "psr/log": "^1.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "mockery/mockery": "^1.0",
+ "mockery/mockery": "~0.9.4",
+ "monolog/monolog": "^1.18",
"phpmd/phpmd": "^2.6",
- "phpunit/phpunit": "^7.0",
- "scrutinizer/ocular": "^1.4",
- "squizlabs/php_codesniffer": "^2.9"
+ "phpunit/phpunit": "^4.6 || ^5.0 || ^6.0",
+ "scrutinizer/ocular": "^1.3",
+ "squizlabs/php_codesniffer": "^2.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Neomerx\\JsonApi\\": "src/"
- },
- "files": [
- "src/I18n/format.php"
- ]
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -767,9 +904,9 @@
],
"support": {
"issues": "https://github.com/neomerx/json-api/issues",
- "source": "https://github.com/neomerx/json-api/tree/develop"
+ "source": "https://github.com/neomerx/json-api/tree/v1.x"
},
- "time": "2020-03-03T05:56:54+00:00"
+ "time": "2018-02-21T13:45:30+00:00"
},
{
"name": "nikic/fast-route",
@@ -822,71 +959,6 @@
"time": "2018-02-13T20:26:39+00:00"
},
{
- "name": "opis/closure",
- "version": "3.6.2",
- "source": {
- "type": "git",
- "url": "https://github.com/opis/closure.git",
- "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6",
- "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "jeremeamia/superclosure": "^2.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.6.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Opis\\Closure\\": "src/"
- },
- "files": [
- "functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marius Sarca",
- "email": "marius.sarca@gmail.com"
- },
- {
- "name": "Sorin Sarca",
- "email": "sarca_sorin@hotmail.com"
- }
- ],
- "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
- "homepage": "https://opis.io/closure",
- "keywords": [
- "anonymous functions",
- "closure",
- "function",
- "serializable",
- "serialization",
- "serialize"
- ],
- "support": {
- "issues": "https://github.com/opis/closure/issues",
- "source": "https://github.com/opis/closure/tree/3.6.2"
- },
- "time": "2021-04-09T13:42:10+00:00"
- },
- {
"name": "opis/json-schema",
"version": "1.1.0",
"source": {
@@ -1176,171 +1248,6 @@
"time": "2018-08-04T14:22:05+00:00"
},
{
- "name": "php-di/invoker",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/540c27c86f663e20fe39a24cd72fa76cdb21d41a",
- "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a",
- "shasum": ""
- },
- "require": {
- "psr/container": "~1.0"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "phpunit/phpunit": "~4.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Invoker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Generic and extensible callable invoker",
- "homepage": "https://github.com/PHP-DI/Invoker",
- "keywords": [
- "callable",
- "dependency",
- "dependency-injection",
- "injection",
- "invoke",
- "invoker"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/Invoker/issues",
- "source": "https://github.com/PHP-DI/Invoker/tree/master"
- },
- "time": "2017-03-20T19:28:22+00:00"
- },
- {
- "name": "php-di/php-di",
- "version": "6.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PHP-DI.git",
- "reference": "f53bcba06ab31b18e911b77c039377f4ccd1f7a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/f53bcba06ab31b18e911b77c039377f4ccd1f7a5",
- "reference": "f53bcba06ab31b18e911b77c039377f4ccd1f7a5",
- "shasum": ""
- },
- "require": {
- "opis/closure": "^3.5.5",
- "php": ">=7.2.0",
- "php-di/invoker": "^2.0",
- "php-di/phpdoc-reader": "^2.0.1",
- "psr/container": "^1.0"
- },
- "provide": {
- "psr/container-implementation": "^1.0"
- },
- "require-dev": {
- "doctrine/annotations": "~1.2",
- "friendsofphp/php-cs-fixer": "^2.4",
- "mnapoli/phpunit-easymock": "^1.2",
- "ocramius/proxy-manager": "^2.0.2",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^8.5|^9.0"
- },
- "suggest": {
- "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)",
- "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DI\\": "src/"
- },
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The dependency injection container for humans",
- "homepage": "https://php-di.org/",
- "keywords": [
- "PSR-11",
- "container",
- "container-interop",
- "dependency injection",
- "di",
- "ioc",
- "psr11"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/PHP-DI/issues",
- "source": "https://github.com/PHP-DI/PHP-DI/tree/6.3.4"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/php-di/php-di",
- "type": "tidelift"
- }
- ],
- "time": "2021-06-10T08:04:48+00:00"
- },
- {
- "name": "php-di/phpdoc-reader",
- "version": "2.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PhpDocReader.git",
- "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c",
- "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.0"
- },
- "require-dev": {
- "mnapoli/hard-mode": "~0.3.0",
- "phpunit/phpunit": "^8.5|^9.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PhpDocReader\\": "src/PhpDocReader"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
- "keywords": [
- "phpdoc",
- "reflection"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/PhpDocReader/issues",
- "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1"
- },
- "time": "2020-10-12T12:39:22+00:00"
- },
- {
"name": "phpseclib/phpseclib",
"version": "2.0.31",
"source": {
@@ -1555,31 +1462,35 @@
"time": "2020-03-04T10:26:33+00:00"
},
{
- "name": "psr/container",
- "version": "1.0.0",
+ "name": "pimple/pimple",
+ "version": "v3.2.3",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ "url": "https://github.com/silexphp/Pimple.git",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=5.3.0",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "3.2.x-dev"
}
},
"autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
+ "psr-0": {
+ "Pimple": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1588,42 +1499,38 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
+ "description": "Pimple, a simple Dependency Injection Container",
+ "homepage": "http://pimple.sensiolabs.org",
"keywords": [
- "PSR-11",
"container",
- "container-interface",
- "container-interop",
- "psr"
+ "dependency injection"
],
"support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/master"
+ "issues": "https://github.com/silexphp/Pimple/issues",
+ "source": "https://github.com/silexphp/Pimple/tree/master"
},
- "time": "2017-02-14T16:28:37+00:00"
+ "time": "2018-01-21T07:42:36+00:00"
},
{
- "name": "psr/http-factory",
- "version": "1.0.1",
+ "name": "psr/container",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0"
+ "php": ">=5.3.0"
},
"type": "library",
"extra": {
@@ -1633,7 +1540,7 @@
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1646,21 +1553,20 @@
"homepage": "http://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
"keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/master"
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/master"
},
- "time": "2019-04-30T12:38:16+00:00"
+ "time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/http-message",
@@ -1716,120 +1622,6 @@
"time": "2016-08-06T14:39:51+00:00"
},
{
- "name": "psr/http-server-handler",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-server-handler.git",
- "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
- "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0",
- "psr/http-message": "^1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Server\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP server-side request handler",
- "keywords": [
- "handler",
- "http",
- "http-interop",
- "psr",
- "psr-15",
- "psr-7",
- "request",
- "response",
- "server"
- ],
- "support": {
- "issues": "https://github.com/php-fig/http-server-handler/issues",
- "source": "https://github.com/php-fig/http-server-handler/tree/master"
- },
- "time": "2018-10-30T16:46:14+00:00"
- },
- {
- "name": "psr/http-server-middleware",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-server-middleware.git",
- "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
- "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0",
- "psr/http-message": "^1.0",
- "psr/http-server-handler": "^1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Server\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP server-side middleware",
- "keywords": [
- "http",
- "http-interop",
- "middleware",
- "psr",
- "psr-15",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "issues": "https://github.com/php-fig/http-server-middleware/issues",
- "source": "https://github.com/php-fig/http-server-middleware/tree/master"
- },
- "time": "2018-10-30T17:12:04+00:00"
- },
- {
"name": "psr/log",
"version": "1.1.3",
"source": {
@@ -1880,50 +1672,6 @@
"time": "2020-03-23T09:12:05+00:00"
},
{
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "support": {
- "issues": "https://github.com/ralouphie/getallheaders/issues",
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
- },
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
"name": "scssphp/scssphp",
"version": "v1.4.0",
"source": {
@@ -1991,132 +1739,35 @@
"time": "2020-11-07T20:53:41+00:00"
},
{
- "name": "slim/psr7",
- "version": "1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/slimphp/Slim-Psr7.git",
- "reference": "0dca983ca32a26f4a91fb11173b7b9eaee29e9d6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/0dca983ca32a26f4a91fb11173b7b9eaee29e9d6",
- "reference": "0dca983ca32a26f4a91fb11173b7b9eaee29e9d6",
- "shasum": ""
- },
- "require": {
- "fig/http-message-util": "^1.1.5",
- "php": "^7.2 || ^8.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.0",
- "ralouphie/getallheaders": "^3",
- "symfony/polyfill-php80": "^1.22"
- },
- "provide": {
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "adriansuter/php-autoload-override": "^1.2",
- "ext-json": "*",
- "http-interop/http-factory-tests": "^0.9.0",
- "php-http/psr7-integration-tests": "dev-master",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^8.5 || ^9.5",
- "squizlabs/php_codesniffer": "^3.6",
- "weirdan/prophecy-shim": "^1.0 || ^2.0.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Slim\\Psr7\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Josh Lockhart",
- "email": "hello@joshlockhart.com",
- "homepage": "http://joshlockhart.com"
- },
- {
- "name": "Andrew Smith",
- "email": "a.smith@silentworks.co.uk",
- "homepage": "http://silentworks.co.uk"
- },
- {
- "name": "Rob Allen",
- "email": "rob@akrabat.com",
- "homepage": "http://akrabat.com"
- },
- {
- "name": "Pierre Berube",
- "email": "pierre@lgse.com",
- "homepage": "http://www.lgse.com"
- }
- ],
- "description": "Strict PSR-7 implementation",
- "homepage": "https://www.slimframework.com",
- "keywords": [
- "http",
- "psr-7",
- "psr7"
- ],
- "support": {
- "issues": "https://github.com/slimphp/Slim-Psr7/issues",
- "source": "https://github.com/slimphp/Slim-Psr7/tree/1.4"
- },
- "time": "2021-05-08T18:22:56+00:00"
- },
- {
"name": "slim/slim",
- "version": "4.7.1",
+ "version": "3.12.3",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim.git",
- "reference": "0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f"
+ "reference": "1c9318a84ffb890900901136d620b4f03a59da38"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/slimphp/Slim/zipball/0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f",
- "reference": "0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f",
+ "url": "https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38",
+ "reference": "1c9318a84ffb890900901136d620b4f03a59da38",
"shasum": ""
},
"require": {
"ext-json": "*",
- "nikic/fast-route": "^1.3",
- "php": "^7.2 || ^8.0",
+ "ext-libxml": "*",
+ "ext-simplexml": "*",
+ "nikic/fast-route": "^1.0",
+ "php": ">=5.5.0",
+ "pimple/pimple": "^3.0",
"psr/container": "^1.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.0",
- "psr/http-server-handler": "^1.0",
- "psr/http-server-middleware": "^1.0",
- "psr/log": "^1.1"
+ "psr/http-message": "^1.0"
},
- "require-dev": {
- "adriansuter/php-autoload-override": "^1.2",
- "ext-simplexml": "*",
- "guzzlehttp/psr7": "^1.7",
- "http-interop/http-factory-guzzle": "^1.0",
- "laminas/laminas-diactoros": "^2.4",
- "nyholm/psr7": "^1.3",
- "nyholm/psr7-server": "^1.0.1",
- "phpspec/prophecy": "^1.12",
- "phpstan/phpstan": "^0.12.58",
- "phpunit/phpunit": "^8.5.13",
- "slim/http": "^1.2",
- "slim/psr7": "^1.3",
- "squizlabs/php_codesniffer": "^3.5",
- "weirdan/prophecy-shim": "^1.0 || ^2.0.2"
+ "provide": {
+ "psr/http-message-implementation": "1.0"
},
- "suggest": {
- "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
- "ext-xml": "Needed to support XML format in BodyParsingMiddleware",
- "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim",
- "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information."
+ "require-dev": {
+ "phpunit/phpunit": "^4.0",
+ "squizlabs/php_codesniffer": "^2.5"
},
"type": "library",
"autoload": {
@@ -2145,18 +1796,13 @@
"homepage": "http://akrabat.com"
},
{
- "name": "Pierre Berube",
- "email": "pierre@lgse.com",
- "homepage": "http://www.lgse.com"
- },
- {
"name": "Gabriel Manricks",
"email": "gmanricks@me.com",
"homepage": "http://gabrielmanricks.com"
}
],
"description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
- "homepage": "https://www.slimframework.com",
+ "homepage": "https://slimframework.com",
"keywords": [
"api",
"framework",
@@ -2164,26 +1810,10 @@
"router"
],
"support": {
- "docs": "https://www.slimframework.com/docs/v4/",
- "forum": "https://discourse.slimframework.com/",
- "irc": "irc://irc.freenode.net:6667/slimphp",
"issues": "https://github.com/slimphp/Slim/issues",
- "rss": "https://www.slimframework.com/blog/feed.rss",
- "slack": "https://slimphp.slack.com/",
- "source": "https://github.com/slimphp/Slim",
- "wiki": "https://github.com/slimphp/Slim/wiki"
+ "source": "https://github.com/slimphp/Slim/tree/3.x"
},
- "funding": [
- {
- "url": "https://opencollective.com/slimphp",
- "type": "open_collective"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/slim/slim",
- "type": "tidelift"
- }
- ],
- "time": "2020-12-01T19:41:22+00:00"
+ "time": "2019-11-28T17:40:33+00:00"
},
{
"name": "spomky-labs/otphp",
@@ -2472,89 +2102,6 @@
"time": "2020-07-14T12:35:20+00:00"
},
{
- "name": "symfony/polyfill-php80",
- "version": "v1.23.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.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": "2021-02-19T12:13:01+00:00"
- },
- {
"name": "symfony/polyfill-util",
"version": "v1.18.1",
"source": {
@@ -2765,96 +2312,27 @@
"time": "2020-02-14T14:20:12+00:00"
},
{
- "name": "tuupola/callable-handler",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/tuupola/callable-handler.git",
- "reference": "0bc7b88630ca753de9aba8f411046856f5ca6f8c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/tuupola/callable-handler/zipball/0bc7b88630ca753de9aba8f411046856f5ca6f8c",
- "reference": "0bc7b88630ca753de9aba8f411046856f5ca6f8c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1|^8.0",
- "psr/http-server-middleware": "^1.0"
- },
- "require-dev": {
- "overtrue/phplint": "^1.0",
- "phpunit/phpunit": "^7.0|^8.0|^9.0",
- "squizlabs/php_codesniffer": "^3.2",
- "tuupola/http-factory": "^0.4.0|^1.0",
- "zendframework/zend-diactoros": "^1.6.0|^2.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Tuupola\\Middleware\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mika Tuupola",
- "email": "tuupola@appelsiini.net",
- "homepage": "https://appelsiini.net/",
- "role": "Developer"
- }
- ],
- "description": "Compatibility layer for PSR-7 double pass and PSR-15 middlewares.",
- "homepage": "https://github.com/tuupola/callable-handler",
- "keywords": [
- "middleware",
- "psr-15",
- "psr-7"
- ],
- "support": {
- "issues": "https://github.com/tuupola/callable-handler/issues",
- "source": "https://github.com/tuupola/callable-handler/tree/1.1.0"
- },
- "funding": [
- {
- "url": "https://github.com/tuupola",
- "type": "github"
- }
- ],
- "time": "2020-09-09T08:31:54+00:00"
- },
- {
"name": "tuupola/cors-middleware",
- "version": "1.2.1",
+ "version": "0.5.2",
"source": {
"type": "git",
"url": "https://github.com/tuupola/cors-middleware.git",
- "reference": "4f085d11f349e83d18f1eb5802551353b2b093a3"
+ "reference": "db69d8e67b99570b16e8cd5f78c423ed1167cb21"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/4f085d11f349e83d18f1eb5802551353b2b093a3",
- "reference": "4f085d11f349e83d18f1eb5802551353b2b093a3",
+ "url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/db69d8e67b99570b16e8cd5f78c423ed1167cb21",
+ "reference": "db69d8e67b99570b16e8cd5f78c423ed1167cb21",
"shasum": ""
},
"require": {
- "neomerx/cors-psr7": "^1.0.4",
- "php": "^7.1|^8.0",
- "psr/http-message": "^1.0.1",
- "psr/http-server-middleware": "^1.0",
- "tuupola/callable-handler": "^1.0",
- "tuupola/http-factory": "^1.0.2"
+ "neomerx/cors-psr7": "^1.0",
+ "php": "^5.5 || ^7.0"
},
"require-dev": {
- "equip/dispatch": "^2.0",
- "overtrue/phplint": "^1.0",
- "phpstan/phpstan": "^0.12.42",
- "phpunit/phpunit": "^7.0|^8.0|^9.0",
- "squizlabs/php_codesniffer": "^3.5",
- "zendframework/zend-diactoros": "^1.0|^2.0"
+ "phpunit/phpunit": "^4.8",
+ "squizlabs/php_codesniffer": "^2.5",
+ "zendframework/zend-diactoros": "^1.3"
},
"type": "library",
"autoload": {
@@ -2870,96 +2348,22 @@
{
"name": "Mika Tuupola",
"email": "tuupola@appelsiini.net",
- "homepage": "https://appelsiini.net/",
+ "homepage": "http://www.appelsiini.net/",
"role": "Developer"
}
],
- "description": "PSR-7 and PSR-15 CORS middleware",
+ "description": "PSR-7 CORS Middleware",
"homepage": "https://github.com/tuupola/cors-middleware",
"keywords": [
"cors",
"middleware",
- "psr-15",
- "psr-7"
+ "slim"
],
"support": {
"issues": "https://github.com/tuupola/cors-middleware/issues",
- "source": "https://github.com/tuupola/cors-middleware/tree/1.2.1"
- },
- "funding": [
- {
- "url": "https://github.com/tuupola",
- "type": "github"
- }
- ],
- "time": "2020-10-29T11:01:06+00:00"
- },
- {
- "name": "tuupola/http-factory",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/tuupola/http-factory.git",
- "reference": "aa48841a9f572b9cebe9d3ac5d5d3362a83f57ac"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/tuupola/http-factory/zipball/aa48841a9f572b9cebe9d3ac5d5d3362a83f57ac",
- "reference": "aa48841a9f572b9cebe9d3ac5d5d3362a83f57ac",
- "shasum": ""
- },
- "require": {
- "php": "^7.1|^8.0",
- "psr/http-factory": "^1.0"
- },
- "conflict": {
- "nyholm/psr7": "<1.0"
- },
- "provide": {
- "psr/http-factory-implementation": "^1.0"
- },
- "require-dev": {
- "http-interop/http-factory-tests": "^0.7.0",
- "overtrue/phplint": "^1.0",
- "phpunit/phpunit": "^7.0|^8.0|^9.0",
- "squizlabs/php_codesniffer": "^3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Tuupola\\Http\\Factory\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mika Tuupola",
- "email": "tuupola@appelsiini.net",
- "homepage": "https://appelsiini.net/",
- "role": "Developer"
- }
- ],
- "description": "Lightweight autodiscovering PSR-17 HTTP factories",
- "homepage": "https://github.com/tuupola/http-factory",
- "keywords": [
- "http",
- "psr-17",
- "psr-7"
- ],
- "support": {
- "issues": "https://github.com/tuupola/http-factory/issues",
- "source": "https://github.com/tuupola/http-factory/tree/1.3.0"
+ "source": "https://github.com/tuupola/cors-middleware/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/tuupola",
- "type": "github"
- }
- ],
- "time": "2020-10-01T07:46:32+00:00"
+ "time": "2016-08-12T13:12:58+00:00"
}
],
"packages-dev": [
@@ -3025,26 +2429,25 @@
},
{
"name": "behat/gherkin",
- "version": "v4.8.0",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/Behat/Gherkin.git",
- "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd"
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd",
- "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd",
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31",
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31",
"shasum": ""
},
"require": {
- "php": "~7.2|~8.0"
+ "php": ">=5.3.1"
},
"require-dev": {
- "cucumber/cucumber": "dev-gherkin-16.0.0",
- "phpunit/phpunit": "~8|~9",
- "symfony/phpunit-bridge": "~3|~4|~5",
- "symfony/yaml": "~3|~4|~5"
+ "phpunit/phpunit": "~4.5|~5",
+ "symfony/phpunit-bridge": "~2.7|~3|~4",
+ "symfony/yaml": "~2.3|~3|~4"
},
"suggest": {
"symfony/yaml": "If you want to parse features, represented in YAML files"
@@ -3071,7 +2474,7 @@
"homepage": "http://everzet.com"
}
],
- "description": "Gherkin DSL parser for PHP",
+ "description": "Gherkin DSL parser for PHP 5.3",
"homepage": "http://behat.org/",
"keywords": [
"BDD",
@@ -3083,9 +2486,9 @@
],
"support": {
"issues": "https://github.com/Behat/Gherkin/issues",
- "source": "https://github.com/Behat/Gherkin/tree/v4.8.0"
+ "source": "https://github.com/Behat/Gherkin/tree/master"
},
- "time": "2021-02-04T12:44:21+00:00"
+ "time": "2020-03-17T14:03:26+00:00"
},
{
"name": "camspiers/json-pretty",
@@ -3195,28 +2598,28 @@
},
{
"name": "codeception/codeception",
- "version": "4.1.21",
+ "version": "4.0.2",
"source": {
"type": "git",
"url": "https://github.com/Codeception/Codeception.git",
- "reference": "c25f20d842a7e3fa0a8e6abf0828f102c914d419"
+ "reference": "e610c15ebb73b56722c67e1c799bf0565f062899"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/c25f20d842a7e3fa0a8e6abf0828f102c914d419",
- "reference": "c25f20d842a7e3fa0a8e6abf0828f102c914d419",
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e610c15ebb73b56722c67e1c799bf0565f062899",
+ "reference": "e610c15ebb73b56722c67e1c799bf0565f062899",
"shasum": ""
},
"require": {
"behat/gherkin": "^4.4.0",
"codeception/lib-asserts": "^1.0",
- "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1",
"codeception/stub": "^2.0 | ^3.0",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"guzzlehttp/psr7": "~1.4",
- "php": ">=5.6.0 <9.0",
+ "php": ">=5.6.0 <8.0",
"symfony/console": ">=2.7 <6.0",
"symfony/css-selector": ">=2.7 <6.0",
"symfony/event-dispatcher": ">=2.7 <6.0",
@@ -3224,17 +2627,17 @@
"symfony/yaml": ">=2.7 <6.0"
},
"require-dev": {
- "codeception/module-asserts": "1.*@dev",
- "codeception/module-cli": "1.*@dev",
- "codeception/module-db": "1.*@dev",
- "codeception/module-filesystem": "1.*@dev",
- "codeception/module-phpbrowser": "1.*@dev",
+ "codeception/module-asserts": "*@dev",
+ "codeception/module-cli": "*@dev",
+ "codeception/module-db": "*@dev",
+ "codeception/module-filesystem": "*@dev",
+ "codeception/module-phpbrowser": "*@dev",
"codeception/specify": "~0.3",
"codeception/util-universalframework": "*@dev",
"monolog/monolog": "~1.8",
"squizlabs/php_codesniffer": "~2.0",
"symfony/process": ">=2.7 <6.0",
- "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0"
+ "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0"
},
"suggest": {
"codeception/specify": "BDD-style code blocks",
@@ -3278,34 +2681,28 @@
],
"support": {
"issues": "https://github.com/Codeception/Codeception/issues",
- "source": "https://github.com/Codeception/Codeception/tree/4.1.21"
+ "source": "https://github.com/Codeception/Codeception/tree/4.0"
},
- "funding": [
- {
- "url": "https://opencollective.com/codeception",
- "type": "open_collective"
- }
- ],
- "time": "2021-05-28T17:43:39+00:00"
+ "time": "2020-01-14T14:44:10+00:00"
},
{
"name": "codeception/lib-asserts",
- "version": "1.13.2",
+ "version": "1.13.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/lib-asserts.git",
- "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
+ "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
- "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
+ "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/263ef0b7eff80643e82f4cf55351eca553a09a10",
+ "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10",
"shasum": ""
},
"require": {
"codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
"ext-dom": "*",
- "php": ">=5.6.0 <9.0"
+ "php": ">=5.6.0 <8.0"
},
"type": "library",
"autoload": {
@@ -3338,32 +2735,95 @@
],
"support": {
"issues": "https://github.com/Codeception/lib-asserts/issues",
- "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
+ "source": "https://github.com/Codeception/lib-asserts/tree/1.13.1"
},
- "time": "2020-10-21T16:26:20+00:00"
+ "time": "2020-08-28T07:49:36+00:00"
+ },
+ {
+ "name": "codeception/lib-innerbrowser",
+ "version": "1.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/lib-innerbrowser.git",
+ "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/7bdcee4cf654cfeeedd00405edd4f06f85255659",
+ "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "*@dev",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.6.0 <8.0",
+ "symfony/browser-kit": ">=2.7 <6.0",
+ "symfony/dom-crawler": ">=2.7 <6.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "require-dev": {
+ "codeception/util-universalframework": "dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk",
+ "email": "davert@mail.ua",
+ "homepage": "http://codegyre.com"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Parent library for all Codeception framework modules and PhpBrowser",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/lib-innerbrowser/issues",
+ "source": "https://github.com/Codeception/lib-innerbrowser/tree/master"
+ },
+ "time": "2020-07-05T14:21:45+00:00"
},
{
"name": "codeception/module-asserts",
- "version": "1.3.1",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/Codeception/module-asserts.git",
- "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
+ "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
- "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
+ "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/32e5be519faaeb60ed3692383dcd1b3390ec2667",
+ "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667",
"shasum": ""
},
"require": {
"codeception/codeception": "*@dev",
"codeception/lib-asserts": "^1.13.1",
- "php": ">=5.6.0 <9.0"
+ "php": ">=5.6.0 <8.0"
},
"conflict": {
"codeception/codeception": "<4.0"
},
+ "require-dev": {
+ "codeception/util-robohelpers": "dev-master"
+ },
"type": "library",
"autoload": {
"classmap": [
@@ -3395,30 +2855,93 @@
],
"support": {
"issues": "https://github.com/Codeception/module-asserts/issues",
- "source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
+ "source": "https://github.com/Codeception/module-asserts/tree/master"
},
- "time": "2020-10-21T16:48:15+00:00"
+ "time": "2020-08-28T08:06:29+00:00"
+ },
+ {
+ "name": "codeception/module-phpbrowser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-phpbrowser.git",
+ "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/c1962657504a2a476b8dbd1f1ee05e0c912e5645",
+ "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "*@dev",
+ "codeception/lib-innerbrowser": "^1.3.2",
+ "guzzlehttp/guzzle": "^6.3.0|^7.0.0",
+ "php": ">=5.6.0 <8.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "require-dev": {
+ "codeception/module-rest": "dev-master | ^1.0",
+ "codeception/util-robohelpers": "dev-master"
+ },
+ "suggest": {
+ "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Codeception module for testing web application over HTTP",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception",
+ "functional-testing",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-phpbrowser/issues",
+ "source": "https://github.com/Codeception/module-phpbrowser/tree/master"
+ },
+ "time": "2020-07-05T15:29:32+00:00"
},
{
"name": "codeception/phpunit-wrapper",
- "version": "8.1.4",
+ "version": "6.8.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/phpunit-wrapper.git",
- "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3"
+ "reference": "ca6e94c6dadc19db05698d4e0d84214e570ce045"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
- "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/ca6e94c6dadc19db05698d4e0d84214e570ce045",
+ "reference": "ca6e94c6dadc19db05698d4e0d84214e570ce045",
"shasum": ""
},
"require": {
- "php": ">=7.2",
- "phpunit/php-code-coverage": "^7.0",
- "phpunit/phpunit": "^8.0",
- "sebastian/comparator": "^3.0",
- "sebastian/diff": "^3.0"
+ "phpunit/php-code-coverage": ">=4.0.4 <6.0",
+ "phpunit/phpunit": ">=6.5.13 <7.0",
+ "sebastian/comparator": ">=1.2.4 <3.0",
+ "sebastian/diff": ">=1.4 <4.0"
+ },
+ "replace": {
+ "codeception/phpunit-wrapper": "*"
},
"require-dev": {
"codeception/specify": "*",
@@ -3443,26 +2966,27 @@
"description": "PHPUnit classes used by Codeception",
"support": {
"issues": "https://github.com/Codeception/phpunit-wrapper/issues",
- "source": "https://github.com/Codeception/phpunit-wrapper/tree/8.1.4"
+ "source": "https://github.com/Codeception/phpunit-wrapper/tree/6.8.1"
},
- "time": "2020-12-28T14:00:08+00:00"
+ "time": "2020-03-20T08:05:05+00:00"
},
{
"name": "codeception/stub",
- "version": "3.7.0",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/Codeception/Stub.git",
- "reference": "468dd5fe659f131fc997f5196aad87512f9b1304"
+ "reference": "eea518711d736eab838c1274593c4568ec06b23d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304",
- "reference": "468dd5fe659f131fc997f5196aad87512f9b1304",
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/eea518711d736eab838c1274593c4568ec06b23d",
+ "reference": "eea518711d736eab838c1274593c4568ec06b23d",
"shasum": ""
},
"require": {
- "phpunit/phpunit": "^8.4 | ^9.0"
+ "codeception/phpunit-wrapper": "^6.6.1 | ^7.7.1 | ^8.0.3",
+ "phpunit/phpunit": ">=6.5 <9.0"
},
"type": "library",
"autoload": {
@@ -3477,37 +3001,40 @@
"description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
"support": {
"issues": "https://github.com/Codeception/Stub/issues",
- "source": "https://github.com/Codeception/Stub/tree/3.7.0"
+ "source": "https://github.com/Codeception/Stub/tree/master"
},
- "time": "2020-07-03T15:54:43+00:00"
+ "time": "2019-08-10T16:20:53+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.4.0",
+ "version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": ">=5.3,<8.0-DEV"
},
"require-dev": {
- "doctrine/coding-standard": "^8.0",
+ "athletic/athletic": "~0.1.8",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "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/"
@@ -3521,34 +3048,20 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "https://ocramius.github.io/"
+ "homepage": "http://ocramius.github.com/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "homepage": "https://github.com/doctrine/instantiator",
"keywords": [
"constructor",
"instantiate"
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ "source": "https://github.com/doctrine/instantiator/tree/master"
},
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
- "type": "tidelift"
- }
- ],
- "time": "2020-11-10T18:47:58+00:00"
+ "time": "2015-06-14T21:17:01+00:00"
},
{
"name": "monolog/monolog",
@@ -3634,28 +3147,25 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.2",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
+ "php": "^5.6 || ^7.0"
},
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "phpunit/phpunit": "^4.1"
},
"type": "library",
"autoload": {
@@ -3680,41 +3190,34 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
},
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
- "time": "2020-11-13T09:40:50+00:00"
+ "time": "2017-10-19T19:58:43+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-phar": "*",
- "ext-xmlwriter": "*",
- "phar-io/version": "^3.0.1",
- "php": "^7.2 || ^8.0"
+ "phar-io/version": "^1.0.1",
+ "php": "^5.6 || ^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -3748,24 +3251,24 @@
"issues": "https://github.com/phar-io/manifest/issues",
"source": "https://github.com/phar-io/manifest/tree/master"
},
- "time": "2020-06-27T14:33:11+00:00"
+ "time": "2017-03-05T18:14:27+00:00"
},
{
"name": "phar-io/version",
- "version": "3.1.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "bae7c545bef187884426f042434e561ab1ddb182"
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
- "reference": "bae7c545bef187884426f042434e561ab1ddb182",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^5.6 || ^7.0"
},
"type": "library",
"autoload": {
@@ -3797,9 +3300,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.1.0"
+ "source": "https://github.com/phar-io/version/tree/master"
},
- "time": "2021-02-23T14:00:09+00:00"
+ "time": "2017-03-05T17:38:23+00:00"
},
{
"name": "php-http/curl-client",
@@ -4175,30 +3678,35 @@
},
{
"name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-2.x": "2.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -4222,43 +3730,47 @@
],
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
},
- "time": "2020-06-27T09:03:43+00:00"
+ "time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.2.2",
+ "version": "4.3.4",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
"shasum": ""
},
"require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
+ "webmozart/assert": "^1.0"
},
"require-dev": {
- "mockery/mockery": "~1.3.2"
+ "doctrine/instantiator": "^1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpdocumentor/type-resolver": "0.4.*",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.x-dev"
+ "dev-master": "4.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src"
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -4269,44 +3781,41 @@
{
"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.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
},
- "time": "2020-09-03T19:13:55+00:00"
+ "time": "2019-12-28T18:55:12+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.4.0",
+ "version": "0.5.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
- "ext-tokenizer": "*"
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-1.x": "1.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -4324,42 +3833,41 @@
"email": "me@mikevanriel.com"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
},
- "time": "2020-09-17T18:55:26+00:00"
+ "time": "2017-12-30T13:23:38+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "1.13.0",
+ "version": "v1.10.3",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
},
"require-dev": {
- "phpspec/phpspec": "^6.0",
- "phpunit/phpunit": "^8.0 || ^9.0"
+ "phpspec/phpspec": "^2.5 || ^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.11.x-dev"
+ "dev-master": "1.10.x-dev"
}
},
"autoload": {
@@ -4394,46 +3902,46 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+ "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
},
- "time": "2021-03-17T13:42:18+00:00"
+ "time": "2020-03-05T15:02:03+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "7.0.14",
+ "version": "5.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c"
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bb7c9a210c72e4709cdde67f8b7362f672f2225c",
- "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xmlwriter": "*",
- "php": ">=7.2",
- "phpunit/php-file-iterator": "^2.0.2",
+ "php": "^7.0",
+ "phpunit/php-file-iterator": "^1.4.2",
"phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^3.1.1 || ^4.0",
+ "phpunit/php-token-stream": "^2.0.1",
"sebastian/code-unit-reverse-lookup": "^1.0.1",
- "sebastian/environment": "^4.2.2",
+ "sebastian/environment": "^3.0",
"sebastian/version": "^2.0.1",
- "theseer/tokenizer": "^1.1.3"
+ "theseer/tokenizer": "^1.1"
},
"require-dev": {
- "phpunit/phpunit": "^8.2.2"
+ "phpunit/phpunit": "^6.0"
},
"suggest": {
- "ext-xdebug": "^2.7.2"
+ "ext-xdebug": "^2.5.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "7.0-dev"
+ "dev-master": "5.3.x-dev"
}
},
"autoload": {
@@ -4461,40 +3969,31 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-12-02T13:39:03+00:00"
+ "time": "2018-04-06T15:36:58+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "2.0.3",
+ "version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357"
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357",
- "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
"shasum": ""
},
"require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5"
+ "php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.4.x-dev"
}
},
"autoload": {
@@ -4509,7 +4008,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
+ "email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
@@ -4520,16 +4019,11 @@
"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/2.0.3"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T08:25:21+00:00"
+ "time": "2017-11-27T13:52:08+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -4578,28 +4072,28 @@
},
{
"name": "phpunit/php-timer",
- "version": "2.1.3",
+ "version": "1.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
- "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.3.3 || ^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5"
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
@@ -4614,7 +4108,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
+ "email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
@@ -4625,41 +4119,35 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T08:20:02+00:00"
+ "time": "2017-02-26T11:10:40+00:00"
},
{
"name": "phpunit/php-token-stream",
- "version": "3.1.2",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "472b687829041c24b25f475e14c2f38a09edf1c2"
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/472b687829041c24b25f475e14c2f38a09edf1c2",
- "reference": "472b687829041c24b25f475e14c2f38a09edf1c2",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=7.1"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.0"
+ "phpunit/phpunit": "^6.2.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -4684,65 +4172,60 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
- "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.2"
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
"abandoned": true,
- "time": "2020-11-30T08:38:46+00:00"
+ "time": "2017-11-27T05:48:46+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "8.5.17",
+ "version": "6.5.14",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da"
+ "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/79067856d85421c56d413bd238d4e2cd6b0e54da",
- "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+ "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.0",
- "phar-io/manifest": "^2.0.1",
- "phar-io/version": "^3.0.2",
- "php": ">=7.2",
- "phpspec/prophecy": "^1.10.3",
- "phpunit/php-code-coverage": "^7.0.12",
- "phpunit/php-file-iterator": "^2.0.2",
+ "myclabs/deep-copy": "^1.6.1",
+ "phar-io/manifest": "^1.0.1",
+ "phar-io/version": "^1.0",
+ "php": "^7.0",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^5.3",
+ "phpunit/php-file-iterator": "^1.4.3",
"phpunit/php-text-template": "^1.2.1",
- "phpunit/php-timer": "^2.1.2",
- "sebastian/comparator": "^3.0.2",
- "sebastian/diff": "^3.0.2",
- "sebastian/environment": "^4.2.3",
- "sebastian/exporter": "^3.1.2",
- "sebastian/global-state": "^3.0.0",
+ "phpunit/php-timer": "^1.0.9",
+ "phpunit/phpunit-mock-objects": "^5.0.9",
+ "sebastian/comparator": "^2.1",
+ "sebastian/diff": "^2.0",
+ "sebastian/environment": "^3.1",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
"sebastian/object-enumerator": "^3.0.3",
- "sebastian/resource-operations": "^2.0.1",
- "sebastian/type": "^1.1.3",
+ "sebastian/resource-operations": "^1.0",
"sebastian/version": "^2.0.1"
},
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2",
+ "phpunit/dbunit": "<3.0"
+ },
"require-dev": {
"ext-pdo": "*"
},
"suggest": {
- "ext-soap": "*",
"ext-xdebug": "*",
- "phpunit/php-invoker": "^2.0.0"
+ "phpunit/php-invoker": "^1.1"
},
"bin": [
"phpunit"
@@ -4750,7 +4233,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "8.5-dev"
+ "dev-master": "6.5.x-dev"
}
},
"autoload": {
@@ -4778,89 +4261,93 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.17"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14"
},
- "funding": [
- {
- "url": "https://phpunit.de/donate.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2021-06-23T05:12:43+00:00"
+ "time": "2019-02-01T05:22:47+00:00"
},
{
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "5.0.10",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "doctrine/instantiator": "^1.0.5",
+ "php": "^7.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "sebastian/exporter": "^3.1"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5.11"
+ },
+ "suggest": {
+ "ext-soap": "*"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"autoload": {
- "psr-4": {
- "Psr\\EventDispatcher\\": "src/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Standard interfaces for event handling.",
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
"keywords": [
- "events",
- "psr",
- "psr-14"
+ "mock",
+ "xunit"
],
"support": {
- "issues": "https://github.com/php-fig/event-dispatcher/issues",
- "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10"
},
- "time": "2019-01-08T18:20:26+00:00"
+ "abandoned": true,
+ "time": "2018-08-09T05:50:03+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.2",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": "^5.6 || ^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5"
+ "phpunit/phpunit": "^5.7 || ^6.0"
},
"type": "library",
"extra": {
@@ -4887,42 +4374,36 @@
"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"
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T08:15:22+00:00"
+ "time": "2017-03-04T06:30:41+00:00"
},
{
"name": "sebastian/comparator",
- "version": "3.0.3",
+ "version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
- "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "sebastian/diff": "^3.0",
+ "php": "^7.0",
+ "sebastian/diff": "^2.0 || ^3.0",
"sebastian/exporter": "^3.1"
},
"require-dev": {
- "phpunit/phpunit": "^8.5"
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "2.1.x-dev"
}
},
"autoload": {
@@ -4936,10 +4417,6 @@
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
},
@@ -4950,6 +4427,10 @@
{
"name": "Bernhard Schussek",
"email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
}
],
"description": "Provides the functionality to compare PHP values for equality",
@@ -4961,41 +4442,34 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T08:04:30+00:00"
+ "time": "2018-02-01T13:46:46+00:00"
},
{
"name": "sebastian/diff",
- "version": "3.0.3",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
- "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.5 || ^8.0",
- "symfony/process": "^2 || ^3.3 || ^4"
+ "phpunit/phpunit": "^6.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -5009,61 +4483,49 @@
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
"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",
- "udiff",
- "unidiff",
- "unified diff"
+ "diff"
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/diff/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:59:04+00:00"
+ "time": "2017-08-03T08:09:46+00:00"
},
{
"name": "sebastian/environment",
- "version": "4.2.4",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
- "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.5"
- },
- "suggest": {
- "ext-posix": "*"
+ "phpunit/phpunit": "^6.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.2-dev"
+ "dev-master": "3.1.x-dev"
}
},
"autoload": {
@@ -5090,32 +4552,26 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
+ "source": "https://github.com/sebastianbergmann/environment/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:53:42+00:00"
+ "time": "2017-07-01T08:51:00+00:00"
},
{
"name": "sebastian/exporter",
- "version": "3.1.3",
+ "version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
- "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
"shasum": ""
},
"require": {
- "php": ">=7.0",
+ "php": "^7.0",
"sebastian/recursion-context": "^3.0"
},
"require-dev": {
@@ -5167,38 +4623,29 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:47:53+00:00"
+ "time": "2019-09-14T09:02:43+00:00"
},
{
"name": "sebastian/global-state",
- "version": "3.0.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b"
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b",
- "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
"shasum": ""
},
"require": {
- "php": ">=7.2",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
+ "php": "^7.0"
},
"require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^8.0"
+ "phpunit/phpunit": "^6.0"
},
"suggest": {
"ext-uopz": "*"
@@ -5206,7 +4653,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -5231,32 +4678,26 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:43:24+00:00"
+ "time": "2017-04-27T15:39:26+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "3.0.4",
+ "version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
"shasum": ""
},
"require": {
- "php": ">=7.0",
+ "php": "^7.0",
"sebastian/object-reflector": "^1.1.1",
"sebastian/recursion-context": "^3.0"
},
@@ -5288,32 +4729,26 @@
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:40:27+00:00"
+ "time": "2017-08-03T12:35:26+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "1.1.2",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
"shasum": ""
},
"require": {
- "php": ">=7.0"
+ "php": "^7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
@@ -5343,32 +4778,26 @@
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:37:18+00:00"
+ "time": "2017-03-29T09:07:27+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "3.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
"shasum": ""
},
"require": {
- "php": ">=7.0"
+ "php": "^7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
@@ -5390,14 +4819,14 @@
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
},
{
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
"name": "Adam Harvey",
"email": "aharvey@php.net"
}
@@ -5406,37 +4835,31 @@
"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/3.0.1"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:34:24+00:00"
+ "time": "2017-03-03T06:23:57+00:00"
},
{
"name": "sebastian/resource-operations",
- "version": "2.0.2",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
- "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=5.6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -5458,71 +4881,9 @@
"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/2.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:30:19+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "1.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4",
- "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4",
- "shasum": ""
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
},
- "require": {
- "php": ">=7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-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": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "support": {
- "issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/1.1.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-11-30T07:25:11+00:00"
+ "time": "2015-07-28T20:34:47+00:00"
},
{
"name": "sebastian/version",
@@ -5572,124 +4933,39 @@
"time": "2016-10-03T07:35:21+00:00"
},
{
- "name": "symfony/console",
- "version": "v5.3.2",
+ "name": "symfony/browser-kit",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1"
+ "url": "https://github.com/symfony/browser-kit.git",
+ "reference": "2084c70ace7605fb0984991fd0f575814bfcc8fe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2084c70ace7605fb0984991fd0f575814bfcc8fe",
+ "reference": "2084c70ace7605fb0984991fd0f575814bfcc8fe",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
- },
- "conflict": {
- "symfony/dependency-injection": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
- },
- "provide": {
- "psr/log-implementation": "1.0"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/dom-crawler": "~2.8|~3.0|~4.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "symfony/css-selector": "~2.8|~3.0|~4.0",
+ "symfony/process": "~2.8|~3.0|~4.0"
},
"suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
"symfony/process": ""
},
"type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "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"
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
}
- ],
- "description": "Eases the creation of beautiful and testable command line interfaces",
- "homepage": "https://symfony.com",
- "keywords": [
- "cli",
- "command line",
- "console",
- "terminal"
- ],
- "support": {
- "source": "https://github.com/symfony/console/tree/v5.3.2"
},
- "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": "2021-06-12T09:42:48+00:00"
- },
- {
- "name": "symfony/css-selector",
- "version": "v5.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
- "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
+ "Symfony\\Component\\BrowserKit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -5705,18 +4981,14 @@
"email": "fabien@symfony.com"
},
{
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Converts CSS selectors to XPath expressions",
+ "description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.3.0"
+ "source": "https://github.com/symfony/browser-kit/tree/v3.4.45"
},
"funding": [
{
@@ -5732,120 +5004,57 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:40:38+00:00"
+ "time": "2020-09-02T16:06:40+00:00"
},
{
- "name": "symfony/deprecation-contracts",
- "version": "v2.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "files": [
- "function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v5.3.0",
+ "name": "symfony/console",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce"
+ "url": "https://github.com/symfony/console.git",
+ "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce",
- "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce",
+ "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
+ "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/event-dispatcher-contracts": "^2",
- "symfony/polyfill-php80": "^1.15"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/dependency-injection": "<4.4"
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
},
"provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
+ "psr/log-implementation": "1.0"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
},
"suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
+ "Symfony\\Component\\Console\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -5865,10 +5074,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "description": "Symfony Console Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.0"
+ "source": "https://github.com/symfony/console/tree/v3.4.45"
},
"funding": [
{
@@ -5884,108 +5093,34 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2020-09-09T05:09:37+00:00"
},
{
- "name": "symfony/event-dispatcher-contracts",
- "version": "v2.4.0",
+ "name": "symfony/css-selector",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11"
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11",
- "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/9ccf6e78077a3fc1596e6c7b5958008965a11518",
+ "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/event-dispatcher": "^1"
- },
- "suggest": {
- "symfony/event-dispatcher-implementation": ""
+ "php": "^5.5.9|>=7.0.8"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to dispatching event",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.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"
+ "dev-master": "3.4-dev"
}
- ],
- "time": "2021-03-23T23:28:01+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v5.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
- "shasum": ""
},
- "require": {
- "php": ">=7.2.5"
- },
- "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Finder\\": ""
+ "Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -6001,14 +5136,18 @@
"email": "fabien@symfony.com"
},
{
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Finds files and directories via an intuitive fluent interface",
+ "description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.3.0"
+ "source": "https://github.com/symfony/css-selector/tree/v3.4.45"
},
"funding": [
{
@@ -6024,44 +5163,44 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T12:52:38+00:00"
+ "time": "2020-03-16T08:31:04+00:00"
},
{
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.0",
+ "name": "symfony/debug",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "9109e4414e684d0b75276ae203883467476d25d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
+ "reference": "9109e4414e684d0b75276ae203883467476d25d0",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
},
- "suggest": {
- "ext-intl": "For best performance"
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ "Symfony\\Component\\Debug\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -6070,26 +5209,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's grapheme_* functions",
+ "description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "grapheme",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+ "source": "https://github.com/symfony/debug/tree/3.4"
},
"funding": [
{
@@ -6105,47 +5236,45 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2020-09-08T22:19:14+00:00"
},
{
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.23.0",
+ "name": "symfony/dom-crawler",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ "url": "https://github.com/symfony/dom-crawler.git",
+ "reference": "82fe363780d2d2089066e34495a7f8bd56f2bf84"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/82fe363780d2d2089066e34495a7f8bd56f2bf84",
+ "reference": "82fe363780d2d2089066e34495a7f8bd56f2bf84",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "require-dev": {
+ "symfony/css-selector": "~2.8|~3.0|~4.0"
},
"suggest": {
- "ext-intl": "For best performance"
+ "symfony/css-selector": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ "Symfony\\Component\\DomCrawler\\": ""
},
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -6154,26 +5283,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+ "source": "https://github.com/symfony/dom-crawler/tree/3.4"
},
"funding": [
{
@@ -6189,44 +5310,52 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2020-09-02T16:06:40+00:00"
},
{
- "name": "symfony/polyfill-php73",
- "version": "v1.23.0",
+ "name": "symfony/event-dispatcher",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
+ "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/debug": "~3.4|~4.4",
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
+ "Symfony\\Component\\EventDispatcher\\": ""
},
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -6235,24 +5364,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v3.4.45"
},
"funding": [
{
@@ -6268,123 +5391,35 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2020-09-18T12:06:50+00:00"
},
{
- "name": "symfony/service-contracts",
- "version": "v2.2.0",
+ "name": "symfony/finder",
+ "version": "v3.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
+ "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.0"
- },
- "suggest": {
- "symfony/service-implementation": ""
+ "php": "^5.5.9|>=7.0.8"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/master"
- },
- "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"
+ "dev-master": "3.4-dev"
}
- ],
- "time": "2020-09-07T11:33:47+00:00"
- },
- {
- "name": "symfony/string",
- "version": "v5.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/string.git",
- "reference": "0732e97e41c0a590f77e231afc16a327375d50b0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/0732e97e41c0a590f77e231afc16a327375d50b0",
- "reference": "0732e97e41c0a590f77e231afc16a327375d50b0",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
- "symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
- },
- "require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
},
- "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\String\\": ""
+ "Symfony\\Component\\Finder\\": ""
},
- "files": [
- "Resources/functions.php"
- ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -6395,26 +5430,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "description": "Symfony Finder Component",
"homepage": "https://symfony.com",
- "keywords": [
- "grapheme",
- "i18n",
- "string",
- "unicode",
- "utf-8",
- "utf8"
- ],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.3.2"
+ "source": "https://github.com/symfony/finder/tree/v3.4.45"
},
"funding": [
{
@@ -6430,27 +5457,27 @@
"type": "tidelift"
}
],
- "time": "2021-06-06T09:51:56+00:00"
+ "time": "2020-09-02T16:06:40+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^7.0"
},
"type": "library",
"autoload": {
@@ -6474,45 +5501,34 @@
"issues": "https://github.com/theseer/tokenizer/issues",
"source": "https://github.com/theseer/tokenizer/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2019-06-13T22:48:21+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.10.0",
+ "version": "1.9.1",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
+ "php": "^5.3.3 || ^7.0 || ^8.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
+ "vimeo/psalm": "<3.9.1"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
@@ -6536,39 +5552,33 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
},
- "time": "2021-03-09T10:59:23+00:00"
+ "time": "2020-07-08T17:02:28+00:00"
},
{
"name": "woohoolabs/yang",
- "version": "2.3.2",
+ "version": "0.9.0",
"source": {
"type": "git",
"url": "https://github.com/woohoolabs/yang.git",
- "reference": "da65122971fa6add83751497ec76af1fb6cccf77"
+ "reference": "00dc9820d48780364cd214537604b032d751a781"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/woohoolabs/yang/zipball/da65122971fa6add83751497ec76af1fb6cccf77",
- "reference": "da65122971fa6add83751497ec76af1fb6cccf77",
+ "url": "https://api.github.com/repos/woohoolabs/yang/zipball/00dc9820d48780364cd214537604b032d751a781",
+ "reference": "00dc9820d48780364cd214537604b032d751a781",
"shasum": ""
},
"require": {
- "php": "^7.2.0||^8.0.0",
- "php-http/httplug": "^1.0.0|^2.0.0",
- "psr/http-message-implementation": "^1.0.0"
+ "php": "^5.6.0||^7.0.0",
+ "php-http/client-implementation": "^1.0.0",
+ "php-http/httplug": "^1.0.0"
},
"require-dev": {
- "guzzlehttp/psr7": "^1.4.0",
- "php-http/guzzle6-adapter": "^2.0.0",
- "phpstan/phpstan": "^0.12.0",
- "phpstan/phpstan-phpunit": "^0.12.0",
- "phpstan/phpstan-strict-rules": "^0.12.0",
- "phpunit/phpunit": "^7.0.0||^8.2.0||^9.0.0",
- "squizlabs/php_codesniffer": "^3.5.1",
- "woohoolabs/coding-standard": "^1.0.0",
- "woohoolabs/releaser": "^1.1.0"
+ "php-http/guzzle6-adapter": "^1.1.0",
+ "phpunit/phpunit": "^5.4.0",
+ "squizlabs/php_codesniffer": "^2.3.1"
},
"suggest": {
"php-http/guzzle6-adapter": "Allows to use Guzzle 6 as the HTTP client implementation"
@@ -6590,18 +5600,18 @@
}
],
"description": "Woohoo Labs. Yang",
+ "homepage": "http://yang.woohoolabs.com",
"keywords": [
"Woohoo Labs.",
"Yang",
"json api",
- "psr-18",
"psr-7"
],
"support": {
"issues": "https://github.com/woohoolabs/yang/issues",
"source": "https://github.com/woohoolabs/yang"
},
- "time": "2020-11-15T08:55:55+00:00"
+ "time": "2016-12-21T20:37:46+00:00"
}
],
"aliases": [],
diff --git a/db/migrations/5.1.13_add_twillo_support.php b/db/migrations/5.1.13_add_twillo_support.php
new file mode 100644
index 0000000..0a65ddf
--- /dev/null
+++ b/db/migrations/5.1.13_add_twillo_support.php
@@ -0,0 +1,164 @@
+<?php
+
+class AddTwilloSupport extends Migration
+{
+ public function description()
+ {
+ return "Adds Twillo to OER Campus.";
+ }
+
+ public function up()
+ {
+ DBManager::get()->exec("
+ ALTER TABLE `oer_material`
+ ADD COLUMN `uri` varchar(1000) NOT NULL DEFAULT '' AFTER `license_identifier`,
+ ADD COLUMN `uri_hash` char(32) NOT NULL DEFAULT '' AFTER `uri`,
+ ADD COLUMN `published_id_on_twillo` varchar(50) DEFAULT NULL AFTER `uri_hash`,
+ ADD KEY `uri_hash` (`uri_hash`)
+ ");
+ $statement = DBManager::get()->prepare("
+ SELECT *
+ FROM `oer_material`
+ WHERE `host_id` IS NULL
+ ");
+ $statement->execute();
+ $update_uri = DBManager::get()->prepare("
+ UPDATE `oer_material`
+ SET `uri` = :uri,
+ `uri_hash` = :uri_hash
+ WHERE `material_id` = :material_id
+ ");
+ while ($material_data = $statement->fetch()) {
+ $uri = ($GLOBALS['OER_PREFERRED_URI'] ?: $GLOBALS['ABSOLUTE_URI_STUDIP'])
+ . "dispatch.php/oer/market/details/"
+ . $material_data['material_id'];
+ $update_uri->execute([
+ 'uri' => $uri,
+ 'uri_hash' => md5($uri),
+ 'material_id' => $material_data['material_id']
+ ]);
+ }
+ DBManager::get()->exec("
+ ALTER TABLE `licenses`
+ ADD COLUMN `twillo_licensekey` varchar(16) DEFAULT NULL AFTER `description`,
+ ADD COLUMN `twillo_cclicenseversion` varchar(8) DEFAULT NULL AFTER `twillo_licensekey`
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY',
+ `twillo_cclicenseversion` = '1.0'
+ WHERE `identifier` = 'CC-BY-1.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY',
+ `twillo_cclicenseversion` = '2.0'
+ WHERE `identifier` = 'CC-BY-2.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY',
+ `twillo_cclicenseversion` = '2.5'
+ WHERE `identifier` = 'CC-BY-2.5'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY',
+ `twillo_cclicenseversion` = '3.0'
+ WHERE `identifier` = 'CC-BY-3.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY',
+ `twillo_cclicenseversion` = '4.0'
+ WHERE `identifier` = 'CC-BY-4.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY_SA',
+ `twillo_cclicenseversion` = '1.0'
+ WHERE `identifier` = 'CC-BY-SA-1.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY_SA',
+ `twillo_cclicenseversion` = '2.0'
+ WHERE `identifier` = 'CC-BY-SA-2.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY_SA',
+ `twillo_cclicenseversion` = '2.5'
+ WHERE `identifier` = 'CC-BY-SA-2.5'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY_SA',
+ `twillo_cclicenseversion` = '3.0'
+ WHERE `identifier` = 'CC-BY-SA-3.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_BY_SA',
+ `twillo_cclicenseversion` = '4.0'
+ WHERE `identifier` = 'CC-BY-SA-4.0'
+ ");
+ DBManager::get()->exec("
+ UPDATE `licenses`
+ SET `twillo_licensekey` = 'CC_0',
+ `twillo_cclicenseversion` = '1.0'
+ WHERE `identifier` = 'CC0-1.0'
+ ");
+
+ DBManager::get()->exec(
+ "INSERT IGNORE INTO `config`
+ (`field`, `value`, `type`, `range`,
+ `section`,
+ `mkdate`, `chdate`,
+ `description`)
+ VALUES
+ ('OERCAMPUS_ENABLE_TWILLO', '0', 'boolean', 'global',
+ 'OERCampus', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),
+ 'Soll der Upload zu twillo.de vom OERCampus möglich sein? Folgen Sie dazu der Installationsanleitung.')"
+ );
+ DBManager::get()->exec(
+ "INSERT IGNORE INTO `config`
+ (`field`, `value`, `type`, `range`,
+ `section`,
+ `mkdate`, `chdate`,
+ `description`)
+ VALUES
+ ('OERCAMPUS_TWILLO_APPID', '', 'string', 'global',
+ 'OERCampus', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),
+ 'Welche ID hat dieses Stud.IP, wenn es mit twillo.de kommuniziert?')"
+ );
+ DBManager::get()->exec(
+ "INSERT IGNORE INTO `config`
+ (`field`, `value`, `type`, `range`,
+ `section`,
+ `mkdate`, `chdate`,
+ `description`)
+ VALUES
+ ('OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD', '', 'string', 'global',
+ 'OERCampus', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),
+ 'Welches Datenfeld eines Nutzers trägt dessen DFN-AAI-ID?')"
+ );
+
+ SimpleORMap::expireTableScheme();
+ }
+
+ public function down()
+ {
+ DBManager::get()->exec("
+ ALTER TABLE `licenses`
+ DROP COLUMN `twillo_licensekey`,
+ DROP COLUMN `twillo_cclicenseversion`
+ ");
+ DBManager::get()->exec("
+ ALTER TABLE `oer_material`
+ DROP COLUMN `uri`,
+ DROP COLUMN `uri_hash`
+ ");
+ }
+}
+
diff --git a/lib/bootstrap-autoload.php b/lib/bootstrap-autoload.php
index 994a2bd..05d424a 100644
--- a/lib/bootstrap-autoload.php
+++ b/lib/bootstrap-autoload.php
@@ -100,3 +100,21 @@ StudipAutoloader::addClassLookup(
['xmlrpc_server'],
'composer/phpxmlrpc/phpxmlrpc/lib/xmlrpcs.inc'
);
+
+//Edu-Sharing helper classes for twillo connector
+StudipAutoloader::addClassLookup(
+ 'EduSharingHelper',
+ 'vendor/edu-sharing-plugin/edu-sharing-helper.php'
+);
+StudipAutoloader::addClassLookup(
+ 'EduSharingHelperBase',
+ 'vendor/edu-sharing-plugin/edu-sharing-helper-base.php'
+);
+StudipAutoloader::addClassLookup(
+ 'EduSharingAuthHelper',
+ 'vendor/edu-sharing-plugin/edu-sharing-auth-helper.php'
+);
+StudipAutoloader::addClassLookup(
+ 'EduSharingNodeHelper',
+ 'vendor/edu-sharing-plugin/edu-sharing-node-helper.php'
+);
diff --git a/lib/classes/TwilloConnector.php b/lib/classes/TwilloConnector.php
new file mode 100644
index 0000000..e91d912
--- /dev/null
+++ b/lib/classes/TwilloConnector.php
@@ -0,0 +1,274 @@
+<?php
+
+/**
+ * Class TwilloConnector manages all transactions between Stud.IP and twillo.de.
+ */
+class TwilloConnector
+{
+ /**
+ * Caches the edusharing EDU-ticket for the same request.
+ * @var null|string
+ */
+ static protected $ticket = null;
+
+ /**
+ * Returns the DFN-AAI-ID for the given user. This ID must be the content of a datafield with the
+ * datafield_id in the global config OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD. If either this config or
+ * the content of the datafield is null, this method returns false;
+ * @param null $user_id
+ * @return false|string
+ */
+ public static function getTwilloUserID($user_id = null)
+ {
+ $user_id || $user_id = User::findCurrent()->id;
+ if (Config::get()->OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD) {
+ $entry = DatafieldEntryModel::findOneBySQL('`datafield_id` = :datafield_id AND `range_id` = :user_id ', [
+ 'datafield_id' => Config::get()->OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD,
+ 'user_id' => $user_id
+ ]);
+ if ($entry) {
+ return $entry['content'] ?: false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Transfers the material to twillo.
+ * @param OERMaterial $material : the material to transfer
+ * @param null|string $user_id : The user in whose filesystem of twillo the material should be uploaded to.
+ * @return bool|string : true on success, on failure a text-string as error-message
+ * @throws Exception
+ */
+ public static function uploadMaterial(OERMaterial $material, $user_id = null)
+ {
+ $user_id || $user_id = User::findCurrent()->id;
+ $base = new EduSharingHelperBase(
+ 'https://www.twillo.de/edu-sharing',
+ file_get_contents($GLOBALS['STUDIP_BASE_PATH']."/config/twillo-private.key"),
+ Config::get()->OERCAMPUS_TWILLO_APPID // 'data-quest-Test'
+ );
+ $authHelper = new EduSharingAuthHelper($base);
+ if (!static::$ticket) {
+ static::$ticket = $authHelper->getTicketForUser(TwilloConnector::getTwilloUserID($user_id));
+ }
+
+ //the use this edu-ticket to authenticate.
+
+ if (!$material['published_id_on_twillo']) { //Anlegen des materials als Dateihülle:
+ //frage, ob es einen Ordner gibt:
+ $header = [];
+ $header[] = "Authorization: EDU-TICKET ".static::$ticket;
+ $header[] = "Content-Type: application/json";
+ $header[] = "Accept: application/json";
+
+ $cr = curl_init();
+ curl_setopt($cr, CURLOPT_URL, 'https://www.twillo.de/edu-sharing/rest/node/v1/nodes/-home-/-userhome-/children');
+ curl_setopt($cr, CURLOPT_HTTPHEADER, $header);
+ curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, false);
+ $body = curl_exec($cr);
+ $error = curl_error($cr);
+ if ($error) {
+ return $error;
+ }
+ curl_close($cr);
+ $body = json_decode($body, true);
+
+
+ $subfolder_id = null;
+
+ foreach ($body['nodes'] as $nodedata) {
+ if ($nodedata['name'] === "OERCampusPublications") {
+ $subfolder_id = $nodedata['ref']['id'];
+ break;
+ }
+ }
+
+ if (!$subfolder_id) {
+ //erstelle den Ordner, wenn es ihn nicht gibt:
+ $header = [];
+ $header[] = "Authorization: EDU-TICKET ".static::$ticket;
+ $header[] = "Content-Type: application/json";
+ $header[] = "Accept: application/json";
+
+ $cr = curl_init();
+ curl_setopt($cr, CURLOPT_POST, 1);
+ curl_setopt($cr, CURLOPT_URL, 'https://www.twillo.de/edu-sharing/rest/node/v1/nodes/-home-/-userhome-/children?type=cm%3Afolder&renameIfExists=false&assocType=&versionComment=');
+ curl_setopt($cr, CURLOPT_HTTPHEADER, $header);
+ curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, false);
+ $postbody = json_encode([
+ 'cm:edu_forcemetadataset' => ['true'],
+ 'cm:edu_metadataset' => ['mds'],
+ 'cm:name' => ['OERCampusPublications']
+ ]);
+ curl_setopt($cr, CURLOPT_POSTFIELDS, $postbody);
+ $body = curl_exec($cr);
+ curl_close($cr);
+ $body = json_decode($body, true);
+
+ $subfolder_id = $body['node']['ref']['id'];
+ }
+
+ //Erstelle die Datei als Link:
+ $header = [];
+ $header[] = "Authorization: EDU-TICKET ".static::$ticket;
+ $header[] = "Content-Type: application/json";
+ $header[] = "Accept: application/json";
+
+ $cr = curl_init();
+ curl_setopt($cr, CURLOPT_POST, 1);
+ curl_setopt($cr, CURLOPT_URL, 'https://www.twillo.de/edu-sharing/rest/node/v1/nodes/-home-/'.$subfolder_id.'/children?type=ccm%3Aio&renameIfExists=true');
+ curl_setopt($cr, CURLOPT_HTTPHEADER, $header);
+ curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, false);
+ $postbody = json_encode([
+ 'ccm:wwwurl' => [$material->getDownloadUrl()],
+ 'ccm:linktype' => ["USER_GENERATED"],
+ //'cm:name' => [$material['name']]
+ ]);
+ curl_setopt($cr, CURLOPT_POSTFIELDS, $postbody);
+ $body = curl_exec($cr);
+ curl_close($cr);
+
+ $body = json_decode($body, true);
+ $material['published_id_on_twillo'] = $body['node']['ref']['id'];
+ $material->store();
+ }
+
+
+ $header = [];
+ $header[] = "Authorization: EDU-TICKET ".static::$ticket;
+ $header[] = "Content-Type: application/json";
+ $header[] = "Accept: application/json";
+
+ $cr = curl_init();
+ curl_setopt($cr, CURLOPT_POST, 1);
+ curl_setopt($cr, CURLOPT_URL, 'https://www.twillo.de/edu-sharing/rest/node/v1/nodes/-home-/'.$material['published_id_on_twillo'].'/metadata?versionComment=METADATA_UPDATE');
+ curl_setopt($cr, CURLOPT_HTTPHEADER, $header);
+ curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, false);
+ $old_base = URLHelper::setBaseURL($GLOBALS['ABSOLUTE_URI_STUDIP']);
+ $permalink = URLHelper::getLink("dispatch.php/oer/market/details/".$material->getId());
+ URLHelper::setBaseURL($old_base);
+ $topics = array_map(function ($t) { return $t['name'];}, $material->getTopics());
+ $postbody = json_encode([
+ 'ccm:original' => [""],
+ 'cm:created' => [(string) $material['mkdate']],
+ 'virtual:commentcount' => ["0"],
+ 'ccm:metadatacontributer_creatorVCARD_ORG' => [""],
+ 'cclom:version' => ["1.0"],
+ 'virtual:usagecount' => ["0"],
+ 'sys:node-uuid' => [$material['published_id_on_twillo']],
+ 'virtual:childobjectcount' => ["0"],
+ 'cclom:title' => [$material['name']],
+ 'ccm:linktype' => ['USER_GENERATED'],
+ 'ccm:lifecyclecontributer_authorVCARD_SURNAME' => ["Nachname"],
+ 'ccm:lifecyclecontributer_authorVCARD_URL' => [""],
+ 'ccm:lifecyclecontributer_authorVCARD_COUNTRY' => [''],
+ 'ccm:lifecyclecontributer_author' => ['BEGIN:VCARD\nN:Nachname;Vorname\nFN:Vorname Nachname\nVERSION:3.0\nEND:VCARD'],
+ 'ccm:lifecyclecontributer_authorVCARD_REGION' => [''],
+ 'ccm:lifecyclecontributer_authorVCARD_ORG' => [""],
+ 'ccm:lifecyclecontributer_authorVCARD_TITLE' => [""],
+ 'ccm:lifecyclecontributer_authorVCARD_STREET' => [''],
+ 'ccm:lifecyclecontributer_authorVCARD_PLZ' => [''],
+ 'ccm:lifecyclecontributer_authorVCARD_GIVENNAME' => ['Vorname'],
+ 'ccm:lifecyclecontributer_authorVCARD_CITY' => [''],
+ 'ccm:lifecyclecontributer_authorFN' => ["Vorname Nachname"],
+ 'ccm:lifecyclecontributer_authorVCARD_EMAIL' => [""],
+ 'ccm:lifecyclecontributer_authorVCARD_TEL' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_CITY' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_URL' => [''],
+ 'ccm:ccm:metadatacontributer_creatorVCARD_REGION' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_PLZ' => [''],
+ 'ccm:metadatacontributer_creator' => ['BEGIN:VCARD\nVERSION:3.0\nN:OER-Campus, Stud.IP\nFN:Stud.IP\nORG:\nURL:\nTITLE:\nTEL;TYPE=WORK,VOICE:\nADR;TYPE=intl,postal,parcel,work:;;;;;;\nEMAIL;TYPE=PREF,INTERNET:\nEND:VCARD'],
+ 'ccm:metadatacontributer_creatorVCARD_TEL' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_COUNTRY' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_EMAIL' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_TITLE' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_GIVENNAME' => ['open'],
+ 'ccm:metadatacontributer_creatorVCARD_STREET' => [''],
+ 'ccm:metadatacontributer_creatorVCARD_SURNAME' => ["Stud.IP"],
+ 'ccm:metadatacontributer_creatorFN' => ["open cast"],
+ 'sys:store-protocol' => ['workspace'],
+ 'sys:store-identifier' => ['SpacesStore'],
+ 'ccm:version_comment' => ['METADATA_UPDATE'],
+ 'ccm:educationallearningresourcetype' => ['exercise'], //?
+ 'ccm:create_version' => ['true'],
+ 'cm:modifiedISO8601' => [date("/r", $material['chdate'])],
+ 'ccm:author_freetext' => [''],
+ 'sys:node-dbid' => ['836'],
+ 'ccm:wwwurl' => [$material->getDownloadUrl()],
+ 'cm:edu_metadataset' => ['mds'],
+ 'cm:creator' => ['Stud.IP OER-Campus'],
+ 'cm:autoVersion' => ['false'],
+ 'virtual:permalink' => [$permalink],
+ 'cm:versionLabel' => ['1.0'],
+ 'cm:versionable' => ['false'],
+ 'cm:created_LONG' => [(string) $material['mkdate']],
+ 'virtual:primaryparent_nodeid' => [$subfolder_id],
+ 'cm:createdISO8601' => ['2020-11-20T14:00:17.805Z'],
+ 'ccm:ph_action' => ['PERMISSION_ADD'],
+ 'cclom:general_description' => [$material['description']],
+ 'cm:modified' => [(string) $material['chdate']],
+ 'cm:edu_forcemetadataset' => ['false'],
+ 'cm:modifier' => ['Stud.IP OER-Campus'],
+ 'ccm:educationallearningresourcetype_DISPLAYNAME' => ['Übung'],
+ 'cm:autoVersionOnUpdateProps' => ['false'],
+ "cclom:location" => ["ccrep://repo/".$material['published_id_on_twillo']],
+ 'ccm:educontextname' => ["default"],
+ 'cm:modified_LONG' => [(string) $material['chdate']],
+ 'ccm:questionsallowed' => ["true"],
+ 'cm:automaticUpdate' => ["true"],
+ 'cm:name' => [$material['filename']],
+ 'cm:initialVersion' => ["false"],
+ 'cclom:general_keyword' => $topics,
+ 'ccm:commonlicense_key' => [$material->license['twillo_licensekey']],
+ 'ccm:commonlicense_cc_version' => [$material->license['twillo_cclicenseversion']],
+ 'virtual:licenseicon' => [''],
+ 'virtual:licenseurl' => [''],
+ ]);
+ curl_setopt($cr, CURLOPT_POSTFIELDS, $postbody);
+ curl_exec($cr);
+ $error = curl_error($cr);
+ curl_close($cr);
+ if ($error) {
+ return $error;
+ }
+ return true;
+ }
+
+ public static function deleteFromTwillo($oer_id, $user_id = null)
+ {
+ $user_id || $user_id = User::findCurrent()->id;
+
+ $base = new EduSharingHelperBase(
+ 'https://www.twillo.de/edu-sharing',
+ file_get_contents($GLOBALS['STUDIP_BASE_PATH']."/config/twillo-private.key"),
+ Config::get()->OERCAMPUS_TWILLO_APPID // 'data-quest-Test'
+ );
+ $authHelper = new EduSharingAuthHelper($base);
+ if (!static::$ticket) {
+ static::$ticket = $authHelper->getTicketForUser(TwilloConnector::getTwilloUserID($user_id));
+ }
+
+ $header = [];
+ $header[] = "Authorization: EDU-TICKET " . static::$ticket;
+ $header[] = "Content-Type: application/json";
+ $header[] = "Accept: application/json";
+
+ $cr = curl_init();
+ curl_setopt($cr, CURLOPT_CUSTOMREQUEST, "DELETE");
+ curl_setopt($cr, CURLOPT_URL, 'https://www.twillo.de/edu-sharing/rest/node/v1/nodes/-home-/'.$oer_id);
+ curl_setopt($cr, CURLOPT_HTTPHEADER, $header);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, false);
+ curl_exec($cr);
+ curl_close($cr);
+ }
+}
diff --git a/lib/models/OERMaterial.php b/lib/models/OERMaterial.php
index 65acaa4..d718d60 100755
--- a/lib/models/OERMaterial.php
+++ b/lib/models/OERMaterial.php
@@ -23,6 +23,7 @@ class OERMaterial extends SimpleORMap
'foreign_key' => 'license_identifier'
];
$config['serialized_fields']['structure'] = 'JSONArrayObject';
+ $config['registered_callbacks']['before_store'][] = "cbHashURI";
$config['registered_callbacks']['before_delete'][] = "cbDeleteFile";
parent::configure($config);
}
@@ -181,6 +182,11 @@ class OERMaterial extends SimpleORMap
@unlink($this->getFilePath());
}
+ public function cbHashURI()
+ {
+ $this['uri_hash'] = md5($this['uri']);
+ }
+
public function getTopics()
{
$statement = DBManager::get()->prepare("
@@ -235,7 +241,7 @@ class OERMaterial extends SimpleORMap
$base = URLHelper::setBaseURL($GLOBALS['ABSOLUTE_URI_STUDIP']);
$url = $this['host_id']
? $this->host->url."download/".$this['foreign_material_id']
- : URLHelper::getURL("dispatch.php/oer/market/download/".$this->getId());
+ : URLHelper::getURL("dispatch.php/oer/endpoints/download/".$this->getId());
URLHelper::setBaseURL($base);
return $url;
}
@@ -373,6 +379,25 @@ class OERMaterial extends SimpleORMap
}
}
+ /**
+ * Uploads this material to twillo.de. This is not actually an upload but rather a link with metadata.
+ * @return bool|string : true on success, on failure a text-string as error-message
+ */
+ public function uploadToTwillo()
+ {
+ return TwilloConnector::uploadMaterial($this);
+ }
+
+ /**
+ * Removes this material from twillo.de if able.
+ */
+ public function deleteFromTwillo()
+ {
+ TwilloConnector::deleteFromTwillo($this['published_id_on_twillo']);
+ $this['published_id_on_twillo'] = null;
+ $this->store();
+ }
+
public function fetchData()
{
if ($this['host_id']) {
diff --git a/vendor/edu-sharing-plugin/edu-sharing-auth-helper.php b/vendor/edu-sharing-plugin/edu-sharing-auth-helper.php
new file mode 100644
index 0000000..071c0c6
--- /dev/null
+++ b/vendor/edu-sharing-plugin/edu-sharing-auth-helper.php
@@ -0,0 +1,101 @@
+<?php
+require_once "edu-sharing-helper-abstract.php";
+
+class EduSharingAuthHelper extends EduSharingHelperAbstract {
+
+ /**
+ * Gets detailed information about a ticket
+ * Will throw an exception if the given ticket is not valid anymore
+ * @param string $ticket
+ * The ticket, obtained by @getTicketForUser
+ * @return array
+ * Detailed information about the current session
+ * @throws Exception
+ * Thrown if the ticket is not valid anymore
+ */
+ public function getTicketAuthenticationInfo(string $ticket) {
+ $curl = curl_init($this->base->baseUrl . '/rest/authentication/v1/validateSession');
+ curl_setopt_array($curl, [
+ CURLOPT_HTTPHEADER => [
+ $this->getRESTAuthenticationHeader($ticket),
+ 'Accept: application/json',
+ 'Content-Type: application/json',
+ ],
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_CONNECTTIMEOUT => 5,
+ CURLOPT_TIMEOUT => 5
+ ]);
+ $data = json_decode(curl_exec($curl), true);
+ curl_close($curl);
+ if ( is_null( $data ) ) {
+ throw new Exception( 'No answer from repository. Possibly a timeout while trying to connect' );
+ }
+ if($data['statusCode'] !== 'OK') {
+ throw new Exception('The given ticket is not valid anymore');
+ }
+ return $data;
+ }
+
+ /**
+ * Fetches the edu-sharing ticket for a given username
+ * @param string $username
+ * The username you want to generate a ticket for
+ * @return string
+ * The ticket, which you can use as an authentication header, see @getRESTAuthenticationHeader
+ * @throws Exception
+ */
+ public function getTicketForUser(string $username, $bodyparams = null) {
+ if ($bodyparams === null) {
+ $bodyparams = [
+ "primaryAffiliation" => "employee",
+ "skills" => [
+ "string"
+ ],
+ "types" => [
+ "string"
+ ],
+ "extendedAttributes" => [
+ 'affiliation' => ["employee"]
+ ],
+ "vcard" => "string",
+ "firstName" => User::findCurrent()->vorname,
+ "lastName" => User::findCurrent()->nachname,
+ "email" => User::findCurrent()->email,
+ "avatar" => "string",
+ "about" => "string"
+ ];
+ }
+ $curl = curl_init($this->base->baseUrl . '/rest/authentication/v1/appauth/' . rawurlencode($username));
+ curl_setopt_array($curl, [
+ CURLOPT_POST => 1,
+ CURLOPT_FAILONERROR => false,
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_HTTPHEADER => $this->getSignatureHeaders($username),
+ CURLOPT_CONNECTTIMEOUT => 5,
+ CURLOPT_TIMEOUT => 5
+ ]);
+ curl_setopt(
+ $curl,
+ CURLOPT_POSTFIELDS,
+ is_array($bodyparams) ? json_encode($bodyparams) : (string) $bodyparams
+ );
+
+ $output = curl_exec($curl);
+ $data = json_decode($output, true);
+
+ $err = curl_errno( $curl );
+ $info = curl_getinfo($curl);
+ curl_close($curl);
+ if ($err === 0 && $info["http_code"] === 200 && $data['userId'] === $username) {
+ return $data['ticket'];
+ } else {
+ if ( is_null( $data ) ) {
+ $data = ['error' => $output];
+ }
+ throw new Exception(
+ 'edu-sharing ticket could not be retrieved: HTTP-Code ' .
+ $info["http_code"] . ': ' . $data['error']
+ );
+ }
+ }
+}
diff --git a/vendor/edu-sharing-plugin/edu-sharing-helper-abstract.php b/vendor/edu-sharing-plugin/edu-sharing-helper-abstract.php
new file mode 100644
index 0000000..d531eec
--- /dev/null
+++ b/vendor/edu-sharing-plugin/edu-sharing-helper-abstract.php
@@ -0,0 +1,43 @@
+<?php
+
+abstract class EduSharingHelperAbstract {
+ protected $base;
+ public function __construct(
+ EduSharingHelperBase $base
+ ) {
+ $this->base = $base;
+ }
+
+ /**
+ * Generates the header to use for a given ticket to authenticate with any edu-sharing api endpoint
+ * @param string $ticket
+ * The ticket, obtained by @getTicketForUser
+ * @return string
+ */
+ public function getRESTAuthenticationHeader(string $ticket) {
+ return 'Authorization: EDU-TICKET ' . $ticket;
+ }
+
+
+ protected function getSignatureHeaders(
+ string $signString,
+ $accept = 'application/json',
+ $contentType = 'application/json'
+ ) {
+ $ts = time() * 1000;
+ $toSign = $this->base->appId . $signString . $ts;
+ $signature = $this->sign($toSign);
+ return [
+ 'Accept: ' . $accept,
+ 'Content-Type: ' . $contentType,
+ 'X-Edu-App-Id: ' . $this->base->appId,
+ 'X-Edu-App-Signed: ' . $toSign,
+ 'X-Edu-App-Sig: ' . $signature,
+ 'X-Edu-App-Ts: ' . $ts,
+ ];
+ }
+
+ protected function sign(string $toSign) {
+ return $this->base->sign($toSign);
+ }
+} \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/edu-sharing-helper-base.php b/vendor/edu-sharing-plugin/edu-sharing-helper-base.php
new file mode 100644
index 0000000..ac3e2f6
--- /dev/null
+++ b/vendor/edu-sharing-plugin/edu-sharing-helper-base.php
@@ -0,0 +1,42 @@
+<?php
+
+class EduSharingHelperBase {
+ public $baseUrl;
+ public $privateKey;
+ public $appId;
+ public $language = 'de';
+
+ /**
+ * @param string $baseUrl
+ * The base url to your repository in the format "http://<host>/edu-sharing"
+ * @param string $privateKey
+ * Your app's private key. This must match the public key registered in the repo
+ * @param string $appId
+ * Your app id name (as registered in the edu-sharing repository)
+ */
+ public function __construct(
+ string $baseUrl,
+ string $privateKey,
+ string $appId
+ ) {
+ if(!preg_match('/^([a-z]|[A-Z]|[0-9]|[-_])+$/', $appId)) {
+ throw new Exception('The given app id contains invalid characters or symbols');
+ }
+ $this->baseUrl=$baseUrl;
+ $this->privateKey=$privateKey;
+ $this->appId=$appId;
+ }
+
+ public function setLanguage(string $language) {
+ $this->language = $language;
+ }
+
+ function sign(string $toSign) {
+ $pkeyid = openssl_get_privatekey($this->privateKey);
+ openssl_sign($toSign, $signature, $pkeyid);
+ $signature = base64_encode($signature);
+ openssl_free_key($pkeyid);
+ return $signature;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/edu-sharing-helper.php b/vendor/edu-sharing-plugin/edu-sharing-helper.php
new file mode 100644
index 0000000..3c9d884
--- /dev/null
+++ b/vendor/edu-sharing-plugin/edu-sharing-helper.php
@@ -0,0 +1,47 @@
+<?php
+
+class EduSharingHelper {
+ /**
+ * generate a new key pair (private + public) to be registered in the edu-sharing repository
+ * Store the data somewhere in your application, e.g. database
+ * use the public key returned to register the application in edu-sharing
+ * NOTE: This function will fail on windows-based systems!
+ * @throws Exception
+ */
+ public static function generateKeyPair(
+ )
+ {
+ $res = openssl_pkey_new();
+ if(!$res) {
+ throw new Exception("No result from openssl_pkey_new. Please check your php installation");
+ }
+ openssl_pkey_export($res, $privatekey);
+ $publickey = openssl_pkey_get_details($res);
+ $publickey = $publickey["key"];
+ return [
+ "privatekey" => $privatekey,
+ "publickey" => $publickey
+ ];
+ }
+
+ /**
+ * Generates an edu-sharing compatible xml file for registering the application
+ * This is a very basic function and is only intended for demonstration or manual use. Data is not escaped!
+ */
+ public static function generateEduAppXMLData(string $appId, string $publickey, string $type = 'LMS', string $publicIP = '*') {
+ return '<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+ <properties>
+ <entry key="appid">' . $appId . '</entry>
+ <entry key="public_key">' . $publickey . '</entry>
+ <entry key="type">' . $type . '</entry>
+ <entry key="domain"></entry>
+ <!-- in case of wildcard host: Replace this, if possible, with the public ip from your service -->
+ <entry key ="host">' . $publicIP . '</entry>
+ <!-- must be true -->
+ <entry key="trustedclient">true</entry>
+ </properties>
+ ';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/edu-sharing-node-helper.php b/vendor/edu-sharing-plugin/edu-sharing-node-helper.php
new file mode 100644
index 0000000..112d7d8
--- /dev/null
+++ b/vendor/edu-sharing-plugin/edu-sharing-node-helper.php
@@ -0,0 +1,175 @@
+<?php
+require_once "edu-sharing-helper-abstract.php";
+
+class DisplayMode {
+ const Inline = 'inline';
+ const Embed = 'embed';
+ const Dynamic = 'dynamic';
+}
+class Usage {
+ public $nodeId;
+ public $nodeVersion;
+ public $containerId;
+ public $resourceId;
+ public $usageId;
+
+ public function __construct($nodeId, $nodeVersion, $containerId, $resourceId, $usageId)
+ {
+ $this->nodeId = $nodeId;
+ $this->nodeVersion = $nodeVersion;
+ $this->containerId = $containerId;
+ $this->resourceId = $resourceId;
+ $this->usageId = $usageId;
+ }
+
+}
+class EduSharingNodeHelper extends EduSharingHelperAbstract {
+ /**
+ * creates a usage for a given node
+ * The given usage can later be used to fetch this node REGARDLESS of the actual user
+ * The usage gives permanent access to this node and acts similar to a license
+ * In order to be able to create an usage for a node, the current user (provided via the ticket)
+ * MUST have CC_PUBLISH permissions on the given node id
+ * @param string $ticket
+ * A ticket with the user session who is creating this usage
+ * @param string $containerId
+ * A unique page / course id this usage refers to inside your system (e.g. a database id of the page you include the usage)
+ * @param string $resourceId
+ * The individual resource id on the current page or course this object refers to
+ * (you may enumerate or use unique UUID's)
+ * @param string $nodeId
+ * The edu-sharing node id the usage shall be created for
+ * @param string|null $nodeVersion
+ * Optional: The fixed version this usage should refer to
+ * If you leave it empty, the usage will always refer to the latest version of the node
+ * @return Usage
+ * An usage element you can use with @getNodeByUsage
+ * Keep all data of this object stored inside your system!
+ */
+ public function createUsage(
+ string $ticket,
+ string $containerId,
+ string $resourceId,
+ string $nodeId,
+ string $nodeVersion = null
+ ) {
+ $curl = curl_init($this->base->baseUrl . '/rest/usage/v1/usages/repository/-home-');
+ $headers = $this->getSignatureHeaders($ticket);
+ $headers[] = $this->getRESTAuthenticationHeader($ticket);
+ curl_setopt_array($curl, [
+ CURLOPT_FAILONERROR => false,
+ CURLOPT_POST => 1,
+ CURLOPT_POSTFIELDS => json_encode([
+ 'appId' => $this->base->appId,
+ 'courseId' => $containerId,
+ 'resourceId' => $resourceId,
+ 'nodeId' => $nodeId,
+ 'nodeVersion' => $nodeVersion,
+ ]),
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_HTTPHEADER => $headers
+ ]);
+ $data = json_decode(curl_exec($curl), true);
+ $err = curl_errno( $curl );
+ $info = curl_getinfo($curl);
+ curl_close($curl);
+ if ($err === 0 && $info["http_code"] === 200) {
+ return new Usage(
+ $data['parentNodeId'],
+ $nodeVersion,
+ $containerId,
+ $resourceId,
+ $data['nodeId']
+ );
+ } else {
+ throw new Exception('creating usage failed ' .
+ $info["http_code"] . ': ' . $data['error'] . ' ' . $data['message']);
+ }
+
+ }
+
+ /**
+ * Loads the edu-sharing node refered by a given usage
+ * @param Usage $usage
+ * The usage, as previously returned by @createUsage
+ * @param string $displayMode
+ * The displayMode
+ * This will ONLY change the content representation inside the "detailsSnippet" return value
+ * @param array $renderingParams
+ * @return mixed
+ * Returns an object containing a "detailsSnippet" repesentation
+ * as well as the full node as provided by the REST API
+ * Please refer to the edu-sharing REST documentation for more details
+ * @throws Exception
+ */
+ public function getNodeByUsage(
+ Usage $usage,
+ $displayMode = DisplayMode::Inline,
+ array $renderingParams = null
+ )
+ {
+ $url = $this->base->baseUrl . '/rest/rendering/v1/details/-home-/' . rawurlencode($usage->nodeId);
+ $url .= '?displayMode=' . rawurlencode($displayMode);
+ if($usage->nodeVersion) {
+ $url .= '&version=' . rawurlencode($usage->nodeVersion);
+ }
+ $curl = curl_init($url);
+
+ $headers = $this->getSignatureHeaders($usage->usageId);
+ $headers[] = 'X-Edu-Usage-Node-Id: ' . $usage->nodeId;
+ $headers[] = 'X-Edu-Usage-Course-Id: ' . $usage->containerId;
+ $headers[] = 'X-Edu-Usage-Resource-Id: ' . $usage->resourceId;
+
+ curl_setopt_array($curl, [
+ CURLOPT_FAILONERROR => false,
+ CURLOPT_POST => 1,
+ CURLOPT_POSTFIELDS => json_encode($renderingParams),
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_HTTPHEADER => $headers
+ ]);
+ $data = json_decode(curl_exec($curl), true);
+ $err = curl_errno( $curl );
+ $info = curl_getinfo($curl);
+ if ($err === 0 && $info["http_code"] === 200) {
+ return $data;
+ } else {
+ throw new Exception('fetching node by usage failed ' .
+ $info["http_code"] . ': ' . $data['error'] . ' ' . $data['message']);
+ }
+ }
+
+ /**
+ * Deletes the given usage
+ * We trust that you've validated if the current user in your context is allowed to do so
+ * There is no restriction in deleting usages even from foreign users, as long as they were generated by your app
+ * Thus, this endpoint does not require any user ticket
+ * @param string $nodeId
+ * The edu-sharing node id this usage belongs to
+ * @param string $usageId
+ * The usage id
+ */
+ public function deleteUsage(
+ string $nodeId,
+ string $usageId
+ ) {
+ $curl = curl_init($this->base->baseUrl . '/rest/usage/v1/usages/node/' . rawurlencode($nodeId) . '/' . rawurlencode($usageId));
+ $headers = $this->getSignatureHeaders($nodeId.$usageId);
+ curl_setopt_array($curl, [
+ CURLOPT_FAILONERROR => false,
+ CURLOPT_CUSTOMREQUEST => 'DELETE',
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_HTTPHEADER => $headers
+ ]);
+ $data = json_decode(curl_exec($curl), true);
+ $err = curl_errno( $curl );
+ $info = curl_getinfo($curl);
+ curl_close($curl);
+ if ($err === 0 && $info["http_code"] === 200) {
+
+ } else {
+ throw new Exception('deleting usage failed ' .
+ $info["http_code"] . ': ' . $data['error'] . ' ' . $data['message']);
+ }
+
+ }
+} \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/example/example-api.php b/vendor/edu-sharing-plugin/example/example-api.php
new file mode 100644
index 0000000..a961a7d
--- /dev/null
+++ b/vendor/edu-sharing-plugin/example/example-api.php
@@ -0,0 +1,59 @@
+<?php
+define('APP_ID', 'data-quest Test');
+define('BASE_URL', 'http://localhost:8080/edu-sharing');
+define('USERNAME', 'root@studip');
+
+
+header('Accept: application/json');
+header('Content-Type: application/json');
+
+require_once "../edu-sharing-helper.php";
+require_once "../edu-sharing-helper-base.php";
+require_once "../edu-sharing-auth-helper.php";
+require_once "../edu-sharing-node-helper.php";
+
+$privatekey = @file_get_contents('private.key');
+if(!$privatekey) {
+ die('no private key');
+} else {
+ $key["privatekey"] = $privatekey;
+}
+// init the base class instance we use for all helpers
+$base = new EduSharingHelperBase(BASE_URL, $key["privatekey"], APP_ID);
+$postData = json_decode(file_get_contents('php://input'));
+$action = $postData->action;
+$result = null;
+if ($action === 'BASE_URL') {
+ $result = BASE_URL;
+} else if ($action === 'GET_NODE') {
+ $nodeHelper = new EduSharingNodeHelper($base);
+ $result = $nodeHelper->getNodeByUsage(
+ new Usage(
+ $postData->nodeId,
+ $postData->nodeVersion,
+ $postData->containerId,
+ $postData->resourceId,
+ $postData->usageId
+ )
+ );
+} else if ($action === 'CREATE_USAGE') {
+ $nodeHelper = new EduSharingNodeHelper($base);
+ $result = $nodeHelper->createUsage(
+ $postData->ticket,
+ $postData->containerId,
+ $postData->resourceId,
+ $postData->nodeId
+ );
+} else if ($action === 'DELETE_USAGE') {
+ $nodeHelper = new EduSharingNodeHelper($base);
+ $nodeHelper->deleteUsage(
+ $postData->nodeId,
+ $postData->usageId
+ );
+} else if ($action === 'TICKET') {
+ $authHelper = new EduSharingAuthHelper($base);
+ $ticket = $authHelper->getTicketForUser(USERNAME);
+ $result = $ticket;
+}
+
+echo json_encode($result);
diff --git a/vendor/edu-sharing-plugin/example/example.php b/vendor/edu-sharing-plugin/example/example.php
new file mode 100644
index 0000000..e959d59
--- /dev/null
+++ b/vendor/edu-sharing-plugin/example/example.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * This is a sample file on how to use the edu-sharing remote library
+ * Run this script for the first time to create a private/public keypair
+ * On first run, a properties.xml file will be created
+ * Upload this file to your target edu-sharing (Admin-Tools -> Remote Systems -> Choose XML-File)
+ */
+
+define('APP_ID', 'sample-app');
+define('USERNAME', 'tester');
+require_once "../edu-sharing-helper.php";
+require_once "../edu-sharing-helper-base.php";
+require_once "../edu-sharing-auth-helper.php";
+require_once "../edu-sharing-node-helper.php";
+
+$privatekey = @file_get_contents('private.key');
+if(!$privatekey) {
+ $key = EduSharingHelper::generateKeyPair();
+ // store the $key data inside your application, e.g. your database or plugin config
+ file_put_contents(APP_ID . '.properties.xml', EduSharingHelper::generateEduAppXMLData(APP_ID, $key['publickey']));
+ file_put_contents('private.key', $key['privatekey']);
+ die('Wrote ' . APP_ID . '.properties.xml file. Upload it to edu-sharing, then run this script again');
+} else {
+ $key["privatekey"] = $privatekey;
+}
+if(count($argv) < 2) {
+ die('This script should be called as follow: "example.php http://localhost:8080/edu-sharing [<node-id>]"');
+}
+// init the base class instance we use for all helpers
+$base = new EduSharingHelperBase($argv[1], $key["privatekey"], APP_ID);
+$base->setLanguage('de');
+
+// authenticating (getting a ticket) and validating the given ticket
+$authHelper = new EduSharingAuthHelper($base);
+$ticket = $authHelper->getTicketForUser(USERNAME);
+echo "Ticket validation result:\n";
+print_r($authHelper->getTicketAuthenticationInfo($ticket));
+
+if(count($argv) !== 3) {
+ die("No node id given. Add a 3rd parameter to test create + fetching of nodes by usage");
+}
+$nodeHelper = new EduSharingNodeHelper($base);
+$usage = $nodeHelper->createUsage($ticket, '1', '1', $argv[2]);
+echo "Usage create result:\n";
+print_r($usage);
+
+$node = $nodeHelper->getNodeByUsage($usage);
+echo "Get node by usage:\n";
+print_r($node["node"]["name"]); \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/example/index.html b/vendor/edu-sharing-plugin/example/index.html
new file mode 100644
index 0000000..9be18ce
--- /dev/null
+++ b/vendor/edu-sharing-plugin/example/index.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Edu Sharing Usage Example</title>
+ <style>
+ body > div {
+ padding: 20px 10px;
+ }
+ pre {
+ border: 1px solid #eee;
+ padding: 10px;
+ margin: 10px;
+ }
+ </style>
+ <script>
+ let ticket;
+ let baseUrl = null;
+ let esWindow = null;
+ function openEduSharing() {
+ esWindow = window.open(
+ baseUrl + '/components/search?ticket=' + encodeURIComponent(ticket) +
+ '&reurl=IFRAME'
+ );
+ }
+ window.addEventListener('message', receiveMessage, false);
+ async function receiveMessage(event){
+ if(event.data.event === 'APPLY_NODE'){ // Event Name hier festlegen
+ esWindow.close();
+ console.log(event.data.data);
+ usage = await createUsage(event.data.data.nodeId);
+ // in a real application, the usage is stored in your backend system
+ localStorage.setItem('usage', JSON.stringify(usage));
+ await renderUsage();
+
+ }
+ }
+ async function renderUsage() {
+ if(localStorage.getItem('usage')) {
+ const usage = JSON.parse(localStorage.getItem('usage'));
+ document.querySelector('#usage').style.display = null;
+ document.querySelector('#delete-usage').style.display = null;
+ document.querySelector('#usage').innerHTML = JSON.stringify(usage, null, 4);
+ usage.action = 'GET_NODE';
+ const render = await fetchAPI(usage)
+ document.querySelector('#render').innerHTML = render.detailsSnippet;
+ }
+
+ }
+ async function createUsage(nodeId) {
+ return await fetchAPI({
+ action: 'CREATE_USAGE',
+ ticket,
+ nodeId,
+ containerId: 'my_sample_page_1',
+ resourceId: Math.random()
+ });
+ }
+ async function deleteUsage(nodeId) {
+ const usage = JSON.parse(localStorage.getItem('usage'));
+ await fetchAPI({
+ action: 'DELETE_USAGE',
+ nodeId: usage.nodeId,
+ usageId: usage.usageId
+ });
+ localStorage.removeItem('usage');
+ document.querySelector('#render').style.display = 'none';
+ document.querySelector('#usage').style.display = 'none';
+ document.querySelector('#delete-usage').style.display = 'none';
+ }
+ async function fetchAPI(data) {
+ return new Promise((resolve, reject) => {
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "example-api.php", true);
+ xhr.onload = () => {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ resolve(JSON.parse(xhr.response));
+ } else {
+ alert(xhr.statusText);
+ reject(xhr.statusText);
+ }
+ }
+ };
+ xhr.onerror = function (e) {
+ alert(xhr.statusText);
+ };
+ xhr.send(JSON.stringify(data));
+ });
+ }
+ async function getTicket() {
+ ticket = await fetchAPI({action: 'TICKET'});
+ document.querySelector('#ticket').innerText = ticket;
+ document.querySelector('#edu-select').style.display = null;
+
+ }
+ window.addEventListener('load', async () => {
+ baseUrl = await fetchAPI({action: 'BASE_URL'});
+ await renderUsage();
+
+ await getTicket();
+ });
+ </script>
+</head>
+<body>
+<div>
+ <button onclick="getTicket()">Re-Fetch ticket</button>
+ <span id="ticket">No ticket</span>
+</div>
+<div id="edu-select" style="display:none;">
+ <button onclick="openEduSharing()">Open edu-sharing & select node</button>
+</div>
+<pre id="usage" style="display: none"></pre>
+<div id="delete-usage" style="display: none">
+ <button onclick="deleteUsage()">Delete current Usage</button>
+</div>
+<div id="render"></div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/vendor/edu-sharing-plugin/readme.md b/vendor/edu-sharing-plugin/readme.md
new file mode 100644
index 0000000..ab1f332
--- /dev/null
+++ b/vendor/edu-sharing-plugin/readme.md
@@ -0,0 +1 @@
+This library is a changed version of https://github.com/edu-sharing/php-auth-plugin