[CORE][EVENTS] Bring existing Events and Boostrapper back
- Adapt the existing event system to rely on Symfony's event dispatcher
This commit is contained in:
parent
b396f1227a
commit
feaee1b238
5
.env
5
.env
@ -29,5 +29,8 @@ APP_SECRET=6a9ac3a09c73230107373e8e0b71e0a3
|
||||
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
|
||||
# For a PostgreSQL database, use: "postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8"
|
||||
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
||||
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7
|
||||
DATABASE_URL=postgresql://postgres:foobar@postgres:5432/social
|
||||
#?serverVersion=11&charset=utf8
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
||||
SHELL_VERBOSITY=3
|
@ -4,13 +4,14 @@
|
||||
"description": "Free software social networking platform.",
|
||||
"license": "AGPL-3.0-only",
|
||||
"require": {
|
||||
"php": "^7.2.5",
|
||||
"php": "^7.4",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"sensio/framework-extra-bundle": "^5.1",
|
||||
"symfony/asset": "5.0.*",
|
||||
"symfony/console": "5.0.*",
|
||||
"symfony/dotenv": "^5.0",
|
||||
"symfony/event-dispatcher": "5.0.*",
|
||||
"symfony/expression-language": "5.0.*",
|
||||
"symfony/flex": "^1.3.1",
|
||||
"symfony/form": "5.0.*",
|
||||
@ -46,7 +47,7 @@
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\": "src/"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
|
413
composer.lock
generated
413
composer.lock
generated
@ -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": "8e75c2f59e6c9fc1461a56bc9188ad2e",
|
||||
"content-hash": "a44927e48b5d624111b558f2a0e2b5c4",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
@ -1257,177 +1257,6 @@
|
||||
],
|
||||
"time": "2014-01-12T16:20:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-code",
|
||||
"version": "3.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-code.git",
|
||||
"reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-code/zipball/1cb8f203389ab1482bf89c0e70a04849bacd7766",
|
||||
"reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"laminas/laminas-eventmanager": "^2.6 || ^3.0",
|
||||
"laminas/laminas-zendframework-bridge": "^1.0",
|
||||
"php": "^7.1"
|
||||
},
|
||||
"conflict": {
|
||||
"phpspec/prophecy": "<1.9.0"
|
||||
},
|
||||
"replace": {
|
||||
"zendframework/zend-code": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.7",
|
||||
"ext-phar": "*",
|
||||
"laminas/laminas-coding-standard": "^1.0",
|
||||
"laminas/laminas-stdlib": "^2.7 || ^3.0",
|
||||
"phpunit/phpunit": "^7.5.16 || ^8.4"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
|
||||
"laminas/laminas-stdlib": "Laminas\\Stdlib component"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.4.x-dev",
|
||||
"dev-develop": "3.5.x-dev",
|
||||
"dev-dev-4.0": "4.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laminas\\Code\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
|
||||
"homepage": "https://laminas.dev",
|
||||
"keywords": [
|
||||
"code",
|
||||
"laminas"
|
||||
],
|
||||
"time": "2019-12-31T16:28:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-eventmanager",
|
||||
"version": "3.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-eventmanager.git",
|
||||
"reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/ce4dc0bdf3b14b7f9815775af9dfee80a63b4748",
|
||||
"reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"laminas/laminas-zendframework-bridge": "^1.0",
|
||||
"php": "^5.6 || ^7.0"
|
||||
},
|
||||
"replace": {
|
||||
"zendframework/zend-eventmanager": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"athletic/athletic": "^0.1",
|
||||
"container-interop/container-interop": "^1.1.0",
|
||||
"laminas/laminas-coding-standard": "~1.0.0",
|
||||
"laminas/laminas-stdlib": "^2.7.3 || ^3.0",
|
||||
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
|
||||
},
|
||||
"suggest": {
|
||||
"container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
|
||||
"laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.2-dev",
|
||||
"dev-develop": "3.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laminas\\EventManager\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Trigger and listen to events within a PHP application",
|
||||
"homepage": "https://laminas.dev",
|
||||
"keywords": [
|
||||
"event",
|
||||
"eventmanager",
|
||||
"events",
|
||||
"laminas"
|
||||
],
|
||||
"time": "2019-12-31T16:44:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-zendframework-bridge",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
|
||||
"reference": "0fb9675b84a1666ab45182b6c5b29956921e818d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/0fb9675b84a1666ab45182b6c5b29956921e818d",
|
||||
"reference": "0fb9675b84a1666ab45182b6c5b29956921e818d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev",
|
||||
"dev-develop": "1.1.x-dev"
|
||||
},
|
||||
"laminas": {
|
||||
"module": "Laminas\\ZendFrameworkBridge"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/autoload.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Laminas\\ZendFrameworkBridge\\": "src//"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Alias legacy ZF class names to Laminas Project equivalents.",
|
||||
"keywords": [
|
||||
"ZendFramework",
|
||||
"autoloading",
|
||||
"laminas",
|
||||
"zf"
|
||||
],
|
||||
"time": "2020-01-07T22:58:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.0.2",
|
||||
@ -1511,35 +1340,35 @@
|
||||
},
|
||||
{
|
||||
"name": "ocramius/package-versions",
|
||||
"version": "1.7.0",
|
||||
"version": "1.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Ocramius/PackageVersions.git",
|
||||
"reference": "651c372efc914aea8223e049f85afaf65e09ba23"
|
||||
"reference": "1d32342b8c1eb27353c8887c366147b4c2da673c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/651c372efc914aea8223e049f85afaf65e09ba23",
|
||||
"reference": "651c372efc914aea8223e049f85afaf65e09ba23",
|
||||
"url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/1d32342b8c1eb27353c8887c366147b4c2da673c",
|
||||
"reference": "1d32342b8c1eb27353c8887c366147b4c2da673c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^1.1.0",
|
||||
"php": "^7.4.0"
|
||||
"composer-plugin-api": "^1.0.0",
|
||||
"php": "^7.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^1.9.3",
|
||||
"doctrine/coding-standard": "^7.0.2",
|
||||
"ext-zip": "^1.15.0",
|
||||
"infection/infection": "^0.15.3",
|
||||
"phpunit/phpunit": "^9.0.1",
|
||||
"vimeo/psalm": "^3.9.3"
|
||||
"composer/composer": "^1.8.6",
|
||||
"doctrine/coding-standard": "^6.0.0",
|
||||
"ext-zip": "*",
|
||||
"infection/infection": "^0.13.4",
|
||||
"phpunit/phpunit": "^8.2.5",
|
||||
"vimeo/psalm": "^3.4.9"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
"class": "PackageVersions\\Installer",
|
||||
"branch-alias": {
|
||||
"dev-master": "1.99.x-dev"
|
||||
"dev-master": "1.6.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -1558,49 +1387,44 @@
|
||||
}
|
||||
],
|
||||
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
|
||||
"time": "2020-03-06T11:34:16+00:00"
|
||||
"time": "2019-07-17T15:49:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ocramius/proxy-manager",
|
||||
"version": "2.7.0",
|
||||
"version": "2.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Ocramius/ProxyManager.git",
|
||||
"reference": "e77928e8f11ea36b388f87e75c993d05f5da6bf1"
|
||||
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e77928e8f11ea36b388f87e75c993d05f5da6bf1",
|
||||
"reference": "e77928e8f11ea36b388f87e75c993d05f5da6bf1",
|
||||
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/4d154742e31c35137d5374c998e8f86b54db2e2f",
|
||||
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"laminas/laminas-code": "^3.4.1",
|
||||
"ocramius/package-versions": "^1.5.1",
|
||||
"php": "7.4.*",
|
||||
"webimpress/safe-writer": "^2.0"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": "<1.6.1",
|
||||
"laminas/laminas-stdlib": "<3.2.1",
|
||||
"zendframework/zend-stdlib": "<3.2.1"
|
||||
"ocramius/package-versions": "^1.1.3",
|
||||
"php": "^7.2.0",
|
||||
"zendframework/zend-code": "^3.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/coding-standard": "^6.0.0",
|
||||
"couscous/couscous": "^1.6.1",
|
||||
"ext-phar": "*",
|
||||
"infection/infection": "^0.15.0",
|
||||
"nikic/php-parser": "^4.3.0",
|
||||
"phpbench/phpbench": "^0.17.0",
|
||||
"phpunit/phpunit": "^8.5.2",
|
||||
"slevomat/coding-standard": "^5.0.4",
|
||||
"squizlabs/php_codesniffer": "^3.5.4",
|
||||
"vimeo/psalm": "^3.8.5"
|
||||
"humbug/humbug": "1.0.0-RC.0@RC",
|
||||
"nikic/php-parser": "^3.1.1",
|
||||
"padraic/phpunit-accelerator": "dev-master@DEV",
|
||||
"phpbench/phpbench": "^0.12.2",
|
||||
"phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999",
|
||||
"phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761",
|
||||
"phpunit/phpunit": "^6.4.3",
|
||||
"squizlabs/php_codesniffer": "^2.9.1"
|
||||
},
|
||||
"suggest": {
|
||||
"laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
|
||||
"laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
|
||||
"laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
|
||||
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
|
||||
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
|
||||
"zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
|
||||
"zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
|
||||
"zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -1609,8 +1433,8 @@
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ProxyManager\\": "src/ProxyManager"
|
||||
"psr-0": {
|
||||
"ProxyManager\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -1633,7 +1457,7 @@
|
||||
"proxy pattern",
|
||||
"service proxies"
|
||||
],
|
||||
"time": "2020-02-08T19:22:03+00:00"
|
||||
"time": "2019-08-10T08:37:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
@ -6127,54 +5951,6 @@
|
||||
],
|
||||
"time": "2020-02-11T15:33:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webimpress/safe-writer",
|
||||
"version": "2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webimpress/safe-writer.git",
|
||||
"reference": "d03bea3b98abe1d4c8b24cbebf524361ffaafee4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webimpress/safe-writer/zipball/d03bea3b98abe1d4c8b24cbebf524361ffaafee4",
|
||||
"reference": "d03bea3b98abe1d4c8b24cbebf524361ffaafee4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.4.3",
|
||||
"webimpress/coding-standard": "dev-develop"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0.x-dev",
|
||||
"dev-develop": "2.1.x-dev",
|
||||
"dev-release-1.0": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Webimpress\\SafeWriter\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-2-Clause"
|
||||
],
|
||||
"description": "Tool to write files safely, to avoid race conditions",
|
||||
"keywords": [
|
||||
"concurrent write",
|
||||
"file writer",
|
||||
"race condition",
|
||||
"safe writer",
|
||||
"webimpress"
|
||||
],
|
||||
"time": "2019-11-27T19:40:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
"version": "1.7.0",
|
||||
@ -6222,6 +5998,119 @@
|
||||
"validate"
|
||||
],
|
||||
"time": "2020-02-14T12:15:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "zendframework/zend-code",
|
||||
"version": "3.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/zendframework/zend-code.git",
|
||||
"reference": "268040548f92c2bfcba164421c1add2ba43abaaa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa",
|
||||
"reference": "268040548f92c2bfcba164421c1add2ba43abaaa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1",
|
||||
"zendframework/zend-eventmanager": "^2.6 || ^3.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpspec/prophecy": "<1.9.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.7",
|
||||
"ext-phar": "*",
|
||||
"phpunit/phpunit": "^7.5.16 || ^8.4",
|
||||
"zendframework/zend-coding-standard": "^1.0",
|
||||
"zendframework/zend-stdlib": "^2.7 || ^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
|
||||
"zendframework/zend-stdlib": "Zend\\Stdlib component"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.4.x-dev",
|
||||
"dev-develop": "3.5.x-dev",
|
||||
"dev-dev-4.0": "4.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Zend\\Code\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
|
||||
"keywords": [
|
||||
"ZendFramework",
|
||||
"code",
|
||||
"zf"
|
||||
],
|
||||
"abandoned": "laminas/laminas-code",
|
||||
"time": "2019-12-10T19:21:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "zendframework/zend-eventmanager",
|
||||
"version": "3.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/zendframework/zend-eventmanager.git",
|
||||
"reference": "a5e2583a211f73604691586b8406ff7296a946dd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd",
|
||||
"reference": "a5e2583a211f73604691586b8406ff7296a946dd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"athletic/athletic": "^0.1",
|
||||
"container-interop/container-interop": "^1.1.0",
|
||||
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
|
||||
"zendframework/zend-coding-standard": "~1.0.0",
|
||||
"zendframework/zend-stdlib": "^2.7.3 || ^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
|
||||
"zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.2-dev",
|
||||
"dev-develop": "3.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Zend\\EventManager\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Trigger and listen to events within a PHP application",
|
||||
"homepage": "https://github.com/zendframework/zend-eventmanager",
|
||||
"keywords": [
|
||||
"event",
|
||||
"eventmanager",
|
||||
"events",
|
||||
"zf2"
|
||||
],
|
||||
"abandoned": "laminas/laminas-eventmanager",
|
||||
"time": "2018-04-25T15:33:34+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
@ -1,3 +0,0 @@
|
||||
#index:
|
||||
# path: /
|
||||
# controller: App\Controller\DefaultController::index
|
@ -15,7 +15,7 @@ services:
|
||||
# this creates a service per class whose id is the fully-qualified class name
|
||||
App\:
|
||||
resource: '../src/*'
|
||||
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
|
||||
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php,lib/*}'
|
||||
|
||||
# controllers are imported separately to make sure services can be injected
|
||||
# as action arguments even if you don't extend any base controller class
|
||||
|
@ -5,12 +5,13 @@ namespace App\Controller;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
|
||||
use App;
|
||||
use App\Util\GSEvent;
|
||||
|
||||
class NetworkPublic extends AbstractController
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
GSEvent::handle('test', ['foobar']);
|
||||
return $this->render('network/public.html.twig', []);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ use Symfony\Component\Config\Resource\FileResource;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
|
||||
use Symfony\Component\Routing\RouteCollectionBuilder;
|
||||
use function dirname;
|
||||
use const PHP_VERSION_ID;
|
||||
|
||||
class Kernel extends BaseKernel
|
||||
{
|
||||
@ -27,13 +29,13 @@ class Kernel extends BaseKernel
|
||||
|
||||
public function getProjectDir(): string
|
||||
{
|
||||
return \dirname(__DIR__);
|
||||
return dirname(__DIR__);
|
||||
}
|
||||
|
||||
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
|
||||
{
|
||||
$container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
|
||||
$container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug);
|
||||
$container->setParameter('container.dumper.inline_class_loader', PHP_VERSION_ID < 70400 || $this->debug);
|
||||
$container->setParameter('container.dumper.inline_factories', true);
|
||||
$confDir = $this->getProjectDir().'/config';
|
||||
|
||||
|
48
src/Util/Common.php
Normal file
48
src/Util/Common.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
||||
//
|
||||
// GNU social is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// GNU social is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
namespace App\Util;
|
||||
|
||||
class Common
|
||||
{
|
||||
public static function normalizePath(string $path): string
|
||||
{
|
||||
if (DIRECTORY_SEPARATOR !== '/') {
|
||||
$path = strtr($path, DIRECTORY_SEPARATOR, '/');
|
||||
}
|
||||
return $path;
|
||||
}
|
||||
|
||||
public static function pluginFromPath(string $path): ?string
|
||||
{
|
||||
$plug = strpos($path, '/plugins/');
|
||||
if ($plug === false) {
|
||||
return null;
|
||||
} else {
|
||||
$cut = $plug + strlen('/plugins/');
|
||||
$cut2 = strpos($path, '/', $cut);
|
||||
if ($cut2) {
|
||||
$final = substr($path, $cut, $cut2 - $cut);
|
||||
} else {
|
||||
// We might be running directly from the plugins dir?
|
||||
// If so, there's no place to store locale info.
|
||||
Log::error("The GNU social install dir seems to contain a piece named plugin");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return $final;
|
||||
}
|
||||
}
|
118
src/Util/GNUsocial.php
Normal file
118
src/Util/GNUsocial.php
Normal file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
||||
//
|
||||
// GNU social is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// GNU social is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Main GNU social entry point
|
||||
*
|
||||
* @package GNUsocial
|
||||
* @category Framework
|
||||
* @author Brenda Wallace <shiny@cpan.org>
|
||||
* @author Brion Vibber <brion@pobox.com>
|
||||
* @author Brion Vibber <brion@status.net>
|
||||
* @author Christopher Vollick <candrews@integralblue.com>
|
||||
* @author CiaranG <ciaran@ciarang.com>
|
||||
* @author Craig Andrews <candrews@integralblue.com>
|
||||
* @author Craig Andrews <evan@status.net>
|
||||
* @author Evan Prodromou <evan@controlezvous.ca>
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @author Evan Prodromou <evan@prodromou.name>
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @author Gina Haeussge <osd@foosel.net>
|
||||
* @author James Walker <walkah@walkah.net>
|
||||
* @author Jeffery To <candrews@integralblue.com>
|
||||
* @author Jeffery To <jeffery.to@gmail.com>
|
||||
* @author Mikael Nordfeldth <mmn@hethane.se>
|
||||
* @author Mike Cochrane <mikec@mikenz.geek.nz>
|
||||
* @author Robin Millette <millette@controlyourself.ca>
|
||||
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @author Siebrand Mazeland <s.mazeland@xs4all.nl>
|
||||
* @author Tom Adams <candrews@integralblue.com>
|
||||
* @author Tom Adams <tom@holizz.com>
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @author Diogo Cordeiro <diogo@fc.up.pt>
|
||||
* @author Hugo Sales <hugo@fc.up.pt>
|
||||
* @copyright 2010, 2018-2020 Free Software Foundation, Inc http://www.fsf.org
|
||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
||||
*/
|
||||
|
||||
namespace App\Util;
|
||||
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
use App\Util\Log;
|
||||
use App\Util\GSEvent;
|
||||
|
||||
class GNUsocial implements EventSubscriberInterface
|
||||
{
|
||||
protected ContainerInterface $container;
|
||||
protected LoggerInterface $logger;
|
||||
|
||||
public function __construct(ContainerInterface $container, LoggerInterface $logger)
|
||||
{
|
||||
$this->container = $container;
|
||||
$this->logger= $logger;
|
||||
}
|
||||
|
||||
public function onKernelRequest(RequestEvent $event,
|
||||
string $event_name,
|
||||
$event_dispatcher): RequestEvent
|
||||
{
|
||||
if (!defined('INSTALLDIR')) {
|
||||
define('INSTALLDIR', dirname(__DIR__));
|
||||
define('SRCDIR', INSTALLDIR . '/src');
|
||||
define('PUBLICDIR', INSTALLDIR . '/public');
|
||||
define('GNUSOCIAL_ENGINE', 'GNU social');
|
||||
// MERGE Change to https://gnu.io/social/
|
||||
define('GNUSOCIAL_ENGINE_URL', 'https://gnusocial.network/');
|
||||
// MERGE Change to https://git.gnu.io/gnu/gnu-social
|
||||
define('GNUSOCIAL_ENGINE_REPO_URL', 'https://notabug.org/diogo/gnu-social/');
|
||||
// Current base version, major.minor.patch
|
||||
define('GNUSOCIAL_BASE_VERSION', '3.0.0');
|
||||
// 'dev', 'alpha[0-9]+', 'beta[0-9]+', 'rc[0-9]+', 'release'
|
||||
define('GNUSOCIAL_LIFECYCLE', 'dev');
|
||||
define('GNUSOCIAL_VERSION', GNUSOCIAL_BASE_VERSION . '-' . GNUSOCIAL_LIFECYCLE);
|
||||
define('GNUSOCIAL_CODENAME', 'Big bang');
|
||||
}
|
||||
|
||||
/* Work internally in UTC */
|
||||
date_default_timezone_set('UTC');
|
||||
|
||||
/* Work internally with UTF-8 */
|
||||
mb_internal_encoding('UTF-8');
|
||||
|
||||
Log::setLogger($this->logger);
|
||||
GSEvent::setDispatcher($event_dispatcher);
|
||||
|
||||
GSEvent::addHandler('test', function ($x) {
|
||||
Log::info("Logging from an event " . var_export($x, true));
|
||||
});
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
KernelEvents::REQUEST => 'onKernelRequest'
|
||||
);
|
||||
}
|
||||
}
|
143
src/Util/GSEvent.php
Normal file
143
src/Util/GSEvent.php
Normal file
@ -0,0 +1,143 @@
|
||||
<?php
|
||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
||||
//
|
||||
// GNU social is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// GNU social is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
namespace App\Util;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
abstract class GSEvent {
|
||||
|
||||
private static EventDispatcherInterface $dispatcher;
|
||||
|
||||
public static function setDispatcher(EventDispatcherInterface $dis): void
|
||||
{
|
||||
self::$dispatcher = $dis;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constants to be returned from event handlers, for increased clarity
|
||||
*
|
||||
* bool stop - Stop other handlers from processing the event
|
||||
* bool next - Allow the other handlers to process the event
|
||||
*/
|
||||
public const stop = false;
|
||||
public const next = true;
|
||||
|
||||
|
||||
/**
|
||||
* Add an event handler
|
||||
*
|
||||
* To run some code at a particular point in GNU social processing.
|
||||
* Named events include receiving an XMPP message, adding a new notice,
|
||||
* or showing part of an HTML page.
|
||||
*
|
||||
* The arguments to the handler vary by the event. Handlers can return
|
||||
* two possible values: false means that the event has been replaced by
|
||||
* the handler completely, and no default processing should be done.
|
||||
* Non-false means successful handling, and that the default processing
|
||||
* should succeed. (Note that this only makes sense for some events.)
|
||||
*
|
||||
* Handlers can also abort processing by throwing an exception; these will
|
||||
* be caught by the closest code and displayed as errors.
|
||||
*
|
||||
* @param string $name Name of the event
|
||||
* @param callable $handler Code to run
|
||||
* @param int $priority Higher runs first
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function addHandler(string $name, callable $handler, int $priority=0): void
|
||||
{
|
||||
self::$dispatcher->addListener(
|
||||
$name,
|
||||
function ($event, $event_name, $dispatcher) use ($handler) {
|
||||
if ($event instanceof GenericEvent
|
||||
// Old style of events (preferred)
|
||||
&& call_user_func_array($handler, $event->getArguments()) == self::stop) {
|
||||
$event->stopPropagation();
|
||||
return $event;
|
||||
} else {
|
||||
// Symfony style of events
|
||||
call_user_func($handler, $event, $event_name, $dispatcher);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
$priority
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an event
|
||||
*
|
||||
* Events are any point in the code that we want to expose for admins
|
||||
* or third-party developers to use.
|
||||
*
|
||||
* We pass in an array of arguments (including references, for stuff
|
||||
* that can be changed), and each assigned handler gets run with those
|
||||
* arguments. Exceptions can be thrown to indicate an error.
|
||||
*
|
||||
* @param string $name Name of the event that's happening
|
||||
* @param array $args Arguments for handlers
|
||||
*
|
||||
* @return bool flag saying whether to continue processing, based
|
||||
* on results of handlers.
|
||||
*/
|
||||
public static function handle(string $name, array $args = []): bool
|
||||
{
|
||||
return !(self::$dispatcher->dispatch(
|
||||
new GenericEvent($name, $args),
|
||||
$name)->isPropagationStopped());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if an event handler exists
|
||||
*
|
||||
* Look to see if there's any handler for a given event, or narrow
|
||||
* by providing the name of a specific plugin class.
|
||||
*
|
||||
* @param string $name Name of the event to look for
|
||||
* @param string $plugin Optional name of the plugin class to look for
|
||||
*
|
||||
* @return bool flag saying whether such a handler exists
|
||||
*/
|
||||
public static function hasHandler(string $name, ?string $plugin=null): bool
|
||||
{
|
||||
$listeners = self::$dispatcher->getListeners($name);
|
||||
if (isset($plugin)) {
|
||||
foreach ($listeners as $handler) {
|
||||
if (get_class($handler[0]) == $plugin) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return !empty($listeners);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array of handlers for $name
|
||||
*
|
||||
* @param string $name Name of event
|
||||
* @return array
|
||||
* @return array
|
||||
*/
|
||||
public static function getHandlers(string $name): array
|
||||
{
|
||||
return self::$dispatcher->getListeners($name);
|
||||
}
|
||||
}
|
26
src/Util/Log.php
Normal file
26
src/Util/Log.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace App\Util;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class Log
|
||||
{
|
||||
private static ?LoggerInterface $logger;
|
||||
|
||||
public static function setLogger($l): void
|
||||
{
|
||||
self::$logger = $l;
|
||||
}
|
||||
public static function error(string $msg): void
|
||||
{
|
||||
self::$logger->error($msg);
|
||||
}
|
||||
public static function info(string $msg): void
|
||||
{
|
||||
self::$logger->info($msg);
|
||||
}
|
||||
public static function debug(string $msg): void
|
||||
{
|
||||
$logger->debug($msg);
|
||||
}
|
||||
}
|
@ -115,7 +115,7 @@
|
||||
"version": "2.7.0"
|
||||
},
|
||||
"php": {
|
||||
"version": "7.4"
|
||||
"version": "7.3"
|
||||
},
|
||||
"phpdocumentor/reflection-common": {
|
||||
"version": "2.0.0"
|
||||
@ -528,5 +528,11 @@
|
||||
},
|
||||
"webmozart/assert": {
|
||||
"version": "1.7.0"
|
||||
},
|
||||
"zendframework/zend-code": {
|
||||
"version": "3.4.1"
|
||||
},
|
||||
"zendframework/zend-eventmanager": {
|
||||
"version": "3.2.1"
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user