Repository navigation
Create config collection in a mockable method - #5
Merged
leofeyer merged 3 commits intoOct 28, 2014
Merged
Conversation
leofeyer
added a commit
that referenced
this pull request
Oct 28, 2014
1 task
leofeyer
pushed a commit
that referenced
this pull request
Aug 26, 2016
Fix bug with nested elseif tags
leofeyer
pushed a commit
that referenced
this pull request
Nov 1, 2019
…es command (see #866) Description ----------- Together with @Toflar we had a hard time debugging why the `contao:resize-images` command stopped at some point and did not want to continue. The error message was quite unclear especially that the requested file existed: ``` 6/77b26349-9084f1ba.jpg......... failed Unable to open image /var/www/vhosts/domain.tld/httpdocs/releases/233/assets/images/../../var/pim-images/77b26349.jpg ``` So we decided to introduce an option that allows to output more verbose error message simply by executing command in verbose mode `contao:resize-images -v`: ``` f/8ac5c4ec-213df40b.jpg.............. failed [ERROR] ImagickException: cache resources exhausted `/var/www/vhosts/domain.tld/httpdocs/releases/233/assets/images/../../var/pim-images/8ac5c4ec.jpg' @ error/cache.c/OpenPixelCache/3864 in /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/imagine/imagine/src/Imagick/Imagine.php:69 Stack trace: #0 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/imagine/imagine/src/Imagick/Imagine.php(69): Imagick->__construct('/var/www/vhosts...') #1 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/contao/image/src/Resizer.php(93): Imagine\Imagick\Imagine->open('/var/www/vhosts...') #2 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/contao/image/src/DeferredResizer.php(185): Contao\Image\Resizer->executeResize(Object(Contao\Image\Image), Object(Contao\Image\ResizeCoordinates), '/var/www/vhosts...', Object(Contao\Image\ResizeOptions)) #3 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/contao/image/src/DeferredResizer.php(108): Contao\Image\DeferredResizer->executeDeferredResize('f/8ac5c4ec-213d...', Array, Object(Imagine\Imagick\Imagine)) #4 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/contao/core-bundle/src/Command/ResizeImagesComma nd.php(189): Contao\Image\DeferredResizer->resizeDeferredImage(Object(Contao\Image\DeferredImage), false) #5 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/contao/core-bundle/src/Command/ResizeImagesComma nd.php(166): Contao\CoreBundle\Command\ResizeImagesCommand->resizeImage('f/8ac5c4ec-213d...', Object(Symfony\Component\Console\Style\SymfonyStyle)) #6 /var/www/vhosts/domain.tld/httpdocs/releases/233/vendor/symfony/console/Command/Command.php(255): ``` Commits ------- e9c6de99 Allow to output more verbose error messages in contao:resize-images command
leofeyer
pushed a commit
that referenced
this pull request
Aug 4, 2020
Description ----------- With @Toflar we have discovered by accident that if a URL is double-encoded (for some reason, doesn't matter) the Contao's `RouteProvider` will eventually throw an error trying to query a database. ``` URL original: drachenlochmuseum-v%25c3%25a4ttis.html URL decoded: drachenlochmuseum-v%c3%a4ttis.html URL decoded 2nd time: drachenlochmuseum-vättis.html ``` The decoded URL is used in the database query and that fails because the database driver would like to replace wildcards `%c` with parameters that were not provided. Stack trace: ``` Exception: Too few arguments to build the query string #27 vendor/contao/core-bundle/src/Resources/contao/library/Contao/Database/Statement.php(304): replaceWildcards #26 vendor/contao/core-bundle/src/Resources/contao/library/Contao/Database/Statement.php(249): execute #25 vendor/contao/core-bundle/src/Resources/contao/library/Contao/Model.php(1102): find #24 vendor/contao/core-bundle/src/Resources/contao/library/Contao/Model.php(973): findBy #23 vendor/contao/core-bundle/src/Framework/Adapter.php(38): __call #22 vendor/contao/core-bundle/src/Routing/RouteProvider.php(493): findPages #21 vendor/contao/core-bundle/src/Routing/RouteProvider.php(88): getRouteCollectionForRequest #20 vendor/contao/core-bundle/src/Routing/LegacyRouteProvider.php(43): getRouteCollectionForRequest #19 vendor/symfony-cmf/routing/src/NestedMatcher/NestedMatcher.php(141): matchRequest #18 vendor/contao/core-bundle/src/Routing/Matcher/LegacyMatcher.php(69): matchRequest #17 vendor/symfony-cmf/routing/src/DynamicRouter.php(271): matchRequest #16 vendor/symfony-cmf/routing/src/ChainRouter.php(188): doMatch #15 vendor/symfony-cmf/routing/src/ChainRouter.php(158): matchRequest #14 vendor/symfony/http-kernel/EventListener/RouterListener.php(115): onKernelRequest #13 vendor/symfony/event-dispatcher/EventDispatcher.php(212): doDispatch #12 vendor/symfony/event-dispatcher/EventDispatcher.php(44): dispatch #11 vendor/symfony/http-kernel/HttpKernel.php(126): handleRaw #10 vendor/symfony/http-kernel/HttpKernel.php(67): handle #9 vendor/symfony/http-kernel/Kernel.php(198): handle #8 vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): handle #7 vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): forward #6 vendor/symfony/framework-bundle/HttpCache/HttpCache.php(57): forward #5 vendor/symfony/http-kernel/HttpCache/HttpCache.php(420): fetch #4 vendor/contao/manager-bundle/src/HttpKernel/ContaoCache.php(46): fetch #3 vendor/symfony/http-kernel/HttpCache/HttpCache.php(317): lookup #2 vendor/symfony/http-kernel/HttpCache/HttpCache.php(192): handle #1 vendor/friendsofsymfony/http-cache/src/SymfonyCache/EventDispatchingHttpCache.php(98): handle #0 web/app.php(58): null ``` Commits ------- 8ae25820 Fix a potential error if the URL has percentage in it 8caaf252 Fix unit tests 509f7624 Correctly encode the page aliases
leofeyer
pushed a commit
that referenced
this pull request
Jun 14, 2021
Description ----------- Alternative approach for response context as discussed in Core team call. I guess there's no point in explaining it all here - I'll just document the final iteration once everything is done in the Contao dev docs ^^ Commits ------- 205dafc7 Reworked response context concept 786b50ca Merge branch '4.x' into feature/response-context-rework 4d1cf189 CS d2151bb4 Fixed tests aae10917 Implemented removing existing services and added support for interfaces 0a83cbe4 Added psalm docs 5f27ffce Make HtmlHeadBag final 5e75e386 CS 950e9bbe Also consider parent classes as aliases fbe8206c Going back to a regular array and removed the remove() method 41b1c60f Added support for lazy services 8a35bc96 Fixed tests 0d7f8d93 CS Co-authored-by: Leo Feyer <github@contao.org> 5b9706c4 Added failing test to show class issue d37a2237 Merge pull request #4 from aschempp/feature/response-context-rework Added failing test to show class issue f0a1f353 Removed irrelevant assertion 1d29c95c Fixed tests 6399cc78 Cleanup 12556327 Fixed phpstan 6a1eebc4 CS e90daf48 Added failing test to show alias being overridden a5c95893 Merge pull request #5 from aschempp/feature/response-context-rework Added failing test to show alias being overridden 1cb74c7a Fixed tests 84af804d Removed leftover 62cb0af1 CS
leofeyer
added a commit
that referenced
this pull request
Jun 24, 2022
Description
-----------
-
Commits
-------
18f27e2f Get rid of the base tag
50c2f91e Also adjust the AssetListener
e70e6e25 Update the UPGRADE.md file
1db8ad0e Remove the File::getFullPath() method again
a6c2d2ae Add the base tag in the front end again
7de8805f Automatically add and remove `{{env::path}}` to relative links in Tin…
6a5804c7 Use Environment::get('path') in the legacy code
6b5f6355 Add the BasePathPrefixer service
0e1562c4 Use the asset() function in the code.html.twig template
be5de2ca Apply suggestions from code review
8f051c7e Fix the tests
80230812 Use requestUri instead of request
a8bab4d6 Fix the Controller::addToUrl() method
11a79b50 Fix a leftover
cfebc2a4 Prevent the "creation of dynamic property" warning
fbf057a3 Use "env::base_path" instead of "env::path"
ae3483a3 Use "requestUri" instead of "indexFreeRequest"
c287ec75 Add the base_path_prefixer to the "file" insert tag
757f9bfb Do not prefix the URL in redirect exceptions
a5e1ee44 Remove two redundant test methods
29bcd8cc Fix some base URL bugs (see #5)
dde96863 Use app.request.basePath instead of the asset() function
8ff5f084 Fix the tests
66a6b6ed Use the assets.context instead of a custom service
38a46105 Use the asset() method in the code.html.twig template
9b72d6b3 Fix the tests
beefd787 Also prefix the image URL and the redirect URL
ee7e745d Add the Validator::isRelativeUrl() method
f76053c1 Use "contao.assets.files_context" for file URLs
154fb126 Fix the URL in the file insert tag
a94dc2fe Remove the deprecation and add the "title" field again
3832d246 Revert the ce_player.html5 changes
Co-authored-by: Martin Auswöger <martin@auswoeger.com>
leofeyer
added a commit
that referenced
this pull request
Jan 26, 2023
Description ----------- Closes #5712 Commits ------- 7a58d3d1 allow the teaser to be null (and therefore "not in the model", see #5… a33800b4 CS Co-authored-by: Leo Feyer <1192057+leofeyer@users.noreply.github.com>
leofeyer
added a commit
that referenced
this pull request
Jan 16, 2024
Description ----------- This introduces the ability to define Content Security Policies for the front end. There will be new settings for each website root: <img src="https://github.com/contao/contao/assets/4970961/abf4bad8-f025-4cb0-be82-c3088c68c1fc" width="898"> Within the _Content Security Policy_ field you can define your policies - with the exakt same syntax as the `Content-Security-Policy` header. For example `default-src 'self'` will tell the browser to only accept resources from the same domain and not allow any inline styles or scripts at all (at least not without nonces). Once a policy for `default-src`, `script-src` or `style-src` is set [1], Contao will automatically generate nonces for the respective `<script>` and `<style>` elements, at least in supported templates. If you have any custom templates with these tags, then you will need to adjust your template to include the nonce, which is pretty simple: ```twig <script nonce="{{ contao_csp_nonce('script-src') }}"> ``` ```php <script nonce="<?= $this->nonce('script-src') ?>"> ``` In this PR the `nonce` attribute is added conditionally everywhere, i.e. the attribute will not be set, if no nonce was necessary and thus no nonce was generated. So there will not be empty `nonce` attributes in the HTML code (though it would be fine). ## Allowing Specific Sources Dynamically Some content elements like the video, YouTube and Vimeo players dynamically allow their respective sources. This can be done directly from within the templates: ```twig {% do add_csp_source('frame-src', iframe_attrs.src) %} ``` ```php <?php $this->addCspSource('frame-src', $this->src); ?> ``` So even if you set the policies `frame-src 'self'; media-src 'none'` these content elements will still work as they dynamically allow their specific sources. ## Reporting In the CSP spec you also have the possibility to set a reporting URL. If the browser detects a CSP violation it will then automatically `POST` a report to that URL. Reporting needs to be specifically enabled in the website root. These reports will then also show up in the system log: <img src="https://github.com/contao/contao/assets/4970961/3ce826f7-48e3-4586-b28a-bdbabda9a765" width="879"> The system log entry will tell you which policy was violated and on which line. The detailed information will contain the original URL of the violation. This is of course a public API endpoint where anyone or anything can send any data. As such this needs to be handled with care. This PR uses the `ContentSecurityPolicyController` of `nelmio/security-bundle` which has the ability to filter out "noise". But instead of using that controller directly this PR implements its own controller and injects the service of Nelmio's controller. Our route always requires a valid page ID and always checks whether the current page's root has reporting enabled. If not, it will respond with 404 - otherwise it will forward the request to the `ContentSecurityPolicyController` of `nelmio/security-bundle`. ## Twig Components This PR introduces two new Twig components: `_style` and `_script`. When using them you do not have to think about having to check for nonces as the component does this automatically for you. However, I find that using these components makes the templates less readable - as there will also be no syntax highlighting by your editor anymore, since it won't know that the content of the component block is within a `<script>` or `<style>` tag. ## Thoughts, Decisions, Caveats Initially I thought may be Contao should set some sensible defaults automatically and also automatically allow the `staticFiles` and `staticPlugins` domains. However, this approach can be difficult and flawed. Contao cannot know in advance what kind of sources are hosted on its current and any of the static domains, thus we cannot set any `-src` policies (we would have to set all of them). It needs to be solely up to the administrator to set appropriate policies. One exception could be iframe sources, which could be automatically added (see above). However, allowing specific sources dynamically also has a caveat. Let's take the YouTube content element for example: on the page where such a content element is added, the Content-Security-Policy will automatically be the following [2]: ``` frame-src https://www.youtube.com/embed/abc123 ``` However, this will also mean that _no other iframes_ will be allowed on the same page, whereas without this content element they would be. We could change the helper functions to not add the directive if no existing (or `default-src` directive) is already present. Unfortunately the `CSPBuilder` has no such API at the moment. Further comments about the code will be down below in threads. PR is still a draft due to missing tests. ## Footnotes * [1]: ~If you _only_ set a `default-src` policy no nonces will be generated currently unfortunately due to an oversight in `paragonie/csp-builder` (see paragonie/csp-builder#65 not relevant after overhaul * [2]: ~Actually it will be only `child-src` without legacy browser support enabled (see paragonie/csp-builder#76 not relevant after overhaul Commits ------- 6a342198 add CSP 967f1aec fix line endings 6b363506 merge with 5.x 014c8e61 cs fix a008dce0 Merge remote-tracking branch 'origin/5.x' into csp 07de412a update dependencies 24733099 introduce script component 4ce5d5d2 mvp b211d7ff add style component 0ec67380 remove unnecessary scopes 9b7dbc48 move templates to new location 9bdbf32f Merge remote-tracking branch 'origin/5.x' into csp 420bf35b add accidental removal 0fa2265f improve the implementation 613368c0 remove parameter definition 7c86310e remove getNonce method 7432de8c Merge remote-tracking branch 'origin/5.x' into csp fe45eed8 validate CSP a7466d68 fix toolbar a0f8ef9a fix toolbar yet again c9505ebf consolidate CspRuntime and fix absolute source paths 99ac12a6 fix reporting 24e56f17 only add nonce if necessary 9029d318 remove unrelated change 1274da87 code style 87017e58 add tests 05f71411 fix service name ae8faa5b revert changes to stylesheet component 067dfcee satisfy PHP stan ee4a5429 update test db52a549 fix ci 4a52f508 increase nelmio/security-bundle requirements 2767dd3f Merge remote-tracking branch 'origin/5.x' into csp 2e312ca2 update csp-builder and security-bundle requirements, satisfy PHP stan 9131551a merge with 5.x bda5f212 overhaul 67cd1a6e fix test f365461d merge with 5.x 2598948c fix accidental öö 0fc5c615 Update core-bundle/contao/templates/twig/component/_script.html.twig ba71e550 fix _style.html.twig 13715f08 do not use any legacy CPS headers ccf927de change exception message af9a9db8 fix test 4510a924 move to private function 13b3c2af allow to enable report logging in website root 8356ac42 remove remnant config c7272219 add comment 4cffecfc fix prefer lowest 6e8538e0 code style ad61e359 fix functional tests differently 8d0bd318 remove remnant a0f2e745 fix another remnant 0ceea3f5 restore previous response context finalisation b7cae39e merge with 5.x a9fdea85 use textarea for csp field 20a5e7fd Apply suggestions from code review 7056144e move addCspSource to bottom 76082c7c merge with 5.x e90cb34b do not call nonce statically 482cebdf do not print line number if none given 4b835280 code style 35e1f6ef Reuse HtmlAttributes (#5) dceaf2bd Merge remote-tracking branch 'origin/5.x' into csp 9d2459b9 fix test dbac1d6c implement fallback logic for addSource 43ce8056 add more tests f745ea2c fix accidental change 1874f78f set default-src 'self' as default policy b885a675 fix errors in inline generation a9f7b3b8 add Model annotations 40608d7c Merge remote-tracking branch 'origin/5.x' into csp 23a441d9 change translation 335d2777 Merge remote-tracking branch 'origin/5.x' into csp 4fdd33f5 remove _script and _style components 27d55170 Merge remote-tracking branch 'origin/5.x' into csp e0c27ebb remove comma 5f2fcb33 Fix the templates and the CI chain 0503587f Adjust the palettes b1766b6a Merge remote-tracking branch 'origin/5.x' into csp 25ad7c70 make tl_page.csp mandatory 8f892e0e always use 'document-uri' and always set an URL 284ed0cd fix test Co-authored-by: Toflar <yanick.witschi@terminal42.ch> Co-authored-by: leofeyer <1192057+leofeyer@users.noreply.github.com>
leofeyer
pushed a commit
that referenced
this pull request
May 29, 2024
… #7248) Description ----------- If a `tl_article` record still contains `keywords` from previous Contao versions and you reference this article in an `article` content element, the following warning will appear in the back end: ``` ErrorException: Warning: Undefined global variable $TL_KEYWORDS #24 /vendor/contao/core-bundle/src/Resources/contao/modules/ModuleArticle.php(207): Contao\ModuleArticle::compile #23 /vendor/contao/core-bundle/src/Resources/contao/modules/Module.php(214): Contao\Module::generate #22 /vendor/contao/core-bundle/src/Resources/contao/modules/ModuleArticle.php(70): Contao\ModuleArticle::generate #21 /vendor/contao/core-bundle/src/Resources/contao/library/Contao/Controller.php(550): Contao\Controller::getArticle #20 /vendor/contao/core-bundle/src/Resources/contao/elements/ContentArticle.php(30): Contao\ContentArticle::generate #19 /vendor/contao/core-bundle/src/Resources/contao/library/Contao/Controller.php(622): Contao\Controller::getContentElement #18 /var/cache/prod/contao/dca/tl_content.php(318): tl_content::addCteType #17 /vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php(4717): Contao\DC_Table::parentView #16 /vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php(313): Contao\DC_Table::showAll #15 /vendor/contao/core-bundle/src/Resources/contao/classes/Backend.php(667): Contao\Backend::getBackendModule #14 /vendor/contao/core-bundle/src/Resources/contao/controllers/BackendMain.php(168): Contao\BackendMain::run #13 /vendor/contao/core-bundle/src/Controller/BackendController.php(49): Contao\CoreBundle\Controller\BackendController::mainAction #12 /vendor/symfony/http-kernel/HttpKernel.php(163): Symfony\Component\HttpKernel\HttpKernel::handleRaw #11 /vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\Component\HttpKernel\HttpKernel::handle #10 /vendor/symfony/http-kernel/Kernel.php(202): Symfony\Component\HttpKernel\Kernel::handle #9 /vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(86): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle #8 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(481): Symfony\Component\HttpKernel\HttpCache\HttpCache::forward #7 /vendor/symfony/framework-bundle/HttpCache/HttpCache.php(73): Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache::forward #6 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(454): Symfony\Component\HttpKernel\HttpCache\HttpCache::fetch #5 /vendor/contao/manager-bundle/src/HttpKernel/ContaoCache.php(66): Contao\ManagerBundle\HttpKernel\ContaoCache::fetch #4 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(348): Symfony\Component\HttpKernel\HttpCache\HttpCache::lookup #3 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(226): Symfony\Component\HttpKernel\HttpCache\HttpCache::handle #2 /vendor/friendsofsymfony/http-cache/src/SymfonyCache/EventDispatchingHttpCache.php(96): Contao\ManagerBundle\HttpKernel\ContaoCache::handle #1 /web/index.php(44): require #0 /web/app.php(13): null ``` This is because `$GLOBALS['TL_KEYWORDS']` is only initialised in the front end within `PageRegular::prepare()`. This PR simply ignores it if not set. Commits ------- e54dc2b8 fix warning when legacy keywords are present
leofeyer
pushed a commit
that referenced
this pull request
Jun 7, 2024
…#7268)
Description
-----------
Got this erro in my logs:
```
RuntimeException: The Symfony container is not available, did you initialize the Contao framework? in vendor/contao/core-bundle/contao/library/Contao/System.php:143 Stack trace:
#0 vendor/contao/core-bundle/contao/library/Contao/System.php(97): Contao\System->import('Contao\\Config', 'Config')
#1 vendor/contao/core-bundle/contao/library/Contao/DcaExtractor.php(105): Contao\System->__construct()
#2 vendor/contao/core-bundle/contao/library/Contao/DcaExtractor.php(140): Contao\DcaExtractor->__construct('tl_opt_in')
#3 vendor/contao/core-bundle/contao/library/Contao/Model.php(291): Contao\DcaExtractor::getInstance('tl_opt_in')
#4 vendor/contao/core-bundle/contao/library/Contao/Model.php(1084): Contao\Model::getUniqueFields()
#5 vendor/contao/core-bundle/contao/models/OptInModel.php(87): Contao\Model::findBy(Array, 1716888783, Array)
#6 vendor/contao/core-bundle/src/Framework/Adapter.php(38): Contao\OptInModel::findExpiredTokens()
#7 vendor/contao/core-bundle/src/OptIn/OptIn.php(76): Contao\CoreBundle\Framework\Adapter->__call('findExpiredToke...', Array)
#8 vendor/contao/core-bundle/src/Cron/PurgeOptInTokensCron.php(30): Contao\CoreBundle\OptIn\OptIn->purgeTokens()
#9 vendor/contao/core-bundle/src/Cron/CronJob.php(44): Contao\CoreBundle\Cron\PurgeOptInTokensCron->__invoke('cli')
#10 vendor/contao/core-bundle/src/Cron/Cron.php(197): Contao\CoreBundle\Cron\CronJob->__invoke('cli')
#11 vendor/contao/core-bundle/src/Cron/Cron.php(182): Contao\CoreBundle\Cron\Cron->executeCrons(Array, 'cli', Object(Closure))
#12 vendor/contao/core-bundle/src/Cron/Cron.php(97): Contao\CoreBundle\Cron\Cron->doRun(Array, 'cli', false)
#13 vendor/contao/core-bundle/src/Command/CronCommand.php(53): Contao\CoreBundle\Cron\Cron->run('cli', false)
#14 vendor/symfony/console/Command/Command.php(326): Contao\CoreBundle\Command\CronCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 vendor/symfony/console/Application.php(1096): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 vendor/symfony/framework-bundle/Console/Application.php(126): Symfony\Component\Console\Application->doRunCommand(Object(Contao\CoreBundle\Command\CronCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 vendor/symfony/console/Application.php(324): Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand(Object(Contao\CoreBundle\Command\CronCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 vendor/symfony/framework-bundle/Console/Application.php(80): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 vendor/symfony/console/Application.php(175): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 vendor/contao/manager-bundle/bin/contao-console(40): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput))
#21 vendor/bin/contao-console(119): #22
```
Commits
-------
9ee76a07 Initialize the Contao framework when working with opt-in tokens
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.